diff options
Diffstat (limited to 'src')
587 files changed, 26829 insertions, 24167 deletions
diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index f7e063b3524..5e47fbe126a 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -462,6 +462,12 @@ dri2_create_screen(_EGLDisplay *disp) } } + if (dri2_dpy->image) { + disp->Extensions.MESA_drm_image = EGL_TRUE; + disp->Extensions.KHR_image_base = EGL_TRUE; + disp->Extensions.KHR_gl_renderbuffer_image = EGL_TRUE; + } + return EGL_TRUE; cleanup_dri_screen: diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h index cb1de2681f1..99f990ac688 100644 --- a/src/egl/drivers/dri2/egl_dri2.h +++ b/src/egl/drivers/dri2/egl_dri2.h @@ -85,8 +85,10 @@ struct dri2_egl_display __DRIswrastLoaderExtension swrast_loader_extension; const __DRIextension *extensions[3]; #ifdef HAVE_WAYLAND_PLATFORM - struct wl_egl_display *wl_dpy; + struct wl_display *wl_dpy; struct wl_drm *wl_server_drm; + struct wl_drm *wl_drm; + int authenticated; #endif int (*authenticate) (_EGLDisplay *disp, uint32_t id); diff --git a/src/egl/drivers/dri2/platform_drm.c b/src/egl/drivers/dri2/platform_drm.c index bd4fa80af59..9c6d3ddac22 100644 --- a/src/egl/drivers/dri2/platform_drm.c +++ b/src/egl/drivers/dri2/platform_drm.c @@ -708,11 +708,6 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp) for (i = 0; dri2_dpy->driver_configs[i]; i++) dri2_add_config(disp, dri2_dpy->driver_configs[i], i + 1, 0, 0, NULL); - disp->Extensions.MESA_drm_image = EGL_TRUE; - disp->Extensions.KHR_image_base = EGL_TRUE; - disp->Extensions.KHR_gl_renderbuffer_image = EGL_TRUE; - disp->Extensions.KHR_gl_texture_2D_image = EGL_TRUE; - #ifdef HAVE_WAYLAND_PLATFORM disp->Extensions.WL_bind_wayland_display = EGL_TRUE; #endif diff --git a/src/egl/drivers/dri2/platform_wayland.c b/src/egl/drivers/dri2/platform_wayland.c index 6ae3f6554b1..030c68777af 100644 --- a/src/egl/drivers/dri2/platform_wayland.c +++ b/src/egl/drivers/dri2/platform_wayland.c @@ -32,6 +32,8 @@ #include <dlfcn.h> #include <errno.h> #include <unistd.h> +#include <fcntl.h> +#include <xf86drm.h> #include "egl_dri2.h" @@ -107,7 +109,7 @@ dri2_create_surface(_EGLDriver *drv, _EGLDisplay *disp, EGLint type, dri2_surf->base.Width = dri2_surf->wl_pix->width; dri2_surf->base.Height = dri2_surf->wl_pix->height; - if (dri2_surf->wl_pix->name > 0) { + if (dri2_surf->wl_pix->driver_private) { dri2_buf = dri2_surf->wl_pix->driver_private; dri2_surf->dri_buffers[__DRI_BUFFER_FRONT_LEFT] = dri2_buf->dri_buffer; } @@ -204,7 +206,19 @@ dri2_wl_egl_pixmap_destroy(struct wl_egl_pixmap *egl_pixmap) egl_pixmap->driver_private = NULL; egl_pixmap->destroy = NULL; - egl_pixmap->name = 0; +} + +static struct wl_buffer * +wayland_create_buffer(struct dri2_egl_surface *dri2_surf, + __DRIbuffer *buffer, + struct wl_visual *visual) +{ + struct dri2_egl_display *dri2_dpy = + dri2_egl_display(dri2_surf->base.Resource.Display); + + return wl_drm_create_buffer(dri2_dpy->wl_drm, buffer->name, + dri2_surf->base.Width, dri2_surf->base.Height, + buffer->pitch, visual); } static void @@ -244,8 +258,6 @@ dri2_process_front_buffer(struct dri2_egl_surface *dri2_surf, unsigned format) dri2_buf->dri_buffer = dri2_surf->dri_buffers[__DRI_BUFFER_FRONT_LEFT]; dri2_buf->dri2_dpy = dri2_dpy; - dri2_surf->wl_pix->name = dri2_buf->dri_buffer->name; - dri2_surf->wl_pix->stride = dri2_buf->dri_buffer->pitch; dri2_surf->wl_pix->driver_private = dri2_buf; dri2_surf->wl_pix->destroy = dri2_wl_egl_pixmap_destroy; break; @@ -282,9 +294,9 @@ dri2_release_buffers(struct dri2_egl_surface *dri2_surf) switch (i) { case __DRI_BUFFER_FRONT_LEFT: if (dri2_surf->pending_buffer) - force_roundtrip(dri2_dpy->wl_dpy->display); + force_roundtrip(dri2_dpy->wl_dpy); dri2_surf->pending_buffer = dri2_surf->dri_buffers[i]; - wl_display_sync_callback(dri2_dpy->wl_dpy->display, + wl_display_sync_callback(dri2_dpy->wl_dpy, dri2_release_pending_buffer, dri2_surf); break; default: @@ -357,6 +369,12 @@ dri2_get_buffers_with_format(__DRIdrawable * driDrawable, assert(dri2_surf->type == DRI2_PIXMAP_SURFACE || dri2_surf->dri_buffers[__DRI_BUFFER_BACK_LEFT]); + if (dri2_surf->type == DRI2_PIXMAP_SURFACE && !dri2_surf->wl_pix->buffer) + dri2_surf->wl_pix->buffer = + wayland_create_buffer(dri2_surf, + dri2_surf->dri_buffers[__DRI_BUFFER_FRONT_LEFT], + dri2_surf->wl_pix->visual); + *out_count = dri2_surf->buffer_count; if (dri2_surf->buffer_count == 0) return NULL; @@ -417,19 +435,8 @@ dri2_flush_front_buffer(__DRIdrawable * driDrawable, void *loaderPrivate) #endif } -static struct wl_buffer * -wayland_create_buffer(struct dri2_egl_surface *dri2_surf, __DRIbuffer *buffer) -{ - struct dri2_egl_display *dri2_dpy = - dri2_egl_display(dri2_surf->base.Resource.Display); - - return wl_drm_create_buffer(dri2_dpy->wl_dpy->drm, buffer->name, - dri2_surf->base.Width, dri2_surf->base.Height, - buffer->pitch, dri2_surf->wl_win->visual); -} - static void -wayland_frame_callback(void *data, uint32_t time) +wayland_frame_callback(struct wl_surface *surface, void *data, uint32_t time) { struct dri2_egl_surface *dri2_surf = data; @@ -455,11 +462,12 @@ dri2_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw) struct dri2_egl_driver *dri2_drv = dri2_egl_driver(drv); while (dri2_surf->block_swap_buffers) - wl_display_iterate(dri2_dpy->wl_dpy->display, WL_DISPLAY_READABLE); + wl_display_iterate(dri2_dpy->wl_dpy, WL_DISPLAY_READABLE); dri2_surf->block_swap_buffers = EGL_TRUE; - wl_display_frame_callback(dri2_dpy->wl_dpy->display, - wayland_frame_callback, dri2_surf); + wl_display_frame_callback(dri2_dpy->wl_dpy, + dri2_surf->wl_win->surface, + wayland_frame_callback, dri2_surf); if (dri2_surf->type == DRI2_WINDOW_SURFACE) { pointer_swap( @@ -477,8 +485,11 @@ dri2_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw) if (!dri2_surf->wl_drm_buffer[WL_BUFFER_FRONT]) dri2_surf->wl_drm_buffer[WL_BUFFER_FRONT] = wayland_create_buffer(dri2_surf, - dri2_surf->dri_buffers[__DRI_BUFFER_FRONT_LEFT]); + dri2_surf->dri_buffers[__DRI_BUFFER_FRONT_LEFT], + dri2_surf->wl_win->visual); + wl_buffer_damage(dri2_surf->wl_drm_buffer[WL_BUFFER_FRONT], 0, 0, + dri2_surf->base.Width, dri2_surf->base.Height); wl_surface_attach(dri2_surf->wl_win->surface, dri2_surf->wl_drm_buffer[WL_BUFFER_FRONT], dri2_surf->dx, dri2_surf->dy); @@ -535,18 +546,23 @@ dri2_create_image_khr_pixmap(_EGLDisplay *disp, _EGLContext *ctx, wl_egl_pixmap->width, wl_egl_pixmap->height); - wl_egl_pixmap->name = dri2_buf->dri_buffer->name; - wl_egl_pixmap->stride = dri2_buf->dri_buffer->pitch; wl_egl_pixmap->destroy = dri2_wl_egl_pixmap_destroy; wl_egl_pixmap->driver_private = dri2_buf; + wl_egl_pixmap->buffer = + wl_drm_create_buffer(dri2_dpy->wl_drm, + dri2_buf->dri_buffer->name, + wl_egl_pixmap->width, + wl_egl_pixmap->height, + dri2_buf->dri_buffer->pitch, + wl_egl_pixmap->visual); + wl_attr_list[1] = wl_egl_pixmap->width; wl_attr_list[3] = wl_egl_pixmap->height; - wl_attr_list[5] = wl_egl_pixmap->stride / 4; - + wl_attr_list[5] = dri2_buf->dri_buffer->pitch / 4; return dri2_create_image_khr(disp->Driver, disp, ctx, EGL_DRM_BUFFER_MESA, - (EGLClientBuffer)(intptr_t) wl_egl_pixmap->name, wl_attr_list); + (EGLClientBuffer)(intptr_t) dri2_buf->dri_buffer->name, wl_attr_list); } static _EGLImage * @@ -570,16 +586,16 @@ dri2_wayland_authenticate(_EGLDisplay *disp, uint32_t id) struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); int ret = 0; - dri2_dpy->wl_dpy->authenticated = false; + dri2_dpy->authenticated = false; - wl_drm_authenticate(dri2_dpy->wl_dpy->drm, id); - force_roundtrip(dri2_dpy->wl_dpy->display); + wl_drm_authenticate(dri2_dpy->wl_drm, id); + force_roundtrip(dri2_dpy->wl_dpy); - if (!dri2_dpy->wl_dpy->authenticated) + if (!dri2_dpy->authenticated) ret = -1; /* reset authenticated */ - dri2_dpy->wl_dpy->authenticated = true; + dri2_dpy->authenticated = true; return ret; } @@ -605,10 +621,45 @@ dri2_terminate(_EGLDriver *drv, _EGLDisplay *disp) return EGL_TRUE; } +static void +drm_handle_device(void *data, struct wl_drm *drm, const char *device) +{ + struct dri2_egl_display *dri2_dpy = data; + drm_magic_t magic; + + dri2_dpy->device_name = strdup(device); + if (!dri2_dpy->device_name) + return; + + dri2_dpy->fd = open(dri2_dpy->device_name, O_RDWR); + if (dri2_dpy->fd == -1) { + _eglLog(_EGL_WARNING, "wayland-egl: could not open %s (%s)", + dri2_dpy->device_name, strerror(errno)); + return; + } + + drmGetMagic(dri2_dpy->fd, &magic); + wl_drm_authenticate(dri2_dpy->wl_drm, magic); +} + +static void +drm_handle_authenticated(void *data, struct wl_drm *drm) +{ + struct dri2_egl_display *dri2_dpy = data; + + dri2_dpy->authenticated = true; +} + +static const struct wl_drm_listener drm_listener = { + drm_handle_device, + drm_handle_authenticated +}; + EGLBoolean dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp) { struct dri2_egl_display *dri2_dpy; + uint32_t id; int i; drv->API.CreateWindowSurface = dri2_create_window_surface; @@ -627,21 +678,23 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp) disp->DriverData = (void *) dri2_dpy; dri2_dpy->wl_dpy = disp->PlatformDisplay; - if (dri2_dpy->wl_dpy->fd == -1) - force_roundtrip(dri2_dpy->wl_dpy->display); - if (dri2_dpy->wl_dpy->fd == -1) + id = wl_display_get_global(dri2_dpy->wl_dpy, "wl_drm", 1); + if (id == 0) + wl_display_iterate(dri2_dpy->wl_dpy, WL_DISPLAY_READABLE); + id = wl_display_get_global(dri2_dpy->wl_dpy, "wl_drm", 1); + if (id == 0) goto cleanup_dpy; - - dri2_dpy->fd = dup(dri2_dpy->wl_dpy->fd); - if (dri2_dpy->fd < 0) { - _eglError(EGL_BAD_ALLOC, "DRI2: failed to dup fd"); + dri2_dpy->wl_drm = wl_drm_create(dri2_dpy->wl_dpy, id, 1); + if (!dri2_dpy->wl_drm) goto cleanup_dpy; - } + wl_drm_add_listener(dri2_dpy->wl_drm, &drm_listener, dri2_dpy); + force_roundtrip(dri2_dpy->wl_dpy); + if (dri2_dpy->fd == -1) + goto cleanup_drm; - if (!dri2_dpy->wl_dpy->authenticated) - force_roundtrip(dri2_dpy->wl_dpy->display); - if (!dri2_dpy->wl_dpy->authenticated) - goto cleanup_dpy; + force_roundtrip(dri2_dpy->wl_dpy); + if (!dri2_dpy->authenticated) + goto cleanup_fd; dri2_dpy->driver_name = dri2_get_driver_for_fd(dri2_dpy->fd); if (dri2_dpy->driver_name == NULL) { @@ -649,14 +702,8 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp) goto cleanup_fd; } - dri2_dpy->device_name = strdup(dri2_dpy->wl_dpy->device_name); - if (dri2_dpy->device_name == NULL) { - _eglError(EGL_BAD_ALLOC, "DRI2: failed to get device name"); - goto cleanup_driver_name; - } - if (!dri2_load_driver(disp)) - goto cleanup_device_name; + goto cleanup_driver_name; dri2_dpy->dri2_loader_extension.base.name = __DRI_DRI2_LOADER; dri2_dpy->dri2_loader_extension.base.version = 3; @@ -677,11 +724,7 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp) EGL_WINDOW_BIT | EGL_PIXMAP_BIT, NULL); - disp->Extensions.MESA_drm_image = EGL_TRUE; - disp->Extensions.KHR_image_base = EGL_TRUE; disp->Extensions.KHR_image_pixmap = EGL_TRUE; - disp->Extensions.KHR_gl_renderbuffer_image = EGL_TRUE; - disp->Extensions.KHR_gl_texture_2D_image = EGL_TRUE; disp->Extensions.WL_bind_wayland_display = EGL_TRUE; dri2_dpy->authenticate = dri2_wayland_authenticate; @@ -694,12 +737,13 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp) cleanup_driver: dlclose(dri2_dpy->driver); - cleanup_device_name: - free(dri2_dpy->device_name); cleanup_driver_name: free(dri2_dpy->driver_name); cleanup_fd: close(dri2_dpy->fd); + cleanup_drm: + free(dri2_dpy->device_name); + wl_drm_destroy(dri2_dpy->wl_drm); cleanup_dpy: free(dri2_dpy); diff --git a/src/egl/drivers/dri2/platform_x11.c b/src/egl/drivers/dri2/platform_x11.c index b3e60b8a115..5d4ac6ae948 100644 --- a/src/egl/drivers/dri2/platform_x11.c +++ b/src/egl/drivers/dri2/platform_x11.c @@ -231,7 +231,7 @@ dri2_create_surface(_EGLDriver *drv, _EGLDisplay *disp, EGLint type, if (dri2_dpy->dri2) { xcb_dri2_create_drawable (dri2_dpy->conn, dri2_surf->drawable); } else { - swrastCreateDrawable(dri2_dpy, dri2_surf, _eglGetConfigKey(conf, EGL_DEPTH_SIZE)); + swrastCreateDrawable(dri2_dpy, dri2_surf, _eglGetConfigKey(conf, EGL_BUFFER_SIZE)); } if (type != EGL_PBUFFER_BIT) { @@ -990,7 +990,7 @@ dri2_initialize_x11_dri2(_EGLDriver *drv, _EGLDisplay *disp) if (!dri2_load_driver(disp)) goto cleanup_conn; - dri2_dpy->fd = open(dri2_dpy->device_name, O_RDWR); + dri2_dpy->fd = open(dri2_dpy->device_name, O_RDWR | O_CLOEXEC); if (dri2_dpy->fd == -1) { _eglLog(_EGL_WARNING, "DRI2: could not open %s (%s)", dri2_dpy->device_name, @@ -1030,11 +1030,7 @@ dri2_initialize_x11_dri2(_EGLDriver *drv, _EGLDisplay *disp) goto cleanup_configs; } - disp->Extensions.MESA_drm_image = EGL_TRUE; - disp->Extensions.KHR_image_base = EGL_TRUE; disp->Extensions.KHR_image_pixmap = EGL_TRUE; - disp->Extensions.KHR_gl_renderbuffer_image = EGL_TRUE; - disp->Extensions.KHR_gl_texture_2D_image = EGL_TRUE; disp->Extensions.NOK_swap_region = EGL_TRUE; disp->Extensions.NOK_texture_from_pixmap = EGL_TRUE; diff --git a/src/egl/wayland/wayland-drm/Makefile b/src/egl/wayland/wayland-drm/Makefile index c232769697a..789b020a592 100644 --- a/src/egl/wayland/wayland-drm/Makefile +++ b/src/egl/wayland/wayland-drm/Makefile @@ -12,7 +12,8 @@ wayland_drm_OBJECTS = $(wayland_drm_SOURCES:.c=.o) wayland_drm_INCLUDES = \ $(WAYLAND_CFLAGS) \ - -I$(TOP)/src/egl/main + -I$(TOP)/src/egl/main \ + -I$(TOP)/include # Generate protocol sources prefix=$(shell pkg-config --variable=prefix wayland-server) diff --git a/src/egl/wayland/wayland-drm/protocol/wayland-drm.xml b/src/egl/wayland/wayland-drm/protocol/wayland-drm.xml index 46725d85179..cd5d191227a 100644 --- a/src/egl/wayland/wayland-drm/protocol/wayland-drm.xml +++ b/src/egl/wayland/wayland-drm/protocol/wayland-drm.xml @@ -2,7 +2,7 @@ <protocol name="drm"> <!-- drm support. This object is created by the server and published using the display's global event. --> - <interface name="drm" version="1"> + <interface name="wl_drm" version="1"> <!-- Call this request with the magic received from drmGetMagic(). It will be passed on to the drmAuthMagic() or DRIAuthConnection() call. This authentication must be @@ -14,12 +14,12 @@ <!-- Create a wayland buffer for the named DRM buffer. The DRM surface must have a name using the flink ioctl --> <request name="create_buffer"> - <arg name="id" type="new_id" interface="buffer"/> + <arg name="id" type="new_id" interface="wl_buffer"/> <arg name="name" type="uint"/> <arg name="width" type="int"/> <arg name="height" type="int"/> <arg name="stride" type="uint"/> - <arg name="visual" type="object" interface="visual"/> + <arg name="visual" type="object" interface="wl_visual"/> </request> <!-- Notification of the path of the drm device which is used by diff --git a/src/egl/wayland/wayland-drm/wayland-drm.c b/src/egl/wayland/wayland-drm/wayland-drm.c index 6624fbe9d4e..3d5cb399e57 100644 --- a/src/egl/wayland/wayland-drm/wayland-drm.c +++ b/src/egl/wayland/wayland-drm/wayland-drm.c @@ -51,9 +51,8 @@ struct wl_drm { }; static void -drm_buffer_damage(struct wl_buffer *buffer_base, - struct wl_surface *surface, - int32_t x, int32_t y, int32_t width, int32_t height) +buffer_damage(struct wl_client *client, struct wl_buffer *buffer, + int32_t x, int32_t y, int32_t width, int32_t height) { } @@ -74,6 +73,7 @@ buffer_destroy(struct wl_client *client, struct wl_buffer *buffer) } const static struct wl_buffer_interface buffer_interface = { + buffer_damage, buffer_destroy }; @@ -103,8 +103,6 @@ drm_create_buffer(struct wl_client *client, struct wl_drm *drm, buffer->buffer.width = width; buffer->buffer.height = height; buffer->buffer.visual = visual; - buffer->buffer.attach = NULL; - buffer->buffer.damage = drm_buffer_damage; if (visual->object.interface != &wl_visual_interface) { /* FIXME: Define a real exception event instead of @@ -164,7 +162,9 @@ const static struct wl_drm_interface drm_interface = { }; static void -post_drm_device(struct wl_client *client, struct wl_object *global) +post_drm_device(struct wl_client *client, + struct wl_object *global, + uint32_t version) { struct wl_drm *drm = (struct wl_drm *) global; diff --git a/src/egl/wayland/wayland-egl/wayland-egl-priv.h b/src/egl/wayland/wayland-egl/wayland-egl-priv.h index 38b21c25be2..7bb436a78ab 100644 --- a/src/egl/wayland/wayland-egl/wayland-egl-priv.h +++ b/src/egl/wayland/wayland-egl/wayland-egl-priv.h @@ -42,11 +42,10 @@ struct wl_egl_window { struct wl_egl_pixmap { struct wl_egl_display *display; struct wl_visual *visual; + struct wl_buffer *buffer; - int name; int width; int height; - int stride; void (*destroy) (struct wl_egl_pixmap *egl_pixmap); diff --git a/src/egl/wayland/wayland-egl/wayland-egl.c b/src/egl/wayland/wayland-egl/wayland-egl.c index 2c84bec64a5..3e1a9c45bdc 100644 --- a/src/egl/wayland/wayland-egl/wayland-egl.c +++ b/src/egl/wayland/wayland-egl/wayland-egl.c @@ -17,115 +17,6 @@ #include "wayland-drm-client-protocol.h" #include <xf86drm.h> -static void -drm_handle_device(void *data, struct wl_drm *drm, const char *device) -{ - struct wl_egl_display *egl_display = data; - drm_magic_t magic; - - egl_display->device_name = strdup(device); - - egl_display->fd = open(egl_display->device_name, O_RDWR); - - if (egl_display->fd == -1) { - fprintf(stderr, "wayland-egl: could not open %s (%s)", - egl_display->device_name, strerror(errno)); - return; - } - drmGetMagic(egl_display->fd, &magic); - wl_drm_authenticate(egl_display->drm, magic); -} - -static void -drm_handle_authenticated(void *data, struct wl_drm *drm) -{ - struct wl_egl_display *egl_display = data; - - egl_display->authenticated = true; -} - -static const struct wl_drm_listener drm_listener = { - drm_handle_device, - drm_handle_authenticated -}; - -static void -wl_display_handle_global(struct wl_display *display, uint32_t id, - const char *interface, uint32_t version, void *data) -{ - struct wl_egl_display *egl_display = data; - - if (strcmp(interface, "drm") == 0) { - egl_display->drm = wl_drm_create(display, id); - wl_drm_add_listener(egl_display->drm, &drm_listener, - egl_display); - } -} - -/* stolen from egl_dri2:dri2_load() */ -static void * -get_flush_address() { - void *handle; - void *(*get_proc_address)(const char *procname); - - handle = dlopen(NULL, RTLD_LAZY | RTLD_GLOBAL); - if (handle) { - get_proc_address = (void* (*)(const char *)) - dlsym(handle, "_glapi_get_proc_address"); - /* no need to keep a reference */ - dlclose(handle); - } - - /* - * If glapi is not available, loading DRI drivers will fail. Ideally, we - * should load one of libGL, libGLESv1_CM, or libGLESv2 and go on. But if - * the app has loaded another one of them with RTLD_LOCAL, there may be - * unexpected behaviors later because there will be two copies of glapi - * (with global variables of the same names!) in the memory. - */ - if (!get_proc_address) { - fprintf(stderr, "failed to find _glapi_get_proc_address"); - return NULL; - } - - return get_proc_address("glFlush"); -} - -WL_EGL_EXPORT struct wl_egl_display * -wl_egl_display_create(struct wl_display *display) -{ - struct wl_egl_display *egl_display; - - egl_display = malloc(sizeof *egl_display); - if (!egl_display) - return NULL; - - egl_display->display = display; - egl_display->drm = NULL; - egl_display->fd = -1; - egl_display->device_name = NULL; - egl_display->authenticated = false; - - egl_display->glFlush = (void (*)(void)) get_flush_address(); - - wl_display_add_global_listener(display, wl_display_handle_global, - egl_display); - - return egl_display; -} - -WL_EGL_EXPORT void -wl_egl_display_destroy(struct wl_egl_display *egl_display) -{ - - free(egl_display->device_name); - close(egl_display->fd); - - wl_drm_destroy(egl_display->drm); - - free(egl_display); -} - WL_EGL_EXPORT void wl_egl_window_resize(struct wl_egl_window *egl_window, int width, int height, @@ -138,8 +29,7 @@ wl_egl_window_resize(struct wl_egl_window *egl_window, } WL_EGL_EXPORT struct wl_egl_window * -wl_egl_window_create(struct wl_egl_display *egl_display, - struct wl_surface *surface, +wl_egl_window_create(struct wl_surface *surface, int width, int height, struct wl_visual *visual) { @@ -175,8 +65,7 @@ wl_egl_window_get_attached_size(struct wl_egl_window *egl_window, } WL_EGL_EXPORT struct wl_egl_pixmap * -wl_egl_pixmap_create(struct wl_egl_display *egl_display, - int width, int height, +wl_egl_pixmap_create(int width, int height, struct wl_visual *visual, uint32_t flags) { struct wl_egl_pixmap *egl_pixmap; @@ -185,14 +74,13 @@ wl_egl_pixmap_create(struct wl_egl_display *egl_display, if (egl_pixmap == NULL) return NULL; - egl_pixmap->display = egl_display; egl_pixmap->width = width; egl_pixmap->height = height; egl_pixmap->visual = visual; - egl_pixmap->name = 0; - egl_pixmap->stride = 0; egl_pixmap->destroy = NULL; + egl_pixmap->buffer = NULL; + egl_pixmap->driver_private = NULL; return egl_pixmap; } @@ -206,21 +94,7 @@ wl_egl_pixmap_destroy(struct wl_egl_pixmap *egl_pixmap) } WL_EGL_EXPORT struct wl_buffer * -wl_egl_pixmap_create_buffer(struct wl_egl_display *egl_display, - struct wl_egl_pixmap *egl_pixmap) -{ - if (egl_pixmap->name == 0) - return NULL; - - return wl_drm_create_buffer(egl_display->drm, egl_pixmap->name, - egl_pixmap->width, egl_pixmap->height, - egl_pixmap->stride, egl_pixmap->visual); -} - -WL_EGL_EXPORT void -wl_egl_pixmap_flush(struct wl_egl_display *egl_display, - struct wl_egl_pixmap *egl_pixmap) +wl_egl_pixmap_create_buffer(struct wl_egl_pixmap *egl_pixmap) { - if (egl_display->glFlush) - egl_display->glFlush(); + return egl_pixmap->buffer; } diff --git a/src/gallium/SConscript b/src/gallium/SConscript index 31580556f03..428bc31f86b 100644 --- a/src/gallium/SConscript +++ b/src/gallium/SConscript @@ -53,7 +53,6 @@ if env['drm']: # Needed by some state trackers SConscript('winsys/sw/null/SConscript') -SConscript('state_trackers/python/SConscript') if env['platform'] != 'embedded': SConscript('state_trackers/vega/SConscript') SConscript('state_trackers/egl/SConscript') diff --git a/src/gallium/auxiliary/Makefile b/src/gallium/auxiliary/Makefile index aa1b255c0c9..428e097be09 100644 --- a/src/gallium/auxiliary/Makefile +++ b/src/gallium/auxiliary/Makefile @@ -107,6 +107,7 @@ C_SOURCES = \ util/u_caps.c \ util/u_cpu_detect.c \ util/u_dl.c \ + util/u_draw.c \ util/u_draw_quad.c \ util/u_format.c \ util/u_format_other.c \ diff --git a/src/gallium/auxiliary/SConscript b/src/gallium/auxiliary/SConscript index 84519cfd048..6176f0ae2a8 100644 --- a/src/gallium/auxiliary/SConscript +++ b/src/gallium/auxiliary/SConscript @@ -154,6 +154,7 @@ source = [ 'util/u_dump_defines.c', 'util/u_dump_state.c', 'util/u_dl.c', + 'util/u_draw.c', 'util/u_draw_quad.c', 'util/u_format.c', 'util/u_format_other.c', diff --git a/src/gallium/auxiliary/draw/draw_context.c b/src/gallium/auxiliary/draw/draw_context.c index 95d96719873..d99f94edc43 100644 --- a/src/gallium/auxiliary/draw/draw_context.c +++ b/src/gallium/auxiliary/draw/draw_context.c @@ -751,7 +751,7 @@ void draw_set_mapped_texture(struct draw_context *draw, unsigned sampler_idx, uint32_t width, uint32_t height, uint32_t depth, - uint32_t last_level, + uint32_t first_level, uint32_t last_level, uint32_t row_stride[PIPE_MAX_TEXTURE_LEVELS], uint32_t img_stride[PIPE_MAX_TEXTURE_LEVELS], const void *data[PIPE_MAX_TEXTURE_LEVELS]) @@ -760,7 +760,7 @@ draw_set_mapped_texture(struct draw_context *draw, if(draw->llvm) draw_llvm_set_mapped_texture(draw, sampler_idx, - width, height, depth, last_level, + width, height, depth, first_level, last_level, row_stride, img_stride, data); #endif } diff --git a/src/gallium/auxiliary/draw/draw_context.h b/src/gallium/auxiliary/draw/draw_context.h index a0b217e4d33..7db75b71b43 100644 --- a/src/gallium/auxiliary/draw/draw_context.h +++ b/src/gallium/auxiliary/draw/draw_context.h @@ -123,7 +123,7 @@ void draw_set_mapped_texture(struct draw_context *draw, unsigned sampler_idx, uint32_t width, uint32_t height, uint32_t depth, - uint32_t last_level, + uint32_t first_level, uint32_t last_level, uint32_t row_stride[PIPE_MAX_TEXTURE_LEVELS], uint32_t img_stride[PIPE_MAX_TEXTURE_LEVELS], const void *data[PIPE_MAX_TEXTURE_LEVELS]); diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index a5217c1d4ec..a1b8fc38880 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -106,6 +106,7 @@ create_jit_texture_type(struct gallivm_state *gallivm) elem_types[DRAW_JIT_TEXTURE_WIDTH] = elem_types[DRAW_JIT_TEXTURE_HEIGHT] = elem_types[DRAW_JIT_TEXTURE_DEPTH] = + elem_types[DRAW_JIT_TEXTURE_FIRST_LEVEL] = elem_types[DRAW_JIT_TEXTURE_LAST_LEVEL] = int32_type; elem_types[DRAW_JIT_TEXTURE_ROW_STRIDE] = elem_types[DRAW_JIT_TEXTURE_IMG_STRIDE] = @@ -136,6 +137,9 @@ create_jit_texture_type(struct gallivm_state *gallivm) LP_CHECK_MEMBER_OFFSET(struct draw_jit_texture, depth, target, texture_type, DRAW_JIT_TEXTURE_DEPTH); + LP_CHECK_MEMBER_OFFSET(struct draw_jit_texture, first_level, + target, texture_type, + DRAW_JIT_TEXTURE_FIRST_LEVEL); LP_CHECK_MEMBER_OFFSET(struct draw_jit_texture, last_level, target, texture_type, DRAW_JIT_TEXTURE_LAST_LEVEL); @@ -438,7 +442,8 @@ generate_vs(struct draw_llvm *llvm, const LLVMValueRef (*inputs)[NUM_CHANNELS], LLVMValueRef system_values_array, LLVMValueRef context_ptr, - struct lp_build_sampler_soa *draw_sampler) + struct lp_build_sampler_soa *draw_sampler, + boolean clamp_vertex_color) { const struct tgsi_token *tokens = llvm->draw->vs.vertex_shader->state.tokens; struct lp_type vs_type; @@ -474,6 +479,30 @@ generate_vs(struct draw_llvm *llvm, outputs, sampler, &llvm->draw->vs.vertex_shader->info); + + if(clamp_vertex_color) + { + LLVMValueRef out; + unsigned chan, attrib; + struct lp_build_context bld; + struct tgsi_shader_info* info = &llvm->draw->vs.vertex_shader->info; + lp_build_context_init(&bld, llvm->gallivm, vs_type); + + for (attrib = 0; attrib < info->num_outputs; ++attrib) { + for(chan = 0; chan < NUM_CHANNELS; ++chan) { + if(outputs[attrib][chan]) { + switch (info->output_semantic_name[attrib]) { + case TGSI_SEMANTIC_COLOR: + case TGSI_SEMANTIC_BCOLOR: + out = LLVMBuildLoad(builder, outputs[attrib][chan], ""); + out = lp_build_clamp(&bld, out, bld.zero, bld.one); + LLVMBuildStore(builder, out, outputs[attrib][chan]); + break; + } + } + } + } + } } #if DEBUG_STORE @@ -1235,7 +1264,8 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant) ptr_aos, system_values_array, context_ptr, - sampler); + sampler, + variant->key.clamp_vertex_color); /* store original positions in clip before further manipulation */ store_clip(gallivm, io, outputs); @@ -1446,7 +1476,8 @@ draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *varian ptr_aos, system_values_array, context_ptr, - sampler); + sampler, + variant->key.clamp_vertex_color); /* store original positions in clip before further manipulation */ store_clip(gallivm, io, outputs); @@ -1524,6 +1555,8 @@ draw_llvm_make_variant_key(struct draw_llvm *llvm, char *store) key = (struct draw_llvm_variant_key *)store; + key->clamp_vertex_color = llvm->draw->rasterizer->clamp_vertex_color; /**/ + /* Presumably all variants of the shader should have the same * number of vertex elements - ie the number of shader inputs. */ @@ -1566,7 +1599,7 @@ void draw_llvm_set_mapped_texture(struct draw_context *draw, unsigned sampler_idx, uint32_t width, uint32_t height, uint32_t depth, - uint32_t last_level, + uint32_t first_level, uint32_t last_level, uint32_t row_stride[PIPE_MAX_TEXTURE_LEVELS], uint32_t img_stride[PIPE_MAX_TEXTURE_LEVELS], const void *data[PIPE_MAX_TEXTURE_LEVELS]) @@ -1582,9 +1615,10 @@ draw_llvm_set_mapped_texture(struct draw_context *draw, jit_tex->width = width; jit_tex->height = height; jit_tex->depth = depth; + jit_tex->first_level = first_level; jit_tex->last_level = last_level; - for (j = 0; j <= last_level; j++) { + for (j = first_level; j <= last_level; j++) { jit_tex->data[j] = data[j]; jit_tex->row_stride[j] = row_stride[j]; jit_tex->img_stride[j] = img_stride[j]; diff --git a/src/gallium/auxiliary/draw/draw_llvm.h b/src/gallium/auxiliary/draw/draw_llvm.h index e8623e7bcdc..375b7b8b571 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.h +++ b/src/gallium/auxiliary/draw/draw_llvm.h @@ -50,6 +50,7 @@ struct draw_jit_texture uint32_t width; uint32_t height; uint32_t depth; + uint32_t first_level; uint32_t last_level; uint32_t row_stride[PIPE_MAX_TEXTURE_LEVELS]; uint32_t img_stride[PIPE_MAX_TEXTURE_LEVELS]; @@ -64,6 +65,7 @@ enum { DRAW_JIT_TEXTURE_WIDTH = 0, DRAW_JIT_TEXTURE_HEIGHT, DRAW_JIT_TEXTURE_DEPTH, + DRAW_JIT_TEXTURE_FIRST_LEVEL, DRAW_JIT_TEXTURE_LAST_LEVEL, DRAW_JIT_TEXTURE_ROW_STRIDE, DRAW_JIT_TEXTURE_IMG_STRIDE, @@ -162,6 +164,7 @@ struct draw_llvm_variant_key { unsigned nr_vertex_elements:8; unsigned nr_samplers:8; + unsigned clamp_vertex_color:1; unsigned clip_xy:1; unsigned clip_z:1; unsigned clip_user:1; @@ -169,7 +172,7 @@ struct draw_llvm_variant_key unsigned bypass_viewport:1; unsigned need_edgeflags:1; unsigned nr_planes:4; - unsigned pad:6; + unsigned pad:5; /* Variable number of vertex elements: */ @@ -295,7 +298,7 @@ void draw_llvm_set_mapped_texture(struct draw_context *draw, unsigned sampler_idx, uint32_t width, uint32_t height, uint32_t depth, - uint32_t last_level, + uint32_t first_level, uint32_t last_level, uint32_t row_stride[PIPE_MAX_TEXTURE_LEVELS], uint32_t img_stride[PIPE_MAX_TEXTURE_LEVELS], const void *data[PIPE_MAX_TEXTURE_LEVELS]); diff --git a/src/gallium/auxiliary/draw/draw_llvm_sample.c b/src/gallium/auxiliary/draw/draw_llvm_sample.c index 574c7cc452f..8af34617353 100644 --- a/src/gallium/auxiliary/draw/draw_llvm_sample.c +++ b/src/gallium/auxiliary/draw/draw_llvm_sample.c @@ -144,6 +144,7 @@ draw_llvm_texture_member(const struct lp_sampler_dynamic_state *base, DRAW_LLVM_TEXTURE_MEMBER(width, DRAW_JIT_TEXTURE_WIDTH, TRUE) DRAW_LLVM_TEXTURE_MEMBER(height, DRAW_JIT_TEXTURE_HEIGHT, TRUE) DRAW_LLVM_TEXTURE_MEMBER(depth, DRAW_JIT_TEXTURE_DEPTH, TRUE) +DRAW_LLVM_TEXTURE_MEMBER(first_level,DRAW_JIT_TEXTURE_FIRST_LEVEL, TRUE) DRAW_LLVM_TEXTURE_MEMBER(last_level, DRAW_JIT_TEXTURE_LAST_LEVEL, TRUE) DRAW_LLVM_TEXTURE_MEMBER(row_stride, DRAW_JIT_TEXTURE_ROW_STRIDE, FALSE) DRAW_LLVM_TEXTURE_MEMBER(img_stride, DRAW_JIT_TEXTURE_IMG_STRIDE, FALSE) @@ -209,6 +210,7 @@ draw_llvm_sampler_soa_create(const struct lp_sampler_static_state *static_state, sampler->dynamic_state.base.width = draw_llvm_texture_width; sampler->dynamic_state.base.height = draw_llvm_texture_height; sampler->dynamic_state.base.depth = draw_llvm_texture_depth; + sampler->dynamic_state.base.first_level = draw_llvm_texture_first_level; sampler->dynamic_state.base.last_level = draw_llvm_texture_last_level; sampler->dynamic_state.base.row_stride = draw_llvm_texture_row_stride; sampler->dynamic_state.base.img_stride = draw_llvm_texture_img_stride; diff --git a/src/gallium/auxiliary/draw/draw_pipe_vbuf.c b/src/gallium/auxiliary/draw/draw_pipe_vbuf.c index 58c5858734a..61ae4665539 100644 --- a/src/gallium/auxiliary/draw/draw_pipe_vbuf.c +++ b/src/gallium/auxiliary/draw/draw_pipe_vbuf.c @@ -341,6 +341,16 @@ vbuf_flush_vertices( struct vbuf_stage *vbuf ) vbuf->max_vertices = vbuf->nr_vertices = 0; vbuf->vertex_ptr = vbuf->vertices = NULL; } + + /* Reset point/line/tri function pointers. + * If (for example) we transition from points to tris and back to points + * again, we need to call the vbuf_first_point() function again to flush + * the triangles before drawing more points. This can happen when drawing + * with front polygon mode = filled and back polygon mode = line or point. + */ + vbuf->stage.point = vbuf_first_point; + vbuf->stage.line = vbuf_first_line; + vbuf->stage.tri = vbuf_first_tri; } @@ -378,10 +388,6 @@ vbuf_flush( struct draw_stage *stage, unsigned flags ) struct vbuf_stage *vbuf = vbuf_stage( stage ); vbuf_flush_vertices( vbuf ); - - stage->point = vbuf_first_point; - stage->line = vbuf_first_line; - stage->tri = vbuf_first_tri; } diff --git a/src/gallium/auxiliary/draw/draw_private.h b/src/gallium/auxiliary/draw/draw_private.h index db2e3c5410d..b7d693f8584 100644 --- a/src/gallium/auxiliary/draw/draw_private.h +++ b/src/gallium/auxiliary/draw/draw_private.h @@ -146,6 +146,14 @@ struct draw_context struct pipe_vertex_buffer vertex_buffer[PIPE_MAX_ATTRIBS]; unsigned nr_vertex_buffers; + /* + * This is the largest legal index value for the current set of + * bound vertex buffers. Regardless of any other consideration, + * all vertex lookups need to be clamped to 0..max_index to + * prevent out-of-bound access. + */ + unsigned max_index; + struct pipe_vertex_element vertex_element[PIPE_MAX_ATTRIBS]; unsigned nr_vertex_elements; diff --git a/src/gallium/auxiliary/draw/draw_pt.c b/src/gallium/auxiliary/draw/draw_pt.c index c3d7e871f7a..e0eda67c1a2 100644 --- a/src/gallium/auxiliary/draw/draw_pt.c +++ b/src/gallium/auxiliary/draw/draw_pt.c @@ -470,6 +470,17 @@ draw_vbo(struct draw_context *draw, if (0) draw_print_arrays(draw, info->mode, info->start, MIN2(info->count, 20)); + draw->pt.max_index = util_draw_max_index(draw->pt.vertex_buffer, + draw->pt.nr_vertex_buffers, + draw->pt.vertex_element, + draw->pt.nr_vertex_elements, + info); + + /* + * TODO: We could use draw->pt.max_index to further narrow + * the min_index/max_index hints given by the state tracker. + */ + for (instance = 0; instance < info->instance_count; instance++) { draw->instance_id = instance + info->start_instance; diff --git a/src/gallium/auxiliary/draw/draw_pt_fetch.c b/src/gallium/auxiliary/draw/draw_pt_fetch.c index 4fa3b265e10..5589a8212e4 100644 --- a/src/gallium/auxiliary/draw/draw_pt_fetch.c +++ b/src/gallium/auxiliary/draw/draw_pt_fetch.c @@ -139,7 +139,7 @@ void draw_pt_fetch_run( struct pt_fetch *fetch, ((char *)draw->pt.user.vbuffer[i] + draw->pt.vertex_buffer[i].buffer_offset), draw->pt.vertex_buffer[i].stride, - draw->pt.user.max_index); + draw->pt.max_index); } translate->run_elts( translate, diff --git a/src/gallium/auxiliary/draw/draw_pt_fetch_emit.c b/src/gallium/auxiliary/draw/draw_pt_fetch_emit.c index 51043102a61..0ab11d015c6 100644 --- a/src/gallium/auxiliary/draw/draw_pt_fetch_emit.c +++ b/src/gallium/auxiliary/draw/draw_pt_fetch_emit.c @@ -186,7 +186,7 @@ static void fetch_emit_prepare( struct draw_pt_middle_end *middle, ((char *)draw->pt.user.vbuffer[i] + draw->pt.vertex_buffer[i].buffer_offset), draw->pt.vertex_buffer[i].stride, - draw->pt.user.max_index); + draw->pt.max_index); } *max_vertices = (draw->render->max_vertex_buffer_bytes / diff --git a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c index 1e926fb028e..0dbbfe2b73c 100644 --- a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c +++ b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c @@ -169,7 +169,7 @@ static void fse_prepare( struct draw_pt_middle_end *middle, ((const ubyte *) draw->pt.user.vbuffer[i] + draw->pt.vertex_buffer[i].buffer_offset), draw->pt.vertex_buffer[i].stride, - draw->pt.user.max_index ); + draw->pt.max_index ); } *max_vertices = (draw->render->max_vertex_buffer_bytes / diff --git a/src/gallium/auxiliary/draw/draw_pt_vsplit.c b/src/gallium/auxiliary/draw/draw_pt_vsplit.c index a6875253094..c19dcd9e1f7 100644 --- a/src/gallium/auxiliary/draw/draw_pt_vsplit.c +++ b/src/gallium/auxiliary/draw/draw_pt_vsplit.c @@ -85,7 +85,12 @@ vsplit_flush_cache(struct vsplit_frontend *vsplit, unsigned flags) static INLINE void vsplit_add_cache(struct vsplit_frontend *vsplit, unsigned fetch) { - unsigned hash = fetch % MAP_SIZE; + struct draw_context *draw = vsplit->draw; + unsigned hash; + + fetch = MIN2(fetch, draw->pt.max_index); + + hash = fetch % MAP_SIZE; if (vsplit->cache.fetches[hash] != fetch) { /* update cache */ diff --git a/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h b/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h index 75dba8c39a5..bb3cbf80ad7 100644 --- a/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h +++ b/src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h @@ -47,14 +47,18 @@ CONCAT(vsplit_primitive_, ELT_TYPE)(struct vsplit_frontend *vsplit, const ushort *draw_elts = NULL; unsigned i; + ib += istart; + /* use the ib directly */ if (min_index == 0 && sizeof(ib[0]) == sizeof(draw_elts[0])) { if (icount > vsplit->max_vertices) return FALSE; for (i = 0; i < icount; i++) { - ELT_TYPE idx = ib[istart + i]; - assert(idx >= min_index && idx <= max_index); + ELT_TYPE idx = ib[i]; + if (idx < min_index || idx > max_index) { + debug_printf("warning: index out of range\n"); + } } draw_elts = (const ushort *) ib; } @@ -83,17 +87,21 @@ CONCAT(vsplit_primitive_, ELT_TYPE)(struct vsplit_frontend *vsplit, if (!draw_elts) { if (min_index == 0) { for (i = 0; i < icount; i++) { - ELT_TYPE idx = ib[istart + i]; + ELT_TYPE idx = ib[i]; - assert(idx >= min_index && idx <= max_index); + if (idx < min_index || idx > max_index) { + debug_printf("warning: index out of range\n"); + } vsplit->draw_elts[i] = (ushort) idx; } } else { for (i = 0; i < icount; i++) { - ELT_TYPE idx = ib[istart + i]; + ELT_TYPE idx = ib[i]; - assert(idx >= min_index && idx <= max_index); + if (idx < min_index || idx > max_index) { + debug_printf("warning: index out of range\n"); + } vsplit->draw_elts[i] = (ushort) (idx - min_index); } } diff --git a/src/gallium/auxiliary/draw/draw_vs.c b/src/gallium/auxiliary/draw/draw_vs.c index 7caad6f0053..1763dbc199f 100644 --- a/src/gallium/auxiliary/draw/draw_vs.c +++ b/src/gallium/auxiliary/draw/draw_vs.c @@ -104,11 +104,18 @@ draw_create_vertex_shader(struct draw_context *draw, } if (!draw->pt.middle.llvm) { +#if 0 +/* these paths don't support vertex clamping + * TODO: either add it, or remove them completely + * use LLVM instead if you want performance + * use exec instead if you want debugging/more correctness + */ #if defined(PIPE_ARCH_X86) vs = draw_create_vs_sse( draw, shader ); #elif defined(PIPE_ARCH_PPC) vs = draw_create_vs_ppc( draw, shader ); #endif +#endif } #if HAVE_LLVM else { diff --git a/src/gallium/auxiliary/draw/draw_vs_exec.c b/src/gallium/auxiliary/draw/draw_vs_exec.c index c41d7c42a01..d9c4209a42b 100644 --- a/src/gallium/auxiliary/draw/draw_vs_exec.c +++ b/src/gallium/auxiliary/draw/draw_vs_exec.c @@ -95,6 +95,7 @@ vs_exec_run_linear( struct draw_vertex_shader *shader, struct tgsi_exec_machine *machine = evs->machine; unsigned int i, j; unsigned slot; + boolean clamp_vertex_color = shader->draw->rasterizer->clamp_vertex_color; tgsi_exec_set_constant_buffers(machine, PIPE_MAX_CONSTANT_BUFFERS, constants, const_size); @@ -151,11 +152,22 @@ vs_exec_run_linear( struct draw_vertex_shader *shader, */ for (j = 0; j < max_vertices; j++) { for (slot = 0; slot < shader->info.num_outputs; slot++) { - output[slot][0] = machine->Outputs[slot].xyzw[0].f[j]; - output[slot][1] = machine->Outputs[slot].xyzw[1].f[j]; - output[slot][2] = machine->Outputs[slot].xyzw[2].f[j]; - output[slot][3] = machine->Outputs[slot].xyzw[3].f[j]; - + unsigned name = shader->info.output_semantic_name[slot]; + if(clamp_vertex_color && + (name == TGSI_SEMANTIC_COLOR || name == TGSI_SEMANTIC_BCOLOR)) + { + output[slot][0] = CLAMP(machine->Outputs[slot].xyzw[0].f[j], 0.0f, 1.0f); + output[slot][1] = CLAMP(machine->Outputs[slot].xyzw[1].f[j], 0.0f, 1.0f); + output[slot][2] = CLAMP(machine->Outputs[slot].xyzw[2].f[j], 0.0f, 1.0f); + output[slot][3] = CLAMP(machine->Outputs[slot].xyzw[3].f[j], 0.0f, 1.0f); + } + else + { + output[slot][0] = machine->Outputs[slot].xyzw[0].f[j]; + output[slot][1] = machine->Outputs[slot].xyzw[1].f[j]; + output[slot][2] = machine->Outputs[slot].xyzw[2].f[j]; + output[slot][3] = machine->Outputs[slot].xyzw[3].f[j]; + } } #if 0 diff --git a/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp b/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp index bb2c82fe0ed..0b724a34948 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp +++ b/src/gallium/auxiliary/gallivm/lp_bld_debug.cpp @@ -32,7 +32,12 @@ #include <llvm/Target/TargetInstrInfo.h> #include <llvm/Support/raw_ostream.h> #include <llvm/Support/MemoryObject.h> + +#if HAVE_LLVM >= 0x0209 +#include <llvm/Support/Host.h> +#else #include <llvm/System/Host.h> +#endif #if HAVE_LLVM >= 0x0207 #include <llvm/MC/MCDisassembler.h> @@ -202,9 +207,17 @@ lp_disassemble(const void* func) } raw_debug_ostream Out; + TargetMachine *TM = T->createTargetMachine(Triple, ""); +#if HAVE_LLVM >= 0x0300 + unsigned int AsmPrinterVariant = AsmInfo->getAssemblerDialect(); +#else int AsmPrinterVariant = AsmInfo->getAssemblerDialect(); -#if HAVE_LLVM >= 0x0208 +#endif +#if HAVE_LLVM >= 0x0300 + OwningPtr<MCInstPrinter> Printer( + T->createMCInstPrinter(*TM, AsmPrinterVariant, *AsmInfo)); +#elif HAVE_LLVM >= 0x0208 OwningPtr<MCInstPrinter> Printer( T->createMCInstPrinter(AsmPrinterVariant, *AsmInfo)); #else @@ -216,8 +229,6 @@ lp_disassemble(const void* func) return; } - TargetMachine *TM = T->createTargetMachine(Triple, ""); - const TargetInstrInfo *TII = TM->getInstrInfo(); /* diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c index 8ad34598a92..4636371a0f5 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c @@ -51,6 +51,10 @@ */ #define BRILINEAR_FACTOR 2 +static LLVMValueRef +lp_build_minify(struct lp_build_context *bld, + LLVMValueRef base_size, + LLVMValueRef level); /** * Does the given texture wrap mode allow sampling the texture border color? @@ -184,9 +188,11 @@ lp_sampler_static_state(struct lp_sampler_static_state *state, */ static LLVMValueRef lp_build_rho(struct lp_build_sample_context *bld, + unsigned unit, const LLVMValueRef ddx[4], const LLVMValueRef ddy[4]) { + struct lp_build_context *int_size_bld = &bld->int_size_bld; struct lp_build_context *float_size_bld = &bld->float_size_bld; struct lp_build_context *float_bld = &bld->float_bld; const unsigned dims = bld->dims; @@ -198,8 +204,9 @@ lp_build_rho(struct lp_build_sample_context *bld, LLVMValueRef dsdx, dsdy, dtdx, dtdy, drdx, drdy; LLVMValueRef rho_x, rho_y; LLVMValueRef rho_vec; - LLVMValueRef float_size; + LLVMValueRef int_size, float_size; LLVMValueRef rho; + LLVMValueRef first_level, first_level_vec; dsdx = ddx[0]; dsdy = ddy[0]; @@ -235,7 +242,11 @@ lp_build_rho(struct lp_build_sample_context *bld, rho_vec = lp_build_max(float_size_bld, rho_x, rho_y); - float_size = lp_build_int_to_float(float_size_bld, bld->int_size); + first_level = bld->dynamic_state->first_level(bld->dynamic_state, + bld->gallivm, unit); + first_level_vec = lp_build_broadcast_scalar(&bld->int_size_bld, first_level); + int_size = lp_build_minify(int_size_bld, bld->int_size, first_level_vec); + float_size = lp_build_int_to_float(float_size_bld, int_size); rho_vec = lp_build_mul(float_size_bld, rho_vec, float_size); @@ -442,7 +453,7 @@ lp_build_lod_selector(struct lp_build_sample_context *bld, else { LLVMValueRef rho; - rho = lp_build_rho(bld, ddx, ddy); + rho = lp_build_rho(bld, unit, ddx, ddy); /* * Compute lod = log2(rho) @@ -542,18 +553,18 @@ lp_build_nearest_mip_level(struct lp_build_sample_context *bld, LLVMValueRef *level_out) { struct lp_build_context *int_bld = &bld->int_bld; - LLVMValueRef last_level, level; - - LLVMValueRef zero = lp_build_const_int32(bld->gallivm, 0); + LLVMValueRef first_level, last_level, level; + first_level = bld->dynamic_state->first_level(bld->dynamic_state, + bld->gallivm, unit); last_level = bld->dynamic_state->last_level(bld->dynamic_state, bld->gallivm, unit); /* convert float lod to integer */ - level = lod_ipart; + level = lp_build_add(int_bld, lod_ipart, first_level); /* clamp level to legal range of levels */ - *level_out = lp_build_clamp(int_bld, level, zero, last_level); + *level_out = lp_build_clamp(int_bld, level, first_level, last_level); } @@ -573,39 +584,42 @@ lp_build_linear_mip_levels(struct lp_build_sample_context *bld, LLVMBuilderRef builder = bld->gallivm->builder; struct lp_build_context *int_bld = &bld->int_bld; struct lp_build_context *float_bld = &bld->float_bld; - LLVMValueRef last_level; + LLVMValueRef first_level, last_level; LLVMValueRef clamp_min; LLVMValueRef clamp_max; - *level0_out = lod_ipart; - *level1_out = lp_build_add(int_bld, lod_ipart, int_bld->one); + first_level = bld->dynamic_state->first_level(bld->dynamic_state, + bld->gallivm, unit); + + *level0_out = lp_build_add(int_bld, lod_ipart, first_level); + *level1_out = lp_build_add(int_bld, *level0_out, int_bld->one); last_level = bld->dynamic_state->last_level(bld->dynamic_state, bld->gallivm, unit); /* - * Clamp both lod_ipart and lod_ipart + 1 to [0, last_level], with the - * minimum number of comparisons, and zeroing lod_fpart in the extreme + * Clamp both *level0_out and *level1_out to [first_level, last_level], with + * the minimum number of comparisons, and zeroing lod_fpart in the extreme * ends in the process. */ - /* lod_ipart < 0 */ + /* *level0_out < first_level */ clamp_min = LLVMBuildICmp(builder, LLVMIntSLT, - lod_ipart, int_bld->zero, - "clamp_lod_to_zero"); + *level0_out, first_level, + "clamp_lod_to_first"); *level0_out = LLVMBuildSelect(builder, clamp_min, - int_bld->zero, *level0_out, ""); + first_level, *level0_out, ""); *level1_out = LLVMBuildSelect(builder, clamp_min, - int_bld->zero, *level1_out, ""); + first_level, *level1_out, ""); *lod_fpart_inout = LLVMBuildSelect(builder, clamp_min, float_bld->zero, *lod_fpart_inout, ""); - /* lod_ipart >= last_level */ + /* *level0_out >= last_level */ clamp_max = LLVMBuildICmp(builder, LLVMIntSGE, - lod_ipart, last_level, + *level0_out, last_level, "clamp_lod_to_last"); *level0_out = LLVMBuildSelect(builder, clamp_max, diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.h b/src/gallium/auxiliary/gallivm/lp_bld_sample.h index 8c9d5df4e43..a71e656fe0e 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.h @@ -120,6 +120,12 @@ struct lp_sampler_dynamic_state struct gallivm_state *gallivm, unsigned unit); + /** Obtain the first mipmap level (base level) (returns int32) */ + LLVMValueRef + (*first_level)( const struct lp_sampler_dynamic_state *state, + struct gallivm_state *gallivm, + unsigned unit); + /** Obtain the number of mipmap levels minus one (returns int32) */ LLVMValueRef (*last_level)( const struct lp_sampler_dynamic_state *state, diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c index e61cf9541ea..4f160159968 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_aos.c @@ -939,6 +939,7 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, LLVMValueRef unswizzled[4]; LLVMValueRef face_ddx[4], face_ddy[4]; struct lp_build_context h16_bld; + LLVMValueRef first_level; LLVMValueRef i32t_zero = lp_build_const_int32(bld->gallivm, 0); /* we only support the common/simple wrap modes at this time */ @@ -1008,7 +1009,9 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, lp_build_nearest_mip_level(bld, unit, lod_ipart, &ilevel0); } else { - ilevel0 = i32t_zero; + first_level = bld->dynamic_state->first_level(bld->dynamic_state, + bld->gallivm, unit); + ilevel0 = first_level; } break; case PIPE_TEX_MIPFILTER_NEAREST: @@ -1065,7 +1068,7 @@ lp_build_sample_aos(struct lp_build_sample_context *bld, lp_build_sample_mipmap(bld, mag_filter, PIPE_TEX_MIPFILTER_NONE, s, t, r, - i32t_zero, NULL, NULL, + ilevel0, NULL, NULL, packed_lo, packed_hi); } lp_build_endif(&if_ctx); diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c index 9961ba08f3a..4ea7b4bd8a2 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c @@ -943,6 +943,7 @@ lp_build_sample_general(struct lp_build_sample_context *bld, LLVMValueRef ilevel0, ilevel1 = NULL; LLVMValueRef face_ddx[4], face_ddy[4]; LLVMValueRef texels[4]; + LLVMValueRef first_level; LLVMValueRef i32t_zero = lp_build_const_int32(bld->gallivm, 0); unsigned chan; @@ -1009,7 +1010,9 @@ lp_build_sample_general(struct lp_build_sample_context *bld, lp_build_nearest_mip_level(bld, unit, lod_ipart, &ilevel0); } else { - ilevel0 = i32t_zero; + first_level = bld->dynamic_state->first_level(bld->dynamic_state, + bld->gallivm, unit); + ilevel0 = first_level; } break; case PIPE_TEX_MIPFILTER_NEAREST: @@ -1068,7 +1071,7 @@ lp_build_sample_general(struct lp_build_sample_context *bld, lp_build_sample_mipmap(bld, unit, mag_filter, PIPE_TEX_MIPFILTER_NONE, s, t, r, - i32t_zero, NULL, NULL, + ilevel0, NULL, NULL, texels); } lp_build_endif(&if_ctx); diff --git a/src/gallium/auxiliary/rtasm/rtasm_x86sse.c b/src/gallium/auxiliary/rtasm/rtasm_x86sse.c index b03dd3a0cf8..5231bb08374 100644 --- a/src/gallium/auxiliary/rtasm/rtasm_x86sse.c +++ b/src/gallium/auxiliary/rtasm/rtasm_x86sse.c @@ -726,6 +726,16 @@ void x86_movzx16(struct x86_function *p, struct x86_reg dst, struct x86_reg src emit_modrm(p, dst, src); } +void x86_cmovcc( struct x86_function *p, + struct x86_reg dst, + struct x86_reg src, + enum x86_cc cc) +{ + DUMP_RRI( dst, src, cc ); + emit_2ub( p, 0x0f, 0x40 + cc ); + emit_modrm( p, dst, src ); +} + void x86_xor( struct x86_function *p, struct x86_reg dst, struct x86_reg src ) diff --git a/src/gallium/auxiliary/rtasm/rtasm_x86sse.h b/src/gallium/auxiliary/rtasm/rtasm_x86sse.h index 2b9678b1765..af0565bb59d 100644 --- a/src/gallium/auxiliary/rtasm/rtasm_x86sse.h +++ b/src/gallium/auxiliary/rtasm/rtasm_x86sse.h @@ -309,6 +309,7 @@ void sse_movmskps( struct x86_function *p, struct x86_reg dst, struct x86_reg sr void x86_add( struct x86_function *p, struct x86_reg dst, struct x86_reg src ); void x86_and( struct x86_function *p, struct x86_reg dst, struct x86_reg src ); +void x86_cmovcc( struct x86_function *p, struct x86_reg dst, struct x86_reg src, enum x86_cc cc ); void x86_cmp( struct x86_function *p, struct x86_reg dst, struct x86_reg src ); void x86_dec( struct x86_function *p, struct x86_reg reg ); void x86_inc( struct x86_function *p, struct x86_reg reg ); diff --git a/src/gallium/auxiliary/translate/translate_generic.c b/src/gallium/auxiliary/translate/translate_generic.c index ad809db720d..e4e1c868333 100644 --- a/src/gallium/auxiliary/translate/translate_generic.c +++ b/src/gallium/auxiliary/translate/translate_generic.c @@ -381,14 +381,17 @@ static ALWAYS_INLINE void PIPE_CDECL generic_run_one( struct translate_generic * if (tg->attrib[attr].instance_divisor) { index = instance_id / tg->attrib[attr].instance_divisor; + /* XXX we need to clamp the index here too, but to a + * per-array max value, not the draw->pt.max_index value + * that's being given to us via translate->set_buffer(). + */ } else { index = elt; + /* clamp to avoid going out of bounds */ + index = MIN2(index, tg->attrib[attr].max_index); } - /* clamp to void going out of bounds */ - index = MIN2(index, tg->attrib[attr].max_index); - src = tg->attrib[attr].input_ptr + tg->attrib[attr].input_stride * index; diff --git a/src/gallium/auxiliary/translate/translate_sse.c b/src/gallium/auxiliary/translate/translate_sse.c index ef7f4be4c3e..c3d15661f05 100644 --- a/src/gallium/auxiliary/translate/translate_sse.c +++ b/src/gallium/auxiliary/translate/translate_sse.c @@ -53,7 +53,7 @@ struct translate_buffer { unsigned max_index; }; -struct translate_buffer_varient { +struct translate_buffer_variant { unsigned buffer_index; unsigned instance_divisor; void *ptr; /* updated either per vertex or per instance */ @@ -103,12 +103,12 @@ struct translate_sse { struct translate_buffer buffer[PIPE_MAX_ATTRIBS]; unsigned nr_buffers; - /* Multiple buffer varients can map to a single buffer. */ - struct translate_buffer_varient buffer_varient[PIPE_MAX_ATTRIBS]; - unsigned nr_buffer_varients; + /* Multiple buffer variants can map to a single buffer. */ + struct translate_buffer_variant buffer_variant[PIPE_MAX_ATTRIBS]; + unsigned nr_buffer_variants; - /* Multiple elements can map to a single buffer varient. */ - unsigned element_to_buffer_varient[PIPE_MAX_ATTRIBS]; + /* Multiple elements can map to a single buffer variant. */ + unsigned element_to_buffer_variant[PIPE_MAX_ATTRIBS]; boolean use_instancing; unsigned instance_id; @@ -1062,15 +1062,17 @@ static boolean init_inputs( struct translate_sse *p, struct x86_reg instance_id = x86_make_disp(p->machine_EDI, get_offset(p, &p->instance_id)); - for (i = 0; i < p->nr_buffer_varients; i++) { - struct translate_buffer_varient *varient = &p->buffer_varient[i]; - struct translate_buffer *buffer = &p->buffer[varient->buffer_index]; + for (i = 0; i < p->nr_buffer_variants; i++) { + struct translate_buffer_variant *variant = &p->buffer_variant[i]; + struct translate_buffer *buffer = &p->buffer[variant->buffer_index]; - if (!index_size || varient->instance_divisor) { + if (!index_size || variant->instance_divisor) { + struct x86_reg buf_max_index = x86_make_disp(p->machine_EDI, + get_offset(p, &buffer->max_index)); struct x86_reg buf_stride = x86_make_disp(p->machine_EDI, get_offset(p, &buffer->stride)); struct x86_reg buf_ptr = x86_make_disp(p->machine_EDI, - get_offset(p, &varient->ptr)); + get_offset(p, &variant->ptr)); struct x86_reg buf_base_ptr = x86_make_disp(p->machine_EDI, get_offset(p, &buffer->base_ptr)); struct x86_reg elt = p->idx_ESI; @@ -1079,12 +1081,12 @@ static boolean init_inputs( struct translate_sse *p, /* Calculate pointer to first attrib: * base_ptr + stride * index, where index depends on instance divisor */ - if (varient->instance_divisor) { + if (variant->instance_divisor) { /* Our index is instance ID divided by instance divisor. */ x86_mov(p->func, tmp_EAX, instance_id); - if (varient->instance_divisor != 1) { + if (variant->instance_divisor != 1) { struct x86_reg tmp_EDX = p->tmp2_EDX; struct x86_reg tmp_ECX = p->src_ECX; @@ -1093,26 +1095,33 @@ static boolean init_inputs( struct translate_sse *p, */ x86_xor(p->func, tmp_EDX, tmp_EDX); - x86_mov_reg_imm(p->func, tmp_ECX, varient->instance_divisor); + x86_mov_reg_imm(p->func, tmp_ECX, variant->instance_divisor); x86_div(p->func, tmp_ECX); /* EAX = EDX:EAX / ECX */ } + + /* XXX we need to clamp the index here too, but to a + * per-array max value, not the draw->pt.max_index value + * that's being given to us via translate->set_buffer(). + */ } else { x86_mov(p->func, tmp_EAX, elt); - } - /* - * TODO: Respect translate_buffer::max_index. - */ + /* Clamp to max_index + */ + x86_cmp(p->func, tmp_EAX, buf_max_index); + x86_cmovcc(p->func, tmp_EAX, buf_max_index, cc_AE); + } x86_imul(p->func, tmp_EAX, buf_stride); x64_rexw(p->func); x86_add(p->func, tmp_EAX, buf_base_ptr); + x86_cmp(p->func, p->count_EBP, p->tmp_EAX); /* In the linear case, keep the buffer pointer instead of the * index number. */ - if (!index_size && p->nr_buffer_varients == 1) + if (!index_size && p->nr_buffer_variants == 1) { x64_rexw(p->func); x86_mov(p->func, elt, tmp_EAX); @@ -1138,14 +1147,14 @@ static struct x86_reg get_buffer_ptr( struct translate_sse *p, return x86_make_disp(p->machine_EDI, get_offset(p, &p->instance_id)); } - if (!index_size && p->nr_buffer_varients == 1) { + if (!index_size && p->nr_buffer_variants == 1) { return p->idx_ESI; } - else if (!index_size || p->buffer_varient[var_idx].instance_divisor) { + else if (!index_size || p->buffer_variant[var_idx].instance_divisor) { struct x86_reg ptr = p->src_ECX; struct x86_reg buf_ptr = x86_make_disp(p->machine_EDI, - get_offset(p, &p->buffer_varient[var_idx].ptr)); + get_offset(p, &p->buffer_variant[var_idx].ptr)); x64_rexw(p->func); x86_mov(p->func, ptr, buf_ptr); @@ -1153,15 +1162,19 @@ static struct x86_reg get_buffer_ptr( struct translate_sse *p, } else { struct x86_reg ptr = p->src_ECX; - const struct translate_buffer_varient *varient = &p->buffer_varient[var_idx]; + const struct translate_buffer_variant *variant = &p->buffer_variant[var_idx]; struct x86_reg buf_stride = x86_make_disp(p->machine_EDI, - get_offset(p, &p->buffer[varient->buffer_index].stride)); + get_offset(p, &p->buffer[variant->buffer_index].stride)); struct x86_reg buf_base_ptr = x86_make_disp(p->machine_EDI, - get_offset(p, &p->buffer[varient->buffer_index].base_ptr)); + get_offset(p, &p->buffer[variant->buffer_index].base_ptr)); + + struct x86_reg buf_max_index = + x86_make_disp(p->machine_EDI, + get_offset(p, &p->buffer[variant->buffer_index].max_index)); @@ -1179,6 +1192,12 @@ static struct x86_reg get_buffer_ptr( struct translate_sse *p, x86_mov(p->func, ptr, elt); break; } + + /* Clamp to max_index + */ + x86_cmp(p->func, ptr, buf_max_index); + x86_cmovcc(p->func, ptr, buf_max_index, cc_AE); + x86_imul(p->func, ptr, buf_stride); x64_rexw(p->func); x86_add(p->func, ptr, buf_base_ptr); @@ -1191,11 +1210,11 @@ static struct x86_reg get_buffer_ptr( struct translate_sse *p, static boolean incr_inputs( struct translate_sse *p, unsigned index_size ) { - if (!index_size && p->nr_buffer_varients == 1) { + if (!index_size && p->nr_buffer_variants == 1) { struct x86_reg stride = x86_make_disp(p->machine_EDI, get_offset(p, &p->buffer[0].stride)); - if (p->buffer_varient[0].instance_divisor == 0) { + if (p->buffer_variant[0].instance_divisor == 0) { x64_rexw(p->func); x86_add(p->func, p->idx_ESI, stride); sse_prefetchnta(p->func, x86_make_disp(p->idx_ESI, 192)); @@ -1206,14 +1225,14 @@ static boolean incr_inputs( struct translate_sse *p, /* Is this worthwhile?? */ - for (i = 0; i < p->nr_buffer_varients; i++) { - struct translate_buffer_varient *varient = &p->buffer_varient[i]; + for (i = 0; i < p->nr_buffer_variants; i++) { + struct translate_buffer_variant *variant = &p->buffer_variant[i]; struct x86_reg buf_ptr = x86_make_disp(p->machine_EDI, - get_offset(p, &varient->ptr)); + get_offset(p, &variant->ptr)); struct x86_reg buf_stride = x86_make_disp(p->machine_EDI, - get_offset(p, &p->buffer[varient->buffer_index].stride)); + get_offset(p, &p->buffer[variant->buffer_index].stride)); - if (varient->instance_divisor == 0) { + if (variant->instance_divisor == 0) { x86_mov(p->func, p->tmp_EAX, buf_stride); x64_rexw(p->func); x86_add(p->func, p->tmp_EAX, buf_ptr); @@ -1323,18 +1342,18 @@ static boolean build_vertex_emit( struct translate_sse *p, label = x86_get_label(p->func); { struct x86_reg elt = !index_size ? p->idx_ESI : x86_deref(p->idx_ESI); - int last_varient = -1; + int last_variant = -1; struct x86_reg vb; for (j = 0; j < p->translate.key.nr_elements; j++) { const struct translate_element *a = &p->translate.key.element[j]; - unsigned varient = p->element_to_buffer_varient[j]; + unsigned variant = p->element_to_buffer_variant[j]; /* Figure out source pointer address: */ - if (varient != last_varient) { - last_varient = varient; - vb = get_buffer_ptr(p, index_size, varient, elt); + if (variant != last_variant) { + last_variant = variant; + vb = get_buffer_ptr(p, index_size, variant, elt); } if (!translate_attr( p, a, @@ -1460,24 +1479,24 @@ struct translate *translate_sse2_create( const struct translate_key *key ) } /* - * Map vertex element to vertex buffer varient. + * Map vertex element to vertex buffer variant. */ - for (j = 0; j < p->nr_buffer_varients; j++) { - if (p->buffer_varient[j].buffer_index == key->element[i].input_buffer && - p->buffer_varient[j].instance_divisor == key->element[i].instance_divisor) { + for (j = 0; j < p->nr_buffer_variants; j++) { + if (p->buffer_variant[j].buffer_index == key->element[i].input_buffer && + p->buffer_variant[j].instance_divisor == key->element[i].instance_divisor) { break; } } - if (j == p->nr_buffer_varients) { - p->buffer_varient[j].buffer_index = key->element[i].input_buffer; - p->buffer_varient[j].instance_divisor = key->element[i].instance_divisor; - p->nr_buffer_varients++; + if (j == p->nr_buffer_variants) { + p->buffer_variant[j].buffer_index = key->element[i].input_buffer; + p->buffer_variant[j].instance_divisor = key->element[i].instance_divisor; + p->nr_buffer_variants++; } - p->element_to_buffer_varient[i] = j; + p->element_to_buffer_variant[i] = j; } else { assert(key->element[i].type == TRANSLATE_ELEMENT_INSTANCE_ID); - p->element_to_buffer_varient[i] = ELEMENT_BUFFER_INSTANCE_ID; + p->element_to_buffer_variant[i] = ELEMENT_BUFFER_INSTANCE_ID; } } diff --git a/src/gallium/auxiliary/util/u_cpu_detect.c b/src/gallium/auxiliary/util/u_cpu_detect.c index 32519b148b6..e0c8f73c7d3 100644 --- a/src/gallium/auxiliary/util/u_cpu_detect.c +++ b/src/gallium/auxiliary/util/u_cpu_detect.c @@ -270,13 +270,15 @@ util_cpu_detect(void) util_cpu_caps.x86_cpu_type = 8 + ((regs2[0] >> 20) & 255); /* use extended family (P4, IA64) */ /* general feature flags */ - util_cpu_caps.has_tsc = (regs2[3] & (1 << 8 )) >> 8; /* 0x0000010 */ - util_cpu_caps.has_mmx = (regs2[3] & (1 << 23 )) >> 23; /* 0x0800000 */ - util_cpu_caps.has_sse = (regs2[3] & (1 << 25 )) >> 25; /* 0x2000000 */ - util_cpu_caps.has_sse2 = (regs2[3] & (1 << 26 )) >> 26; /* 0x4000000 */ - util_cpu_caps.has_sse3 = (regs2[2] & (1)); /* 0x0000001 */ - util_cpu_caps.has_ssse3 = (regs2[2] & (1 << 9 )) >> 9; /* 0x0000020 */ - util_cpu_caps.has_sse4_1 = (regs2[2] & (1 << 19)) >> 19; + util_cpu_caps.has_tsc = (regs2[3] >> 8) & 1; /* 0x0000010 */ + util_cpu_caps.has_mmx = (regs2[3] >> 23) & 1; /* 0x0800000 */ + util_cpu_caps.has_sse = (regs2[3] >> 25) & 1; /* 0x2000000 */ + util_cpu_caps.has_sse2 = (regs2[3] >> 26) & 1; /* 0x4000000 */ + util_cpu_caps.has_sse3 = (regs2[2] >> 0) & 1; /* 0x0000001 */ + util_cpu_caps.has_ssse3 = (regs2[2] >> 9) & 1; /* 0x0000020 */ + util_cpu_caps.has_sse4_1 = (regs2[2] >> 19) & 1; + util_cpu_caps.has_sse4_2 = (regs2[2] >> 20) & 1; + util_cpu_caps.has_avx = (regs2[2] >> 28) & 1; util_cpu_caps.has_mmx2 = util_cpu_caps.has_sse; /* SSE cpus supports mmxext too */ cacheline = ((regs2[1] >> 8) & 0xFF) * 8; @@ -290,10 +292,10 @@ util_cpu_detect(void) cpuid(0x80000001, regs2); - util_cpu_caps.has_mmx |= (regs2[3] & (1 << 23 )) >> 23; /* 0x0800000 */ - util_cpu_caps.has_mmx2 |= (regs2[3] & (1 << 22 )) >> 22; /* 0x400000 */ - util_cpu_caps.has_3dnow = (regs2[3] & (1 << 31 )) >> 31; /* 0x80000000 */ - util_cpu_caps.has_3dnow_ext = (regs2[3] & (1 << 30 )) >> 30; + util_cpu_caps.has_mmx |= (regs2[3] >> 23) & 1; + util_cpu_caps.has_mmx2 |= (regs2[3] >> 22) & 1; + util_cpu_caps.has_3dnow = (regs2[3] >> 31) & 1; + util_cpu_caps.has_3dnow_ext = (regs2[3] >> 30) & 1; } if (regs[0] >= 0x80000006) { @@ -329,6 +331,8 @@ util_cpu_detect(void) debug_printf("util_cpu_caps.has_sse3 = %u\n", util_cpu_caps.has_sse3); debug_printf("util_cpu_caps.has_ssse3 = %u\n", util_cpu_caps.has_ssse3); debug_printf("util_cpu_caps.has_sse4_1 = %u\n", util_cpu_caps.has_sse4_1); + debug_printf("util_cpu_caps.has_sse4_2 = %u\n", util_cpu_caps.has_sse4_2); + debug_printf("util_cpu_caps.has_avx = %u\n", util_cpu_caps.has_avx); debug_printf("util_cpu_caps.has_3dnow = %u\n", util_cpu_caps.has_3dnow); debug_printf("util_cpu_caps.has_3dnow_ext = %u\n", util_cpu_caps.has_3dnow_ext); debug_printf("util_cpu_caps.has_altivec = %u\n", util_cpu_caps.has_altivec); diff --git a/src/gallium/auxiliary/util/u_cpu_detect.h b/src/gallium/auxiliary/util/u_cpu_detect.h index f3bef0993c7..856e8d7a0ef 100644 --- a/src/gallium/auxiliary/util/u_cpu_detect.h +++ b/src/gallium/auxiliary/util/u_cpu_detect.h @@ -53,6 +53,8 @@ struct util_cpu_caps { unsigned has_sse3:1; unsigned has_ssse3:1; unsigned has_sse4_1:1; + unsigned has_sse4_2:1; + unsigned has_avx:1; unsigned has_3dnow:1; unsigned has_3dnow_ext:1; unsigned has_altivec:1; diff --git a/src/gallium/auxiliary/util/u_double_list.h b/src/gallium/auxiliary/util/u_double_list.h index 42adb1f0699..2384c36cb13 100644 --- a/src/gallium/auxiliary/util/u_double_list.h +++ b/src/gallium/auxiliary/util/u_double_list.h @@ -39,6 +39,7 @@ #include <stddef.h> +#include "pipe/p_compiler.h" struct list_head @@ -47,50 +48,56 @@ struct list_head struct list_head *next; }; +static INLINE void list_inithead(struct list_head *item) +{ + item->prev = item; + item->next = item; +} + +static INLINE void list_add(struct list_head *item, struct list_head *list) +{ + item->prev = list; + item->next = list->next; + list->next->prev = item; + list->next = item; +} + +static INLINE void list_addtail(struct list_head *item, struct list_head *list) +{ + item->next = list; + item->prev = list->prev; + list->prev->next = item; + list->prev = item; +} + +static INLINE void list_replace(struct list_head *from, struct list_head *to) +{ + to->prev = from->prev; + to->next = from->next; + from->next->prev = to; + from->prev->next = to; +} + +static INLINE void list_del(struct list_head *item) +{ + item->prev->next = item->next; + item->next->prev = item->prev; +} -#define LIST_INITHEAD(__item) \ - do { \ - (__item)->prev = (__item); \ - (__item)->next = (__item); \ - } while (0) - -#define LIST_ADD(__item, __list) \ - do { \ - (__item)->prev = (__list); \ - (__item)->next = (__list)->next; \ - (__list)->next->prev = (__item); \ - (__list)->next = (__item); \ - } while (0) - -#define LIST_ADDTAIL(__item, __list) \ - do { \ - (__item)->next = (__list); \ - (__item)->prev = (__list)->prev; \ - (__list)->prev->next = (__item); \ - (__list)->prev = (__item); \ - } while(0) - -#define LIST_REPLACE(__from, __to) \ - do { \ - (__to)->prev = (__from)->prev; \ - (__to)->next = (__from)->next; \ - (__from)->next->prev = (__to); \ - (__from)->prev->next = (__to); \ - } while (0) - -#define LIST_DEL(__item) \ - do { \ - (__item)->prev->next = (__item)->next; \ - (__item)->next->prev = (__item)->prev; \ - } while(0) - -#define LIST_DELINIT(__item) \ - do { \ - (__item)->prev->next = (__item)->next; \ - (__item)->next->prev = (__item)->prev; \ - (__item)->next = (__item); \ - (__item)->prev = (__item); \ - } while(0) +static INLINE void list_delinit(struct list_head *item) +{ + item->prev->next = item->next; + item->next->prev = item->prev; + item->next = item; + item->prev = item; +} + +#define LIST_INITHEAD(__item) list_inithead(__item) +#define LIST_ADD(__item, __list) list_add(__item, __list) +#define LIST_ADDTAIL(__item, __list) list_addtail(__item, __list) +#define LIST_REPLACE(__from, __to) list_replace(__from, __to) +#define LIST_DEL(__item) list_del(__item) +#define LIST_DELINIT(__item) list_delinit(__item) #define LIST_ENTRY(__type, __item, __field) \ ((__type *)(((char *)(__item)) - offsetof(__type, __field))) @@ -114,4 +121,21 @@ struct list_head storage = container_of(pos->member.next, pos, member); \ &pos->member != (head); \ pos = storage, storage = container_of(storage->member.next, storage, member)) + +#define LIST_FOR_EACH_ENTRY_SAFE_REV(pos, storage, head, member) \ + for (pos = container_of((head)->prev, pos, member), \ + storage = container_of(pos->member.prev, pos, member); \ + &pos->member != (head); \ + pos = storage, storage = container_of(storage->member.prev, storage, member)) + +#define LIST_FOR_EACH_ENTRY_FROM(pos, start, head, member) \ + for (pos = container_of((start), pos, member); \ + &pos->member != (head); \ + pos = container_of(pos->member.next, pos, member)) + +#define LIST_FOR_EACH_ENTRY_FROM_REV(pos, start, head, member) \ + for (pos = container_of((start), pos, member); \ + &pos->member != (head); \ + pos = container_of(pos->member.prev, pos, member)) + #endif /*_U_DOUBLE_LIST_H_*/ diff --git a/src/gallium/auxiliary/util/u_draw.c b/src/gallium/auxiliary/util/u_draw.c new file mode 100644 index 00000000000..20837be5e59 --- /dev/null +++ b/src/gallium/auxiliary/util/u_draw.c @@ -0,0 +1,99 @@ +/************************************************************************** + * + * Copyright 2011 VMware, Inc. + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. + * IN NO EVENT SHALL VMWARE 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. + * + **************************************************************************/ + + +#include "util/u_debug.h" +#include "util/u_math.h" +#include "util/u_format.h" +#include "util/u_draw.h" + + +/** + * Returns the largest legal index value for the current set of bound vertex + * buffers. Regardless of any other consideration, all vertex lookups need to + * be clamped to 0..max_index to prevent an out-of-bound access. + */ +unsigned +util_draw_max_index( + const struct pipe_vertex_buffer *vertex_buffers, + unsigned nr_vertex_buffers, + const struct pipe_vertex_element *vertex_elements, + unsigned nr_vertex_elements, + const struct pipe_draw_info *info) +{ + unsigned max_index; + unsigned i; + + max_index = ~0; + for (i = 0; i < nr_vertex_elements; i++) { + const struct pipe_vertex_element *element = + &vertex_elements[i]; + const struct pipe_vertex_buffer *buffer = + &vertex_buffers[element->vertex_buffer_index]; + unsigned buffer_size; + const struct util_format_description *format_desc; + unsigned format_size; + + assert(buffer->buffer->height0 == 1); + assert(buffer->buffer->depth0 == 1); + buffer_size = buffer->buffer->width0; + + format_desc = util_format_description(element->src_format); + assert(format_desc->block.width == 1); + assert(format_desc->block.height == 1); + assert(format_desc->block.bits % 8 == 0); + format_size = format_desc->block.bits/8; + + assert(buffer_size - buffer->buffer_offset <= buffer_size); + buffer_size -= buffer->buffer_offset; + + assert(buffer_size - element->src_offset <= buffer_size); + buffer_size -= element->src_offset; + + assert(buffer_size - format_size <= buffer_size); + buffer_size -= format_size; + + if (buffer->stride != 0) { + unsigned buffer_max_index; + + buffer_max_index = buffer_size / buffer->stride; + + if (element->instance_divisor == 0) { + /* Per-vertex data */ + max_index = MIN2(max_index, buffer_max_index); + } + else { + /* Per-instance data. Simply make sure the state tracker didn't + * request more instances than those that fit in the buffer */ + assert((info->start_instance + info->instance_count)/element->instance_divisor + <= (buffer_max_index + 1)); + } + } + } + + return max_index; +} diff --git a/src/gallium/auxiliary/util/u_draw.h b/src/gallium/auxiliary/util/u_draw.h index f06d09ef91d..fdb683ca8a2 100644 --- a/src/gallium/auxiliary/util/u_draw.h +++ b/src/gallium/auxiliary/util/u_draw.h @@ -34,6 +34,11 @@ #include "pipe/p_state.h" +#ifdef __cplusplus +extern "C" { +#endif + + static INLINE void util_draw_init_info(struct pipe_draw_info *info) { @@ -136,4 +141,18 @@ util_draw_range_elements(struct pipe_context *pipe, pipe->draw_vbo(pipe, &info); } + +unsigned +util_draw_max_index( + const struct pipe_vertex_buffer *vertex_buffers, + unsigned nr_vertex_buffers, + const struct pipe_vertex_element *vertex_elements, + unsigned nr_vertex_elements, + const struct pipe_draw_info *info); + + +#ifdef __cplusplus +} #endif + +#endif /* !U_DRAW_H */ diff --git a/src/gallium/auxiliary/util/u_format.c b/src/gallium/auxiliary/util/u_format.c index 4896faa12bf..9cbdd0a5b99 100644 --- a/src/gallium/auxiliary/util/u_format.c +++ b/src/gallium/auxiliary/util/u_format.c @@ -36,6 +36,55 @@ #include "u_memory.h" #include "u_rect.h" #include "u_format.h" +#include "u_format_s3tc.h" + +#include "pipe/p_defines.h" + + +boolean +util_format_is_float(enum pipe_format format) +{ + const struct util_format_description *desc = util_format_description(format); + unsigned i; + + assert(desc); + if (!desc) { + return FALSE; + } + + /* Find the first non-void channel. */ + for (i = 0; i < 4; i++) { + if (desc->channel[i].type != UTIL_FORMAT_TYPE_VOID) { + break; + } + } + + if (i == 4) { + return FALSE; + } + + return desc->channel[i].type == UTIL_FORMAT_TYPE_FLOAT ? TRUE : FALSE; +} + + +boolean +util_format_is_supported(enum pipe_format format, unsigned bind) +{ + if (util_format_is_s3tc(format) && !util_format_s3tc_enabled) { + return FALSE; + } + +#ifndef TEXTURE_FLOAT_ENABLED + if ((bind & PIPE_BIND_RENDER_TARGET) && + format != PIPE_FORMAT_R9G9B9E5_FLOAT && + format != PIPE_FORMAT_R11G11B10_FLOAT && + util_format_is_float(format)) { + return FALSE; + } +#endif + + return TRUE; +} void diff --git a/src/gallium/auxiliary/util/u_format.csv b/src/gallium/auxiliary/util/u_format.csv index 22c63ae162a..e4b3f5df6ee 100644 --- a/src/gallium/auxiliary/util/u_format.csv +++ b/src/gallium/auxiliary/util/u_format.csv @@ -88,6 +88,22 @@ PIPE_FORMAT_L16_UNORM , plain, 1, 1, un16, , , , xxx1, r PIPE_FORMAT_A16_UNORM , plain, 1, 1, un16, , , , 000x, rgb PIPE_FORMAT_I16_UNORM , plain, 1, 1, un16, , , , xxxx, rgb PIPE_FORMAT_L16A16_UNORM , plain, 1, 1, un16, un16, , , xxxy, rgb +PIPE_FORMAT_A8_SNORM , plain, 1, 1, sn8 , , , , 000x, rgb +PIPE_FORMAT_L8_SNORM , plain, 1, 1, sn8 , , , , xxx1, rgb +PIPE_FORMAT_L8A8_SNORM , plain, 1, 1, sn8 , sn8 , , , xxxy, rgb +PIPE_FORMAT_I8_SNORM , plain, 1, 1, sn8 , , , , xxxx, rgb +PIPE_FORMAT_A16_SNORM , plain, 1, 1, sn16, , , , 000x, rgb +PIPE_FORMAT_L16_SNORM , plain, 1, 1, sn16, , , , xxx1, rgb +PIPE_FORMAT_L16A16_SNORM , plain, 1, 1, sn16, sn16, , , xxxy, rgb +PIPE_FORMAT_I16_SNORM , plain, 1, 1, sn16, , , , xxxx, rgb +PIPE_FORMAT_A16_FLOAT , plain, 1, 1, f16 , , , , 000x, rgb +PIPE_FORMAT_L16_FLOAT , plain, 1, 1, f16 , , , , xxx1, rgb +PIPE_FORMAT_L16A16_FLOAT , plain, 1, 1, f16 , f16 , , , xxxy, rgb +PIPE_FORMAT_I16_FLOAT , plain, 1, 1, f16 , , , , xxxx, rgb +PIPE_FORMAT_A32_FLOAT , plain, 1, 1, f32 , , , , 000x, rgb +PIPE_FORMAT_L32_FLOAT , plain, 1, 1, f32 , , , , xxx1, rgb +PIPE_FORMAT_L32A32_FLOAT , plain, 1, 1, f32 , f32 , , , xxxy, rgb +PIPE_FORMAT_I32_FLOAT , plain, 1, 1, f32 , , , , xxxx, rgb # SRGB formats PIPE_FORMAT_L8_SRGB , plain, 1, 1, un8 , , , , xxx1, srgb diff --git a/src/gallium/auxiliary/util/u_format.h b/src/gallium/auxiliary/util/u_format.h index 7659a802a41..bb3ed72e932 100644 --- a/src/gallium/auxiliary/util/u_format.h +++ b/src/gallium/auxiliary/util/u_format.h @@ -473,6 +473,10 @@ util_format_colormask(const struct util_format_description *desc) } +boolean +util_format_is_float(enum pipe_format format); + + /** * Whether the src format can be blitted to destation format with a simple * memcpy. @@ -481,6 +485,12 @@ boolean util_is_format_compatible(const struct util_format_description *src_desc, const struct util_format_description *dst_desc); +/** + * Whether the format is supported by Gallium for the given bindings. + * This covers S3TC textures and floating-point render targets. + */ +boolean +util_format_is_supported(enum pipe_format format, unsigned bind); /** * Whether this format is a rgab8 variant. diff --git a/src/gallium/auxiliary/util/u_surface.c b/src/gallium/auxiliary/util/u_surface.c index 9caf76c802b..4c5cc4da182 100644 --- a/src/gallium/auxiliary/util/u_surface.c +++ b/src/gallium/auxiliary/util/u_surface.c @@ -157,6 +157,9 @@ util_resource_copy_region(struct pipe_context *pipe, unsigned h = src_box->height; assert(src && dst); + assert((src->target == PIPE_BUFFER && dst->target == PIPE_BUFFER) || + (src->target != PIPE_BUFFER && dst->target != PIPE_BUFFER)); + if (!src || !dst) return; @@ -188,15 +191,19 @@ util_resource_copy_region(struct pipe_context *pipe, assert(dst_map); if (src_map && dst_map) { - util_copy_rect(dst_map, - dst_format, - dst_trans->stride, - 0, 0, - w, h, - src_map, - src_trans->stride, - 0, - 0); + if (dst->target == PIPE_BUFFER && src->target == PIPE_BUFFER) { + memcpy(dst_map, src_map, w); + } else { + util_copy_rect(dst_map, + dst_format, + dst_trans->stride, + 0, 0, + w, h, + src_map, + src_trans->stride, + 0, + 0); + } } pipe->transfer_unmap(pipe, src_trans); diff --git a/src/gallium/auxiliary/util/u_vbuf_mgr.c b/src/gallium/auxiliary/util/u_vbuf_mgr.c index 521ac07747c..dea2928f950 100644 --- a/src/gallium/auxiliary/util/u_vbuf_mgr.c +++ b/src/gallium/auxiliary/util/u_vbuf_mgr.c @@ -499,7 +499,7 @@ void u_vbuf_mgr_set_vertex_buffers(struct u_vbuf_mgr *mgrb, /* Update the maximum index. */ mgr->b.max_index = MIN2(mgr->b.max_index, - (vb->buffer->width0 - vb->buffer_offset) / vb->stride); + (vb->buffer->width0 - vb->buffer_offset) / vb->stride - 1); } for (; i < mgr->b.nr_real_vertex_buffers; i++) { @@ -572,7 +572,11 @@ void u_vbuf_mgr_draw_begin(struct u_vbuf_mgr *mgrb, int min_index, max_index; min_index = info->min_index - info->index_bias; - max_index = info->max_index - info->index_bias; + if (info->max_index == ~0) { + max_index = mgr->b.max_index; + } else { + max_index = MIN2(info->max_index - info->index_bias, mgr->b.max_index); + } /* Translate vertices with non-native layouts or formats. */ if (mgr->incompatible_vb_layout || mgr->ve->incompatible_layout) { diff --git a/src/gallium/auxiliary/util/u_vbuf_mgr.h b/src/gallium/auxiliary/util/u_vbuf_mgr.h index 8b241854c83..9380dce4f72 100644 --- a/src/gallium/auxiliary/util/u_vbuf_mgr.h +++ b/src/gallium/auxiliary/util/u_vbuf_mgr.h @@ -53,7 +53,7 @@ struct u_vbuf_mgr { int nr_real_vertex_buffers; /* Precomputed max_index for hardware vertex buffers. */ - int max_index; + unsigned max_index; /* This uploader can optionally be used by the driver. * diff --git a/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c b/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c index 16b204df676..5027db4314e 100644 --- a/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c +++ b/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c @@ -655,7 +655,7 @@ init_zscan(struct vl_mpeg12_decoder *dec) static bool init_idct(struct vl_mpeg12_decoder *dec) { - struct pipe_sampler_view *matrix, *transpose; + struct pipe_sampler_view *matrix, *transpose = NULL; float matrix_scale, transpose_scale; dec->nr_of_idct_render_targets = dec->pipe->screen->get_param(dec->pipe->screen, PIPE_CAP_MAX_RENDER_TARGETS); diff --git a/src/gallium/docs/source/context.rst b/src/gallium/docs/source/context.rst index b0229c70f20..25a3245066c 100644 --- a/src/gallium/docs/source/context.rst +++ b/src/gallium/docs/source/context.rst @@ -179,16 +179,25 @@ the mode of the primitive and the vertices to be fetched, in the range between Every instance with instanceID in the range between ``start_instance`` and ``start_instance``+``instance_count``-1, inclusive, will be drawn. -All vertex indices must fall inside the range given by ``min_index`` and -``max_index``. In case non-indexed draw, ``min_index`` should be set to +If there is an index buffer bound, and ``indexed`` field is true, all vertex +indices will be looked up in the index buffer. + +In indexed draw, ``min_index`` and ``max_index`` respectively provide a lower +and upper bound of the indices contained in the index buffer inside the range +between ``start`` to ``start``+``count``-1. This allows the driver to +determine which subset of vertices will be referenced during te draw call +without having to scan the index buffer. Providing a over-estimation of the +the true bounds, for example, a ``min_index`` and ``max_index`` of 0 and +0xffffffff respectively, must give exactly the same rendering, albeit with less +performance due to unreferenced vertex buffers being unnecessarily DMA'ed or +processed. Providing a underestimation of the true bounds will result in +undefined behavior, but should not result in program or system failure. + +In case of non-indexed draw, ``min_index`` should be set to ``start`` and ``max_index`` should be set to ``start``+``count``-1. -``index_bias`` is a value added to every vertex index before fetching vertex -attributes. It does not affect ``min_index`` and ``max_index``. - -If there is an index buffer bound, and ``indexed`` field is true, all vertex -indices will be looked up in the index buffer. ``min_index``, ``max_index``, -and ``index_bias`` apply after index lookup. +``index_bias`` is a value added to every vertex index after lookup and before +fetching vertex attributes. When drawing indexed primitives, the primitive restart index can be used to draw disjoint primitive strips. For example, several separate diff --git a/src/gallium/docs/source/cso/rasterizer.rst b/src/gallium/docs/source/cso/rasterizer.rst index d547055096f..e10c16ed900 100644 --- a/src/gallium/docs/source/cso/rasterizer.rst +++ b/src/gallium/docs/source/cso/rasterizer.rst @@ -7,6 +7,30 @@ The rasterizer state controls the rendering of points, lines and triangles. Attributes include polygon culling state, line width, line stipple, multisample state, scissoring and flat/smooth shading. +Linkage + +clamp_vertex_color +^^^^^^^^^^^^^^^^^^ + +If set, TGSI_SEMANTIC_COLOR registers are clamped to the [0, 1] range after +the execution of the vertex shader, before being passed to the geometry +shader or fragment shader. + +OpenGL: glClampColor(GL_CLAMP_VERTEX_COLOR) in GL 3.0 or GL_ARB_color_buffer_float + +D3D11: seems always disabled + +clamp_fragment_color +^^^^^^^^^^^^^^^^^^^^ + +Controls whether TGSI_SEMANTIC_COLOR outputs of the fragment shader +are clamped to [0, 1]. + +OpenGL: glClampColor(GL_CLAMP_FRAGMENT_COLOR) in GL 3.0 or ARB_color_buffer_float + +D3D11: seems always disabled + + Shading ------- diff --git a/src/gallium/drivers/galahad/glhd_context.c b/src/gallium/drivers/galahad/glhd_context.c index 813a21e2ee3..f73d8a5d32e 100644 --- a/src/gallium/drivers/galahad/glhd_context.c +++ b/src/gallium/drivers/galahad/glhd_context.c @@ -685,6 +685,12 @@ galahad_resource_copy_region(struct pipe_context *_pipe, util_format_short_name(_dst->format)); } + if ((_src->target == PIPE_BUFFER && _dst->target != PIPE_BUFFER) || + (_src->target != PIPE_BUFFER && _dst->target == PIPE_BUFFER)) { + glhd_warn("Resource target mismatch: Source is %i, destination is %i", + _src->target, _dst->target); + } + pipe->resource_copy_region(pipe, dst, dst_level, diff --git a/src/gallium/drivers/i915/i915_screen.c b/src/gallium/drivers/i915/i915_screen.c index e62b609eb5a..0f4327fdc81 100644 --- a/src/gallium/drivers/i915/i915_screen.c +++ b/src/gallium/drivers/i915/i915_screen.c @@ -27,6 +27,7 @@ #include "draw/draw_context.h" +#include "util/u_format.h" #include "util/u_inlines.h" #include "util/u_memory.h" #include "util/u_string.h" @@ -285,6 +286,9 @@ i915_is_format_supported(struct pipe_screen *screen, const enum pipe_format *list; uint i; + if (!util_format_is_supported(format, tex_usage)) + return FALSE; + if (sample_count > 1) return FALSE; diff --git a/src/gallium/drivers/i915/i915_surface.c b/src/gallium/drivers/i915/i915_surface.c index d02c420f6c2..ac6e94500c8 100644 --- a/src/gallium/drivers/i915/i915_surface.c +++ b/src/gallium/drivers/i915/i915_surface.c @@ -37,6 +37,7 @@ #include "util/u_format.h" #include "util/u_memory.h" #include "util/u_pack_color.h" +#include "util/u_surface.h" /* * surface functions using the render engine @@ -51,6 +52,13 @@ i915_surface_copy_render(struct pipe_context *pipe, { struct i915_context *i915 = i915_context(pipe); + /* Fallback for buffers. */ + if (dst->target == PIPE_BUFFER && src->target == PIPE_BUFFER) { + util_resource_copy_region(pipe, dst, dst_level, dstx, dsty, dstz, + src, src_level, src_box); + return; + } + util_blitter_save_blend(i915->blitter, (void *)i915->blend); util_blitter_save_depth_stencil_alpha(i915->blitter, (void *)i915->depth_stencil); util_blitter_save_stencil_ref(i915->blitter, &i915->stencil_ref); @@ -158,6 +166,13 @@ i915_surface_copy_blitter(struct pipe_context *pipe, struct pipe_resource *spt = &src_tex->b.b; unsigned dst_offset, src_offset; /* in bytes */ + /* Fallback for buffers. */ + if (dst->target == PIPE_BUFFER && src->target == PIPE_BUFFER) { + util_resource_copy_region(pipe, dst, dst_level, dstx, dsty, dstz, + src, src_level, src_box); + return; + } + /* XXX cannot copy 3d regions at this time */ assert(src_box->depth == 1); if (dst->target != PIPE_TEXTURE_CUBE && diff --git a/src/gallium/drivers/i965/brw_screen.c b/src/gallium/drivers/i965/brw_screen.c index 25204fd088d..9178dfa8f69 100644 --- a/src/gallium/drivers/i965/brw_screen.c +++ b/src/gallium/drivers/i965/brw_screen.c @@ -26,6 +26,7 @@ **************************************************************************/ +#include "util/u_format.h" #include "util/u_inlines.h" #include "util/u_memory.h" #include "util/u_string.h" @@ -333,6 +334,9 @@ brw_is_format_supported(struct pipe_screen *screen, const enum pipe_format *list; uint i; + if (!util_format_is_supported(format, tex_usage)) + return FALSE; + if (sample_count > 1) return FALSE; diff --git a/src/gallium/drivers/llvmpipe/README b/src/gallium/drivers/llvmpipe/README deleted file mode 100644 index 1fc7746a834..00000000000 --- a/src/gallium/drivers/llvmpipe/README +++ /dev/null @@ -1,134 +0,0 @@ -LLVMPIPE -- a fork of softpipe that employs LLVM for code generation. - - -Requirements -============ - - - A x86 or amd64 processor. 64bit mode is preferred. - - Support for sse2 is strongly encouraged. Support for ssse3, and sse4.1 will - yield the most efficient code. The less features the CPU has the more - likely is that you ran into underperforming, buggy, or incomplete code. - - See /proc/cpuinfo to know what your CPU supports. - - - LLVM. Version 2.8 recommended. 2.6 or later required. - - For Linux, on a recent Debian based distribution do: - - aptitude install llvm-dev - - For Windows download pre-built MSVC 9.0 or MinGW binaries from - http://people.freedesktop.org/~jrfonseca/llvm/ and set the LLVM environment - variable to the extracted path. - - For MSVC there are two set of binaries: llvm-x.x-msvc32mt.7z and - llvm-x.x-msvc32mtd.7z . - - You have to set the LLVM=/path/to/llvm-x.x-msvc32mtd env var when passing - debug=yes to scons, and LLVM=/path/to/llvm-x.x-msvc32mt when building with - debug=no. This is necessary as LLVM builds as static library so the chosen - MS CRT must match. - - - scons (optional) - - -Building -======== - -To build everything on Linux invoke scons as: - - scons build=debug libgl-xlib - -Alternatively, you can build it with GNU make, if you prefer, by invoking it as - - make linux-llvm - -but the rest of these instructions assume that scons is used. - -For windows is everything the except except the winsys: - - scons build=debug libgl-gdi - -Using -===== - -On Linux, building will create a drop-in alternative for libGL.so into - - build/foo/gallium/targets/libgl-xlib/libGL.so - -To use it set the LD_LIBRARY_PATH environment variable accordingly. - -For performance evaluation pass debug=no to scons, and use the corresponding -lib directory without the "-debug" suffix. - -On Windows, building will create a drop-in alternative for opengl32.dll. To use -it put it in the same directory as the application. It can also be used by -replacing the native ICD driver, but it's quite an advanced usage, so if you -need to ask, don't even try it. - - -Profiling -========= - -To profile llvmpipe you should pass the options - - scons build=profile <same-as-before> - -This will ensure that frame pointers are used both in C and JIT functions, and -that no tail call optimizations are done by gcc. - - -To better profile JIT code you'll need to build LLVM with oprofile integration. - - ./configure \ - --prefix=$install_dir \ - --enable-optimized \ - --disable-profiling \ - --enable-targets=host-only \ - --with-oprofile - - make -C "$build_dir" - make -C "$build_dir" install - - find "$install_dir/lib" -iname '*.a' -print0 | xargs -0 strip --strip-debug - -The you should define - - export LLVM=/path/to/llvm-2.6-profile - -and rebuild. - - -Unit testing -============ - -Building will also create several unit tests in -build/linux-???-debug/gallium/drivers/llvmpipe: - - - lp_test_blend: blending - - lp_test_conv: SIMD vector conversion - - lp_test_format: pixel unpacking/packing - -Some of this tests can output results and benchmarks to a tab-separated-file -for posterior analysis, e.g.: - - build/linux-x86_64-debug/gallium/drivers/llvmpipe/lp_test_blend -o blend.tsv - - -Development Notes -================= - -- When looking to this code by the first time start in lp_state_fs.c, and - then skim through the lp_bld_* functions called in there, and the comments - at the top of the lp_bld_*.c functions. - -- The driver-independent parts of the LLVM / Gallium code are found in - src/gallium/auxiliary/gallivm/. The filenames and function prefixes - need to be renamed from "lp_bld_" to something else though. - -- We use LLVM-C bindings for now. They are not documented, but follow the C++ - interfaces very closely, and appear to be complete enough for code - generation. See - http://npcontemplation.blogspot.com/2008/06/secret-of-llvm-c-bindings.html - for a stand-alone example. See the llvm-c/Core.h file for reference. diff --git a/src/gallium/drivers/llvmpipe/lp_jit.c b/src/gallium/drivers/llvmpipe/lp_jit.c index 482a902dd23..268f0fa034b 100644 --- a/src/gallium/drivers/llvmpipe/lp_jit.c +++ b/src/gallium/drivers/llvmpipe/lp_jit.c @@ -54,6 +54,7 @@ lp_jit_create_types(struct llvmpipe_context *lp) elem_types[LP_JIT_TEXTURE_WIDTH] = elem_types[LP_JIT_TEXTURE_HEIGHT] = elem_types[LP_JIT_TEXTURE_DEPTH] = + elem_types[LP_JIT_TEXTURE_FIRST_LEVEL] = elem_types[LP_JIT_TEXTURE_LAST_LEVEL] = LLVMInt32TypeInContext(lc); elem_types[LP_JIT_TEXTURE_ROW_STRIDE] = elem_types[LP_JIT_TEXTURE_IMG_STRIDE] = @@ -81,6 +82,9 @@ lp_jit_create_types(struct llvmpipe_context *lp) LP_CHECK_MEMBER_OFFSET(struct lp_jit_texture, depth, gallivm->target, texture_type, LP_JIT_TEXTURE_DEPTH); + LP_CHECK_MEMBER_OFFSET(struct lp_jit_texture, first_level, + gallivm->target, texture_type, + LP_JIT_TEXTURE_FIRST_LEVEL); LP_CHECK_MEMBER_OFFSET(struct lp_jit_texture, last_level, gallivm->target, texture_type, LP_JIT_TEXTURE_LAST_LEVEL); diff --git a/src/gallium/drivers/llvmpipe/lp_jit.h b/src/gallium/drivers/llvmpipe/lp_jit.h index a6763dce17a..04e8dd5267b 100644 --- a/src/gallium/drivers/llvmpipe/lp_jit.h +++ b/src/gallium/drivers/llvmpipe/lp_jit.h @@ -50,6 +50,7 @@ struct lp_jit_texture uint32_t width; uint32_t height; uint32_t depth; + uint32_t first_level; uint32_t last_level; uint32_t row_stride[LP_MAX_TEXTURE_LEVELS]; uint32_t img_stride[LP_MAX_TEXTURE_LEVELS]; @@ -66,6 +67,7 @@ enum { LP_JIT_TEXTURE_WIDTH = 0, LP_JIT_TEXTURE_HEIGHT, LP_JIT_TEXTURE_DEPTH, + LP_JIT_TEXTURE_FIRST_LEVEL, LP_JIT_TEXTURE_LAST_LEVEL, LP_JIT_TEXTURE_ROW_STRIDE, LP_JIT_TEXTURE_IMG_STRIDE, diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c index 521a52ad3ae..036a6e0c379 100644 --- a/src/gallium/drivers/llvmpipe/lp_screen.c +++ b/src/gallium/drivers/llvmpipe/lp_screen.c @@ -166,6 +166,7 @@ llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param) return 0; case PIPE_CAP_TGSI_INSTANCEID: case PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR: + case PIPE_CAP_MIXED_COLORBUFFER_FORMATS: return 1; default: return 0; diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c index 3813e0ed972..c82ab821c7e 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup.c +++ b/src/gallium/drivers/llvmpipe/lp_setup.c @@ -653,6 +653,7 @@ lp_setup_set_fragment_sampler_views(struct lp_setup_context *setup, jit_tex->width = tex->width0; jit_tex->height = tex->height0; jit_tex->depth = tex->depth0; + jit_tex->first_level = view->u.tex.first_level; jit_tex->last_level = tex->last_level; /* We're referencing the texture's internal data, so save a @@ -663,7 +664,7 @@ lp_setup_set_fragment_sampler_views(struct lp_setup_context *setup, if (!lp_tex->dt) { /* regular texture - setup array of mipmap level pointers */ int j; - for (j = 0; j <= tex->last_level; j++) { + for (j = view->u.tex.first_level; j <= tex->last_level; j++) { jit_tex->data[j] = llvmpipe_get_texture_image_all(lp_tex, j, LP_TEX_USAGE_READ, LP_TEX_LAYOUT_LINEAR); @@ -677,6 +678,7 @@ lp_setup_set_fragment_sampler_views(struct lp_setup_context *setup, jit_tex->width = TILE_SIZE/8; jit_tex->height = TILE_SIZE/8; jit_tex->depth = 1; + jit_tex->first_level = 0; jit_tex->last_level = 0; jit_tex->row_stride[j] = 0; jit_tex->img_stride[j] = 0; diff --git a/src/gallium/drivers/llvmpipe/lp_state_sampler.c b/src/gallium/drivers/llvmpipe/lp_state_sampler.c index 1dd866195d3..df9fb89cc8e 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_sampler.c +++ b/src/gallium/drivers/llvmpipe/lp_state_sampler.c @@ -269,7 +269,7 @@ llvmpipe_prepare_vertex_sampling(struct llvmpipe_context *lp, if (!lp_tex->dt) { /* regular texture - setup array of mipmap level pointers */ int j; - for (j = 0; j <= tex->last_level; j++) { + for (j = view->u.tex.first_level; j <= tex->last_level; j++) { data[j] = llvmpipe_get_texture_image_all(lp_tex, j, LP_TEX_USAGE_READ, LP_TEX_LAYOUT_LINEAR); @@ -293,7 +293,7 @@ llvmpipe_prepare_vertex_sampling(struct llvmpipe_context *lp, draw_set_mapped_texture(lp->draw, i, tex->width0, tex->height0, tex->depth0, - tex->last_level, + view->u.tex.first_level, tex->last_level, row_stride, img_stride, data); } } diff --git a/src/gallium/drivers/llvmpipe/lp_surface.c b/src/gallium/drivers/llvmpipe/lp_surface.c index f49638acf08..1b5e9d055f5 100644 --- a/src/gallium/drivers/llvmpipe/lp_surface.c +++ b/src/gallium/drivers/llvmpipe/lp_surface.c @@ -67,6 +67,13 @@ lp_resource_copy(struct pipe_context *pipe, unsigned height = src_box->height; assert(src_box->depth == 1); + /* Fallback for buffers. */ + if (dst->target == PIPE_BUFFER && src->target == PIPE_BUFFER) { + util_resource_copy_region(pipe, dst, dst_level, dstx, dsty, dstz, + src, src_level, src_box); + return; + } + llvmpipe_flush_resource(pipe, dst, dst_level, dstz, FALSE, /* read_only */ diff --git a/src/gallium/drivers/llvmpipe/lp_tex_sample.c b/src/gallium/drivers/llvmpipe/lp_tex_sample.c index ed4282937f8..ccc139603ee 100644 --- a/src/gallium/drivers/llvmpipe/lp_tex_sample.c +++ b/src/gallium/drivers/llvmpipe/lp_tex_sample.c @@ -149,6 +149,7 @@ lp_llvm_texture_member(const struct lp_sampler_dynamic_state *base, LP_LLVM_TEXTURE_MEMBER(width, LP_JIT_TEXTURE_WIDTH, TRUE) LP_LLVM_TEXTURE_MEMBER(height, LP_JIT_TEXTURE_HEIGHT, TRUE) LP_LLVM_TEXTURE_MEMBER(depth, LP_JIT_TEXTURE_DEPTH, TRUE) +LP_LLVM_TEXTURE_MEMBER(first_level, LP_JIT_TEXTURE_FIRST_LEVEL, TRUE) LP_LLVM_TEXTURE_MEMBER(last_level, LP_JIT_TEXTURE_LAST_LEVEL, TRUE) LP_LLVM_TEXTURE_MEMBER(row_stride, LP_JIT_TEXTURE_ROW_STRIDE, FALSE) LP_LLVM_TEXTURE_MEMBER(img_stride, LP_JIT_TEXTURE_IMG_STRIDE, FALSE) @@ -219,6 +220,7 @@ lp_llvm_sampler_soa_create(const struct lp_sampler_static_state *static_state, sampler->dynamic_state.base.width = lp_llvm_texture_width; sampler->dynamic_state.base.height = lp_llvm_texture_height; sampler->dynamic_state.base.depth = lp_llvm_texture_depth; + sampler->dynamic_state.base.first_level = lp_llvm_texture_first_level; sampler->dynamic_state.base.last_level = lp_llvm_texture_last_level; sampler->dynamic_state.base.row_stride = lp_llvm_texture_row_stride; sampler->dynamic_state.base.img_stride = lp_llvm_texture_img_stride; diff --git a/src/gallium/drivers/noop/noop_pipe.c b/src/gallium/drivers/noop/noop_pipe.c index 496b7f5ec6d..18308b796f3 100644 --- a/src/gallium/drivers/noop/noop_pipe.c +++ b/src/gallium/drivers/noop/noop_pipe.c @@ -337,6 +337,7 @@ static int noop_get_param(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_TEXTURE_SHADOW_MAP: case PIPE_CAP_TEXTURE_SWIZZLE: case PIPE_CAP_BLEND_EQUATION_SEPARATE: + case PIPE_CAP_MIXED_COLORBUFFER_FORMATS: return 1; case PIPE_CAP_DUAL_SOURCE_BLEND: diff --git a/src/gallium/drivers/nv50/nv50_3d.xml.h b/src/gallium/drivers/nv50/nv50_3d.xml.h index 9bb3211728c..41a380ec2ec 100644 --- a/src/gallium/drivers/nv50/nv50_3d.xml.h +++ b/src/gallium/drivers/nv50/nv50_3d.xml.h @@ -558,7 +558,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NV50_3D_UNK0F8C 0x00000f8c -#define NV50_3D_UNK0F90 0x00000f90 +#define NV50_3D_COLOR_MASK_COMMON 0x00000f90 #define NV50_3D_UNK0F94 0x00000f94 @@ -1007,7 +1007,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NV50_3D_TEX_CACHE_CTL_UNK1__MASK 0x00000030 #define NV50_3D_TEX_CACHE_CTL_UNK1__SHIFT 4 -#define NV50_3D_UNK133C 0x0000133c +#define NV50_3D_BLEND_SEPARATE_ALPHA 0x0000133c #define NV50_3D_BLEND_EQUATION_RGB 0x00001340 #define NV50_3D_BLEND_EQUATION_RGB_FUNC_ADD 0x00008006 @@ -1033,7 +1033,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NV50_3D_BLEND_FUNC_DST_ALPHA 0x00001358 -#define NV50_3D_UNK135C 0x0000135c +#define NV50_3D_BLEND_ENABLE_COMMON 0x0000135c #define NV50_3D_BLEND_ENABLE(i0) (0x00001360 + 0x4*(i0)) #define NV50_3D_BLEND_ENABLE__ESIZE 0x00000004 @@ -1673,7 +1673,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NV50_3D_MAP_SEMANTIC_0_BFC0_ID__SHIFT 8 #define NV50_3D_MAP_SEMANTIC_0_COLR_NR__MASK 0x00ff0000 #define NV50_3D_MAP_SEMANTIC_0_COLR_NR__SHIFT 16 -#define NV50_3D_MAP_SEMANTIC_0_CLMP_EN 0xff000000 +#define NV50_3D_MAP_SEMANTIC_0_CLMP_EN 0x01000000 #define NV50_3D_MAP_SEMANTIC_1 0x00001908 #define NV50_3D_MAP_SEMANTIC_1_CLIP_START__MASK 0x000000ff @@ -1706,7 +1706,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NV50_3D_CULL_FACE_BACK 0x00000405 #define NV50_3D_CULL_FACE_FRONT_AND_BACK 0x00000408 -#define NV50_3D_UNK1924 0x00001924 +#define NV50_3D_LINE_LAST_PIXEL 0x00001924 #define NVA3_3D_FP_MULTISAMPLE 0x00001928 #define NVA3_3D_FP_MULTISAMPLE_EXPORT_SAMPLE_MASK 0x00000001 diff --git a/src/gallium/drivers/nv50/nv50_context.c b/src/gallium/drivers/nv50/nv50_context.c index 930cee7c1e7..632ca4daf74 100644 --- a/src/gallium/drivers/nv50/nv50_context.c +++ b/src/gallium/drivers/nv50/nv50_context.c @@ -46,6 +46,17 @@ nv50_flush(struct pipe_context *pipe, FIRE_RING(screen->channel); } +static void +nv50_texture_barrier(struct pipe_context *pipe) +{ + struct nouveau_channel *chan = nv50_context(pipe)->screen->base.channel; + + BEGIN_RING(chan, RING_3D(SERIALIZE), 1); + OUT_RING (chan, 0); + BEGIN_RING(chan, RING_3D(TEX_CACHE_CTL), 1); + OUT_RING (chan, 0x20); +} + void nv50_default_flush_notify(struct nouveau_channel *chan) { @@ -125,6 +136,7 @@ nv50_create(struct pipe_screen *pscreen, void *priv) pipe->clear = nv50_clear; pipe->flush = nv50_flush; + pipe->texture_barrier = nv50_texture_barrier; if (!screen->cur_ctx) screen->cur_ctx = nv50; diff --git a/src/gallium/drivers/nv50/nv50_context.h b/src/gallium/drivers/nv50/nv50_context.h index 46e6c2250af..3f031994f0a 100644 --- a/src/gallium/drivers/nv50/nv50_context.h +++ b/src/gallium/drivers/nv50/nv50_context.h @@ -1,7 +1,6 @@ #ifndef __NV50_CONTEXT_H__ #define __NV50_CONTEXT_H__ -#include <stdio.h> #include "pipe/p_context.h" #include "pipe/p_defines.h" #include "pipe/p_state.h" @@ -13,6 +12,7 @@ #include "draw/draw_vertex.h" +#include "nv50_debug.h" #include "nv50_winsys.h" #include "nv50_stateobj.h" #include "nv50_screen.h" @@ -26,15 +26,6 @@ #include "nv50_3d.xml.h" #include "nv50_2d.xml.h" -#define NOUVEAU_ERR(fmt, args...) \ - fprintf(stderr, "%s:%d - "fmt, __FUNCTION__, __LINE__, ##args); - -#ifdef NOUVEAU_DEBUG -# define NOUVEAU_DBG(args...) printf(args); -#else -# define NOUVEAU_DBG(args...) -#endif - #define NV50_NEW_BLEND (1 << 0) #define NV50_NEW_RASTERIZER (1 << 1) #define NV50_NEW_ZSA (1 << 2) @@ -80,6 +71,8 @@ struct nv50_context { uint32_t instance_elts; /* bitmask of per-instance elements */ uint32_t instance_base; uint32_t interpolant_ctrl; + uint32_t semantic_color; + uint32_t semantic_psize; int32_t index_bias; boolean prim_restart; boolean point_sprite; @@ -183,7 +176,7 @@ void nv50_fragprog_validate(struct nv50_context *); void nv50_fp_linkage_validate(struct nv50_context *); void nv50_gp_linkage_validate(struct nv50_context *); void nv50_constbufs_validate(struct nv50_context *); -void nv50_sprite_coords_validate(struct nv50_context *); +void nv50_validate_derived_rs(struct nv50_context *); /* nv50_state.c */ extern void nv50_init_state_functions(struct nv50_context *); diff --git a/src/gallium/drivers/nv50/nv50_debug.h b/src/gallium/drivers/nv50/nv50_debug.h new file mode 100644 index 00000000000..f3dee621519 --- /dev/null +++ b/src/gallium/drivers/nv50/nv50_debug.h @@ -0,0 +1,25 @@ + +#ifndef __NV50_DEBUG_H__ +#define __NV50_DEBUG_H__ + +#include <stdio.h> + +#include "util/u_debug.h" + +#define NV50_DEBUG_MISC 0x0001 +#define NV50_DEBUG_SHADER 0x0100 +#define NV50_DEBUG_PROG_IR 0x0200 +#define NV50_DEBUG_PROG_RA 0x0400 +#define NV50_DEBUG_PROG_CFLOW 0x0800 +#define NV50_DEBUG_PROG_ALL 0x1f00 + +#define NV50_DEBUG 0 + +#define NOUVEAU_ERR(fmt, args...) \ + fprintf(stderr, "%s:%d - "fmt, __FUNCTION__, __LINE__, ##args) + +#define NV50_DBGMSG(ch, args...) \ + if ((NV50_DEBUG) & (NV50_DEBUG_##ch)) \ + debug_printf(args) + +#endif /* __NV50_DEBUG_H__ */ diff --git a/src/gallium/drivers/nv50/nv50_formats.c b/src/gallium/drivers/nv50/nv50_formats.c index 7946117cf30..c65189d0671 100644 --- a/src/gallium/drivers/nv50/nv50_formats.c +++ b/src/gallium/drivers/nv50/nv50_formats.c @@ -93,6 +93,10 @@ const struct nv50_format nv50_format_table[PIPE_FORMAT_COUNT] = B_(C2, C1, C0, C3, UNORM, UNORM, UNORM, UNORM, 4_4_4_4, 1), SAMPLER_VIEW }, + [PIPE_FORMAT_B4G4R4X4_UNORM] = { 0, + B_(C2, C1, C0, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 4_4_4_4, 1), + SAMPLER_VIEW }, + [PIPE_FORMAT_R10G10B10A2_UNORM] = { NV50_SURFACE_FORMAT_A2B10G10R10_UNORM, A_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, 2_10_10_10, 0), SAMPLER_VIEW | RENDER_TARGET | VERTEX_BUFFER | SCANOUT }, @@ -138,14 +142,62 @@ const struct nv50_format nv50_format_table[PIPE_FORMAT_COUNT] = A_(C0, C0, C0, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8, 0), SAMPLER_VIEW | RENDER_TARGET }, - [PIPE_FORMAT_I8_UNORM] = { NV50_SURFACE_FORMAT_R8_UNORM, - A_(C0, C0, C0, C0, UNORM, UNORM, UNORM, UNORM, 8, 0), + [PIPE_FORMAT_L16_SNORM] = { NV50_SURFACE_FORMAT_R16_SNORM, + B_(C0, C0, C0, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 16, 0), + SAMPLER_VIEW | RENDER_TARGET }, + + [PIPE_FORMAT_L16_FLOAT] = { NV50_SURFACE_FORMAT_R16_FLOAT, + B_(C0, C0, C0, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 16, 0), SAMPLER_VIEW | RENDER_TARGET }, + [PIPE_FORMAT_L32_FLOAT] = { NV50_SURFACE_FORMAT_R32_FLOAT, + B_(C0, C0, C0, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 32, 0), + SAMPLER_VIEW | RENDER_TARGET }, + + [PIPE_FORMAT_I8_UNORM] = { 0, + A_(C0, C0, C0, C0, UNORM, UNORM, UNORM, UNORM, 8, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_I16_UNORM] = { NV50_SURFACE_FORMAT_R16_UNORM, + A_(C0, C0, C0, C0, UNORM, UNORM, UNORM, UNORM, 16, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_I16_SNORM] = { NV50_SURFACE_FORMAT_R16_SNORM, + B_(C0, C0, C0, C0, SNORM, SNORM, SNORM, SNORM, 16, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_I16_FLOAT] = { NV50_SURFACE_FORMAT_R16_FLOAT, + B_(C0, C0, C0, C0, FLOAT, FLOAT, FLOAT, FLOAT, 16, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_I32_FLOAT] = { NV50_SURFACE_FORMAT_R32_FLOAT, + B_(C0, C0, C0, C0, FLOAT, FLOAT, FLOAT, FLOAT, 32, 0), + SAMPLER_VIEW }, + [PIPE_FORMAT_A8_UNORM] = { NV50_SURFACE_FORMAT_A8_UNORM, A_(ZERO, ZERO, ZERO, C0, UNORM, UNORM, UNORM, UNORM, 8, 0), SAMPLER_VIEW | RENDER_TARGET }, + [PIPE_FORMAT_A8_SNORM] = { 0, + A_(ZERO, ZERO, ZERO, C0, SNORM, SNORM, SNORM, SNORM, 8, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_A16_UNORM] = { 0, + A_(ZERO, ZERO, ZERO, C0, UNORM, UNORM, UNORM, UNORM, 16, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_A16_SNORM] = { 0, + A_(ZERO, ZERO, ZERO, C0, SNORM, SNORM, SNORM, SNORM, 16, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_A16_FLOAT] = { 0, + B_(ZERO, ZERO, ZERO, C0, FLOAT, FLOAT, FLOAT, FLOAT, 16, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_A32_FLOAT] = { 0, + B_(ZERO, ZERO, ZERO, C0, FLOAT, FLOAT, FLOAT, FLOAT, 32, 0), + SAMPLER_VIEW }, + [PIPE_FORMAT_L8A8_UNORM] = { 0, A_(C0, C0, C0, C1, UNORM, UNORM, UNORM, UNORM, 8_8, 0), SAMPLER_VIEW }, @@ -154,6 +206,26 @@ const struct nv50_format nv50_format_table[PIPE_FORMAT_COUNT] = A_(C0, C0, C0, C1, UNORM, UNORM, UNORM, UNORM, 8_8, 0), SAMPLER_VIEW }, + [PIPE_FORMAT_L16A16_UNORM] = { 0, + A_(C0, C0, C0, C1, UNORM, UNORM, UNORM, UNORM, 16_16, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_L16A16_SNORM] = { 0, + A_(C0, C0, C0, C1, SNORM, SNORM, SNORM, SNORM, 16_16, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_L16A16_FLOAT] = { 0, + B_(C0, C0, C0, C1, FLOAT, FLOAT, FLOAT, FLOAT, 16_16, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_L32A32_FLOAT] = { 0, + B_(C0, C0, C0, C1, FLOAT, FLOAT, FLOAT, FLOAT, 32_32, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_L4A4_UNORM] = { 0, + B_(C0, C0, C0, C1, UNORM, UNORM, UNORM, UNORM, 4_4, 0), + SAMPLER_VIEW }, + /* DXT, RGTC */ [PIPE_FORMAT_DXT1_RGB] = { 0, @@ -172,6 +244,22 @@ const struct nv50_format nv50_format_table[PIPE_FORMAT_COUNT] = B_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, DXT5, 0), SAMPLER_VIEW }, + [PIPE_FORMAT_DXT1_SRGB] = { 0, + B_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, DXT1, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_DXT1_SRGBA] = { 0, + B_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, DXT1, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_DXT3_SRGBA] = { 0, + B_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, DXT3, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_DXT5_SRGBA] = { 0, + B_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, DXT5, 0), + SAMPLER_VIEW }, + [PIPE_FORMAT_RGTC1_UNORM] = { 0, B_(C0, ZERO, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, RGTC1, 0), SAMPLER_VIEW }, @@ -237,7 +325,7 @@ const struct nv50_format nv50_format_table[PIPE_FORMAT_COUNT] = /* SNORM 32 */ [PIPE_FORMAT_R32G32B32A32_SNORM] = { 0, - A_(C0, C1, C2, C3, FLOAT, FLOAT, FLOAT, FLOAT, 32_32_32_32, 0), + A_(C0, C1, C2, C3, SNORM, SNORM, SNORM, SNORM, 32_32_32_32, 0), VERTEX_BUFFER | SAMPLER_VIEW }, [PIPE_FORMAT_R32G32B32_SNORM] = { 0, @@ -255,7 +343,7 @@ const struct nv50_format nv50_format_table[PIPE_FORMAT_COUNT] = /* UNORM 32 */ [PIPE_FORMAT_R32G32B32A32_UNORM] = { 0, - A_(C0, C1, C2, C3, FLOAT, FLOAT, FLOAT, FLOAT, 32_32_32_32, 0), + A_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, 32_32_32_32, 0), VERTEX_BUFFER | SAMPLER_VIEW }, [PIPE_FORMAT_R32G32B32_UNORM] = { 0, @@ -281,7 +369,7 @@ const struct nv50_format nv50_format_table[PIPE_FORMAT_COUNT] = VERTEX_BUFFER | SAMPLER_VIEW }, [PIPE_FORMAT_R16G16_SNORM] = { NV50_SURFACE_FORMAT_R16G16_SNORM, - A_(C0, C1, C2, C3, SNORM, SNORM, SNORM, SNORM, 16_16, 0), + A_(C0, C1, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 16_16, 0), VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET }, [PIPE_FORMAT_R16_SNORM] = { NV50_SURFACE_FORMAT_R16_SNORM, @@ -299,7 +387,7 @@ const struct nv50_format nv50_format_table[PIPE_FORMAT_COUNT] = VERTEX_BUFFER | SAMPLER_VIEW }, [PIPE_FORMAT_R16G16_UNORM] = { NV50_SURFACE_FORMAT_R16G16_UNORM, - A_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, 16_16, 0), + A_(C0, C1, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 16_16, 0), VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET }, [PIPE_FORMAT_R16_UNORM] = { NV50_SURFACE_FORMAT_R16_UNORM, @@ -457,4 +545,30 @@ const struct nv50_format nv50_format_table[PIPE_FORMAT_COUNT] = [PIPE_FORMAT_R8_USCALED] = { 0, A_(C0, ZERO, ZERO, ONE_FLOAT, USCALED, USCALED, USCALED, USCALED, 8, 0), VERTEX_BUFFER }, + + /* OTHER FORMATS */ + + [PIPE_FORMAT_R8G8_B8G8_UNORM] = { 0, + B_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, C1_C2_C1_C0, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_G8R8_G8B8_UNORM] = { 0, + B_(C0, C1, C2, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, C2_C1_C0_C1, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_R8SG8SB8UX8U_NORM] = { 0, + B_(C0, C1, C2, ONE_FLOAT, SNORM, SNORM, UNORM, UNORM, 8_8_8_8, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_R5SG5SB6U_NORM] = { 0, + B_(C0, C1, C2, ONE_FLOAT, SNORM, SNORM, UNORM, UNORM, 6_5_5, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_R1_UNORM] = { 0, + B_(C0, ZERO, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, BITMAP_8X8, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_A8B8G8R8_UNORM] = { 0, + B_(C3, C2, C1, C0, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 0), + SAMPLER_VIEW }, }; diff --git a/src/gallium/drivers/nv50/nv50_pc.c b/src/gallium/drivers/nv50/nv50_pc.c index 82f1b846527..7900bf811df 100644 --- a/src/gallium/drivers/nv50/nv50_pc.c +++ b/src/gallium/drivers/nv50/nv50_pc.c @@ -20,8 +20,6 @@ * SOFTWARE. */ -/* #define NV50PC_DEBUG */ - #include "nv50_pc.h" #include "nv50_program.h" @@ -180,6 +178,7 @@ nv50_op_can_write_flags(uint opcode) switch (opcode) { /* obvious ones like KIL, CALL, etc. not included */ case NV_OP_PHI: case NV_OP_MOV: + case NV_OP_SELECT: case NV_OP_LINTERP: case NV_OP_PINTERP: case NV_OP_LDA: @@ -367,7 +366,7 @@ nv_print_program(struct nv_pc *pc) nv_print_function(pc->root[i]); } -#ifdef NV50PC_DEBUG +#if NV50_DEBUG & NV50_DEBUG_PROG_CFLOW static void nv_do_print_cfgraph(struct nv_pc *pc, FILE *f, struct nv_basic_block *b) { @@ -425,7 +424,7 @@ nv_print_cfgraph(struct nv_pc *pc, const char *filepath, int subr) fclose(f); } -#endif +#endif /* NV50_DEBUG_PROG_CFLOW */ static INLINE void nvcg_show_bincode(struct nv_pc *pc) @@ -446,7 +445,7 @@ nv50_emit_program(struct nv_pc *pc) uint32_t *code = pc->emit; int n; - NV50_DBGMSG("emitting program: size = %u\n", pc->bin_size); + NV50_DBGMSG(SHADER, "emitting program: size = %u\n", pc->bin_size); for (n = 0; n < pc->num_blocks; ++n) { struct nv_instruction *i; @@ -472,7 +471,7 @@ nv50_emit_program(struct nv_pc *pc) pc->emit = code; code[pc->bin_size / 4 - 1] |= 1; -#ifdef NV50PC_DEBUG +#if NV50_DEBUG & NV50_DEBUG_SHADER nvcg_show_bincode(pc); #endif @@ -500,7 +499,7 @@ nv50_generate_code(struct nv50_translation_info *ti) ret = nv50_tgsi_to_nc(pc, ti); if (ret) goto out; -#ifdef NV50PC_DEBUG +#if NV50_DEBUG & NV50_DEBUG_PROG_IR nv_print_program(pc); #endif @@ -510,7 +509,7 @@ nv50_generate_code(struct nv50_translation_info *ti) ret = nv_pc_exec_pass0(pc); if (ret) goto out; -#ifdef NV50PC_DEBUG +#if NV50_DEBUG & NV50_DEBUG_PROG_IR nv_print_program(pc); #endif @@ -518,7 +517,7 @@ nv50_generate_code(struct nv50_translation_info *ti) ret = nv_pc_exec_pass1(pc); if (ret) goto out; -#ifdef NV50PC_DEBUG +#if NV50_DEBUG & NV50_DEBUG_PROG_CFLOW nv_print_program(pc); nv_print_cfgraph(pc, "nv50_shader_cfgraph.dot", 0); #endif @@ -552,7 +551,7 @@ nv50_generate_code(struct nv50_translation_info *ti) ti->p->uses_lmem = ti->store_to_memory; - NV50_DBGMSG("SHADER TRANSLATION - %s\n", ret ? "failure" : "success"); + NV50_DBGMSG(SHADER, "SHADER TRANSLATION - %s\n", ret ? "failed" : "success"); out: nv_pc_free_refs(pc); @@ -624,6 +623,9 @@ nvbb_insert_tail(struct nv_basic_block *b, struct nv_instruction *i) i->bb = b; b->num_instructions++; + + if (i->prev && i->prev->is_terminator) + nv_nvi_permute(i->prev, i); } void @@ -669,7 +671,7 @@ nv_nvi_delete(struct nv_instruction *nvi) if (nvi == b->phi) { if (nvi->opcode != NV_OP_PHI) - NV50_DBGMSG("NOTE: b->phi points to non-PHI instruction\n"); + NV50_DBGMSG(PROG_IR, "NOTE: b->phi points to non-PHI instruction\n"); assert(!nvi->prev); if (!nvi->next || nvi->next->opcode != NV_OP_PHI) diff --git a/src/gallium/drivers/nv50/nv50_pc.h b/src/gallium/drivers/nv50/nv50_pc.h index e6f3815bafe..5bb0e1296bb 100644 --- a/src/gallium/drivers/nv50/nv50_pc.h +++ b/src/gallium/drivers/nv50/nv50_pc.h @@ -23,13 +23,7 @@ #ifndef __NV50_COMPILER_H__ #define __NV50_COMPILER_H__ -#define NV50PC_DEBUG - -#ifdef NV50PC_DEBUG -# define NV50_DBGMSG(args...) debug_printf(args) -#else -# define NV50_DBGMSG(args...) -#endif +#include "nv50_debug.h" #include "pipe/p_defines.h" #include "util/u_inlines.h" @@ -228,6 +222,8 @@ struct nv_ref { ubyte flags; /* not used yet */ }; +#define NV_REF_FLAG_REGALLOC_PRIV (1 << 0) + struct nv_basic_block; struct nv_instruction { @@ -263,6 +259,15 @@ struct nv_instruction { ubyte quadop; }; +static INLINE int +nvi_vector_size(struct nv_instruction *nvi) +{ + int i; + assert(nvi); + for (i = 0; i < 4 && nvi->def[i]; ++i); + return i; +} + #define CFG_EDGE_FORWARD 0 #define CFG_EDGE_BACK 1 #define CFG_EDGE_LOOP_ENTER 2 diff --git a/src/gallium/drivers/nv50/nv50_pc_optimize.c b/src/gallium/drivers/nv50/nv50_pc_optimize.c index 281ccf7ac61..d72b23c137a 100644 --- a/src/gallium/drivers/nv50/nv50_pc_optimize.c +++ b/src/gallium/drivers/nv50/nv50_pc_optimize.c @@ -20,8 +20,6 @@ * SOFTWARE. */ -/* #define NV50PC_DEBUG */ - #include "nv50_pc.h" #define DESCEND_ARBITRARY(j, f) \ @@ -116,7 +114,7 @@ nvi_isnop(struct nv_instruction *nvi) return FALSE; if (nvi->src[0]->value->join->reg.id < 0) { - NV50_DBGMSG("nvi_isnop: orphaned value detected\n"); + NV50_DBGMSG(PROG_IR, "nvi_isnop: orphaned value detected\n"); return TRUE; } @@ -201,7 +199,7 @@ nv_pc_pass_pre_emission(void *priv, struct nv_basic_block *b) } if (!b->entry) { - NV50_DBGMSG("block %p is now empty\n", b); + NV50_DBGMSG(PROG_IR, "block %p is now empty\n", b); } else if (!b->exit->is_long) { assert(n32); @@ -240,7 +238,7 @@ nv_pc_exec_pass2(struct nv_pc *pc) { int i, ret; - NV50_DBGMSG("preparing %u blocks for emission\n", pc->num_blocks); + NV50_DBGMSG(PROG_IR, "preparing %u blocks for emission\n", pc->num_blocks); pc->num_blocks = 0; /* will reorder bb_list */ @@ -966,7 +964,8 @@ nv_pass_flatten(struct nv_pass *ctx, struct nv_basic_block *b) if (bb_is_if_else_endif(b)) { - NV50_DBGMSG("pass_flatten: IF/ELSE/ENDIF construct at BB:%i\n", b->id); + NV50_DBGMSG(PROG_IR, + "pass_flatten: IF/ELSE/ENDIF construct at BB:%i\n", b->id); for (n0 = 0, nvi = b->out[0]->entry; nvi; nvi = nvi->next, ++n0) if (!nv50_nvi_can_predicate(nvi)) @@ -975,7 +974,7 @@ nv_pass_flatten(struct nv_pass *ctx, struct nv_basic_block *b) for (n1 = 0, nvi = b->out[1]->entry; nvi; nvi = nvi->next, ++n1) if (!nv50_nvi_can_predicate(nvi)) break; -#ifdef NV50PC_DEBUG +#if NV50_DEBUG & NV50_DEBUG_PROG_IR if (nvi) { debug_printf("cannot predicate: "); nv_print_instruction(nvi); } diff --git a/src/gallium/drivers/nv50/nv50_pc_regalloc.c b/src/gallium/drivers/nv50/nv50_pc_regalloc.c index 39ae36681c0..e79fd594cea 100644 --- a/src/gallium/drivers/nv50/nv50_pc_regalloc.c +++ b/src/gallium/drivers/nv50/nv50_pc_regalloc.c @@ -20,11 +20,11 @@ * SOFTWARE. */ -/* #define NV50PC_DEBUG */ - -/* #define NV50_RA_DEBUG_LIVEI */ -/* #define NV50_RA_DEBUG_LIVE_SETS */ -/* #define NV50_RA_DEBUG_JOIN */ +#if NV50_DEBUG & NV50_DEBUG_PROG_RA +# define NV50_RA_DEBUG_LIVEI +# define NV50_RA_DEBUG_LIVE_SETS +# define NV50_RA_DEBUG_JOIN +#endif #include "nv50_context.h" #include "nv50_pc.h" @@ -32,14 +32,39 @@ #include "util/u_simple_list.h" #define NUM_REGISTER_FILES 4 +#define MAX_REGISTER_COUNT 256 struct register_set { struct nv_pc *pc; uint32_t last[NUM_REGISTER_FILES]; - uint32_t bits[NUM_REGISTER_FILES][8]; + uint32_t bits[NUM_REGISTER_FILES][(MAX_REGISTER_COUNT + 31) / 32]; }; +/* using OR because a set bit means occupied/unavailable, aliasing is allowed */ +static void +intersect_register_sets(struct register_set *dst, + struct register_set *src1, struct register_set *src2) +{ + int i, j; + + for (i = 0; i < NUM_REGISTER_FILES; ++i) { + for (j = 0; j < (MAX_REGISTER_COUNT + 31) / 32; ++j) + dst->bits[i][j] = src1->bits[i][j] | src2->bits[i][j]; + } +} + +static void +mask_register_set(struct register_set *set, uint32_t mask, uint32_t umask) +{ + int i, j; + + for (i = 0; i < NUM_REGISTER_FILES; ++i) { + for (j = 0; j < (MAX_REGISTER_COUNT + 31) / 32; ++j) + set->bits[i][j] = (set->bits[i][j] | mask) & umask; + } +} + struct nv_pc_pass { struct nv_pc *pc; @@ -61,11 +86,15 @@ ranges_coalesce(struct nv_range *range) } } +/* @return: TRUE if @new_range can be freed (i.e. was not reused) */ static boolean add_range_ex(struct nv_value *val, int bgn, int end, struct nv_range *new_range) { struct nv_range *range, **nextp = &val->livei; + if (bgn == end) /* [a, a) is invalid / empty */ + return TRUE; + for (range = val->livei; range; range = range->next) { if (end < range->bgn) break; /* insert before */ @@ -251,6 +280,8 @@ reg_occupy(struct register_set *set, struct nv_value *val) id <<= s; m = (1 << (1 << s)) - 1; + assert(s >= 0); /* XXX: remove me */ + set->bits[f][id / 32] |= m << (id % 32); if (set->pc->max_reg[f] < id) @@ -286,15 +317,12 @@ join_allowed(struct nv_pc_pass *ctx, struct nv_value *a, struct nv_value *b) if (a->join->reg.id == b->join->reg.id) return TRUE; -#if 1 /* either a or b or both have been assigned */ if (a->join->reg.id >= 0 && b->join->reg.id >= 0) return FALSE; else if (b->join->reg.id >= 0) { - if (a->join->reg.id >= 0) - return FALSE; val = a; a = b; b = val; @@ -309,8 +337,6 @@ join_allowed(struct nv_pc_pass *ctx, struct nv_value *a, struct nv_value *b) return FALSE; } return TRUE; -#endif - return FALSE; } static INLINE void @@ -336,14 +362,14 @@ do_join_values(struct nv_pc_pass *ctx, struct nv_value *a, struct nv_value *b) assert(b->join == a->join); } -static INLINE void +static INLINE boolean try_join_values(struct nv_pc_pass *ctx, struct nv_value *a, struct nv_value *b) { if (!join_allowed(ctx, a, b)) { #ifdef NV50_RA_DEBUG_JOIN debug_printf("cannot join %i to %i: not allowed\n", b->n, a->n); #endif - return; + return FALSE; } if (livei_have_overlap(a->join, b->join)) { #ifdef NV50_RA_DEBUG_JOIN @@ -351,10 +377,27 @@ try_join_values(struct nv_pc_pass *ctx, struct nv_value *a, struct nv_value *b) livei_print(a); livei_print(b); #endif - return; + return FALSE; } do_join_values(ctx, a, b); + + return TRUE; +} + +static void +join_values_nofail(struct nv_pc_pass *ctx, + struct nv_value *a, struct nv_value *b, boolean type_only) +{ + if (type_only) { + assert(join_allowed(ctx, a, b)); + do_join_values(ctx, a, b); + } else { + boolean ok = try_join_values(ctx, a, b); + if (!ok) { + NOUVEAU_ERR("failed to coalesce values\n"); + } + } } static INLINE boolean @@ -369,20 +412,32 @@ need_new_else_block(struct nv_basic_block *b, struct nv_basic_block *p) return (b->num_in > 1) && (n == 2); } +/* Look for the @phi's operand whose definition reaches @b. */ static int phi_opnd_for_bb(struct nv_instruction *phi, struct nv_basic_block *b, struct nv_basic_block *tb) { + struct nv_ref *srci, *srcj; int i, j; - for (j = -1, i = 0; i < 4 && phi->src[i]; ++i) { - if (!nvbb_reachable_by(b, phi->src[i]->value->insn->bb, tb)) + for (j = -1, i = 0; i < 6 && phi->src[i]; ++i) { + srci = phi->src[i]; + /* if already replaced, check with original source first */ + if (srci->flags & NV_REF_FLAG_REGALLOC_PRIV) + srci = srci->value->insn->src[0]; + if (!nvbb_reachable_by(b, srci->value->insn->bb, NULL)) continue; /* NOTE: back-edges are ignored by the reachable-by check */ - if (j < 0 || !nvbb_reachable_by(phi->src[j]->value->insn->bb, - phi->src[i]->value->insn->bb, tb)) + if (j < 0 || !nvbb_reachable_by(srcj->value->insn->bb, + srci->value->insn->bb, NULL)) { j = i; + srcj = srci; + } } + if (j >= 0 && nvbb_reachable_by(b, phi->def[0]->insn->bb, NULL)) + if (!nvbb_reachable_by(srcj->value->insn->bb, + phi->def[0]->insn->bb, NULL)) + j = -1; return j; } @@ -429,16 +484,21 @@ pass_generate_phi_movs(struct nv_pc_pass *ctx, struct nv_basic_block *b) ctx->pc->current_block = pn; for (i = b->phi; i && i->opcode == NV_OP_PHI; i = i->next) { - if ((j = phi_opnd_for_bb(i, p, b)) < 0) - continue; - val = i->src[j]->value; - - if (i->src[j]->flags) { - val = val->insn->src[0]->value; - while (j < 4 && i->src[j]) - ++j; - assert(j < 4); + j = phi_opnd_for_bb(i, p, b); + + if (j < 0) { + val = i->def[0]; + } else { + val = i->src[j]->value; + if (i->src[j]->flags & NV_REF_FLAG_REGALLOC_PRIV) { + j = -1; + /* use original value, we already encountered & replaced it */ + val = val->insn->src[0]->value; + } } + if (j < 0) /* need an additional source ? */ + for (j = 0; j < 5 && i->src[j] && i->src[j]->value != val; ++j); + assert(j < 5); ni = new_instruction(ctx->pc, NV_OP_MOV); @@ -452,11 +512,13 @@ pass_generate_phi_movs(struct nv_pc_pass *ctx, struct nv_basic_block *b) nv_reference(ctx->pc, &i->src[j], ni->def[0]); - i->src[j]->flags = 1; + i->src[j]->flags |= NV_REF_FLAG_REGALLOC_PRIV; } if (pn != p && pn->exit) { - ctx->pc->current_block = b->in[n ? 0 : 1]; + assert(!b->in[!n]->exit || b->in[!n]->exit->is_terminator); + /* insert terminator (branch to ENDIF) in new else block */ + ctx->pc->current_block = pn; ni = new_instruction(ctx->pc, NV_OP_BRA); ni->target = b; ni->is_terminator = 1; @@ -470,45 +532,50 @@ pass_generate_phi_movs(struct nv_pc_pass *ctx, struct nv_basic_block *b) return 0; } +#define JOIN_MASK_PHI (1 << 0) +#define JOIN_MASK_SELECT (1 << 1) +#define JOIN_MASK_MOV (1 << 2) +#define JOIN_MASK_TEX (1 << 3) + static int -pass_join_values(struct nv_pc_pass *ctx, int iter) +pass_join_values(struct nv_pc_pass *ctx, unsigned mask) { int c, n; for (n = 0; n < ctx->num_insns; ++n) { - struct nv_instruction *i = ctx->insns[n]; + struct nv_instruction *nvi, *i = ctx->insns[n]; switch (i->opcode) { case NV_OP_PHI: - if (iter != 2) + if (!(mask & JOIN_MASK_PHI)) break; - for (c = 0; c < 4 && i->src[c]; ++c) - try_join_values(ctx, i->def[0], i->src[c]->value); + for (c = 0; c < 5 && i->src[c]; ++c) + join_values_nofail(ctx, i->def[0], i->src[c]->value, FALSE); break; case NV_OP_MOV: - if ((iter == 2) && i->src[0]->value->insn && - !nv_is_vector_op(i->src[0]->value->join->insn->opcode)) + if (!(mask & JOIN_MASK_MOV)) + break; + nvi = i->src[0]->value->join->insn; + if (nvi && !nv_is_vector_op(nvi->opcode)) try_join_values(ctx, i->def[0], i->src[0]->value); break; case NV_OP_SELECT: - if (iter != 1) + if (!(mask & JOIN_MASK_SELECT)) break; - for (c = 0; c < 4 && i->src[c]; ++c) { - assert(join_allowed(ctx, i->def[0], i->src[c]->value)); - do_join_values(ctx, i->def[0], i->src[c]->value); - } + for (c = 0; c < 5 && i->src[c]; ++c) + join_values_nofail(ctx, i->def[0], i->src[c]->value, TRUE); break; case NV_OP_TEX: case NV_OP_TXB: case NV_OP_TXL: case NV_OP_TXQ: - if (iter) + if (!(mask & JOIN_MASK_TEX)) break; - for (c = 0; c < 4; ++c) { - if (!i->src[c]) - break; - do_join_values(ctx, i->def[c], i->src[c]->value); - } + /* This should work without conflicts because we always generate + * extra MOVs for the sources of a TEX. + */ + for (c = 0; c < 4 && i->src[c]; ++c) + join_values_nofail(ctx, i->def[c], i->src[c]->value, TRUE); break; default: break; @@ -643,15 +710,15 @@ static void collect_live_values(struct nv_basic_block *b, const int n) { int i; - if (b->out[0]) { - if (b->out[1]) { /* what to do about back-edges ? */ + if (b->out[0] && b->out_kind[0] != CFG_EDGE_FAKE) { + if (b->out[1] && b->out_kind[1] != CFG_EDGE_FAKE) { for (i = 0; i < n; ++i) b->live_set[i] = b->out[0]->live_set[i] | b->out[1]->live_set[i]; } else { memcpy(b->live_set, b->out[0]->live_set, n * sizeof(uint32_t)); } } else - if (b->out[1]) { + if (b->out[1] && b->out_kind[1] != CFG_EDGE_FAKE) { memcpy(b->live_set, b->out[1]->live_set, n * sizeof(uint32_t)); } else { memset(b->live_set, 0, n * sizeof(uint32_t)); @@ -770,8 +837,8 @@ insert_ordered_tail(struct nv_value *list, struct nv_value *nval) struct nv_value *elem; for (elem = list->prev; - elem != list && elem->livei->bgn > nval->livei->bgn; - elem = elem->prev); + elem != list && elem->livei->bgn > nval->livei->bgn; + elem = elem->prev); /* now elem begins before or at the same time as val */ nval->prev = elem; @@ -780,44 +847,49 @@ insert_ordered_tail(struct nv_value *list, struct nv_value *nval) elem->next = nval; } -static int -pass_linear_scan(struct nv_pc_pass *ctx, int iter) +static void +collect_register_values(struct nv_pc_pass *ctx, struct nv_value *head, + boolean assigned_only) { - struct nv_instruction *i; - struct register_set f, free; + struct nv_value *val; int k, n; - struct nv_value *cur, *val, *tmp[2]; - struct nv_value active, inactive, handled, unhandled; - make_empty_list(&active); - make_empty_list(&inactive); - make_empty_list(&handled); - make_empty_list(&unhandled); + make_empty_list(head); - nv50_ctor_register_set(ctx->pc, &free); - - /* joined values should have range = NULL and thus not be added; - * also, fixed memory values won't be added because they're not - * def'd, just used - */ for (n = 0; n < ctx->num_insns; ++n) { - i = ctx->insns[n]; + struct nv_instruction *i = ctx->insns[n]; + /* for joined values, only the representative will have livei != NULL */ for (k = 0; k < 4; ++k) { if (i->def[k] && i->def[k]->livei) - insert_ordered_tail(&unhandled, i->def[k]); - else - if (0 && i->def[k]) - debug_printf("skipping def'd value %i: no livei\n", i->def[k]->n); + if (!assigned_only || i->def[k]->reg.id >= 0) + insert_ordered_tail(head, i->def[k]); } if (i->flags_def && i->flags_def->livei) - insert_ordered_tail(&unhandled, i->flags_def); + if (!assigned_only || i->flags_def->reg.id >= 0) + insert_ordered_tail(head, i->flags_def); } - for (val = unhandled.next; val != unhandled.prev; val = val->next) { + for (val = head->next; val != head->prev; val = val->next) { assert(val->join == val); assert(val->livei->bgn <= val->next->livei->bgn); } +} + +static int +pass_linear_scan(struct nv_pc_pass *ctx, int iter) +{ + struct register_set f, free; + struct nv_value *cur, *val, *tmp[2]; + struct nv_value active, inactive, handled, unhandled; + + make_empty_list(&active); + make_empty_list(&inactive); + make_empty_list(&handled); + + nv50_ctor_register_set(ctx->pc, &free); + + collect_register_values(ctx, &unhandled, FALSE); foreach_s(cur, tmp[0], &unhandled) { remove_from_list(cur); @@ -854,13 +926,7 @@ pass_linear_scan(struct nv_pc_pass *ctx, int iter) reg_occupy(&f, val); if (cur->reg.id < 0) { - boolean mem = FALSE; - - if (nv_is_vector_op(cur->insn->opcode)) - mem = !reg_assign(&f, &cur->insn->def[0], 4); - else - if (iter) - mem = !reg_assign(&f, &cur, 1); + boolean mem = !reg_assign(&f, &cur, 1); if (mem) { NOUVEAU_ERR("out of registers\n"); @@ -874,13 +940,80 @@ pass_linear_scan(struct nv_pc_pass *ctx, int iter) return 0; } +/* Allocate values defined by instructions such as TEX, which have to be + * assigned to consecutive registers. + * Linear scan doesn't really work here since the values can have different + * live intervals. + */ +static int +pass_allocate_constrained_values(struct nv_pc_pass *ctx) +{ + struct nv_value regvals, *val; + struct nv_instruction *i; + struct nv_value *defs[4]; + struct register_set regs[4]; + int n, vsize, c; + uint32_t mask; + boolean mem; + + collect_register_values(ctx, ®vals, TRUE); + + for (n = 0; n < ctx->num_insns; ++n) { + i = ctx->insns[n]; + vsize = nvi_vector_size(i); + if (!(vsize > 1)) + continue; + assert(vsize <= 4); + for (c = 0; c < vsize; ++c) + defs[c] = i->def[c]->join; + + if (defs[0]->reg.id >= 0) { + for (c = 1; c < vsize; ++c) + assert(defs[c]->reg.id >= 0); + continue; + } + + /* Compute registers available for this "vector" of consecutive registers. + * Each value (component) has its own independent live interval. + */ + for (c = 0; c < vsize; ++c) { + nv50_ctor_register_set(ctx->pc, ®s[c]); + + foreach(val, ®vals) { + if (val->reg.id >= 0 && livei_have_overlap(val, defs[c])) + reg_occupy(®s[c], val); + } + /* Only 32 bit GPRs will be allocated here, but register set + * granularity for GPRs is 16 bit. + */ + mask = 0x03030303; + if (vsize == 2) /* granularity is 2 and not 4 */ + mask |= 0x03030303 << 4; + mask_register_set(®s[c], 0, mask << (c * 2)); + + if (defs[c]->livei) + insert_ordered_tail(®vals, defs[c]); + } + for (c = 1; c < vsize; ++c) + intersect_register_sets(®s[0], ®s[0], ®s[c]); + + mem = !reg_assign(®s[0], &defs[0], vsize); + + if (mem) { + NOUVEAU_ERR("out of registers\n"); + abort(); + } + } + return 0; +} + static int nv_pc_pass1(struct nv_pc *pc, struct nv_basic_block *root) { struct nv_pc_pass *ctx; int i, ret; - NV50_DBGMSG("REGISTER ALLOCATION - entering\n"); + NV50_DBGMSG(PROG_RA, "REGISTER ALLOCATION - entering\n"); ctx = CALLOC_STRUCT(nv_pc_pass); if (!ctx) @@ -923,16 +1056,16 @@ nv_pc_pass1(struct nv_pc *pc, struct nv_basic_block *root) livei_print(&pc->values[i]); #endif - ret = pass_join_values(ctx, 0); + ret = pass_join_values(ctx, JOIN_MASK_PHI); if (ret) goto out; - ret = pass_linear_scan(ctx, 0); + ret = pass_join_values(ctx, JOIN_MASK_SELECT | JOIN_MASK_TEX); if (ret) goto out; - ret = pass_join_values(ctx, 1); + ret = pass_join_values(ctx, JOIN_MASK_MOV); if (ret) goto out; - ret = pass_join_values(ctx, 2); + ret = pass_allocate_constrained_values(ctx); if (ret) goto out; ret = pass_linear_scan(ctx, 1); @@ -942,7 +1075,7 @@ nv_pc_pass1(struct nv_pc *pc, struct nv_basic_block *root) for (i = 0; i < pc->num_values; ++i) livei_release(&pc->values[i]); - NV50_DBGMSG("REGISTER ALLOCATION - leaving\n"); + NV50_DBGMSG(PROG_RA, "REGISTER ALLOCATION - leaving\n"); out: FREE(ctx->insns); diff --git a/src/gallium/drivers/nv50/nv50_program.c b/src/gallium/drivers/nv50/nv50_program.c index a63f9d8a6d5..41d3e14dc0f 100644 --- a/src/gallium/drivers/nv50/nv50_program.c +++ b/src/gallium/drivers/nv50/nv50_program.c @@ -20,8 +20,6 @@ * SOFTWARE. */ -/* #define NV50_PROGRAM_DEBUG */ - #include "nv50_program.h" #include "nv50_pc.h" #include "nv50_context.h" @@ -486,7 +484,7 @@ nv50_fragprog_prepare(struct nv50_translation_info *ti) ++nintp; } - p->fp.colors = (1 << 24) | 4; /* CLAMP, FFC0_ID = 4 */ + p->fp.colors = 4 << NV50_3D_MAP_SEMANTIC_0_FFC0_ID__SHIFT; /* after HPOS */ for (i = 0; i < p->in_nr; ++i) { int j = p->in[i].id; @@ -564,7 +562,7 @@ nv50_prog_scan(struct nv50_translation_info *ti) tgsi_scan_shader(p->pipe.tokens, &ti->scan); -#ifdef NV50_PROGRAM_DEBUG +#if NV50_DEBUG & NV50_DEBUG_SHADER tgsi_dump(p->pipe.tokens, 0); #endif diff --git a/src/gallium/drivers/nv50/nv50_screen.c b/src/gallium/drivers/nv50/nv50_screen.c index 7690c80eef0..641ad7e2780 100644 --- a/src/gallium/drivers/nv50/nv50_screen.c +++ b/src/gallium/drivers/nv50/nv50_screen.c @@ -20,6 +20,7 @@ * SOFTWARE. */ +#include "util/u_format.h" #include "util/u_format_s3tc.h" #include "pipe/p_screen.h" @@ -45,17 +46,8 @@ nv50_screen_is_format_supported(struct pipe_screen *pscreen, if (sample_count > 1) return FALSE; - if (!util_format_s3tc_enabled) { - switch (format) { - case PIPE_FORMAT_DXT1_RGB: - case PIPE_FORMAT_DXT1_RGBA: - case PIPE_FORMAT_DXT3_RGBA: - case PIPE_FORMAT_DXT5_RGBA: - return FALSE; - default: - break; - } - } + if (!util_format_is_supported(format, bindings)) + return FALSE; switch (format) { case PIPE_FORMAT_Z16_UNORM: @@ -108,6 +100,8 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) return 1; case PIPE_CAP_MAX_RENDER_TARGETS: return 8; + case PIPE_CAP_FRAGMENT_COLOR_CLAMP_CONTROL: + return 1; case PIPE_CAP_TIMER_QUERY: case PIPE_CAP_OCCLUSION_QUERY: return 1; @@ -129,6 +123,7 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_PRIMITIVE_RESTART: case PIPE_CAP_TGSI_INSTANCEID: case PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR: + case PIPE_CAP_MIXED_COLORBUFFER_FORMATS: return 1; default: NOUVEAU_ERR("unknown PIPE_CAP %d\n", param); @@ -417,6 +412,10 @@ nv50_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev) OUT_RING (chan, NV50_3D_MULTISAMPLE_MODE_MS1); BEGIN_RING(chan, RING_3D(MULTISAMPLE_CTRL), 1); OUT_RING (chan, 0); + BEGIN_RING(chan, RING_3D(LINE_LAST_PIXEL), 1); + OUT_RING (chan, 0); + BEGIN_RING(chan, RING_3D(BLEND_SEPARATE_ALPHA), 1); + OUT_RING (chan, 1); BEGIN_RING(chan, RING_3D(SCREEN_Y_CONTROL), 1); OUT_RING (chan, 0); diff --git a/src/gallium/drivers/nv50/nv50_shader_state.c b/src/gallium/drivers/nv50/nv50_shader_state.c index bea9c095bb3..82c346cb5ea 100644 --- a/src/gallium/drivers/nv50/nv50_shader_state.c +++ b/src/gallium/drivers/nv50/nv50_shader_state.c @@ -226,7 +226,7 @@ nv50_gmtyprog_validate(struct nv50_context *nv50) OUT_RING (chan, gp->code_base); } -void +static void nv50_sprite_coords_validate(struct nv50_context *nv50) { struct nouveau_channel *chan = nv50->screen->base.channel; @@ -282,6 +282,39 @@ nv50_sprite_coords_validate(struct nv50_context *nv50) OUT_RINGp (chan, pntc, 8); } +/* Validate state derived from shaders and the rasterizer cso. */ +void +nv50_validate_derived_rs(struct nv50_context *nv50) +{ + struct nouveau_channel *chan = nv50->screen->base.channel; + uint32_t color, psize; + + nv50_sprite_coords_validate(nv50); + + if (nv50->dirty & NV50_NEW_FRAGPROG) + return; + psize = nv50->state.semantic_psize & ~NV50_3D_MAP_SEMANTIC_3_PTSZ_EN__MASK; + color = nv50->state.semantic_color & ~NV50_3D_MAP_SEMANTIC_0_CLMP_EN; + + if (nv50->rast->pipe.clamp_vertex_color) + color |= NV50_3D_MAP_SEMANTIC_0_CLMP_EN; + + if (color != nv50->state.semantic_color) { + nv50->state.semantic_color = color; + BEGIN_RING(chan, RING_3D(MAP_SEMANTIC_0), 1); + OUT_RING (chan, color); + } + + if (nv50->rast->pipe.point_size_per_vertex) + psize |= NV50_3D_MAP_SEMANTIC_3_PTSZ_EN__MASK; + + if (psize != nv50->state.semantic_psize) { + nv50->state.semantic_psize = psize; + BEGIN_RING(chan, RING_3D(MAP_SEMANTIC_3), 1); + OUT_RING (chan, psize); + } +} + static int nv50_vec4_map(uint8_t *map, int mid, uint32_t lin[4], struct nv50_varying *in, struct nv50_varying *out) @@ -372,6 +405,9 @@ nv50_fp_linkage_validate(struct nv50_context *nv50) map[m++] = vp->vp.psiz; } + if (nv50->rast->pipe.clamp_vertex_color) + colors |= NV50_3D_MAP_SEMANTIC_0_CLMP_EN; + n = (m + 3) / 4; assert(m <= 64); @@ -404,6 +440,9 @@ nv50_fp_linkage_validate(struct nv50_context *nv50) nv50->state.interpolant_ctrl = interp; + nv50->state.semantic_color = colors; + nv50->state.semantic_psize = psiz; + BEGIN_RING(chan, RING_3D(NOPERSPECTIVE_BITMAP(0)), 4); OUT_RINGp (chan, lin, 4); diff --git a/src/gallium/drivers/nv50/nv50_state.c b/src/gallium/drivers/nv50/nv50_state.c index db257159698..799f49619d2 100644 --- a/src/gallium/drivers/nv50/nv50_state.c +++ b/src/gallium/drivers/nv50/nv50_state.c @@ -97,8 +97,14 @@ nv50_blend_state_create(struct pipe_context *pipe, so->pipe = *cso; - SB_BEGIN_3D(so, BLEND_ENABLE(0), 8); + SB_BEGIN_3D(so, COLOR_MASK_COMMON, 1); + SB_DATA (so, !cso->independent_blend_enable); + + SB_BEGIN_3D(so, BLEND_ENABLE_COMMON, 1); + SB_DATA (so, !cso->independent_blend_enable); + if (cso->independent_blend_enable) { + SB_BEGIN_3D(so, BLEND_ENABLE(0), 8); for (i = 0; i < 8; ++i) { SB_DATA(so, cso->rt[i].blend_enable); if (cso->rt[i].blend_enable) @@ -121,8 +127,8 @@ nv50_blend_state_create(struct pipe_context *pipe, } } } else { - for (i = 0; i < 8; ++i) - SB_DATA(so, cso->rt[0].blend_enable); + SB_BEGIN_3D(so, BLEND_ENABLE(0), 1); + SB_DATA (so, cso->rt[0].blend_enable); } if (emit_common_func) { @@ -145,17 +151,16 @@ nv50_blend_state_create(struct pipe_context *pipe, SB_DATA (so, 0); } - SB_BEGIN_3D(so, COLOR_MASK(0), 8); if (cso->independent_blend_enable) { + SB_BEGIN_3D(so, COLOR_MASK(0), 8); for (i = 0; i < 8; ++i) SB_DATA(so, nv50_colormask(cso->rt[i].colormask)); } else { - uint32_t cmask = nv50_colormask(cso->rt[0].colormask); - for (i = 0; i < 8; ++i) - SB_DATA(so, cmask); + SB_BEGIN_3D(so, COLOR_MASK(0), 1); + SB_DATA (so, nv50_colormask(cso->rt[0].colormask)); } - assert(so->size < (sizeof(so->state) / sizeof(so->state[0]))); + assert(so->size <= (sizeof(so->state) / sizeof(so->state[0]))); return so; } @@ -174,6 +179,7 @@ nv50_blend_state_delete(struct pipe_context *pipe, void *hwcso) FREE(hwcso); } +/* NOTE: ignoring line_last_pixel, using FALSE (set on screen init) */ static void * nv50_rasterizer_state_create(struct pipe_context *pipe, const struct pipe_rasterizer_state *cso) @@ -198,6 +204,9 @@ nv50_rasterizer_state_create(struct pipe_context *pipe, SB_BEGIN_3D(so, VERTEX_TWO_SIDE_ENABLE, 1); SB_DATA (so, cso->light_twoside); + SB_BEGIN_3D(so, FRAG_COLOR_CLAMP_EN, 1); + SB_DATA (so, cso->clamp_fragment_color ? 0x11111111 : 0x00000000); + SB_BEGIN_3D(so, LINE_WIDTH, 1); SB_DATA (so, fui(cso->line_width)); SB_BEGIN_3D(so, LINE_SMOOTH_ENABLE, 1); @@ -258,7 +267,7 @@ nv50_rasterizer_state_create(struct pipe_context *pipe, SB_DATA (so, fui(cso->offset_units * 2.0f)); } - assert(so->size < (sizeof(so->state) / sizeof(so->state[0]))); + assert(so->size <= (sizeof(so->state) / sizeof(so->state[0]))); return (void *)so; } @@ -337,7 +346,7 @@ nv50_zsa_state_create(struct pipe_context *pipe, SB_DATA (so, 0); } - assert(so->size < (sizeof(so->state) / sizeof(so->state[0]))); + assert(so->size <= (sizeof(so->state) / sizeof(so->state[0]))); return (void *)so; } diff --git a/src/gallium/drivers/nv50/nv50_state_validate.c b/src/gallium/drivers/nv50/nv50_state_validate.c index f3d45eb95e0..cdf1a982fcc 100644 --- a/src/gallium/drivers/nv50/nv50_state_validate.c +++ b/src/gallium/drivers/nv50/nv50_state_validate.c @@ -309,7 +309,7 @@ static struct state_validate { { nv50_fp_linkage_validate, NV50_NEW_FRAGPROG | NV50_NEW_VERTPROG | NV50_NEW_GMTYPROG }, { nv50_gp_linkage_validate, NV50_NEW_GMTYPROG | NV50_NEW_VERTPROG }, - { nv50_sprite_coords_validate, NV50_NEW_FRAGPROG | NV50_NEW_RASTERIZER | + { nv50_validate_derived_rs, NV50_NEW_FRAGPROG | NV50_NEW_RASTERIZER | NV50_NEW_VERTPROG | NV50_NEW_GMTYPROG }, { nv50_constbufs_validate, NV50_NEW_CONSTBUF }, { nv50_validate_textures, NV50_NEW_TEXTURES }, diff --git a/src/gallium/drivers/nv50/nv50_stateobj.h b/src/gallium/drivers/nv50/nv50_stateobj.h index 515e3e78d42..4c98c7e46fc 100644 --- a/src/gallium/drivers/nv50/nv50_stateobj.h +++ b/src/gallium/drivers/nv50/nv50_stateobj.h @@ -21,13 +21,13 @@ struct nv50_blend_stateobj { struct pipe_blend_state pipe; int size; - uint32_t state[78]; + uint32_t state[82]; // TODO: allocate less if !independent_blend_enable }; struct nv50_rasterizer_stateobj { struct pipe_rasterizer_state pipe; int size; - uint32_t state[40]; + uint32_t state[42]; }; struct nv50_zsa_stateobj { diff --git a/src/gallium/drivers/nv50/nv50_surface.c b/src/gallium/drivers/nv50/nv50_surface.c index dc9e2880f0f..3d7e880ccce 100644 --- a/src/gallium/drivers/nv50/nv50_surface.c +++ b/src/gallium/drivers/nv50/nv50_surface.c @@ -27,6 +27,7 @@ #include "util/u_inlines.h" #include "util/u_pack_color.h" #include "util/u_format.h" +#include "util/u_surface.h" #include "nv50_context.h" #include "nv50_resource.h" @@ -198,6 +199,13 @@ nv50_resource_copy_region(struct pipe_context *pipe, int ret; unsigned dst_layer = dstz, src_layer = src_box->z; + /* Fallback for buffers. */ + if (dst->target == PIPE_BUFFER && src->target == PIPE_BUFFER) { + util_resource_copy_region(pipe, dst, dst_level, dstx, dsty, dstz, + src, src_level, src_box); + return; + } + assert((src->format == dst->format) || (nv50_2d_format_faithful(src->format) && nv50_2d_format_faithful(dst->format))); diff --git a/src/gallium/drivers/nv50/nv50_tgsi_to_nc.c b/src/gallium/drivers/nv50/nv50_tgsi_to_nc.c index 1449cb04c69..25dcaaea14f 100644 --- a/src/gallium/drivers/nv50/nv50_tgsi_to_nc.c +++ b/src/gallium/drivers/nv50/nv50_tgsi_to_nc.c @@ -20,8 +20,6 @@ * SOFTWARE. */ -/* #define NV50_TGSI2NC_DEBUG */ - #include <unistd.h> #include "nv50_context.h" @@ -213,7 +211,7 @@ static INLINE void bld_warn_uninitialized(struct bld_context *bld, int kind, struct bld_value_stack *stk, struct nv_basic_block *b) { -#ifdef NV50_TGSI2NC_DEBUG +#if NV50_DEBUG & NV50_DEBUG_PROG_IR long i = (stk - &bld->tvs[0][0]) / 4; long c = (stk - &bld->tvs[0][0]) & 3; @@ -273,6 +271,12 @@ fetch_by_bb(struct bld_value_stack *stack, fetch_by_bb(stack, vals, n, b->in[i]); } +static INLINE boolean +nvbb_is_terminated(struct nv_basic_block *bb) +{ + return bb->exit && bb->exit->is_terminator; +} + static INLINE struct nv_value * bld_load_imm_u32(struct bld_context *bld, uint32_t u); @@ -1556,7 +1560,7 @@ bld_instruction(struct bld_context *bld, int c; uint opcode = translate_opcode(insn->Instruction.Opcode); -#ifdef NV50_TGSI2NC_DEBUG +#if NV50_DEBUG & NV50_DEBUG_PROG_IR debug_printf("bld_instruction:"); tgsi_dump_instruction(insn, 1); #endif @@ -1727,8 +1731,7 @@ bld_instruction(struct bld_context *bld, { struct nv_basic_block *b = new_basic_block(bld->pc); - if (bld->pc->current_block->exit && - !bld->pc->current_block->exit->is_terminator) + if (!nvbb_is_terminated(bld->pc->current_block)) bld_flow(bld, NV_OP_BRA, NV_CC_TR, NULL, b, FALSE); --bld->cond_lvl; @@ -1800,7 +1803,8 @@ bld_instruction(struct bld_context *bld, { struct nv_basic_block *bb = bld->loop_bb[bld->loop_lvl - 1]; - bld_flow(bld, NV_OP_BRA, NV_CC_TR, NULL, bb, FALSE); + if (!nvbb_is_terminated(bld->pc->current_block)) + bld_flow(bld, NV_OP_BRA, NV_CC_TR, NULL, bb, FALSE); nvbb_attach_block(bld->pc->current_block, bb, CFG_EDGE_BACK); diff --git a/src/gallium/drivers/nvc0/nvc0_3d.xml.h b/src/gallium/drivers/nvc0/nvc0_3d.xml.h index 94fa081ad7e..2ca0bc23836 100644 --- a/src/gallium/drivers/nvc0/nvc0_3d.xml.h +++ b/src/gallium/drivers/nvc0/nvc0_3d.xml.h @@ -82,6 +82,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NVC0_3D_SERIALIZE 0x00000110 +#define NVC0_3D_LINE_WIDTH_SEPARATE 0x0000020c + #define NVC0_3D_EARLY_FRAGMENT_TESTS 0x00000210 #define NVC0_3D_MEM_BARRIER 0x0000021c @@ -342,10 +344,14 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NVC0_3D_VERTEX_RUNOUT_ADDRESS_LOW 0x00000f88 +#define NVC0_3D_COLOR_MASK_COMMON 0x00000f90 + #define NVC0_3D_DEPTH_BOUNDS(i0) (0x00000f9c + 0x4*(i0)) #define NVC0_3D_DEPTH_BOUNDS__ESIZE 0x00000004 #define NVC0_3D_DEPTH_BOUNDS__LEN 0x00000002 +#define NVC0_3D_RT_SEPARATE_FRAG_DATA 0x00000fac + #define NVC0_3D_MSAA_MASK(i0) (0x00000fbc + 0x4*(i0)) #define NVC0_3D_MSAA_MASK__ESIZE 0x00000004 #define NVC0_3D_MSAA_MASK__LEN 0x00000004 @@ -561,6 +567,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NVC0_3D_TEX_CACHE_CTL_UNK1__MASK 0x00000030 #define NVC0_3D_TEX_CACHE_CTL_UNK1__SHIFT 4 +#define NVC0_3D_BLEND_SEPARATE_ALPHA 0x0000133c + #define NVC0_3D_BLEND_EQUATION_RGB 0x00001340 #define NVC0_3D_BLEND_EQUATION_RGB_FUNC_ADD 0x00008006 #define NVC0_3D_BLEND_EQUATION_RGB_MIN 0x00008007 @@ -583,6 +591,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NVC0_3D_BLEND_FUNC_DST_ALPHA 0x00001358 +#define NVC0_3D_BLEND_ENABLE_COMMON 0x0000135c + #define NVC0_3D_BLEND_ENABLE(i0) (0x00001360 + 0x4*(i0)) #define NVC0_3D_BLEND_ENABLE__ESIZE 0x00000004 #define NVC0_3D_BLEND_ENABLE__LEN 0x00000008 @@ -651,7 +661,9 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NVC0_3D_SCREEN_Y_CONTROL_Y_NEGATE 0x00000001 #define NVC0_3D_SCREEN_Y_CONTROL_TRIANGLE_RAST_FLIP 0x00000010 -#define NVC0_3D_LINE_WIDTH 0x000013b0 +#define NVC0_3D_LINE_WIDTH_SMOOTH 0x000013b0 + +#define NVC0_3D_LINE_WIDTH_ALIASED 0x000013b4 #define NVC0_3D_GP_VERTEX_OUTPUT_COUNT 0x00001420 #define NVC0_3D_GP_VERTEX_OUTPUT_COUNT__MIN 0x00000001 @@ -977,6 +989,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NVC0_3D_CULL_FACE_BACK 0x00000405 #define NVC0_3D_CULL_FACE_FRONT_AND_BACK 0x00000408 +#define NVC0_3D_LINE_LAST_PIXEL 0x00001924 + #define NVC0_3D_VIEWPORT_TRANSFORM_EN 0x0000192c #define NVC0_3D_VIEW_VOLUME_CLIP_CTRL 0x0000193c @@ -1220,8 +1234,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define NVC0_3D_TFB_VARYING_LOCS__ESIZE 0x00000004 #define NVC0_3D_TFB_VARYING_LOCS__LEN 0x00000020 -#define NVC0_3D_COLOR_MASK_BROADCAST 0x00003808 - #define NVC0_3D_VERTEX_ARRAY_SELECT 0x00003820 #define NVC0_3D_BLEND_ENABLES 0x00003858 diff --git a/src/gallium/drivers/nvc0/nvc0_context.c b/src/gallium/drivers/nvc0/nvc0_context.c index 5d2168e600b..2f2a3da7c44 100644 --- a/src/gallium/drivers/nvc0/nvc0_context.c +++ b/src/gallium/drivers/nvc0/nvc0_context.c @@ -47,6 +47,15 @@ nvc0_flush(struct pipe_context *pipe, } static void +nvc0_texture_barrier(struct pipe_context *pipe) +{ + struct nouveau_channel *chan = nvc0_context(pipe)->screen->base.channel; + + IMMED_RING(chan, RING_3D(SERIALIZE), 0); + IMMED_RING(chan, RING_3D(TEX_CACHE_CTL), 0); +} + +static void nvc0_context_unreference_resources(struct nvc0_context *nvc0) { unsigned s, i; @@ -128,6 +137,7 @@ nvc0_create(struct pipe_screen *pscreen, void *priv) pipe->clear = nvc0_clear; pipe->flush = nvc0_flush; + pipe->texture_barrier = nvc0_texture_barrier; if (!screen->cur_ctx) screen->cur_ctx = nvc0; diff --git a/src/gallium/drivers/nvc0/nvc0_context.h b/src/gallium/drivers/nvc0/nvc0_context.h index 102997e4fcb..f97141dd46e 100644 --- a/src/gallium/drivers/nvc0/nvc0_context.h +++ b/src/gallium/drivers/nvc0/nvc0_context.h @@ -1,7 +1,6 @@ #ifndef __NVC0_CONTEXT_H__ #define __NVC0_CONTEXT_H__ -#include <stdio.h> #include "pipe/p_context.h" #include "pipe/p_defines.h" #include "pipe/p_state.h" @@ -13,6 +12,7 @@ #include "draw/draw_vertex.h" +#include "nv50/nv50_debug.h" #include "nvc0_winsys.h" #include "nvc0_stateobj.h" #include "nvc0_screen.h" @@ -26,15 +26,6 @@ #include "nvc0_2d.xml.h" #include "nvc0_m2mf.xml.h" -#define NOUVEAU_ERR(fmt, args...) \ - fprintf(stderr, "%s:%d - "fmt, __FUNCTION__, __LINE__, ##args); - -#ifdef NOUVEAU_DEBUG -# define NOUVEAU_DBG(args...) printf(args); -#else -# define NOUVEAU_DBG(args...) -#endif - #define NVC0_NEW_BLEND (1 << 0) #define NVC0_NEW_RASTERIZER (1 << 1) #define NVC0_NEW_ZSA (1 << 2) diff --git a/src/gallium/drivers/nvc0/nvc0_formats.c b/src/gallium/drivers/nvc0/nvc0_formats.c index 454c7440631..678e9b563ee 100644 --- a/src/gallium/drivers/nvc0/nvc0_formats.c +++ b/src/gallium/drivers/nvc0/nvc0_formats.c @@ -145,24 +145,64 @@ const struct nvc0_format nvc0_format_table[PIPE_FORMAT_COUNT] = [PIPE_FORMAT_L8_SRGB] = { NV50_SURFACE_FORMAT_R8_UNORM, A_(C0, C0, C0, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 8, 0), - SAMPLER_VIEW }, + SAMPLER_VIEW | RENDER_TARGET }, - [PIPE_FORMAT_I8_UNORM] = { NV50_SURFACE_FORMAT_R8_UNORM, - A_(C0, C0, C0, C0, UNORM, UNORM, UNORM, UNORM, 8, 0), + [PIPE_FORMAT_L16_SNORM] = { NV50_SURFACE_FORMAT_R16_SNORM, + B_(C0, C0, C0, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 16, 0), SAMPLER_VIEW | RENDER_TARGET }, - [PIPE_FORMAT_I16_UNORM] = { NV50_SURFACE_FORMAT_R16_UNORM, - A_(C0, C0, C0, C0, UNORM, UNORM, UNORM, UNORM, 16, 0), + [PIPE_FORMAT_L16_FLOAT] = { NV50_SURFACE_FORMAT_R16_FLOAT, + B_(C0, C0, C0, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 16, 0), SAMPLER_VIEW | RENDER_TARGET }, + [PIPE_FORMAT_L32_FLOAT] = { NV50_SURFACE_FORMAT_R32_FLOAT, + B_(C0, C0, C0, ONE_FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, 32, 0), + SAMPLER_VIEW | RENDER_TARGET }, + + [PIPE_FORMAT_I8_UNORM] = { 0, + A_(C0, C0, C0, C0, UNORM, UNORM, UNORM, UNORM, 8, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_I16_UNORM] = { 0, + A_(C0, C0, C0, C0, UNORM, UNORM, UNORM, UNORM, 16, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_I16_SNORM] = { 0, + B_(C0, C0, C0, C0, SNORM, SNORM, SNORM, SNORM, 16, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_I16_FLOAT] = { 0, + B_(C0, C0, C0, C0, FLOAT, FLOAT, FLOAT, FLOAT, 16, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_I32_FLOAT] = { 0, + B_(C0, C0, C0, C0, FLOAT, FLOAT, FLOAT, FLOAT, 32, 0), + SAMPLER_VIEW }, + [PIPE_FORMAT_A8_UNORM] = { NV50_SURFACE_FORMAT_A8_UNORM, A_(ZERO, ZERO, ZERO, C0, UNORM, UNORM, UNORM, UNORM, 8, 0), SAMPLER_VIEW | RENDER_TARGET }, + [PIPE_FORMAT_A8_SNORM] = { 0, + A_(ZERO, ZERO, ZERO, C0, SNORM, SNORM, SNORM, SNORM, 8, 0), + SAMPLER_VIEW }, + [PIPE_FORMAT_A16_UNORM] = { 0, A_(ZERO, ZERO, ZERO, C0, UNORM, UNORM, UNORM, UNORM, 16, 0), SAMPLER_VIEW }, + [PIPE_FORMAT_A16_SNORM] = { 0, + A_(ZERO, ZERO, ZERO, C0, SNORM, SNORM, SNORM, SNORM, 16, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_A16_FLOAT] = { 0, + B_(ZERO, ZERO, ZERO, C0, FLOAT, FLOAT, FLOAT, FLOAT, 16, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_A32_FLOAT] = { 0, + B_(ZERO, ZERO, ZERO, C0, FLOAT, FLOAT, FLOAT, FLOAT, 32, 0), + SAMPLER_VIEW }, + [PIPE_FORMAT_L8A8_UNORM] = { 0, A_(C0, C0, C0, C1, UNORM, UNORM, UNORM, UNORM, 8_8, 0), SAMPLER_VIEW }, @@ -175,6 +215,18 @@ const struct nvc0_format nvc0_format_table[PIPE_FORMAT_COUNT] = A_(C0, C0, C0, C1, UNORM, UNORM, UNORM, UNORM, 16_16, 0), SAMPLER_VIEW }, + [PIPE_FORMAT_L16A16_SNORM] = { 0, + A_(C0, C0, C0, C1, SNORM, SNORM, SNORM, SNORM, 16_16, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_L16A16_FLOAT] = { 0, + B_(C0, C0, C0, C1, FLOAT, FLOAT, FLOAT, FLOAT, 16_16, 0), + SAMPLER_VIEW }, + + [PIPE_FORMAT_L32A32_FLOAT] = { 0, + B_(C0, C0, C0, C1, FLOAT, FLOAT, FLOAT, FLOAT, 32_32, 0), + SAMPLER_VIEW }, + [PIPE_FORMAT_L4A4_UNORM] = { 0, B_(C0, C0, C0, C1, UNORM, UNORM, UNORM, UNORM, 4_4, 0), SAMPLER_VIEW }, @@ -322,7 +374,7 @@ const struct nvc0_format nvc0_format_table[PIPE_FORMAT_COUNT] = VERTEX_BUFFER | SAMPLER_VIEW }, [PIPE_FORMAT_R16G16_SNORM] = { NV50_SURFACE_FORMAT_R16G16_SNORM, - A_(C0, C1, C2, C3, SNORM, SNORM, SNORM, SNORM, 16_16, 0), + A_(C0, C1, ZERO, ONE_FLOAT, SNORM, SNORM, SNORM, SNORM, 16_16, 0), VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET }, [PIPE_FORMAT_R16_SNORM] = { NV50_SURFACE_FORMAT_R16_SNORM, @@ -340,7 +392,7 @@ const struct nvc0_format nvc0_format_table[PIPE_FORMAT_COUNT] = VERTEX_BUFFER | SAMPLER_VIEW }, [PIPE_FORMAT_R16G16_UNORM] = { NV50_SURFACE_FORMAT_R16G16_UNORM, - A_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, 16_16, 0), + A_(C0, C1, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, 16_16, 0), VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET }, [PIPE_FORMAT_R16_UNORM] = { NV50_SURFACE_FORMAT_R16_UNORM, @@ -520,4 +572,8 @@ const struct nvc0_format nvc0_format_table[PIPE_FORMAT_COUNT] = [PIPE_FORMAT_R1_UNORM] = { 0, B_(C0, ZERO, ZERO, ONE_FLOAT, UNORM, UNORM, UNORM, UNORM, BITMAP_8X8, 0), SAMPLER_VIEW }, + + [PIPE_FORMAT_A8B8G8R8_UNORM] = { 0, + B_(C3, C2, C1, C0, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 0), + SAMPLER_VIEW }, }; diff --git a/src/gallium/drivers/nvc0/nvc0_graph_macros.h b/src/gallium/drivers/nvc0/nvc0_graph_macros.h index b7d0d3eafa4..a0a875fe627 100644 --- a/src/gallium/drivers/nvc0/nvc0_graph_macros.h +++ b/src/gallium/drivers/nvc0/nvc0_graph_macros.h @@ -68,19 +68,6 @@ static const uint32_t nvc0_9097_vertex_array_select[] = 0x00001841, /* 0x0b: send $r3 */ }; -static const uint32_t nvc0_9097_color_mask_brdc[] = -{ - 0x05a00021, /* maddr [NVC0_3D_COLOR_MASK(0), increment = 4] */ - 0x00000841, /* send $r1 */ - 0x00000841, /* send $r1 */ - 0x00000841, /* send $r1 */ - 0x00000841, /* send $r1 */ - 0x00000841, /* send $r1 */ - 0x00000841, /* send $r1 */ - 0x000008c1, /* exit send $r1 */ - 0x00000841, /* send $r1 */ -}; - /* * [GL_POLYGON_MODE_FRONT] = arg; * diff --git a/src/gallium/drivers/nvc0/nvc0_pc.c b/src/gallium/drivers/nvc0/nvc0_pc.c index bd85a7f1ffd..2c3b8555f32 100644 --- a/src/gallium/drivers/nvc0/nvc0_pc.c +++ b/src/gallium/drivers/nvc0/nvc0_pc.c @@ -20,8 +20,6 @@ * SOFTWARE. */ -#define NOUVEAU_DEBUG 1 - #include "nvc0_pc.h" #include "nvc0_program.h" @@ -262,7 +260,7 @@ nvc0_print_program(struct nv_pc *pc) nvc0_print_function(pc->root[i]); } -#if NOUVEAU_DEBUG > 1 +#if NV50_DEBUG & NV50_DEBUG_PROG_CFLOW static void nv_do_print_cfgraph(struct nv_pc *pc, FILE *f, struct nv_basic_block *b) { @@ -327,7 +325,7 @@ nvc0_pc_print_binary(struct nv_pc *pc) { unsigned i; - NOUVEAU_DBG("nvc0_pc_print_binary(%u ops)\n", pc->emit_size / 8); + NV50_DBGMSG(SHADER, "nvc0_pc_print_binary(%u ops)\n", pc->emit_size / 8); for (i = 0; i < pc->emit_size / 4; i += 2) { debug_printf("0x%08x ", pc->emit[i + 0]); @@ -344,7 +342,7 @@ nvc0_emit_program(struct nv_pc *pc) uint32_t *code = pc->emit; int n; - NOUVEAU_DBG("emitting program: size = %u\n", pc->emit_size); + NV50_DBGMSG(SHADER, "emitting program: size = %u\n", pc->emit_size); pc->emit_pos = 0; for (n = 0; n < pc->num_blocks; ++n) { @@ -365,11 +363,10 @@ nvc0_emit_program(struct nv_pc *pc) pc->emit = code; -#ifdef NOUVEAU_DEBUG +#if NV50_DEBUG & NV50_DEBUG_SHADER nvc0_pc_print_binary(pc); -#else - debug_printf("not printing binary\n"); #endif + return 0; } @@ -396,7 +393,7 @@ nvc0_generate_code(struct nvc0_translation_info *ti) ret = nvc0_tgsi_to_nc(pc, ti); if (ret) goto out; -#if NOUVEAU_DEBUG > 1 +#if NV50_DEBUG & NV50_DEBUG_PROG_IR nvc0_print_program(pc); #endif @@ -406,7 +403,7 @@ nvc0_generate_code(struct nvc0_translation_info *ti) ret = nvc0_pc_exec_pass0(pc); if (ret) goto out; -#ifdef NOUVEAU_DEBUG +#if NV50_DEBUG & NV50_DEBUG_PROG_IR nvc0_print_program(pc); #endif @@ -414,7 +411,7 @@ nvc0_generate_code(struct nvc0_translation_info *ti) ret = nvc0_pc_exec_pass1(pc); if (ret) goto out; -#if NOUVEAU_DEBUG > 1 +#if NV50_DEBUG & NV50_DEBUG_PROG_CFLOW nvc0_print_program(pc); nv_print_cfgraph(pc, "nvc0_shader_cfgraph.dot", 0); #endif @@ -444,7 +441,7 @@ nvc0_generate_code(struct nvc0_translation_info *ti) ti->prog->relocs = pc->reloc_entries; ti->prog->num_relocs = pc->num_relocs; - NOUVEAU_DBG("SHADER TRANSLATION - %s\n", ret ? "failure" : "success"); + NV50_DBGMSG(SHADER, "SHADER TRANSLATION - %s\n", ret ? "failed" : "success"); out: nv_pc_free_refs(pc); @@ -573,7 +570,7 @@ nvc0_insn_delete(struct nv_instruction *nvi) if (nvi == b->phi) { if (nvi->opcode != NV_OP_PHI) - NOUVEAU_DBG("NOTE: b->phi points to non-PHI instruction\n"); + NV50_DBGMSG(PROG_IR, "NOTE: b->phi points to non-PHI instruction\n"); assert(!nvi->prev); if (!nvi->next || nvi->next->opcode != NV_OP_PHI) diff --git a/src/gallium/drivers/nvc0/nvc0_pc.h b/src/gallium/drivers/nvc0/nvc0_pc.h index 3a5612a5fac..441692d766c 100644 --- a/src/gallium/drivers/nvc0/nvc0_pc.h +++ b/src/gallium/drivers/nvc0/nvc0_pc.h @@ -23,20 +23,7 @@ #ifndef __NVC0_COMPILER_H__ #define __NVC0_COMPILER_H__ -#include <stdio.h> - -#ifndef NOUVEAU_DBG -#ifdef NOUVEAU_DEBUG -# define NOUVEAU_DBG(args...) debug_printf(args); -#else -# define NOUVEAU_DBG(args...) -#endif -#endif - -#ifndef NOUVEAU_ERR -#define NOUVEAU_ERR(fmt, args...) \ - fprintf(stderr, "%s:%d - "fmt, __FUNCTION__, __LINE__, ##args); -#endif +#include "nv50/nv50_debug.h" #include "pipe/p_defines.h" #include "util/u_inlines.h" diff --git a/src/gallium/drivers/nvc0/nvc0_pc_emit.c b/src/gallium/drivers/nvc0/nvc0_pc_emit.c index 76ad40dbcf8..e35653280a1 100644 --- a/src/gallium/drivers/nvc0/nvc0_pc_emit.c +++ b/src/gallium/drivers/nvc0/nvc0_pc_emit.c @@ -715,6 +715,10 @@ emit_interp(struct nv_pc *pc, struct nv_instruction *i) if (i->opcode == NV_OP_PINTERP) { pc->emit[0] |= 0x040; SID(pc, i->src[1], 26); + + if (i->src[0]->value->reg.address >= 0x280 && + i->src[0]->value->reg.address <= 0x29c) + pc->emit[0] |= 0x080; /* XXX: ? */ } else { SID(pc, NULL, 26); } @@ -875,7 +879,9 @@ emit_st(struct nv_pc *pc, struct nv_instruction *i) void nvc0_emit_instruction(struct nv_pc *pc, struct nv_instruction *i) { +#if NV50_DEBUG & NV50_DEBUG_SHADER debug_printf("EMIT: "); nvc0_print_instruction(i); +#endif switch (i->opcode) { case NV_OP_VFETCH: diff --git a/src/gallium/drivers/nvc0/nvc0_pc_optimize.c b/src/gallium/drivers/nvc0/nvc0_pc_optimize.c index f7bf1680d09..7f5fbaff690 100644 --- a/src/gallium/drivers/nvc0/nvc0_pc_optimize.c +++ b/src/gallium/drivers/nvc0/nvc0_pc_optimize.c @@ -115,7 +115,7 @@ inst_is_noop(struct nv_instruction *nvi) return FALSE; if (nvi->src[0]->value->join->reg.id < 0) { - NOUVEAU_DBG("inst_is_noop: orphaned value detected\n"); + NV50_DBGMSG(PROG_IR, "inst_is_noop: orphaned value detected\n"); return TRUE; } @@ -178,7 +178,7 @@ nv_pc_pass_pre_emission(void *priv, struct nv_basic_block *b) } pc->emit_size += b->emit_size; -#ifdef NOUVEAU_DEBUG +#if NV50_DEBUG & NV50_DEBUG_PROG_IR if (!b->entry) debug_printf("BB:%i is now empty\n", b->id); else @@ -206,7 +206,7 @@ nvc0_pc_exec_pass2(struct nv_pc *pc) { int i, ret; - NOUVEAU_DBG("preparing %u blocks for emission\n", pc->num_blocks); + NV50_DBGMSG(PROG_IR, "preparing %u blocks for emission\n", pc->num_blocks); pc->num_blocks = 0; /* will reorder bb_list */ diff --git a/src/gallium/drivers/nvc0/nvc0_pc_regalloc.c b/src/gallium/drivers/nvc0/nvc0_pc_regalloc.c index f4afe083e2d..15bebb2134a 100644 --- a/src/gallium/drivers/nvc0/nvc0_pc_regalloc.c +++ b/src/gallium/drivers/nvc0/nvc0_pc_regalloc.c @@ -20,11 +20,11 @@ * SOFTWARE. */ -#define NOUVEAU_DEBUG 1 - -/* #define NVC0_RA_DEBUG_LIVEI */ -/* #define NVC0_RA_DEBUG_LIVE_SETS */ -/* #define NVC0_RA_DEBUG_JOIN */ +#if NV50_DEBUG & NV50_DEBUG_PROG_RA +# define NVC0_RA_DEBUG_LIVEI +# define NVC0_RA_DEBUG_LIVE_SETS +# define NVC0_RA_DEBUG_JOIN +#endif #include "nvc0_pc.h" #include "util/u_simple_list.h" @@ -504,7 +504,9 @@ pass_generate_phi_movs(struct nv_pc_pass *ctx, struct nv_basic_block *b) } if (pn != p && pn->exit) { - ctx->pc->current_block = b->in[n ? 0 : 1]; + assert(!b->in[!n]->exit || b->in[!n]->exit->terminator); + /* insert terminator (branch to ENDIF) in new else block */ + ctx->pc->current_block = pn; ni = new_instruction(ctx->pc, NV_OP_BRA); ni->target = b; ni->terminator = 1; @@ -965,7 +967,7 @@ nv_pc_pass1(struct nv_pc *pc, struct nv_basic_block *root) struct nv_pc_pass *ctx; int i, ret; - NOUVEAU_DBG("REGISTER ALLOCATION - entering\n"); + NV50_DBGMSG(PROG_RA, "REGISTER ALLOCATION - entering\n"); ctx = CALLOC_STRUCT(nv_pc_pass); if (!ctx) @@ -1031,7 +1033,7 @@ nv_pc_pass1(struct nv_pc *pc, struct nv_basic_block *root) for (i = 0; i < pc->num_values; ++i) livei_release(&pc->values[i]); - NOUVEAU_DBG("REGISTER ALLOCATION - leaving\n"); + NV50_DBGMSG(PROG_RA, "REGISTER ALLOCATION - leaving\n"); out: FREE(ctx->insns); diff --git a/src/gallium/drivers/nvc0/nvc0_program.c b/src/gallium/drivers/nvc0/nvc0_program.c index 3c59213176e..bcee027917e 100644 --- a/src/gallium/drivers/nvc0/nvc0_program.c +++ b/src/gallium/drivers/nvc0/nvc0_program.c @@ -23,8 +23,6 @@ #include "pipe/p_shader_tokens.h" #include "pipe/p_defines.h" -#define NOUVEAU_DEBUG - #include "tgsi/tgsi_parse.h" #include "tgsi/tgsi_util.h" #include "tgsi/tgsi_dump.h" @@ -225,6 +223,9 @@ nvc0_interp_mode(const struct tgsi_full_declaration *decl) if (decl->Declaration.Interpolate == TGSI_INTERPOLATE_PERSPECTIVE) mode = NVC0_INTERP_PERSPECTIVE; else + if (decl->Declaration.Semantic && decl->Semantic.Name == TGSI_SEMANTIC_COLOR) + mode = NVC0_INTERP_PERSPECTIVE; + else mode = NVC0_INTERP_LINEAR; if (decl->Declaration.Centroid) @@ -574,7 +575,7 @@ nvc0_prog_scan(struct nvc0_translation_info *ti) int ret; unsigned i; -#ifdef NOUVEAU_DEBUG +#if NV50_DEBUG & NV50_DEBUG_SHADER tgsi_dump(prog->pipe.tokens, 0); #endif @@ -691,12 +692,12 @@ nvc0_program_translate(struct nvc0_program *prog) if (ret) NOUVEAU_ERR("shader translation failed\n"); - { - unsigned i; - for (i = 0; i < sizeof(prog->hdr) / sizeof(prog->hdr[0]); ++i) - debug_printf("HDR[%02lx] = 0x%08x\n", - i * sizeof(prog->hdr[0]), prog->hdr[i]); - } +#if NV50_DEBUG & NV50_DEBUG_SHADER + unsigned i; + for (i = 0; i < sizeof(prog->hdr) / sizeof(prog->hdr[0]); ++i) + debug_printf("HDR[%02lx] = 0x%08x\n", + i * sizeof(prog->hdr[0]), prog->hdr[i]); +#endif out: if (ti->immd32) diff --git a/src/gallium/drivers/nvc0/nvc0_screen.c b/src/gallium/drivers/nvc0/nvc0_screen.c index 1047ba3c337..ca0691d2aee 100644 --- a/src/gallium/drivers/nvc0/nvc0_screen.c +++ b/src/gallium/drivers/nvc0/nvc0_screen.c @@ -20,6 +20,7 @@ * SOFTWARE. */ +#include "util/u_format.h" #include "util/u_format_s3tc.h" #include "pipe/p_screen.h" @@ -39,17 +40,8 @@ nvc0_screen_is_format_supported(struct pipe_screen *pscreen, if (sample_count > 1) return FALSE; - if (!util_format_s3tc_enabled) { - switch (format) { - case PIPE_FORMAT_DXT1_RGB: - case PIPE_FORMAT_DXT1_RGBA: - case PIPE_FORMAT_DXT3_RGBA: - case PIPE_FORMAT_DXT5_RGBA: - return FALSE; - default: - break; - } - } + if (!util_format_is_supported(format, bindings)) + return FALSE; /* transfers & shared are always supported */ bindings &= ~(PIPE_BIND_TRANSFER_READ | @@ -93,6 +85,8 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) return 1; case PIPE_CAP_MAX_RENDER_TARGETS: return 8; + case PIPE_CAP_FRAGMENT_COLOR_CLAMP_CONTROL: + return 1; case PIPE_CAP_TIMER_QUERY: case PIPE_CAP_OCCLUSION_QUERY: return 1; @@ -113,6 +107,7 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_PRIMITIVE_RESTART: case PIPE_CAP_TGSI_INSTANCEID: case PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR: + case PIPE_CAP_MIXED_COLORBUFFER_FORMATS: return 1; default: NOUVEAU_ERR("unknown PIPE_CAP %d\n", param); @@ -291,8 +286,6 @@ nvc0_magic_3d_init(struct nouveau_channel *chan) OUT_RING (chan, 1 << 12); BEGIN_RING(chan, RING_3D_(0x151c), 1); OUT_RING (chan, 1); - BEGIN_RING(chan, RING_3D_(0x020c), 1); - OUT_RING (chan, 1); BEGIN_RING(chan, RING_3D_(0x030c), 1); OUT_RING (chan, 0); BEGIN_RING(chan, RING_3D_(0x0300), 1); @@ -309,11 +302,6 @@ nvc0_magic_3d_init(struct nouveau_channel *chan) OUT_RING (chan, 1); BEGIN_RING(chan, RING_3D_(0x075c), 1); OUT_RING (chan, 3); - - BEGIN_RING(chan, RING_3D_(0x0fac), 1); - OUT_RING (chan, 0); - BEGIN_RING(chan, RING_3D_(0x0f90), 1); - OUT_RING (chan, 0); } static void @@ -445,6 +433,14 @@ nvc0_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev) OUT_RING (chan, NVC0_3D_MULTISAMPLE_MODE_1X); BEGIN_RING(chan, RING_3D(MULTISAMPLE_CTRL), 1); OUT_RING (chan, 0); + BEGIN_RING(chan, RING_3D(LINE_WIDTH_SEPARATE), 1); + OUT_RING (chan, 1); + BEGIN_RING(chan, RING_3D(LINE_LAST_PIXEL), 1); + OUT_RING (chan, 0); + BEGIN_RING(chan, RING_3D(BLEND_SEPARATE_ALPHA), 1); + OUT_RING (chan, 1); + BEGIN_RING(chan, RING_3D(BLEND_ENABLE_COMMON), 1); + OUT_RING (chan, 0); nvc0_magic_3d_init(chan); @@ -452,7 +448,10 @@ nvc0_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev) if (ret) goto fail; - nouveau_resource_init(&screen->text_heap, 0, 1 << 20); + /* XXX: getting a page fault at the end of the code buffer every few + * launches, don't use the last 256 bytes to work around them - prefetch ? + */ + nouveau_resource_init(&screen->text_heap, 0, (1 << 20) - 0x100); ret = nouveau_bo_new(dev, NOUVEAU_BO_VRAM, 1 << 12, 6 << 16, &screen->uniforms); @@ -557,17 +556,6 @@ nvc0_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev) OUT_RING (chan, 8192 << 16); OUT_RING (chan, 8192 << 16); - BEGIN_RING(chan, RING_3D_(0x0fac), 1); - OUT_RING (chan, 0); - BEGIN_RING(chan, RING_3D_(0x3484), 1); - OUT_RING (chan, 0); - BEGIN_RING(chan, RING_3D_(0x0dbc), 1); - OUT_RING (chan, 0x00010000); - BEGIN_RING(chan, RING_3D_(0x0dd8), 1); - OUT_RING (chan, 0xff800006); - BEGIN_RING(chan, RING_3D_(0x3488), 1); - OUT_RING (chan, 0); - #define MK_MACRO(m, n) i = nvc0_graph_set_macro(screen, m, i, sizeof(n), n); i = 0; @@ -577,10 +565,11 @@ nvc0_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev) MK_MACRO(NVC0_3D_GP_SELECT, nvc0_9097_gp_select); MK_MACRO(NVC0_3D_POLYGON_MODE_FRONT, nvc0_9097_poly_mode_front); MK_MACRO(NVC0_3D_POLYGON_MODE_BACK, nvc0_9097_poly_mode_back); - MK_MACRO(NVC0_3D_COLOR_MASK_BROADCAST, nvc0_9097_color_mask_brdc); BEGIN_RING(chan, RING_3D(RASTERIZE_ENABLE), 1); OUT_RING (chan, 1); + BEGIN_RING(chan, RING_3D(RT_SEPARATE_FRAG_DATA), 1); + OUT_RING (chan, 1); BEGIN_RING(chan, RING_3D(GP_SELECT), 1); OUT_RING (chan, 0x40); BEGIN_RING(chan, RING_3D(LAYER), 1); @@ -599,8 +588,6 @@ nvc0_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev) BEGIN_RING(chan, RING_3D(POINT_RASTER_RULES), 1); OUT_RING (chan, NVC0_3D_POINT_RASTER_RULES_OGL); - BEGIN_RING(chan, RING_3D(FRAG_COLOR_CLAMP_EN), 1); - OUT_RING (chan, 0x11111111); BEGIN_RING(chan, RING_3D(EDGEFLAG_ENABLE), 1); OUT_RING (chan, 1); diff --git a/src/gallium/drivers/nvc0/nvc0_shader_state.c b/src/gallium/drivers/nvc0/nvc0_shader_state.c index 7294eaa222e..287160e0b2a 100644 --- a/src/gallium/drivers/nvc0/nvc0_shader_state.c +++ b/src/gallium/drivers/nvc0/nvc0_shader_state.c @@ -97,8 +97,6 @@ nvc0_vertprog_validate(struct nvc0_context *nvc0) // BEGIN_RING(chan, RING_3D_(0x163c), 1); // OUT_RING (chan, 0); - BEGIN_RING(chan, RING_3D(VERT_COLOR_CLAMP_EN), 1); - OUT_RING (chan, 1); } void diff --git a/src/gallium/drivers/nvc0/nvc0_state.c b/src/gallium/drivers/nvc0/nvc0_state.c index ab68abcfb5a..b0b2065167e 100644 --- a/src/gallium/drivers/nvc0/nvc0_state.c +++ b/src/gallium/drivers/nvc0/nvc0_state.c @@ -93,9 +93,18 @@ nvc0_blend_state_create(struct pipe_context *pipe, SB_IMMED_3D(so, BLEND_INDEPENDENT, cso->independent_blend_enable); + if (!cso->logicop_enable) + SB_IMMED_3D(so, LOGIC_OP_ENABLE, 0); + + if (cso->logicop_enable) { + SB_BEGIN_3D(so, LOGIC_OP_ENABLE, 2); + SB_DATA (so, 1); + SB_DATA (so, nvgl_logicop_func(cso->logicop_func)); + + SB_IMMED_3D(so, BLEND_ENABLES, 0); + } else if (!cso->independent_blend_enable) { - SB_BEGIN_3D(so, BLEND_ENABLES, 1); - SB_DATA (so, cso->rt[0].blend_enable ? 0xff : 0); + SB_IMMED_3D(so, BLEND_ENABLES, cso->rt[0].blend_enable ? 0xff : 0); if (cso->rt[0].blend_enable) { SB_BEGIN_3D(so, BLEND_EQUATION_RGB, 5); @@ -108,7 +117,8 @@ nvc0_blend_state_create(struct pipe_context *pipe, SB_DATA (so, nvc0_blend_fac(cso->rt[0].alpha_dst_factor)); } - SB_BEGIN_3D(so, COLOR_MASK_BROADCAST, 1); + SB_IMMED_3D(so, COLOR_MASK_COMMON, 1); + SB_BEGIN_3D(so, COLOR_MASK(0), 1); SB_DATA (so, nvc0_colormask(cso->rt[0].colormask)); } else { uint8_t en = 0; @@ -126,23 +136,15 @@ nvc0_blend_state_create(struct pipe_context *pipe, SB_DATA (so, nvc0_blend_fac(cso->rt[i].alpha_src_factor)); SB_DATA (so, nvc0_blend_fac(cso->rt[i].alpha_dst_factor)); } - SB_BEGIN_3D(so, BLEND_ENABLES, 1); - SB_DATA (so, en); + SB_IMMED_3D(so, BLEND_ENABLES, en); + SB_IMMED_3D(so, COLOR_MASK_COMMON, 0); SB_BEGIN_3D(so, COLOR_MASK(0), 8); for (i = 0; i < 8; ++i) SB_DATA(so, nvc0_colormask(cso->rt[i].colormask)); } - if (cso->logicop_enable) { - SB_BEGIN_3D(so, LOGIC_OP_ENABLE, 2); - SB_DATA (so, 1); - SB_DATA (so, nvgl_logicop_func(cso->logicop_func)); - } else { - SB_IMMED_3D(so, LOGIC_OP_ENABLE, 0); - } - - assert(so->size < (sizeof(so->state) / sizeof(so->state[0]))); + assert(so->size <= (sizeof(so->state) / sizeof(so->state[0]))); return so; } @@ -161,6 +163,7 @@ nvc0_blend_state_delete(struct pipe_context *pipe, void *hwcso) FREE(hwcso); } +/* NOTE: ignoring line_last_pixel, using FALSE (set on screen init) */ static void * nvc0_rasterizer_state_create(struct pipe_context *pipe, const struct pipe_rasterizer_state *cso) @@ -183,19 +186,23 @@ nvc0_rasterizer_state_create(struct pipe_context *pipe, SB_IMMED_3D(so, PROVOKING_VERTEX_LAST, !cso->flatshade_first); SB_IMMED_3D(so, VERTEX_TWO_SIDE_ENABLE, cso->light_twoside); - SB_BEGIN_3D(so, LINE_WIDTH, 1); - SB_DATA (so, fui(cso->line_width)); + SB_IMMED_3D(so, VERT_COLOR_CLAMP_EN, cso->clamp_vertex_color); + SB_BEGIN_3D(so, FRAG_COLOR_CLAMP_EN, 1); + SB_DATA (so, cso->clamp_fragment_color ? 0x11111111 : 0x00000000); + SB_IMMED_3D(so, LINE_SMOOTH_ENABLE, cso->line_smooth); + if (cso->line_smooth) + SB_BEGIN_3D(so, LINE_WIDTH_SMOOTH, 1); + else + SB_BEGIN_3D(so, LINE_WIDTH_ALIASED, 1); + SB_DATA (so, fui(cso->line_width)); - SB_BEGIN_3D(so, LINE_STIPPLE_ENABLE, 1); + SB_IMMED_3D(so, LINE_STIPPLE_ENABLE, cso->line_stipple_enable); if (cso->line_stipple_enable) { - SB_DATA (so, 1); SB_BEGIN_3D(so, LINE_STIPPLE_PATTERN, 1); SB_DATA (so, (cso->line_stipple_pattern << 8) | cso->line_stipple_factor); - } else { - SB_DATA (so, 0); } SB_IMMED_3D(so, VP_POINT_SIZE_EN, cso->point_size_per_vertex); @@ -249,7 +256,7 @@ nvc0_rasterizer_state_create(struct pipe_context *pipe, SB_DATA (so, fui(cso->offset_units * 2.0f)); } - assert(so->size < (sizeof(so->state) / sizeof(so->state[0]))); + assert(so->size <= (sizeof(so->state) / sizeof(so->state[0]))); return (void *)so; } @@ -320,7 +327,7 @@ nvc0_zsa_state_create(struct pipe_context *pipe, SB_DATA (so, nvgl_comparison_op(cso->alpha.func)); } - assert(so->size < (sizeof(so->state) / sizeof(so->state[0]))); + assert(so->size <= (sizeof(so->state) / sizeof(so->state[0]))); return (void *)so; } diff --git a/src/gallium/drivers/nvc0/nvc0_state_validate.c b/src/gallium/drivers/nvc0/nvc0_state_validate.c index bb81480bab9..9b2a28150b1 100644 --- a/src/gallium/drivers/nvc0/nvc0_state_validate.c +++ b/src/gallium/drivers/nvc0/nvc0_state_validate.c @@ -1,6 +1,7 @@ +#include "util/u_math.h" + #include "nvc0_context.h" -#include "os/os_time.h" static void nvc0_validate_zcull(struct nvc0_context *nvc0) @@ -156,11 +157,10 @@ static void nvc0_validate_stencil_ref(struct nvc0_context *nvc0) { struct nouveau_channel *chan = nvc0->screen->base.channel; + const ubyte *ref = &nvc0->stencil_ref.ref_value[0]; - BEGIN_RING(chan, RING_3D(STENCIL_FRONT_FUNC_REF), 1); - OUT_RING (chan, nvc0->stencil_ref.ref_value[0]); - BEGIN_RING(chan, RING_3D(STENCIL_BACK_FUNC_REF), 1); - OUT_RING (chan, nvc0->stencil_ref.ref_value[1]); + IMMED_RING(chan, RING_3D(STENCIL_FRONT_FUNC_REF), ref[0]); + IMMED_RING(chan, RING_3D(STENCIL_BACK_FUNC_REF), ref[1]); } static void @@ -214,10 +214,11 @@ nvc0_validate_viewport(struct nvc0_context *nvc0) /* now set the viewport rectangle to viewport dimensions for clipping */ - x = (int)(vp->translate[0] - fabsf(vp->scale[0])); - y = (int)(vp->translate[1] - fabsf(vp->scale[1])); - w = (int)fabsf(2.0f * vp->scale[0]); - h = (int)fabsf(2.0f * vp->scale[1]); + x = util_iround(MAX2(0.0f, vp->translate[0] - fabsf(vp->scale[0]))); + y = util_iround(MAX2(0.0f, vp->translate[1] - fabsf(vp->scale[1]))); + w = util_iround(vp->translate[0] + fabsf(vp->scale[0])) - x; + h = util_iround(vp->translate[1] + fabsf(vp->scale[1])) - y; + zmin = vp->translate[2] - fabsf(vp->scale[2]); zmax = vp->translate[2] + fabsf(vp->scale[2]); diff --git a/src/gallium/drivers/nvc0/nvc0_stateobj.h b/src/gallium/drivers/nvc0/nvc0_stateobj.h index 8222f9375ee..e0fe9df25d7 100644 --- a/src/gallium/drivers/nvc0/nvc0_stateobj.h +++ b/src/gallium/drivers/nvc0/nvc0_stateobj.h @@ -19,19 +19,19 @@ struct nvc0_blend_stateobj { struct pipe_blend_state pipe; int size; - uint32_t state[72]; + uint32_t state[70]; }; struct nvc0_rasterizer_stateobj { struct pipe_rasterizer_state pipe; int size; - uint32_t state[36]; + uint32_t state[38]; }; struct nvc0_zsa_stateobj { struct pipe_depth_stencil_alpha_state pipe; int size; - uint32_t state[29]; + uint32_t state[26]; }; struct nvc0_vertex_element { diff --git a/src/gallium/drivers/nvc0/nvc0_surface.c b/src/gallium/drivers/nvc0/nvc0_surface.c index fc5f45ea25d..6be3702bddc 100644 --- a/src/gallium/drivers/nvc0/nvc0_surface.c +++ b/src/gallium/drivers/nvc0/nvc0_surface.c @@ -27,6 +27,7 @@ #include "util/u_inlines.h" #include "util/u_pack_color.h" #include "util/u_format.h" +#include "util/u_surface.h" #include "nvc0_context.h" #include "nvc0_resource.h" @@ -234,6 +235,13 @@ nvc0_resource_copy_region(struct pipe_context *pipe, int ret; unsigned dst_layer = dstz, src_layer = src_box->z; + /* Fallback for buffers. */ + if (dst->target == PIPE_BUFFER && src->target == PIPE_BUFFER) { + util_resource_copy_region(pipe, dst, dst_level, dstx, dsty, dstz, + src, src_level, src_box); + return; + } + nv04_resource(dst)->status |= NOUVEAU_BUFFER_STATUS_GPU_WRITING; if (src->format == dst->format) { diff --git a/src/gallium/drivers/nvc0/nvc0_tgsi_to_nc.c b/src/gallium/drivers/nvc0/nvc0_tgsi_to_nc.c index a44d330c731..d57be916696 100644 --- a/src/gallium/drivers/nvc0/nvc0_tgsi_to_nc.c +++ b/src/gallium/drivers/nvc0/nvc0_tgsi_to_nc.c @@ -22,8 +22,6 @@ #include <unistd.h> -#define NOUVEAU_DEBUG 1 - #include "pipe/p_shader_tokens.h" #include "tgsi/tgsi_parse.h" #include "tgsi/tgsi_util.h" @@ -200,7 +198,7 @@ static INLINE void bld_warn_uninitialized(struct bld_context *bld, int kind, struct bld_register *reg, struct nv_basic_block *b) { -#ifdef NOUVEAU_DEBUG +#if NV50_DEBUG & NV50_DEBUG_SHADER long i = (reg - &bld->tvs[0][0]) / 4; long c = (reg - &bld->tvs[0][0]) & 3; @@ -259,6 +257,12 @@ fetch_by_bb(struct bld_register *reg, fetch_by_bb(reg, vals, n, b->in[i]); } +static INLINE boolean +nvc0_bblock_is_terminated(struct nv_basic_block *bb) +{ + return bb->exit && bb->exit->terminator; +} + static INLINE struct nv_value * bld_load_imm_u32(struct bld_context *bld, uint32_t u); @@ -1465,7 +1469,7 @@ bld_instruction(struct bld_context *bld, uint opcode = translate_opcode(insn->Instruction.Opcode); uint8_t mask = insn->Dst[0].Register.WriteMask; -#ifdef NOUVEAU_DEBUG +#if NV50_DEBUG & NV50_DEBUG_PROG_IR debug_printf("bld_instruction:"); tgsi_dump_instruction(insn, 1); #endif @@ -1637,8 +1641,7 @@ bld_instruction(struct bld_context *bld, { struct nv_basic_block *b = new_basic_block(bld->pc); - if (bld->pc->current_block->exit && - !bld->pc->current_block->exit->terminator) + if (!nvc0_bblock_is_terminated(bld->pc->current_block)) bld_flow(bld, NV_OP_BRA, NULL, NV_CC_P, b, FALSE); --bld->cond_lvl; diff --git a/src/gallium/drivers/nvfx/nvfx_context.c b/src/gallium/drivers/nvfx/nvfx_context.c index 2bcb93d93e3..2b1510264a1 100644 --- a/src/gallium/drivers/nvfx/nvfx_context.c +++ b/src/gallium/drivers/nvfx/nvfx_context.c @@ -13,7 +13,7 @@ nvfx_flush(struct pipe_context *pipe, struct nvfx_context *nvfx = nvfx_context(pipe); struct nvfx_screen *screen = nvfx->screen; struct nouveau_channel *chan = screen->base.channel; - struct nouveau_grobj *eng3d = screen->eng3d; + /*struct nouveau_grobj *eng3d = screen->eng3d;*/ /* XXX: we need to actually be intelligent here */ /* XXX This flag wasn't set by the state tracker anyway. */ diff --git a/src/gallium/drivers/nvfx/nvfx_screen.c b/src/gallium/drivers/nvfx/nvfx_screen.c index 8742f60c163..4a97dfb9c25 100644 --- a/src/gallium/drivers/nvfx/nvfx_screen.c +++ b/src/gallium/drivers/nvfx/nvfx_screen.c @@ -1,5 +1,6 @@ #include "pipe/p_screen.h" #include "pipe/p_state.h" +#include "util/u_format.h" #include "util/u_format_s3tc.h" #include "util/u_simple_screen.h" @@ -82,6 +83,8 @@ nvfx_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) return 0; // TODO: implement primitive restart case PIPE_CAP_SHADER_STENCIL_EXPORT: return 0; + case PIPE_CAP_MIXED_COLORBUFFER_FORMATS: + return 0; default: NOUVEAU_ERR("Warning: unknown PIPE_CAP %d\n", param); return 0; @@ -207,6 +210,9 @@ nvfx_screen_is_format_supported(struct pipe_screen *pscreen, { struct nvfx_screen *screen = nvfx_screen(pscreen); + if (!util_format_is_supported(format, bind)) + return FALSE; + if (sample_count > 1) return FALSE; diff --git a/src/gallium/drivers/nvfx/nvfx_surface.c b/src/gallium/drivers/nvfx/nvfx_surface.c index be31853d717..ced26494e15 100644 --- a/src/gallium/drivers/nvfx/nvfx_surface.c +++ b/src/gallium/drivers/nvfx/nvfx_surface.c @@ -33,6 +33,7 @@ #include "util/u_memory.h" #include "util/u_pack_color.h" #include "util/u_blitter.h" +#include "util/u_surface.h" #include "nouveau/nouveau_winsys.h" #include "nouveau/nouveau_screen.h" @@ -252,6 +253,13 @@ nvfx_resource_copy_region(struct pipe_context *pipe, if(!w || !h) return; + /* Fallback for buffers. */ + if (dstr->target == PIPE_BUFFER && srcr->target == PIPE_BUFFER) { + util_resource_copy_region(pipe, dstr, dst_level, dstx, dsty, dstz, + srcr, src_level, src_box); + return; + } + if(copy_threshold < 0) copy_threshold = debug_get_num_option("NOUVEAU_COPY_THRESHOLD", 4); diff --git a/src/gallium/drivers/r300/Makefile b/src/gallium/drivers/r300/Makefile index 66d900ebb5f..c9401b99f1c 100644 --- a/src/gallium/drivers/r300/Makefile +++ b/src/gallium/drivers/r300/Makefile @@ -29,8 +29,7 @@ C_SOURCES = \ r300_transfer.c LIBRARY_INCLUDES = \ - -I$(TOP)/src/mesa/drivers/dri/r300/compiler \ - -I$(TOP)/src/gallium/winsys/drm/radeon/core + -I$(TOP)/src/mesa/drivers/dri/r300/compiler COMPILER_ARCHIVE = $(TOP)/src/mesa/drivers/dri/r300/compiler/libr300compiler.a diff --git a/src/gallium/drivers/r300/SConscript b/src/gallium/drivers/r300/SConscript index b49db937994..3af157a7956 100644 --- a/src/gallium/drivers/r300/SConscript +++ b/src/gallium/drivers/r300/SConscript @@ -6,7 +6,6 @@ env = env.Clone() # add the paths for r300compiler env.Append(CPPPATH = [ '#/src/mesa/drivers/dri/r300/compiler', - '#/src/gallium/winsys/drm/radeon/core', '#/include', '#/src/mesa', ]) diff --git a/src/gallium/drivers/r300/r300_blit.c b/src/gallium/drivers/r300/r300_blit.c index 37b635fd120..1217488bac7 100644 --- a/src/gallium/drivers/r300/r300_blit.c +++ b/src/gallium/drivers/r300/r300_blit.c @@ -23,10 +23,10 @@ #include "r300_context.h" #include "r300_emit.h" #include "r300_texture.h" -#include "r300_winsys.h" #include "util/u_format.h" #include "util/u_pack_color.h" +#include "util/u_surface.h" enum r300_blitter_op /* bitmask */ { @@ -206,7 +206,7 @@ static void r300_clear(struct pipe_context* pipe, (struct r300_hyperz_state*)r300->hyperz_state.state; uint32_t width = fb->width; uint32_t height = fb->height; - boolean can_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ); + boolean can_hyperz = r300->rws->get_value(r300->rws, RADEON_VID_CAN_HYPERZ); uint32_t hyperz_dcv = hyperz->zb_depthclearvalue; /* Enable fast Z clear. @@ -253,17 +253,15 @@ static void r300_clear(struct pipe_context* pipe, } else if (r300->zmask_clear.dirty || r300->hiz_clear.dirty) { /* Just clear zmask and hiz now, this does not use the standard draw * procedure. */ - unsigned dwords; - /* Calculate zmask_clear and hiz_clear atom sizes. */ - r300_update_hyperz_state(r300); - dwords = (r300->zmask_clear.dirty ? r300->zmask_clear.size : 0) + - (r300->hiz_clear.dirty ? r300->hiz_clear.size : 0) + - r300_get_num_cs_end_dwords(r300); + unsigned dwords = + (r300->zmask_clear.dirty ? r300->zmask_clear.size : 0) + + (r300->hiz_clear.dirty ? r300->hiz_clear.size : 0) + + r300_get_num_cs_end_dwords(r300); /* Reserve CS space. */ - if (dwords > (R300_MAX_CMDBUF_DWORDS - r300->cs->cdw)) { - r300_flush(&r300->context, R300_FLUSH_ASYNC, NULL); + if (dwords > (RADEON_MAX_CMDBUF_DWORDS - r300->cs->cdw)) { + r300_flush(&r300->context, RADEON_FLUSH_ASYNC, NULL); } /* Emit clear packets. */ @@ -306,16 +304,10 @@ static void r300_clear_render_target(struct pipe_context *pipe, { struct r300_context *r300 = r300_context(pipe); - r300->hyperz_locked = TRUE; - r300_mark_atom_dirty(r300, &r300->hyperz_state); - r300_blitter_begin(r300, R300_CLEAR_SURFACE); util_blitter_clear_render_target(r300->blitter, dst, rgba, dstx, dsty, width, height); r300_blitter_end(r300); - - r300->hyperz_locked = FALSE; - r300_mark_atom_dirty(r300, &r300->hyperz_state); } /* Clear a region of a depth stencil surface. */ @@ -334,21 +326,14 @@ static void r300_clear_depth_stencil(struct pipe_context *pipe, if (r300->zmask_in_use && !r300->hyperz_locked) { if (fb->zsbuf->texture == dst->texture) { r300_decompress_zmask(r300); - } else { - r300->hyperz_locked = TRUE; - r300_mark_atom_dirty(r300, &r300->hyperz_state); } } + /* XXX Do not decompress ZMask of the currently-set zbuffer. */ r300_blitter_begin(r300, R300_CLEAR_SURFACE); util_blitter_clear_depth_stencil(r300->blitter, dst, clear_flags, depth, stencil, dstx, dsty, width, height); r300_blitter_end(r300); - - if (r300->hyperz_locked) { - r300->hyperz_locked = FALSE; - r300_mark_atom_dirty(r300, &r300->hyperz_state); - } } void r300_decompress_zmask(struct r300_context *r300) @@ -431,13 +416,17 @@ static void r300_resource_copy_region(struct pipe_context *pipe, util_format_description(dst->format); struct pipe_box box; + /* Fallback for buffers. */ + if (dst->target == PIPE_BUFFER && src->target == PIPE_BUFFER) { + util_resource_copy_region(pipe, dst, dst_level, dstx, dsty, dstz, + src, src_level, src_box); + return; + } + if (r300->zmask_in_use && !r300->hyperz_locked) { if (fb->zsbuf->texture == src || fb->zsbuf->texture == dst) { r300_decompress_zmask(r300); - } else { - r300->hyperz_locked = TRUE; - r300_mark_atom_dirty(r300, &r300->hyperz_state); } } @@ -513,11 +502,6 @@ static void r300_resource_copy_region(struct pipe_context *pipe, r300_resource_set_properties(pipe->screen, src, 0, &old_src); if (old_dst.format != new_dst.format) r300_resource_set_properties(pipe->screen, dst, 0, &old_dst); - - if (r300->hyperz_locked) { - r300->hyperz_locked = FALSE; - r300_mark_atom_dirty(r300, &r300->hyperz_state); - } } void r300_init_blit_functions(struct r300_context *r300) diff --git a/src/gallium/drivers/r300/r300_chipset.c b/src/gallium/drivers/r300/r300_chipset.c index 990acea9f44..4949703120d 100644 --- a/src/gallium/drivers/r300/r300_chipset.c +++ b/src/gallium/drivers/r300/r300_chipset.c @@ -419,4 +419,5 @@ void r300_parse_chipset(struct r300_capabilities* caps) caps->is_rv350 = caps->family >= CHIP_FAMILY_RV350; caps->z_compress = caps->is_rv350 ? R300_ZCOMP_8X8 : R300_ZCOMP_4X4; caps->dxtc_swizzle = caps->is_r400 || caps->is_r500; + caps->has_us_format = caps->family == CHIP_FAMILY_R520; } diff --git a/src/gallium/drivers/r300/r300_chipset.h b/src/gallium/drivers/r300/r300_chipset.h index 68943d561ba..d0050bed2e8 100644 --- a/src/gallium/drivers/r300/r300_chipset.h +++ b/src/gallium/drivers/r300/r300_chipset.h @@ -90,6 +90,8 @@ struct r300_capabilities { boolean high_second_pipe; /* DXTC texture swizzling. */ boolean dxtc_swizzle; + /* Whether R500_US_FORMAT0_0 exists (R520-only and depends on DRM). */ + boolean has_us_format; }; /* Enumerations for legibility and telling which card we're running on. */ diff --git a/src/gallium/drivers/r300/r300_context.c b/src/gallium/drivers/r300/r300_context.c index 720d666d98c..15d1278c3bb 100644 --- a/src/gallium/drivers/r300/r300_context.c +++ b/src/gallium/drivers/r300/r300_context.c @@ -32,7 +32,6 @@ #include "r300_emit.h" #include "r300_screen.h" #include "r300_screen_buffer.h" -#include "r300_winsys.h" static void r300_update_num_contexts(struct r300_screen *r300screen, int diff) @@ -167,8 +166,8 @@ static boolean r300_setup_atoms(struct r300_context* r300) boolean is_rv350 = r300->screen->caps.is_rv350; boolean is_r500 = r300->screen->caps.is_r500; boolean has_tcl = r300->screen->caps.has_tcl; - boolean drm_2_6_0 = r300->rws->get_value(r300->rws, R300_VID_DRM_2_6_0); - boolean can_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ); + boolean drm_2_6_0 = r300->rws->get_value(r300->rws, RADEON_VID_DRM_2_6_0); + boolean can_hyperz = r300->rws->get_value(r300->rws, RADEON_VID_CAN_HYPERZ); boolean has_hiz_ram = r300->screen->caps.hiz_ram > 0; /* Create the actual atom list. @@ -379,7 +378,7 @@ static void r300_init_states(struct pipe_context *pipe) if (r300->screen->caps.is_r500 || (r300->screen->caps.is_rv350 && - r300->rws->get_value(r300->rws, R300_VID_DRM_2_6_0))) { + r300->rws->get_value(r300->rws, RADEON_VID_DRM_2_6_0))) { OUT_CB_REG(R300_GB_Z_PEQ_CONFIG, 0); } END_CB; @@ -391,7 +390,7 @@ struct pipe_context* r300_create_context(struct pipe_screen* screen, { struct r300_context* r300 = CALLOC_STRUCT(r300_context); struct r300_screen* r300screen = r300_screen(screen); - struct r300_winsys_screen *rws = r300screen->rws; + struct radeon_winsys *rws = r300screen->rws; if (!r300) return NULL; @@ -514,19 +513,19 @@ struct pipe_context* r300_create_context(struct pipe_screen* screen, "r300: DRM version: %d.%d.%d, Name: %s, ID: 0x%04x, GB: %d, Z: %d\n" "r300: GART size: %d MB, VRAM size: %d MB\n" "r300: AA compression: %s, Z compression: %s, HiZ: %s\n", - rws->get_value(rws, R300_VID_DRM_MAJOR), - rws->get_value(rws, R300_VID_DRM_MINOR), - rws->get_value(rws, R300_VID_DRM_PATCHLEVEL), + rws->get_value(rws, RADEON_VID_DRM_MAJOR), + rws->get_value(rws, RADEON_VID_DRM_MINOR), + rws->get_value(rws, RADEON_VID_DRM_PATCHLEVEL), screen->get_name(screen), - rws->get_value(rws, R300_VID_PCI_ID), - rws->get_value(rws, R300_VID_GB_PIPES), - rws->get_value(rws, R300_VID_Z_PIPES), - rws->get_value(rws, R300_VID_GART_SIZE) >> 20, - rws->get_value(rws, R300_VID_VRAM_SIZE) >> 20, - rws->get_value(rws, R300_CAN_AACOMPRESS) ? "YES" : "NO", - rws->get_value(rws, R300_CAN_HYPERZ) && + rws->get_value(rws, RADEON_VID_PCI_ID), + rws->get_value(rws, RADEON_VID_R300_GB_PIPES), + rws->get_value(rws, RADEON_VID_R300_Z_PIPES), + rws->get_value(rws, RADEON_VID_GART_SIZE) >> 20, + rws->get_value(rws, RADEON_VID_VRAM_SIZE) >> 20, + rws->get_value(rws, RADEON_VID_CAN_AACOMPRESS) ? "YES" : "NO", + rws->get_value(rws, RADEON_VID_CAN_HYPERZ) && r300->screen->caps.zmask_ram ? "YES" : "NO", - rws->get_value(rws, R300_CAN_HYPERZ) && + rws->get_value(rws, RADEON_VID_CAN_HYPERZ) && r300->screen->caps.hiz_ram ? "YES" : "NO"); } diff --git a/src/gallium/drivers/r300/r300_context.h b/src/gallium/drivers/r300/r300_context.h index e395f41290e..8a0a54cf1e9 100644 --- a/src/gallium/drivers/r300/r300_context.h +++ b/src/gallium/drivers/r300/r300_context.h @@ -34,7 +34,7 @@ #include "r300_defines.h" #include "r300_screen.h" -#include "r300_winsys.h" +#include "../../winsys/radeon/drm/radeon_winsys.h" struct u_upload_mgr; struct r300_context; @@ -190,6 +190,7 @@ struct r300_texture_format_state { uint32_t format1; /* R300_TX_FORMAT1: 0x44c0 */ uint32_t format2; /* R300_TX_FORMAT2: 0x4500 */ uint32_t tile_config; /* R300_TX_OFFSET (subset thereof) */ + uint32_t us_format0; /* R500_US_FORMAT0_0: 0x4640 (through 15) */ }; struct r300_sampler_view { @@ -211,7 +212,7 @@ struct r300_texture_sampler_state { struct r300_texture_format_state format; uint32_t filter0; /* R300_TX_FILTER0: 0x4400 */ uint32_t filter1; /* R300_TX_FILTER1: 0x4440 */ - uint32_t border_color; /* R300_TX_BORDER_COLOR: 0x45c0 */ + uint32_t border_color; /* R300_TX_BORDER_COLOR: 0x45c0 */ }; struct r300_textures_state { @@ -290,12 +291,12 @@ struct r300_query { boolean begin_emitted; /* The buffer where query results are stored. */ - struct r300_winsys_bo *buf; - struct r300_winsys_cs_handle *cs_buf; + struct pb_buffer *buf; + struct radeon_winsys_cs_handle *cs_buf; /* The size of the buffer. */ unsigned buffer_size; /* The domain of the buffer. */ - enum r300_buffer_domain domain; + enum radeon_bo_domain domain; /* Linked list members. */ struct r300_query* prev; @@ -306,10 +307,10 @@ struct r300_surface { struct pipe_surface base; /* Winsys buffer backing the texture. */ - struct r300_winsys_bo *buf; - struct r300_winsys_cs_handle *cs_buf; + struct pb_buffer *buf; + struct radeon_winsys_cs_handle *cs_buf; - enum r300_buffer_domain domain; + enum radeon_bo_domain domain; uint32_t offset; /* COLOROFFSET or DEPTHOFFSET. */ uint32_t pitch; /* COLORPITCH or DEPTHPITCH. */ @@ -339,8 +340,8 @@ struct r300_texture_desc { /* Buffer tiling. * Macrotiling is specified per-level because small mipmaps cannot * be macrotiled. */ - enum r300_buffer_tiling microtile; - enum r300_buffer_tiling macrotile[R300_MAX_TEXTURE_LEVELS]; + enum radeon_bo_layout microtile; + enum radeon_bo_layout macrotile[R300_MAX_TEXTURE_LEVELS]; /* Offsets into the buffer. */ unsigned offset_in_bytes[R300_MAX_TEXTURE_LEVELS]; @@ -396,9 +397,9 @@ struct r300_resource struct u_vbuf_resource b; /* Winsys buffer backing this resource. */ - struct r300_winsys_bo *buf; - struct r300_winsys_cs_handle *cs_buf; - enum r300_buffer_domain domain; + struct pb_buffer *buf; + struct radeon_winsys_cs_handle *cs_buf; + enum radeon_bo_domain domain; unsigned buf_size; /* Constant buffers are in user memory. */ @@ -447,14 +448,21 @@ enum r300_hiz_func { HIZ_FUNC_MIN, }; +/* For deferred fragment shader state validation. */ +enum r300_fs_validity_status { + FRAGMENT_SHADER_VALID, /* No need to change/validate the FS. */ + FRAGMENT_SHADER_MAYBE_DIRTY,/* Validate the FS if external state was changed. */ + FRAGMENT_SHADER_DIRTY /* Always validate the FS (if the FS was changed) */ +}; + struct r300_context { /* Parent class */ struct pipe_context context; /* The interface to the windowing system, etc. */ - struct r300_winsys_screen *rws; + struct radeon_winsys *rws; /* The command stream. */ - struct r300_winsys_cs *cs; + struct radeon_winsys_cs *cs; /* Screen. */ struct r300_screen *screen; @@ -580,6 +588,8 @@ struct r300_context { int sprite_coord_enable; /* Whether two-sided color selection is enabled (AKA light_twoside). */ boolean two_sided_color; + /* Whether fragment color clamping is enabled. */ + boolean frag_clamp; /* Whether fast color clear is enabled. */ boolean cbzb_clear; /* Whether ZMASK is enabled. */ @@ -596,6 +606,10 @@ struct r300_context { enum r300_hiz_func hiz_func; /* HiZ clear value. */ uint32_t hiz_clear_value; + /* Whether fragment shader needs to be validated. */ + enum r300_fs_validity_status fs_status; + /* Framebuffer multi-write. */ + boolean fb_multiwrite; void *dsa_decompress_zmask; diff --git a/src/gallium/drivers/r300/r300_cs.h b/src/gallium/drivers/r300/r300_cs.h index 2e52dfa43c6..c208e672f42 100644 --- a/src/gallium/drivers/r300/r300_cs.h +++ b/src/gallium/drivers/r300/r300_cs.h @@ -29,7 +29,6 @@ #include "r300_reg.h" #include "r300_context.h" -#include "r300_winsys.h" /* Yes, I know macros are ugly. However, they are much prettier than the code * that they neatly hide away, and don't have the cost of function setup,so @@ -40,14 +39,14 @@ */ #define CS_LOCALS(context) \ - struct r300_winsys_cs *cs_copy = (context)->cs; \ - struct r300_winsys_screen *cs_winsys = (context)->rws; \ + struct radeon_winsys_cs *cs_copy = (context)->cs; \ + struct radeon_winsys *cs_winsys = (context)->rws; \ int cs_count = 0; (void) cs_count; (void) cs_winsys; #ifdef DEBUG #define BEGIN_CS(size) do { \ - assert(size <= (R300_MAX_CMDBUF_DWORDS - cs_copy->cdw)); \ + assert(size <= (RADEON_MAX_CMDBUF_DWORDS - cs_copy->cdw)); \ cs_count = size; \ } while (0) diff --git a/src/gallium/drivers/r300/r300_defines.h b/src/gallium/drivers/r300/r300_defines.h index 2d111f9158d..30e9befad21 100644 --- a/src/gallium/drivers/r300/r300_defines.h +++ b/src/gallium/drivers/r300/r300_defines.h @@ -32,19 +32,4 @@ #define R300_INVALID_FORMAT 0xffff -/* Tiling flags. */ -enum r300_buffer_tiling { - R300_BUFFER_LINEAR = 0, - R300_BUFFER_TILED, - R300_BUFFER_SQUARETILED, - - R300_BUFFER_UNKNOWN, - R300_BUFFER_SELECT_LAYOUT = R300_BUFFER_UNKNOWN -}; - -enum r300_buffer_domain { /* bitfield */ - R300_DOMAIN_GTT = 2, - R300_DOMAIN_VRAM = 4 -}; - #endif diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c index e17a907e77e..62435c5e2e2 100644 --- a/src/gallium/drivers/r300/r300_emit.c +++ b/src/gallium/drivers/r300/r300_emit.c @@ -375,7 +375,7 @@ void r300_emit_fb_state(struct r300_context* r300, unsigned size, void* state) struct pipe_framebuffer_state* fb = (struct pipe_framebuffer_state*)state; struct r300_surface* surf; unsigned i; - boolean can_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ); + boolean can_hyperz = r300->rws->get_value(r300->rws, RADEON_VID_CAN_HYPERZ); uint32_t rb3d_cctl = 0; CS_LOCALS(r300); @@ -387,8 +387,7 @@ void r300_emit_fb_state(struct r300_context* r300, unsigned size, void* state) if (r300->screen->caps.is_r500) { rb3d_cctl = R300_RB3D_CCTL_INDEPENDENT_COLORFORMAT_ENABLE_ENABLE; } - if (fb->nr_cbufs && - r300_fragment_shader_writes_all(r300_fs(r300))) { + if (fb->nr_cbufs && r300->fb_multiwrite) { rb3d_cctl |= R300_RB3D_CCTL_NUM_MULTIWRITES(fb->nr_cbufs); } @@ -483,7 +482,7 @@ void r300_emit_fb_state_pipelined(struct r300_context *r300, /* If we use the multiwrite feature, the colorbuffers 2,3,4 must be * marked as UNUSED in the US block. */ - if (r300_fragment_shader_writes_all(r300_fs(r300))) { + if (r300->fb_multiwrite) { num_cbufs = MIN2(num_cbufs, 1); } @@ -495,6 +494,11 @@ void r300_emit_fb_state_pipelined(struct r300_context *r300, for (i = 0; i < num_cbufs; i++) { OUT_CS(r300_surface(fb->cbufs[i])->format); } + for (; i < 1; i++) { + OUT_CS(R300_US_OUT_FMT_C4_8 | + R300_C0_SEL_B | R300_C1_SEL_G | + R300_C2_SEL_R | R300_C3_SEL_A); + } for (; i < 4; i++) { OUT_CS(R300_US_OUT_FMT_UNUSED); } @@ -771,6 +775,7 @@ void r300_emit_textures_state(struct r300_context *r300, struct r300_texture_sampler_state *texstate; struct r300_resource *tex; unsigned i; + boolean has_us_format = r300->screen->caps.has_us_format; CS_LOCALS(r300); BEGIN_CS(size); @@ -792,6 +797,11 @@ void r300_emit_textures_state(struct r300_context *r300, OUT_CS_REG(R300_TX_OFFSET_0 + (i * 4), texstate->format.tile_config); OUT_CS_RELOC(tex); + + if (has_us_format) { + OUT_CS_REG(R500_US_FORMAT0_0 + (i * 4), + texstate->format.us_format0); + } } } END_CS; @@ -1221,7 +1231,7 @@ validate: if (flushed) return FALSE; - r300_flush(&r300->context, R300_FLUSH_ASYNC, NULL); + r300_flush(&r300->context, RADEON_FLUSH_ASYNC, NULL); flushed = TRUE; goto validate; } diff --git a/src/gallium/drivers/r300/r300_flush.c b/src/gallium/drivers/r300/r300_flush.c index b3d0d344ec4..de7d77d608b 100644 --- a/src/gallium/drivers/r300/r300_flush.c +++ b/src/gallium/drivers/r300/r300_flush.c @@ -38,7 +38,7 @@ void r300_flush(struct pipe_context *pipe, { struct r300_context *r300 = r300_context(pipe); struct r300_atom *atom; - struct r300_winsys_bo **rfence = (struct r300_winsys_bo**)fence; + struct pb_buffer **rfence = (struct pb_buffer**)fence; if (r300->draw && !r300->draw_vbo_locked) r300_draw_flush_vbuf(r300); @@ -48,11 +48,11 @@ void r300_flush(struct pipe_context *pipe, *rfence = r300->rws->buffer_create(r300->rws, 1, 1, PIPE_BIND_VERTEX_BUFFER, PIPE_USAGE_STATIC, - R300_DOMAIN_GTT); + RADEON_DOMAIN_GTT); /* Add the fence as a dummy relocation. */ r300->rws->cs_add_reloc(r300->cs, r300->rws->buffer_get_cs_handle(*rfence), - R300_DOMAIN_GTT, R300_DOMAIN_GTT); + RADEON_DOMAIN_GTT, RADEON_DOMAIN_GTT); } if (r300->dirty_hw) { diff --git a/src/gallium/drivers/r300/r300_fs.c b/src/gallium/drivers/r300/r300_fs.c index 4c502fefb3f..e3a1bc4a0f4 100644 --- a/src/gallium/drivers/r300/r300_fs.c +++ b/src/gallium/drivers/r300/r300_fs.c @@ -22,6 +22,7 @@ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE * USE OR OTHER DEALINGS IN THE SOFTWARE. */ +#include "util/u_format.h" #include "util/u_math.h" #include "util/u_memory.h" @@ -34,6 +35,7 @@ #include "r300_screen.h" #include "r300_fs.h" #include "r300_reg.h" +#include "r300_texture.h" #include "r300_tgsi_to_rc.h" #include "radeon_code.h" @@ -146,10 +148,10 @@ static void get_external_state( struct r300_fragment_program_external_state* state) { struct r300_textures_state *texstate = r300->textures_state.state; + struct r300_rs_state *rs = r300->rs_state.state; unsigned i; - unsigned char *swizzle; - state->frag_clamp = 0; + state->frag_clamp = rs ? rs->rs.clamp_fragment_color : 0; for (i = 0; i < texstate->sampler_state_count; i++) { struct r300_sampler_state *s = texstate->sampler_states[i]; @@ -160,27 +162,37 @@ static void get_external_state( continue; } - t = r300_resource(texstate->sampler_views[i]->base.texture); + t = r300_resource(v->base.texture); if (s->state.compare_mode == PIPE_TEX_COMPARE_R_TO_TEXTURE) { state->unit[i].compare_mode_enabled = 1; - /* Pass depth texture swizzling to the compiler. */ - if (texstate->sampler_views[i]) { - swizzle = texstate->sampler_views[i]->swizzle; - - state->unit[i].depth_texture_swizzle = - RC_MAKE_SWIZZLE(swizzle[0], swizzle[1], - swizzle[2], swizzle[3]); - } else { - state->unit[i].depth_texture_swizzle = RC_SWIZZLE_XYZW; - } - /* Fortunately, no need to translate this. */ state->unit[i].texture_compare_func = s->state.compare_func; } state->unit[i].non_normalized_coords = !s->state.normalized_coords; + state->unit[i].convert_unorm_to_snorm = + v->base.format == PIPE_FORMAT_RGTC1_SNORM || + v->base.format == PIPE_FORMAT_LATC1_SNORM; + + /* Pass texture swizzling to the compiler, some lowering passes need it. */ + if (v->base.format == PIPE_FORMAT_RGTC1_SNORM || + v->base.format == PIPE_FORMAT_LATC1_SNORM) { + unsigned char swizzle[4]; + + util_format_combine_swizzles(swizzle, + util_format_description(v->base.format)->swizzle, + v->swizzle); + + state->unit[i].texture_swizzle = + RC_MAKE_SWIZZLE(swizzle[0], swizzle[1], + swizzle[2], swizzle[3]); + } else if (state->unit[i].compare_mode_enabled) { + state->unit[i].texture_swizzle = + RC_MAKE_SWIZZLE(v->swizzle[0], v->swizzle[1], + v->swizzle[2], v->swizzle[3]); + } /* XXX this should probably take into account STR, not just S. */ if (t->tex.is_npot) { diff --git a/src/gallium/drivers/r300/r300_hyperz.c b/src/gallium/drivers/r300/r300_hyperz.c index ecaadf4af8e..ef330f34c9e 100644 --- a/src/gallium/drivers/r300/r300_hyperz.c +++ b/src/gallium/drivers/r300/r300_hyperz.c @@ -24,7 +24,6 @@ #include "r300_context.h" #include "r300_reg.h" #include "r300_fs.h" -#include "r300_winsys.h" #include "util/u_format.h" #include "util/u_mm.h" @@ -153,7 +152,7 @@ static void r300_update_hyperz(struct r300_context* r300) } if (!zstex || - !r300->rws->get_value(r300->rws, R300_CAN_HYPERZ)) + !r300->rws->get_value(r300->rws, RADEON_VID_CAN_HYPERZ)) return; /* Zbuffer compression. */ diff --git a/src/gallium/drivers/r300/r300_public.h b/src/gallium/drivers/r300/r300_public.h index 8e7a963c55d..b6059203ff1 100644 --- a/src/gallium/drivers/r300/r300_public.h +++ b/src/gallium/drivers/r300/r300_public.h @@ -2,8 +2,8 @@ #ifndef R300_PUBLIC_H #define R300_PUBLIC_H -struct r300_winsys_screen; +struct radeon_winsys; -struct pipe_screen* r300_screen_create(struct r300_winsys_screen *rws); +struct pipe_screen* r300_screen_create(struct radeon_winsys *rws); #endif diff --git a/src/gallium/drivers/r300/r300_query.c b/src/gallium/drivers/r300/r300_query.c index 717485f43cb..9752a519491 100644 --- a/src/gallium/drivers/r300/r300_query.c +++ b/src/gallium/drivers/r300/r300_query.c @@ -26,7 +26,6 @@ #include "r300_context.h" #include "r300_screen.h" #include "r300_emit.h" -#include "r300_winsys.h" #include <stdio.h> @@ -46,7 +45,7 @@ static struct pipe_query *r300_create_query(struct pipe_context *pipe, return NULL; q->type = query_type; - q->domain = R300_DOMAIN_GTT; + q->domain = RADEON_DOMAIN_GTT; q->buffer_size = 4096; if (r300screen->caps.family == CHIP_FAMILY_RV530) @@ -70,7 +69,7 @@ static void r300_destroy_query(struct pipe_context* pipe, { struct r300_query* q = r300_query(query); - r300_winsys_bo_reference(&q->buf, NULL); + pb_reference(&q->buf, NULL); remove_from_list(q); FREE(query); } diff --git a/src/gallium/drivers/r300/r300_render.c b/src/gallium/drivers/r300/r300_render.c index 26594dabe42..429b85545f7 100644 --- a/src/gallium/drivers/r300/r300_render.c +++ b/src/gallium/drivers/r300/r300_render.c @@ -218,8 +218,8 @@ static boolean r300_reserve_cs_dwords(struct r300_context *r300, cs_dwords += r300_get_num_cs_end_dwords(r300); /* Reserve requested CS space. */ - if (cs_dwords > (R300_MAX_CMDBUF_DWORDS - r300->cs->cdw)) { - r300_flush(&r300->context, R300_FLUSH_ASYNC, NULL); + if (cs_dwords > (RADEON_MAX_CMDBUF_DWORDS - r300->cs->cdw)) { + r300_flush(&r300->context, RADEON_FLUSH_ASYNC, NULL); flushed = TRUE; } @@ -343,7 +343,7 @@ static boolean immd_is_good_idea(struct r300_context *r300, if (!checked[vbi]) { buf = r300->vbuf_mgr->real_vertex_buffer[vbi]; - if ((r300_resource(buf)->domain != R300_DOMAIN_GTT)) { + if ((r300_resource(buf)->domain != RADEON_DOMAIN_GTT)) { return FALSE; } @@ -1080,7 +1080,7 @@ static void r300_render_draw_elements(struct vbuf_render* render, end_cs_dwords = r300_get_num_cs_end_dwords(r300); while (count) { - free_dwords = R300_MAX_CMDBUF_DWORDS - r300->cs->cdw; + free_dwords = RADEON_MAX_CMDBUF_DWORDS - r300->cs->cdw; short_count = MIN2(count, (free_dwords - end_cs_dwords - 6) * 2); diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c index 8a69628c53e..9ec16c6562f 100644 --- a/src/gallium/drivers/r300/r300_screen.c +++ b/src/gallium/drivers/r300/r300_screen.c @@ -30,7 +30,6 @@ #include "r300_texture.h" #include "r300_screen_buffer.h" #include "r300_state_inlines.h" -#include "r300_winsys.h" #include "r300_public.h" #include "draw/draw_context.h" @@ -114,9 +113,12 @@ static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_TEXTURE_MIRROR_REPEAT: case PIPE_CAP_BLEND_EQUATION_SEPARATE: case PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR: - return 1; + case PIPE_CAP_FRAGMENT_COLOR_CLAMP_CONTROL: + return is_r500 ? 1 : 0; case PIPE_CAP_TEXTURE_SWIZZLE: return util_format_s3tc_enabled ? r300screen->caps.dxtc_swizzle : 1; + case PIPE_CAP_MIXED_COLORBUFFER_FORMATS: + return is_r500 ? 1 : 0; /* Unsupported features (boolean caps). */ case PIPE_CAP_TIMER_QUERY: @@ -127,12 +129,12 @@ static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_DEPTHSTENCIL_CLEAR_SEPARATE: case PIPE_CAP_SHADER_STENCIL_EXPORT: case PIPE_CAP_ARRAY_TEXTURES: + case PIPE_CAP_TGSI_INSTANCEID: return 0; /* SWTCL-only features. */ case PIPE_CAP_STREAM_OUTPUT: case PIPE_CAP_PRIMITIVE_RESTART: - case PIPE_CAP_TGSI_INSTANCEID: return !r300screen->caps.has_tcl; /* Texturing. */ @@ -209,7 +211,7 @@ static int r300_get_shader_param(struct pipe_screen *pscreen, unsigned shader, e case PIPE_SHADER_CAP_MAX_PREDS: return is_r500 ? 1 : 0; case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED: - return 1; + return 0; case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR: case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR: case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR: @@ -247,7 +249,7 @@ static int r300_get_shader_param(struct pipe_screen *pscreen, unsigned shader, e case PIPE_SHADER_CAP_MAX_PREDS: return is_r500 ? 4 : 0; /* XXX guessed. */ case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED: - return 1; + return 0; case PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR: case PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR: case PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR: @@ -308,9 +310,9 @@ static boolean r300_is_format_supported(struct pipe_screen* screen, unsigned sample_count, unsigned usage) { - struct r300_winsys_screen *rws = r300_screen(screen)->rws; + struct radeon_winsys *rws = r300_screen(screen)->rws; uint32_t retval = 0; - boolean drm_2_8_0 = rws->get_value(rws, R300_VID_DRM_2_8_0); + boolean drm_2_8_0 = rws->get_value(rws, RADEON_VID_DRM_2_8_0); boolean is_r500 = r300_screen(screen)->caps.is_r500; boolean is_r400 = r300_screen(screen)->caps.is_r400; boolean is_color2101010 = format == PIPE_FORMAT_R10G10B10A2_UNORM || @@ -325,11 +327,20 @@ static boolean r300_is_format_supported(struct pipe_screen* screen, format == PIPE_FORMAT_RGTC2_SNORM || format == PIPE_FORMAT_LATC2_UNORM || format == PIPE_FORMAT_LATC2_SNORM; + boolean is_x16f_xy16f = format == PIPE_FORMAT_R16_FLOAT || + format == PIPE_FORMAT_R16G16_FLOAT || + format == PIPE_FORMAT_A16_FLOAT || + format == PIPE_FORMAT_L16_FLOAT || + format == PIPE_FORMAT_L16A16_FLOAT || + format == PIPE_FORMAT_I16_FLOAT; boolean is_half_float = format == PIPE_FORMAT_R16_FLOAT || format == PIPE_FORMAT_R16G16_FLOAT || format == PIPE_FORMAT_R16G16B16_FLOAT || format == PIPE_FORMAT_R16G16B16A16_FLOAT; + if (!util_format_is_supported(format, usage)) + return FALSE; + /* Check multisampling support. */ switch (sample_count) { case 0: @@ -358,6 +369,8 @@ static boolean r300_is_format_supported(struct pipe_screen* screen, (is_r500 || !is_ati1n) && /* ATI2N is supported on r4xx-r5xx. */ (is_r400 || is_r500 || !is_ati2n) && + /* R16F and RG16F texture support was added in as late as DRM 2.8.0 */ + (drm_2_8_0 || !is_x16f_xy16f) && r300_is_sampler_format_supported(format)) { retval |= PIPE_BIND_SAMPLER_VIEW; } @@ -403,7 +416,7 @@ static boolean r300_is_format_supported(struct pipe_screen* screen, static void r300_destroy_screen(struct pipe_screen* pscreen) { struct r300_screen* r300screen = r300_screen(pscreen); - struct r300_winsys_screen *rws = r300_winsys_screen(pscreen); + struct radeon_winsys *rws = radeon_winsys(pscreen); util_slab_destroy(&r300screen->pool_buffers); pipe_mutex_destroy(r300screen->num_contexts_mutex); @@ -418,15 +431,15 @@ static void r300_fence_reference(struct pipe_screen *screen, struct pipe_fence_handle **ptr, struct pipe_fence_handle *fence) { - r300_winsys_bo_reference((struct r300_winsys_bo**)ptr, - (struct r300_winsys_bo*)fence); + pb_reference((struct pb_buffer**)ptr, + (struct pb_buffer*)fence); } static boolean r300_fence_signalled(struct pipe_screen *screen, struct pipe_fence_handle *fence) { - struct r300_winsys_screen *rws = r300_screen(screen)->rws; - struct r300_winsys_bo *rfence = (struct r300_winsys_bo*)fence; + struct radeon_winsys *rws = r300_screen(screen)->rws; + struct pb_buffer *rfence = (struct pb_buffer*)fence; return !rws->buffer_is_busy(rfence); } @@ -435,8 +448,8 @@ static boolean r300_fence_finish(struct pipe_screen *screen, struct pipe_fence_handle *fence, uint64_t timeout) { - struct r300_winsys_screen *rws = r300_screen(screen)->rws; - struct r300_winsys_bo *rfence = (struct r300_winsys_bo*)fence; + struct radeon_winsys *rws = r300_screen(screen)->rws; + struct pb_buffer *rfence = (struct pb_buffer*)fence; if (timeout != PIPE_TIMEOUT_INFINITE) { int64_t start_time = os_time_get(); @@ -458,7 +471,7 @@ static boolean r300_fence_finish(struct pipe_screen *screen, return TRUE; } -struct pipe_screen* r300_screen_create(struct r300_winsys_screen *rws) +struct pipe_screen* r300_screen_create(struct radeon_winsys *rws) { struct r300_screen *r300screen = CALLOC_STRUCT(r300_screen); @@ -467,9 +480,9 @@ struct pipe_screen* r300_screen_create(struct r300_winsys_screen *rws) return NULL; } - r300screen->caps.pci_id = rws->get_value(rws, R300_VID_PCI_ID); - r300screen->caps.num_frag_pipes = rws->get_value(rws, R300_VID_GB_PIPES); - r300screen->caps.num_z_pipes = rws->get_value(rws, R300_VID_Z_PIPES); + r300screen->caps.pci_id = rws->get_value(rws, RADEON_VID_PCI_ID); + r300screen->caps.num_frag_pipes = rws->get_value(rws, RADEON_VID_R300_GB_PIPES); + r300screen->caps.num_z_pipes = rws->get_value(rws, RADEON_VID_R300_Z_PIPES); r300_init_debug(r300screen); r300_parse_chipset(&r300screen->caps); @@ -479,6 +492,9 @@ struct pipe_screen* r300_screen_create(struct r300_winsys_screen *rws) if (SCREEN_DBG_ON(r300screen, DBG_NO_HIZ)) r300screen->caps.hiz_ram = 0; + if (!rws->get_value(rws, RADEON_VID_DRM_2_8_0)) + r300screen->caps.has_us_format = FALSE; + pipe_mutex_init(r300screen->num_contexts_mutex); util_slab_create(&r300screen->pool_buffers, diff --git a/src/gallium/drivers/r300/r300_screen.h b/src/gallium/drivers/r300/r300_screen.h index 576f9c1f4a9..bca86edb1d7 100644 --- a/src/gallium/drivers/r300/r300_screen.h +++ b/src/gallium/drivers/r300/r300_screen.h @@ -32,13 +32,13 @@ #include <stdio.h> -struct r300_winsys_screen; +struct radeon_winsys; struct r300_screen { /* Parent class */ struct pipe_screen screen; - struct r300_winsys_screen *rws; + struct radeon_winsys *rws; /* Chipset capabilities */ struct r300_capabilities caps; @@ -61,8 +61,8 @@ static INLINE struct r300_screen* r300_screen(struct pipe_screen* screen) { return (struct r300_screen*)screen; } -static INLINE struct r300_winsys_screen * -r300_winsys_screen(struct pipe_screen *screen) { +static INLINE struct radeon_winsys * +radeon_winsys(struct pipe_screen *screen) { return r300_screen(screen)->rws; } diff --git a/src/gallium/drivers/r300/r300_screen_buffer.c b/src/gallium/drivers/r300/r300_screen_buffer.c index 986ae384fbf..4154c81512e 100644 --- a/src/gallium/drivers/r300/r300_screen_buffer.c +++ b/src/gallium/drivers/r300/r300_screen_buffer.c @@ -31,7 +31,6 @@ #include "util/u_math.h" #include "r300_screen_buffer.h" -#include "r300_winsys.h" void r300_upload_index_buffer(struct r300_context *r300, struct pipe_resource **index_buffer, @@ -62,7 +61,7 @@ static void r300_buffer_destroy(struct pipe_screen *screen, FREE(rbuf->constant_buffer); if (rbuf->buf) - r300_winsys_bo_reference(&rbuf->buf, NULL); + pb_reference(&rbuf->buf, NULL); util_slab_free(&r300screen->pool_buffers, rbuf); } @@ -105,7 +104,7 @@ r300_buffer_transfer_map( struct pipe_context *pipe, { struct r300_context *r300 = r300_context(pipe); struct r300_screen *r300screen = r300_screen(pipe->screen); - struct r300_winsys_screen *rws = r300screen->rws; + struct radeon_winsys *rws = r300screen->rws; struct r300_resource *rbuf = r300_resource(transfer->resource); uint8_t *map; @@ -126,7 +125,7 @@ static void r300_buffer_transfer_unmap( struct pipe_context *pipe, struct pipe_transfer *transfer ) { struct r300_screen *r300screen = r300_screen(pipe->screen); - struct r300_winsys_screen *rws = r300screen->rws; + struct radeon_winsys *rws = r300screen->rws; struct r300_resource *rbuf = r300_resource(transfer->resource); if (rbuf->buf) { @@ -144,7 +143,7 @@ static void r300_buffer_transfer_inline_write(struct pipe_context *pipe, unsigned layer_stride) { struct r300_context *r300 = r300_context(pipe); - struct r300_winsys_screen *rws = r300->screen->rws; + struct radeon_winsys *rws = r300->screen->rws; struct r300_resource *rbuf = r300_resource(resource); uint8_t *map = NULL; @@ -188,7 +187,7 @@ struct pipe_resource *r300_buffer_create(struct pipe_screen *screen, pipe_reference_init(&rbuf->b.b.b.reference, 1); rbuf->b.b.b.screen = screen; rbuf->b.user_ptr = NULL; - rbuf->domain = R300_DOMAIN_GTT; + rbuf->domain = RADEON_DOMAIN_GTT; rbuf->buf = NULL; rbuf->buf_size = templ->width0; rbuf->constant_buffer = NULL; @@ -237,7 +236,7 @@ struct pipe_resource *r300_user_buffer_create(struct pipe_screen *screen, rbuf->b.b.b.flags = 0; rbuf->b.b.vtbl = &r300_buffer_vtbl; rbuf->b.user_ptr = ptr; - rbuf->domain = R300_DOMAIN_GTT; + rbuf->domain = RADEON_DOMAIN_GTT; rbuf->buf = NULL; rbuf->buf_size = size; rbuf->constant_buffer = NULL; diff --git a/src/gallium/drivers/r300/r300_screen_buffer.h b/src/gallium/drivers/r300/r300_screen_buffer.h index cdbc4425fcb..360ec509cc5 100644 --- a/src/gallium/drivers/r300/r300_screen_buffer.h +++ b/src/gallium/drivers/r300/r300_screen_buffer.h @@ -32,7 +32,6 @@ #include "util/u_transfer.h" #include "r300_screen.h" -#include "r300_winsys.h" #include "r300_context.h" /* Functions. */ diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c index ecb4fc691cc..24b41d5085d 100644 --- a/src/gallium/drivers/r300/r300_state.c +++ b/src/gallium/drivers/r300/r300_state.c @@ -45,7 +45,6 @@ #include "r300_fs.h" #include "r300_texture.h" #include "r300_vs.h" -#include "r300_winsys.h" /* r300_state: Functions used to intialize state context by translating * Gallium state objects into semi-native r300 state objects. */ @@ -398,10 +397,6 @@ static void r300_bind_blend_state(struct pipe_context* pipe, struct r300_context* r300 = r300_context(pipe); UPDATE_STATE(state, r300->blend_state); - - if (r300->fs.state && r300_pick_fragment_shader(r300)) { - r300_mark_fs_code_dirty(r300); - } } /* Free blend state. */ @@ -773,7 +768,7 @@ void r300_mark_fb_state_dirty(struct r300_context *r300, enum r300_fb_state_change change) { struct pipe_framebuffer_state *state = r300->fb_state.state; - boolean can_hyperz = r300->rws->get_value(r300->rws, R300_CAN_HYPERZ); + boolean can_hyperz = r300->rws->get_value(r300->rws, RADEON_VID_CAN_HYPERZ); r300_mark_atom_dirty(r300, &r300->gpu_flush); r300_mark_atom_dirty(r300, &r300->fb_state); @@ -860,6 +855,7 @@ r300_set_framebuffer_state(struct pipe_context* pipe, } } } + assert(state->zsbuf || r300->hyperz_locked || !r300->zmask_in_use); /* Need to reset clamping or colormask. */ r300_mark_atom_dirty(r300, &r300->blend_state); @@ -973,24 +969,14 @@ static void r300_bind_fs_state(struct pipe_context* pipe, void* shader) { struct r300_context* r300 = r300_context(pipe); struct r300_fragment_shader* fs = (struct r300_fragment_shader*)shader; - struct pipe_framebuffer_state *fb = r300->fb_state.state; - boolean last_multi_write; if (fs == NULL) { r300->fs.state = NULL; return; } - last_multi_write = r300_fragment_shader_writes_all(r300_fs(r300)); - r300->fs.state = fs; - r300_pick_fragment_shader(r300); - r300_mark_fs_code_dirty(r300); - - if (fb->nr_cbufs > 1 && - last_multi_write != r300_fragment_shader_writes_all(fs)) { - r300_mark_fb_state_dirty(r300, R300_CHANGED_MULTIWRITE); - } + r300->fs_status = FRAGMENT_SHADER_DIRTY; r300_mark_atom_dirty(r300, &r300->rs_block_state); /* Will be updated before the emission. */ } @@ -1047,7 +1033,7 @@ static void* r300_create_rs_state(struct pipe_context* pipe, float point_texcoord_bottom = 0;/* R300_GA_POINT_T0: 0x4204 */ float point_texcoord_right = 1; /* R300_GA_POINT_S1: 0x4208 */ float point_texcoord_top = 0; /* R300_GA_POINT_T1: 0x420c */ - boolean vclamp = TRUE; + boolean vclamp = state->clamp_vertex_color; CB_LOCALS; /* Copy rasterizer state. */ @@ -1233,6 +1219,7 @@ static void r300_bind_rs_state(struct pipe_context* pipe, void* state) struct r300_rs_state* rs = (struct r300_rs_state*)state; int last_sprite_coord_enable = r300->sprite_coord_enable; boolean last_two_sided_color = r300->two_sided_color; + boolean last_frag_clamp = r300->frag_clamp; if (r300->draw && rs) { draw_set_rasterizer_state(r300->draw, &rs->rs_draw, state); @@ -1242,10 +1229,12 @@ static void r300_bind_rs_state(struct pipe_context* pipe, void* state) r300->polygon_offset_enabled = rs->polygon_offset_enable; r300->sprite_coord_enable = rs->rs.sprite_coord_enable; r300->two_sided_color = rs->rs.light_twoside; + r300->frag_clamp = rs->rs.clamp_fragment_color; } else { r300->polygon_offset_enabled = FALSE; r300->sprite_coord_enable = 0; r300->two_sided_color = FALSE; + r300->frag_clamp = FALSE; } UPDATE_STATE(state, r300->rs_state); @@ -1255,6 +1244,11 @@ static void r300_bind_rs_state(struct pipe_context* pipe, void* state) last_two_sided_color != r300->two_sided_color) { r300_mark_atom_dirty(r300, &r300->rs_block_state); } + + if (last_frag_clamp != r300->frag_clamp && + r300->fs_status == FRAGMENT_SHADER_VALID) { + r300->fs_status = FRAGMENT_SHADER_MAYBE_DIRTY; + } } /* Free rasterizer state. */ @@ -1551,7 +1545,8 @@ static void r300_set_viewport_state(struct pipe_context* pipe, } r300_mark_atom_dirty(r300, &r300->viewport_state); - if (r300->fs.state && r300_fs(r300)->shader->inputs.wpos != ATTR_UNUSED) { + if (r300->fs.state && r300_fs(r300)->shader && + r300_fs(r300)->shader->inputs.wpos != ATTR_UNUSED) { r300_mark_atom_dirty(r300, &r300->fs_rc_constant_state); } } diff --git a/src/gallium/drivers/r300/r300_state_derived.c b/src/gallium/drivers/r300/r300_state_derived.c index ec00e2552ca..afc1451183d 100644 --- a/src/gallium/drivers/r300/r300_state_derived.c +++ b/src/gallium/drivers/r300/r300_state_derived.c @@ -592,6 +592,13 @@ static void r300_update_rs_block(struct r300_context *r300) } } +static void rgba_to_bgra(float color[4]) +{ + float x = color[0]; + color[0] = color[2]; + color[2] = x; +} + static uint32_t r300_get_border_color(enum pipe_format format, const float border[4], boolean is_r500) @@ -625,13 +632,13 @@ static uint32_t r300_get_border_color(enum pipe_format format, for (i = 0; i < 4; i++) { switch (desc->swizzle[i]) { case UTIL_FORMAT_SWIZZLE_X: - border_swizzled[2] = border[i]; + border_swizzled[0] = border[i]; break; case UTIL_FORMAT_SWIZZLE_Y: border_swizzled[1] = border[i]; break; case UTIL_FORMAT_SWIZZLE_Z: - border_swizzled[0] = border[i]; + border_swizzled[2] = border[i]; break; case UTIL_FORMAT_SWIZZLE_W: border_swizzled[3] = border[i]; @@ -643,39 +650,46 @@ static uint32_t r300_get_border_color(enum pipe_format format, if (util_format_is_compressed(format)) { switch (format) { case PIPE_FORMAT_RGTC1_SNORM: - case PIPE_FORMAT_RGTC1_UNORM: case PIPE_FORMAT_LATC1_SNORM: + border_swizzled[0] = border_swizzled[0] < 0 ? + border_swizzled[0]*0.5+1 : + border_swizzled[0]*0.5; + /* Pass through. */ + + case PIPE_FORMAT_RGTC1_UNORM: case PIPE_FORMAT_LATC1_UNORM: /* Add 1/32 to round the border color instead of truncating. */ /* The Y component is used for the border color. */ - border_swizzled[1] = border_swizzled[2] + 1.0f/32; + border_swizzled[1] = border_swizzled[0] + 1.0f/32; util_pack_color(border_swizzled, PIPE_FORMAT_B4G4R4A4_UNORM, &uc); return uc.ui; case PIPE_FORMAT_RGTC2_SNORM: case PIPE_FORMAT_LATC2_SNORM: - border_swizzled[0] = border_swizzled[2]; util_pack_color(border_swizzled, PIPE_FORMAT_R8G8B8A8_SNORM, &uc); return uc.ui; case PIPE_FORMAT_RGTC2_UNORM: case PIPE_FORMAT_LATC2_UNORM: - util_pack_color(border_swizzled, PIPE_FORMAT_B8G8R8A8_UNORM, &uc); + util_pack_color(border_swizzled, PIPE_FORMAT_R8G8B8A8_UNORM, &uc); return uc.ui; default: - util_pack_color(border_swizzled, PIPE_FORMAT_R8G8B8A8_UNORM, &uc); + util_pack_color(border_swizzled, PIPE_FORMAT_B8G8R8A8_UNORM, &uc); return uc.ui; } } switch (desc->channel[0].size) { case 2: + rgba_to_bgra(border_swizzled); util_pack_color(border_swizzled, PIPE_FORMAT_B2G3R3_UNORM, &uc); break; case 4: + rgba_to_bgra(border_swizzled); util_pack_color(border_swizzled, PIPE_FORMAT_B4G4R4A4_UNORM, &uc); break; case 5: + rgba_to_bgra(border_swizzled); if (desc->channel[1].size == 5) { util_pack_color(border_swizzled, PIPE_FORMAT_B5G5R5A1_UNORM, &uc); } else if (desc->channel[1].size == 6) { @@ -687,32 +701,39 @@ static uint32_t r300_get_border_color(enum pipe_format format, default: case 8: - util_pack_color(border_swizzled, PIPE_FORMAT_B8G8R8A8_UNORM, &uc); + if (desc->channel[0].type == UTIL_FORMAT_TYPE_SIGNED) + util_pack_color(border_swizzled, PIPE_FORMAT_R8G8B8A8_SNORM, &uc); + else + util_pack_color(border_swizzled, PIPE_FORMAT_R8G8B8A8_UNORM, &uc); break; case 10: - util_pack_color(border_swizzled, PIPE_FORMAT_B10G10R10A2_UNORM, &uc); + util_pack_color(border_swizzled, PIPE_FORMAT_R10G10B10A2_UNORM, &uc); break; case 16: if (desc->nr_channels <= 2) { - border_swizzled[0] = border_swizzled[2]; if (desc->channel[0].type == UTIL_FORMAT_TYPE_FLOAT) { util_pack_color(border_swizzled, PIPE_FORMAT_R16G16_FLOAT, &uc); + } else if (desc->channel[0].type == UTIL_FORMAT_TYPE_SIGNED) { + util_pack_color(border_swizzled, PIPE_FORMAT_R16G16_SNORM, &uc); } else { util_pack_color(border_swizzled, PIPE_FORMAT_R16G16_UNORM, &uc); } } else { - util_pack_color(border_swizzled, PIPE_FORMAT_B8G8R8A8_UNORM, &uc); + if (desc->channel[0].type == UTIL_FORMAT_TYPE_SIGNED) { + util_pack_color(border_swizzled, PIPE_FORMAT_R8G8B8A8_SNORM, &uc); + } else { + util_pack_color(border_swizzled, PIPE_FORMAT_R8G8B8A8_UNORM, &uc); + } } break; case 32: if (desc->nr_channels == 1) { - border_swizzled[0] = border_swizzled[2]; util_pack_color(border_swizzled, PIPE_FORMAT_R32_FLOAT, &uc); } else { - util_pack_color(border_swizzled, PIPE_FORMAT_B8G8R8A8_UNORM, &uc); + util_pack_color(border_swizzled, PIPE_FORMAT_R8G8B8A8_UNORM, &uc); } break; } @@ -720,25 +741,6 @@ static uint32_t r300_get_border_color(enum pipe_format format, return uc.ui; } -static boolean util_format_is_float(enum pipe_format format) -{ - const struct util_format_description *desc = util_format_description(format); - unsigned i; - - if (!format) - return FALSE; - - /* Find the first non-void channel. */ - for (i = 0; i < 4; i++) - if (desc->channel[i].type != UTIL_FORMAT_TYPE_VOID) - break; - - if (i == 4) - return FALSE; - - return desc->channel[i].type == UTIL_FORMAT_TYPE_FLOAT ? TRUE : FALSE; -} - static void r300_merge_textures_and_samplers(struct r300_context* r300) { struct r300_textures_state *state = @@ -747,9 +749,10 @@ static void r300_merge_textures_and_samplers(struct r300_context* r300) struct r300_sampler_state *sampler; struct r300_sampler_view *view; struct r300_resource *tex; - unsigned min_level, max_level, i, j, size; + unsigned base_level, min_level, level_count, i, j, size; unsigned count = MIN2(state->sampler_view_count, state->sampler_state_count); + boolean has_us_format = r300->screen->caps.has_us_format; /* The KIL opcode fix, see below. */ if (!count && !r300->screen->caps.is_r500) @@ -779,21 +782,27 @@ static void r300_merge_textures_and_samplers(struct r300_context* r300) r300->screen->caps.is_r500); /* determine min/max levels */ - max_level = MIN3(sampler->max_lod + view->base.u.tex.first_level, - tex->b.b.b.last_level, view->base.u.tex.last_level); - min_level = MIN2(sampler->min_lod + view->base.u.tex.first_level, - max_level); - - if (tex->tex.is_npot && min_level > 0) { - /* Even though we do not implement mipmapping for NPOT - * textures, we should at least honor the minimum level - * which is allowed to be displayed. We do this by setting up - * the i-th mipmap level as the zero level. */ - unsigned offset = tex->tex_offset + - tex->tex.offset_in_bytes[min_level]; + base_level = view->base.u.tex.first_level; + min_level = sampler->min_lod; + level_count = MIN3(sampler->max_lod, + tex->b.b.b.last_level - base_level, + view->base.u.tex.last_level - base_level); + + if (base_level + min_level) { + unsigned offset; + + if (tex->tex.is_npot) { + /* Even though we do not implement mipmapping for NPOT + * textures, we should at least honor the minimum level + * which is allowed to be displayed. We do this by setting up + * an i-th mipmap level as the zero level. */ + base_level += min_level; + } + offset = tex->tex_offset + + tex->tex.offset_in_bytes[base_level]; r300_texture_setup_format_state(r300->screen, tex, - min_level, + base_level, &texstate->format); texstate->format.tile_config |= offset & 0xffffffe0; assert((offset & 0x1f) == 0); @@ -870,7 +879,7 @@ static void r300_merge_textures_and_samplers(struct r300_context* r300) } } else { /* the MAX_MIP level is the largest (finest) one */ - texstate->format.format0 |= R300_TX_NUM_LEVELS(max_level); + texstate->format.format0 |= R300_TX_NUM_LEVELS(level_count); texstate->filter0 |= R300_TX_MAX_MIP_LEVEL(min_level); } @@ -902,7 +911,7 @@ static void r300_merge_textures_and_samplers(struct r300_context* r300) texstate->filter0 |= i << 28; - size += 16; + size += 16 + (has_us_format ? 2 : 0); state->count = i+1; } else { /* For the KIL opcode to work on r3xx-r4xx, the texture unit @@ -931,7 +940,7 @@ static void r300_merge_textures_and_samplers(struct r300_context* r300) texstate->border_color = 0; texstate->filter0 |= i << 28; - size += 16; + size += 16 + (has_us_format ? 2 : 0); state->count = i+1; } } @@ -940,11 +949,10 @@ static void r300_merge_textures_and_samplers(struct r300_context* r300) r300->textures_state.size = size; /* Pick a fragment shader based on either the texture compare state - * or the uses_pitch flag. */ - if (r300->fs.state && count) { - if (r300_pick_fragment_shader(r300)) { - r300_mark_fs_code_dirty(r300); - } + * or the uses_pitch flag or some other external state. */ + if (count && + r300->fs_status == FRAGMENT_SHADER_VALID) { + r300->fs_status = FRAGMENT_SHADER_MAYBE_DIRTY; } } @@ -973,6 +981,34 @@ static void r300_decompress_depth_textures(struct r300_context *r300) } } +static void r300_validate_fragment_shader(struct r300_context *r300) +{ + struct pipe_framebuffer_state *fb = r300->fb_state.state; + + if (r300->fs.state && r300->fs_status != FRAGMENT_SHADER_VALID) { + /* Pick the fragment shader based on external states. + * Then mark the state dirty if the fragment shader is either dirty + * or the function r300_pick_fragment_shader changed the shader. */ + if (r300_pick_fragment_shader(r300) || + r300->fs_status == FRAGMENT_SHADER_DIRTY) { + /* Mark the state atom as dirty. */ + r300_mark_fs_code_dirty(r300); + + /* Does Multiwrite need to be changed? */ + if (fb->nr_cbufs > 1) { + boolean new_multiwrite = + r300_fragment_shader_writes_all(r300_fs(r300)); + + if (r300->fb_multiwrite != new_multiwrite) { + r300->fb_multiwrite = new_multiwrite; + r300_mark_fb_state_dirty(r300, R300_CHANGED_MULTIWRITE); + } + } + } + r300->fs_status = FRAGMENT_SHADER_VALID; + } +} + void r300_update_derived_state(struct r300_context* r300) { if (r300->textures_state.dirty) { @@ -980,6 +1016,8 @@ void r300_update_derived_state(struct r300_context* r300) r300_merge_textures_and_samplers(r300); } + r300_validate_fragment_shader(r300); + if (r300->rs_block_state.dirty) { r300_update_rs_block(r300); diff --git a/src/gallium/drivers/r300/r300_texture.c b/src/gallium/drivers/r300/r300_texture.c index c650fb7ed37..38ca9a24e45 100644 --- a/src/gallium/drivers/r300/r300_texture.c +++ b/src/gallium/drivers/r300/r300_texture.c @@ -29,7 +29,6 @@ #include "r300_texture_desc.h" #include "r300_transfer.h" #include "r300_screen.h" -#include "r300_winsys.h" #include "util/u_format.h" #include "util/u_format_s3tc.h" @@ -39,6 +38,18 @@ #include "pipe/p_screen.h" +void util_format_combine_swizzles(unsigned char *dst, + const unsigned char *swz1, + const unsigned char *swz2) +{ + unsigned i; + + for (i = 0; i < 4; i++) { + dst[i] = swz2[i] <= UTIL_FORMAT_SWIZZLE_W ? + swz1[swz2[i]] : swz2[i]; + } +} + unsigned r300_get_swizzle_combined(const unsigned char *swizzle_format, const unsigned char *swizzle_view, boolean dxtc_swizzle) @@ -61,10 +72,7 @@ unsigned r300_get_swizzle_combined(const unsigned char *swizzle_format, if (swizzle_view) { /* Combine two sets of swizzles. */ - for (i = 0; i < 4; i++) { - swizzle[i] = swizzle_view[i] <= UTIL_FORMAT_SWIZZLE_W ? - swizzle_format[swizzle_view[i]] : swizzle_view[i]; - } + util_format_combine_swizzles(swizzle, swizzle_format, swizzle_view); } else { memcpy(swizzle, swizzle_format, 4); } @@ -116,10 +124,10 @@ uint32_t r300_translate_texformat(enum pipe_format format, unsigned i; boolean uniform = TRUE; const uint32_t sign_bit[4] = { - R300_TX_FORMAT_SIGNED_X, - R300_TX_FORMAT_SIGNED_Y, - R300_TX_FORMAT_SIGNED_Z, R300_TX_FORMAT_SIGNED_W, + R300_TX_FORMAT_SIGNED_Z, + R300_TX_FORMAT_SIGNED_Y, + R300_TX_FORMAT_SIGNED_X, }; desc = util_format_description(format); @@ -171,17 +179,22 @@ uint32_t r300_translate_texformat(enum pipe_format format, } } - if (util_format_is_compressed(format) && - dxtc_swizzle && - format != PIPE_FORMAT_RGTC2_UNORM && - format != PIPE_FORMAT_RGTC2_SNORM && - format != PIPE_FORMAT_LATC2_UNORM && - format != PIPE_FORMAT_LATC2_SNORM) { - result |= r300_get_swizzle_combined(desc->swizzle, swizzle_view, - TRUE); - } else { - result |= r300_get_swizzle_combined(desc->swizzle, swizzle_view, - FALSE); + /* Add swizzling. */ + /* The RGTC1_SNORM and LATC1_SNORM swizzle is done in the shader. */ + if (format != PIPE_FORMAT_RGTC1_SNORM && + format != PIPE_FORMAT_LATC1_SNORM) { + if (util_format_is_compressed(format) && + dxtc_swizzle && + format != PIPE_FORMAT_RGTC2_UNORM && + format != PIPE_FORMAT_RGTC2_SNORM && + format != PIPE_FORMAT_LATC2_UNORM && + format != PIPE_FORMAT_LATC2_SNORM) { + result |= r300_get_swizzle_combined(desc->swizzle, swizzle_view, + TRUE); + } else { + result |= r300_get_swizzle_combined(desc->swizzle, swizzle_view, + FALSE); + } } /* S3TC formats. */ @@ -212,14 +225,13 @@ uint32_t r300_translate_texformat(enum pipe_format format, switch (format) { case PIPE_FORMAT_RGTC1_SNORM: case PIPE_FORMAT_LATC1_SNORM: - result |= sign_bit[1]; case PIPE_FORMAT_LATC1_UNORM: case PIPE_FORMAT_RGTC1_UNORM: return R500_TX_FORMAT_ATI1N | result; case PIPE_FORMAT_RGTC2_SNORM: case PIPE_FORMAT_LATC2_SNORM: - result |= sign_bit[2] | sign_bit[3]; + result |= sign_bit[1] | sign_bit[0]; case PIPE_FORMAT_RGTC2_UNORM: case PIPE_FORMAT_LATC2_UNORM: return R400_TX_FORMAT_ATI2N | result; @@ -390,20 +402,33 @@ static uint32_t r300_translate_colorformat(enum pipe_format format) switch (format) { /* 8-bit buffers. */ case PIPE_FORMAT_A8_UNORM: - /*case PIPE_FORMAT_A8_SNORM:*/ + case PIPE_FORMAT_A8_SNORM: case PIPE_FORMAT_I8_UNORM: - /*case PIPE_FORMAT_I8_SNORM:*/ + case PIPE_FORMAT_I8_SNORM: case PIPE_FORMAT_L8_UNORM: - /*case PIPE_FORMAT_L8_SNORM:*/ + case PIPE_FORMAT_L8_SNORM: case PIPE_FORMAT_R8_UNORM: case PIPE_FORMAT_R8_SNORM: return R300_COLOR_FORMAT_I8; /* 16-bit buffers. */ case PIPE_FORMAT_L8A8_UNORM: - /*case PIPE_FORMAT_L8A8_SNORM:*/ + case PIPE_FORMAT_L8A8_SNORM: case PIPE_FORMAT_R8G8_UNORM: case PIPE_FORMAT_R8G8_SNORM: + /* These formats work fine with UV88 if US_OUT_FMT is set correctly. */ + case PIPE_FORMAT_A16_UNORM: + case PIPE_FORMAT_A16_SNORM: + case PIPE_FORMAT_A16_FLOAT: + case PIPE_FORMAT_L16_UNORM: + case PIPE_FORMAT_L16_SNORM: + case PIPE_FORMAT_L16_FLOAT: + case PIPE_FORMAT_I16_UNORM: + case PIPE_FORMAT_I16_SNORM: + case PIPE_FORMAT_I16_FLOAT: + case PIPE_FORMAT_R16_UNORM: + case PIPE_FORMAT_R16_SNORM: + case PIPE_FORMAT_R16_FLOAT: return R300_COLOR_FORMAT_UV88; case PIPE_FORMAT_B5G6R5_UNORM: @@ -434,19 +459,33 @@ static uint32_t r300_translate_colorformat(enum pipe_format format) /*case PIPE_FORMAT_X8B8G8R8_SNORM:*/ case PIPE_FORMAT_R8G8B8X8_UNORM: /*case PIPE_FORMAT_R8G8B8X8_SNORM:*/ - case PIPE_FORMAT_R8SG8SB8UX8U_NORM: + /* These formats work fine with ARGB8888 if US_OUT_FMT is set + * correctly. */ + case PIPE_FORMAT_R16G16_UNORM: + case PIPE_FORMAT_R16G16_SNORM: + case PIPE_FORMAT_R16G16_FLOAT: + case PIPE_FORMAT_L16A16_UNORM: + case PIPE_FORMAT_L16A16_SNORM: + case PIPE_FORMAT_L16A16_FLOAT: + case PIPE_FORMAT_A32_FLOAT: + case PIPE_FORMAT_L32_FLOAT: + case PIPE_FORMAT_I32_FLOAT: + case PIPE_FORMAT_R32_FLOAT: return R300_COLOR_FORMAT_ARGB8888; case PIPE_FORMAT_R10G10B10A2_UNORM: case PIPE_FORMAT_R10G10B10X2_SNORM: case PIPE_FORMAT_B10G10R10A2_UNORM: - case PIPE_FORMAT_R10SG10SB10SA2U_NORM: return R500_COLOR_FORMAT_ARGB2101010; /* R5xx-only? */ /* 64-bit buffers. */ case PIPE_FORMAT_R16G16B16A16_UNORM: case PIPE_FORMAT_R16G16B16A16_SNORM: case PIPE_FORMAT_R16G16B16A16_FLOAT: + /* These formats work fine with ARGB16161616 if US_OUT_FMT is set + * correctly. */ + case PIPE_FORMAT_R32G32_FLOAT: + case PIPE_FORMAT_L32A32_FLOAT: return R300_COLOR_FORMAT_ARGB16161616; /* 128-bit buffers. */ @@ -489,12 +528,7 @@ static uint32_t r300_translate_out_fmt(enum pipe_format format) uint32_t modifier = 0; unsigned i; const struct util_format_description *desc; - static const uint32_t sign_bit[4] = { - R300_OUT_SIGN(0x1), - R300_OUT_SIGN(0x2), - R300_OUT_SIGN(0x4), - R300_OUT_SIGN(0x8), - }; + boolean uniform_sign; desc = util_format_description(format); @@ -509,54 +543,109 @@ static uint32_t r300_translate_out_fmt(enum pipe_format format) return ~0; /* Unsupported/unknown. */ /* Specifies how the shader output is written to the fog unit. */ - if (desc->channel[i].type == UTIL_FORMAT_TYPE_FLOAT) { - if (desc->channel[i].size == 32) { - modifier |= R300_US_OUT_FMT_C4_32_FP; - } else { - modifier |= R300_US_OUT_FMT_C4_16_FP; + switch (desc->channel[i].type) { + case UTIL_FORMAT_TYPE_FLOAT: + switch (desc->channel[i].size) { + case 32: + switch (desc->nr_channels) { + case 1: + modifier |= R300_US_OUT_FMT_C_32_FP; + break; + case 2: + modifier |= R300_US_OUT_FMT_C2_32_FP; + break; + case 4: + modifier |= R300_US_OUT_FMT_C4_32_FP; + break; + } + break; + + case 16: + switch (desc->nr_channels) { + case 1: + modifier |= R300_US_OUT_FMT_C_16_FP; + break; + case 2: + modifier |= R300_US_OUT_FMT_C2_16_FP; + break; + case 4: + modifier |= R300_US_OUT_FMT_C4_16_FP; + break; + } + break; } - } else { - if (desc->channel[i].size == 16) { - modifier |= R300_US_OUT_FMT_C4_16; - } else if (desc->channel[i].size == 10) { + break; + + default: + switch (desc->channel[i].size) { + case 16: + switch (desc->nr_channels) { + case 1: + modifier |= R300_US_OUT_FMT_C_16; + break; + case 2: + modifier |= R300_US_OUT_FMT_C2_16; + break; + case 4: + modifier |= R300_US_OUT_FMT_C4_16; + break; + } + break; + + case 10: modifier |= R300_US_OUT_FMT_C4_10; - } else { + break; + + default: /* C4_8 seems to be used for the formats whose pixel size * is <= 32 bits. */ modifier |= R300_US_OUT_FMT_C4_8; + break; } } /* Add sign. */ - for (i = 0; i < 4; i++) - if (desc->channel[i].type == UTIL_FORMAT_TYPE_SIGNED) { - modifier |= sign_bit[i]; - } + uniform_sign = TRUE; + for (i = 0; i < desc->nr_channels; i++) + if (desc->channel[i].type != UTIL_FORMAT_TYPE_SIGNED) + uniform_sign = FALSE; + + if (uniform_sign) + modifier |= R300_OUT_SIGN(0xf); /* Add swizzles and return. */ switch (format) { - /* 8-bit outputs, one channel. - * COLORFORMAT_I8 stores the C2 component. */ + /*** Special cases (non-standard channel mapping) ***/ + + /* X8 + * COLORFORMAT_I8 stores the Z component (C2). */ case PIPE_FORMAT_A8_UNORM: - /*case PIPE_FORMAT_A8_SNORM:*/ + case PIPE_FORMAT_A8_SNORM: return modifier | R300_C2_SEL_A; case PIPE_FORMAT_I8_UNORM: - /*case PIPE_FORMAT_I8_SNORM:*/ + case PIPE_FORMAT_I8_SNORM: case PIPE_FORMAT_L8_UNORM: - /*case PIPE_FORMAT_L8_SNORM:*/ + case PIPE_FORMAT_L8_SNORM: case PIPE_FORMAT_R8_UNORM: case PIPE_FORMAT_R8_SNORM: return modifier | R300_C2_SEL_R; - /* 16-bit outputs, two channels. - * COLORFORMAT_UV88 stores C2 and C0. */ + /* X8Y8 + * COLORFORMAT_UV88 stores ZX (C2 and C0). */ + case PIPE_FORMAT_L8A8_SNORM: case PIPE_FORMAT_L8A8_UNORM: - /*case PIPE_FORMAT_L8A8_SNORM:*/ return modifier | R300_C0_SEL_A | R300_C2_SEL_R; - case PIPE_FORMAT_R8G8_UNORM: case PIPE_FORMAT_R8G8_SNORM: + case PIPE_FORMAT_R8G8_UNORM: return modifier | R300_C0_SEL_G | R300_C2_SEL_R; + /* X32Y32 + * ARGB16161616 stores XZ for RG32F */ + case PIPE_FORMAT_R32G32_FLOAT: + return modifier | R300_C0_SEL_R | R300_C2_SEL_G; + + /*** Generic cases (standard channel mapping) ***/ + /* BGRA outputs. */ case PIPE_FORMAT_B5G6R5_UNORM: case PIPE_FORMAT_B5G5R5A1_UNORM: @@ -577,6 +666,10 @@ static uint32_t r300_translate_out_fmt(enum pipe_format format) /*case PIPE_FORMAT_A8R8G8B8_SNORM:*/ case PIPE_FORMAT_X8R8G8B8_UNORM: /*case PIPE_FORMAT_X8R8G8B8_SNORM:*/ + case PIPE_FORMAT_A16_UNORM: + case PIPE_FORMAT_A16_SNORM: + case PIPE_FORMAT_A16_FLOAT: + case PIPE_FORMAT_A32_FLOAT: return modifier | R300_C0_SEL_A | R300_C1_SEL_R | R300_C2_SEL_G | R300_C3_SEL_B; @@ -595,18 +688,39 @@ static uint32_t r300_translate_out_fmt(enum pipe_format format) /*case PIPE_FORMAT_R8G8B8X8_SNORM:*/ case PIPE_FORMAT_R8G8B8A8_UNORM: case PIPE_FORMAT_R8G8B8A8_SNORM: - case PIPE_FORMAT_R8SG8SB8UX8U_NORM: case PIPE_FORMAT_R10G10B10A2_UNORM: case PIPE_FORMAT_R10G10B10X2_SNORM: - case PIPE_FORMAT_R10SG10SB10SA2U_NORM: + case PIPE_FORMAT_R16_UNORM: + case PIPE_FORMAT_R16G16_UNORM: case PIPE_FORMAT_R16G16B16A16_UNORM: + case PIPE_FORMAT_R16_SNORM: + case PIPE_FORMAT_R16G16_SNORM: case PIPE_FORMAT_R16G16B16A16_SNORM: + case PIPE_FORMAT_R16_FLOAT: + case PIPE_FORMAT_R16G16_FLOAT: case PIPE_FORMAT_R16G16B16A16_FLOAT: + case PIPE_FORMAT_R32_FLOAT: case PIPE_FORMAT_R32G32B32A32_FLOAT: + case PIPE_FORMAT_L16_UNORM: + case PIPE_FORMAT_L16_SNORM: + case PIPE_FORMAT_L16_FLOAT: + case PIPE_FORMAT_L32_FLOAT: + case PIPE_FORMAT_I16_UNORM: + case PIPE_FORMAT_I16_SNORM: + case PIPE_FORMAT_I16_FLOAT: + case PIPE_FORMAT_I32_FLOAT: return modifier | R300_C0_SEL_R | R300_C1_SEL_G | R300_C2_SEL_B | R300_C3_SEL_A; + /* LA outputs. */ + case PIPE_FORMAT_L16A16_UNORM: + case PIPE_FORMAT_L16A16_SNORM: + case PIPE_FORMAT_L16A16_FLOAT: + case PIPE_FORMAT_L32A32_FLOAT: + return modifier | + R300_C0_SEL_R | R300_C1_SEL_A; + default: return ~0; /* Unsupported. */ } @@ -636,6 +750,16 @@ void r300_texture_setup_format_state(struct r300_screen *screen, struct pipe_resource *pt = &tex->b.b.b; struct r300_texture_desc *desc = &tex->tex; boolean is_r500 = screen->caps.is_r500; + unsigned width, height, depth; + unsigned txwidth, txheight, txdepth; + + width = u_minify(desc->width0, level); + height = u_minify(desc->height0, level); + depth = u_minify(desc->depth0, level); + + txwidth = (width - 1) & 0x7ff; + txheight = (height - 1) & 0x7ff; + txdepth = util_logbase2(depth) & 0xf; /* Mask out all the fields we change. */ out->format0 = 0; @@ -645,9 +769,9 @@ void r300_texture_setup_format_state(struct r300_screen *screen, /* Set sampler state. */ out->format0 = - R300_TX_WIDTH((u_minify(desc->width0, level) - 1) & 0x7ff) | - R300_TX_HEIGHT((u_minify(desc->height0, level) - 1) & 0x7ff) | - R300_TX_DEPTH(util_logbase2(u_minify(desc->depth0, level)) & 0xf); + R300_TX_WIDTH(txwidth) | + R300_TX_HEIGHT(txheight) | + R300_TX_DEPTH(txdepth); if (desc->uses_stride_addressing) { /* rectangles love this */ @@ -665,12 +789,32 @@ void r300_texture_setup_format_state(struct r300_screen *screen, /* large textures on r500 */ if (is_r500) { - if (desc->width0 > 2048) { + unsigned us_width = txwidth; + unsigned us_height = txheight; + unsigned us_depth = txdepth; + + if (width > 2048) { out->format2 |= R500_TXWIDTH_BIT11; } - if (desc->height0 > 2048) { + if (height > 2048) { out->format2 |= R500_TXHEIGHT_BIT11; } + + /* The US_FORMAT register fixes an R500 TX addressing bug. + * Don't ask why it must be set like this. I don't know it either. */ + if (width > 2048) { + us_width = (0x000007FF + us_width) >> 1; + us_depth |= 0x0000000D; + } + if (height > 2048) { + us_height = (0x000007FF + us_height) >> 1; + us_depth |= 0x0000000E; + } + + out->us_format0 = + R300_TX_WIDTH(us_width) | + R300_TX_HEIGHT(us_height) | + R300_TX_DEPTH(us_depth); } out->tile_config = R300_TXO_MACRO_TILE(desc->macrotile[level]) | @@ -729,7 +873,7 @@ static void r300_texture_destroy(struct pipe_screen *screen, { struct r300_resource* tex = (struct r300_resource*)texture; - r300_winsys_bo_reference(&tex->buf, NULL); + pb_reference(&tex->buf, NULL); FREE(tex); } @@ -737,7 +881,7 @@ boolean r300_resource_get_handle(struct pipe_screen* screen, struct pipe_resource *texture, struct winsys_handle *whandle) { - struct r300_winsys_screen *rws = (struct r300_winsys_screen *)screen->winsys; + struct radeon_winsys *rws = (struct radeon_winsys *)screen->winsys; struct r300_resource* tex = (struct r300_resource*)texture; if (!tex) { @@ -764,17 +908,17 @@ static const struct u_resource_vtbl r300_texture_vtbl = static struct r300_resource* r300_texture_create_object(struct r300_screen *rscreen, const struct pipe_resource *base, - enum r300_buffer_tiling microtile, - enum r300_buffer_tiling macrotile, + enum radeon_bo_layout microtile, + enum radeon_bo_layout macrotile, unsigned stride_in_bytes_override, unsigned max_buffer_size, - struct r300_winsys_bo *buffer) + struct pb_buffer *buffer) { - struct r300_winsys_screen *rws = rscreen->rws; + struct radeon_winsys *rws = rscreen->rws; struct r300_resource *tex = CALLOC_STRUCT(r300_resource); if (!tex) { if (buffer) - r300_winsys_bo_reference(&buffer, NULL); + pb_reference(&buffer, NULL); return NULL; } @@ -788,13 +932,13 @@ r300_texture_create_object(struct r300_screen *rscreen, tex->tex.macrotile[0] = macrotile; tex->tex.stride_in_bytes_override = stride_in_bytes_override; tex->domain = base->flags & R300_RESOURCE_FLAG_TRANSFER ? - R300_DOMAIN_GTT : - R300_DOMAIN_VRAM | R300_DOMAIN_GTT; + RADEON_DOMAIN_GTT : + RADEON_DOMAIN_VRAM | RADEON_DOMAIN_GTT; tex->buf_size = max_buffer_size; if (!r300_resource_set_properties(&rscreen->screen, &tex->b.b.b, 0, base)) { if (buffer) - r300_winsys_bo_reference(&buffer, NULL); + pb_reference(&buffer, NULL); FREE(tex); return NULL; } @@ -827,15 +971,16 @@ struct pipe_resource *r300_texture_create(struct pipe_screen *screen, const struct pipe_resource *base) { struct r300_screen *rscreen = r300_screen(screen); - enum r300_buffer_tiling microtile, macrotile; + enum radeon_bo_layout microtile, macrotile; if ((base->flags & R300_RESOURCE_FLAG_TRANSFER) || (base->bind & PIPE_BIND_SCANOUT)) { - microtile = R300_BUFFER_LINEAR; - macrotile = R300_BUFFER_LINEAR; + microtile = RADEON_LAYOUT_LINEAR; + macrotile = RADEON_LAYOUT_LINEAR; } else { - microtile = R300_BUFFER_SELECT_LAYOUT; - macrotile = R300_BUFFER_SELECT_LAYOUT; + /* This will make the texture_create_function select the layout. */ + microtile = RADEON_LAYOUT_UNKNOWN; + macrotile = RADEON_LAYOUT_UNKNOWN; } return (struct pipe_resource*) @@ -847,10 +992,10 @@ struct pipe_resource *r300_texture_from_handle(struct pipe_screen *screen, const struct pipe_resource *base, struct winsys_handle *whandle) { - struct r300_winsys_screen *rws = (struct r300_winsys_screen*)screen->winsys; + struct radeon_winsys *rws = (struct radeon_winsys*)screen->winsys; struct r300_screen *rscreen = r300_screen(screen); - struct r300_winsys_bo *buffer; - enum r300_buffer_tiling microtile, macrotile; + struct pb_buffer *buffer; + enum radeon_bo_layout microtile, macrotile; unsigned stride, size; /* Support only 2D textures without mipmaps */ @@ -869,14 +1014,14 @@ struct pipe_resource *r300_texture_from_handle(struct pipe_screen *screen, /* Enforce a microtiled zbuffer. */ if (util_format_is_depth_or_stencil(base->format) && - microtile == R300_BUFFER_LINEAR) { + microtile == RADEON_LAYOUT_LINEAR) { switch (util_format_get_blocksize(base->format)) { case 4: - microtile = R300_BUFFER_TILED; + microtile = RADEON_LAYOUT_TILED; break; case 2: - microtile = R300_BUFFER_SQUARETILED; + microtile = RADEON_LAYOUT_SQUARETILED; break; } } @@ -917,8 +1062,8 @@ struct pipe_surface* r300_create_surface(struct pipe_context * ctx, /* Prefer VRAM if there are multiple domains to choose from. */ surface->domain = tex->domain; - if (surface->domain & R300_DOMAIN_VRAM) - surface->domain &= ~R300_DOMAIN_GTT; + if (surface->domain & RADEON_DOMAIN_VRAM) + surface->domain &= ~RADEON_DOMAIN_GTT; surface->offset = r300_texture_get_offset(tex, level, surf_tmpl->u.tex.first_layer); diff --git a/src/gallium/drivers/r300/r300_texture.h b/src/gallium/drivers/r300/r300_texture.h index 158a387478f..4586bb2e4dc 100644 --- a/src/gallium/drivers/r300/r300_texture.h +++ b/src/gallium/drivers/r300/r300_texture.h @@ -35,6 +35,10 @@ struct r300_texture_desc; struct r300_resource; struct r300_screen; +void util_format_combine_swizzles(unsigned char *dst, + const unsigned char *swz1, + const unsigned char *swz2); + unsigned r300_get_swizzle_combined(const unsigned char *swizzle_format, const unsigned char *swizzle_view, boolean dxtc_swizzle); diff --git a/src/gallium/drivers/r300/r300_texture_desc.c b/src/gallium/drivers/r300/r300_texture_desc.c index 2910666dd51..da5778be65e 100644 --- a/src/gallium/drivers/r300/r300_texture_desc.c +++ b/src/gallium/drivers/r300/r300_texture_desc.c @@ -22,9 +22,7 @@ * USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "r300_texture_desc.h" - #include "r300_context.h" -#include "r300_winsys.h" #include "util/u_format.h" @@ -32,8 +30,8 @@ * in the given dimension. */ unsigned r300_get_pixel_alignment(enum pipe_format format, unsigned num_samples, - enum r300_buffer_tiling microtile, - enum r300_buffer_tiling macrotile, + enum radeon_bo_layout microtile, + enum radeon_bo_layout macrotile, enum r300_dim dim, boolean is_rs690) { static const unsigned table[2][5][3][2] = @@ -62,8 +60,8 @@ unsigned r300_get_pixel_alignment(enum pipe_format format, unsigned tile = 0; unsigned pixsize = util_format_get_blocksize(format); - assert(macrotile <= R300_BUFFER_TILED); - assert(microtile <= R300_BUFFER_SQUARETILED); + assert(macrotile <= RADEON_LAYOUT_TILED); + assert(microtile <= RADEON_LAYOUT_SQUARETILED); assert(pixsize <= 16); assert(dim <= DIM_HEIGHT); @@ -98,7 +96,7 @@ static boolean r300_texture_macro_switch(struct r300_resource *tex, unsigned tile, texdim; tile = r300_get_pixel_alignment(tex->b.b.b.format, tex->b.b.b.nr_samples, - tex->tex.microtile, R300_BUFFER_TILED, dim, 0); + tex->tex.microtile, RADEON_LAYOUT_TILED, dim, 0); if (dim == DIM_WIDTH) { texdim = u_minify(tex->tex.width0, level); } else { @@ -233,10 +231,10 @@ static void r300_setup_miptree(struct r300_screen *screen, for (i = 0; i <= base->last_level; i++) { /* Let's see if this miplevel can be macrotiled. */ tex->tex.macrotile[i] = - (tex->tex.macrotile[0] == R300_BUFFER_TILED && + (tex->tex.macrotile[0] == RADEON_LAYOUT_TILED && r300_texture_macro_switch(tex, i, rv350_mode, DIM_WIDTH) && r300_texture_macro_switch(tex, i, rv350_mode, DIM_HEIGHT)) ? - R300_BUFFER_TILED : R300_BUFFER_LINEAR; + RADEON_LAYOUT_TILED : RADEON_LAYOUT_LINEAR; stride = r300_texture_get_stride(screen, tex, i); @@ -424,8 +422,8 @@ static void r300_setup_tiling(struct r300_screen *screen, boolean is_zb = util_format_is_depth_or_stencil(format); boolean dbg_no_tiling = SCREEN_DBG_ON(screen, DBG_NO_TILING); - tex->tex.microtile = R300_BUFFER_LINEAR; - tex->tex.macrotile[0] = R300_BUFFER_LINEAR; + tex->tex.microtile = RADEON_LAYOUT_LINEAR; + tex->tex.macrotile[0] = RADEON_LAYOUT_LINEAR; if (!util_format_is_plain(format)) { return; @@ -441,11 +439,11 @@ static void r300_setup_tiling(struct r300_screen *screen, case 1: case 4: case 8: - tex->tex.microtile = R300_BUFFER_TILED; + tex->tex.microtile = RADEON_LAYOUT_TILED; break; case 2: - tex->tex.microtile = R300_BUFFER_SQUARETILED; + tex->tex.microtile = RADEON_LAYOUT_SQUARETILED; break; } @@ -456,7 +454,7 @@ static void r300_setup_tiling(struct r300_screen *screen, /* Set macrotiling. */ if (r300_texture_macro_switch(tex, 0, rv350_mode, DIM_WIDTH) && r300_texture_macro_switch(tex, 0, rv350_mode, DIM_HEIGHT)) { - tex->tex.macrotile[0] = R300_BUFFER_TILED; + tex->tex.macrotile[0] = RADEON_LAYOUT_TILED; } } @@ -501,7 +499,7 @@ boolean r300_texture_desc_init(struct r300_screen *rscreen, } /* Setup tiling. */ - if (tex->tex.microtile == R300_BUFFER_SELECT_LAYOUT) { + if (tex->tex.microtile == RADEON_LAYOUT_UNKNOWN) { r300_setup_tiling(rscreen, tex); } diff --git a/src/gallium/drivers/r300/r300_texture_desc.h b/src/gallium/drivers/r300/r300_texture_desc.h index ce6e9643ec6..a84d6fae0ea 100644 --- a/src/gallium/drivers/r300/r300_texture_desc.h +++ b/src/gallium/drivers/r300/r300_texture_desc.h @@ -25,7 +25,7 @@ #define R300_TEXTURE_DESC_H #include "pipe/p_format.h" -#include "r300_defines.h" +#include "r300_context.h" struct pipe_resource; struct r300_screen; @@ -39,8 +39,8 @@ enum r300_dim { unsigned r300_get_pixel_alignment(enum pipe_format format, unsigned num_samples, - enum r300_buffer_tiling microtile, - enum r300_buffer_tiling macrotile, + enum radeon_bo_layout microtile, + enum radeon_bo_layout macrotile, enum r300_dim dim, boolean is_rs690); boolean r300_texture_desc_init(struct r300_screen *rscreen, diff --git a/src/gallium/drivers/r300/r300_tgsi_to_rc.c b/src/gallium/drivers/r300/r300_tgsi_to_rc.c index 97ec0a1a1f2..6a000cfe2c6 100644 --- a/src/gallium/drivers/r300/r300_tgsi_to_rc.c +++ b/src/gallium/drivers/r300/r300_tgsi_to_rc.c @@ -52,8 +52,7 @@ static unsigned translate_opcode(unsigned opcode) case TGSI_OPCODE_MAD: return RC_OPCODE_MAD; case TGSI_OPCODE_SUB: return RC_OPCODE_SUB; case TGSI_OPCODE_LRP: return RC_OPCODE_LRP; - /* case TGSI_OPCODE_CND: return RC_OPCODE_CND; */ - /* case TGSI_OPCODE_CND0: return RC_OPCODE_CND0; */ + case TGSI_OPCODE_CND: return RC_OPCODE_CND; /* case TGSI_OPCODE_DP2A: return RC_OPCODE_DP2A; */ /* gap */ case TGSI_OPCODE_FRC: return RC_OPCODE_FRC; diff --git a/src/gallium/drivers/r300/r300_transfer.c b/src/gallium/drivers/r300/r300_transfer.c index 65c5095be6a..e2ea4cbf6c5 100644 --- a/src/gallium/drivers/r300/r300_transfer.c +++ b/src/gallium/drivers/r300/r300_transfer.c @@ -226,7 +226,7 @@ void* r300_texture_transfer_map(struct pipe_context *ctx, struct pipe_transfer *transfer) { struct r300_context *r300 = r300_context(ctx); - struct r300_winsys_screen *rws = (struct r300_winsys_screen *)ctx->winsys; + struct radeon_winsys *rws = (struct radeon_winsys *)ctx->winsys; struct r300_transfer *r300transfer = r300_transfer(transfer); struct r300_resource *tex = r300_resource(transfer->resource); char *map; @@ -256,7 +256,7 @@ void* r300_texture_transfer_map(struct pipe_context *ctx, void r300_texture_transfer_unmap(struct pipe_context *ctx, struct pipe_transfer *transfer) { - struct r300_winsys_screen *rws = (struct r300_winsys_screen *)ctx->winsys; + struct radeon_winsys *rws = (struct radeon_winsys *)ctx->winsys; struct r300_transfer *r300transfer = r300_transfer(transfer); struct r300_resource *tex = r300_resource(transfer->resource); diff --git a/src/gallium/drivers/r300/r300_winsys.h b/src/gallium/drivers/r300/r300_winsys.h deleted file mode 100644 index 3a6798a5423..00000000000 --- a/src/gallium/drivers/r300/r300_winsys.h +++ /dev/null @@ -1,295 +0,0 @@ -/* - * Copyright 2008 Corbin Simpson <[email protected]> - * Copyright 2010 Marek Olšák <[email protected]> - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. */ - -#ifndef R300_WINSYS_H -#define R300_WINSYS_H - -/* The public winsys interface header for the r300 pipe driver. - * Any winsys hosting this pipe needs to implement r300_winsys_screen and then - * call r300_screen_create to start things. */ - -#include "r300_defines.h" - -#include "pipebuffer/pb_bufmgr.h" -#include "pipe/p_defines.h" -#include "pipe/p_state.h" - -#define R300_MAX_CMDBUF_DWORDS (16 * 1024) -#define R300_FLUSH_ASYNC (1 << 0) - -struct winsys_handle; -struct r300_winsys_screen; - -#define r300_winsys_bo pb_buffer -#define r300_winsys_bo_reference(pdst, src) pb_reference(pdst, src) - -struct r300_winsys_cs_handle; /* for write_reloc etc. */ - -struct r300_winsys_cs { - unsigned cdw; /* Number of used dwords. */ - uint32_t *buf; /* The command buffer. */ -}; - -enum r300_value_id { - R300_VID_PCI_ID, - R300_VID_GB_PIPES, - R300_VID_Z_PIPES, - R300_VID_GART_SIZE, - R300_VID_VRAM_SIZE, - R300_VID_DRM_MAJOR, - R300_VID_DRM_MINOR, - R300_VID_DRM_PATCHLEVEL, - - /* These should probably go away: */ - R300_VID_DRM_2_6_0, /* Hyper-Z, GB_Z_PEQ_CONFIG on rv350->r4xx, R500 FG_ALPHA_VALUE */ - R300_VID_DRM_2_8_0, /* R500 US_FORMAT regs, R500 ARGB2101010 colorbuffer, CMask, R16F/RG16F */ - - R300_CAN_HYPERZ, /* ZMask + HiZ */ - R300_CAN_AACOMPRESS, /* CMask */ -}; - -struct r300_winsys_screen { - /** - * Destroy this winsys. - * - * \param ws The winsys this function is called from. - */ - void (*destroy)(struct r300_winsys_screen *ws); - - /** - * Query a system value from a winsys. - * - * \param ws The winsys this function is called from. - * \param vid One of the R300_VID_* enums. - */ - uint32_t (*get_value)(struct r300_winsys_screen *ws, - enum r300_value_id vid); - - /************************************************************************** - * Buffer management. Buffer attributes are mostly fixed over its lifetime. - * - * Remember that gallium gets to choose the interface it needs, and the - * window systems must then implement that interface (rather than the - * other way around...). - *************************************************************************/ - - /** - * Create a buffer object. - * - * \param ws The winsys this function is called from. - * \param size The size to allocate. - * \param alignment An alignment of the buffer in memory. - * \param bind A bitmask of the PIPE_BIND_* flags. - * \param usage A bitmask of the PIPE_USAGE_* flags. - * \param domain A bitmask of the R300_DOMAIN_* flags. - * \return The created buffer object. - */ - struct r300_winsys_bo *(*buffer_create)(struct r300_winsys_screen *ws, - unsigned size, - unsigned alignment, - unsigned bind, - unsigned usage, - enum r300_buffer_domain domain); - - struct r300_winsys_cs_handle *(*buffer_get_cs_handle)( - struct r300_winsys_bo *buf); - - /** - * Map the entire data store of a buffer object into the client's address - * space. - * - * \param buf A winsys buffer object to map. - * \param cs A command stream to flush if the buffer is referenced by it. - * \param usage A bitmask of the PIPE_TRANSFER_* flags. - * \return The pointer at the beginning of the buffer. - */ - void *(*buffer_map)(struct r300_winsys_bo *buf, - struct r300_winsys_cs *cs, - enum pipe_transfer_usage usage); - - /** - * Unmap a buffer object from the client's address space. - * - * \param buf A winsys buffer object to unmap. - */ - void (*buffer_unmap)(struct r300_winsys_bo *buf); - - /** - * Return TRUE if a buffer object is being used by the GPU. - * - * \param buf A winsys buffer object. - */ - boolean (*buffer_is_busy)(struct r300_winsys_bo *buf); - - /** - * Wait for a buffer object until it is not used by a GPU. This is - * equivalent to a fence placed after the last command using the buffer, - * and synchronizing to the fence. - * - * \param buf A winsys buffer object to wait for. - */ - void (*buffer_wait)(struct r300_winsys_bo *buf); - - /** - * Return tiling flags describing a memory layout of a buffer object. - * - * \param buf A winsys buffer object to get the flags from. - * \param macrotile A pointer to the return value of the microtile flag. - * \param microtile A pointer to the return value of the macrotile flag. - * - * \note microtile and macrotile are not bitmasks! - */ - void (*buffer_get_tiling)(struct r300_winsys_bo *buf, - enum r300_buffer_tiling *microtile, - enum r300_buffer_tiling *macrotile); - - /** - * Set tiling flags describing a memory layout of a buffer object. - * - * \param buf A winsys buffer object to set the flags for. - * \param cs A command stream to flush if the buffer is referenced by it. - * \param macrotile A macrotile flag. - * \param microtile A microtile flag. - * \param stride A stride of the buffer in bytes, for texturing. - * - * \note microtile and macrotile are not bitmasks! - */ - void (*buffer_set_tiling)(struct r300_winsys_bo *buf, - struct r300_winsys_cs *cs, - enum r300_buffer_tiling microtile, - enum r300_buffer_tiling macrotile, - unsigned stride); - - /** - * Get a winsys buffer from a winsys handle. The internal structure - * of the handle is platform-specific and only a winsys should access it. - * - * \param ws The winsys this function is called from. - * \param whandle A winsys handle pointer as was received from a state - * tracker. - * \param stride The returned buffer stride in bytes. - * \param size The returned buffer size. - */ - struct r300_winsys_bo *(*buffer_from_handle)(struct r300_winsys_screen *ws, - struct winsys_handle *whandle, - unsigned *stride, - unsigned *size); - - /** - * Get a winsys handle from a winsys buffer. The internal structure - * of the handle is platform-specific and only a winsys should access it. - * - * \param buf A winsys buffer object to get the handle from. - * \param whandle A winsys handle pointer. - * \param stride A stride of the buffer in bytes, for texturing. - * \return TRUE on success. - */ - boolean (*buffer_get_handle)(struct r300_winsys_bo *buf, - unsigned stride, - struct winsys_handle *whandle); - - /************************************************************************** - * Command submission. - * - * Each pipe context should create its own command stream and submit - * commands independently of other contexts. - *************************************************************************/ - - /** - * Create a command stream. - * - * \param ws The winsys this function is called from. - */ - struct r300_winsys_cs *(*cs_create)(struct r300_winsys_screen *ws); - - /** - * Destroy a command stream. - * - * \param cs A command stream to destroy. - */ - void (*cs_destroy)(struct r300_winsys_cs *cs); - - /** - * Add a new buffer relocation. Every relocation must first be added - * before it can be written. - * - * \param cs A command stream to add buffer for validation against. - * \param buf A winsys buffer to validate. - * \param rd A read domain containing a bitmask of the R300_DOMAIN_* flags. - * \param wd A write domain containing a bitmask of the R300_DOMAIN_* flags. - */ - void (*cs_add_reloc)(struct r300_winsys_cs *cs, - struct r300_winsys_cs_handle *buf, - enum r300_buffer_domain rd, - enum r300_buffer_domain wd); - - /** - * Return TRUE if there is enough memory in VRAM and GTT for the relocs - * added so far. - * - * \param cs A command stream to validate. - */ - boolean (*cs_validate)(struct r300_winsys_cs *cs); - - /** - * Write a relocated dword to a command buffer. - * - * \param cs A command stream the relocation is written to. - * \param buf A winsys buffer to write the relocation for. - * \param rd A read domain containing a bitmask of the R300_DOMAIN_* flags. - * \param wd A write domain containing a bitmask of the R300_DOMAIN_* flags. - */ - void (*cs_write_reloc)(struct r300_winsys_cs *cs, - struct r300_winsys_cs_handle *buf); - - /** - * Flush a command stream. - * - * \param cs A command stream to flush. - * \param flags, R300_FLUSH_ASYNC or 0. - */ - void (*cs_flush)(struct r300_winsys_cs *cs, unsigned flags); - - /** - * Set a flush callback which is called from winsys when flush is - * required. - * - * \param cs A command stream to set the callback for. - * \param flush A flush callback function associated with the command stream. - * \param user A user pointer that will be passed to the flush callback. - */ - void (*cs_set_flush)(struct r300_winsys_cs *cs, - void (*flush)(void *ctx, unsigned flags), - void *user); - - /** - * Return TRUE if a buffer is referenced by a command stream. - * - * \param cs A command stream. - * \param buf A winsys buffer. - */ - boolean (*cs_is_buffer_referenced)(struct r300_winsys_cs *cs, - struct r300_winsys_cs_handle *buf); -}; - -#endif /* R300_WINSYS_H */ diff --git a/src/gallium/drivers/r600/eg_state_inlines.h b/src/gallium/drivers/r600/eg_state_inlines.h index 487adddcb72..f20d45f48de 100644 --- a/src/gallium/drivers/r600/eg_state_inlines.h +++ b/src/gallium/drivers/r600/eg_state_inlines.h @@ -367,10 +367,13 @@ static inline uint32_t r600_translate_colorswap(enum pipe_format format) case PIPE_FORMAT_B10G10R10A2_UNORM: return V_028C70_SWAP_ALT; + case PIPE_FORMAT_R32_FLOAT: + case PIPE_FORMAT_R16G16_FLOAT: case PIPE_FORMAT_R16G16_UNORM: return V_028C70_SWAP_STD; /* 64-bit buffers. */ + case PIPE_FORMAT_R32G32_FLOAT: case PIPE_FORMAT_R16G16B16A16_UNORM: case PIPE_FORMAT_R16G16B16A16_SNORM: case PIPE_FORMAT_R16G16B16A16_SSCALED: @@ -504,6 +507,57 @@ static INLINE uint32_t r600_translate_colorformat(enum pipe_format format) } } +static INLINE uint32_t r600_colorformat_endian_swap(uint32_t colorformat) +{ +#ifdef PIPE_ARCH_BIG_ENDIAN + switch(colorformat) { + case V_0280A0_COLOR_4_4: + return(ENDIAN_NONE); + + /* 8-bit buffers. */ + case V_0280A0_COLOR_8: + return(ENDIAN_NONE); + + /* 16-bit buffers. */ + case V_0280A0_COLOR_5_6_5: + case V_0280A0_COLOR_1_5_5_5: + case V_0280A0_COLOR_4_4_4_4: + case V_0280A0_COLOR_16: + case V_0280A0_COLOR_8_8: + return(ENDIAN_8IN16); + + /* 32-bit buffers. */ + case V_0280A0_COLOR_8_8_8_8: + case V_0280A0_COLOR_2_10_10_10: + case V_0280A0_COLOR_8_24: + case V_0280A0_COLOR_24_8: + case V_0280A0_COLOR_32_FLOAT: + case V_0280A0_COLOR_16_16_FLOAT: + case V_0280A0_COLOR_16_16: + return(ENDIAN_8IN32); + + /* 64-bit buffers. */ + case V_0280A0_COLOR_16_16_16_16: + case V_0280A0_COLOR_16_16_16_16_FLOAT: + return(ENDIAN_8IN16); + + case V_0280A0_COLOR_32_32_FLOAT: + case V_0280A0_COLOR_32_32: + return(ENDIAN_8IN32); + + /* 128-bit buffers. */ + case V_0280A0_COLOR_32_32_32_FLOAT: + case V_0280A0_COLOR_32_32_32_32_FLOAT: + case V_0280A0_COLOR_32_32_32_32: + return(ENDIAN_8IN32); + default: + return ENDIAN_NONE; /* Unsupported. */ + } +#else + return ENDIAN_NONE; +#endif +} + static INLINE boolean r600_is_sampler_format_supported(struct pipe_screen *screen, enum pipe_format format) { return r600_translate_texformat(screen, format, NULL, NULL, NULL) != ~0; diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 77432661b64..a972f82fb1d 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -107,15 +107,18 @@ static void *evergreen_create_blend_state(struct pipe_context *ctx, r600_pipe_state_add_reg(rstate, R_028C3C_PA_SC_AA_MASK, 0xFFFFFFFF, 0xFFFFFFFF, NULL); for (int i = 0; i < 8; i++) { - unsigned eqRGB = state->rt[i].rgb_func; - unsigned srcRGB = state->rt[i].rgb_src_factor; - unsigned dstRGB = state->rt[i].rgb_dst_factor; - unsigned eqA = state->rt[i].alpha_func; - unsigned srcA = state->rt[i].alpha_src_factor; - unsigned dstA = state->rt[i].alpha_dst_factor; + /* state->rt entries > 0 only written if independent blending */ + const int j = state->independent_blend_enable ? i : 0; + + unsigned eqRGB = state->rt[j].rgb_func; + unsigned srcRGB = state->rt[j].rgb_src_factor; + unsigned dstRGB = state->rt[j].rgb_dst_factor; + unsigned eqA = state->rt[j].alpha_func; + unsigned srcA = state->rt[j].alpha_src_factor; + unsigned dstA = state->rt[j].alpha_dst_factor; blend_cntl[i] = 0; - if (!state->rt[i].blend_enable) + if (!state->rt[j].blend_enable) continue; blend_cntl[i] |= S_028780_BLEND_CONTROL_ENABLE(1); @@ -354,7 +357,7 @@ static struct pipe_sampler_view *evergreen_create_sampler_view(struct pipe_conte const struct util_format_description *desc; struct r600_resource_texture *tmp; struct r600_resource *rbuffer; - unsigned format; + unsigned format, endian; uint32_t word4 = 0, yuv_format = 0, pitch = 0; unsigned char swizzle[4], array_mode = 0, tile_type = 0; struct r600_bo *bo[2]; @@ -391,6 +394,8 @@ static struct pipe_sampler_view *evergreen_create_sampler_view(struct pipe_conte tmp = tmp->flushed_depth_texture; } + endian = r600_colorformat_endian_swap(format); + if (tmp->force_int_type) { word4 &= C_030010_NUM_FORMAT_ALL; word4 |= S_030010_NUM_FORMAT_ALL(V_030010_SQ_NUM_FORMAT_INT); @@ -422,6 +427,7 @@ static struct pipe_sampler_view *evergreen_create_sampler_view(struct pipe_conte r600_pipe_state_add_reg(rstate, R_030010_RESOURCE0_WORD4, word4 | S_030010_SRF_MODE_ALL(V_030010_SRF_MODE_NO_ZERO) | + S_030010_ENDIAN_SWAP(endian) | S_030010_BASE_LEVEL(state->u.tex.first_level), 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_030014_RESOURCE0_WORD5, S_030014_LAST_LEVEL(state->u.tex.last_level) | @@ -652,7 +658,7 @@ static void evergreen_cb(struct r600_pipe_context *rctx, struct r600_pipe_state unsigned level = state->cbufs[cb]->u.tex.level; unsigned pitch, slice; unsigned color_info; - unsigned format, swap, ntype; + unsigned format, swap, ntype, endian; unsigned offset; unsigned tile_type; const struct util_format_description *desc; @@ -677,35 +683,43 @@ static void evergreen_cb(struct r600_pipe_context *rctx, struct r600_pipe_state level, state->cbufs[cb]->u.tex.first_layer); pitch = rtex->pitch_in_blocks[level] / 8 - 1; slice = rtex->pitch_in_blocks[level] * surf->aligned_height / 64 - 1; - ntype = 0; desc = util_format_description(surf->base.format); + for (i = 0; i < 4; i++) { + if (desc->channel[i].type != UTIL_FORMAT_TYPE_VOID) { + break; + } + } + ntype = V_028C70_NUMBER_UNORM; if (desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB) ntype = V_028C70_NUMBER_SRGB; + else if (desc->channel[i].type == UTIL_FORMAT_TYPE_SIGNED) + ntype = V_028C70_NUMBER_SNORM; format = r600_translate_colorformat(surf->base.format); swap = r600_translate_colorswap(surf->base.format); + if (rbuffer->b.b.b.usage == PIPE_USAGE_STAGING) { + endian = ENDIAN_NONE; + } else { + endian = r600_colorformat_endian_swap(format); + } /* disable when gallium grows int textures */ if ((format == FMT_32_32_32_32 || format == FMT_16_16_16_16) && rtex->force_int_type) - ntype = 4; + ntype = V_028C70_NUMBER_UINT; color_info = S_028C70_FORMAT(format) | S_028C70_COMP_SWAP(swap) | S_028C70_ARRAY_MODE(rtex->array_mode[level]) | S_028C70_BLEND_CLAMP(1) | - S_028C70_NUMBER_TYPE(ntype); + S_028C70_NUMBER_TYPE(ntype) | + S_028C70_ENDIAN(endian); - for (i = 0; i < 4; i++) { - if (desc->channel[i].type != UTIL_FORMAT_TYPE_VOID) { - break; - } - } /* we can only set the export size if any thing is snorm/unorm component is > 11 bits, if we aren't a float, sint or uint */ if (desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS && desc->channel[i].size < 12 && desc->channel[i].type != UTIL_FORMAT_TYPE_FLOAT && - ntype != 4 && ntype != 5) + ntype != V_028C70_NUMBER_UINT && ntype != V_028C70_NUMBER_SINT) color_info |= S_028C70_SOURCE_FORMAT(V_028C70_EXPORT_4C_16BPC); if (rtex->array_mode[level] > V_028C70_ARRAY_LINEAR_ALIGNED) { @@ -808,6 +822,9 @@ static void evergreen_set_framebuffer_state(struct pipe_context *ctx, if (rstate == NULL) return; + evergreen_context_flush_dest_caches(&rctx->ctx); + rctx->ctx.num_dest_buffers = state->nr_cbufs; + /* unreference old buffer and reference new one */ rstate->id = R600_PIPE_STATE_FRAMEBUFFER; @@ -819,6 +836,7 @@ static void evergreen_set_framebuffer_state(struct pipe_context *ctx, } if (state->zsbuf) { evergreen_db(rctx, rstate, state); + rctx->ctx.num_dest_buffers++; } target_mask = 0x00000000; @@ -880,6 +898,19 @@ static void evergreen_set_framebuffer_state(struct pipe_context *ctx, } } +static void evergreen_texture_barrier(struct pipe_context *ctx) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + + r600_context_flush_all(&rctx->ctx, S_0085F0_TC_ACTION_ENA(1) | S_0085F0_CB_ACTION_ENA(1) | + S_0085F0_CB0_DEST_BASE_ENA(1) | S_0085F0_CB1_DEST_BASE_ENA(1) | + S_0085F0_CB2_DEST_BASE_ENA(1) | S_0085F0_CB3_DEST_BASE_ENA(1) | + S_0085F0_CB4_DEST_BASE_ENA(1) | S_0085F0_CB5_DEST_BASE_ENA(1) | + S_0085F0_CB6_DEST_BASE_ENA(1) | S_0085F0_CB7_DEST_BASE_ENA(1) | + S_0085F0_CB8_DEST_BASE_ENA(1) | S_0085F0_CB9_DEST_BASE_ENA(1) | + S_0085F0_CB10_DEST_BASE_ENA(1) | S_0085F0_CB11_DEST_BASE_ENA(1)); +} + void evergreen_init_state_functions(struct r600_pipe_context *rctx) { rctx->context.create_blend_state = evergreen_create_blend_state; @@ -920,6 +951,7 @@ void evergreen_init_state_functions(struct r600_pipe_context *rctx) rctx->context.set_viewport_state = evergreen_set_viewport_state; rctx->context.sampler_view_destroy = r600_sampler_view_destroy; rctx->context.redefine_user_buffer = u_default_redefine_user_buffer; + rctx->context.texture_barrier = evergreen_texture_barrier; } void evergreen_init_config(struct r600_pipe_context *rctx) @@ -1542,8 +1574,10 @@ void evergreen_pipe_set_buffer_resource(struct r600_pipe_context *rctx, r600_pipe_state_add_reg(rstate, R_030004_RESOURCE0_WORD1, rbuffer->bo_size - offset - 1, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_030008_RESOURCE0_WORD2, - S_030008_STRIDE(stride), - 0xFFFFFFFF, NULL); +#ifdef PIPE_ARCH_BIG_ENDIAN + S_030008_ENDIAN_SWAP(ENDIAN_8IN32) | +#endif + S_030008_STRIDE(stride), 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_03000C_RESOURCE0_WORD3, S_03000C_DST_SEL_X(V_03000C_SQ_SEL_X) | S_03000C_DST_SEL_Y(V_03000C_SQ_SEL_Y) | diff --git a/src/gallium/drivers/r600/evergreend.h b/src/gallium/drivers/r600/evergreend.h index c51a163bd06..de445b879a1 100644 --- a/src/gallium/drivers/r600/evergreend.h +++ b/src/gallium/drivers/r600/evergreend.h @@ -43,6 +43,7 @@ #define EVERGREEN_CTL_CONST_OFFSET 0x0003CFF0 #define EVERGREEN_CTL_CONST_END 0x0003E200 +#define EVENT_TYPE_PS_PARTIAL_FLUSH 0x10 #define EVENT_TYPE_ZPASS_DONE 0x15 #define EVENT_TYPE_CACHE_FLUSH_AND_INV_EVENT 0x16 #define EVENT_TYPE(x) ((x) << 0) @@ -1885,4 +1886,10 @@ #define R_03CFF4_SQ_VTX_START_INST_LOC 0x03CFF4 #define R_03A200_SQ_LOOP_CONST_0 0x3A200 + +#define ENDIAN_NONE 0 +#define ENDIAN_8IN16 1 +#define ENDIAN_8IN32 2 +#define ENDIAN_8IN64 3 + #endif diff --git a/src/gallium/drivers/r600/r600.h b/src/gallium/drivers/r600/r600.h index 0b7d6f70968..0b0df9d019b 100644 --- a/src/gallium/drivers/r600/r600.h +++ b/src/gallium/drivers/r600/r600.h @@ -179,11 +179,13 @@ struct r600_block_reloc { struct r600_block { struct list_head list; unsigned status; + unsigned flags; unsigned start_offset; unsigned pm4_ndwords; unsigned pm4_flush_ndwords; unsigned nbo; - unsigned nreg; + u16 nreg; + u16 nreg_dirty; u32 *reg; u32 pm4[R600_BLOCK_MAX_REG]; unsigned pm4_bo_index[R600_BLOCK_MAX_REG]; @@ -231,6 +233,8 @@ struct r600_query { #define R600_QUERY_STATE_ENDED (1 << 1) #define R600_QUERY_STATE_SUSPENDED (1 << 2) +#define R600_CONTEXT_DRAW_PENDING (1 << 0) +#define R600_CONTEXT_DST_CACHES_DIRTY (1 << 1) struct r600_context { struct radeon *radeon; @@ -253,6 +257,8 @@ struct r600_context { unsigned num_query_running; struct list_head fenced_bo; unsigned max_db; /* for OQ */ + unsigned num_dest_buffers; + unsigned flags; boolean predicate_drawing; }; @@ -288,9 +294,14 @@ void r600_context_queries_suspend(struct r600_context *ctx); void r600_context_queries_resume(struct r600_context *ctx); void r600_query_predication(struct r600_context *ctx, struct r600_query *query, int operation, int flag_wait); +void r600_context_emit_fence(struct r600_context *ctx, struct r600_bo *fence, + unsigned offset, unsigned value); +void r600_context_flush_all(struct r600_context *ctx, unsigned flush_flags); +void r600_context_flush_dest_caches(struct r600_context *ctx); int evergreen_context_init(struct r600_context *ctx, struct radeon *radeon); void evergreen_context_draw(struct r600_context *ctx, const struct r600_draw *draw); +void evergreen_context_flush_dest_caches(struct r600_context *ctx); void evergreen_context_pipe_state_set_ps_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid); void evergreen_context_pipe_state_set_vs_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid); void evergreen_context_pipe_state_set_fs_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid); diff --git a/src/gallium/drivers/r600/r600_asm.c b/src/gallium/drivers/r600/r600_asm.c index 240093f9b9d..7e854b1b81d 100644 --- a/src/gallium/drivers/r600/r600_asm.c +++ b/src/gallium/drivers/r600/r600_asm.c @@ -22,6 +22,7 @@ */ #include <stdio.h> #include <errno.h> +#include <byteswap.h> #include "util/u_format.h" #include "util/u_memory.h" #include "pipe/p_shader_tokens.h" @@ -32,6 +33,12 @@ #include "r600_formats.h" #include "r600d.h" +#ifdef PIPE_ARCH_BIG_ENDIAN +#define CPU_TO_LE32(x) bswap_32(x) +#else +#define CPU_TO_LE32(x) (x) +#endif + #define NUM_OF_CYCLES 3 #define NUM_OF_COMPONENTS 4 @@ -953,10 +960,17 @@ static int merge_inst_groups(struct r600_bc *bc, struct r600_bc_alu *slots[5], } else result[i] = slots[i]; - // let's check source gprs alu = slots[i]; num_once_inst += is_alu_once_inst(bc, alu); + // let's check dst gpr + if (alu->dst.rel) { + if (have_mova) + return 0; + have_rel = 1; + } + + // let's check source gprs num_src = r600_bc_get_num_operands(bc, alu); for (src = 0; src < num_src; ++src) { if (alu->src[src].rel) { @@ -1376,6 +1390,7 @@ static int r600_bc_vtx_build(struct r600_bc *bc, struct r600_bc_vtx *vtx, unsign S_SQ_VTX_WORD1_SRF_MODE_ALL(vtx->srf_mode_all) | S_SQ_VTX_WORD1_GPR_DST_GPR(vtx->dst_gpr); bc->bytecode[id++] = S_SQ_VTX_WORD2_OFFSET(vtx->offset) | + S_SQ_VTX_WORD2_ENDIAN_SWAP(vtx->endian) | S_SQ_VTX_WORD2_MEGA_FETCH(1); bc->bytecode[id++] = 0; return 0; @@ -1910,6 +1925,7 @@ void r600_bc_dump(struct r600_bc *bc) fprintf(stderr, "MODE:%d)\n", vtx->srf_mode_all); id++; fprintf(stderr, "%04d %08X ", id, bc->bytecode[id]); + fprintf(stderr, "ENDIAN:%d ", vtx->endian); fprintf(stderr, "OFFSET:%d\n", vtx->offset); //TODO id++; @@ -1922,7 +1938,7 @@ void r600_bc_dump(struct r600_bc *bc) } static void r600_vertex_data_type(enum pipe_format pformat, unsigned *format, - unsigned *num_format, unsigned *format_comp) + unsigned *num_format, unsigned *format_comp, unsigned *endian) { const struct util_format_description *desc; unsigned i; @@ -1930,6 +1946,7 @@ static void r600_vertex_data_type(enum pipe_format pformat, unsigned *format, *format = 0; *num_format = 0; *format_comp = 0; + *endian = ENDIAN_NONE; desc = util_format_description(pformat); if (desc->layout != UTIL_FORMAT_LAYOUT_PLAIN) { @@ -1960,6 +1977,9 @@ static void r600_vertex_data_type(enum pipe_format pformat, unsigned *format, *format = FMT_16_16_16_16_FLOAT; break; } +#ifdef PIPE_ARCH_BIG_ENDIAN + *endian = ENDIAN_8IN16; +#endif break; case 32: switch (desc->nr_channels) { @@ -1976,6 +1996,9 @@ static void r600_vertex_data_type(enum pipe_format pformat, unsigned *format, *format = FMT_32_32_32_32_FLOAT; break; } +#ifdef PIPE_ARCH_BIG_ENDIAN + *endian = ENDIAN_8IN32; +#endif break; default: goto out_unknown; @@ -2013,6 +2036,9 @@ static void r600_vertex_data_type(enum pipe_format pformat, unsigned *format, *format = FMT_16_16_16_16; break; } +#ifdef PIPE_ARCH_BIG_ENDIAN + *endian = ENDIAN_8IN16; +#endif break; case 32: switch (desc->nr_channels) { @@ -2029,6 +2055,9 @@ static void r600_vertex_data_type(enum pipe_format pformat, unsigned *format, *format = FMT_32_32_32_32; break; } +#ifdef PIPE_ARCH_BIG_ENDIAN + *endian = ENDIAN_8IN32; +#endif break; default: goto out_unknown; @@ -2060,7 +2089,7 @@ int r600_vertex_elements_build_fetch_shader(struct r600_pipe_context *rctx, stru struct pipe_vertex_element *elements = ve->elements; const struct util_format_description *desc; unsigned fetch_resource_start = rctx->family >= CHIP_CEDAR ? 0 : 160; - unsigned format, num_format, format_comp; + unsigned format, num_format, format_comp, endian; u32 *bytecode; int i, r; @@ -2107,7 +2136,7 @@ int r600_vertex_elements_build_fetch_shader(struct r600_pipe_context *rctx, stru for (i = 0; i < ve->count; i++) { unsigned vbuffer_index; - r600_vertex_data_type(ve->elements[i].src_format, &format, &num_format, &format_comp); + r600_vertex_data_type(ve->elements[i].src_format, &format, &num_format, &format_comp, &endian); desc = util_format_description(ve->elements[i].src_format); if (desc == NULL) { r600_bc_clear(&bc); @@ -2133,6 +2162,7 @@ int r600_vertex_elements_build_fetch_shader(struct r600_pipe_context *rctx, stru vtx.format_comp_all = format_comp; vtx.srf_mode_all = 1; vtx.offset = elements[i].src_offset; + vtx.endian = endian; if ((r = r600_bc_add_vtx(&bc, &vtx))) { r600_bc_clear(&bc); @@ -2172,7 +2202,9 @@ int r600_vertex_elements_build_fetch_shader(struct r600_pipe_context *rctx, stru return -ENOMEM; } - memcpy(bytecode, bc.bytecode, ve->fs_size); + for(i = 0; i < ve->fs_size / 4; i++) { + *(bytecode + i) = CPU_TO_LE32(*(bc.bytecode + i)); + } r600_bo_unmap(rctx->radeon, ve->fetch_shader); r600_bc_clear(&bc); diff --git a/src/gallium/drivers/r600/r600_asm.h b/src/gallium/drivers/r600/r600_asm.h index 27ea293ebe5..26d337fe125 100644 --- a/src/gallium/drivers/r600/r600_asm.h +++ b/src/gallium/drivers/r600/r600_asm.h @@ -104,6 +104,7 @@ struct r600_bc_vtx { unsigned format_comp_all; unsigned srf_mode_all; unsigned offset; + unsigned endian; }; struct r600_bc_output { diff --git a/src/gallium/drivers/r600/r600_blit.c b/src/gallium/drivers/r600/r600_blit.c index 04408a5cc8e..151f48a8bf8 100644 --- a/src/gallium/drivers/r600/r600_blit.c +++ b/src/gallium/drivers/r600/r600_blit.c @@ -277,6 +277,13 @@ static void r600_resource_copy_region(struct pipe_context *ctx, struct texture_orig_info orig_info[2]; boolean restore_orig[2]; + /* Fallback for buffers. */ + if (dst->target == PIPE_BUFFER && src->target == PIPE_BUFFER) { + util_resource_copy_region(ctx, dst, dst_level, dstx, dsty, dstz, + src, src_level, src_box); + return; + } + if (rsrc->depth && !rsrc->is_flushing_texture) r600_texture_depth_flush(ctx, src, FALSE); diff --git a/src/gallium/drivers/r600/r600_buffer.c b/src/gallium/drivers/r600/r600_buffer.c index 6ced719c8f0..71b47e1b056 100644 --- a/src/gallium/drivers/r600/r600_buffer.c +++ b/src/gallium/drivers/r600/r600_buffer.c @@ -24,6 +24,8 @@ * Jerome Glisse * Corbin Simpson <[email protected]> */ +#include <byteswap.h> + #include <pipe/p_screen.h> #include <util/u_format.h> #include <util/u_math.h> @@ -266,11 +268,31 @@ void r600_upload_const_buffer(struct r600_pipe_context *rctx, struct r600_resour uint8_t *ptr = (*rbuffer)->r.b.user_ptr; unsigned size = (*rbuffer)->r.b.b.b.width0; boolean flushed; +#ifdef PIPE_ARCH_BIG_ENDIAN + int i; + uint32_t *tmpPtr; + + *rbuffer = NULL; + + tmpPtr = (uint32_t *)malloc(size); + /* big endian swap */ + if(tmpPtr == NULL) { + return; + } + for(i = 0; i < size / 4; i++) { + tmpPtr[i] = bswap_32(*((uint32_t *)ptr + i)); + } + + u_upload_data(rctx->vbuf_mgr->uploader, 0, size, tmpPtr, const_offset, + (struct pipe_resource**)rbuffer, &flushed); + free(tmpPtr); +#else *rbuffer = NULL; u_upload_data(rctx->vbuf_mgr->uploader, 0, size, ptr, const_offset, (struct pipe_resource**)rbuffer, &flushed); +#endif } else { *const_offset = 0; } diff --git a/src/gallium/drivers/r600/r600_pipe.c b/src/gallium/drivers/r600/r600_pipe.c index 4a30eddb621..89b46f5ad7e 100644 --- a/src/gallium/drivers/r600/r600_pipe.c +++ b/src/gallium/drivers/r600/r600_pipe.c @@ -30,6 +30,7 @@ #include <tgsi/tgsi_util.h> #include <util/u_blitter.h> #include <util/u_double_list.h> +#include "util/u_format.h" #include <util/u_format_s3tc.h> #include <util/u_transfer.h> #include <util/u_surface.h> @@ -37,6 +38,7 @@ #include <util/u_memory.h> #include <util/u_inlines.h> #include "util/u_upload_mgr.h" +#include "os/os_time.h" #include <pipebuffer/pb_buffer.h> #include "r600.h" #include "r600d.h" @@ -49,15 +51,82 @@ /* * pipe_context */ +static struct r600_fence *r600_create_fence(struct r600_pipe_context *ctx) +{ + struct r600_fence *fence = NULL; + + if (!ctx->fences.bo) { + /* Create the shared buffer object */ + ctx->fences.bo = r600_bo(ctx->radeon, 4096, 0, 0, 0); + if (!ctx->fences.bo) { + R600_ERR("r600: failed to create bo for fence objects\n"); + return NULL; + } + ctx->fences.data = r600_bo_map(ctx->radeon, ctx->fences.bo, PB_USAGE_UNSYNCHRONIZED, NULL); + } + + if (!LIST_IS_EMPTY(&ctx->fences.pool)) { + struct r600_fence *entry; + + /* Try to find a freed fence that has been signalled */ + LIST_FOR_EACH_ENTRY(entry, &ctx->fences.pool, head) { + if (ctx->fences.data[entry->index] != 0) { + LIST_DELINIT(&entry->head); + fence = entry; + break; + } + } + } + + if (!fence) { + /* Allocate a new fence */ + struct r600_fence_block *block; + unsigned index; + + if ((ctx->fences.next_index + 1) >= 1024) { + R600_ERR("r600: too many concurrent fences\n"); + return NULL; + } + + index = ctx->fences.next_index++; + + if (!(index % FENCE_BLOCK_SIZE)) { + /* Allocate a new block */ + block = CALLOC_STRUCT(r600_fence_block); + if (block == NULL) + return NULL; + + LIST_ADD(&block->head, &ctx->fences.blocks); + } else { + block = LIST_ENTRY(struct r600_fence_block, ctx->fences.blocks.next, head); + } + + fence = &block->fences[index % FENCE_BLOCK_SIZE]; + fence->ctx = ctx; + fence->index = index; + } + + pipe_reference_init(&fence->reference, 1); + + ctx->fences.data[fence->index] = 0; + r600_context_emit_fence(&ctx->ctx, ctx->fences.bo, fence->index, 1); + return fence; +} + static void r600_flush(struct pipe_context *ctx, struct pipe_fence_handle **fence) { struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + struct r600_fence **rfence = (struct r600_fence**)fence; + #if 0 static int dc = 0; char dname[256]; #endif + if (rfence) + *rfence = r600_create_fence(rctx); + if (!rctx->ctx.pm4_cdwords) return; @@ -101,6 +170,7 @@ static void r600_destroy_context(struct pipe_context *context) struct r600_pipe_context *rctx = (struct r600_pipe_context *)context; rctx->context.delete_depth_stencil_alpha_state(&rctx->context, rctx->custom_dsa_flush); + util_unreference_framebuffer_state(&rctx->framebuffer); r600_context_fini(&rctx->ctx); @@ -113,6 +183,18 @@ static void r600_destroy_context(struct pipe_context *context) u_vbuf_mgr_destroy(rctx->vbuf_mgr); util_slab_destroy(&rctx->pool_transfers); + if (rctx->fences.bo) { + struct r600_fence_block *entry, *tmp; + + LIST_FOR_EACH_ENTRY_SAFE(entry, tmp, &rctx->fences.blocks, head) { + LIST_DEL(&entry->head); + FREE(entry); + } + + r600_bo_unmap(rctx->radeon, rctx->fences.bo); + r600_bo_reference(rctx->radeon, &rctx->fences.bo, NULL); + } + r600_update_num_contexts(rctx->screen, -1); FREE(rctx); @@ -140,6 +222,12 @@ static struct pipe_context *r600_create_context(struct pipe_screen *screen, void rctx->radeon = rscreen->radeon; rctx->family = r600_get_family(rctx->radeon); + rctx->fences.bo = NULL; + rctx->fences.data = NULL; + rctx->fences.next_index = 0; + LIST_INITHEAD(&rctx->fences.pool); + LIST_INITHEAD(&rctx->fences.blocks); + r600_init_blit_functions(rctx); r600_init_query_functions(rctx); r600_init_context_resource_functions(rctx); @@ -284,8 +372,8 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param) case PIPE_CAP_DEPTHSTENCIL_CLEAR_SEPARATE: case PIPE_CAP_DEPTH_CLAMP: case PIPE_CAP_SHADER_STENCIL_EXPORT: - case PIPE_CAP_TGSI_INSTANCEID: case PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR: + case PIPE_CAP_MIXED_COLORBUFFER_FORMATS: return 1; case PIPE_CAP_INDEP_BLEND_ENABLE: /* R600 doesn't support per-MRT blends */ @@ -294,10 +382,14 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param) else return 1; + case PIPE_CAP_TGSI_INSTANCEID: + return 0; + /* Unsupported features (boolean caps). */ case PIPE_CAP_STREAM_OUTPUT: case PIPE_CAP_PRIMITIVE_RESTART: case PIPE_CAP_INDEP_BLEND_FUNC: /* FIXME allow this */ + case PIPE_CAP_FRAGMENT_COLOR_CLAMP_CONTROL: /* R600 doesn't support per-MRT blends */ if (family == CHIP_R600) return 0; @@ -435,6 +527,9 @@ static boolean r600_is_format_supported(struct pipe_screen* screen, return FALSE; } + if (!util_format_is_supported(format, usage)) + return FALSE; + /* Multisample */ if (sample_count > 1) return FALSE; @@ -492,6 +587,62 @@ static void r600_destroy_screen(struct pipe_screen* pscreen) FREE(rscreen); } +static void r600_fence_reference(struct pipe_screen *pscreen, + struct pipe_fence_handle **ptr, + struct pipe_fence_handle *fence) +{ + struct r600_fence **oldf = (struct r600_fence**)ptr; + struct r600_fence *newf = (struct r600_fence*)fence; + + if (pipe_reference(&(*oldf)->reference, &newf->reference)) { + struct r600_pipe_context *ctx = (*oldf)->ctx; + LIST_ADDTAIL(&(*oldf)->head, &ctx->fences.pool); + } + + *ptr = fence; +} + +static boolean r600_fence_signalled(struct pipe_screen *pscreen, + struct pipe_fence_handle *fence) +{ + struct r600_fence *rfence = (struct r600_fence*)fence; + struct r600_pipe_context *ctx = rfence->ctx; + + return ctx->fences.data[rfence->index]; +} + +static boolean r600_fence_finish(struct pipe_screen *pscreen, + struct pipe_fence_handle *fence, + uint64_t timeout) +{ + struct r600_fence *rfence = (struct r600_fence*)fence; + struct r600_pipe_context *ctx = rfence->ctx; + int64_t start_time = 0; + unsigned spins = 0; + + if (timeout != PIPE_TIMEOUT_INFINITE) { + start_time = os_time_get(); + + /* Convert to microseconds. */ + timeout /= 1000; + } + + while (ctx->fences.data[rfence->index] == 0) { + if (++spins % 256) + continue; +#ifdef PIPE_OS_UNIX + sched_yield(); +#else + os_time_sleep(10); +#endif + if (timeout != PIPE_TIMEOUT_INFINITE && + os_time_get() - start_time >= timeout) { + return FALSE; + } + } + + return TRUE; +} struct pipe_screen *r600_screen_create(struct radeon *radeon) { @@ -513,6 +664,9 @@ struct pipe_screen *r600_screen_create(struct radeon *radeon) rscreen->screen.is_format_supported = r600_is_format_supported; rscreen->screen.context_create = r600_create_context; rscreen->screen.video_context_create = r600_video_create; + rscreen->screen.fence_reference = r600_fence_reference; + rscreen->screen.fence_signalled = r600_fence_signalled; + rscreen->screen.fence_finish = r600_fence_finish; r600_init_screen_resource_functions(&rscreen->screen); rscreen->tiling_info = r600_get_tiling_info(radeon); diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index 396801e4a41..88aff0e81bb 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -124,6 +124,30 @@ struct r600_textures_info { unsigned n_samplers; }; +struct r600_fence { + struct pipe_reference reference; + struct r600_pipe_context *ctx; + unsigned index; /* in the shared bo */ + struct list_head head; +}; + +#define FENCE_BLOCK_SIZE 16 + +struct r600_fence_block { + struct r600_fence fences[FENCE_BLOCK_SIZE]; + struct list_head head; +}; + +struct r600_pipe_fences { + struct r600_bo *bo; + unsigned *data; + unsigned next_index; + /* linked list of preallocated blocks */ + struct list_head blocks; + /* linked list of freed fences */ + struct list_head pool; +}; + #define R600_CONSTANT_ARRAY_SIZE 256 #define R600_RESOURCE_ARRAY_SIZE 160 @@ -158,9 +182,12 @@ struct r600_pipe_context { bool flatshade; struct r600_textures_info ps_samplers; + struct r600_pipe_fences fences; + struct u_vbuf_mgr *vbuf_mgr; struct util_slab_mempool pool_transfers; bool blit; + }; struct r600_drawl { diff --git a/src/gallium/drivers/r600/r600_shader.c b/src/gallium/drivers/r600/r600_shader.c index e7285d624e3..188cea0ff88 100644 --- a/src/gallium/drivers/r600/r600_shader.c +++ b/src/gallium/drivers/r600/r600_shader.c @@ -33,6 +33,13 @@ #include "r600d.h" #include <stdio.h> #include <errno.h> +#include <byteswap.h> + +#ifdef PIPE_ARCH_BIG_ENDIAN +#define CPU_TO_LE32(x) bswap_32(x) +#else +#define CPU_TO_LE32(x) (x) +#endif int r600_find_vs_semantic_index(struct r600_shader *vs, struct r600_shader *ps, int id) @@ -52,7 +59,8 @@ static int r600_pipe_shader(struct pipe_context *ctx, struct r600_pipe_shader *s { struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; struct r600_shader *rshader = &shader->shader; - void *ptr; + uint32_t *ptr; + int i; /* copy new shader */ if (shader->bo == NULL) { @@ -60,8 +68,10 @@ static int r600_pipe_shader(struct pipe_context *ctx, struct r600_pipe_shader *s if (shader->bo == NULL) { return -ENOMEM; } - ptr = r600_bo_map(rctx->radeon, shader->bo, 0, NULL); - memcpy(ptr, rshader->bc.bytecode, rshader->bc.ndw * 4); + ptr = (uint32_t*)r600_bo_map(rctx->radeon, shader->bo, 0, NULL); + for(i = 0; i < rshader->bc.ndw; i++) { + *(ptr + i) = CPU_TO_LE32(*(rshader->bc.bytecode + i)); + } r600_bo_unmap(rctx->radeon, shader->bo); } /* build state */ @@ -467,6 +477,11 @@ static int tgsi_fetch_rel_const(struct r600_shader_ctx *ctx, unsigned int offset vtx.num_format_all = 2; /* NUM_FORMAT_SCALED */ vtx.format_comp_all = 1; /* FORMAT_COMP_SIGNED */ vtx.srf_mode_all = 1; /* SRF_MODE_NO_ZERO */ +#ifdef PIPE_ARCH_BIG_ENDIAN + vtx.endian = ENDIAN_8IN32; +#else + vtx.endian = ENDIAN_NONE; +#endif if ((r = r600_bc_add_vtx(ctx->bc, &vtx))) return r; @@ -1526,9 +1541,13 @@ static int tgsi_tex(struct r600_shader_ctx *ctx) unsigned src_gpr; int r, i; int opcode; - boolean src_not_temp = - inst->Src[0].Register.File != TGSI_FILE_TEMPORARY && - inst->Src[0].Register.File != TGSI_FILE_INPUT; + /* Texture fetch instructions can only use gprs as source. + * Also they cannot negate the source or take the absolute value */ + const boolean src_requires_loading = + (inst->Src[0].Register.File != TGSI_FILE_TEMPORARY && + inst->Src[0].Register.File != TGSI_FILE_INPUT) || + ctx->src[0].neg || ctx->src[0].abs; + boolean src_loaded = FALSE; src_gpr = ctx->file_offset[inst->Src[0].Register.File] + inst->Src[0].Register.Index; @@ -1570,7 +1589,7 @@ static int tgsi_tex(struct r600_shader_ctx *ctx) r = r600_bc_add_alu(ctx->bc, &alu); if (r) return r; - src_not_temp = FALSE; + src_loaded = TRUE; src_gpr = ctx->temp_reg; } @@ -1655,11 +1674,11 @@ static int tgsi_tex(struct r600_shader_ctx *ctx) if (r) return r; - src_not_temp = FALSE; + src_loaded = TRUE; src_gpr = ctx->temp_reg; } - if (src_not_temp) { + if (src_requires_loading && !src_loaded) { for (i = 0; i < 4; i++) { memset(&alu, 0, sizeof(struct r600_bc_alu)); alu.inst = CTX_INST(V_SQ_ALU_WORD1_OP2_SQ_OP2_INST_MOV); @@ -1673,6 +1692,7 @@ static int tgsi_tex(struct r600_shader_ctx *ctx) if (r) return r; } + src_loaded = TRUE; src_gpr = ctx->temp_reg; } @@ -1691,10 +1711,18 @@ static int tgsi_tex(struct r600_shader_ctx *ctx) tex.dst_sel_y = (inst->Dst[0].Register.WriteMask & 2) ? 1 : 7; tex.dst_sel_z = (inst->Dst[0].Register.WriteMask & 4) ? 2 : 7; tex.dst_sel_w = (inst->Dst[0].Register.WriteMask & 8) ? 3 : 7; - tex.src_sel_x = 0; - tex.src_sel_y = 1; - tex.src_sel_z = 2; - tex.src_sel_w = 3; + if (src_loaded) { + tex.src_sel_x = 0; + tex.src_sel_y = 1; + tex.src_sel_z = 2; + tex.src_sel_w = 3; + } else { + tex.src_sel_x = ctx->src[0].swizzle[0]; + tex.src_sel_y = ctx->src[0].swizzle[1]; + tex.src_sel_z = ctx->src[0].swizzle[2]; + tex.src_sel_w = ctx->src[0].swizzle[3]; + tex.src_rel = ctx->src[0].rel; + } if (inst->Texture.Texture == TGSI_TEXTURE_CUBE) { tex.src_sel_x = 1; @@ -1712,12 +1740,12 @@ static int tgsi_tex(struct r600_shader_ctx *ctx) if (inst->Texture.Texture == TGSI_TEXTURE_1D_ARRAY) { tex.coord_type_z = 0; - tex.src_sel_z = 1; + tex.src_sel_z = tex.src_sel_y; } else if (inst->Texture.Texture == TGSI_TEXTURE_2D_ARRAY) tex.coord_type_z = 0; if (inst->Texture.Texture == TGSI_TEXTURE_SHADOW1D || inst->Texture.Texture == TGSI_TEXTURE_SHADOW2D) - tex.src_sel_w = 2; + tex.src_sel_w = tex.src_sel_z; r = r600_bc_add_tex(ctx->bc, &tex); if (r) diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index efb68cbd139..ac2e8986b97 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -161,16 +161,19 @@ static void *r600_create_blend_state(struct pipe_context *ctx, color_control, 0xFFFFFFFD, NULL); for (int i = 0; i < 8; i++) { - unsigned eqRGB = state->rt[i].rgb_func; - unsigned srcRGB = state->rt[i].rgb_src_factor; - unsigned dstRGB = state->rt[i].rgb_dst_factor; + /* state->rt entries > 0 only written if independent blending */ + const int j = state->independent_blend_enable ? i : 0; - unsigned eqA = state->rt[i].alpha_func; - unsigned srcA = state->rt[i].alpha_src_factor; - unsigned dstA = state->rt[i].alpha_dst_factor; + unsigned eqRGB = state->rt[j].rgb_func; + unsigned srcRGB = state->rt[j].rgb_src_factor; + unsigned dstRGB = state->rt[j].rgb_dst_factor; + + unsigned eqA = state->rt[j].alpha_func; + unsigned srcA = state->rt[j].alpha_src_factor; + unsigned dstA = state->rt[j].alpha_dst_factor; uint32_t bc = 0; - if (!state->rt[i].blend_enable) + if (!state->rt[j].blend_enable) continue; bc |= S_028804_COLOR_COMB_FCN(r600_translate_blend_function(eqRGB)); @@ -410,7 +413,7 @@ static struct pipe_sampler_view *r600_create_sampler_view(struct pipe_context *c const struct util_format_description *desc; struct r600_resource_texture *tmp; struct r600_resource *rbuffer; - unsigned format; + unsigned format, endian; uint32_t word4 = 0, yuv_format = 0, pitch = 0; unsigned char swizzle[4], array_mode = 0, tile_type = 0; struct r600_bo *bo[2]; @@ -447,6 +450,7 @@ static struct pipe_sampler_view *r600_create_sampler_view(struct pipe_context *c r600_texture_depth_flush(ctx, texture, TRUE); tmp = tmp->flushed_depth_texture; } + endian = r600_colorformat_endian_swap(format); if (tmp->force_int_type) { word4 &= C_038010_NUM_FORMAT_ALL; @@ -487,6 +491,7 @@ static struct pipe_sampler_view *r600_create_sampler_view(struct pipe_context *c word4 | S_038010_SRF_MODE_ALL(V_038010_SRF_MODE_NO_ZERO) | S_038010_REQUEST_SIZE(1) | + S_038010_ENDIAN_SWAP(endian) | S_038010_BASE_LEVEL(state->u.tex.first_level), 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_038014_RESOURCE0_WORD5, S_038014_LAST_LEVEL(state->u.tex.last_level) | @@ -715,7 +720,7 @@ static void r600_cb(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta unsigned level = state->cbufs[cb]->u.tex.level; unsigned pitch, slice; unsigned color_info; - unsigned format, swap, ntype; + unsigned format, swap, ntype, endian; unsigned offset; const struct util_format_description *desc; struct r600_bo *bo[3]; @@ -739,40 +744,37 @@ static void r600_cb(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta level, state->cbufs[cb]->u.tex.first_layer); pitch = rtex->pitch_in_blocks[level] / 8 - 1; slice = rtex->pitch_in_blocks[level] * surf->aligned_height / 64 - 1; - ntype = 0; desc = util_format_description(surf->base.format); - if (desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB) - ntype = V_0280A0_NUMBER_SRGB; - else if (desc->layout == UTIL_FORMAT_LAYOUT_PLAIN) { - switch(desc->channel[0].type) { - case UTIL_FORMAT_TYPE_UNSIGNED: - ntype = V_0280A0_NUMBER_UNORM; - break; - - case UTIL_FORMAT_TYPE_SIGNED: - ntype = V_0280A0_NUMBER_SNORM; - break; - } - } for (i = 0; i < 4; i++) { if (desc->channel[i].type != UTIL_FORMAT_TYPE_VOID) { break; } } + ntype = V_0280A0_NUMBER_UNORM; + if (desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB) + ntype = V_0280A0_NUMBER_SRGB; + else if (desc->channel[i].type == UTIL_FORMAT_TYPE_SIGNED) + ntype = V_0280A0_NUMBER_SNORM; format = r600_translate_colorformat(surf->base.format); swap = r600_translate_colorswap(surf->base.format); + if(rbuffer->b.b.b.usage == PIPE_USAGE_STAGING) { + endian = ENDIAN_NONE; + } else { + endian = r600_colorformat_endian_swap(format); + } /* disable when gallium grows int textures */ if ((format == FMT_32_32_32_32 || format == FMT_16_16_16_16) && rtex->force_int_type) - ntype = 4; + ntype = V_0280A0_NUMBER_UINT; color_info = S_0280A0_FORMAT(format) | S_0280A0_COMP_SWAP(swap) | S_0280A0_ARRAY_MODE(rtex->array_mode[level]) | S_0280A0_BLEND_CLAMP(1) | - S_0280A0_NUMBER_TYPE(ntype); + S_0280A0_NUMBER_TYPE(ntype) | + S_0280A0_ENDIAN(endian); /* on R600 this can't be set if BLEND_CLAMP isn't set, if BLEND_FLOAT32 is set of > 11 bits in a UNORM or SNORM */ @@ -855,6 +857,9 @@ static void r600_set_framebuffer_state(struct pipe_context *ctx, if (rstate == NULL) return; + r600_context_flush_dest_caches(&rctx->ctx); + rctx->ctx.num_dest_buffers = state->nr_cbufs; + /* unreference old buffer and reference new one */ rstate->id = R600_PIPE_STATE_FRAMEBUFFER; @@ -866,6 +871,7 @@ static void r600_set_framebuffer_state(struct pipe_context *ctx, } if (state->zsbuf) { r600_db(rctx, rstate, state); + rctx->ctx.num_dest_buffers++; } target_mask = 0x00000000; @@ -945,6 +951,17 @@ static void r600_set_framebuffer_state(struct pipe_context *ctx, } } +static void r600_texture_barrier(struct pipe_context *ctx) +{ + struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; + + r600_context_flush_all(&rctx->ctx, S_0085F0_TC_ACTION_ENA(1) | S_0085F0_CB_ACTION_ENA(1) | + S_0085F0_CB0_DEST_BASE_ENA(1) | S_0085F0_CB1_DEST_BASE_ENA(1) | + S_0085F0_CB2_DEST_BASE_ENA(1) | S_0085F0_CB3_DEST_BASE_ENA(1) | + S_0085F0_CB4_DEST_BASE_ENA(1) | S_0085F0_CB5_DEST_BASE_ENA(1) | + S_0085F0_CB6_DEST_BASE_ENA(1) | S_0085F0_CB7_DEST_BASE_ENA(1)); +} + void r600_init_state_functions(struct r600_pipe_context *rctx) { rctx->context.create_blend_state = r600_create_blend_state; @@ -985,6 +1002,7 @@ void r600_init_state_functions(struct r600_pipe_context *rctx) rctx->context.set_viewport_state = r600_set_viewport_state; rctx->context.sampler_view_destroy = r600_sampler_view_destroy; rctx->context.redefine_user_buffer = u_default_redefine_user_buffer; + rctx->context.texture_barrier = r600_texture_barrier; } void r600_init_config(struct r600_pipe_context *rctx) @@ -1443,8 +1461,10 @@ void r600_pipe_set_buffer_resource(struct r600_pipe_context *rctx, r600_pipe_state_add_reg(rstate, R_038004_RESOURCE0_WORD1, rbuffer->bo_size - offset - 1, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_038008_RESOURCE0_WORD2, - S_038008_STRIDE(stride), - 0xFFFFFFFF, NULL); +#ifdef PIPE_ARCH_BIG_ENDIAN + S_038008_ENDIAN_SWAP(ENDIAN_8IN32) | +#endif + S_038008_STRIDE(stride), 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_03800C_RESOURCE0_WORD3, 0x00000000, 0xFFFFFFFF, NULL); r600_pipe_state_add_reg(rstate, R_038010_RESOURCE0_WORD4, diff --git a/src/gallium/drivers/r600/r600_state_common.c b/src/gallium/drivers/r600/r600_state_common.c index 43dad0c8023..997c9a597ee 100644 --- a/src/gallium/drivers/r600/r600_state_common.c +++ b/src/gallium/drivers/r600/r600_state_common.c @@ -435,7 +435,7 @@ void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info) { struct r600_pipe_context *rctx = (struct r600_pipe_context *)ctx; struct r600_resource *rbuffer; - u32 vgt_dma_index_type, vgt_draw_initiator, mask; + u32 vgt_dma_index_type, vgt_dma_swap_mode, vgt_draw_initiator, mask; struct r600_draw rdraw; struct r600_pipe_state vgt; struct r600_drawl draw = {}; @@ -467,14 +467,21 @@ void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info) draw.info.index_bias = info->start; } + vgt_dma_swap_mode = 0; switch (draw.index_size) { case 2: vgt_draw_initiator = 0; vgt_dma_index_type = 0; +#ifdef PIPE_ARCH_BIG_ENDIAN + vgt_dma_swap_mode = ENDIAN_8IN16; +#endif break; case 4: vgt_draw_initiator = 0; vgt_dma_index_type = 1; +#ifdef PIPE_ARCH_BIG_ENDIAN + vgt_dma_swap_mode = ENDIAN_8IN32; +#endif break; case 0: vgt_draw_initiator = 2; @@ -521,7 +528,7 @@ void r600_draw_vbo(struct pipe_context *ctx, const struct pipe_draw_info *info) rdraw.vgt_num_indices = draw.info.count; rdraw.vgt_num_instances = draw.info.instance_count; - rdraw.vgt_index_type = vgt_dma_index_type; + rdraw.vgt_index_type = vgt_dma_index_type | (vgt_dma_swap_mode << 2); rdraw.vgt_draw_initiator = vgt_draw_initiator; rdraw.indices = NULL; if (draw.index_buffer) { diff --git a/src/gallium/drivers/r600/r600_state_inlines.h b/src/gallium/drivers/r600/r600_state_inlines.h index 2a40f41bbf5..5eabfdc2bc6 100644 --- a/src/gallium/drivers/r600/r600_state_inlines.h +++ b/src/gallium/drivers/r600/r600_state_inlines.h @@ -363,9 +363,12 @@ static inline uint32_t r600_translate_colorswap(enum pipe_format format) return V_0280A0_SWAP_ALT; case PIPE_FORMAT_R16G16_UNORM: + case PIPE_FORMAT_R16G16_FLOAT: + case PIPE_FORMAT_R32_FLOAT: return V_0280A0_SWAP_STD; /* 64-bit buffers. */ + case PIPE_FORMAT_R32G32_FLOAT: case PIPE_FORMAT_R16G16B16A16_UNORM: case PIPE_FORMAT_R16G16B16A16_SNORM: case PIPE_FORMAT_R16G16B16A16_SSCALED: @@ -501,6 +504,57 @@ static INLINE uint32_t r600_translate_colorformat(enum pipe_format format) } } +static INLINE uint32_t r600_colorformat_endian_swap(uint32_t colorformat) +{ +#ifdef PIPE_ARCH_BIG_ENDIAN + switch(colorformat) { + case V_0280A0_COLOR_4_4: + return(ENDIAN_NONE); + + /* 8-bit buffers. */ + case V_0280A0_COLOR_8: + return(ENDIAN_NONE); + + /* 16-bit buffers. */ + case V_0280A0_COLOR_5_6_5: + case V_0280A0_COLOR_1_5_5_5: + case V_0280A0_COLOR_4_4_4_4: + case V_0280A0_COLOR_16: + case V_0280A0_COLOR_8_8: + return(ENDIAN_8IN16); + + /* 32-bit buffers. */ + case V_0280A0_COLOR_8_8_8_8: + case V_0280A0_COLOR_2_10_10_10: + case V_0280A0_COLOR_8_24: + case V_0280A0_COLOR_24_8: + case V_0280A0_COLOR_32_FLOAT: + case V_0280A0_COLOR_16_16_FLOAT: + case V_0280A0_COLOR_16_16: + return(ENDIAN_8IN32); + + /* 64-bit buffers. */ + case V_0280A0_COLOR_16_16_16_16: + case V_0280A0_COLOR_16_16_16_16_FLOAT: + return(ENDIAN_8IN16); + + case V_0280A0_COLOR_32_32_FLOAT: + case V_0280A0_COLOR_32_32: + return(ENDIAN_8IN32); + + /* 128-bit buffers. */ + case V_0280A0_COLOR_32_32_32_FLOAT: + case V_0280A0_COLOR_32_32_32_32_FLOAT: + case V_0280A0_COLOR_32_32_32_32: + return(ENDIAN_8IN32); + default: + return ENDIAN_NONE; /* Unsupported. */ + } +#else + return ENDIAN_NONE; +#endif +} + static INLINE boolean r600_is_sampler_format_supported(struct pipe_screen *screen, enum pipe_format format) { return r600_translate_texformat(screen, format, NULL, NULL, NULL) != ~0; diff --git a/src/gallium/drivers/r600/r600d.h b/src/gallium/drivers/r600/r600d.h index df70e2889e2..2bff52bec8c 100644 --- a/src/gallium/drivers/r600/r600d.h +++ b/src/gallium/drivers/r600/r600d.h @@ -3460,4 +3460,10 @@ #define SQ_TEX_INST_SAMPLE 0x10 #define SQ_TEX_INST_SAMPLE_L 0x11 #define SQ_TEX_INST_SAMPLE_C 0x18 + +#define ENDIAN_NONE 0 +#define ENDIAN_8IN16 1 +#define ENDIAN_8IN32 2 +#define ENDIAN_8IN64 3 + #endif diff --git a/src/gallium/drivers/softpipe/sp_tex_sample.c b/src/gallium/drivers/softpipe/sp_tex_sample.c index c09ce19559c..02892c16bde 100644 --- a/src/gallium/drivers/softpipe/sp_tex_sample.c +++ b/src/gallium/drivers/softpipe/sp_tex_sample.c @@ -566,7 +566,7 @@ compute_lambda_1d(const struct sp_sampler_variant *samp, const struct pipe_resource *texture = samp->view->texture; float dsdx = fabsf(s[QUAD_BOTTOM_RIGHT] - s[QUAD_BOTTOM_LEFT]); float dsdy = fabsf(s[QUAD_TOP_LEFT] - s[QUAD_BOTTOM_LEFT]); - float rho = MAX2(dsdx, dsdy) * texture->width0; + float rho = MAX2(dsdx, dsdy) * u_minify(texture->width0, samp->view->u.tex.first_level); return util_fast_log2(rho); } @@ -583,8 +583,8 @@ compute_lambda_2d(const struct sp_sampler_variant *samp, float dsdy = fabsf(s[QUAD_TOP_LEFT] - s[QUAD_BOTTOM_LEFT]); float dtdx = fabsf(t[QUAD_BOTTOM_RIGHT] - t[QUAD_BOTTOM_LEFT]); float dtdy = fabsf(t[QUAD_TOP_LEFT] - t[QUAD_BOTTOM_LEFT]); - float maxx = MAX2(dsdx, dsdy) * texture->width0; - float maxy = MAX2(dtdx, dtdy) * texture->height0; + float maxx = MAX2(dsdx, dsdy) * u_minify(texture->width0, samp->view->u.tex.first_level); + float maxy = MAX2(dtdx, dtdy) * u_minify(texture->height0, samp->view->u.tex.first_level); float rho = MAX2(maxx, maxy); return util_fast_log2(rho); @@ -604,9 +604,9 @@ compute_lambda_3d(const struct sp_sampler_variant *samp, float dtdy = fabsf(t[QUAD_TOP_LEFT] - t[QUAD_BOTTOM_LEFT]); float dpdx = fabsf(p[QUAD_BOTTOM_RIGHT] - p[QUAD_BOTTOM_LEFT]); float dpdy = fabsf(p[QUAD_TOP_LEFT] - p[QUAD_BOTTOM_LEFT]); - float maxx = MAX2(dsdx, dsdy) * texture->width0; - float maxy = MAX2(dtdx, dtdy) * texture->height0; - float maxz = MAX2(dpdx, dpdy) * texture->depth0; + float maxx = MAX2(dsdx, dsdy) * u_minify(texture->width0, samp->view->u.tex.first_level); + float maxy = MAX2(dtdx, dtdy) * u_minify(texture->height0, samp->view->u.tex.first_level); + float maxz = MAX2(dpdx, dpdy) * u_minify(texture->depth0, samp->view->u.tex.first_level); float rho; rho = MAX2(maxx, maxy); @@ -1590,10 +1590,10 @@ mip_filter_linear(struct tgsi_sampler *tgsi_sampler, /* XXX: Take into account all lod values. */ lambda = lod[0]; - level0 = (int)lambda; + level0 = samp->view->u.tex.first_level + (int)lambda; if (lambda < 0.0) { - samp->level = 0; + samp->level = samp->view->u.tex.first_level; samp->mag_img_filter(tgsi_sampler, s, t, p, NULL, tgsi_sampler_lod_bias, rgba); } else if (level0 >= texture->last_level) { @@ -1601,7 +1601,7 @@ mip_filter_linear(struct tgsi_sampler *tgsi_sampler, samp->min_img_filter(tgsi_sampler, s, t, p, NULL, tgsi_sampler_lod_bias, rgba); } else { - float levelBlend = lambda - level0; + float levelBlend = frac(lambda); float rgba0[4][4]; float rgba1[4][4]; int c,j; @@ -1658,11 +1658,11 @@ mip_filter_nearest(struct tgsi_sampler *tgsi_sampler, lambda = lod[0]; if (lambda < 0.0) { - samp->level = 0; + samp->level = samp->view->u.tex.first_level; samp->mag_img_filter(tgsi_sampler, s, t, p, NULL, tgsi_sampler_lod_bias, rgba); } else { - samp->level = (int)(lambda + 0.5) ; + samp->level = samp->view->u.tex.first_level + (int)(lambda + 0.5) ; samp->level = MIN2(samp->level, (int)texture->last_level); samp->min_img_filter(tgsi_sampler, s, t, p, NULL, tgsi_sampler_lod_bias, rgba); } @@ -1699,6 +1699,7 @@ mip_filter_none(struct tgsi_sampler *tgsi_sampler, */ lambda = lod[0]; + samp->level = samp->view->u.tex.first_level; if (lambda < 0.0) { samp->mag_img_filter(tgsi_sampler, s, t, p, NULL, tgsi_sampler_lod_bias, rgba); } @@ -1741,20 +1742,20 @@ mip_filter_linear_2d_linear_repeat_POT( /* XXX: Take into account all lod values. */ lambda = lod[0]; - level0 = (int)lambda; + level0 = samp->view->u.tex.first_level + (int)lambda; /* Catches both negative and large values of level0: */ if ((unsigned)level0 >= texture->last_level) { if (level0 < 0) - samp->level = 0; + samp->level = samp->view->u.tex.first_level; else samp->level = texture->last_level; img_filter_2d_linear_repeat_POT(tgsi_sampler, s, t, p, NULL, tgsi_sampler_lod_bias, rgba); } else { - float levelBlend = lambda - level0; + float levelBlend = frac(lambda); float rgba0[4][4]; float rgba1[4][4]; int c,j; @@ -2238,14 +2239,13 @@ sp_sampler_variant_bind_view( struct sp_sampler_variant *samp, struct softpipe_tex_tile_cache *tex_cache, const struct pipe_sampler_view *view ) { - const struct pipe_sampler_state *sampler = samp->sampler; const struct pipe_resource *texture = view->texture; samp->view = view; samp->cache = tex_cache; samp->xpot = util_unsigned_logbase2( texture->width0 ); samp->ypot = util_unsigned_logbase2( texture->height0 ); - samp->level = CLAMP((int) sampler->min_lod, 0, (int) texture->last_level); + samp->level = view->u.tex.first_level; } diff --git a/src/gallium/drivers/svga/include/svga3d_reg.h b/src/gallium/drivers/svga/include/svga3d_reg.h index 77cb4533100..a527d7dcf20 100644 --- a/src/gallium/drivers/svga/include/svga3d_reg.h +++ b/src/gallium/drivers/svga/include/svga3d_reg.h @@ -968,12 +968,18 @@ typedef enum { } SVGA3dTransferType; /* - * The maximum number vertex arrays we're guaranteed to support in + * The maximum number of vertex arrays we're guaranteed to support in * SVGA_3D_CMD_DRAWPRIMITIVES. */ #define SVGA3D_MAX_VERTEX_ARRAYS 32 /* + * The maximum number of primitive ranges we're guaranteed to support + * in SVGA_3D_CMD_DRAWPRIMITIVES. + */ +#define SVGA3D_MAX_DRAW_PRIMITIVE_RANGES 32 + +/* * Identifiers for commands in the command FIFO. * * IDs between 1000 and 1039 (inclusive) were used by obsolete versions of @@ -1474,10 +1480,12 @@ struct { * SVGA3dCmdDrawPrimitives structure. In order, * they are: * - * 1. SVGA3dVertexDecl, quantity 'numVertexDecls' - * 2. SVGA3dPrimitiveRange, quantity 'numRanges' + * 1. SVGA3dVertexDecl, quantity 'numVertexDecls', but no more than + * SVGA3D_MAX_VERTEX_ARRAYS; + * 2. SVGA3dPrimitiveRange, quantity 'numRanges', but no more than + * SVGA3D_MAX_DRAW_PRIMITIVE_RANGES; * 3. Optionally, SVGA3dVertexDivisor, quantity 'numVertexDecls' (contains - * the frequency divisor for this the corresponding vertex decl) + * the frequency divisor for the corresponding vertex decl). */ } SVGA3dCmdDrawPrimitives; /* SVGA_3D_CMD_DRAWPRIMITIVES */ diff --git a/src/gallium/drivers/svga/svga_context.c b/src/gallium/drivers/svga/svga_context.c index 4782b4bf70e..dbbc249258d 100644 --- a/src/gallium/drivers/svga/svga_context.c +++ b/src/gallium/drivers/svga/svga_context.c @@ -204,7 +204,6 @@ void svga_context_flush( struct svga_context *svga, { struct svga_screen *svgascreen = svga_screen(svga->pipe.screen); struct pipe_fence_handle *fence = NULL; - enum pipe_error ret; svga->curr.nr_fbs = 0; @@ -219,25 +218,11 @@ void svga_context_flush( struct svga_context *svga, svga_screen_cache_flush(svgascreen, fence); - /* To force the reemission of rendertargets and texture bindings at - * the beginning of every command buffer. - */ - svga->dirty |= SVGA_NEW_COMMAND_BUFFER; - - /* - * We must reemit the surface bindings here, because svga_update_state - * will always flush the primitives before processing the - * SVGA_NEW_COMMAND_BUFFER state change. - * - * TODO: Refactor this. + /* To force the re-emission of rendertargets and texture sampler bindings on + * the next command buffer. */ - ret = svga_reemit_framebuffer_bindings(svga); - assert(ret == PIPE_OK); - - ret = svga_reemit_tss_bindings(svga); - assert(ret == PIPE_OK); - - svga->dirty &= ~SVGA_NEW_COMMAND_BUFFER; + svga->rebind.rendertargets = TRUE; + svga->rebind.texture_samplers = TRUE; if (SVGA_DEBUG & DEBUG_SYNC) { if (fence) diff --git a/src/gallium/drivers/svga/svga_context.h b/src/gallium/drivers/svga/svga_context.h index 7b36a3606e0..eca529d262e 100644 --- a/src/gallium/drivers/svga/svga_context.h +++ b/src/gallium/drivers/svga/svga_context.h @@ -358,6 +358,11 @@ struct svga_context struct svga_state curr; /* state from the state tracker */ unsigned dirty; /* statechanges since last update_state() */ + struct { + unsigned rendertargets:1; + unsigned texture_samplers:1; + } rebind; + struct u_upload_mgr *upload_ib; struct u_upload_mgr *upload_vb; struct svga_hwtnl *hwtnl; @@ -402,7 +407,6 @@ struct svga_context #define SVGA_NEW_ZERO_STRIDE 0x2000000 #define SVGA_NEW_TEXTURE_FLAGS 0x4000000 #define SVGA_NEW_STENCIL_REF 0x8000000 -#define SVGA_NEW_COMMAND_BUFFER 0x10000000 diff --git a/src/gallium/drivers/svga/svga_draw.c b/src/gallium/drivers/svga/svga_draw.c index 2c873a0f7ac..d8af615ede1 100644 --- a/src/gallium/drivers/svga/svga_draw.c +++ b/src/gallium/drivers/svga/svga_draw.c @@ -170,6 +170,20 @@ svga_hwtnl_flush( struct svga_hwtnl *hwtnl ) ib_handle[i] = handle; } + if (svga->rebind.rendertargets) { + ret = svga_reemit_framebuffer_bindings(svga); + if (ret != PIPE_OK) { + return ret; + } + } + + if (svga->rebind.texture_samplers) { + ret = svga_reemit_tss_bindings(svga); + if (ret != PIPE_OK) { + return ret; + } + } + SVGA_DBG(DEBUG_DMA, "draw to sid %p, %d prims\n", svga->curr.framebuffer.cbufs[0] ? svga_surface(svga->curr.framebuffer.cbufs[0])->handle : NULL, diff --git a/src/gallium/drivers/svga/svga_draw_private.h b/src/gallium/drivers/svga/svga_draw_private.h index 11afb59875b..ca658ac6745 100644 --- a/src/gallium/drivers/svga/svga_draw_private.h +++ b/src/gallium/drivers/svga/svga_draw_private.h @@ -93,7 +93,9 @@ struct index_cache { struct pipe_resource *buffer; }; -#define QSZ 32 + +/** Max number of primitives per draw call */ +#define QSZ SVGA3D_MAX_DRAW_PRIMITIVE_RANGES struct draw_cmd { struct svga_winsys_context *swc; diff --git a/src/gallium/drivers/svga/svga_pipe_blit.c b/src/gallium/drivers/svga/svga_pipe_blit.c index c87afb6946c..c4f122f4f78 100644 --- a/src/gallium/drivers/svga/svga_pipe_blit.c +++ b/src/gallium/drivers/svga/svga_pipe_blit.c @@ -29,6 +29,8 @@ #include "svga_cmd.h" #include "svga_surface.h" +#include "util/u_surface.h" + #define FILE_DEBUG_FLAG DEBUG_BLIT @@ -54,6 +56,13 @@ static void svga_surface_copy(struct pipe_context *pipe, */ svga_surfaces_flush( svga ); + /* Fallback for buffers. */ + if (dst_tex->target == PIPE_BUFFER && src_tex->target == PIPE_BUFFER) { + util_resource_copy_region(pipe, dst_tex, dst_level, dstx, dsty, dstz, + src_tex, src_level, src_box); + return; + } + #if 0 srcsurf = screen->get_tex_surface(screen, src_tex, src_level, src_box->z, src_box->z, diff --git a/src/gallium/drivers/svga/svga_pipe_clear.c b/src/gallium/drivers/svga/svga_pipe_clear.c index 41f239c1a85..b288c3eb2a6 100644 --- a/src/gallium/drivers/svga/svga_pipe_clear.c +++ b/src/gallium/drivers/svga/svga_pipe_clear.c @@ -52,6 +52,13 @@ try_clear(struct svga_context *svga, if (ret) return ret; + if (svga->rebind.rendertargets) { + ret = svga_reemit_framebuffer_bindings(svga); + if (ret != PIPE_OK) { + return ret; + } + } + if ((buffers & PIPE_CLEAR_COLOR) && fb->cbufs[0]) { flags |= SVGA3D_CLEAR_COLOR; util_pack_color(rgba, PIPE_FORMAT_B8G8R8A8_UNORM, &uc); diff --git a/src/gallium/drivers/svga/svga_resource_buffer_upload.c b/src/gallium/drivers/svga/svga_resource_buffer_upload.c index e5fcec08d6e..923958674b4 100644 --- a/src/gallium/drivers/svga/svga_resource_buffer_upload.c +++ b/src/gallium/drivers/svga/svga_resource_buffer_upload.c @@ -40,9 +40,6 @@ #include "svga_debug.h" -#define MAX_DMA_SIZE (4 * 1024 * 1024) - - /** * Allocate a winsys_buffer (ie. DMA, aka GMR memory). * @@ -60,18 +57,10 @@ svga_winsys_buffer_create( struct svga_context *svga, struct svga_winsys_screen *sws = svgascreen->sws; struct svga_winsys_buffer *buf; - /* XXX this shouldn't be a hard-coded number; it should be queried - * somehow. - */ - if (size > MAX_DMA_SIZE) { - return NULL; - } - /* Just try */ buf = sws->buffer_create(sws, alignment, usage, size); - if(!buf) { - - SVGA_DBG(DEBUG_DMA|DEBUG_PERF, "flushing screen to find %d bytes GMR\n", + if (!buf) { + SVGA_DBG(DEBUG_DMA|DEBUG_PERF, "flushing context to find %d bytes GMR\n", size); /* Try flushing all pending DMAs */ diff --git a/src/gallium/drivers/svga/svga_resource_texture.c b/src/gallium/drivers/svga/svga_resource_texture.c index b61f85955a2..f9eb4949b2c 100644 --- a/src/gallium/drivers/svga/svga_resource_texture.c +++ b/src/gallium/drivers/svga/svga_resource_texture.c @@ -231,18 +231,19 @@ svga_transfer_dma(struct svga_context *svga, sw = (uint8_t *)st->swbuf + offset; - if(transfer == SVGA3D_WRITE_HOST_VRAM) { + if (transfer == SVGA3D_WRITE_HOST_VRAM) { + unsigned usage = PIPE_TRANSFER_WRITE; + /* Wait for the previous DMAs to complete */ /* TODO: keep one DMA (at half the size) in the background */ - if(y) { - svga_context_flush(svga, &fence); - sws->fence_finish(sws, fence, 0); - sws->fence_reference(sws, &fence, NULL); + if (y) { + svga_context_flush(svga, NULL); + usage |= PIPE_TRANSFER_DISCARD_WHOLE_RESOURCE; } - hw = sws->buffer_map(sws, st->hwbuf, PIPE_TRANSFER_WRITE); + hw = sws->buffer_map(sws, st->hwbuf, usage); assert(hw); - if(hw) { + if (hw) { memcpy(hw, sw, length); sws->buffer_unmap(sws, st->hwbuf); } diff --git a/src/gallium/drivers/svga/svga_screen.c b/src/gallium/drivers/svga/svga_screen.c index 6c987abe056..b847cf331b3 100644 --- a/src/gallium/drivers/svga/svga_screen.c +++ b/src/gallium/drivers/svga/svga_screen.c @@ -181,6 +181,8 @@ svga_get_paramf(struct pipe_screen *screen, enum pipe_cap param) case PIPE_CAP_DEPTHSTENCIL_CLEAR_SEPARATE: return 1; + case PIPE_CAP_MIXED_COLORBUFFER_FORMATS: + return 0; default: return 0; diff --git a/src/gallium/drivers/svga/svga_state_framebuffer.c b/src/gallium/drivers/svga/svga_state_framebuffer.c index cdadb20c178..cc4819431ad 100644 --- a/src/gallium/drivers/svga/svga_state_framebuffer.c +++ b/src/gallium/drivers/svga/svga_state_framebuffer.c @@ -43,7 +43,7 @@ static int emit_framebuffer( struct svga_context *svga, { const struct pipe_framebuffer_state *curr = &svga->curr.framebuffer; struct pipe_framebuffer_state *hw = &svga->state.hw_clear.framebuffer; - boolean reemit = !!(dirty & SVGA_NEW_COMMAND_BUFFER); + boolean reemit = svga->rebind.rendertargets; unsigned i; enum pipe_error ret; @@ -88,6 +88,7 @@ static int emit_framebuffer( struct svga_context *svga, pipe_surface_reference(&hw->zsbuf, curr->zsbuf); } + svga->rebind.rendertargets = FALSE; return 0; } @@ -108,6 +109,8 @@ svga_reemit_framebuffer_bindings(struct svga_context *svga) unsigned i; enum pipe_error ret; + assert(svga->rebind.rendertargets); + for (i = 0; i < MIN2(PIPE_MAX_COLOR_BUFS, 8); ++i) { if (hw->cbufs[i]) { ret = SVGA3D_SetRenderTarget(svga->swc, SVGA3D_RT_COLOR0 + i, hw->cbufs[i]); @@ -138,6 +141,8 @@ svga_reemit_framebuffer_bindings(struct svga_context *svga) } } + svga->rebind.rendertargets = FALSE; + return PIPE_OK; } @@ -145,8 +150,7 @@ svga_reemit_framebuffer_bindings(struct svga_context *svga) struct svga_tracked_state svga_hw_framebuffer = { "hw framebuffer state", - SVGA_NEW_FRAME_BUFFER | - SVGA_NEW_COMMAND_BUFFER, + SVGA_NEW_FRAME_BUFFER, emit_framebuffer }; @@ -296,7 +300,7 @@ static int emit_viewport( struct svga_context *svga, break; case PIPE_PRIM_POINTS: case PIPE_PRIM_TRIANGLES: - adjust_x = -0.375; + adjust_x = -0.5; adjust_y = -0.5; break; } diff --git a/src/gallium/drivers/svga/svga_state_tss.c b/src/gallium/drivers/svga/svga_state_tss.c index c502506b93b..8b11a2a425e 100644 --- a/src/gallium/drivers/svga/svga_state_tss.c +++ b/src/gallium/drivers/svga/svga_state_tss.c @@ -66,7 +66,7 @@ static int update_tss_binding(struct svga_context *svga, unsigned dirty ) { - boolean reemit = !!(dirty & SVGA_NEW_COMMAND_BUFFER); + boolean reemit = svga->rebind.texture_samplers; unsigned i; unsigned count = MAX2( svga->curr.num_sampler_views, svga->state.hw_draw.num_views ); @@ -159,6 +159,8 @@ update_tss_binding(struct svga_context *svga, SVGA_FIFOCommitAll( svga->swc ); } + svga->rebind.texture_samplers = FALSE; + return 0; fail: @@ -181,6 +183,8 @@ svga_reemit_tss_bindings(struct svga_context *svga) enum pipe_error ret; struct bind_queue queue; + assert(svga->rebind.texture_samplers); + queue.bind_count = 0; for (i = 0; i < svga->state.hw_draw.num_views; i++) { @@ -220,6 +224,8 @@ svga_reemit_tss_bindings(struct svga_context *svga) SVGA_FIFOCommitAll(svga->swc); } + svga->rebind.texture_samplers = FALSE; + return PIPE_OK; } @@ -227,8 +233,7 @@ svga_reemit_tss_bindings(struct svga_context *svga) struct svga_tracked_state svga_hw_tss_binding = { "texture binding emit", SVGA_NEW_TEXTURE_BINDING | - SVGA_NEW_SAMPLER | - SVGA_NEW_COMMAND_BUFFER, + SVGA_NEW_SAMPLER, update_tss_binding }; diff --git a/src/gallium/drivers/trace/README b/src/gallium/drivers/trace/README index c210cba032a..cacd2e17498 100644 --- a/src/gallium/drivers/trace/README +++ b/src/gallium/drivers/trace/README @@ -13,12 +13,17 @@ It can traces all incoming calls. For tracing then do - GALLIUM_TRACE=tri.trace progs/trivial/tri + GALLIUM_TRACE=tri.trace trivial/tri which should create a tri.trace file, which is an XML file. You can view copying trace.xsl to the same directory, and opening with a XSLT capable browser such as Firefox or Internet Explorer. +For long traces you can use the + + src/gallium/tools/trace/dump.py tri.trace | less -R + + == Remote debugging == For remote debugging see: diff --git a/src/gallium/drivers/trace/tr_context.c b/src/gallium/drivers/trace/tr_context.c index 4db7619c424..4f0d6c4b97a 100644 --- a/src/gallium/drivers/trace/tr_context.c +++ b/src/gallium/drivers/trace/tr_context.c @@ -47,15 +47,15 @@ static INLINE struct pipe_resource * trace_resource_unwrap(struct trace_context *tr_ctx, struct pipe_resource *resource) { - struct trace_resource *tr_tex; + struct trace_resource *tr_res; if(!resource) return NULL; - tr_tex = trace_resource(resource); + tr_res = trace_resource(resource); - assert(tr_tex->resource); - return tr_tex->resource; + assert(tr_res->resource); + return tr_res->resource; } @@ -832,19 +832,22 @@ trace_create_sampler_view(struct pipe_context *_pipe, const struct pipe_sampler_view *templ) { struct trace_context *tr_ctx = trace_context(_pipe); - struct trace_resource *tr_tex = trace_resource(_resource); + struct trace_resource *tr_res = trace_resource(_resource); struct pipe_context *pipe = tr_ctx->pipe; - struct pipe_resource *texture = tr_tex->resource; + struct pipe_resource *resource = tr_res->resource; struct pipe_sampler_view *result; struct trace_sampler_view *tr_view; trace_dump_call_begin("pipe_context", "create_sampler_view"); trace_dump_arg(ptr, pipe); - trace_dump_arg(ptr, texture); - trace_dump_arg(sampler_view_template, templ); + trace_dump_arg(ptr, resource); + + trace_dump_arg_begin("templ"); + trace_dump_sampler_view_template(templ, resource->target); + trace_dump_arg_end(); - result = pipe->create_sampler_view(pipe, texture, templ); + result = pipe->create_sampler_view(pipe, resource, templ); trace_dump_ret(ptr, result); @@ -895,29 +898,32 @@ trace_sampler_view_destroy(struct pipe_context *_pipe, static struct pipe_surface * trace_create_surface(struct pipe_context *_pipe, - struct pipe_resource *_texture, + struct pipe_resource *_resource, const struct pipe_surface *surf_tmpl) { struct trace_context *tr_ctx = trace_context(_pipe); - struct trace_resource *tr_tex = trace_resource(_texture); + struct trace_resource *tr_res = trace_resource(_resource); struct pipe_context *pipe = tr_ctx->pipe; - struct pipe_resource *texture = tr_tex->resource; + struct pipe_resource *resource = tr_res->resource; struct pipe_surface *result = NULL; trace_dump_call_begin("pipe_context", "create_surface"); trace_dump_arg(ptr, pipe); - trace_dump_arg(ptr, texture); - /* hmm some values unitialized there */ - trace_dump_arg(surface, surf_tmpl); + trace_dump_arg(ptr, resource); + + trace_dump_arg_begin("surf_tmpl"); + trace_dump_surface_template(surf_tmpl, resource->target); + trace_dump_arg_end(); + - result = pipe->create_surface(pipe, texture, surf_tmpl); + result = pipe->create_surface(pipe, resource, surf_tmpl); trace_dump_ret(ptr, result); trace_dump_call_end(); - result = trace_surf_create(tr_tex, result); + result = trace_surf_create(tr_res, result); return result; } @@ -1231,9 +1237,9 @@ trace_context_get_transfer(struct pipe_context *_context, const struct pipe_box *box) { struct trace_context *tr_context = trace_context(_context); - struct trace_resource *tr_tex = trace_resource(_resource); + struct trace_resource *tr_res = trace_resource(_resource); struct pipe_context *context = tr_context->pipe; - struct pipe_resource *texture = tr_tex->resource; + struct pipe_resource *texture = tr_res->resource; struct pipe_transfer *result = NULL; assert(texture->screen == context->screen); @@ -1246,7 +1252,7 @@ trace_context_get_transfer(struct pipe_context *_context, result = context->get_transfer(context, texture, level, usage, box); if (result) - result = trace_transfer_create(tr_context, tr_tex, result); + result = trace_transfer_create(tr_context, tr_res, result); return result; } @@ -1360,9 +1366,9 @@ trace_context_transfer_inline_write(struct pipe_context *_context, unsigned layer_stride) { struct trace_context *tr_context = trace_context(_context); - struct trace_resource *tr_tex = trace_resource(_resource); + struct trace_resource *tr_res = trace_resource(_resource); struct pipe_context *context = tr_context->pipe; - struct pipe_resource *resource = tr_tex->resource; + struct pipe_resource *resource = tr_res->resource; assert(resource->screen == context->screen); @@ -1397,9 +1403,9 @@ static void trace_redefine_user_buffer(struct pipe_context *_context, unsigned offset, unsigned size) { struct trace_context *tr_context = trace_context(_context); - struct trace_resource *tr_tex = trace_resource(_resource); + struct trace_resource *tr_res = trace_resource(_resource); struct pipe_context *context = tr_context->pipe; - struct pipe_resource *resource = tr_tex->resource; + struct pipe_resource *resource = tr_res->resource; assert(resource->screen == context->screen); diff --git a/src/gallium/drivers/trace/tr_dump_state.c b/src/gallium/drivers/trace/tr_dump_state.c index 18805655bd7..291a6a29ca5 100644 --- a/src/gallium/drivers/trace/tr_dump_state.c +++ b/src/gallium/drivers/trace/tr_dump_state.c @@ -321,8 +321,29 @@ void trace_dump_depth_stencil_alpha_state(const struct pipe_depth_stencil_alpha_ trace_dump_struct_end(); } +static void trace_dump_rt_blend_state(const struct pipe_rt_blend_state *state) +{ + trace_dump_struct_begin("pipe_rt_blend_state"); + + trace_dump_member(uint, state, blend_enable); + + trace_dump_member(uint, state, rgb_func); + trace_dump_member(uint, state, rgb_src_factor); + trace_dump_member(uint, state, rgb_dst_factor); + + trace_dump_member(uint, state, alpha_func); + trace_dump_member(uint, state, alpha_src_factor); + trace_dump_member(uint, state, alpha_dst_factor); + + trace_dump_member(uint, state, colormask); + + trace_dump_struct_end(); +} + void trace_dump_blend_state(const struct pipe_blend_state *state) { + unsigned valid_entries = 1; + if (!trace_dumping_enabled_locked()) return; @@ -331,7 +352,22 @@ void trace_dump_blend_state(const struct pipe_blend_state *state) return; } - trace_dump_bytes(state, sizeof *state); + trace_dump_struct_begin("pipe_blend_state"); + + trace_dump_member(bool, state, dither); + + trace_dump_member(bool, state, logicop_enable); + trace_dump_member(uint, state, logicop_func); + + trace_dump_member(bool, state, independent_blend_enable); + + trace_dump_member_begin("rt"); + if (state->independent_blend_enable) + valid_entries = PIPE_MAX_COLOR_BUFS; + trace_dump_struct_array(rt_blend_state, state->rt, valid_entries); + trace_dump_member_end(); + + trace_dump_struct_end(); } @@ -417,7 +453,8 @@ void trace_dump_sampler_state(const struct pipe_sampler_state *state) } -void trace_dump_sampler_view_template(const struct pipe_sampler_view *state) +void trace_dump_sampler_view_template(const struct pipe_sampler_view *state, + enum pipe_texture_target target) { if (!trace_dumping_enabled_locked()) return; @@ -430,13 +467,29 @@ void trace_dump_sampler_view_template(const struct pipe_sampler_view *state) trace_dump_struct_begin("pipe_sampler_view"); trace_dump_member(format, state, format); - /* XXX */ - trace_dump_member(uint, state, u.tex.first_level); - trace_dump_member(uint, state, u.tex.last_level); - trace_dump_member(uint, state, u.tex.first_layer); - trace_dump_member(uint, state, u.tex.last_layer); - trace_dump_member(uint, state, u.buf.first_element); - trace_dump_member(uint, state, u.buf.last_element); + + trace_dump_member_begin("u"); + trace_dump_struct_begin(""); /* anonymous */ + if (target == PIPE_BUFFER) { + trace_dump_member_begin("buf"); + trace_dump_struct_begin(""); /* anonymous */ + trace_dump_member(uint, &state->u.buf, first_element); + trace_dump_member(uint, &state->u.buf, last_element); + trace_dump_struct_end(); /* anonymous */ + trace_dump_member_end(); /* buf */ + } else { + trace_dump_member_begin("tex"); + trace_dump_struct_begin(""); /* anonymous */ + trace_dump_member(uint, &state->u.tex, first_layer); + trace_dump_member(uint, &state->u.tex, last_layer); + trace_dump_member(uint, &state->u.tex, first_level); + trace_dump_member(uint, &state->u.tex, last_level); + trace_dump_struct_end(); /* anonymous */ + trace_dump_member_end(); /* tex */ + } + trace_dump_struct_end(); /* anonymous */ + trace_dump_member_end(); /* u */ + trace_dump_member(uint, state, swizzle_r); trace_dump_member(uint, state, swizzle_g); trace_dump_member(uint, state, swizzle_b); @@ -446,7 +499,8 @@ void trace_dump_sampler_view_template(const struct pipe_sampler_view *state) } -void trace_dump_surface(const struct pipe_surface *state) +void trace_dump_surface_template(const struct pipe_surface *state, + enum pipe_texture_target target) { if (!trace_dumping_enabled_locked()) return; @@ -464,12 +518,26 @@ void trace_dump_surface(const struct pipe_surface *state) trace_dump_member(uint, state, usage); - trace_dump_member(ptr, state, texture); - trace_dump_member(uint, state, u.tex.level); - trace_dump_member(uint, state, u.tex.first_layer); - trace_dump_member(uint, state, u.tex.last_layer); - trace_dump_member(uint, state, u.buf.first_element); - trace_dump_member(uint, state, u.buf.last_element); + trace_dump_member_begin("u"); + trace_dump_struct_begin(""); /* anonymous */ + if (target == PIPE_BUFFER) { + trace_dump_member_begin("buf"); + trace_dump_struct_begin(""); /* anonymous */ + trace_dump_member(uint, &state->u.buf, first_element); + trace_dump_member(uint, &state->u.buf, last_element); + trace_dump_struct_end(); /* anonymous */ + trace_dump_member_end(); /* buf */ + } else { + trace_dump_member_begin("tex"); + trace_dump_struct_begin(""); /* anonymous */ + trace_dump_member(uint, &state->u.tex, level); + trace_dump_member(uint, &state->u.tex, first_layer); + trace_dump_member(uint, &state->u.tex, last_layer); + trace_dump_struct_end(); /* anonymous */ + trace_dump_member_end(); /* tex */ + } + trace_dump_struct_end(); /* anonymous */ + trace_dump_member_end(); /* u */ trace_dump_struct_end(); } diff --git a/src/gallium/drivers/trace/tr_dump_state.h b/src/gallium/drivers/trace/tr_dump_state.h index fe8ece78d43..a6e7ccdb864 100644 --- a/src/gallium/drivers/trace/tr_dump_state.h +++ b/src/gallium/drivers/trace/tr_dump_state.h @@ -65,9 +65,11 @@ void trace_dump_framebuffer_state(const struct pipe_framebuffer_state *state); void trace_dump_sampler_state(const struct pipe_sampler_state *state); -void trace_dump_sampler_view_template(const struct pipe_sampler_view *view); +void trace_dump_sampler_view_template(const struct pipe_sampler_view *view, + enum pipe_texture_target target); -void trace_dump_surface(const struct pipe_surface *state); +void trace_dump_surface_template(const struct pipe_surface *state, + enum pipe_texture_target target); void trace_dump_transfer(const struct pipe_transfer *state); diff --git a/src/gallium/drivers/trace/tr_screen.c b/src/gallium/drivers/trace/tr_screen.c index 42180c4f19e..a7d33661838 100644 --- a/src/gallium/drivers/trace/tr_screen.c +++ b/src/gallium/drivers/trace/tr_screen.c @@ -117,7 +117,7 @@ trace_screen_get_shader_param(struct pipe_screen *_screen, unsigned shader, trace_dump_call_begin("pipe_screen", "get_shader_param"); trace_dump_arg(ptr, screen); - trace_dump_arg(int, shader); + trace_dump_arg(uint, shader); trace_dump_arg(int, param); result = screen->get_shader_param(screen, shader, param); @@ -282,40 +282,40 @@ trace_screen_resource_from_handle(struct pipe_screen *_screen, static boolean trace_screen_resource_get_handle(struct pipe_screen *_screen, - struct pipe_resource *_texture, + struct pipe_resource *_resource, struct winsys_handle *handle) { struct trace_screen *tr_screen = trace_screen(_screen); - struct trace_resource *tr_texture = trace_resource(_texture); + struct trace_resource *tr_resource = trace_resource(_resource); struct pipe_screen *screen = tr_screen->screen; - struct pipe_resource *texture = tr_texture->resource; + struct pipe_resource *resource = tr_resource->resource; /* TODO trace call */ - return screen->resource_get_handle(screen, texture, handle); + return screen->resource_get_handle(screen, resource, handle); } static void trace_screen_resource_destroy(struct pipe_screen *_screen, - struct pipe_resource *_texture) + struct pipe_resource *_resource) { struct trace_screen *tr_scr = trace_screen(_screen); - struct trace_resource *tr_tex = trace_resource(_texture); + struct trace_resource *tr_res = trace_resource(_resource); struct pipe_screen *screen = tr_scr->screen; - struct pipe_resource *texture = tr_tex->resource; + struct pipe_resource *resource = tr_res->resource; - assert(texture->screen == screen); + assert(resource->screen == screen); - trace_dump_call_begin("pipe_screen", "texture_destroy"); + trace_dump_call_begin("pipe_screen", "resource_destroy"); trace_dump_arg(ptr, screen); - trace_dump_arg(ptr, texture); + trace_dump_arg(ptr, resource); trace_dump_call_end(); - trace_resource_destroy(tr_scr, tr_tex); + trace_resource_destroy(tr_scr, tr_res); } diff --git a/src/gallium/drivers/trace/tr_texture.c b/src/gallium/drivers/trace/tr_texture.c index 27997346471..648b7a4f1cc 100644 --- a/src/gallium/drivers/trace/tr_texture.c +++ b/src/gallium/drivers/trace/tr_texture.c @@ -39,24 +39,24 @@ struct pipe_resource * trace_resource_create(struct trace_screen *tr_scr, struct pipe_resource *texture) { - struct trace_resource *tr_tex; + struct trace_resource *tr_res; if(!texture) goto error; assert(texture->screen == tr_scr->screen); - tr_tex = CALLOC_STRUCT(trace_resource); - if(!tr_tex) + tr_res = CALLOC_STRUCT(trace_resource); + if(!tr_res) goto error; - memcpy(&tr_tex->base, texture, sizeof(struct pipe_resource)); + memcpy(&tr_res->base, texture, sizeof(struct pipe_resource)); - pipe_reference_init(&tr_tex->base.reference, 1); - tr_tex->base.screen = &tr_scr->base; - tr_tex->resource = texture; + pipe_reference_init(&tr_res->base.reference, 1); + tr_res->base.screen = &tr_scr->base; + tr_res->resource = texture; - return &tr_tex->base; + return &tr_res->base; error: pipe_resource_reference(&texture, NULL); @@ -66,15 +66,15 @@ error: void trace_resource_destroy(struct trace_screen *tr_scr, - struct trace_resource *tr_tex) + struct trace_resource *tr_res) { - pipe_resource_reference(&tr_tex->resource, NULL); - FREE(tr_tex); + pipe_resource_reference(&tr_res->resource, NULL); + FREE(tr_res); } struct pipe_surface * -trace_surf_create(struct trace_resource *tr_tex, +trace_surf_create(struct trace_resource *tr_res, struct pipe_surface *surface) { struct trace_surface *tr_surf; @@ -82,7 +82,7 @@ trace_surf_create(struct trace_resource *tr_tex, if(!surface) goto error; - assert(surface->texture == tr_tex->resource); + assert(surface->texture == tr_res->resource); tr_surf = CALLOC_STRUCT(trace_surface); if(!tr_surf) @@ -92,7 +92,7 @@ trace_surf_create(struct trace_resource *tr_tex, pipe_reference_init(&tr_surf->base.reference, 1); tr_surf->base.texture = NULL; - pipe_resource_reference(&tr_surf->base.texture, &tr_tex->base); + pipe_resource_reference(&tr_surf->base.texture, &tr_res->base); tr_surf->surface = surface; return &tr_surf->base; @@ -114,7 +114,7 @@ trace_surf_destroy(struct trace_surface *tr_surf) struct pipe_transfer * trace_transfer_create(struct trace_context *tr_ctx, - struct trace_resource *tr_tex, + struct trace_resource *tr_res, struct pipe_transfer *transfer) { struct trace_transfer *tr_trans; @@ -122,7 +122,7 @@ trace_transfer_create(struct trace_context *tr_ctx, if(!transfer) goto error; - assert(transfer->resource == tr_tex->resource); + assert(transfer->resource == tr_res->resource); tr_trans = CALLOC_STRUCT(trace_transfer); if(!tr_trans) @@ -133,8 +133,8 @@ trace_transfer_create(struct trace_context *tr_ctx, tr_trans->base.resource = NULL; tr_trans->transfer = transfer; - pipe_resource_reference(&tr_trans->base.resource, &tr_tex->base); - assert(tr_trans->base.resource == &tr_tex->base); + pipe_resource_reference(&tr_trans->base.resource, &tr_res->base); + assert(tr_trans->base.resource == &tr_res->base); return &tr_trans->base; diff --git a/src/gallium/drivers/trace/tr_texture.h b/src/gallium/drivers/trace/tr_texture.h index 3352c96e59a..bf3c16e8cd2 100644 --- a/src/gallium/drivers/trace/tr_texture.h +++ b/src/gallium/drivers/trace/tr_texture.h @@ -122,10 +122,10 @@ trace_resource_create(struct trace_screen *tr_scr, void trace_resource_destroy(struct trace_screen *tr_scr, - struct trace_resource *tr_tex); + struct trace_resource *tr_res); struct pipe_surface * -trace_surf_create(struct trace_resource *tr_tex, +trace_surf_create(struct trace_resource *tr_res, struct pipe_surface *surface); void @@ -133,7 +133,7 @@ trace_surf_destroy(struct trace_surface *tr_surf); struct pipe_transfer * trace_transfer_create(struct trace_context *tr_ctx, - struct trace_resource *tr_tex, + struct trace_resource *tr_res, struct pipe_transfer *transfer); void diff --git a/src/gallium/include/pipe/p_compiler.h b/src/gallium/include/pipe/p_compiler.h index 3441db685ce..8c788f4bb0e 100644 --- a/src/gallium/include/pipe/p_compiler.h +++ b/src/gallium/include/pipe/p_compiler.h @@ -292,12 +292,14 @@ void _ReadWriteBarrier(void); * Note that profile guided optimization can offer better results, but * needs an appropriate coverage suite and does not inform human readers. */ -#ifdef __GNUC__ -#define likely(x) __builtin_expect(!!(x), 1) -#define unlikely(x) __builtin_expect(!!(x), 0) -#else -#define likely(x) !!(x) -#define unlikely(x) !!(x) +#ifndef likely +# if defined(__GNUC__) +# define likely(x) __builtin_expect(!!(x), 1) +# define unlikely(x) __builtin_expect(!!(x), 0) +# else +# define likely(x) (x) +# define unlikely(x) (x) +# endif #endif diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index e3cc28ba476..75df89f2acb 100644 --- a/src/gallium/include/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h @@ -414,78 +414,80 @@ enum pipe_transfer_usage { * pipe_screen::get_param() and pipe_screen::get_paramf(). */ enum pipe_cap { - PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS, - PIPE_CAP_NPOT_TEXTURES, - PIPE_CAP_TWO_SIDED_STENCIL, - PIPE_CAP_GLSL, /* XXX need something better */ - PIPE_CAP_DUAL_SOURCE_BLEND, - PIPE_CAP_ANISOTROPIC_FILTER, - PIPE_CAP_POINT_SPRITE, - PIPE_CAP_MAX_RENDER_TARGETS, - PIPE_CAP_OCCLUSION_QUERY, - PIPE_CAP_TIMER_QUERY, - PIPE_CAP_TEXTURE_SHADOW_MAP, - PIPE_CAP_TEXTURE_SWIZZLE, - PIPE_CAP_MAX_TEXTURE_2D_LEVELS, - PIPE_CAP_MAX_TEXTURE_3D_LEVELS, - PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS, - PIPE_CAP_MAX_LINE_WIDTH, - PIPE_CAP_MAX_LINE_WIDTH_AA, - PIPE_CAP_MAX_POINT_WIDTH, - PIPE_CAP_MAX_POINT_WIDTH_AA, - PIPE_CAP_MAX_TEXTURE_ANISOTROPY, - PIPE_CAP_MAX_TEXTURE_LOD_BIAS, - PIPE_CAP_GUARD_BAND_LEFT, /*< float */ - PIPE_CAP_GUARD_BAND_TOP, /*< float */ - PIPE_CAP_GUARD_BAND_RIGHT, /*< float */ - PIPE_CAP_GUARD_BAND_BOTTOM, /*< float */ - PIPE_CAP_TEXTURE_MIRROR_CLAMP, - PIPE_CAP_TEXTURE_MIRROR_REPEAT, - PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS, - PIPE_CAP_BLEND_EQUATION_SEPARATE, - PIPE_CAP_SM3, /*< Shader Model, supported */ - PIPE_CAP_STREAM_OUTPUT, - PIPE_CAP_PRIMITIVE_RESTART, + PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS = 0, + PIPE_CAP_NPOT_TEXTURES = 1, + PIPE_CAP_TWO_SIDED_STENCIL = 2, + PIPE_CAP_GLSL = 3, /* XXX need something better */ + PIPE_CAP_DUAL_SOURCE_BLEND = 4, + PIPE_CAP_ANISOTROPIC_FILTER = 5, + PIPE_CAP_POINT_SPRITE = 6, + PIPE_CAP_MAX_RENDER_TARGETS = 7, + PIPE_CAP_OCCLUSION_QUERY = 8, + PIPE_CAP_TIMER_QUERY = 9, + PIPE_CAP_TEXTURE_SHADOW_MAP = 10, + PIPE_CAP_TEXTURE_SWIZZLE = 11, + PIPE_CAP_MAX_TEXTURE_2D_LEVELS = 12, + PIPE_CAP_MAX_TEXTURE_3D_LEVELS = 13, + PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS = 14, + PIPE_CAP_MAX_LINE_WIDTH = 15, + PIPE_CAP_MAX_LINE_WIDTH_AA = 16, + PIPE_CAP_MAX_POINT_WIDTH = 17, + PIPE_CAP_MAX_POINT_WIDTH_AA = 18, + PIPE_CAP_MAX_TEXTURE_ANISOTROPY = 19, + PIPE_CAP_MAX_TEXTURE_LOD_BIAS = 20, + PIPE_CAP_GUARD_BAND_LEFT = 21, /*< float */ + PIPE_CAP_GUARD_BAND_TOP = 22, /*< float */ + PIPE_CAP_GUARD_BAND_RIGHT = 23, /*< float */ + PIPE_CAP_GUARD_BAND_BOTTOM = 24, /*< float */ + PIPE_CAP_TEXTURE_MIRROR_CLAMP = 25, + PIPE_CAP_TEXTURE_MIRROR_REPEAT = 26, + PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS = 27, + PIPE_CAP_BLEND_EQUATION_SEPARATE = 28, + PIPE_CAP_SM3 = 29, /*< Shader Model, supported */ + PIPE_CAP_STREAM_OUTPUT = 30, + PIPE_CAP_PRIMITIVE_RESTART = 31, /** Maximum texture image units accessible from vertex and fragment shaders * combined */ - PIPE_CAP_MAX_COMBINED_SAMPLERS, + PIPE_CAP_MAX_COMBINED_SAMPLERS = 32, /** blend enables and write masks per rendertarget */ - PIPE_CAP_INDEP_BLEND_ENABLE, + PIPE_CAP_INDEP_BLEND_ENABLE = 33, /** different blend funcs per rendertarget */ - PIPE_CAP_INDEP_BLEND_FUNC, - PIPE_CAP_DEPTHSTENCIL_CLEAR_SEPARATE, - PIPE_CAP_ARRAY_TEXTURES, - PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT, - PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT, - PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER, - PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER, - PIPE_CAP_DEPTH_CLAMP, - PIPE_CAP_SHADER_STENCIL_EXPORT, - PIPE_CAP_TGSI_INSTANCEID, - PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR, + PIPE_CAP_INDEP_BLEND_FUNC = 34, + PIPE_CAP_DEPTHSTENCIL_CLEAR_SEPARATE = 35, + PIPE_CAP_ARRAY_TEXTURES = 36, + PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT = 37, + PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT = 38, + PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER = 39, + PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER = 40, + PIPE_CAP_DEPTH_CLAMP = 41, + PIPE_CAP_SHADER_STENCIL_EXPORT = 42, + PIPE_CAP_TGSI_INSTANCEID = 43, + PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR = 44, + PIPE_CAP_FRAGMENT_COLOR_CLAMP_CONTROL = 45, + PIPE_CAP_MIXED_COLORBUFFER_FORMATS = 46, }; /* Shader caps not specific to any single stage */ enum pipe_shader_cap { - PIPE_SHADER_CAP_MAX_INSTRUCTIONS, /* if 0, it means the stage is unsupported */ - PIPE_SHADER_CAP_MAX_ALU_INSTRUCTIONS, - PIPE_SHADER_CAP_MAX_TEX_INSTRUCTIONS, - PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS, - PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH, - PIPE_SHADER_CAP_MAX_INPUTS, - PIPE_SHADER_CAP_MAX_CONSTS, - PIPE_SHADER_CAP_MAX_CONST_BUFFERS, - PIPE_SHADER_CAP_MAX_TEMPS, - PIPE_SHADER_CAP_MAX_ADDRS, - PIPE_SHADER_CAP_MAX_PREDS, + PIPE_SHADER_CAP_MAX_INSTRUCTIONS = 0, /* if 0, it means the stage is unsupported */ + PIPE_SHADER_CAP_MAX_ALU_INSTRUCTIONS = 1, + PIPE_SHADER_CAP_MAX_TEX_INSTRUCTIONS = 2, + PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS = 3, + PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH = 4, + PIPE_SHADER_CAP_MAX_INPUTS = 5, + PIPE_SHADER_CAP_MAX_CONSTS = 6, + PIPE_SHADER_CAP_MAX_CONST_BUFFERS = 7, + PIPE_SHADER_CAP_MAX_TEMPS = 8, + PIPE_SHADER_CAP_MAX_ADDRS = 9, + PIPE_SHADER_CAP_MAX_PREDS = 10, /* boolean caps */ - PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED, - PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR, - PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR, - PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR, - PIPE_SHADER_CAP_INDIRECT_CONST_ADDR, - PIPE_SHADER_CAP_SUBROUTINES, /* BGNSUB, ENDSUB, CAL, RET */ + PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED = 11, + PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR = 12, + PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR = 13, + PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR = 14, + PIPE_SHADER_CAP_INDIRECT_CONST_ADDR = 15, + PIPE_SHADER_CAP_SUBROUTINES = 16, /* BGNSUB, ENDSUB, CAL, RET */ }; diff --git a/src/gallium/include/pipe/p_format.h b/src/gallium/include/pipe/p_format.h index 542931ec1d8..c9f75c019ef 100644 --- a/src/gallium/include/pipe/p_format.h +++ b/src/gallium/include/pipe/p_format.h @@ -211,17 +211,35 @@ enum pipe_format { PIPE_FORMAT_LATC2_UNORM = 145, PIPE_FORMAT_LATC2_SNORM = 146, - PIPE_FORMAT_YV12 = 147, - PIPE_FORMAT_YV16 = 148, - PIPE_FORMAT_IYUV = 149, /**< aka I420 */ - PIPE_FORMAT_NV12 = 150, - PIPE_FORMAT_NV21 = 151, + PIPE_FORMAT_A8_SNORM = 147, + PIPE_FORMAT_L8_SNORM = 148, + PIPE_FORMAT_L8A8_SNORM = 149, + PIPE_FORMAT_I8_SNORM = 150, + PIPE_FORMAT_A16_SNORM = 151, + PIPE_FORMAT_L16_SNORM = 152, + PIPE_FORMAT_L16A16_SNORM = 153, + PIPE_FORMAT_I16_SNORM = 154, + + PIPE_FORMAT_A16_FLOAT = 155, + PIPE_FORMAT_L16_FLOAT = 156, + PIPE_FORMAT_L16A16_FLOAT = 157, + PIPE_FORMAT_I16_FLOAT = 158, + PIPE_FORMAT_A32_FLOAT = 159, + PIPE_FORMAT_L32_FLOAT = 160, + PIPE_FORMAT_L32A32_FLOAT = 161, + PIPE_FORMAT_I32_FLOAT = 162, + + PIPE_FORMAT_YV12 = 163, + PIPE_FORMAT_YV16 = 164, + PIPE_FORMAT_IYUV = 165, /**< aka I420 */ + PIPE_FORMAT_NV12 = 166, + PIPE_FORMAT_NV21 = 167, PIPE_FORMAT_AYUV = PIPE_FORMAT_A8R8G8B8_UNORM, PIPE_FORMAT_VUYA = PIPE_FORMAT_B8G8R8A8_UNORM, PIPE_FORMAT_XYUV = PIPE_FORMAT_X8R8G8B8_UNORM, PIPE_FORMAT_VUYX = PIPE_FORMAT_B8G8R8X8_UNORM, - PIPE_FORMAT_IA44 = 152, - PIPE_FORMAT_AI44 = 153, + PIPE_FORMAT_IA44 = 168, + PIPE_FORMAT_AI44 = 169, PIPE_FORMAT_COUNT }; diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h index cf6c5b50268..f6ad4560f16 100644 --- a/src/gallium/include/pipe/p_state.h +++ b/src/gallium/include/pipe/p_state.h @@ -81,6 +81,8 @@ struct pipe_rasterizer_state { unsigned flatshade:1; unsigned light_twoside:1; + unsigned clamp_vertex_color:1; + unsigned clamp_fragment_color:1; unsigned front_ccw:1; unsigned cull_face:2; /**< PIPE_FACE_x */ unsigned fill_front:2; /**< PIPE_POLYGON_MODE_x */ diff --git a/src/gallium/state_trackers/egl/wayland/native_wayland.c b/src/gallium/state_trackers/egl/wayland/native_wayland.c index 068c3cd7c8e..b9cf8c48f1e 100644 --- a/src/gallium/state_trackers/egl/wayland/native_wayland.c +++ b/src/gallium/state_trackers/egl/wayland/native_wayland.c @@ -33,6 +33,7 @@ #include "state_tracker/drm_driver.h" #include "egllog.h" +#include <errno.h> #include "native_wayland.h" @@ -45,6 +46,9 @@ #include "wayland-egl-priv.h" #include <xf86drm.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> static struct native_event_handler *wayland_event_handler; @@ -135,6 +139,12 @@ wayland_display_destroy(struct native_display *ndpy) { struct wayland_display *display = wayland_display(ndpy); + if (display->fd) + close(display->fd); + if (display->wl_drm) + wl_drm_destroy(display->wl_drm); + if (display->device_name) + FREE(display->device_name); if (display->config) FREE(display->config); @@ -161,7 +171,7 @@ wayland_create_buffer(struct wayland_surface *surface, pipe_resource_reference(&resource, NULL); - return wl_drm_create_buffer(display->dpy->drm, wsh.handle, + return wl_drm_create_buffer(display->wl_drm, wsh.handle, width, height, wsh.stride, surface->win->visual); } @@ -174,21 +184,24 @@ wayland_pixmap_destroy(struct wl_egl_pixmap *egl_pixmap) assert(resource); pipe_resource_reference(&resource, NULL); + if (egl_pixmap->buffer) { + wl_buffer_destroy(egl_pixmap->buffer); + egl_pixmap->buffer = NULL; + } egl_pixmap->driver_private = NULL; egl_pixmap->destroy = NULL; - egl_pixmap->name = 0; } static void -wayland_pixmap_surface_intialize(struct wayland_surface *surface) +wayland_pixmap_surface_initialize(struct wayland_surface *surface) { struct native_display *ndpy = &surface->display->base; struct pipe_resource *resource; struct winsys_handle wsh; const enum native_attachment front_natt = NATIVE_ATTACHMENT_FRONT_LEFT; - if (surface->pix->name > 0) + if (surface->pix->buffer != NULL) return; resource = resource_surface_get_single_resource(surface->rsurf, front_natt); @@ -196,8 +209,11 @@ wayland_pixmap_surface_intialize(struct wayland_surface *surface) wsh.type = DRM_API_HANDLE_TYPE_SHARED; ndpy->screen->resource_get_handle(ndpy->screen, resource, &wsh); - surface->pix->name = wsh.handle; - surface->pix->stride = wsh.stride; + surface->pix->buffer = + wl_drm_create_buffer(surface->display->wl_drm, wsh.handle, + surface->pix->width, surface->pix->height, + wsh.stride, surface->pix->visual); + surface->pix->destroy = wayland_pixmap_destroy; surface->pix->driver_private = resource; } @@ -228,12 +244,12 @@ wayland_window_surface_handle_resize(struct wayland_surface *surface) surface->win->width, surface->win->height)) { if (surface->pending_resource) - force_roundtrip(display->dpy->display); + force_roundtrip(display->dpy); if (front_resource) { surface->pending_resource = front_resource; front_resource = NULL; - wl_display_sync_callback(display->dpy->display, + wl_display_sync_callback(display->dpy, wayland_release_pending_resource, surface); } @@ -274,13 +290,13 @@ wayland_surface_validate(struct native_surface *nsurf, uint attachment_mask, resource_surface_get_size(surface->rsurf, (uint *) width, (uint *) height); if (surface->type == WL_PIXMAP_SURFACE) - wayland_pixmap_surface_intialize(surface); + wayland_pixmap_surface_initialize(surface); return TRUE; } static void -wayland_frame_callback(void *data, uint32_t time) +wayland_frame_callback(struct wl_surface *surf, void *data, uint32_t time) { struct wayland_surface *surface = data; @@ -304,11 +320,11 @@ wayland_surface_swap_buffers(struct native_surface *nsurf) struct wayland_display *display = surface->display; while (surface->block_swap_buffers) - wl_display_iterate(display->dpy->display, WL_DISPLAY_READABLE); + wl_display_iterate(display->dpy, WL_DISPLAY_READABLE); surface->block_swap_buffers = TRUE; - wl_display_frame_callback(display->dpy->display, wayland_frame_callback, - surface); + wl_display_frame_callback(display->dpy, surface->win->surface, + wayland_frame_callback, surface); if (surface->type == WL_WINDOW_SURFACE) { resource_surface_swap_buffers(surface->rsurf, @@ -364,6 +380,7 @@ wayland_surface_present(struct native_surface *nsurf, if (surface->type == WL_WINDOW_SURFACE) { resource_surface_get_size(surface->rsurf, &width, &height); + wl_buffer_damage(surface->buffer[WL_BUFFER_FRONT], 0, 0, width, height); wl_surface_damage(surface->win->surface, 0, 0, width, height); } @@ -397,7 +414,6 @@ wayland_create_pixmap_surface(struct native_display *ndpy, const struct native_config *nconf) { struct wayland_display *display = wayland_display(ndpy); - struct wayland_config *config = wayland_config(nconf); struct wayland_surface *surface; struct wl_egl_pixmap *egl_pixmap = (struct wl_egl_pixmap *) pix; enum native_attachment natt = NATIVE_ATTACHMENT_FRONT_LEFT; @@ -412,7 +428,7 @@ wayland_create_pixmap_surface(struct native_display *ndpy, surface->type = WL_PIXMAP_SURFACE; surface->pix = egl_pixmap; - if (surface->pix->visual == wl_display_get_rgb_visual(display->dpy->display)) + if (surface->pix->visual == wl_display_get_rgb_visual(display->dpy)) surface->color_format = PIPE_FORMAT_B8G8R8X8_UNORM; else surface->color_format = PIPE_FORMAT_B8G8R8A8_UNORM; @@ -433,7 +449,7 @@ wayland_create_pixmap_surface(struct native_display *ndpy, egl_pixmap->width, egl_pixmap->height); /* the pixmap is already allocated, so import it */ - if (surface->pix->name > 0) + if (surface->pix->buffer != NULL) resource_surface_import_resource(surface->rsurf, natt, surface->pix->driver_private); @@ -511,35 +527,80 @@ get_drm_screen_name(int fd, drmVersionPtr version) return name; } +static void +drm_handle_device(void *data, struct wl_drm *drm, const char *device) +{ + struct wayland_display *display = data; + drm_magic_t magic; + + display->device_name = strdup(device); + if (!display->device_name) + return; + + display->fd = open(display->device_name, O_RDWR); + if (display->fd == -1) { + _eglLog(_EGL_WARNING, "wayland-egl: could not open %s (%s)", + display->device_name, strerror(errno)); + return; + } + + drmGetMagic(display->fd, &magic); + wl_drm_authenticate(display->wl_drm, magic); +} + +static void +drm_handle_authenticated(void *data, struct wl_drm *drm) +{ + struct wayland_display *display = data; + + display->authenticated = true; +} + +static const struct wl_drm_listener drm_listener = { + drm_handle_device, + drm_handle_authenticated +}; + static boolean wayland_display_init_screen(struct native_display *ndpy) { struct wayland_display *display = wayland_display(ndpy); drmVersionPtr version; const char *driver_name; + uint32_t id; - if (display->dpy->fd == -1) - force_roundtrip(display->dpy->display); - if (display->dpy->fd == -1) - return FALSE; + id = wl_display_get_global(display->dpy, "wl_drm", 1); + if (id == 0) + wl_display_iterate(display->dpy, WL_DISPLAY_READABLE); + id = wl_display_get_global(display->dpy, "wl_drm", 1); + if (id == 0) + return FALSE; - if (!display->dpy->authenticated) - force_roundtrip(display->dpy->display); - if (!display->dpy->authenticated) + display->wl_drm = wl_drm_create(display->dpy, id, 1); + if (!display->wl_drm) return FALSE; - version = drmGetVersion(display->dpy->fd); + wl_drm_add_listener(display->wl_drm, &drm_listener, display); + force_roundtrip(display->dpy); + if (display->fd == -1) + return FALSE; + + force_roundtrip(display->dpy); + if (!display->authenticated) + return FALSE; + + version = drmGetVersion(display->fd); if (!version) { - _eglLog(_EGL_WARNING, "invalid fd %d", display->dpy->fd); + _eglLog(_EGL_WARNING, "invalid fd %d", display->fd); return FALSE; } /* FIXME: share this with native_drm or egl_dri2 */ - driver_name = get_drm_screen_name(display->dpy->fd, version); + driver_name = get_drm_screen_name(display->fd, version); display->base.screen = wayland_event_handler->new_drm_screen(&display->base, - driver_name, display->dpy->fd); + driver_name, display->fd); drmFreeVersion(version); if (!display->base.screen) { @@ -592,7 +653,7 @@ wayland_display_create(void *dpy, boolean use_sw, void *user_data) display->base.user_data = user_data; display->dpy = dpy; - if (!display->dpy->display) { + if (!display->dpy) { wayland_display_destroy(&display->base); return NULL; } diff --git a/src/gallium/state_trackers/egl/wayland/native_wayland.h b/src/gallium/state_trackers/egl/wayland/native_wayland.h index 271c10dc113..14fc9b0fbb2 100644 --- a/src/gallium/state_trackers/egl/wayland/native_wayland.h +++ b/src/gallium/state_trackers/egl/wayland/native_wayland.h @@ -33,12 +33,17 @@ #include "common/native_helper.h" #include "wayland-egl-priv.h" +#include "wayland-drm-client-protocol.h" struct wayland_display { struct native_display base; struct wayland_config *config; - struct wl_egl_display *dpy; + struct wl_display *dpy; + struct wl_drm *wl_drm; + int fd; + char *device_name; + boolean authenticated; }; enum wayland_buffer_type { diff --git a/src/gallium/state_trackers/python/README b/src/gallium/state_trackers/python/README deleted file mode 100644 index e24a262aba9..00000000000 --- a/src/gallium/state_trackers/python/README +++ /dev/null @@ -1,43 +0,0 @@ -This directory contains Python bindings to Gallium3D. It looks like a state -tracker from the pipe driver perspective, and it looks like a pipe driver from -the python script perspective. - - -To build you'll need: -* Python (with development packages) -* SCons -* SWIG, http://www.swig.org/download.html -* Python Imaging Library with TK support, http://www.pythonware.com/products/pil/, - for the samples - -On a debian-based distro you can simply do: - - aptitude install python-dev scons swig python-imaging python-imaging-tk - -On a Windows machine ensure the swig command is in your PATH. - -Invoke scons on the top dir as - - scons debug=yes statetrackers=python drivers=softpipe winsys=none - -To use it set PYTHONPATH appropriately, e.g, in Linux do: - - export PYTHONPATH=$PWD/build/linux-x86-debug/gallium/state_trackers/python - -or (in Windows) - - set PYTHONPATH=%CD%\build\windows-x86-debug\gallium\state_trackers\python - -and then try running - - python progs/gallium/python/samples/tri.py - -which should show a triangle. - - -This is still work in progress: -- errors are not handled properly and almost always result in crash -- state atoms with array members are awkward to set - --- -Jose Fonseca <[email protected]> diff --git a/src/gallium/state_trackers/python/SConscript b/src/gallium/state_trackers/python/SConscript deleted file mode 100644 index b8371865a61..00000000000 --- a/src/gallium/state_trackers/python/SConscript +++ /dev/null @@ -1,66 +0,0 @@ -import sys -import os.path - -Import('*') - -if env['toolchain'] == 'crossmingw': - # Cross-compilation not supported - Return() - -if not env.Detect(['swig']): - Return() - -env = env.Clone() - -env.Tool('python') - -env.Tool('swig') -env.Append(SWIGPATH = ['#src/gallium/include', '#src/gallium/include/pipe']) -env.Append(SWIGFLAGS = ['-python', '-keyword']) - -env.Append(CPPPATH = '.') - -if env['platform'] == 'windows': - env.Append(LIBS = [ - 'opengl32', - 'gdi32', - 'user32', - 'kernel32', - 'ws2_32', - ]) -else: - env.Append(CPPDEFINES = ['GCC_HASCLASSVISIBILITY']) - env.Append(LIBS = [ - 'GL', - 'X11', - ]) - -sources = [ - 'gallium.i', - 'st_device.c', - 'st_sample.c', - 'st_hardpipe_winsys.c', - 'st_softpipe_winsys.c', -] - -env.Prepend(LIBS = [ - ws_null, - trace, - gallium, -]) - -if env['llvm']: - env.Append(CPPDEFINES = ['HAVE_LLVMPIPE']) - env.Prepend(LIBS = [llvmpipe]) -if True: - env.Append(CPPDEFINES = ['HAVE_SOFTPIPE']) - env.Prepend(LIBS = [softpipe]) - -env['no_import_lib'] = 1 - -pyst = env.SharedLibrary( - target = '_gallium', - source = sources, -) - -env.Alias('python', pyst) diff --git a/src/gallium/state_trackers/python/gallium.i b/src/gallium/state_trackers/python/gallium.i deleted file mode 100644 index c6084f78aee..00000000000 --- a/src/gallium/state_trackers/python/gallium.i +++ /dev/null @@ -1,105 +0,0 @@ - /************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - **************************************************************************/ - -/** - * @file - * SWIG interface definion for Gallium types. - * - * @author Jose Fonseca <[email protected]> - */ - -%module gallium; - -%{ - -#include <stdio.h> - -#include "pipe/p_screen.h" -#include "pipe/p_context.h" -#include "pipe/p_shader_tokens.h" -#include "os/os_stream.h" -#include "util/u_inlines.h" -#include "util/u_draw_quad.h" -#include "util/u_tile.h" -#include "util/u_math.h" -#include "util/u_format.h" -#include "util/u_dump.h" -#include "util/u_memory.h" -#include "util/u_sampler.h" -#include "cso_cache/cso_context.h" -#include "tgsi/tgsi_text.h" -#include "tgsi/tgsi_dump.h" - -#include "st_device.h" -#include "st_sample.h" - -%} - -%include "typemaps.i" -%include "exception.i" -%include "cstring.i" - -%include "carrays.i" -%array_class(unsigned char, ByteArray); -%array_class(int, IntArray); -%array_class(unsigned, UnsignedArray); -%array_class(float, FloatArray); - - -%rename(Device) st_device; -%rename(Context) st_context; -%rename(Resource) pipe_resource; -%rename(Surface) st_surface; - -%rename(BlendColor) pipe_blend_color; -%rename(Blend) pipe_blend_state; -%rename(Clip) pipe_clip_state; -%rename(Depth) pipe_depth_state; -%rename(Stencil) pipe_stencil_state; -%rename(Alpha) pipe_alpha_state; -%rename(DepthStencilAlpha) pipe_depth_stencil_alpha_state; -%rename(Framebuffer) pipe_framebuffer_state; -%rename(PolyStipple) pipe_poly_stipple; -%rename(Rasterizer) pipe_rasterizer_state; -%rename(Sampler) pipe_sampler_state; -%rename(Scissor) pipe_scissor_state; -%rename(Shader) pipe_shader_state; -%rename(VertexBuffer) pipe_vertex_buffer; -%rename(VertexElement) pipe_vertex_element; -%rename(Viewport) pipe_viewport_state; - - -%include "p_compiler.i" -%include "p_defines.h" -%include "p_format.h" - -%include "p_device.i" -%include "p_context.i" -%include "p_texture.i" -%include "p_state.i" - -%include "u_format.i" diff --git a/src/gallium/state_trackers/python/p_compiler.i b/src/gallium/state_trackers/python/p_compiler.i deleted file mode 100644 index 15f6ba5b9db..00000000000 --- a/src/gallium/state_trackers/python/p_compiler.i +++ /dev/null @@ -1,29 +0,0 @@ - /************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS 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. - * - **************************************************************************/ - - -typedef unsigned char ubyte; diff --git a/src/gallium/state_trackers/python/p_context.i b/src/gallium/state_trackers/python/p_context.i deleted file mode 100644 index 17d25ad0aa6..00000000000 --- a/src/gallium/state_trackers/python/p_context.i +++ /dev/null @@ -1,756 +0,0 @@ - /************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - **************************************************************************/ - -/** - * @file - * SWIG interface definion for Gallium types. - * - * @author Jose Fonseca <[email protected]> - */ - -%nodefaultctor st_context; -%nodefaultdtor st_context; - -struct st_context { -}; - -%extend st_context { - - ~st_context() { - st_context_destroy($self); - } - - /* - * State functions (create/bind/destroy state objects) - */ - - void set_blend( const struct pipe_blend_state *state ) { - cso_set_blend($self->cso, state); - } - - void set_fragment_sampler( unsigned index, const struct pipe_sampler_state *state ) { - cso_single_sampler($self->cso, index, state); - cso_single_sampler_done($self->cso); - } - - void set_vertex_sampler( unsigned index, const struct pipe_sampler_state *state ) { - cso_single_vertex_sampler($self->cso, index, state); - cso_single_vertex_sampler_done($self->cso); - } - - void set_rasterizer( const struct pipe_rasterizer_state *state ) { - cso_set_rasterizer($self->cso, state); - } - - void set_depth_stencil_alpha(const struct pipe_depth_stencil_alpha_state *state) { - cso_set_depth_stencil_alpha($self->cso, state); - } - - void set_fragment_shader( const struct pipe_shader_state *state ) { - void *fs; - - if(!state) { - cso_set_fragment_shader_handle($self->cso, NULL); - return; - } - - fs = $self->pipe->create_fs_state($self->pipe, state); - if(!fs) - return; - - if(cso_set_fragment_shader_handle($self->cso, fs) != PIPE_OK) - return; - - cso_delete_fragment_shader($self->cso, $self->fs); - $self->fs = fs; - } - - void set_vertex_shader( const struct pipe_shader_state *state ) { - void *vs; - - if(!state) { - cso_set_vertex_shader_handle($self->cso, NULL); - return; - } - - vs = $self->pipe->create_vs_state($self->pipe, state); - if(!vs) - return; - - if(cso_set_vertex_shader_handle($self->cso, vs) != PIPE_OK) - return; - - cso_delete_vertex_shader($self->cso, $self->vs); - $self->vs = vs; - } - - void set_geometry_shader( const struct pipe_shader_state *state ) { - void *gs; - - if(!state) { - cso_set_geometry_shader_handle($self->cso, NULL); - return; - } - - gs = $self->pipe->create_gs_state($self->pipe, state); - if(!gs) - return; - - if(cso_set_geometry_shader_handle($self->cso, gs) != PIPE_OK) - return; - - cso_delete_geometry_shader($self->cso, $self->gs); - $self->gs = gs; - } - - struct pipe_sampler_view * - create_sampler_view(struct pipe_resource *texture, - enum pipe_format format = PIPE_FORMAT_NONE, - unsigned first_level = 0, - unsigned last_level = ~0, - unsigned first_layer = 0, - unsigned last_layer = ~0, - unsigned swizzle_r = 0, - unsigned swizzle_g = 1, - unsigned swizzle_b = 2, - unsigned swizzle_a = 3) - { - struct pipe_context *pipe = $self->pipe; - struct pipe_sampler_view templat; - - memset(&templat, 0, sizeof templat); - if (format == PIPE_FORMAT_NONE) { - templat.format = texture->format; - } else { - templat.format = format; - } - templat.u.tex.last_level = MIN2(last_level, texture->last_level); - templat.u.tex.first_level = first_level; - templat.u.tex.first_layer = first_layer; - templat.u.tex.last_layer = last_layer; - templat.swizzle_r = swizzle_r; - templat.swizzle_g = swizzle_g; - templat.swizzle_b = swizzle_b; - templat.swizzle_a = swizzle_a; - - return pipe->create_sampler_view(pipe, texture, &templat); - } - - void - sampler_view_destroy(struct pipe_context *ctx, - struct pipe_sampler_view *view) - { - struct pipe_context *pipe = $self->pipe; - - pipe->sampler_view_destroy(pipe, view); - } - - /* - * Parameter-like state (or properties) - */ - - void set_blend_color(const struct pipe_blend_color *state ) { - cso_set_blend_color($self->cso, state); - } - - void set_stencil_ref(const struct pipe_stencil_ref *state ) { - cso_set_stencil_ref($self->cso, state); - } - - void set_clip(const struct pipe_clip_state *state ) { - $self->pipe->set_clip_state($self->pipe, state); - } - - void set_constant_buffer(unsigned shader, unsigned index, - struct pipe_resource *buffer ) - { - $self->pipe->set_constant_buffer($self->pipe, shader, index, buffer); - } - - void set_framebuffer(const struct pipe_framebuffer_state *state ) - { - memcpy(&$self->framebuffer, state, sizeof *state); - cso_set_framebuffer($self->cso, state); - } - - void set_polygon_stipple(const struct pipe_poly_stipple *state ) { - $self->pipe->set_polygon_stipple($self->pipe, state); - } - - void set_scissor(const struct pipe_scissor_state *state ) { - $self->pipe->set_scissor_state($self->pipe, state); - } - - void set_viewport(const struct pipe_viewport_state *state) { - cso_set_viewport($self->cso, state); - } - - void set_fragment_sampler_view(unsigned index, - struct pipe_sampler_view *view) - { - pipe_sampler_view_reference(&$self->fragment_sampler_views[index], view); - - $self->pipe->set_fragment_sampler_views($self->pipe, - PIPE_MAX_SAMPLERS, - $self->fragment_sampler_views); - } - - void set_vertex_sampler_view(unsigned index, - struct pipe_sampler_view *view) - { - pipe_sampler_view_reference(&$self->vertex_sampler_views[index], view); - - $self->pipe->set_vertex_sampler_views($self->pipe, - PIPE_MAX_VERTEX_SAMPLERS, - $self->vertex_sampler_views); - } - - void set_fragment_sampler_texture(unsigned index, - struct pipe_resource *texture) { - struct pipe_sampler_view templ; - - if(!texture) - texture = $self->default_texture; - pipe_sampler_view_reference(&$self->fragment_sampler_views[index], NULL); - u_sampler_view_default_template(&templ, - texture, - texture->format); - $self->fragment_sampler_views[index] = $self->pipe->create_sampler_view($self->pipe, - texture, - &templ); - $self->pipe->set_fragment_sampler_views($self->pipe, - PIPE_MAX_SAMPLERS, - $self->fragment_sampler_views); - } - - void set_vertex_sampler_texture(unsigned index, - struct pipe_resource *texture) { - struct pipe_sampler_view templ; - - if(!texture) - texture = $self->default_texture; - pipe_sampler_view_reference(&$self->vertex_sampler_views[index], NULL); - u_sampler_view_default_template(&templ, - texture, - texture->format); - $self->vertex_sampler_views[index] = $self->pipe->create_sampler_view($self->pipe, - texture, - &templ); - - $self->pipe->set_vertex_sampler_views($self->pipe, - PIPE_MAX_VERTEX_SAMPLERS, - $self->vertex_sampler_views); - } - - void set_vertex_buffer(unsigned index, - unsigned stride, - unsigned buffer_offset, - struct pipe_resource *buffer) - { - unsigned i; - struct pipe_vertex_buffer state; - - memset(&state, 0, sizeof(state)); - state.stride = stride; - state.buffer_offset = buffer_offset; - state.buffer = buffer; - - memcpy(&$self->vertex_buffers[index], &state, sizeof(state)); - - for(i = 0; i < PIPE_MAX_ATTRIBS; ++i) - if(self->vertex_buffers[i].buffer) - $self->num_vertex_buffers = i + 1; - - $self->pipe->set_vertex_buffers($self->pipe, - $self->num_vertex_buffers, - $self->vertex_buffers); - } - - void set_index_buffer(unsigned index_size, - unsigned offset, - struct pipe_resource *buffer) - { - struct pipe_index_buffer ib; - - memset(&ib, 0, sizeof(ib)); - ib.index_size = index_size; - ib.offset = offset; - ib.buffer = buffer; - - $self->pipe->set_index_buffer($self->pipe, &ib); - } - - void set_vertex_element(unsigned index, - const struct pipe_vertex_element *element) - { - memcpy(&$self->vertex_elements[index], element, sizeof(*element)); - } - - void set_vertex_elements(unsigned num) - { - $self->num_vertex_elements = num; - cso_set_vertex_elements($self->cso, - $self->num_vertex_elements, - $self->vertex_elements); - } - - /* - * Draw functions - */ - - void draw_arrays(unsigned mode, unsigned start, unsigned count) { - util_draw_arrays($self->pipe, mode, start, count); - } - - void draw_vbo(const struct pipe_draw_info *info) - { - $self->pipe->draw_vbo($self->pipe, info); - } - - void draw_vertices(unsigned prim, - unsigned num_verts, - unsigned num_attribs, - const float *vertices) - { - struct pipe_context *pipe = $self->pipe; - struct pipe_screen *screen = pipe->screen; - struct pipe_resource *vbuf; - struct pipe_transfer *transfer; - struct pipe_vertex_element velements[PIPE_MAX_ATTRIBS]; - struct pipe_vertex_buffer vbuffer; - float *map; - unsigned size; - unsigned i; - - size = num_verts * num_attribs * 4 * sizeof(float); - - vbuf = pipe_buffer_create(screen, - PIPE_BIND_VERTEX_BUFFER, - PIPE_USAGE_STATIC, - size); - if(!vbuf) - goto error1; - - map = pipe_buffer_map(pipe, vbuf, PIPE_TRANSFER_WRITE, &transfer); - if (!map) - goto error2; - memcpy(map, vertices, size); - pipe_buffer_unmap(pipe, transfer); - - cso_save_vertex_elements($self->cso); - - /* tell pipe about the vertex attributes */ - for (i = 0; i < num_attribs; i++) { - velements[i].src_offset = i * 4 * sizeof(float); - velements[i].instance_divisor = 0; - velements[i].vertex_buffer_index = 0; - velements[i].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT; - } - cso_set_vertex_elements($self->cso, num_attribs, velements); - - /* tell pipe about the vertex buffer */ - memset(&vbuffer, 0, sizeof(vbuffer)); - vbuffer.buffer = vbuf; - vbuffer.stride = num_attribs * 4 * sizeof(float); /* vertex size */ - vbuffer.buffer_offset = 0; - pipe->set_vertex_buffers(pipe, 1, &vbuffer); - - /* draw */ - util_draw_arrays(pipe, prim, 0, num_verts); - - cso_restore_vertex_elements($self->cso); - -error2: - pipe_resource_reference(&vbuf, NULL); -error1: - ; - } - - void - clear(unsigned buffers, const float *rgba, double depth = 0.0f, - unsigned stencil = 0) - { - $self->pipe->clear($self->pipe, buffers, rgba, depth, stencil); - } - - void - flush(unsigned flags = 0) { - struct pipe_fence_handle *fence = NULL; - $self->pipe->flush($self->pipe, &fence); - if(fence) { - /* TODO: allow asynchronous operation */ - $self->pipe->screen->fence_finish( $self->pipe->screen, fence, PIPE_TIMEOUT_INFINITE ); - $self->pipe->screen->fence_reference( $self->pipe->screen, &fence, NULL ); - } - } - - /* - * Surface functions - */ - - void resource_copy_region(struct pipe_resource *dst, - unsigned dst_level, - unsigned dstx, unsigned dsty, unsigned dstz, - struct pipe_resource *src, - unsigned src_level, - const struct pipe_box *src_box) - { - $self->pipe->resource_copy_region($self->pipe, - dst, dst_level, dstx, dsty, dstz, - src, src_level, src_box); - } - - - void clear_render_target(struct st_surface *dst, - float *rgba, - unsigned x, unsigned y, - unsigned width, unsigned height) - { - struct pipe_surface *_dst = NULL; - - _dst = st_pipe_surface($self->pipe, dst, PIPE_BIND_RENDER_TARGET); - if(!_dst) - SWIG_exception(SWIG_ValueError, "couldn't acquire destination surface for writing"); - - $self->pipe->clear_render_target($self->pipe, _dst, rgba, x, y, width, height); - - fail: - pipe_surface_reference(&_dst, NULL); - } - - void clear_depth_stencil(struct st_surface *dst, - unsigned clear_flags, - double depth, - unsigned stencil, - unsigned x, unsigned y, - unsigned width, unsigned height) - { - struct pipe_surface *_dst = NULL; - - _dst = st_pipe_surface($self->pipe, dst, PIPE_BIND_DEPTH_STENCIL); - if(!_dst) - SWIG_exception(SWIG_ValueError, "couldn't acquire destination surface for writing"); - - $self->pipe->clear_depth_stencil($self->pipe, _dst, clear_flags, depth, stencil, - x, y, width, height); - - fail: - pipe_surface_reference(&_dst, NULL); - } - - %cstring_output_allocate_size(char **STRING, int *LENGTH, free(*$1)); - void - surface_read_raw(struct st_surface *surface, - unsigned x, unsigned y, unsigned w, unsigned h, - char **STRING, int *LENGTH) - { - struct pipe_resource *texture = surface->texture; - struct pipe_context *pipe = $self->pipe; - struct pipe_transfer *transfer; - unsigned stride; - - stride = util_format_get_stride(texture->format, w); - *LENGTH = util_format_get_nblocksy(texture->format, h) * stride; - *STRING = (char *) malloc(*LENGTH); - if(!*STRING) - return; - - transfer = pipe_get_transfer(pipe, - surface->texture, - surface->level, - surface->layer, - PIPE_TRANSFER_READ, - x, y, w, h); - if(transfer) { - pipe_get_tile_raw(pipe, transfer, 0, 0, w, h, *STRING, stride); - pipe->transfer_destroy(pipe, transfer); - } - } - - %cstring_input_binary(const char *STRING, unsigned LENGTH); - void - surface_write_raw(struct st_surface *surface, - unsigned x, unsigned y, unsigned w, unsigned h, - const char *STRING, unsigned LENGTH, unsigned stride = 0) - { - struct pipe_resource *texture = surface->texture; - struct pipe_context *pipe = $self->pipe; - struct pipe_transfer *transfer; - - if(stride == 0) - stride = util_format_get_stride(texture->format, w); - - if(LENGTH < util_format_get_nblocksy(texture->format, h) * stride) - SWIG_exception(SWIG_ValueError, "offset must be smaller than buffer size"); - - transfer = pipe_get_transfer(pipe, - surface->texture, - surface->level, - surface->layer, - PIPE_TRANSFER_WRITE, - x, y, w, h); - if(!transfer) - SWIG_exception(SWIG_MemoryError, "couldn't initiate transfer"); - - pipe_put_tile_raw(pipe, transfer, 0, 0, w, h, STRING, stride); - pipe->transfer_destroy(pipe, transfer); - - fail: - return; - } - - void - surface_read_rgba(struct st_surface *surface, - unsigned x, unsigned y, unsigned w, unsigned h, - float *rgba) - { - struct pipe_context *pipe = $self->pipe; - struct pipe_transfer *transfer; - transfer = pipe_get_transfer(pipe, - surface->texture, - surface->level, - surface->layer, - PIPE_TRANSFER_READ, - x, y, w, h); - if(transfer) { - pipe_get_tile_rgba(pipe, transfer, 0, 0, w, h, rgba); - pipe->transfer_destroy(pipe, transfer); - } - } - - void - surface_write_rgba(struct st_surface *surface, - unsigned x, unsigned y, unsigned w, unsigned h, - const float *rgba) - { - struct pipe_context *pipe = $self->pipe; - struct pipe_transfer *transfer; - transfer = pipe_get_transfer(pipe, - surface->texture, - surface->level, - surface->layer, - PIPE_TRANSFER_WRITE, - x, y, w, h); - if(transfer) { - pipe_put_tile_rgba(pipe, transfer, 0, 0, w, h, rgba); - pipe->transfer_destroy(pipe, transfer); - } - } - - %cstring_output_allocate_size(char **STRING, int *LENGTH, free(*$1)); - void - surface_read_rgba8(struct st_surface *surface, - unsigned x, unsigned y, unsigned w, unsigned h, - char **STRING, int *LENGTH) - { - struct pipe_context *pipe = $self->pipe; - struct pipe_transfer *transfer; - float *rgba; - unsigned char *rgba8; - unsigned i, j, k; - - *LENGTH = 0; - *STRING = NULL; - - if (!surface) - return; - - *LENGTH = h*w*4; - *STRING = (char *) malloc(*LENGTH); - if(!*STRING) - return; - - rgba = malloc(h*w*4*sizeof(float)); - if(!rgba) - return; - - rgba8 = (unsigned char *) *STRING; - - transfer = pipe_get_transfer(pipe, - surface->texture, - surface->level, - surface->layer, - PIPE_TRANSFER_READ, - x, y, w, h); - if(transfer) { - pipe_get_tile_rgba(pipe, transfer, 0, 0, w, h, rgba); - for(j = 0; j < h; ++j) { - for(i = 0; i < w; ++i) - for(k = 0; k <4; ++k) - rgba8[j*w*4 + i*4 + k] = float_to_ubyte(rgba[j*w*4 + i*4 + k]); - } - pipe->transfer_destroy(pipe, transfer); - } - - free(rgba); - } - - void - surface_read_z(struct st_surface *surface, - unsigned x, unsigned y, unsigned w, unsigned h, - unsigned *z) - { - struct pipe_context *pipe = $self->pipe; - struct pipe_transfer *transfer; - transfer = pipe_get_transfer(pipe, - surface->texture, - surface->level, - surface->layer, - PIPE_TRANSFER_READ, - x, y, w, h); - if(transfer) { - pipe_get_tile_z(pipe, transfer, 0, 0, w, h, z); - pipe->transfer_destroy(pipe, transfer); - } - } - - void - surface_write_z(struct st_surface *surface, - unsigned x, unsigned y, unsigned w, unsigned h, - const unsigned *z) - { - struct pipe_context *pipe = $self->pipe; - struct pipe_transfer *transfer; - transfer = pipe_get_transfer(pipe, - surface->texture, - surface->level, - surface->layer, - PIPE_TRANSFER_WRITE, - x, y, w, h); - if(transfer) { - pipe_put_tile_z(pipe, transfer, 0, 0, w, h, z); - pipe->transfer_destroy(pipe, transfer); - } - } - - void - surface_sample_rgba(struct st_surface *surface, - float *rgba, - int norm = 0) - { - st_sample_surface($self->pipe, surface, rgba, norm != 0); - } - - unsigned - surface_compare_rgba(struct st_surface *surface, - unsigned x, unsigned y, unsigned w, unsigned h, - const float *rgba, float tol = 0.0) - { - struct pipe_context *pipe = $self->pipe; - struct pipe_transfer *transfer; - float *rgba2; - const float *p1; - const float *p2; - unsigned i, j, n; - - rgba2 = MALLOC(h*w*4*sizeof(float)); - if(!rgba2) - return ~0; - - transfer = pipe_get_transfer(pipe, - surface->texture, - surface->level, - surface->layer, - PIPE_TRANSFER_READ, - x, y, w, h); - if(!transfer) { - FREE(rgba2); - return ~0; - } - - pipe_get_tile_rgba(pipe, transfer, 0, 0, w, h, rgba2); - pipe->transfer_destroy(pipe, transfer); - - p1 = rgba; - p2 = rgba2; - n = 0; - for(i = h*w; i; --i) { - unsigned differs = 0; - for(j = 4; j; --j) { - float delta = *p2++ - *p1++; - if (delta < -tol || delta > tol) - differs = 1; - } - n += differs; - } - - FREE(rgba2); - - return n; - } - - %cstring_input_binary(const char *STRING, unsigned LENGTH); - void - transfer_inline_write(struct pipe_resource *resource, - unsigned level, - unsigned usage, - const struct pipe_box *box, - const char *STRING, unsigned LENGTH, - unsigned stride, - unsigned layer_stride) - { - struct pipe_context *pipe = $self->pipe; - - pipe->transfer_inline_write(pipe, resource, level, usage, box, STRING, stride, layer_stride); - } - - %cstring_output_allocate_size(char **STRING, int *LENGTH, free(*$1)); - void buffer_read(struct pipe_resource *buffer, - char **STRING, int *LENGTH) - { - struct pipe_context *pipe = $self->pipe; - - assert(buffer->target == PIPE_BUFFER); - - *LENGTH = buffer->width0; - *STRING = (char *) malloc(buffer->width0); - if(!*STRING) - return; - - pipe_buffer_read(pipe, buffer, 0, buffer->width0, *STRING); - } - - void buffer_write(struct pipe_resource *buffer, - const char *STRING, unsigned LENGTH, unsigned offset = 0) - { - struct pipe_context *pipe = $self->pipe; - - assert(buffer->target == PIPE_BUFFER); - - if(offset > buffer->width0) - SWIG_exception(SWIG_ValueError, "offset must be smaller than buffer size"); - - if(offset + LENGTH > buffer->width0) - SWIG_exception(SWIG_ValueError, "data length must fit inside the buffer"); - - pipe_buffer_write(pipe, buffer, offset, LENGTH, STRING); - -fail: - return; - } - -}; diff --git a/src/gallium/state_trackers/python/p_device.i b/src/gallium/state_trackers/python/p_device.i deleted file mode 100644 index 61f6b3bb739..00000000000 --- a/src/gallium/state_trackers/python/p_device.i +++ /dev/null @@ -1,138 +0,0 @@ - /************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - **************************************************************************/ - -/** - * @file - * SWIG interface definion for Gallium types. - * - * @author Jose Fonseca <[email protected]> - */ - - -%nodefaultctor st_device; -%nodefaultdtor st_device; - - -struct st_device { -}; - -%newobject st_device::texture_create; -%newobject st_device::context_create; -%newobject st_device::buffer_create; - -%extend st_device { - - st_device(int hardware = 1) { - return st_device_create(hardware ? TRUE : FALSE); - } - - ~st_device() { - st_device_destroy($self); - } - - const char * get_name( void ) { - return $self->screen->get_name($self->screen); - } - - const char * get_vendor( void ) { - return $self->screen->get_vendor($self->screen); - } - - /** - * Query an integer-valued capability/parameter/limit - * \param param one of PIPE_CAP_x - */ - int get_param( int param ) { - return $self->screen->get_param($self->screen, param); - } - - /** - * Query a float-valued capability/parameter/limit - * \param param one of PIPE_CAP_x - */ - float get_paramf( int param ) { - return $self->screen->get_paramf($self->screen, param); - } - - /** - * Check if the given pipe_format is supported as a texture or - * drawing surface. - * \param bind bitmask of PIPE_BIND flags - */ - int is_format_supported( enum pipe_format format, - enum pipe_texture_target target, - unsigned sample_count, - unsigned bind ) { - /* We can't really display surfaces with the python statetracker so mask - * out that usage */ - bind &= ~PIPE_BIND_DISPLAY_TARGET; - - return $self->screen->is_format_supported( $self->screen, - format, - target, - sample_count, - bind ); - } - - struct st_context * - context_create(void) { - return st_context_create($self); - } - - struct pipe_resource * - resource_create( - enum pipe_format format, - unsigned width, - unsigned height, - unsigned depth = 1, - unsigned last_level = 0, - enum pipe_texture_target target = PIPE_TEXTURE_2D, - unsigned bind = 0 - ) { - struct pipe_resource templat; - - /* We can't really display surfaces with the python statetracker so mask - * out that usage */ - bind &= ~PIPE_BIND_DISPLAY_TARGET; - - memset(&templat, 0, sizeof(templat)); - templat.format = format; - templat.width0 = width; - templat.height0 = height; - templat.depth0 = depth; - templat.last_level = last_level; - templat.target = target; - templat.bind = bind; - - return $self->screen->resource_create($self->screen, &templat); - } - - struct pipe_resource * - buffer_create(unsigned size, unsigned usage, unsigned bind = 0) { - return pipe_buffer_create($self->screen, bind, usage, size); - } -}; diff --git a/src/gallium/state_trackers/python/p_state.i b/src/gallium/state_trackers/python/p_state.i deleted file mode 100644 index 0537557661d..00000000000 --- a/src/gallium/state_trackers/python/p_state.i +++ /dev/null @@ -1,186 +0,0 @@ - /************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - **************************************************************************/ - -/** - * @file - * SWIG interface definion for Gallium types. - * - * @author Jose Fonseca <[email protected]> - */ - -%module gallium; - -%ignore winsys; -%ignore pipe_vertex_buffer::buffer; - -%include "pipe/p_compiler.h"; -%include "pipe/p_state.h"; - - -%array_class(struct pipe_stencil_state, StencilArray); - - -%extend pipe_rt_blend_state -{ - struct pipe_rt_blend_state * - __getitem__(int index) - { - if(index < 0 || index >= PIPE_MAX_COLOR_BUFS) - SWIG_exception(SWIG_ValueError, "index out of bounds"); - return $self + index; - fail: - return NULL; - }; -}; - - -%extend pipe_blend_state -{ - pipe_blend_state(void) - { - return CALLOC_STRUCT(pipe_blend_state); - } - - %cstring_input_binary(const char *STRING, unsigned LENGTH); - pipe_blend_state(const char *STRING, unsigned LENGTH) - { - struct pipe_blend_state *state; - state = CALLOC_STRUCT(pipe_blend_state); - if (state) { - LENGTH = MIN2(sizeof *state, LENGTH); - memcpy(state, STRING, LENGTH); - } - return state; - } - - %cstring_output_allocate_size(char **STRING, int *LENGTH, os_free(*$1)); - void __str__(char **STRING, int *LENGTH) - { - struct os_stream *stream; - - stream = os_str_stream_create(1); - util_dump_blend_state(stream, $self); - - *STRING = os_str_stream_get_and_close(stream); - *LENGTH = strlen(*STRING); - } -}; - - -%extend pipe_framebuffer_state { - - pipe_framebuffer_state(void) { - return CALLOC_STRUCT(pipe_framebuffer_state); - } - - ~pipe_framebuffer_state() { - unsigned index; - for(index = 0; index < PIPE_MAX_COLOR_BUFS; ++index) - pipe_surface_reference(&$self->cbufs[index], NULL); - pipe_surface_reference(&$self->zsbuf, NULL); - FREE($self); - } - - void - set_cbuf(unsigned index, struct st_surface *surface) - { - struct pipe_surface *_surface = NULL; - - if(index >= PIPE_MAX_COLOR_BUFS) - SWIG_exception(SWIG_ValueError, "index out of bounds"); - - if(surface) { - /* XXX need a context here */ - _surface = st_pipe_surface(NULL, surface, PIPE_BIND_RENDER_TARGET); - if(!_surface) - SWIG_exception(SWIG_ValueError, "couldn't acquire surface for writing"); - } - - pipe_surface_reference(&$self->cbufs[index], _surface); - - fail: - return; - } - - void - set_zsbuf(struct st_surface *surface) - { - struct pipe_surface *_surface = NULL; - - if(surface) { - /* XXX need a context here */ - _surface = st_pipe_surface(NULL, surface, PIPE_BIND_DEPTH_STENCIL); - if(!_surface) - SWIG_exception(SWIG_ValueError, "couldn't acquire surface for writing"); - } - - pipe_surface_reference(&$self->zsbuf, _surface); - - fail: - return; - } - -}; - - -%extend pipe_shader_state { - - pipe_shader_state(const char *text, unsigned num_tokens = 1024) { - struct tgsi_token *tokens; - struct pipe_shader_state *shader; - - tokens = MALLOC(num_tokens * sizeof(struct tgsi_token)); - if(!tokens) - goto error1; - - if(tgsi_text_translate(text, tokens, num_tokens ) != TRUE) - goto error2; - - shader = CALLOC_STRUCT(pipe_shader_state); - if(!shader) - goto error3; - - shader->tokens = tokens; - - return shader; - -error3: -error2: - FREE(tokens); -error1: - return NULL; - } - - ~pipe_shader_state() { - FREE((void*)$self->tokens); - FREE($self); - } - - void dump(unsigned flags = 0) { - tgsi_dump($self->tokens, flags); - } -} diff --git a/src/gallium/state_trackers/python/p_texture.i b/src/gallium/state_trackers/python/p_texture.i deleted file mode 100644 index 1f4b4fd596b..00000000000 --- a/src/gallium/state_trackers/python/p_texture.i +++ /dev/null @@ -1,152 +0,0 @@ - /************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - **************************************************************************/ - -/** - * @file - * SWIG interface definion for Gallium types. - * - * @author Jose Fonseca <[email protected]> - */ - - -%nodefaultctor pipe_resource; -%nodefaultctor st_surface; - -%nodefaultdtor pipe_resource; -%nodefaultdtor st_surface; - -%ignore pipe_resource::screen; - -%immutable st_surface::texture; -%immutable st_surface::level; -%immutable st_surface::layer; - -%newobject pipe_resource::get_surface; - -/* Avoid naming conflict with p_inlines.h's pipe_buffer_read/write */ -%rename(read) read_; -%rename(write) write_; - -%extend pipe_resource { - - ~pipe_resource() { - struct pipe_resource *ptr = $self; - pipe_resource_reference(&ptr, NULL); - } - - unsigned get_width(unsigned level=0) { - return u_minify($self->width0, level); - } - - unsigned get_height(unsigned level=0) { - return u_minify($self->height0, level); - } - - unsigned get_depth(unsigned level=0) { - return u_minify($self->depth0, level); - } - - /** Get a surface which is a "view" into a texture */ - struct st_surface * - get_surface(unsigned level=0, unsigned layer=0) - { - struct st_surface *surface; - - if(level > $self->last_level) - SWIG_exception(SWIG_ValueError, "level out of bounds"); - if(layer >= ($self->target == PIPE_TEXTURE_3D ? - u_minify($self->depth0, level) : $self->depth0)) - SWIG_exception(SWIG_ValueError, "layer out of bounds"); - - surface = CALLOC_STRUCT(st_surface); - if(!surface) - return NULL; - - pipe_resource_reference(&surface->texture, $self); - surface->level = level; - surface->layer = layer; - - return surface; - - fail: - return NULL; - } - - unsigned __len__(void) - { - assert($self->target == PIPE_BUFFER); - assert(p_atomic_read(&$self->reference.count) > 0); - return $self->width0; - } - -}; - -struct st_surface -{ - %immutable; - - struct pipe_resource *texture; - unsigned level; - unsigned layer; - -}; - -%extend st_surface { - - %immutable; - - unsigned format; - unsigned width; - unsigned height; - - ~st_surface() { - pipe_resource_reference(&$self->texture, NULL); - FREE($self); - } - - -}; - -%{ - static enum pipe_format - st_surface_format_get(struct st_surface *surface) - { - return surface->texture->format; - } - - static unsigned - st_surface_width_get(struct st_surface *surface) - { - return u_minify(surface->texture->width0, surface->level); - } - - static unsigned - st_surface_height_get(struct st_surface *surface) - { - return u_minify(surface->texture->height0, surface->level); - } -%} diff --git a/src/gallium/state_trackers/python/st_device.c b/src/gallium/state_trackers/python/st_device.c deleted file mode 100644 index d0a4295c7a2..00000000000 --- a/src/gallium/state_trackers/python/st_device.c +++ /dev/null @@ -1,305 +0,0 @@ -/************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS 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. - * - **************************************************************************/ - - -#include "pipe/p_screen.h" -#include "pipe/p_context.h" -#include "pipe/p_shader_tokens.h" -#include "util/u_inlines.h" -#include "cso_cache/cso_context.h" -#include "util/u_math.h" -#include "util/u_memory.h" -#include "util/u_sampler.h" -#include "util/u_simple_shaders.h" -#include "trace/tr_public.h" - -#include "st_device.h" -#include "st_winsys.h" - - -static void -st_device_really_destroy(struct st_device *st_dev) -{ - if(st_dev->screen) { - /* FIXME: Don't really destroy until we keep track of every single - * reference or we end up causing a segmentation fault every time - * python exits. */ -#if 0 - st_dev->screen->destroy(st_dev->screen); -#endif - } - - FREE(st_dev); -} - - -static void -st_device_reference(struct st_device **ptr, struct st_device *st_dev) -{ - struct st_device *old_dev = *ptr; - - if (pipe_reference(&(*ptr)->reference, &st_dev->reference)) - st_device_really_destroy(old_dev); - *ptr = st_dev; -} - - -void -st_device_destroy(struct st_device *st_dev) -{ - st_device_reference(&st_dev, NULL); -} - - -struct st_device * -st_device_create(boolean hardware) -{ - struct pipe_screen *screen; - struct st_device *st_dev; - - if (hardware) - screen = st_hardware_screen_create(); - else - screen = st_software_screen_create("softpipe"); - - screen = trace_screen_create(screen); - if (!screen) - goto no_screen; - - st_dev = CALLOC_STRUCT(st_device); - if (!st_dev) - goto no_device; - - pipe_reference_init(&st_dev->reference, 1); - st_dev->screen = screen; - - return st_dev; - -no_device: - screen->destroy(screen); -no_screen: - return NULL; -} - - -void -st_context_destroy(struct st_context *st_ctx) -{ - unsigned i; - - if(st_ctx) { - struct st_device *st_dev = st_ctx->st_dev; - - if(st_ctx->cso) { - cso_delete_vertex_shader(st_ctx->cso, st_ctx->vs); - cso_delete_fragment_shader(st_ctx->cso, st_ctx->fs); - - cso_destroy_context(st_ctx->cso); - } - - if(st_ctx->pipe) - st_ctx->pipe->destroy(st_ctx->pipe); - - for(i = 0; i < PIPE_MAX_SAMPLERS; ++i) - pipe_sampler_view_reference(&st_ctx->fragment_sampler_views[i], NULL); - for(i = 0; i < PIPE_MAX_VERTEX_SAMPLERS; ++i) - pipe_sampler_view_reference(&st_ctx->vertex_sampler_views[i], NULL); - pipe_resource_reference(&st_ctx->default_texture, NULL); - - FREE(st_ctx); - - st_device_reference(&st_dev, NULL); - } -} - - -struct st_context * -st_context_create(struct st_device *st_dev) -{ - struct st_context *st_ctx; - - st_ctx = CALLOC_STRUCT(st_context); - if(!st_ctx) - return NULL; - - st_device_reference(&st_ctx->st_dev, st_dev); - - st_ctx->pipe = st_dev->screen->context_create(st_dev->screen, NULL); - if(!st_ctx->pipe) { - st_context_destroy(st_ctx); - return NULL; - } - - st_ctx->cso = cso_create_context(st_ctx->pipe); - if(!st_ctx->cso) { - st_context_destroy(st_ctx); - return NULL; - } - - /* disabled blending/masking */ - { - struct pipe_blend_state blend; - memset(&blend, 0, sizeof(blend)); - blend.rt[0].rgb_src_factor = PIPE_BLENDFACTOR_ONE; - blend.rt[0].alpha_src_factor = PIPE_BLENDFACTOR_ONE; - blend.rt[0].rgb_dst_factor = PIPE_BLENDFACTOR_ZERO; - blend.rt[0].alpha_dst_factor = PIPE_BLENDFACTOR_ZERO; - blend.rt[0].colormask = PIPE_MASK_RGBA; - cso_set_blend(st_ctx->cso, &blend); - } - - /* no-op depth/stencil/alpha */ - { - struct pipe_depth_stencil_alpha_state depthstencil; - memset(&depthstencil, 0, sizeof(depthstencil)); - cso_set_depth_stencil_alpha(st_ctx->cso, &depthstencil); - } - - /* rasterizer */ - { - struct pipe_rasterizer_state rasterizer; - memset(&rasterizer, 0, sizeof(rasterizer)); - rasterizer.cull_face = PIPE_FACE_NONE; - cso_set_rasterizer(st_ctx->cso, &rasterizer); - } - - /* clip */ - { - struct pipe_clip_state clip; - memset(&clip, 0, sizeof(clip)); - st_ctx->pipe->set_clip_state(st_ctx->pipe, &clip); - } - - /* identity viewport */ - { - struct pipe_viewport_state viewport; - viewport.scale[0] = 1.0; - viewport.scale[1] = 1.0; - viewport.scale[2] = 1.0; - viewport.scale[3] = 1.0; - viewport.translate[0] = 0.0; - viewport.translate[1] = 0.0; - viewport.translate[2] = 0.0; - viewport.translate[3] = 0.0; - cso_set_viewport(st_ctx->cso, &viewport); - } - - /* samplers */ - { - struct pipe_sampler_state sampler; - unsigned i; - memset(&sampler, 0, sizeof(sampler)); - sampler.wrap_s = PIPE_TEX_WRAP_CLAMP_TO_EDGE; - sampler.wrap_t = PIPE_TEX_WRAP_CLAMP_TO_EDGE; - sampler.wrap_r = PIPE_TEX_WRAP_CLAMP_TO_EDGE; - sampler.min_mip_filter = PIPE_TEX_MIPFILTER_NEAREST; - sampler.min_img_filter = PIPE_TEX_MIPFILTER_NEAREST; - sampler.mag_img_filter = PIPE_TEX_MIPFILTER_NEAREST; - sampler.normalized_coords = 1; - for (i = 0; i < PIPE_MAX_SAMPLERS; i++) - cso_single_sampler(st_ctx->cso, i, &sampler); - cso_single_sampler_done(st_ctx->cso); - } - - /* default textures */ - { - struct pipe_context *pipe = st_ctx->pipe; - struct pipe_screen *screen = st_dev->screen; - struct pipe_resource templat; - struct pipe_sampler_view view_templ; - struct pipe_sampler_view *view; - unsigned i; - - memset( &templat, 0, sizeof( templat ) ); - templat.target = PIPE_TEXTURE_2D; - templat.format = PIPE_FORMAT_B8G8R8A8_UNORM; - templat.width0 = 1; - templat.height0 = 1; - templat.depth0 = 1; - templat.array_size = 1; - templat.last_level = 0; - templat.bind = PIPE_BIND_SAMPLER_VIEW; - - st_ctx->default_texture = screen->resource_create( screen, &templat ); - if(st_ctx->default_texture) { - struct pipe_box box; - uint32_t zero = 0; - - u_box_origin_2d( 1, 1, &box ); - - pipe->transfer_inline_write(pipe, - st_ctx->default_texture, - 0, - PIPE_TRANSFER_WRITE, - &box, - &zero, - sizeof zero, - 0); - } - - u_sampler_view_default_template(&view_templ, - st_ctx->default_texture, - st_ctx->default_texture->format); - view = st_ctx->pipe->create_sampler_view(st_ctx->pipe, - st_ctx->default_texture, - &view_templ); - - for (i = 0; i < PIPE_MAX_SAMPLERS; i++) - pipe_sampler_view_reference(&st_ctx->fragment_sampler_views[i], view); - for (i = 0; i < PIPE_MAX_VERTEX_SAMPLERS; i++) - pipe_sampler_view_reference(&st_ctx->vertex_sampler_views[i], view); - - st_ctx->pipe->set_fragment_sampler_views(st_ctx->pipe, - PIPE_MAX_SAMPLERS, - st_ctx->fragment_sampler_views); - st_ctx->pipe->set_vertex_sampler_views(st_ctx->pipe, - PIPE_MAX_VERTEX_SAMPLERS, - st_ctx->vertex_sampler_views); - - pipe_sampler_view_reference(&view, NULL); - } - - /* vertex shader */ - { - const uint semantic_names[] = { TGSI_SEMANTIC_POSITION, - TGSI_SEMANTIC_GENERIC }; - const uint semantic_indexes[] = { 0, 0 }; - st_ctx->vs = util_make_vertex_passthrough_shader(st_ctx->pipe, - 2, - semantic_names, - semantic_indexes); - cso_set_vertex_shader_handle(st_ctx->cso, st_ctx->vs); - } - - /* fragment shader */ - { - st_ctx->fs = util_make_fragment_passthrough_shader(st_ctx->pipe); - cso_set_fragment_shader_handle(st_ctx->cso, st_ctx->fs); - } - - return st_ctx; -} diff --git a/src/gallium/state_trackers/python/st_device.h b/src/gallium/state_trackers/python/st_device.h deleted file mode 100644 index 53e2556cb0d..00000000000 --- a/src/gallium/state_trackers/python/st_device.h +++ /dev/null @@ -1,111 +0,0 @@ -/************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS 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 ST_DEVICE_H_ -#define ST_DEVICE_H_ - - -#include "pipe/p_state.h" - -struct cso_context; -struct pipe_screen; -struct pipe_context; -struct st_winsys; - - -struct st_surface -{ - struct pipe_resource *texture; - unsigned level; - unsigned layer; -}; - - -struct st_context -{ - struct st_device *st_dev; - - struct pipe_context *pipe; - - struct cso_context *cso; - - void *vs; - void *fs; - void *gs; - - struct pipe_resource *default_texture; - struct pipe_sampler_view *fragment_sampler_views[PIPE_MAX_SAMPLERS]; - struct pipe_sampler_view *vertex_sampler_views[PIPE_MAX_VERTEX_SAMPLERS]; - - unsigned num_vertex_buffers; - struct pipe_vertex_buffer vertex_buffers[PIPE_MAX_ATTRIBS]; - - unsigned num_vertex_elements; - struct pipe_vertex_element vertex_elements[PIPE_MAX_ATTRIBS]; - - struct pipe_framebuffer_state framebuffer; -}; - - -struct st_device -{ - /* FIXME: we also need to refcount for textures and surfaces... */ - struct pipe_reference reference; - - struct pipe_screen *screen; -}; - - -static INLINE struct pipe_surface * -st_pipe_surface(struct pipe_context *pipe, struct st_surface *surface, unsigned usage) -{ - struct pipe_resource *texture = surface->texture; - struct pipe_surface surf_tmpl; - memset(&surf_tmpl, 0, sizeof(surf_tmpl)); - surf_tmpl.format = texture->format; - surf_tmpl.usage = usage; - surf_tmpl.u.tex.level = surface->level; - surf_tmpl.u.tex.first_layer = surface->layer; - surf_tmpl.u.tex.last_layer = surface->layer; - return pipe->create_surface(pipe, texture, &surf_tmpl); -} - -struct st_context * -st_context_create(struct st_device *st_dev); - -void -st_context_destroy(struct st_context *st_ctx); - -struct st_device * -st_device_create(boolean hardware); - -void -st_device_destroy(struct st_device *st_dev); - - -#endif /* ST_DEVICE_H_ */ diff --git a/src/gallium/state_trackers/python/st_hardpipe_winsys.c b/src/gallium/state_trackers/python/st_hardpipe_winsys.c deleted file mode 100644 index c6743dbd9c4..00000000000 --- a/src/gallium/state_trackers/python/st_hardpipe_winsys.c +++ /dev/null @@ -1,212 +0,0 @@ -/************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Bismarck, ND., USA - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * THE COPYRIGHT HOLDERS, AUTHORS 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. - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * - **************************************************************************/ - -/** - * @file - * Get a hardware accelerated Gallium screen/context from the OpenGL driver. - */ - - -#include "pipe/p_compiler.h" - -#ifdef PIPE_OS_WINDOWS -#include <windows.h> -#include <GL/gl.h> -#else -#include <X11/Xlib.h> -#include <X11/Xutil.h> -#include <GL/gl.h> -#include <GL/glx.h> -#endif - -#include "st_winsys.h" - - -typedef struct pipe_screen * (GLAPIENTRY *PFNGETGALLIUMSCREENMESAPROC) (void); -typedef struct pipe_context * (GLAPIENTRY* PFNCREATEGALLIUMCONTEXTMESAPROC) (void); - -static PFNGETGALLIUMSCREENMESAPROC pfnGetGalliumScreenMESA = NULL; -static PFNCREATEGALLIUMCONTEXTMESAPROC pfnCreateGalliumContextMESA = NULL; - - -#ifdef PIPE_OS_WINDOWS - -static INLINE boolean -st_hardpipe_load(void) -{ - WNDCLASS wc; - HWND hwnd; - HGLRC hglrc; - HDC hdc; - PIXELFORMATDESCRIPTOR pfd; - int iPixelFormat; - - if(pfnGetGalliumScreenMESA && pfnCreateGalliumContextMESA) - return TRUE; - - memset(&wc, 0, sizeof wc); - wc.lpfnWndProc = DefWindowProc; - wc.lpszClassName = "gallium"; - wc.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW; - RegisterClass(&wc); - - hwnd = CreateWindow(wc.lpszClassName, "gallium", 0, 0, 0, 0, 0, NULL, 0, wc.hInstance, NULL); - if (!hwnd) - return FALSE; - - hdc = GetDC(hwnd); - if (!hdc) - return FALSE; - - pfd.cColorBits = 3; - pfd.cRedBits = 1; - pfd.cGreenBits = 1; - pfd.cBlueBits = 1; - pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL; - pfd.iLayerType = PFD_MAIN_PLANE; - pfd.iPixelType = PFD_TYPE_RGBA; - pfd.nSize = sizeof(pfd); - pfd.nVersion = 1; - - iPixelFormat = ChoosePixelFormat(hdc, &pfd); - if (!iPixelFormat) { - pfd.dwFlags |= PFD_DOUBLEBUFFER; - iPixelFormat = ChoosePixelFormat(hdc, &pfd); - } - if (!iPixelFormat) - return FALSE; - - SetPixelFormat(hdc, iPixelFormat, &pfd); - hglrc = wglCreateContext(hdc); - if (!hglrc) - return FALSE; - - if (!wglMakeCurrent(hdc, hglrc)) - return FALSE; - - pfnGetGalliumScreenMESA = (PFNGETGALLIUMSCREENMESAPROC)wglGetProcAddress("wglGetGalliumScreenMESA"); - if(!pfnGetGalliumScreenMESA) - return FALSE; - - pfnCreateGalliumContextMESA = (PFNCREATEGALLIUMCONTEXTMESAPROC)wglGetProcAddress("wglCreateGalliumContextMESA"); - if(!pfnCreateGalliumContextMESA) - return FALSE; - - DestroyWindow(hwnd); - - return TRUE; -} - -#else - -static INLINE boolean -st_hardpipe_load(void) -{ - Display *dpy; - int scrnum; - Window root; - int attribSingle[] = { - GLX_RGBA, - GLX_RED_SIZE, 1, - GLX_GREEN_SIZE, 1, - GLX_BLUE_SIZE, 1, - None }; - int attribDouble[] = { - GLX_RGBA, - GLX_RED_SIZE, 1, - GLX_GREEN_SIZE, 1, - GLX_BLUE_SIZE, 1, - GLX_DOUBLEBUFFER, - None }; - XVisualInfo *visinfo; - GLXContext ctx = NULL; - XSetWindowAttributes attr; - unsigned long mask; - int width = 100, height = 100; - Window win; - - dpy = XOpenDisplay(NULL); - if (!dpy) - return FALSE; - - scrnum = 0; - - root = RootWindow(dpy, scrnum); - - visinfo = glXChooseVisual(dpy, scrnum, attribSingle); - if (!visinfo) - visinfo = glXChooseVisual(dpy, scrnum, attribDouble); - if (!visinfo) - return FALSE; - - ctx = glXCreateContext( dpy, visinfo, NULL, True ); - - if (!ctx) - return FALSE; - - attr.background_pixel = 0; - attr.border_pixel = 0; - attr.colormap = XCreateColormap(dpy, root, visinfo->visual, AllocNone); - attr.event_mask = StructureNotifyMask | ExposureMask; - - mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; - - win = XCreateWindow(dpy, root, 0, 0, width, height, - 0, visinfo->depth, InputOutput, - visinfo->visual, mask, &attr); - - if (!glXMakeCurrent(dpy, win, ctx)) - return FALSE; - - pfnGetGalliumScreenMESA = (PFNGETGALLIUMSCREENMESAPROC)glXGetProcAddressARB((const GLubyte *)"glXGetGalliumScreenMESA"); - if(!pfnGetGalliumScreenMESA) - return FALSE; - - pfnCreateGalliumContextMESA = (PFNCREATEGALLIUMCONTEXTMESAPROC)glXGetProcAddressARB((const GLubyte *)"glXCreateGalliumContextMESA"); - if(!pfnCreateGalliumContextMESA) - return FALSE; - - glXDestroyContext(dpy, ctx); - XFree(visinfo); - XDestroyWindow(dpy, win); - XCloseDisplay(dpy); - - return TRUE; -} - -#endif - - -struct pipe_screen * -st_hardware_screen_create(void) -{ - if(st_hardpipe_load()) - return pfnGetGalliumScreenMESA(); - else - return st_software_screen_create(NULL); -} diff --git a/src/gallium/state_trackers/python/st_sample.c b/src/gallium/state_trackers/python/st_sample.c deleted file mode 100644 index cac9a1a6204..00000000000 --- a/src/gallium/state_trackers/python/st_sample.c +++ /dev/null @@ -1,594 +0,0 @@ -/************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS 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. - * - **************************************************************************/ - - -#include "pipe/p_compiler.h" -#include "pipe/p_format.h" -#include "pipe/p_state.h" -#include "util/u_inlines.h" -#include "util/u_format.h" -#include "util/u_tile.h" -#include "util/u_math.h" -#include "util/u_memory.h" - -#include "st_device.h" -#include "st_sample.h" - - -/** - * Use our own pseudo random generator to ensure consistent runs among - * multiple runs and platforms. - * - * @sa http://en.wikipedia.org/wiki/Linear_congruential_generator - */ -static uint32_t st_random(void) { - static uint64_t seed = UINT64_C(0xbb9a063afb0a739d); - - seed = UINT64_C(134775813) * seed + UINT64_C(1); - - return (uint32_t)(seed >> 32); -} - - -/** - * We don't want to include the patent-encumbered DXT code here, so instead - * we store several uncompressed/compressed data pairs for hardware testing - * purposes. - */ -struct dxt_data -{ - uint8_t rgba[16*4]; - uint8_t raw[16]; -}; - - -static const struct dxt_data -dxt1_rgb_data[] = { - { - { - 0x99, 0xb0, 0x8e, 0xff, - 0x5d, 0x62, 0x89, 0xff, - 0x99, 0xb0, 0x8e, 0xff, - 0x99, 0xb0, 0x8e, 0xff, - 0xd6, 0xff, 0x94, 0xff, - 0x5d, 0x62, 0x89, 0xff, - 0x99, 0xb0, 0x8e, 0xff, - 0xd6, 0xff, 0x94, 0xff, - 0x5d, 0x62, 0x89, 0xff, - 0x5d, 0x62, 0x89, 0xff, - 0x99, 0xb0, 0x8e, 0xff, - 0x21, 0x14, 0x84, 0xff, - 0x5d, 0x62, 0x89, 0xff, - 0x21, 0x14, 0x84, 0xff, - 0x21, 0x14, 0x84, 0xff, - 0x99, 0xb0, 0x8e, 0xff - }, - {0xf2, 0xd7, 0xb0, 0x20, 0xae, 0x2c, 0x6f, 0x97} - }, - { - { - 0xb5, 0xcf, 0x9c, 0xff, - 0x83, 0x8c, 0x8b, 0xff, - 0x21, 0x08, 0x6b, 0xff, - 0x83, 0x8c, 0x8b, 0xff, - 0x52, 0x4a, 0x7b, 0xff, - 0x83, 0x8c, 0x8b, 0xff, - 0x83, 0x8c, 0x8b, 0xff, - 0xb5, 0xcf, 0x9c, 0xff, - 0x21, 0x08, 0x6b, 0xff, - 0xb5, 0xcf, 0x9c, 0xff, - 0x83, 0x8c, 0x8b, 0xff, - 0x52, 0x4a, 0x7b, 0xff, - 0xb5, 0xcf, 0x9c, 0xff, - 0x83, 0x8c, 0x8b, 0xff, - 0x52, 0x4a, 0x7b, 0xff, - 0x83, 0x8c, 0x8b, 0xff - }, - {0x73, 0xb6, 0x4d, 0x20, 0x98, 0x2b, 0xe1, 0xb8} - }, - { - { - 0x00, 0x2c, 0xff, 0xff, - 0x94, 0x8d, 0x7b, 0xff, - 0x4a, 0x5c, 0xbd, 0xff, - 0x4a, 0x5c, 0xbd, 0xff, - 0x4a, 0x5c, 0xbd, 0xff, - 0x94, 0x8d, 0x7b, 0xff, - 0x94, 0x8d, 0x7b, 0xff, - 0x94, 0x8d, 0x7b, 0xff, - 0xde, 0xbe, 0x39, 0xff, - 0x94, 0x8d, 0x7b, 0xff, - 0xde, 0xbe, 0x39, 0xff, - 0xde, 0xbe, 0x39, 0xff, - 0xde, 0xbe, 0x39, 0xff, - 0xde, 0xbe, 0x39, 0xff, - 0xde, 0xbe, 0x39, 0xff, - 0x94, 0x8d, 0x7b, 0xff - }, - {0xe7, 0xdd, 0x7f, 0x01, 0xf9, 0xab, 0x08, 0x80} - }, - { - { - 0x6b, 0x24, 0x21, 0xff, - 0x7b, 0x4f, 0x5d, 0xff, - 0x7b, 0x4f, 0x5d, 0xff, - 0x8b, 0x7a, 0x99, 0xff, - 0x7b, 0x4f, 0x5d, 0xff, - 0x7b, 0x4f, 0x5d, 0xff, - 0x6b, 0x24, 0x21, 0xff, - 0x8b, 0x7a, 0x99, 0xff, - 0x9c, 0xa6, 0xd6, 0xff, - 0x6b, 0x24, 0x21, 0xff, - 0x7b, 0x4f, 0x5d, 0xff, - 0x8b, 0x7a, 0x99, 0xff, - 0x6b, 0x24, 0x21, 0xff, - 0x8b, 0x7a, 0x99, 0xff, - 0x7b, 0x4f, 0x5d, 0xff, - 0x9c, 0xa6, 0xd6, 0xff - }, - {0x3a, 0x9d, 0x24, 0x69, 0xbd, 0x9f, 0xb4, 0x39} - } -}; - - -static const struct dxt_data -dxt1_rgba_data[] = { - { - { - 0x00, 0x00, 0x00, 0x00, - 0x4e, 0xaa, 0x90, 0xff, - 0x4e, 0xaa, 0x90, 0xff, - 0x00, 0x00, 0x00, 0x00, - 0x4e, 0xaa, 0x90, 0xff, - 0x29, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, - 0x4e, 0xaa, 0x90, 0xff, - 0x73, 0x55, 0x21, 0xff, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x4e, 0xaa, 0x90, 0xff, - 0x4e, 0xaa, 0x90, 0xff, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x4e, 0xaa, 0x90, 0xff - }, - {0xff, 0x2f, 0xa4, 0x72, 0xeb, 0xb2, 0xbd, 0xbe} - }, - { - { - 0xb5, 0xe3, 0x63, 0xff, - 0x00, 0x00, 0x00, 0x00, - 0x6b, 0x24, 0x84, 0xff, - 0xb5, 0xe3, 0x63, 0xff, - 0x00, 0x00, 0x00, 0x00, - 0xb5, 0xe3, 0x63, 0xff, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x6b, 0x24, 0x84, 0xff, - 0x6b, 0x24, 0x84, 0xff, - 0x00, 0x00, 0x00, 0x00, - 0xb5, 0xe3, 0x63, 0xff, - 0x90, 0x83, 0x73, 0xff, - 0xb5, 0xe3, 0x63, 0xff - }, - {0x30, 0x69, 0x0c, 0xb7, 0x4d, 0xf7, 0x0f, 0x67} - }, - { - { - 0x00, 0x00, 0x00, 0x00, - 0xc6, 0x86, 0x8c, 0xff, - 0xc6, 0x86, 0x8c, 0xff, - 0x21, 0x65, 0x42, 0xff, - 0x21, 0x65, 0x42, 0xff, - 0x21, 0x65, 0x42, 0xff, - 0x21, 0x65, 0x42, 0xff, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x21, 0x65, 0x42, 0xff, - 0xc6, 0x86, 0x8c, 0xff, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0xc6, 0x86, 0x8c, 0xff - }, - {0x28, 0x23, 0x31, 0xc4, 0x17, 0xc0, 0xd3, 0x7f} - }, - { - { - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0xc6, 0xe3, 0x9c, 0xff, - 0x7b, 0x1c, 0x52, 0xff, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x7b, 0x1c, 0x52, 0xff, - 0x00, 0x00, 0x00, 0x00, - 0x7b, 0x1c, 0x52, 0xff, - 0xa0, 0x7f, 0x77, 0xff, - 0xc6, 0xe3, 0x9c, 0xff, - 0x00, 0x00, 0x00, 0x00, - 0xa0, 0x7f, 0x77, 0xff - }, - {0xea, 0x78, 0x13, 0xc7, 0x7f, 0xfc, 0x33, 0xb6} - }, -}; - - -static const struct dxt_data -dxt3_rgba_data[] = { - { - { - 0x6d, 0xc6, 0x96, 0x77, - 0x6d, 0xc6, 0x96, 0xee, - 0x6d, 0xc6, 0x96, 0xaa, - 0x8c, 0xff, 0xb5, 0x44, - 0x6d, 0xc6, 0x96, 0xff, - 0x6d, 0xc6, 0x96, 0x88, - 0x31, 0x55, 0x5a, 0x66, - 0x6d, 0xc6, 0x96, 0x99, - 0x31, 0x55, 0x5a, 0xbb, - 0x31, 0x55, 0x5a, 0x55, - 0x31, 0x55, 0x5a, 0x11, - 0x6d, 0xc6, 0x96, 0xcc, - 0x6d, 0xc6, 0x96, 0xcc, - 0x6d, 0xc6, 0x96, 0x11, - 0x31, 0x55, 0x5a, 0x44, - 0x31, 0x55, 0x5a, 0x88 - }, - {0xe7, 0x4a, 0x8f, 0x96, 0x5b, 0xc1, 0x1c, 0x84, 0xf6, 0x8f, 0xab, 0x32, 0x2a, 0x9a, 0x95, 0x5a} - }, - { - { - 0xad, 0xeb, 0x73, 0x99, - 0x97, 0xaa, 0x86, 0x66, - 0x6b, 0x28, 0xad, 0x99, - 0xad, 0xeb, 0x73, 0x99, - 0x6b, 0x28, 0xad, 0x22, - 0xad, 0xeb, 0x73, 0xff, - 0x97, 0xaa, 0x86, 0x55, - 0x6b, 0x28, 0xad, 0x55, - 0x6b, 0x28, 0xad, 0x44, - 0xad, 0xeb, 0x73, 0x33, - 0x6b, 0x28, 0xad, 0xee, - 0x6b, 0x28, 0xad, 0x99, - 0x97, 0xaa, 0x86, 0x66, - 0xad, 0xeb, 0x73, 0xbb, - 0x97, 0xaa, 0x86, 0x99, - 0xad, 0xeb, 0x73, 0xbb - }, - {0x69, 0x99, 0xf2, 0x55, 0x34, 0x9e, 0xb6, 0xb9, 0x4e, 0xaf, 0x55, 0x69, 0x18, 0x61, 0x51, 0x22} - }, - { - { - 0x63, 0xd7, 0xd6, 0x00, - 0x57, 0x62, 0x5d, 0xdd, - 0x57, 0x62, 0x5d, 0xcc, - 0x57, 0x62, 0x5d, 0xbb, - 0x52, 0x28, 0x21, 0xaa, - 0x57, 0x62, 0x5d, 0xcc, - 0x57, 0x62, 0x5d, 0xcc, - 0x57, 0x62, 0x5d, 0x66, - 0x57, 0x62, 0x5d, 0x22, - 0x57, 0x62, 0x5d, 0xdd, - 0x63, 0xd7, 0xd6, 0xee, - 0x57, 0x62, 0x5d, 0x33, - 0x63, 0xd7, 0xd6, 0x55, - 0x52, 0x28, 0x21, 0x55, - 0x57, 0x62, 0x5d, 0x11, - 0x5d, 0x9c, 0x99, 0xee - }, - {0xd0, 0xbc, 0xca, 0x6c, 0xd2, 0x3e, 0x55, 0xe1, 0xba, 0x66, 0x44, 0x51, 0xfc, 0xfd, 0xcf, 0xb4} - }, - { - { - 0x94, 0x6f, 0x60, 0x22, - 0x94, 0x6f, 0x60, 0x22, - 0xc5, 0xab, 0x76, 0x11, - 0xc5, 0xab, 0x76, 0xee, - 0x63, 0x34, 0x4a, 0xdd, - 0x63, 0x34, 0x4a, 0x33, - 0x94, 0x6f, 0x60, 0x77, - 0xf7, 0xe7, 0x8c, 0x00, - 0x94, 0x6f, 0x60, 0x33, - 0x63, 0x34, 0x4a, 0xaa, - 0x94, 0x6f, 0x60, 0x77, - 0x63, 0x34, 0x4a, 0xcc, - 0x94, 0x6f, 0x60, 0xaa, - 0xf7, 0xe7, 0x8c, 0x99, - 0x63, 0x34, 0x4a, 0x44, - 0xc5, 0xab, 0x76, 0xaa - }, - {0x22, 0xe1, 0x3d, 0x07, 0xa3, 0xc7, 0x9a, 0xa4, 0x31, 0xf7, 0xa9, 0x61, 0xaf, 0x35, 0x77, 0x93} - }, -}; - - -static const struct dxt_data -dxt5_rgba_data[] = { - { - { - 0x6d, 0xc6, 0x96, 0x74, - 0x6d, 0xc6, 0x96, 0xf8, - 0x6d, 0xc6, 0x96, 0xb6, - 0x8c, 0xff, 0xb5, 0x53, - 0x6d, 0xc6, 0x96, 0xf8, - 0x6d, 0xc6, 0x96, 0x95, - 0x31, 0x55, 0x5a, 0x53, - 0x6d, 0xc6, 0x96, 0x95, - 0x31, 0x55, 0x5a, 0xb6, - 0x31, 0x55, 0x5a, 0x53, - 0x31, 0x55, 0x5a, 0x11, - 0x6d, 0xc6, 0x96, 0xd7, - 0x6d, 0xc6, 0x96, 0xb6, - 0x6d, 0xc6, 0x96, 0x11, - 0x31, 0x55, 0x5a, 0x32, - 0x31, 0x55, 0x5a, 0x95 - }, - {0xf8, 0x11, 0xc5, 0x0c, 0x9a, 0x73, 0xb4, 0x9c, 0xf6, 0x8f, 0xab, 0x32, 0x2a, 0x9a, 0x95, 0x5a} - }, - { - { - 0xad, 0xeb, 0x73, 0xa1, - 0x97, 0xaa, 0x86, 0x65, - 0x6b, 0x28, 0xad, 0xa1, - 0xad, 0xeb, 0x73, 0xa1, - 0x6b, 0x28, 0xad, 0x2a, - 0xad, 0xeb, 0x73, 0xfb, - 0x97, 0xaa, 0x86, 0x47, - 0x6b, 0x28, 0xad, 0x65, - 0x6b, 0x28, 0xad, 0x47, - 0xad, 0xeb, 0x73, 0x47, - 0x6b, 0x28, 0xad, 0xdd, - 0x6b, 0x28, 0xad, 0xa1, - 0x97, 0xaa, 0x86, 0x65, - 0xad, 0xeb, 0x73, 0xbf, - 0x97, 0xaa, 0x86, 0xa1, - 0xad, 0xeb, 0x73, 0xbf - }, - {0xfb, 0x2a, 0x34, 0x19, 0xdc, 0xbf, 0xe8, 0x71, 0x4e, 0xaf, 0x55, 0x69, 0x18, 0x61, 0x51, 0x22} - }, - { - { - 0x63, 0xd7, 0xd6, 0x00, - 0x57, 0x62, 0x5d, 0xf5, - 0x57, 0x62, 0x5d, 0xd2, - 0x57, 0x62, 0x5d, 0xaf, - 0x52, 0x28, 0x21, 0xaf, - 0x57, 0x62, 0x5d, 0xd2, - 0x57, 0x62, 0x5d, 0xd2, - 0x57, 0x62, 0x5d, 0x69, - 0x57, 0x62, 0x5d, 0x23, - 0x57, 0x62, 0x5d, 0xd2, - 0x63, 0xd7, 0xd6, 0xf5, - 0x57, 0x62, 0x5d, 0x46, - 0x63, 0xd7, 0xd6, 0x46, - 0x52, 0x28, 0x21, 0x69, - 0x57, 0x62, 0x5d, 0x23, - 0x5d, 0x9c, 0x99, 0xf5 - }, - {0xf5, 0x00, 0x81, 0x36, 0xa9, 0x17, 0xec, 0x1e, 0xba, 0x66, 0x44, 0x51, 0xfc, 0xfd, 0xcf, 0xb4} - }, - { - { - 0x94, 0x6f, 0x60, 0x25, - 0x94, 0x6f, 0x60, 0x25, - 0xc5, 0xab, 0x76, 0x05, - 0xc5, 0xab, 0x76, 0xe8, - 0x63, 0x34, 0x4a, 0xe8, - 0x63, 0x34, 0x4a, 0x25, - 0x94, 0x6f, 0x60, 0x86, - 0xf7, 0xe7, 0x8c, 0x05, - 0x94, 0x6f, 0x60, 0x25, - 0x63, 0x34, 0x4a, 0xa7, - 0x94, 0x6f, 0x60, 0x66, - 0x63, 0x34, 0x4a, 0xc7, - 0x94, 0x6f, 0x60, 0xa7, - 0xf7, 0xe7, 0x8c, 0xa7, - 0x63, 0x34, 0x4a, 0x45, - 0xc5, 0xab, 0x76, 0xa7 - }, - {0xe8, 0x05, 0x7f, 0x80, 0x33, 0x5f, 0xb5, 0x79, 0x31, 0xf7, 0xa9, 0x61, 0xaf, 0x35, 0x77, 0x93} - }, -}; - - -static INLINE void -st_sample_dxt_pixel_block(enum pipe_format format, - uint8_t *raw, - float *rgba, unsigned rgba_stride, - unsigned w, unsigned h) -{ - const struct dxt_data *data; - unsigned n; - unsigned i; - unsigned x, y, ch; - - switch(format) { - case PIPE_FORMAT_DXT1_RGB: - data = dxt1_rgb_data; - n = sizeof(dxt1_rgb_data)/sizeof(dxt1_rgb_data[0]); - break; - case PIPE_FORMAT_DXT1_RGBA: - data = dxt1_rgba_data; - n = sizeof(dxt1_rgba_data)/sizeof(dxt1_rgba_data[0]); - break; - case PIPE_FORMAT_DXT3_RGBA: - data = dxt3_rgba_data; - n = sizeof(dxt3_rgba_data)/sizeof(dxt3_rgba_data[0]); - break; - case PIPE_FORMAT_DXT5_RGBA: - data = dxt5_rgba_data; - n = sizeof(dxt5_rgba_data)/sizeof(dxt5_rgba_data[0]); - break; - default: - assert(0); - return; - } - - i = st_random() % n; - - for(y = 0; y < h; ++y) - for(x = 0; x < w; ++x) - for(ch = 0; ch < 4; ++ch) - rgba[y*rgba_stride + x*4 + ch] = (float)(data[i].rgba[y*4*4 + x*4 + ch])/255.0f; - - memcpy(raw, data[i].raw, util_format_get_blocksize(format)); -} - - -static INLINE void -st_sample_generic_pixel_block(enum pipe_format format, - uint8_t *raw, - float *rgba, unsigned rgba_stride, - unsigned w, unsigned h, - boolean norm) -{ - unsigned i; - unsigned x, y, ch; - int blocksize = util_format_get_blocksize(format); - - if (norm) { - for (y = 0; y < h; ++y) { - for (x = 0; x < w; ++x) { - for (ch = 0; ch < 4; ++ch) { - unsigned offset = y*rgba_stride + x*4 + ch; - rgba[offset] = (st_random() & 0xff) / (double)0xff; - } - } - } - - util_format_write_4f(format, - rgba, rgba_stride * sizeof(float), - raw, util_format_get_stride(format, w), - 0, 0, w, h); - - } else { - for (i = 0; i < blocksize; ++i) - raw[i] = (uint8_t)st_random(); - } - - util_format_read_4f(format, - rgba, rgba_stride * sizeof(float), - raw, util_format_get_stride(format, w), - 0, 0, w, h); - - if (format == PIPE_FORMAT_UYVY || format == PIPE_FORMAT_YUYV) { - for (y = 0; y < h; ++y) { - for (x = 0; x < w; ++x) { - for (ch = 0; ch < 4; ++ch) { - unsigned offset = y*rgba_stride + x*4 + ch; - rgba[offset] = CLAMP(rgba[offset], 0.0f, 1.0f); - } - } - } - } -} - - -/** - * Randomly sample pixels. - */ -void -st_sample_pixel_block(enum pipe_format format, - void *raw, - float *rgba, unsigned rgba_stride, - unsigned w, unsigned h, - boolean norm) -{ - switch(format) { - case PIPE_FORMAT_DXT1_RGB: - case PIPE_FORMAT_DXT1_RGBA: - case PIPE_FORMAT_DXT3_RGBA: - case PIPE_FORMAT_DXT5_RGBA: - st_sample_dxt_pixel_block(format, raw, rgba, rgba_stride, w, h); - break; - - default: - st_sample_generic_pixel_block(format, raw, rgba, rgba_stride, w, h, norm); - break; - } -} - - -void -st_sample_surface(struct pipe_context *pipe, - struct st_surface *surface, - float *rgba, - boolean norm) -{ - struct pipe_resource *texture = surface->texture; - unsigned width = u_minify(texture->width0, surface->level); - unsigned height = u_minify(texture->height0, surface->level); - uint rgba_stride = width * 4; - struct pipe_transfer *transfer; - void *raw; - - transfer = pipe_get_transfer(pipe, - surface->texture, - surface->level, - surface->layer, - PIPE_TRANSFER_WRITE, - 0, 0, - width, - height); - if (!transfer) - return; - - raw = pipe->transfer_map(pipe, transfer); - if (raw) { - enum pipe_format format = texture->format; - uint x, y; - int nblocksx = util_format_get_nblocksx(format, width); - int nblocksy = util_format_get_nblocksy(format, height); - int blockwidth = util_format_get_blockwidth(format); - int blockheight = util_format_get_blockheight(format); - int blocksize = util_format_get_blocksize(format); - - - for (y = 0; y < nblocksy; ++y) { - for (x = 0; x < nblocksx; ++x) { - st_sample_pixel_block(format, - (uint8_t *) raw + y * transfer->stride + x * blocksize, - rgba + y * blockheight * rgba_stride + x * blockwidth * 4, - rgba_stride, - MIN2(blockwidth, width - x*blockwidth), - MIN2(blockheight, height - y*blockheight), - norm); - } - } - - pipe->transfer_unmap(pipe, transfer); - } - - pipe->transfer_destroy(pipe, transfer); -} diff --git a/src/gallium/state_trackers/python/st_sample.h b/src/gallium/state_trackers/python/st_sample.h deleted file mode 100644 index 2fdbb391f36..00000000000 --- a/src/gallium/state_trackers/python/st_sample.h +++ /dev/null @@ -1,53 +0,0 @@ -/************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS 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 ST_SAMPLE_H_ -#define ST_SAMPLE_H_ - - -#include "pipe/p_format.h" - -struct pipe_context; -struct st_surface; - - -void -st_sample_pixel_block(enum pipe_format format, - void *raw, - float *rgba, unsigned rgba_stride, - unsigned w, unsigned h, - boolean norm); - -void -st_sample_surface(struct pipe_context *pipe, - struct st_surface *surface, - float *rgba, - boolean norm); - - -#endif /* ST_SAMPLE_H_ */ diff --git a/src/gallium/state_trackers/python/st_softpipe_winsys.c b/src/gallium/state_trackers/python/st_softpipe_winsys.c deleted file mode 100644 index 8584bad4679..00000000000 --- a/src/gallium/state_trackers/python/st_softpipe_winsys.c +++ /dev/null @@ -1,78 +0,0 @@ -/************************************************************************** - * - * Copyright 2007 Tungsten Graphics, Inc., Bismarck, ND., USA - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * THE COPYRIGHT HOLDERS, AUTHORS 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. - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * - **************************************************************************/ - -#include "util/u_debug.h" -#include "softpipe/sp_public.h" -#include "llvmpipe/lp_public.h" -#include "state_tracker/sw_winsys.h" -#include "sw/null/null_sw_winsys.h" -#include "st_winsys.h" - - -struct pipe_screen * -st_software_screen_create(const char *driver) -{ - struct sw_winsys *ws; - struct pipe_screen *screen = NULL; - - if (!driver) { - const char *default_driver; - -#if defined(HAVE_LLVMPIPE) - default_driver = "llvmpipe"; -#elif defined(HAVE_SOFTPIPE) - default_driver = "softpipe"; -#else - default_driver = ""; -#endif - - driver = debug_get_option("GALLIUM_DRIVER", default_driver); - } - - ws = null_sw_create(); - if(!ws) - return NULL; - -#ifdef HAVE_LLVMPIPE - if (strcmp(driver, "llvmpipe") == 0) { - screen = llvmpipe_create_screen(ws); - } -#endif - -#ifdef HAVE_SOFTPIPE - if (strcmp(driver, "softpipe") == 0) { - screen = softpipe_create_screen(ws); - } -#endif - - if (!screen) { - ws->destroy(ws); - } - - return screen; -} diff --git a/src/gallium/state_trackers/python/st_winsys.h b/src/gallium/state_trackers/python/st_winsys.h deleted file mode 100644 index 7d4066d947b..00000000000 --- a/src/gallium/state_trackers/python/st_winsys.h +++ /dev/null @@ -1,43 +0,0 @@ -/************************************************************************** - * - * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL TUNGSTEN GRAPHICS 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 ST_WINSYS_H_ -#define ST_WINSYS_H_ - - -struct pipe_screen; - - -struct pipe_screen * -st_hardware_screen_create(void); - -struct pipe_screen * -st_software_screen_create(const char *driver); - - -#endif /* ST_WINSYS_H_ */ diff --git a/src/gallium/state_trackers/python/tests/regress/fragment-shader/frag-abs.png b/src/gallium/state_trackers/python/tests/regress/fragment-shader/frag-abs.png Binary files differdeleted file mode 100644 index c947a7b8813..00000000000 --- a/src/gallium/state_trackers/python/tests/regress/fragment-shader/frag-abs.png +++ /dev/null diff --git a/src/gallium/state_trackers/python/u_format.i b/src/gallium/state_trackers/python/u_format.i deleted file mode 100644 index 2184b420843..00000000000 --- a/src/gallium/state_trackers/python/u_format.i +++ /dev/null @@ -1,88 +0,0 @@ -/************************************************************************** - * - * Copyright 2010 VMware, Inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * THE COPYRIGHT HOLDERS, AUTHORS 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. - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - **************************************************************************/ - - -static INLINE const char * -util_format_name(enum pipe_format format); - -static INLINE boolean -util_format_is_s3tc(enum pipe_format format); - -static INLINE boolean -util_format_is_depth_or_stencil(enum pipe_format format); - -static INLINE boolean -util_format_is_depth_and_stencil(enum pipe_format format); - - -uint -util_format_get_blocksizebits(enum pipe_format format); - -uint -util_format_get_blocksize(enum pipe_format format); - -uint -util_format_get_blockwidth(enum pipe_format format); - -uint -util_format_get_blockheight(enum pipe_format format); - -unsigned -util_format_get_nblocksx(enum pipe_format format, - unsigned x); - -unsigned -util_format_get_nblocksy(enum pipe_format format, - unsigned y); - -unsigned -util_format_get_nblocks(enum pipe_format format, - unsigned width, - unsigned height); - -size_t -util_format_get_stride(enum pipe_format format, - unsigned width); - -size_t -util_format_get_2d_size(enum pipe_format format, - size_t stride, - unsigned height); - -uint -util_format_get_component_bits(enum pipe_format format, - enum util_format_colorspace colorspace, - uint component); - -boolean -util_format_has_alpha(enum pipe_format format); - - -unsigned -util_format_get_nr_components(enum pipe_format format); - - diff --git a/src/gallium/state_trackers/vega/shaders_cache.c b/src/gallium/state_trackers/vega/shaders_cache.c index 023996ce2d8..70d860ddc8e 100644 --- a/src/gallium/state_trackers/vega/shaders_cache.c +++ b/src/gallium/state_trackers/vega/shaders_cache.c @@ -229,7 +229,6 @@ combine_shaders(const struct shader_asm_info *shaders[SHADER_STAGES], int num_sh return NULL; p = pipe->create_fs_state(pipe, shader); - ureg_destroy(ureg); if (num_temps >= 1) { for (i = start_temp; i < end_temp; i++) { @@ -237,6 +236,8 @@ combine_shaders(const struct shader_asm_info *shaders[SHADER_STAGES], int num_sh } } + ureg_destroy(ureg); + if (temp) free(temp); if (constant) diff --git a/src/gallium/state_trackers/wgl/stw_ext_pbuffer.c b/src/gallium/state_trackers/wgl/stw_ext_pbuffer.c index 32636c603dc..fb5d5e8b929 100644 --- a/src/gallium/state_trackers/wgl/stw_ext_pbuffer.c +++ b/src/gallium/state_trackers/wgl/stw_ext_pbuffer.c @@ -52,6 +52,9 @@ wglCreatePbufferARB(HDC _hDC, int useLargest = 0; const struct stw_pixelformat_info *info; struct stw_framebuffer *fb; + DWORD dwExStyle; + DWORD dwStyle; + RECT rect; HWND hWnd; HDC hDC; @@ -113,15 +116,45 @@ wglCreatePbufferARB(HDC _hDC, first = FALSE; } - hWnd = CreateWindowEx(0, + dwExStyle = 0; + dwStyle = WS_CLIPSIBLINGS | WS_CLIPCHILDREN; + + if (0) { + /* + * Don't hide the window -- useful for debugging what the application is + * drawing + */ + + dwStyle |= WS_VISIBLE | WS_OVERLAPPEDWINDOW; + } else { + dwStyle |= WS_POPUPWINDOW; + } + + rect.left = 0; + rect.top = 0; + rect.right = rect.left + iWidth; + rect.bottom = rect.top + iHeight; + + /* + * The CreateWindowEx parameters are the total (outside) dimensions of the + * window, which can vary with Windows version and user settings. Use + * AdjustWindowRect to get the required total area for the given client area. + * + * AdjustWindowRectEx does not accept WS_OVERLAPPED style (which is defined + * as 0), which means we need to use some other style instead, e.g., + * WS_OVERLAPPEDWINDOW or WS_POPUPWINDOW as above. + */ + + AdjustWindowRectEx(&rect, dwStyle, FALSE, dwExStyle); + + hWnd = CreateWindowEx(dwExStyle, "wglpbuffer", /* wc.lpszClassName */ - "wglpbuffer", -#if 0 /* Useful for debugging what the application is drawing */ - WS_VISIBLE | -#endif - WS_CLIPSIBLINGS | WS_CLIPCHILDREN, - CW_USEDEFAULT, CW_USEDEFAULT, /* x, y */ - iWidth, iHeight, + NULL, + dwStyle, + CW_USEDEFAULT, /* x */ + CW_USEDEFAULT, /* y */ + rect.right - rect.left, /* width */ + rect.bottom - rect.top, /* height */ NULL, NULL, NULL, @@ -130,6 +163,18 @@ wglCreatePbufferARB(HDC _hDC, return 0; } +#ifdef DEBUG + /* + * Verify the client area size matches the specified size. + */ + + GetClientRect(hWnd, &rect); + assert(rect.left == 0); + assert(rect.top == 0); + assert(rect.right - rect.left == iWidth); + assert(rect.bottom - rect.top == iHeight); +#endif + hDC = GetDC(hWnd); if (!hDC) { return 0; diff --git a/src/gallium/state_trackers/wgl/stw_framebuffer.c b/src/gallium/state_trackers/wgl/stw_framebuffer.c index 733222aa21c..d8b1440a688 100644 --- a/src/gallium/state_trackers/wgl/stw_framebuffer.c +++ b/src/gallium/state_trackers/wgl/stw_framebuffer.c @@ -112,7 +112,7 @@ stw_framebuffer_release( static INLINE void stw_framebuffer_get_size( struct stw_framebuffer *fb ) { - unsigned width, height; + LONG width, height; RECT client_rect; RECT window_rect; POINT client_pos; @@ -126,10 +126,17 @@ stw_framebuffer_get_size( struct stw_framebuffer *fb ) width = client_rect.right - client_rect.left; height = client_rect.bottom - client_rect.top; - if(width < 1) - width = 1; - if(height < 1) - height = 1; + if (width <= 0 || height <= 0) { + /* + * When the window is minimized GetClientRect will return zeros. Simply + * preserve the current window size, until the window is restored or + * maximized again. + */ + + assert(width == 0 && height == 0); + + return; + } if(width != fb->width || height != fb->height) { fb->must_resize = TRUE; @@ -150,13 +157,13 @@ stw_framebuffer_get_size( struct stw_framebuffer *fb ) #if 0 debug_printf("\n"); - debug_printf("%s: client_position = (%i, %i)\n", + debug_printf("%s: client_position = (%li, %li)\n", __FUNCTION__, client_pos.x, client_pos.y); - debug_printf("%s: window_rect = (%i, %i) - (%i, %i)\n", + debug_printf("%s: window_rect = (%li, %li) - (%li, %li)\n", __FUNCTION__, window_rect.left, window_rect.top, window_rect.right, window_rect.bottom); - debug_printf("%s: client_rect = (%i, %i) - (%i, %i)\n", + debug_printf("%s: client_rect = (%li, %li) - (%li, %li)\n", __FUNCTION__, fb->client_rect.left, fb->client_rect.top, fb->client_rect.right, fb->client_rect.bottom); diff --git a/src/gallium/targets/dri-r300/target.c b/src/gallium/targets/dri-r300/target.c index 2ecf3457a76..b48bcad3710 100644 --- a/src/gallium/targets/dri-r300/target.c +++ b/src/gallium/targets/dri-r300/target.c @@ -7,10 +7,10 @@ static struct pipe_screen * create_screen(int fd) { - struct r300_winsys_screen *sws; + struct radeon_winsys *sws; struct pipe_screen *screen; - sws = r300_drm_winsys_screen_create(fd); + sws = radeon_drm_winsys_create(fd); if (!sws) return NULL; diff --git a/src/gallium/targets/egl-static/egl_pipe.c b/src/gallium/targets/egl-static/egl_pipe.c index a33d419e0aa..658c532b404 100644 --- a/src/gallium/targets/egl-static/egl_pipe.c +++ b/src/gallium/targets/egl-static/egl_pipe.c @@ -118,10 +118,10 @@ static struct pipe_screen * pipe_r300_create_screen(int fd) { #if _EGL_PIPE_R300 - struct r300_winsys_screen *sws; + struct radeon_winsys *sws; struct pipe_screen *screen; - sws = r300_drm_winsys_screen_create(fd); + sws = radeon_drm_winsys_create(fd); if (!sws) return NULL; diff --git a/src/gallium/targets/egl/pipe_r300.c b/src/gallium/targets/egl/pipe_r300.c index d84bb92539a..09940f0a194 100644 --- a/src/gallium/targets/egl/pipe_r300.c +++ b/src/gallium/targets/egl/pipe_r300.c @@ -7,10 +7,10 @@ static struct pipe_screen * create_screen(int fd) { - struct r300_winsys_screen *sws; + struct radeon_winsys *sws; struct pipe_screen *screen; - sws = r300_drm_winsys_screen_create(fd); + sws = radeon_drm_winsys_create(fd); if (!sws) return NULL; diff --git a/src/gallium/targets/xorg-radeon/radeon_target.c b/src/gallium/targets/xorg-radeon/radeon_target.c index 5a0a8dc5738..b8410efbd89 100644 --- a/src/gallium/targets/xorg-radeon/radeon_target.c +++ b/src/gallium/targets/xorg-radeon/radeon_target.c @@ -7,10 +7,10 @@ static struct pipe_screen * create_screen(int fd) { - struct r300_winsys_screen *sws; + struct radeon_winsys *sws; struct pipe_screen *screen; - sws = r300_drm_winsys_screen_create(fd); + sws = radeon_drm_winsys_create(fd); if (!sws) return NULL; diff --git a/src/gallium/tests/graw/fragment-shader b/src/gallium/tests/graw/fragment-shader deleted file mode 120000 index c7dd0b7c6b2..00000000000 --- a/src/gallium/tests/graw/fragment-shader +++ /dev/null @@ -1 +0,0 @@ -../python/tests/regress/fragment-shader
\ No newline at end of file diff --git a/src/gallium/tests/graw/fragment-shader/frag-abs.sh b/src/gallium/tests/graw/fragment-shader/frag-abs.sh new file mode 100644 index 00000000000..103d7497f48 --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-abs.sh @@ -0,0 +1,13 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +DCL TEMP[0] + +IMM FLT32 { -0.5, -0.4, -0.6, 0.0 } + +ADD TEMP[0], IN[0], IMM[0] +ABS OUT[0], TEMP[0] + +END diff --git a/src/gallium/tests/graw/fragment-shader/frag-add.sh b/src/gallium/tests/graw/fragment-shader/frag-add.sh new file mode 100644 index 00000000000..bcb94205963 --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-add.sh @@ -0,0 +1,8 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +ADD OUT[0], IN[0], IN[0] + +END diff --git a/src/gallium/tests/graw/fragment-shader/frag-cb-1d.sh b/src/gallium/tests/graw/fragment-shader/frag-cb-1d.sh new file mode 100644 index 00000000000..85fb9ea4e7f --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-cb-1d.sh @@ -0,0 +1,13 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR +DCL CONST[1] +DCL CONST[3] +DCL TEMP[0..1] + +ADD TEMP[0], IN[0], CONST[1] +RCP TEMP[1], CONST[3].xxxx +MUL OUT[0], TEMP[0], TEMP[1] + +END diff --git a/src/gallium/tests/python/tests/regress/fragment-shader/frag-cb-2d.sh b/src/gallium/tests/graw/fragment-shader/frag-cb-2d.sh index bbc3a10f9b5..bbc3a10f9b5 100644 --- a/src/gallium/tests/python/tests/regress/fragment-shader/frag-cb-2d.sh +++ b/src/gallium/tests/graw/fragment-shader/frag-cb-2d.sh diff --git a/src/gallium/tests/graw/fragment-shader/frag-dp3.sh b/src/gallium/tests/graw/fragment-shader/frag-dp3.sh new file mode 100644 index 00000000000..b5281975d4a --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-dp3.sh @@ -0,0 +1,8 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +DP3 OUT[0], IN[0], IN[0] + +END diff --git a/src/gallium/tests/graw/fragment-shader/frag-dp4.sh b/src/gallium/tests/graw/fragment-shader/frag-dp4.sh new file mode 100644 index 00000000000..d59df76e70b --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-dp4.sh @@ -0,0 +1,8 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +DP4 OUT[0], IN[0].xyzx, IN[0].xyzx + +END diff --git a/src/gallium/tests/graw/fragment-shader/frag-dst.sh b/src/gallium/tests/graw/fragment-shader/frag-dst.sh new file mode 100644 index 00000000000..fbb20fa9f62 --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-dst.sh @@ -0,0 +1,8 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +DST OUT[0], IN[0], IN[0] + +END diff --git a/src/gallium/tests/graw/fragment-shader/frag-ex2.sh b/src/gallium/tests/graw/fragment-shader/frag-ex2.sh new file mode 100644 index 00000000000..b511288f4b6 --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-ex2.sh @@ -0,0 +1,11 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +DCL TEMP[0] + +EX2 TEMP[0], IN[0].xxxx +MUL OUT[0], TEMP[0], IN[0] + +END diff --git a/src/gallium/tests/python/tests/regress/fragment-shader/frag-face.sh b/src/gallium/tests/graw/fragment-shader/frag-face.sh index 5745b6a5aba..5745b6a5aba 100644 --- a/src/gallium/tests/python/tests/regress/fragment-shader/frag-face.sh +++ b/src/gallium/tests/graw/fragment-shader/frag-face.sh diff --git a/src/gallium/tests/graw/fragment-shader/frag-flr.sh b/src/gallium/tests/graw/fragment-shader/frag-flr.sh new file mode 100644 index 00000000000..99a2f96103a --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-flr.sh @@ -0,0 +1,15 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +DCL TEMP[0] + +IMM FLT32 { 2.5, 4.0, 2.0, 1.0 } +IMM FLT32 { 0.4, 0.25, 0.5, 1.0 } + +MUL TEMP[0], IN[0], IMM[0] +FLR TEMP[0], TEMP[0] +MUL OUT[0], TEMP[0], IMM[1] + +END diff --git a/src/gallium/tests/graw/fragment-shader/frag-frc.sh b/src/gallium/tests/graw/fragment-shader/frag-frc.sh new file mode 100644 index 00000000000..a54c2623b0a --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-frc.sh @@ -0,0 +1,13 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +DCL TEMP[0] + +IMM FLT32 { 2.7, 3.1, 4.5, 1.0 } + +MUL TEMP[0], IN[0], IMM[0] +FRC OUT[0], TEMP[0] + +END diff --git a/src/gallium/tests/python/tests/regress/fragment-shader/frag-kil.sh b/src/gallium/tests/graw/fragment-shader/frag-kil.sh index 583b0ca4a4a..583b0ca4a4a 100644 --- a/src/gallium/tests/python/tests/regress/fragment-shader/frag-kil.sh +++ b/src/gallium/tests/graw/fragment-shader/frag-kil.sh diff --git a/src/gallium/tests/graw/fragment-shader/frag-lg2.sh b/src/gallium/tests/graw/fragment-shader/frag-lg2.sh new file mode 100644 index 00000000000..5f5b4be1092 --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-lg2.sh @@ -0,0 +1,15 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +DCL TEMP[0] + +IMM FLT32 { 1.0, 0.0, 0.0, 0.0 } +IMM FLT32 { 0.5, 0.0, 0.0, 0.0 } + +ADD TEMP[0], IN[0], IMM[0] +LG2 TEMP[0].x, TEMP[0].xxxx +ADD OUT[0], TEMP[0], IMM[1] + +END diff --git a/src/gallium/tests/graw/fragment-shader/frag-lit.sh b/src/gallium/tests/graw/fragment-shader/frag-lit.sh new file mode 100644 index 00000000000..6323c4712dc --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-lit.sh @@ -0,0 +1,8 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +LIT OUT[0], IN[0] + +END diff --git a/src/gallium/tests/graw/fragment-shader/frag-lrp.sh b/src/gallium/tests/graw/fragment-shader/frag-lrp.sh new file mode 100644 index 00000000000..740809d22e0 --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-lrp.sh @@ -0,0 +1,11 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +DCL TEMP[0] + +ABS TEMP[0], IN[0] +LRP OUT[0], TEMP[0], IN[0].xxxx, IN[0].yyyy + +END diff --git a/src/gallium/tests/python/tests/regress/fragment-shader/frag-mad-immx.sh b/src/gallium/tests/graw/fragment-shader/frag-mad-immx.sh index 6b034915769..6b034915769 100644 --- a/src/gallium/tests/python/tests/regress/fragment-shader/frag-mad-immx.sh +++ b/src/gallium/tests/graw/fragment-shader/frag-mad-immx.sh diff --git a/src/gallium/tests/graw/fragment-shader/frag-mad.sh b/src/gallium/tests/graw/fragment-shader/frag-mad.sh new file mode 100644 index 00000000000..413b9dc3916 --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-mad.sh @@ -0,0 +1,11 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +IMM FLT32 { 0.5, 0.4, 0.6, 1.0 } +IMM FLT32 { 0.5, 0.4, 0.6, 0.0 } + +MAD OUT[0], IN[0], IMM[0], IMM[1] + +END diff --git a/src/gallium/tests/graw/fragment-shader/frag-max.sh b/src/gallium/tests/graw/fragment-shader/frag-max.sh new file mode 100644 index 00000000000..b69f2132612 --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-max.sh @@ -0,0 +1,10 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +IMM FLT32 { 0.4, 0.4, 0.4, 0.0 } + +MAX OUT[0], IN[0], IMM[0] + +END diff --git a/src/gallium/tests/graw/fragment-shader/frag-min.sh b/src/gallium/tests/graw/fragment-shader/frag-min.sh new file mode 100644 index 00000000000..df284f49e71 --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-min.sh @@ -0,0 +1,10 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +IMM FLT32 { 0.6, 0.6, 0.6, 1.0 } + +MIN OUT[0], IN[0], IMM[0] + +END diff --git a/src/gallium/tests/graw/fragment-shader/frag-mov.sh b/src/gallium/tests/graw/fragment-shader/frag-mov.sh new file mode 100644 index 00000000000..64af72f381b --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-mov.sh @@ -0,0 +1,8 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +MOV OUT[0], IN[0] + +END diff --git a/src/gallium/tests/graw/fragment-shader/frag-mul.sh b/src/gallium/tests/graw/fragment-shader/frag-mul.sh new file mode 100644 index 00000000000..bdd0b0026b9 --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-mul.sh @@ -0,0 +1,10 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +IMM FLT32 { 0.5, 0.6, 0.7, 1.0 } + +MUL OUT[0], IN[0], IMM[0] + +END diff --git a/src/gallium/tests/graw/fragment-shader/frag-rcp.sh b/src/gallium/tests/graw/fragment-shader/frag-rcp.sh new file mode 100644 index 00000000000..f4b611b26ab --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-rcp.sh @@ -0,0 +1,15 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +DCL TEMP[0] + +IMM FLT32 { 1.0, 0.0, 0.0, 0.0 } +IMM FLT32 { 1.5, 0.0, 0.0, 0.0 } + +ADD TEMP[0], IN[0], IMM[0] +RCP TEMP[0].x, TEMP[0].xxxx +SUB OUT[0], TEMP[0], IMM[1] + +END diff --git a/src/gallium/tests/graw/fragment-shader/frag-rsq.sh b/src/gallium/tests/graw/fragment-shader/frag-rsq.sh new file mode 100644 index 00000000000..d1e9b0b53be --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-rsq.sh @@ -0,0 +1,15 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +DCL TEMP[0] + +IMM FLT32 { 1.0, 0.0, 0.0, 0.0 } +IMM FLT32 { 1.5, 0.0, 0.0, 0.0 } + +ADD TEMP[0], IN[0], IMM[0] +RSQ TEMP[0].x, TEMP[0].xxxx +SUB OUT[0], TEMP[0], IMM[1] + +END diff --git a/src/gallium/tests/graw/fragment-shader/frag-sge.sh b/src/gallium/tests/graw/fragment-shader/frag-sge.sh new file mode 100644 index 00000000000..1f33fac4727 --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-sge.sh @@ -0,0 +1,13 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +DCL TEMP[0] + +IMM FLT32 { 0.6, 0.6, 0.6, 0.0 } + +SGE TEMP[0], IN[0], IMM[0] +MUL OUT[0], IN[0], TEMP[0] + +END diff --git a/src/gallium/tests/graw/fragment-shader/frag-slt.sh b/src/gallium/tests/graw/fragment-shader/frag-slt.sh new file mode 100644 index 00000000000..d58b7886a12 --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-slt.sh @@ -0,0 +1,13 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +DCL TEMP[0] + +IMM FLT32 { 0.6, 0.6, 0.6, 0.0 } + +SLT TEMP[0], IN[0], IMM[0] +MUL OUT[0], IN[0], TEMP[0] + +END diff --git a/src/gallium/tests/graw/fragment-shader/frag-srcmod-abs.sh b/src/gallium/tests/graw/fragment-shader/frag-srcmod-abs.sh new file mode 100644 index 00000000000..ecd19248c64 --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-srcmod-abs.sh @@ -0,0 +1,13 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +DCL TEMP[0] + +IMM FLT32 { -0.3, -0.5, -0.4, 0.0 } + +ADD TEMP[0], IN[0], IMM[0] +MOV OUT[0], |TEMP[0]| + +END diff --git a/src/gallium/tests/graw/fragment-shader/frag-srcmod-absneg.sh b/src/gallium/tests/graw/fragment-shader/frag-srcmod-absneg.sh new file mode 100644 index 00000000000..c2d99ddd15b --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-srcmod-absneg.sh @@ -0,0 +1,15 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +DCL TEMP[0] + +IMM FLT32 { -0.2, -0.3, -0.4, 0.0 } +IMM FLT32 { -1.0, -1.0, -1.0, -1.0 } + +ADD TEMP[0], IN[0], IMM[0] +MOV TEMP[0], -|TEMP[0]| +MUL OUT[0], TEMP[0], IMM[1] + +END diff --git a/src/gallium/tests/graw/fragment-shader/frag-srcmod-neg.sh b/src/gallium/tests/graw/fragment-shader/frag-srcmod-neg.sh new file mode 100644 index 00000000000..a08ab6d2dcb --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-srcmod-neg.sh @@ -0,0 +1,11 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +DCL TEMP[0] + +SUB TEMP[0], IN[0], IN[0].yzxw +MOV OUT[0], -TEMP[0] + +END diff --git a/src/gallium/tests/graw/fragment-shader/frag-srcmod-swz.sh b/src/gallium/tests/graw/fragment-shader/frag-srcmod-swz.sh new file mode 100644 index 00000000000..6110647d979 --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-srcmod-swz.sh @@ -0,0 +1,8 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +MOV OUT[0], IN[0].yxzw + +END diff --git a/src/gallium/tests/graw/fragment-shader/frag-sub.sh b/src/gallium/tests/graw/fragment-shader/frag-sub.sh new file mode 100644 index 00000000000..673fca139aa --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-sub.sh @@ -0,0 +1,8 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +SUB OUT[0], IN[0], IN[0].yzxw + +END diff --git a/src/gallium/tests/python/tests/regress/fragment-shader/frag-tempx.sh b/src/gallium/tests/graw/fragment-shader/frag-tempx.sh index 81bcad2d65c..81bcad2d65c 100644 --- a/src/gallium/tests/python/tests/regress/fragment-shader/frag-tempx.sh +++ b/src/gallium/tests/graw/fragment-shader/frag-tempx.sh diff --git a/src/gallium/tests/graw/fragment-shader/frag-xpd.sh b/src/gallium/tests/graw/fragment-shader/frag-xpd.sh new file mode 100644 index 00000000000..6ec8b1184cc --- /dev/null +++ b/src/gallium/tests/graw/fragment-shader/frag-xpd.sh @@ -0,0 +1,8 @@ +FRAG + +DCL IN[0], COLOR, LINEAR +DCL OUT[0], COLOR + +XPD OUT[0], IN[0], IN[0].yzxw + +END diff --git a/src/gallium/tests/graw/vertex-shader b/src/gallium/tests/graw/vertex-shader deleted file mode 120000 index 7b216e8ca08..00000000000 --- a/src/gallium/tests/graw/vertex-shader +++ /dev/null @@ -1 +0,0 @@ -../python/tests/regress/vertex-shader
\ No newline at end of file diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-abs.sh b/src/gallium/tests/graw/vertex-shader/vert-abs.sh index 062a48b531e..062a48b531e 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-abs.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-abs.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-add.sh b/src/gallium/tests/graw/vertex-shader/vert-add.sh index 188931ebc8d..188931ebc8d 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-add.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-add.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-arl.sh b/src/gallium/tests/graw/vertex-shader/vert-arl.sh index 0039597f6f0..0039597f6f0 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-arl.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-arl.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-arr.sh b/src/gallium/tests/graw/vertex-shader/vert-arr.sh index fdde4f9ad12..fdde4f9ad12 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-arr.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-arr.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-cb-1d.sh b/src/gallium/tests/graw/vertex-shader/vert-cb-1d.sh index e227917fd3b..e227917fd3b 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-cb-1d.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-cb-1d.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-cb-2d.sh b/src/gallium/tests/graw/vertex-shader/vert-cb-2d.sh index 39768d2dda9..39768d2dda9 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-cb-2d.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-cb-2d.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-dp3.sh b/src/gallium/tests/graw/vertex-shader/vert-dp3.sh index 357e224f696..357e224f696 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-dp3.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-dp3.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-dp4.sh b/src/gallium/tests/graw/vertex-shader/vert-dp4.sh index 14f61066014..14f61066014 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-dp4.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-dp4.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-dst.sh b/src/gallium/tests/graw/vertex-shader/vert-dst.sh index 2d59bd1a0c3..2d59bd1a0c3 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-dst.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-dst.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-ex2.sh b/src/gallium/tests/graw/vertex-shader/vert-ex2.sh index e2383a6b5bd..e2383a6b5bd 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-ex2.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-ex2.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-flr.sh b/src/gallium/tests/graw/vertex-shader/vert-flr.sh index fa24806663b..fa24806663b 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-flr.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-flr.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-frc.sh b/src/gallium/tests/graw/vertex-shader/vert-frc.sh index ff09bfafd0c..ff09bfafd0c 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-frc.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-frc.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-lg2.sh b/src/gallium/tests/graw/vertex-shader/vert-lg2.sh index 876b7ab6608..876b7ab6608 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-lg2.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-lg2.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-lit.sh b/src/gallium/tests/graw/vertex-shader/vert-lit.sh index a2235ff6119..a2235ff6119 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-lit.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-lit.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-lrp.sh b/src/gallium/tests/graw/vertex-shader/vert-lrp.sh index a26ca3b0ec0..a26ca3b0ec0 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-lrp.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-lrp.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-mad.sh b/src/gallium/tests/graw/vertex-shader/vert-mad.sh index caf83a91e48..caf83a91e48 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-mad.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-mad.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-max.sh b/src/gallium/tests/graw/vertex-shader/vert-max.sh index db84a499214..db84a499214 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-max.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-max.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-min.sh b/src/gallium/tests/graw/vertex-shader/vert-min.sh index 63a8c2cf3cd..63a8c2cf3cd 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-min.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-min.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-mov.sh b/src/gallium/tests/graw/vertex-shader/vert-mov.sh index 4c23e3eaadb..4c23e3eaadb 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-mov.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-mov.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-mul.sh b/src/gallium/tests/graw/vertex-shader/vert-mul.sh index a409cd4b21e..a409cd4b21e 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-mul.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-mul.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-rcp.sh b/src/gallium/tests/graw/vertex-shader/vert-rcp.sh index d440e35d9a3..d440e35d9a3 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-rcp.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-rcp.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-rsq.sh b/src/gallium/tests/graw/vertex-shader/vert-rsq.sh index 6fbd53ae0ac..6fbd53ae0ac 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-rsq.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-rsq.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-sge.sh b/src/gallium/tests/graw/vertex-shader/vert-sge.sh index e32a21b6109..e32a21b6109 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-sge.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-sge.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-slt.sh b/src/gallium/tests/graw/vertex-shader/vert-slt.sh index 2af61062922..2af61062922 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-slt.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-slt.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-srcmod-abs.sh b/src/gallium/tests/graw/vertex-shader/vert-srcmod-abs.sh index e768d95049d..e768d95049d 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-srcmod-abs.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-srcmod-abs.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-srcmod-absneg.sh b/src/gallium/tests/graw/vertex-shader/vert-srcmod-absneg.sh index 40ca5d60def..40ca5d60def 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-srcmod-absneg.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-srcmod-absneg.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-srcmod-neg.sh b/src/gallium/tests/graw/vertex-shader/vert-srcmod-neg.sh index 297bc1ee3ed..297bc1ee3ed 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-srcmod-neg.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-srcmod-neg.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-srcmod-swz.sh b/src/gallium/tests/graw/vertex-shader/vert-srcmod-swz.sh index 528f164b9ee..528f164b9ee 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-srcmod-swz.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-srcmod-swz.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-sub.sh b/src/gallium/tests/graw/vertex-shader/vert-sub.sh index 90249abdd38..90249abdd38 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-sub.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-sub.sh diff --git a/src/gallium/tests/python/tests/regress/vertex-shader/vert-xpd.sh b/src/gallium/tests/graw/vertex-shader/vert-xpd.sh index 72b048676fb..72b048676fb 100644 --- a/src/gallium/tests/python/tests/regress/vertex-shader/vert-xpd.sh +++ b/src/gallium/tests/graw/vertex-shader/vert-xpd.sh diff --git a/src/gallium/tests/python/retrace/interpreter.py b/src/gallium/tests/python/retrace/interpreter.py deleted file mode 100755 index 84371223f66..00000000000 --- a/src/gallium/tests/python/retrace/interpreter.py +++ /dev/null @@ -1,733 +0,0 @@ -#!/usr/bin/env python -########################################################################## -# -# Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. -# All Rights Reserved. -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sub license, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice (including the -# next paragraph) shall be included in all copies or substantial portions -# of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -# IN NO EVENT SHALL TUNGSTEN GRAPHICS 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. -# -########################################################################## - - -import sys -import struct - -import gallium -import model -import parse as parser - - -try: - from struct import unpack_from -except ImportError: - def unpack_from(fmt, buf, offset=0): - size = struct.calcsize(fmt) - return struct.unpack(fmt, buf[offset:offset + size]) - - -def make_image(ctx, surface, x=None, y=None, w=None, h=None): - if x is None: - x = 0 - if y is None: - y = 0 - if w is None: - w = surface.width - x - if h is None: - h = surface.height - y - data = ctx.surface_read_rgba8(surface, x, y, surface.width, surface.height) - - import Image - outimage = Image.fromstring('RGBA', (w, h), data, "raw", 'RGBA', 0, 1) - return outimage - -def save_image(ctx, filename, surface, x=None, y=None, w=None, h=None): - outimage = make_image(ctx, surface, x, y, w, h) - outimage.save(filename, "PNG") - -def show_image(ctx, surface, title, x=None, y=None, w=None, h=None): - outimage = make_image(ctx, surface, x, y, w, h) - - import Tkinter as tk - from PIL import Image, ImageTk - root = tk.Tk() - - root.title(title) - - image1 = ImageTk.PhotoImage(outimage) - w = image1.width() - h = image1.height() - x = 100 - y = 100 - root.geometry("%dx%d+%d+%d" % (w, h, x, y)) - panel1 = tk.Label(root, image=image1) - panel1.pack(side='top', fill='both', expand='yes') - panel1.image = image1 - root.mainloop() - - -class Struct: - """C-like struct""" - - # A basic Python class can pass as a C-like structure - pass - - -struct_factories = { - "pipe_blend_color": gallium.BlendColor, - "pipe_blend_state": gallium.Blend, - #"pipe_clip_state": gallium.Clip, - #"pipe_buffer": gallium.Buffer, - "pipe_depth_state": gallium.Depth, - "pipe_stencil_state": gallium.Stencil, - "pipe_alpha_state": gallium.Alpha, - "pipe_depth_stencil_alpha_state": gallium.DepthStencilAlpha, - #"pipe_framebuffer_state": gallium.Framebuffer, - "pipe_poly_stipple": gallium.PolyStipple, - "pipe_rasterizer_state": gallium.Rasterizer, - "pipe_sampler_state": gallium.Sampler, - "pipe_scissor_state": gallium.Scissor, - #"pipe_shader_state": gallium.Shader, - #"pipe_vertex_buffer": gallium.VertexBuffer, - "pipe_vertex_element": gallium.VertexElement, - "pipe_viewport_state": gallium.Viewport, - #"pipe_texture": gallium.Texture, - 'pipe_subresource': gallium.pipe_subresource, - 'pipe_box': gallium.pipe_box, - 'pipe_draw_info': gallium.pipe_draw_info, -} - - -member_array_factories = { - #"pipe_rasterizer_state": {"sprite_coord_mode": gallium.ByteArray}, - "pipe_poly_stipple": {"stipple": gallium.UnsignedArray}, - "pipe_viewport_state": {"scale": gallium.FloatArray, "translate": gallium.FloatArray}, - #"pipe_clip_state": {"ucp": gallium.FloatArray}, - "pipe_depth_stencil_alpha_state": {"stencil": gallium.StencilArray}, - "pipe_blend_color": {"color": gallium.FloatArray}, - "pipe_sampler_state": {"border_color": gallium.FloatArray}, -} - - -class Translator(model.Visitor): - """Translate model arguments into regular Python objects""" - - def __init__(self, interpreter): - self.interpreter = interpreter - self.result = None - - def visit(self, node): - self.result = None - node.visit(self) - return self.result - - def visit_literal(self, node): - self.result = node.value - - def visit_named_constant(self, node): - # lookup the named constant in the gallium module - self.result = getattr(gallium, node.name) - - def visit_array(self, node): - array = [] - for element in node.elements: - array.append(self.visit(element)) - self.result = array - - def visit_struct(self, node): - struct_factory = struct_factories.get(node.name, Struct) - struct = struct_factory() - for member_name, member_node in node.members: - member_value = self.visit(member_node) - try: - array_factory = member_array_factories[node.name][member_name] - except KeyError: - pass - else: - assert isinstance(member_value, list) - array = array_factory(len(member_value)) - for i in range(len(member_value)): - array[i] = member_value[i] - member_value = array - #print node.name, member_name, member_value - assert isinstance(struct, Struct) or hasattr(struct, member_name) - setattr(struct, member_name, member_value) - self.result = struct - - def visit_pointer(self, node): - self.result = self.interpreter.lookup_object(node.address) - - -class Object: - - def __init__(self, interpreter, real): - self.interpreter = interpreter - self.real = real - - -class Global(Object): - - def __init__(self, interpreter, real): - self.interpreter = interpreter - self.real = real - - def pipe_screen_create(self): - real = gallium.Device() - return Screen(self.interpreter, real) - - def pipe_context_create(self, screen): - context = screen.real.context_create() - return Context(self.interpreter, context) - - -class Transfer: - - def __init__(self, resource, usage, subresource, box): - self.resource = resource - self.usage = usage - self.subresource = subresource - self.box = box - - -class Screen(Object): - - def __init__(self, interpreter, real): - Object.__init__(self, interpreter, real) - self.context = self.real.context_create() - - def destroy(self): - pass - - def get_name(self): - pass - - def get_vendor(self): - pass - - def get_param(self, param): - pass - - def get_paramf(self, param): - pass - - def context_create(self): - context = self.real.context_create() - return Context(self.interpreter, context) - - def is_format_supported(self, format, target, sample_count, bind, geom_flags): - return self.real.is_format_supported(format, target, sample_count, bind, geom_flags) - - def resource_create(self, templat): - return self.real.resource_create( - format = templat.format, - width = templat.width, - height = templat.height, - depth = templat.depth, - last_level = templat.last_level, - target = templat.target, - bind = templat.bind, - ) - - def texture_destroy(self, texture): - self.interpreter.unregister_object(texture) - - def texture_release(self, surface): - pass - - def tex_surface_release(self, surface): - pass - - def user_buffer_create(self, data, size, usage): - bind = usage - # We don't really care to distinguish between user and regular buffers - buffer = self.real.buffer_create(size, bind) - assert size == len(data) - self.context.buffer_write(buffer, data) - return buffer - - def buffer_create(self, alignment, usage, size): - return self.real.buffer_create(size, alignment, usage) - - def buffer_destroy(self, buffer): - pass - - def fence_finish(self, fence, flags): - pass - - def fence_reference(self, dst, src): - pass - - def flush_frontbuffer(self, resource): - pass - - -class Context(Object): - - def __init__(self, interpreter, real): - Object.__init__(self, interpreter, real) - self.cbufs = [] - self.zsbuf = None - self.vbufs = [] - self.velems = [] - self.dirty = False - - def destroy(self): - pass - - def create_blend_state(self, state): - if isinstance(state, str): - state = gallium.Blend(state) - sys.stdout.write('\t%s\n' % state) - return state - - def bind_blend_state(self, state): - if state is not None: - self.real.set_blend(state) - - def delete_blend_state(self, state): - pass - - def create_sampler_state(self, state): - return state - - def delete_sampler_state(self, state): - pass - - def bind_vertex_sampler_states(self, num_states, states): - for i in range(num_states): - self.real.set_vertex_sampler(i, states[i]) - - def bind_fragment_sampler_states(self, num_states, states): - for i in range(num_states): - self.real.set_fragment_sampler(i, states[i]) - - def create_rasterizer_state(self, state): - return state - - def bind_rasterizer_state(self, state): - if state is not None: - self.real.set_rasterizer(state) - - def delete_rasterizer_state(self, state): - pass - - def create_depth_stencil_alpha_state(self, state): - return state - - def bind_depth_stencil_alpha_state(self, state): - if state is not None: - self.real.set_depth_stencil_alpha(state) - - def delete_depth_stencil_alpha_state(self, state): - pass - - def create_fs_state(self, state): - tokens = str(state.tokens) - shader = gallium.Shader(tokens) - return shader - - create_vs_state = create_fs_state - - def bind_fs_state(self, state): - self.real.set_fragment_shader(state) - - def bind_vs_state(self, state): - self.real.set_vertex_shader(state) - - def delete_fs_state(self, state): - pass - - delete_vs_state = delete_fs_state - - def set_blend_color(self, state): - self.real.set_blend_color(state) - - def set_stencil_ref(self, state): - self.real.set_stencil_ref(state) - - def set_clip_state(self, state): - _state = gallium.Clip() - _state.nr = state.nr - if state.nr: - # FIXME - ucp = gallium.FloatArray(gallium.PIPE_MAX_CLIP_PLANES*4) - for i in range(len(state.ucp)): - for j in range(len(state.ucp[i])): - ucp[i*4 + j] = state.ucp[i][j] - _state.ucp = ucp - self.real.set_clip(_state) - - def dump_constant_buffer(self, buffer): - if not self.interpreter.verbosity(2): - return - - data = self.real.buffer_read(buffer) - format = '4f' - index = 0 - for offset in range(0, len(data), struct.calcsize(format)): - x, y, z, w = unpack_from(format, data, offset) - sys.stdout.write('\tCONST[%2u] = {%10.4f, %10.4f, %10.4f, %10.4f}\n' % (index, x, y, z, w)) - index += 1 - sys.stdout.flush() - - def set_constant_buffer(self, shader, index, buffer): - if buffer is not None: - self.real.set_constant_buffer(shader, index, buffer) - - self.dump_constant_buffer(buffer) - - def set_framebuffer_state(self, state): - _state = gallium.Framebuffer() - _state.width = state.width - _state.height = state.height - _state.nr_cbufs = state.nr_cbufs - for i in range(len(state.cbufs)): - _state.set_cbuf(i, state.cbufs[i]) - _state.set_zsbuf(state.zsbuf) - self.real.set_framebuffer(_state) - - self.cbufs = state.cbufs - self.zsbuf = state.zsbuf - - def set_polygon_stipple(self, state): - self.real.set_polygon_stipple(state) - - def set_scissor_state(self, state): - self.real.set_scissor(state) - - def set_viewport_state(self, state): - self.real.set_viewport(state) - - def create_sampler_view(self, texture, templ): - return self.real.create_sampler_view(texture, - format = templ.format, - first_level = templ.first_level, - last_level = templ.last_level, - swizzle_r = templ.swizzle_r, - swizzle_g = templ.swizzle_r, - swizzle_b = templ.swizzle_g, - swizzle_a = templ.swizzle_a) - - def sampler_view_destroy(self, view): - pass - - def set_fragment_sampler_views(self, num, views): - for i in range(num): - self.real.set_fragment_sampler_view(i, views[i]) - - def set_vertex_sampler_views(self, num, views): - for i in range(num): - self.real.set_vertex_sampler_view(i, views[i]) - - def set_vertex_buffers(self, num_buffers, buffers): - self.vbufs = buffers[0:num_buffers] - for i in range(num_buffers): - vbuf = buffers[i] - self.real.set_vertex_buffer( - i, - stride = vbuf.stride, - max_index = vbuf.max_index, - buffer_offset = vbuf.buffer_offset, - buffer = vbuf.buffer, - ) - - def create_vertex_elements_state(self, num_elements, elements): - return elements[0:num_elements] - - def bind_vertex_elements_state(self, state): - if state is None: - self.real.set_vertex_elements(0) - return - - elements = state - num_elements = len(elements) - self.velems = elements - for i in range(num_elements): - self.real.set_vertex_element(i, elements[i]) - self.real.set_vertex_elements(num_elements) - - def delete_vertex_elements_state(self, state): - pass - - def dump_vertices(self, start, count): - if not self.interpreter.verbosity(2): - return - - for index in range(start, start + count): - if index >= start + 16: - sys.stdout.write('\t...\n') - break - sys.stdout.write('\t{\n') - for velem in self.velems: - vbuf = self.vbufs[velem.vertex_buffer_index] - - offset = vbuf.buffer_offset + velem.src_offset + vbuf.stride*index - format = { - gallium.PIPE_FORMAT_R32_FLOAT: 'f', - gallium.PIPE_FORMAT_R32G32_FLOAT: '2f', - gallium.PIPE_FORMAT_R32G32B32_FLOAT: '3f', - gallium.PIPE_FORMAT_R32G32B32A32_FLOAT: '4f', - gallium.PIPE_FORMAT_A8R8G8B8_UNORM: '4B', - gallium.PIPE_FORMAT_R8G8B8A8_UNORM: '4B', - gallium.PIPE_FORMAT_B8G8R8A8_UNORM: '4B', - gallium.PIPE_FORMAT_R16G16B16_SNORM: '3h', - }[velem.src_format] - - data = self.real.buffer_read(vbuf.buffer) - values = unpack_from(format, data, offset) - sys.stdout.write('\t\t{' + ', '.join(map(str, values)) + '},\n') - sys.stdout.write('\t},\n') - sys.stdout.flush() - - def dump_indices(self, ibuf, isize, ibias, start, count): - if not self.interpreter.verbosity(2): - return - - format = { - 1: 'B', - 2: 'H', - 4: 'I', - }[isize] - - assert struct.calcsize(format) == isize - - data = self.real.buffer_read(ibuf) - maxindex, minindex = 0, 0xffffffff - - sys.stdout.write('\t{\n') - for i in range(start, start + count): - if i >= start + 16 and not self.interpreter.verbosity(3): - sys.stdout.write('\t...\n') - break - offset = i*isize - index, = unpack_from(format, data, offset) - sys.stdout.write('\t\t%u,\n' % index) - minindex = min(minindex, index) - maxindex = max(maxindex, index) - sys.stdout.write('\t},\n') - sys.stdout.flush() - - return minindex + ibias, maxindex + ibias - - def set_index_buffer(self, ib): - if ib: - self.real.set_index_buffer(ib.index_size, ib.offset, ib.buffer) - else: - self.real.set_index_buffer(0, 0, None) - - def draw_vbo(self, info): - if self.interpreter.verbosity(2): - if 0: - minindex, maxindex = self.dump_indices(indexBuffer, indexSize, indexBias, start, count) - - self.dump_vertices(info.minindex, info.maxindex + 1 - info.minindex) - - self.real.draw_vbo(info) - self._set_dirty() - - def resource_copy_region(self, dst, subdst, dstx, dsty, dstz, src, subsrc, srcx, srcy, srcz, width, height): - if dst is not None and src is not None: - if self.interpreter.options.all: - self.interpreter.present(self.real, src, 'resource_copy_src', srcx, srcy, width, height) - self.real.resource_copy_region(dst, subdst, dstx, dsty, dstx, src, subsrc, srcx, srcy, srcz, width, height) - flags = 0 - self.flush(flags) - if self.interpreter.options.all: - self.interpreter.present(self.real, dst, 'resource_copy_dst', dstx, dsty, width, height) - - def is_resource_referenced(self, texture, face, level): - #return self.real.is_resource_referenced(format, texture, face, level) - pass - - def buffer_write(self, buffer, data, size, offset=0): - assert size == len(data) - self.buffer_write(buffer, data) - - def surface_write(self, surface, data, stride, size): - if surface is None: - return -# assert surface.nblocksy * stride == size - surface.put_tile_raw(0, 0, surface.width, surface.height, data, stride) - - def get_transfer(self, texture, sr, usage, box): - if texture is None: - return None - transfer = Transfer(texture, sr, usage, box) - if transfer and usage & gallium.PIPE_TRANSFER_READ: - if self.interpreter.options.all: - surface = texture.get_surface(sr.face, sr.level, box.z) - self.interpreter.present(self.real, transfer.surface, 'transf_read', box.x, box.y, box.width, box.height) - return transfer - - def tex_transfer_destroy(self, transfer): - self.interpreter.unregister_object(transfer) - - def transfer_inline_write(self, resource, sr, usage, box, stride, slice_stride, data): - self.real.transfer_inline_write(resource, sr, usage, box, data, stride, slice_stride) - if self.interpreter.options.all: - for z in range(box.z, box.z + box.depth): - surface = resource.get_surface(sr.face, sr.level, box.z) - self.interpreter.present(self.real, surface, 'transf_inline_write%u' % z, box.x, box.y, box.width, box.height) - - def _set_dirty(self): - if self.interpreter.options.step: - self._present() - else: - self.dirty = True - - def flush(self, flags): - self.real.flush(flags) - if self.dirty: - if flags & gallium.PIPE_FLUSH_FRAME: - self._present() - self.dirty = False - return None - - def clear(self, buffers, rgba, depth, stencil): - _rgba = gallium.FloatArray(4) - for i in range(4): - _rgba[i] = rgba[i] - self.real.clear(buffers, _rgba, depth, stencil) - - def clear_render_target(self, dst, rgba, dstx, dsty, width, height): - _rgba = gallium.FloatArray(4) - for i in range(4): - _rgba[i] = rgba[i] - self.real.clear_render_target(dst, _rgba, dstx, dsty, width, height) - - def clear_depth_stencil(self, dst, clear_flags, depth, stencil, dstx, dsty, width, height): - self.real.clear_depth_stencil(dst, clear_flags, depth, stencil, dstx, dsty, width, height) - - def _present(self): - self.real.flush() - - if self.cbufs and self.cbufs[0]: - self.interpreter.present(self.real, self.cbufs[0], "cbuf") - if self.zsbuf: - if self.interpreter.options.all: - self.interpreter.present(self.real, self.zsbuf, "zsbuf") - def create_surface(self, texture, level, layer, usage): - if texture is None: - return None - return texture.get_surface(level, layer) - - def surface_destroy(self, surface): - self.interpreter.unregister_object(surface) - -class Interpreter(parser.TraceDumper): - - ignore_calls = set(( - ('pipe_screen', 'is_format_supported'), - ('pipe_screen', 'get_param'), - ('pipe_screen', 'get_paramf'), - )) - - def __init__(self, stream, options): - parser.TraceDumper.__init__(self, stream) - self.options = options - self.objects = {} - self.result = None - self.globl = Global(self, None) - self.call_no = None - - def register_object(self, address, object): - self.objects[address] = object - - def unregister_object(self, object): - # FIXME: - pass - - def lookup_object(self, address): - return self.objects[address] - - def interpret(self, trace): - for call in trace.calls: - self.interpret_call(call) - - def handle_call(self, call): - if self.options.stop and call.no > self.options.stop: - sys.exit(0) - - if (call.klass, call.method) in self.ignore_calls: - return - - self.call_no = call.no - - if self.verbosity(1): - parser.TraceDumper.handle_call(self, call) - sys.stdout.flush() - - args = [(str(name), self.interpret_arg(arg)) for name, arg in call.args] - - if call.klass: - name, obj = args[0] - args = args[1:] - else: - obj = self.globl - - method = getattr(obj, call.method) - ret = method(**dict(args)) - - if call.ret and isinstance(call.ret, model.Pointer): - if ret is None: - sys.stderr.write('warning: NULL returned\n') - self.register_object(call.ret.address, ret) - - self.call_no = None - - def interpret_arg(self, node): - translator = Translator(self) - return translator.visit(node) - - def verbosity(self, level): - return self.options.verbosity >= level - - def present(self, ctx, surface, description, x=None, y=None, w=None, h=None): - if self.call_no < self.options.start: - return - - if self.options.images: - filename = '%04u_%s.png' % (self.call_no, description) - save_image(ctx, filename, surface, x, y, w, h) - else: - title = '%u. %s' % (self.call_no, description) - show_image(ctx, surface, title, x, y, w, h) - - -class Main(parser.Main): - - def get_optparser(self): - optparser = parser.Main.get_optparser(self) - optparser.add_option("-q", "--quiet", action="store_const", const=0, dest="verbosity", help="no messages") - optparser.add_option("-v", "--verbose", action="count", dest="verbosity", default=1, help="increase verbosity level") - optparser.add_option("-i", "--images", action="store_true", dest="images", default=False, help="save images instead of showing them") - optparser.add_option("-a", "--all", action="store_true", dest="all", default=False, help="show depth, stencil, and transfers") - optparser.add_option("-s", "--step", action="store_true", dest="step", default=False, help="step trhough every draw") - optparser.add_option("-f", "--from", action="store", type="int", dest="start", default=0, help="from call no") - optparser.add_option("-t", "--to", action="store", type="int", dest="stop", default=0, help="until call no") - return optparser - - def process_arg(self, stream, options): - parser = Interpreter(stream, options) - parser.parse() - - -if __name__ == '__main__': - Main().main() diff --git a/src/gallium/tests/python/tests/surface_copy.py b/src/gallium/tests/python/tests/surface_copy.py deleted file mode 100755 index 7a6ede38044..00000000000 --- a/src/gallium/tests/python/tests/surface_copy.py +++ /dev/null @@ -1,201 +0,0 @@ -#!/usr/bin/env python -########################################################################## -# -# Copyright 2009 VMware, Inc. -# All Rights Reserved. -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sub license, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice (including the -# next paragraph) shall be included in all copies or substantial portions -# of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -# IN NO EVENT SHALL VMWARE 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. -# -########################################################################## - - -import os -import random - -from gallium import * -from base import * - - -def lods(*dims): - size = max(dims) - lods = 0 - while size: - lods += 1 - size >>= 1 - return lods - - -class TextureTest(TestCase): - - tags = ( - 'target', - 'format', - 'width', - 'height', - 'depth', - 'last_level', - 'face', - 'level', - 'zslice', - ) - - def test(self): - dev = self.dev - ctx = self.ctx - - target = self.target - format = self.format - width = self.width - height = self.height - depth = self.depth - last_level = self.last_level - face = self.face - level = self.level - zslice = self.zslice - - bind = PIPE_BIND_SAMPLER_VIEW - geom_flags = 0 - sample_count = 0 - if not dev.is_format_supported(format, target, sample_count, bind, geom_flags): - raise TestSkip - - if not dev.is_format_supported(format, target, sample_count, bind, geom_flags): - raise TestSkip - - # textures - dst_texture = dev.resource_create( - target = target, - format = format, - width = width, - height = height, - depth = depth, - last_level = last_level, - bind = bind, - ) - - dst_surface = dst_texture.get_surface(face = face, level = level, zslice = zslice) - - src_texture = dev.resource_create( - target = target, - format = format, - width = dst_surface.width, - height = dst_surface.height, - depth = 1, - last_level = 0, - bind = PIPE_BIND_SAMPLER_VIEW, - ) - - src_surface = src_texture.get_surface() - - w = dst_surface.width - h = dst_surface.height - - stride = util_format_get_stride(format, w) - size = util_format_get_nblocksy(format, h) * stride - src_raw = os.urandom(size) - - ctx.surface_write_raw(src_surface, 0, 0, w, h, src_raw, stride) - - ctx.surface_copy(dst_surface, 0, 0, - src_surface, 0, 0, w, h) - - dst_raw = ctx.surface_read_raw(dst_surface, 0, 0, w, h) - - if dst_raw != src_raw: - raise TestFailure - - -def main(): - dev = Device() - ctx = dev.context_create() - suite = TestSuite() - - targets = [ - PIPE_TEXTURE_2D, - PIPE_TEXTURE_CUBE, - PIPE_TEXTURE_3D, - ] - - sizes = [64, 32, 16, 8, 4, 2, 1] - #sizes = [1020, 508, 252, 62, 30, 14, 6, 3] - #sizes = [64] - #sizes = [63] - - faces = [ - PIPE_TEX_FACE_POS_X, - PIPE_TEX_FACE_NEG_X, - PIPE_TEX_FACE_POS_Y, - PIPE_TEX_FACE_NEG_Y, - PIPE_TEX_FACE_POS_Z, - PIPE_TEX_FACE_NEG_Z, - ] - - try: - n = int(sys.argv[1]) - except: - n = 10000 - - for i in range(n): - format = random.choice(formats.keys()) - if not util_format_is_depth_or_stencil(format): - is_depth_or_stencil = util_format_is_depth_or_stencil(format) - - if is_depth_or_stencil: - target = PIPE_TEXTURE_2D - else: - target = random.choice(targets) - - size = random.choice(sizes) - - if target == PIPE_TEXTURE_3D: - depth = size - else: - depth = 1 - - if target == PIPE_TEXTURE_CUBE: - face = random.choice(faces) - else: - face = PIPE_TEX_FACE_POS_X - - levels = lods(size) - last_level = random.randint(0, levels - 1) - level = random.randint(0, last_level) - zslice = random.randint(0, max(depth >> level, 1) - 1) - - test = TextureTest( - dev = dev, - ctx = ctx, - target = target, - format = format, - width = size, - height = size, - depth = depth, - last_level = last_level, - face = face, - level = level, - zslice = zslice, - ) - suite.add_test(test) - suite.run() - - -if __name__ == '__main__': - main() diff --git a/src/gallium/tests/python/tests/texture_blit.py b/src/gallium/tests/python/tests/texture_blit.py deleted file mode 100755 index 089d05c6237..00000000000 --- a/src/gallium/tests/python/tests/texture_blit.py +++ /dev/null @@ -1,638 +0,0 @@ -#!/usr/bin/env python -########################################################################## -# -# Copyright 2009 VMware, Inc. -# Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. -# All Rights Reserved. -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sub license, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice (including the -# next paragraph) shall be included in all copies or substantial portions -# of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -# IN NO EVENT SHALL VMWARE 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. -# -########################################################################## - - -import random - -from gallium import * -from base import * - - -def lods(*dims): - size = max(dims) - lods = 0 - while size: - lods += 1 - size >>= 1 - return lods - - -def minify(dims, level = 1): - return [max(dim>>level, 1) for dim in dims] - - -def tex_coords(texture, face, level, zslice): - st = [ - [0.0, 0.0], - [1.0, 0.0], - [1.0, 1.0], - [0.0, 1.0], - ] - - if texture.target == PIPE_TEXTURE_2D or texture.target == PIPE_TEXTURE_RECT: - return [[s, t, 0.0] for s, t in st] - elif texture.target == PIPE_TEXTURE_3D: - depth = texture.get_depth(level) - if depth > 1: - r = float(zslice)/float(depth - 1) - else: - r = 0.0 - return [[s, t, r] for s, t in st] - elif texture.target == PIPE_TEXTURE_CUBE: - result = [] - for s, t in st: - # See http://developer.nvidia.com/object/cube_map_ogl_tutorial.html - sc = 2.0*s - 1.0 - tc = 2.0*t - 1.0 - if face == PIPE_TEX_FACE_POS_X: - rx = 1.0 - ry = -tc - rz = -sc - if face == PIPE_TEX_FACE_NEG_X: - rx = -1.0 - ry = -tc - rz = sc - if face == PIPE_TEX_FACE_POS_Y: - rx = sc - ry = 1.0 - rz = tc - if face == PIPE_TEX_FACE_NEG_Y: - rx = sc - ry = -1.0 - rz = -tc - if face == PIPE_TEX_FACE_POS_Z: - rx = sc - ry = -tc - rz = 1.0 - if face == PIPE_TEX_FACE_NEG_Z: - rx = -sc - ry = -tc - rz = -1.0 - result.append([rx, ry, rz]) - return result - -def is_pot(n): - return n & (n - 1) == 0 - - -class TextureColorSampleTest(TestCase): - - tags = ( - 'target', - 'format', - 'width', - 'height', - 'depth', - 'last_level', - 'face', - 'level', - 'zslice', - ) - - def test(self): - dev = self.dev - ctx = self.ctx - - target = self.target - format = self.format - width = self.width - height = self.height - depth = self.depth - last_level = self.last_level - face = self.face - level = self.level - zslice = self.zslice - minz = 0.0 - maxz = 1.0 - - bind = PIPE_BIND_SAMPLER_VIEW - geom_flags = 0 - sample_count = 0 - if width != height: - geom_flags |= PIPE_TEXTURE_GEOM_NON_SQUARE - if not is_pot(width) or not is_pot(height) or not is_pot(depth): - geom_flags |= PIPE_TEXTURE_GEOM_NON_POWER_OF_TWO - - if not dev.is_format_supported(format, target, sample_count, bind, geom_flags): - raise TestSkip - - # disabled blending/masking - blend = Blend() - blend.rt[0].rgb_src_factor = PIPE_BLENDFACTOR_ONE - blend.rt[0].alpha_src_factor = PIPE_BLENDFACTOR_ONE - blend.rt[0].rgb_dst_factor = PIPE_BLENDFACTOR_ZERO - blend.rt[0].alpha_dst_factor = PIPE_BLENDFACTOR_ZERO - blend.rt[0].colormask = PIPE_MASK_RGBA - ctx.set_blend(blend) - - # no-op depth/stencil/alpha - depth_stencil_alpha = DepthStencilAlpha() - ctx.set_depth_stencil_alpha(depth_stencil_alpha) - - # rasterizer - rasterizer = Rasterizer() - rasterizer.front_winding = PIPE_WINDING_CW - rasterizer.cull_mode = PIPE_WINDING_NONE - ctx.set_rasterizer(rasterizer) - - # samplers - sampler = Sampler() - sampler.wrap_s = PIPE_TEX_WRAP_CLAMP_TO_EDGE - sampler.wrap_t = PIPE_TEX_WRAP_CLAMP_TO_EDGE - sampler.wrap_r = PIPE_TEX_WRAP_CLAMP_TO_EDGE - sampler.min_mip_filter = PIPE_TEX_MIPFILTER_NEAREST - sampler.min_img_filter = PIPE_TEX_MIPFILTER_NEAREST - sampler.mag_img_filter = PIPE_TEX_MIPFILTER_NEAREST - sampler.normalized_coords = 1 - sampler.min_lod = 0 - sampler.max_lod = PIPE_MAX_TEXTURE_LEVELS - 1 - ctx.set_fragment_sampler(0, sampler) - - # texture - texture = dev.resource_create( - target = target, - format = format, - width = width, - height = height, - depth = depth, - last_level = last_level, - bind = bind, - ) - - expected_rgba = FloatArray(height*width*4) - surface = texture.get_surface( - face = face, - level = level, - zslice = zslice, - ) - - ctx.surface_sample_rgba(surface, expected_rgba, True) - - ctx.set_fragment_sampler_texture(0, texture) - - # viewport - viewport = Viewport() - scale = FloatArray(4) - scale[0] = width - scale[1] = height - scale[2] = (maxz - minz) / 2.0 - scale[3] = 1.0 - viewport.scale = scale - translate = FloatArray(4) - translate[0] = 0.0 - translate[1] = 0.0 - translate[2] = (maxz - minz) / 2.0 - translate[3] = 0.0 - viewport.translate = translate - ctx.set_viewport(viewport) - - # scissor - scissor = Scissor() - scissor.minx = 0 - scissor.miny = 0 - scissor.maxx = width - scissor.maxy = height - ctx.set_scissor(scissor) - - # clip - clip = Clip() - clip.nr = 0 - ctx.set_clip(clip) - - # framebuffer - cbuf_tex = dev.resource_create( - PIPE_FORMAT_B8G8R8A8_UNORM, - width, - height, - bind = PIPE_BIND_RENDER_TARGET, - ) - - cbuf = cbuf_tex.get_surface() - fb = Framebuffer() - fb.width = width - fb.height = height - fb.nr_cbufs = 1 - fb.set_cbuf(0, cbuf) - ctx.set_framebuffer(fb) - rgba = FloatArray(4); - rgba[0] = 0.5 - rgba[1] = 0.5 - rgba[2] = 0.5 - rgba[3] = 0.5 - ctx.clear(PIPE_CLEAR_COLOR, rgba, 0.0, 0) - del fb - - # vertex shader - vs = Shader(''' - VERT - DCL IN[0], POSITION, CONSTANT - DCL IN[1], GENERIC, CONSTANT - DCL OUT[0], POSITION, CONSTANT - DCL OUT[1], GENERIC, CONSTANT - 0:MOV OUT[0], IN[0] - 1:MOV OUT[1], IN[1] - 2:END - ''') - #vs.dump() - ctx.set_vertex_shader(vs) - - # fragment shader - op = { - PIPE_TEXTURE_1D: "1D", - PIPE_TEXTURE_2D: "2D", - PIPE_TEXTURE_3D: "3D", - PIPE_TEXTURE_CUBE: "CUBE", - }[target] - fs = Shader(''' - FRAG - DCL IN[0], GENERIC[0], LINEAR - DCL OUT[0], COLOR, CONSTANT - DCL SAMP[0], CONSTANT - 0:TEX OUT[0], IN[0], SAMP[0], %s - 1:END - ''' % op) - #fs.dump() - ctx.set_fragment_shader(fs) - - nverts = 4 - nattrs = 2 - verts = FloatArray(nverts * nattrs * 4) - - x = 0 - y = 0 - w, h = minify((width, height), level) - - pos = [ - [x, y], - [x+w, y], - [x+w, y+h], - [x, y+h], - ] - - tex = tex_coords(texture, face, level, zslice) - - for i in range(0, 4): - j = 8*i - verts[j + 0] = pos[i][0]/float(width) # x - verts[j + 1] = pos[i][1]/float(height) # y - verts[j + 2] = 0.0 # z - verts[j + 3] = 1.0 # w - verts[j + 4] = tex[i][0] # s - verts[j + 5] = tex[i][1] # r - verts[j + 6] = tex[i][2] # q - verts[j + 7] = 1.0 - - ctx.draw_vertices(PIPE_PRIM_TRIANGLE_FAN, - nverts, - nattrs, - verts) - - ctx.flush() - - cbuf = cbuf_tex.get_surface() - - self.assert_rgba(ctx, cbuf, x, y, w, h, expected_rgba, 4.0/256, 0.85) - - -class TextureDepthSampleTest(TestCase): - - tags = ( - 'target', - 'format', - 'width', - 'height', - 'depth', - 'last_level', - 'face', - 'level', - 'zslice', - ) - - def test(self): - dev = self.dev - ctx = self.ctx - - target = self.target - format = self.format - width = self.width - height = self.height - depth = self.depth - last_level = self.last_level - face = self.face - level = self.level - zslice = self.zslice - minz = 0.0 - maxz = 1.0 - - bind = PIPE_BIND_SAMPLER_VIEW - geom_flags = 0 - sample_count = 0 - if width != height: - geom_flags |= PIPE_TEXTURE_GEOM_NON_SQUARE - if not is_pot(width) or not is_pot(height) or not is_pot(depth): - geom_flags |= PIPE_TEXTURE_GEOM_NON_POWER_OF_TWO - - if not dev.is_format_supported(format, target, sample_count, bind, geom_flags): - raise TestSkip - - # disabled blending/masking - blend = Blend() - blend.rt[0].rgb_src_factor = PIPE_BLENDFACTOR_ONE - blend.rt[0].alpha_src_factor = PIPE_BLENDFACTOR_ONE - blend.rt[0].rgb_dst_factor = PIPE_BLENDFACTOR_ZERO - blend.rt[0].alpha_dst_factor = PIPE_BLENDFACTOR_ZERO - blend.rt[0].colormask = PIPE_MASK_RGBA - ctx.set_blend(blend) - - # depth/stencil/alpha - depth_stencil_alpha = DepthStencilAlpha() - depth_stencil_alpha.depth.enabled = 1 - depth_stencil_alpha.depth.writemask = 1 - depth_stencil_alpha.depth.func = PIPE_FUNC_LESS - ctx.set_depth_stencil_alpha(depth_stencil_alpha) - - # rasterizer - rasterizer = Rasterizer() - rasterizer.front_winding = PIPE_WINDING_CW - rasterizer.cull_mode = PIPE_WINDING_NONE - ctx.set_rasterizer(rasterizer) - - # viewport - viewport = Viewport() - scale = FloatArray(4) - scale[0] = width - scale[1] = height - scale[2] = (maxz - minz) / 2.0 - scale[3] = 1.0 - viewport.scale = scale - translate = FloatArray(4) - translate[0] = 0.0 - translate[1] = 0.0 - translate[2] = (maxz - minz) / 2.0 - translate[3] = 0.0 - viewport.translate = translate - ctx.set_viewport(viewport) - - # samplers - sampler = Sampler() - sampler.wrap_s = PIPE_TEX_WRAP_CLAMP_TO_EDGE - sampler.wrap_t = PIPE_TEX_WRAP_CLAMP_TO_EDGE - sampler.wrap_r = PIPE_TEX_WRAP_CLAMP_TO_EDGE - sampler.min_mip_filter = PIPE_TEX_MIPFILTER_NEAREST - sampler.min_img_filter = PIPE_TEX_MIPFILTER_NEAREST - sampler.mag_img_filter = PIPE_TEX_MIPFILTER_NEAREST - sampler.normalized_coords = 1 - sampler.min_lod = 0 - sampler.max_lod = PIPE_MAX_TEXTURE_LEVELS - 1 - ctx.set_fragment_sampler(0, sampler) - - # texture - texture = dev.resource_create( - target = target, - format = format, - width = width, - height = height, - depth = depth, - last_level = last_level, - bind = bind, - ) - - expected_rgba = FloatArray(height*width*4) - surface = texture.get_surface( - face = face, - level = level, - zslice = zslice, - ) - - ctx.surface_sample_rgba(surface, expected_rgba, True) - - ctx.set_fragment_sampler_texture(0, texture) - - # scissor - scissor = Scissor() - scissor.minx = 0 - scissor.miny = 0 - scissor.maxx = width - scissor.maxy = height - ctx.set_scissor(scissor) - - # clip - clip = Clip() - clip.nr = 0 - ctx.set_clip(clip) - - # framebuffer - cbuf_tex = dev.resource_create( - PIPE_FORMAT_B8G8R8A8_UNORM, - width, - height, - bind = PIPE_BIND_RENDER_TARGET, - ) - - zsbuf_tex = dev.resource_create( - PIPE_FORMAT_X8Z24_UNORM, - width, - height, - bind = PIPE_BIND_RENDER_TARGET, - ) - - cbuf = cbuf_tex.get_surface() - zsbuf = zsbuf_tex.get_surface() - fb = Framebuffer() - fb.width = width - fb.height = height - fb.nr_cbufs = 1 - fb.set_cbuf(0, cbuf) - fb.set_zsbuf(zsbuf) - ctx.set_framebuffer(fb) - rgba = FloatArray(4); - rgba[0] = 0.5 - rgba[1] = 0.5 - rgba[2] = 0.5 - rgba[3] = 0.5 - ctx.clear(PIPE_CLEAR_DEPTHSTENCIL, rgba, 1.0, 0) - del fb - - # vertex shader - vs = Shader(''' - VERT - DCL IN[0], POSITION, CONSTANT - DCL IN[1], GENERIC, CONSTANT - DCL OUT[0], POSITION, CONSTANT - DCL OUT[1], GENERIC, CONSTANT - 0:MOV OUT[0], IN[0] - 1:MOV OUT[1], IN[1] - 2:END - ''') - #vs.dump() - ctx.set_vertex_shader(vs) - - # fragment shader - op = { - PIPE_TEXTURE_1D: "1D", - PIPE_TEXTURE_2D: "2D", - PIPE_TEXTURE_3D: "3D", - PIPE_TEXTURE_CUBE: "CUBE", - }[target] - fs = Shader(''' - FRAG - DCL IN[0], GENERIC[0], LINEAR - DCL SAMP[0], CONSTANT - DCL OUT[0].z, POSITION - 0:TEX OUT[0].z, IN[0], SAMP[0], %s - 1:END - ''' % op) - #fs.dump() - ctx.set_fragment_shader(fs) - - nverts = 4 - nattrs = 2 - verts = FloatArray(nverts * nattrs * 4) - - x = 0 - y = 0 - w, h = minify((width, height), level) - - pos = [ - [x, y], - [x+w, y], - [x+w, y+h], - [x, y+h], - ] - - tex = tex_coords(texture, face, level, zslice) - - for i in range(0, 4): - j = 8*i - verts[j + 0] = pos[i][0]/float(width) # x - verts[j + 1] = pos[i][1]/float(height) # y - verts[j + 2] = 0.0 # z - verts[j + 3] = 1.0 # w - verts[j + 4] = tex[i][0] # s - verts[j + 5] = tex[i][1] # r - verts[j + 6] = tex[i][2] # q - verts[j + 7] = 1.0 - - ctx.draw_vertices(PIPE_PRIM_TRIANGLE_FAN, - nverts, - nattrs, - verts) - - ctx.flush() - - zsbuf = zsbuf_tex.get_surface() - - self.assert_rgba(ctx, zsbuf, x, y, w, h, expected_rgba, 4.0/256, 0.85) - - - - -def main(): - random.seed(0xdead3eef) - - dev = Device() - ctx = dev.context_create() - suite = TestSuite() - - targets = [ - PIPE_TEXTURE_2D, - PIPE_TEXTURE_CUBE, - PIPE_TEXTURE_3D, - ] - - #sizes = [64, 32, 16, 8, 4, 2, 1] - #sizes = [1020, 508, 252, 62, 30, 14, 6, 3] - sizes = [64] - #sizes = [63] - - faces = [ - PIPE_TEX_FACE_POS_X, - PIPE_TEX_FACE_NEG_X, - PIPE_TEX_FACE_POS_Y, - PIPE_TEX_FACE_NEG_Y, - PIPE_TEX_FACE_POS_Z, - PIPE_TEX_FACE_NEG_Z, - ] - - try: - n = int(sys.argv[1]) - except: - n = 10000 - - for i in range(n): - format = random.choice(formats.keys()) - if not util_format_is_depth_or_stencil(format): - is_depth_or_stencil = util_format_is_depth_or_stencil(format) - - if is_depth_or_stencil: - target = PIPE_TEXTURE_2D - else: - target = random.choice(targets) - - size = random.choice(sizes) - - if target == PIPE_TEXTURE_3D: - depth = size - else: - depth = 1 - - if target == PIPE_TEXTURE_CUBE: - face = random.choice(faces) - else: - face = PIPE_TEX_FACE_POS_X - - levels = lods(size) - last_level = random.randint(0, levels - 1) - level = random.randint(0, last_level) - zslice = random.randint(0, max(depth >> level, 1) - 1) - - if is_depth_or_stencil: - klass = TextureDepthSampleTest - else: - klass = TextureColorSampleTest - - test = klass( - dev = dev, - ctx = ctx, - target = target, - format = format, - width = size, - height = size, - depth = depth, - last_level = last_level, - face = face, - level = level, - zslice = zslice, - ) - suite.add_test(test) - suite.run() - - -if __name__ == '__main__': - main() diff --git a/src/gallium/tests/python/tests/texture_transfer.py b/src/gallium/tests/python/tests/texture_transfer.py deleted file mode 100755 index 65c919bc64d..00000000000 --- a/src/gallium/tests/python/tests/texture_transfer.py +++ /dev/null @@ -1,182 +0,0 @@ -#!/usr/bin/env python -########################################################################## -# -# Copyright 2009 VMware, Inc. -# Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. -# All Rights Reserved. -# -# Permission is hereby granted, free of charge, to any person obtaining a -# copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sub license, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice (including the -# next paragraph) shall be included in all copies or substantial portions -# of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. -# IN NO EVENT SHALL VMWARE 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. -# -########################################################################## - - -import os -import random - -from gallium import * -from base import * - - -def lods(*dims): - size = max(dims) - lods = 0 - while size: - lods += 1 - size >>= 1 - return lods - - -class TextureTest(TestCase): - - tags = ( - 'target', - 'format', - 'width', - 'height', - 'depth', - 'last_level', - 'face', - 'level', - 'zslice', - ) - - def test(self): - dev = self.dev - ctx = self.ctx - - target = self.target - format = self.format - width = self.width - height = self.height - depth = self.depth - last_level = self.last_level - face = self.face - level = self.level - zslice = self.zslice - - bind = PIPE_BIND_SAMPLER_VIEW - geom_flags = 0 - sample_count = 0 - if not dev.is_format_supported(format, target, sample_count, bind, geom_flags): - raise TestSkip - - # textures - texture = dev.resource_create( - target = target, - format = format, - width = width, - height = height, - depth = depth, - last_level = last_level, - bind = bind, - ) - - surface = texture.get_surface(face, level, zslice) - - stride = util_format_get_stride(format, surface.width) - size = util_format_get_nblocksy(format, surface.height) * stride - - in_raw = os.urandom(size) - - ctx.surface_write_raw(surface, 0, 0, surface.width, surface.height, in_raw, stride) - - out_raw = ctx.surface_read_raw(surface, 0, 0, surface.width, surface.height) - - if in_raw != out_raw: - raise TestFailure - - -def main(): - dev = Device() - ctx = dev.context_create() - suite = TestSuite() - - targets = [ - PIPE_TEXTURE_2D, - PIPE_TEXTURE_CUBE, - PIPE_TEXTURE_3D, - ] - - sizes = [64, 32, 16, 8, 4, 2, 1] - #sizes = [1020, 508, 252, 62, 30, 14, 6, 3] - #sizes = [64] - #sizes = [63] - - faces = [ - PIPE_TEX_FACE_POS_X, - PIPE_TEX_FACE_NEG_X, - PIPE_TEX_FACE_POS_Y, - PIPE_TEX_FACE_NEG_Y, - PIPE_TEX_FACE_POS_Z, - PIPE_TEX_FACE_NEG_Z, - ] - - try: - n = int(sys.argv[1]) - except: - n = 10000 - - for i in range(n): - format = random.choice(formats.keys()) - if not util_format_is_depth_or_stencil(format): - is_depth_or_stencil = util_format_is_depth_or_stencil(format) - - if is_depth_or_stencil: - target = PIPE_TEXTURE_2D - else: - target = random.choice(targets) - - size = random.choice(sizes) - - if target == PIPE_TEXTURE_3D: - depth = size - else: - depth = 1 - - if target == PIPE_TEXTURE_CUBE: - face = random.choice(faces) - else: - face = PIPE_TEX_FACE_POS_X - - levels = lods(size) - last_level = random.randint(0, levels - 1) - level = random.randint(0, last_level) - zslice = random.randint(0, max(depth >> level, 1) - 1) - - test = TextureTest( - dev = dev, - ctx = ctx, - target = target, - format = format, - width = size, - height = size, - depth = depth, - last_level = last_level, - face = face, - level = level, - zslice = zslice, - ) - suite.add_test(test) - suite.run() - - -if __name__ == '__main__': - main() diff --git a/src/gallium/tests/unit/SConscript b/src/gallium/tests/unit/SConscript index 49f28c03691..edc1e80a412 100644 --- a/src/gallium/tests/unit/SConscript +++ b/src/gallium/tests/unit/SConscript @@ -19,13 +19,13 @@ progs = [ 'translate_test' ] -for prog in progs: +for progname in progs: prog = env.Program( - target = prog, - source = prog + '.c', + target = progname, + source = progname + '.c', ) - env.InstallProgram(prog) + env.Alias(progname, env.InstallProgram(prog)) # http://www.scons.org/wiki/UnitTests test_alias = env.Alias('unit', [prog], prog[0].abspath) diff --git a/src/gallium/tests/unit/translate_test.c b/src/gallium/tests/unit/translate_test.c index d0946a91a26..2976fb79227 100644 --- a/src/gallium/tests/unit/translate_test.c +++ b/src/gallium/tests/unit/translate_test.c @@ -57,6 +57,7 @@ int main(int argc, char** argv) unsigned char* byte_buffer; float* float_buffer; double* double_buffer; + unsigned * elts; unsigned count = 4; unsigned i, j, k; unsigned passed = 0; @@ -137,6 +138,8 @@ int main(int argc, char** argv) float_buffer = align_malloc(buffer_size, 4096); double_buffer = align_malloc(buffer_size, 4096); + elts = align_malloc(count * sizeof *elts, 4096); + key.nr_elements = 1; key.element[0].input_buffer = 0; key.element[0].input_offset = 0; @@ -156,6 +159,9 @@ int main(int argc, char** argv) for (i = 0; i < buffer_size / sizeof(double); ++i) double_buffer[i] = rand_double(); + for (i = 0; i < count; ++i) + elts[i] = i; + for (output_format = 1; output_format < PIPE_FORMAT_COUNT; ++output_format) { const struct util_format_description* output_format_desc = util_format_description(output_format); @@ -245,14 +251,14 @@ int main(int argc, char** argv) else buffer[0] = byte_buffer; - translate[0]->set_buffer(translate[0], 0, buffer[0], input_format_size, ~0); - translate[0]->run(translate[0], 0, count, 0, buffer[1]); - translate[1]->set_buffer(translate[1], 0, buffer[1], output_format_size, ~0); - translate[1]->run(translate[1], 0, count, 0, buffer[2]); - translate[0]->set_buffer(translate[0], 0, buffer[2], input_format_size, ~0); - translate[0]->run(translate[0], 0, count, 0, buffer[3]); - translate[1]->set_buffer(translate[1], 0, buffer[3], output_format_size, ~0); - translate[1]->run(translate[1], 0, count, 0, buffer[4]); + translate[0]->set_buffer(translate[0], 0, buffer[0], input_format_size, count - 1); + translate[0]->run_elts(translate[0], elts, count, 0, buffer[1]); + translate[1]->set_buffer(translate[1], 0, buffer[1], output_format_size, count - 1); + translate[1]->run_elts(translate[1], elts, count, 0, buffer[2]); + translate[0]->set_buffer(translate[0], 0, buffer[2], input_format_size, count - 1); + translate[0]->run_elts(translate[0], elts, count, 0, buffer[3]); + translate[1]->set_buffer(translate[1], 0, buffer[3], output_format_size, count - 1); + translate[1]->run_elts(translate[1], elts, count, 0, buffer[4]); for (i = 0; i < count; ++i) { diff --git a/src/gallium/tools/trace/dump.py b/src/gallium/tools/trace/dump.py new file mode 100755 index 00000000000..bd47c9a6b06 --- /dev/null +++ b/src/gallium/tools/trace/dump.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python +########################################################################## +# +# Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. +# All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sub license, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice (including the +# next paragraph) shall be included in all copies or substantial portions +# of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +# IN NO EVENT SHALL TUNGSTEN GRAPHICS 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. +# +########################################################################## + + +from parse import * + + +if __name__ == '__main__': + Main().main() diff --git a/src/gallium/tools/trace/format.py b/src/gallium/tools/trace/format.py new file mode 100755 index 00000000000..a4285bfe075 --- /dev/null +++ b/src/gallium/tools/trace/format.py @@ -0,0 +1,173 @@ +#!/usr/bin/env python +########################################################################## +# +# Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. +# All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sub license, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice (including the +# next paragraph) shall be included in all copies or substantial portions +# of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +# IN NO EVENT SHALL TUNGSTEN GRAPHICS 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. +# +########################################################################## + + +import sys + + +class Formatter: + '''Plain formatter''' + + def __init__(self, stream): + self.stream = stream + + def text(self, text): + self.stream.write(text) + + def newline(self): + self.text('\n') + + def function(self, name): + self.text(name) + + def variable(self, name): + self.text(name) + + def literal(self, value): + self.text(str(value)) + + def address(self, addr): + self.text(str(addr)) + + +class AnsiFormatter(Formatter): + '''Formatter for plain-text files which outputs ANSI escape codes. See + http://en.wikipedia.org/wiki/ANSI_escape_code for more information + concerning ANSI escape codes. + ''' + + _csi = '\33[' + + _normal = '0m' + _bold = '1m' + _italic = '3m' + _red = '31m' + _green = '32m' + _blue = '34m' + + def _escape(self, code): + self.text(self._csi + code) + + def function(self, name): + self._escape(self._bold) + Formatter.function(self, name) + self._escape(self._normal) + + def variable(self, name): + self._escape(self._italic) + Formatter.variable(self, name) + self._escape(self._normal) + + def literal(self, value): + self._escape(self._blue) + Formatter.literal(self, value) + self._escape(self._normal) + + def address(self, value): + self._escape(self._green) + Formatter.address(self, value) + self._escape(self._normal) + + +class WindowsConsoleFormatter(Formatter): + '''Formatter for the Windows Console. See + http://code.activestate.com/recipes/496901/ for more information. + ''' + + STD_INPUT_HANDLE = -10 + STD_OUTPUT_HANDLE = -11 + STD_ERROR_HANDLE = -12 + + FOREGROUND_BLUE = 0x01 + FOREGROUND_GREEN = 0x02 + FOREGROUND_RED = 0x04 + FOREGROUND_INTENSITY = 0x08 + BACKGROUND_BLUE = 0x10 + BACKGROUND_GREEN = 0x20 + BACKGROUND_RED = 0x40 + BACKGROUND_INTENSITY = 0x80 + + _normal = FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED + _bold = FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY + _italic = FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED + _red = FOREGROUND_RED | FOREGROUND_INTENSITY + _green = FOREGROUND_GREEN | FOREGROUND_INTENSITY + _blue = FOREGROUND_BLUE | FOREGROUND_INTENSITY + + def __init__(self, stream): + Formatter.__init__(self, stream) + + if stream is sys.stdin: + nStdHandle = self.STD_INPUT_HANDLE + elif stream is sys.stdout: + nStdHandle = self.STD_OUTPUT_HANDLE + elif stream is sys.stderr: + nStdHandle = self.STD_ERROR_HANDLE + else: + nStdHandle = None + + if nStdHandle: + import ctypes + self.handle = ctypes.windll.kernel32.GetStdHandle(nStdHandle) + else: + self.handle = None + + def _attribute(self, attr): + if self.handle: + import ctypes + ctypes.windll.kernel32.SetConsoleTextAttribute(self.handle, attr) + + def function(self, name): + self._attribute(self._bold) + Formatter.function(self, name) + self._attribute(self._normal) + + def variable(self, name): + self._attribute(self._italic) + Formatter.variable(self, name) + self._attribute(self._normal) + + def literal(self, value): + self._attribute(self._blue) + Formatter.literal(self, value) + self._attribute(self._normal) + + def address(self, value): + self._attribute(self._green) + Formatter.address(self, value) + self._attribute(self._normal) + + +def DefaultFormatter(stream): + if sys.platform in ('linux2', 'cygwin'): + return AnsiFormatter(stream) + elif sys.platform in ('win32',): + return WindowsConsoleFormatter(stream) + else: + return Formatter(stream) + diff --git a/src/gallium/tools/trace/model.py b/src/gallium/tools/trace/model.py new file mode 100755 index 00000000000..e76aad7788b --- /dev/null +++ b/src/gallium/tools/trace/model.py @@ -0,0 +1,214 @@ +#!/usr/bin/env python +########################################################################## +# +# Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. +# All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sub license, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice (including the +# next paragraph) shall be included in all copies or substantial portions +# of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +# IN NO EVENT SHALL TUNGSTEN GRAPHICS 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. +# +########################################################################## + + +'''Trace data model.''' + + +import sys +import string +import format + +try: + from cStringIO import StringIO +except ImportError: + from StringIO import StringIO + + +class Node: + + def visit(self, visitor): + raise NotImplementedError + + def __str__(self): + stream = StringIO() + formatter = format.DefaultFormatter(stream) + pretty_printer = PrettyPrinter(formatter) + self.visit(pretty_printer) + return stream.getvalue() + + +class Literal(Node): + + def __init__(self, value): + self.value = value + + def visit(self, visitor): + visitor.visit_literal(self) + + +class NamedConstant(Node): + + def __init__(self, name): + self.name = name + + def visit(self, visitor): + visitor.visit_named_constant(self) + + +class Array(Node): + + def __init__(self, elements): + self.elements = elements + + def visit(self, visitor): + visitor.visit_array(self) + + +class Struct(Node): + + def __init__(self, name, members): + self.name = name + self.members = members + + def visit(self, visitor): + visitor.visit_struct(self) + + +class Pointer(Node): + + def __init__(self, address): + self.address = address + + def visit(self, visitor): + visitor.visit_pointer(self) + + +class Call: + + def __init__(self, no, klass, method, args, ret): + self.no = no + self.klass = klass + self.method = method + self.args = args + self.ret = ret + + def visit(self, visitor): + visitor.visit_call(self) + + +class Trace: + + def __init__(self, calls): + self.calls = calls + + def visit(self, visitor): + visitor.visit_trace(self) + + +class Visitor: + + def visit_literal(self, node): + raise NotImplementedError + + def visit_named_constant(self, node): + raise NotImplementedError + + def visit_array(self, node): + raise NotImplementedError + + def visit_struct(self, node): + raise NotImplementedError + + def visit_pointer(self, node): + raise NotImplementedError + + def visit_call(self, node): + raise NotImplementedError + + def visit_trace(self, node): + raise NotImplementedError + + +class PrettyPrinter: + + def __init__(self, formatter): + self.formatter = formatter + + def visit_literal(self, node): + if isinstance(node.value, basestring): + if len(node.value) >= 4096 or node.value.strip(string.printable): + self.formatter.address('blob(%u)' % len(node.value)) + #self.formatter.text('...') + return + + self.formatter.literal('"' + node.value + '"') + return + + self.formatter.literal(repr(node.value)) + + def visit_named_constant(self, node): + self.formatter.literal(node.name) + + def visit_array(self, node): + self.formatter.text('{') + sep = '' + for value in node.elements: + self.formatter.text(sep) + value.visit(self) + sep = ', ' + self.formatter.text('}') + + def visit_struct(self, node): + self.formatter.text('{') + sep = '' + for name, value in node.members: + self.formatter.text(sep) + self.formatter.variable(name) + self.formatter.text(' = ') + value.visit(self) + sep = ', ' + self.formatter.text('}') + + def visit_pointer(self, node): + self.formatter.address(node.address) + + def visit_call(self, node): + self.formatter.text('%s ' % node.no) + if node.klass is not None: + self.formatter.function(node.klass + '::' + node.method) + else: + self.formatter.function(node.method) + self.formatter.text('(') + sep = '' + for name, value in node.args: + self.formatter.text(sep) + self.formatter.variable(name) + self.formatter.text(' = ') + value.visit(self) + sep = ', ' + self.formatter.text(')') + if node.ret is not None: + self.formatter.text(' = ') + node.ret.visit(self) + + def visit_trace(self, node): + for call in node.calls: + call.visit(self) + self.formatter.newline() + diff --git a/src/gallium/tools/trace/parse.py b/src/gallium/tools/trace/parse.py new file mode 100755 index 00000000000..b08d3686715 --- /dev/null +++ b/src/gallium/tools/trace/parse.py @@ -0,0 +1,392 @@ +#!/usr/bin/env python +########################################################################## +# +# Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas. +# All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sub license, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice (including the +# next paragraph) shall be included in all copies or substantial portions +# of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. +# IN NO EVENT SHALL TUNGSTEN GRAPHICS 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. +# +########################################################################## + + +import sys +import xml.parsers.expat +import binascii +import optparse + +from model import * + + +ELEMENT_START, ELEMENT_END, CHARACTER_DATA, EOF = range(4) + + +class XmlToken: + + def __init__(self, type, name_or_data, attrs = None, line = None, column = None): + assert type in (ELEMENT_START, ELEMENT_END, CHARACTER_DATA, EOF) + self.type = type + self.name_or_data = name_or_data + self.attrs = attrs + self.line = line + self.column = column + + def __str__(self): + if self.type == ELEMENT_START: + return '<' + self.name_or_data + ' ...>' + if self.type == ELEMENT_END: + return '</' + self.name_or_data + '>' + if self.type == CHARACTER_DATA: + return self.name_or_data + if self.type == EOF: + return 'end of file' + assert 0 + + +class XmlTokenizer: + """Expat based XML tokenizer.""" + + def __init__(self, fp, skip_ws = True): + self.fp = fp + self.tokens = [] + self.index = 0 + self.final = False + self.skip_ws = skip_ws + + self.character_pos = 0, 0 + self.character_data = '' + + self.parser = xml.parsers.expat.ParserCreate() + self.parser.StartElementHandler = self.handle_element_start + self.parser.EndElementHandler = self.handle_element_end + self.parser.CharacterDataHandler = self.handle_character_data + + def handle_element_start(self, name, attributes): + self.finish_character_data() + line, column = self.pos() + token = XmlToken(ELEMENT_START, name, attributes, line, column) + self.tokens.append(token) + + def handle_element_end(self, name): + self.finish_character_data() + line, column = self.pos() + token = XmlToken(ELEMENT_END, name, None, line, column) + self.tokens.append(token) + + def handle_character_data(self, data): + if not self.character_data: + self.character_pos = self.pos() + self.character_data += data + + def finish_character_data(self): + if self.character_data: + if not self.skip_ws or not self.character_data.isspace(): + line, column = self.character_pos + token = XmlToken(CHARACTER_DATA, self.character_data, None, line, column) + self.tokens.append(token) + self.character_data = '' + + def next(self): + size = 16*1024 + while self.index >= len(self.tokens) and not self.final: + self.tokens = [] + self.index = 0 + data = self.fp.read(size) + self.final = len(data) < size + data = data.rstrip('\0') + try: + self.parser.Parse(data, self.final) + except xml.parsers.expat.ExpatError, e: + #if e.code == xml.parsers.expat.errors.XML_ERROR_NO_ELEMENTS: + if e.code == 3: + pass + else: + raise e + if self.index >= len(self.tokens): + line, column = self.pos() + token = XmlToken(EOF, None, None, line, column) + else: + token = self.tokens[self.index] + self.index += 1 + return token + + def pos(self): + return self.parser.CurrentLineNumber, self.parser.CurrentColumnNumber + + +class TokenMismatch(Exception): + + def __init__(self, expected, found): + self.expected = expected + self.found = found + + def __str__(self): + return '%u:%u: %s expected, %s found' % (self.found.line, self.found.column, str(self.expected), str(self.found)) + + + +class XmlParser: + """Base XML document parser.""" + + def __init__(self, fp): + self.tokenizer = XmlTokenizer(fp) + self.consume() + + def consume(self): + self.token = self.tokenizer.next() + + def match_element_start(self, name): + return self.token.type == ELEMENT_START and self.token.name_or_data == name + + def match_element_end(self, name): + return self.token.type == ELEMENT_END and self.token.name_or_data == name + + def element_start(self, name): + while self.token.type == CHARACTER_DATA: + self.consume() + if self.token.type != ELEMENT_START: + raise TokenMismatch(XmlToken(ELEMENT_START, name), self.token) + if self.token.name_or_data != name: + raise TokenMismatch(XmlToken(ELEMENT_START, name), self.token) + attrs = self.token.attrs + self.consume() + return attrs + + def element_end(self, name): + while self.token.type == CHARACTER_DATA: + self.consume() + if self.token.type != ELEMENT_END: + raise TokenMismatch(XmlToken(ELEMENT_END, name), self.token) + if self.token.name_or_data != name: + raise TokenMismatch(XmlToken(ELEMENT_END, name), self.token) + self.consume() + + def character_data(self, strip = True): + data = '' + while self.token.type == CHARACTER_DATA: + data += self.token.name_or_data + self.consume() + if strip: + data = data.strip() + return data + + +class TraceParser(XmlParser): + + def __init__(self, fp): + XmlParser.__init__(self, fp) + self.last_call_no = 0 + + def parse(self): + self.element_start('trace') + while self.token.type not in (ELEMENT_END, EOF): + call = self.parse_call() + self.handle_call(call) + if self.token.type != EOF: + self.element_end('trace') + + def parse_call(self): + attrs = self.element_start('call') + try: + no = int(attrs['no']) + except KeyError: + self.last_call_no += 1 + no = self.last_call_no + else: + self.last_call_no = no + klass = attrs['class'] + method = attrs['method'] + args = [] + ret = None + while self.token.type == ELEMENT_START: + if self.token.name_or_data == 'arg': + arg = self.parse_arg() + args.append(arg) + elif self.token.name_or_data == 'ret': + ret = self.parse_ret() + elif self.token.name_or_data == 'call': + # ignore nested function calls + self.parse_call() + else: + raise TokenMismatch("<arg ...> or <ret ...>", self.token) + self.element_end('call') + + return Call(no, klass, method, args, ret) + + def parse_arg(self): + attrs = self.element_start('arg') + name = attrs['name'] + value = self.parse_value() + self.element_end('arg') + + return name, value + + def parse_ret(self): + attrs = self.element_start('ret') + value = self.parse_value() + self.element_end('ret') + + return value + + def parse_value(self): + expected_tokens = ('null', 'bool', 'int', 'uint', 'float', 'string', 'enum', 'array', 'struct', 'ptr', 'bytes') + if self.token.type == ELEMENT_START: + if self.token.name_or_data in expected_tokens: + method = getattr(self, 'parse_' + self.token.name_or_data) + return method() + raise TokenMismatch(" or " .join(expected_tokens), self.token) + + def parse_null(self): + self.element_start('null') + self.element_end('null') + return Literal(None) + + def parse_bool(self): + self.element_start('bool') + value = int(self.character_data()) + self.element_end('bool') + return Literal(value) + + def parse_int(self): + self.element_start('int') + value = int(self.character_data()) + self.element_end('int') + return Literal(value) + + def parse_uint(self): + self.element_start('uint') + value = int(self.character_data()) + self.element_end('uint') + return Literal(value) + + def parse_float(self): + self.element_start('float') + value = float(self.character_data()) + self.element_end('float') + return Literal(value) + + def parse_enum(self): + self.element_start('enum') + name = self.character_data() + self.element_end('enum') + return NamedConstant(name) + + def parse_string(self): + self.element_start('string') + value = self.character_data() + self.element_end('string') + return Literal(value) + + def parse_bytes(self): + self.element_start('bytes') + value = binascii.a2b_hex(self.character_data()) + self.element_end('bytes') + return Literal(value) + + def parse_array(self): + self.element_start('array') + elems = [] + while self.token.type != ELEMENT_END: + elems.append(self.parse_elem()) + self.element_end('array') + return Array(elems) + + def parse_elem(self): + self.element_start('elem') + value = self.parse_value() + self.element_end('elem') + return value + + def parse_struct(self): + attrs = self.element_start('struct') + name = attrs['name'] + members = [] + while self.token.type != ELEMENT_END: + members.append(self.parse_member()) + self.element_end('struct') + return Struct(name, members) + + def parse_member(self): + attrs = self.element_start('member') + name = attrs['name'] + value = self.parse_value() + self.element_end('member') + + return name, value + + def parse_ptr(self): + self.element_start('ptr') + address = self.character_data() + self.element_end('ptr') + + return Pointer(address) + + def handle_call(self, call): + pass + + +class TraceDumper(TraceParser): + + def __init__(self, fp): + TraceParser.__init__(self, fp) + self.formatter = format.DefaultFormatter(sys.stdout) + self.pretty_printer = PrettyPrinter(self.formatter) + + def handle_call(self, call): + call.visit(self.pretty_printer) + self.formatter.newline() + + +class Main: + '''Common main class for all retrace command line utilities.''' + + def __init__(self): + pass + + def main(self): + optparser = self.get_optparser() + (options, args) = optparser.parse_args(sys.argv[1:]) + + if args: + for arg in args: + if arg.endswith('.gz'): + from gzip import GzipFile + stream = GzipFile(arg, 'rt') + elif arg.endswith('.bz2'): + from bz2 import BZ2File + stream = BZ2File(arg, 'rU') + else: + stream = open(arg, 'rt') + self.process_arg(stream, options) + else: + self.process_arg(stream, options) + + def get_optparser(self): + optparser = optparse.OptionParser( + usage="\n\t%prog [options] [traces] ...") + return optparser + + def process_arg(self, stream, options): + parser = TraceDumper(stream) + parser.parse() + + +if __name__ == '__main__': + Main().main() diff --git a/src/gallium/winsys/i915/drm/i915_drm_winsys.c b/src/gallium/winsys/i915/drm/i915_drm_winsys.c index 2c3b508d056..6c8a10d800f 100644 --- a/src/gallium/winsys/i915/drm/i915_drm_winsys.c +++ b/src/gallium/winsys/i915/drm/i915_drm_winsys.c @@ -1,4 +1,7 @@ #include <stdio.h> +#include <sys/ioctl.h> + +#include "i915_drm.h" #include "state_tracker/drm_driver.h" @@ -13,26 +16,16 @@ static void -i915_drm_get_device_id(unsigned int *device_id) +i915_drm_get_device_id(int fd, unsigned int *device_id) { - char path[512]; - FILE *file; - void *shutup_gcc; - - /* - * FIXME: Fix this up to use a drm ioctl or whatever. - */ - - snprintf(path, sizeof(path), "/sys/class/drm/card0/device/device"); - file = fopen(path, "r"); - if (!file) { - return; - } - - shutup_gcc = fgets(path, sizeof(path), file); - (void) shutup_gcc; - sscanf(path, "%x", device_id); - fclose(file); + int ret; + struct drm_i915_getparam gp; + + gp.param = I915_PARAM_CHIPSET_ID; + gp.value = (int *)device_id; + + ret = ioctl(fd, DRM_IOCTL_I915_GETPARAM, &gp, sizeof(gp)); + assert(ret == 0); } static void @@ -55,7 +48,7 @@ i915_drm_winsys_create(int drmFD) if (!idws) return NULL; - i915_drm_get_device_id(&deviceID); + i915_drm_get_device_id(drmFD, &deviceID); i915_drm_winsys_init_batchbuffer_functions(idws); i915_drm_winsys_init_buffer_functions(idws); diff --git a/src/gallium/winsys/r600/drm/evergreen_hw_context.c b/src/gallium/winsys/r600/drm/evergreen_hw_context.c index 66398afa698..0a5b1a09336 100644 --- a/src/gallium/winsys/r600/drm/evergreen_hw_context.c +++ b/src/gallium/winsys/r600/drm/evergreen_hw_context.c @@ -69,29 +69,29 @@ static const struct r600_reg evergreen_context_reg_list[] = { {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_02800C_DB_RENDER_OVERRIDE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028010_DB_RENDER_OVERRIDE2, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028014_DB_HTILE_DATA_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028014_DB_HTILE_DATA_BASE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028028_DB_STENCIL_CLEAR, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_02802C_DB_DEPTH_CLEAR, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028030_PA_SC_SCREEN_SCISSOR_TL, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028034_PA_SC_SCREEN_SCISSOR_BR, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028040_DB_Z_INFO, 1, 0, 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028040_DB_Z_INFO, REG_FLAG_NEED_BO, 0, 0xFFFFFFFF}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028044_DB_STENCIL_INFO, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028048_DB_Z_READ_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028048_DB_Z_READ_BASE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_02804C_DB_STENCIL_READ_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_02804C_DB_STENCIL_READ_BASE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028050_DB_Z_WRITE_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028050_DB_Z_WRITE_BASE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028054_DB_STENCIL_WRITE_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028054_DB_STENCIL_WRITE_BASE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028058_DB_DEPTH_SIZE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_02805C_DB_DEPTH_SLICE, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028140_ALU_CONST_BUFFER_SIZE_PS_0, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028180_ALU_CONST_BUFFER_SIZE_VS_0, 0, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028140_ALU_CONST_BUFFER_SIZE_PS_0, REG_FLAG_DIRTY_ALWAYS, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028180_ALU_CONST_BUFFER_SIZE_VS_0, REG_FLAG_DIRTY_ALWAYS, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028200_PA_SC_WINDOW_OFFSET, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028204_PA_SC_WINDOW_SCISSOR_TL, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028208_PA_SC_WINDOW_SCISSOR_BR, 0, 0, 0}, @@ -258,14 +258,14 @@ static const struct r600_reg evergreen_context_reg_list[] = { {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_02881C_PA_CL_VS_OUT_CNTL, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028820_PA_CL_NANINF_CNTL, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028838_SQ_DYN_GPR_RESOURCE_LIMIT_1, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028840_SQ_PGM_START_PS, 1, S_0085F0_SH_ACTION_ENA(1), 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028840_SQ_PGM_START_PS, REG_FLAG_NEED_BO, S_0085F0_SH_ACTION_ENA(1), 0xFFFFFFFF}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028844_SQ_PGM_RESOURCES_PS, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028848_SQ_PGM_RESOURCES_2_PS, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_02884C_SQ_PGM_EXPORTS_PS, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_02885C_SQ_PGM_START_VS, 1, S_0085F0_SH_ACTION_ENA(1), 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_02885C_SQ_PGM_START_VS, REG_FLAG_NEED_BO, S_0085F0_SH_ACTION_ENA(1), 0xFFFFFFFF}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028860_SQ_PGM_RESOURCES_VS, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028864_SQ_PGM_RESOURCES_2_VS, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_0288A4_SQ_PGM_START_FS, 1, S_0085F0_SH_ACTION_ENA(1), 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_0288A4_SQ_PGM_START_FS, REG_FLAG_NEED_BO, S_0085F0_SH_ACTION_ENA(1), 0xFFFFFFFF}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_0288A8_SQ_PGM_RESOURCES_FS, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_0288EC_SQ_LDS_ALLOC_PS, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028900_SQ_ESGS_RING_ITEMSIZE, 0, 0, 0}, @@ -278,8 +278,8 @@ static const struct r600_reg evergreen_context_reg_list[] = { {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028920_SQ_GS_VERT_ITEMSIZE_1, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028924_SQ_GS_VERT_ITEMSIZE_2, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028928_SQ_GS_VERT_ITEMSIZE_3, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028940_ALU_CONST_CACHE_PS_0, 1, S_0085F0_SH_ACTION_ENA(1), 0xFFFFFFFF}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028980_ALU_CONST_CACHE_VS_0, 1, S_0085F0_SH_ACTION_ENA(1), 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028940_ALU_CONST_CACHE_PS_0, REG_FLAG_NEED_BO, S_0085F0_SH_ACTION_ENA(1), 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028980_ALU_CONST_CACHE_VS_0, REG_FLAG_NEED_BO, S_0085F0_SH_ACTION_ENA(1), 0xFFFFFFFF}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028A00_PA_SU_POINT_SIZE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028A04_PA_SU_POINT_MINMAX, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028A08_PA_SU_LINE_CNTL, 0, 0, 0}, @@ -324,100 +324,100 @@ static const struct r600_reg evergreen_context_reg_list[] = { {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028C1C_PA_SC_AA_SAMPLE_LOCS_MCTX, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028C3C_PA_SC_AA_MASK, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028C60_CB_COLOR0_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028C60_CB_COLOR0_BASE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028C64_CB_COLOR0_PITCH, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028C68_CB_COLOR0_SLICE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028C6C_CB_COLOR0_VIEW, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028C70_CB_COLOR0_INFO, 1, 0, 0xFFFFFFFF}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028C74_CB_COLOR0_ATTRIB, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028C70_CB_COLOR0_INFO, REG_FLAG_NEED_BO, 0, 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028C74_CB_COLOR0_ATTRIB, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028C78_CB_COLOR0_DIM, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028C9C_CB_COLOR1_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028C9C_CB_COLOR1_BASE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028CA0_CB_COLOR1_PITCH, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028CA4_CB_COLOR1_SLICE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028CA8_CB_COLOR1_VIEW, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028CAC_CB_COLOR1_INFO, 1, 0, 0xFFFFFFFF}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028CB0_CB_COLOR1_ATTRIB, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028CAC_CB_COLOR1_INFO, REG_FLAG_NEED_BO, 0, 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028CB0_CB_COLOR1_ATTRIB, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028CB4_CB_COLOR1_DIM, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028CD8_CB_COLOR2_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028CD8_CB_COLOR2_BASE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028CDC_CB_COLOR2_PITCH, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028CE0_CB_COLOR2_SLICE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028CE4_CB_COLOR2_VIEW, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028CE8_CB_COLOR2_INFO, 1, 0, 0xFFFFFFFF}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028CEC_CB_COLOR2_ATTRIB, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028CE8_CB_COLOR2_INFO, REG_FLAG_NEED_BO, 0, 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028CEC_CB_COLOR2_ATTRIB, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028CF0_CB_COLOR2_DIM, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D14_CB_COLOR3_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D14_CB_COLOR3_BASE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D18_CB_COLOR3_PITCH, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D1C_CB_COLOR3_SLICE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D20_CB_COLOR3_VIEW, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D24_CB_COLOR3_INFO, 1, 0, 0xFFFFFFFF}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D28_CB_COLOR3_ATTRIB, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D24_CB_COLOR3_INFO, REG_FLAG_NEED_BO, 0, 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D28_CB_COLOR3_ATTRIB, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D2C_CB_COLOR3_DIM, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D50_CB_COLOR4_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D50_CB_COLOR4_BASE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D54_CB_COLOR4_PITCH, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D58_CB_COLOR4_SLICE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D5C_CB_COLOR4_VIEW, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D60_CB_COLOR4_INFO, 1, 0, 0xFFFFFFFF}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D64_CB_COLOR4_ATTRIB, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D60_CB_COLOR4_INFO, REG_FLAG_NEED_BO, 0, 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D64_CB_COLOR4_ATTRIB, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D68_CB_COLOR4_DIM, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D8C_CB_COLOR5_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D8C_CB_COLOR5_BASE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D90_CB_COLOR5_PITCH, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D94_CB_COLOR5_SLICE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D98_CB_COLOR5_VIEW, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D9C_CB_COLOR5_INFO, 1, 0, 0xFFFFFFFF}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028DA0_CB_COLOR5_ATTRIB, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028D9C_CB_COLOR5_INFO, REG_FLAG_NEED_BO, 0, 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028DA0_CB_COLOR5_ATTRIB, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028DA4_CB_COLOR5_DIM, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028DC8_CB_COLOR6_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028DC8_CB_COLOR6_BASE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028DCC_CB_COLOR6_PITCH, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028DD0_CB_COLOR6_SLICE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028DD4_CB_COLOR6_VIEW, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028DD8_CB_COLOR6_INFO, 1, 0, 0xFFFFFFFF}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028DDC_CB_COLOR6_ATTRIB, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028DD8_CB_COLOR6_INFO, REG_FLAG_NEED_BO, 0, 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028DDC_CB_COLOR6_ATTRIB, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028DE0_CB_COLOR6_DIM, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E04_CB_COLOR7_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E04_CB_COLOR7_BASE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E08_CB_COLOR7_PITCH, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E0C_CB_COLOR7_SLICE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E10_CB_COLOR7_VIEW, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E14_CB_COLOR7_INFO, 1, 0, 0xFFFFFFFF}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E18_CB_COLOR7_ATTRIB, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E14_CB_COLOR7_INFO, REG_FLAG_NEED_BO, 0, 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E18_CB_COLOR7_ATTRIB, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E1C_CB_COLOR7_DIM, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E40_CB_COLOR8_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E40_CB_COLOR8_BASE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E44_CB_COLOR8_PITCH, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E48_CB_COLOR8_SLICE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E4C_CB_COLOR8_VIEW, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E50_CB_COLOR8_INFO, 1, 0, 0xFFFFFFFF}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E54_CB_COLOR8_ATTRIB, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E50_CB_COLOR8_INFO, REG_FLAG_NEED_BO, 0, 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E54_CB_COLOR8_ATTRIB, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E58_CB_COLOR8_DIM, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E5C_CB_COLOR9_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E5C_CB_COLOR9_BASE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E60_CB_COLOR9_PITCH, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E64_CB_COLOR9_SLICE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E68_CB_COLOR9_VIEW, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E6C_CB_COLOR9_INFO, 1, 0, 0xFFFFFFFF}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E70_CB_COLOR9_ATTRIB, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E6C_CB_COLOR9_INFO, REG_FLAG_NEED_BO, 0, 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E70_CB_COLOR9_ATTRIB, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E74_CB_COLOR9_DIM, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E78_CB_COLOR10_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E78_CB_COLOR10_BASE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E7C_CB_COLOR10_PITCH, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E80_CB_COLOR10_SLICE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E84_CB_COLOR10_VIEW, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E88_CB_COLOR10_INFO, 1, 0, 0xFFFFFFFF}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E8C_CB_COLOR10_ATTRIB, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E88_CB_COLOR10_INFO, REG_FLAG_NEED_BO, 0, 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E8C_CB_COLOR10_ATTRIB, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E90_CB_COLOR10_DIM, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E94_CB_COLOR11_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E94_CB_COLOR11_BASE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E98_CB_COLOR11_PITCH, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028E9C_CB_COLOR11_SLICE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028EA0_CB_COLOR11_VIEW, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028EA4_CB_COLOR11_INFO, 1, 0, 0xFFFFFFFF}, - {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028EA8_CB_COLOR11_ATTRIB, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028EA4_CB_COLOR11_INFO, REG_FLAG_NEED_BO, 0, 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028EA8_CB_COLOR11_ATTRIB, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, EVERGREEN_CONTEXT_REG_OFFSET, R_028EAC_CB_COLOR11_DIM, 0, 0, 0}, }; @@ -427,8 +427,8 @@ static int evergreen_state_resource_init(struct r600_context *ctx, u32 offset) struct r600_reg r600_shader_resource[] = { {PKT3_SET_RESOURCE, EVERGREEN_RESOURCE_OFFSET, R_030000_RESOURCE0_WORD0, 0, 0, 0}, {PKT3_SET_RESOURCE, EVERGREEN_RESOURCE_OFFSET, R_030004_RESOURCE0_WORD1, 0, 0, 0}, - {PKT3_SET_RESOURCE, EVERGREEN_RESOURCE_OFFSET, R_030008_RESOURCE0_WORD2, 1, S_0085F0_TC_ACTION_ENA(1) | S_0085F0_VC_ACTION_ENA(1), 0xFFFFFFFF}, - {PKT3_SET_RESOURCE, EVERGREEN_RESOURCE_OFFSET, R_03000C_RESOURCE0_WORD3, 1, S_0085F0_TC_ACTION_ENA(1) | S_0085F0_VC_ACTION_ENA(1), 0xFFFFFFFF}, + {PKT3_SET_RESOURCE, EVERGREEN_RESOURCE_OFFSET, R_030008_RESOURCE0_WORD2, REG_FLAG_NEED_BO, S_0085F0_TC_ACTION_ENA(1) | S_0085F0_VC_ACTION_ENA(1), 0xFFFFFFFF}, + {PKT3_SET_RESOURCE, EVERGREEN_RESOURCE_OFFSET, R_03000C_RESOURCE0_WORD3, REG_FLAG_NEED_BO, S_0085F0_TC_ACTION_ENA(1) | S_0085F0_VC_ACTION_ENA(1), 0xFFFFFFFF}, {PKT3_SET_RESOURCE, EVERGREEN_RESOURCE_OFFSET, R_030010_RESOURCE0_WORD4, 0, 0, 0}, {PKT3_SET_RESOURCE, EVERGREEN_RESOURCE_OFFSET, R_030014_RESOURCE0_WORD5, 0, 0, 0}, {PKT3_SET_RESOURCE, EVERGREEN_RESOURCE_OFFSET, R_030018_RESOURCE0_WORD6, 0, 0, 0}, @@ -499,7 +499,7 @@ static int evergreen_loop_const_init(struct r600_context *ctx, u32 offset) r600_loop_consts[i].opcode = PKT3_SET_LOOP_CONST; r600_loop_consts[i].offset_base = EVERGREEN_LOOP_CONST_OFFSET; r600_loop_consts[i].offset = EVERGREEN_LOOP_CONST_OFFSET + ((offset + i) * 4); - r600_loop_consts[i].need_bo = 0; + r600_loop_consts[i].flags = REG_FLAG_DIRTY_ALWAYS; r600_loop_consts[i].flush_flags = 0; } return r600_context_add_block(ctx, r600_loop_consts, nreg); @@ -633,74 +633,33 @@ out_err: return r; } -static inline void evergreen_context_pipe_state_set_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned offset) -{ - struct r600_range *range; - struct r600_block *block; - - range = &ctx->range[CTX_RANGE_ID(ctx, offset)]; - block = range->blocks[CTX_BLOCK_ID(ctx, offset)]; - if (state == NULL) { - block->status &= ~(R600_BLOCK_STATUS_ENABLED | R600_BLOCK_STATUS_DIRTY); - r600_bo_reference(ctx->radeon, &block->reloc[1].bo, NULL); - r600_bo_reference(ctx->radeon , &block->reloc[2].bo, NULL); - LIST_DELINIT(&block->list); - return; - } - block->reg[0] = state->regs[0].value; - block->reg[1] = state->regs[1].value; - block->reg[2] = state->regs[2].value; - block->reg[3] = state->regs[3].value; - block->reg[4] = state->regs[4].value; - block->reg[5] = state->regs[5].value; - block->reg[6] = state->regs[6].value; - block->reg[7] = state->regs[7].value; - r600_bo_reference(ctx->radeon, &block->reloc[1].bo, NULL); - r600_bo_reference(ctx->radeon , &block->reloc[2].bo, NULL); - if (state->regs[0].bo) { - /* VERTEX RESOURCE, we preted there is 2 bo to relocate so - * we have single case btw VERTEX & TEXTURE resource - */ - r600_bo_reference(ctx->radeon, &block->reloc[1].bo, state->regs[0].bo); - r600_bo_reference(ctx->radeon, &block->reloc[2].bo, state->regs[0].bo); - } else { - /* TEXTURE RESOURCE */ - r600_bo_reference(ctx->radeon, &block->reloc[1].bo, state->regs[2].bo); - r600_bo_reference(ctx->radeon, &block->reloc[2].bo, state->regs[3].bo); - } - if (!(block->status & R600_BLOCK_STATUS_DIRTY)) { - block->status |= R600_BLOCK_STATUS_ENABLED; - block->status |= R600_BLOCK_STATUS_DIRTY; - ctx->pm4_dirty_cdwords += block->pm4_ndwords + block->pm4_flush_ndwords; - LIST_ADDTAIL(&block->list,&ctx->dirty); - } -} - void evergreen_context_pipe_state_set_ps_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid) { unsigned offset = R_030000_SQ_TEX_RESOURCE_WORD0_0 + 0x20 * rid; - evergreen_context_pipe_state_set_resource(ctx, state, offset); + r600_context_pipe_state_set_resource(ctx, state, offset); } void evergreen_context_pipe_state_set_vs_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid) { unsigned offset = R_030000_SQ_TEX_RESOURCE_WORD0_0 + 0x1600 + 0x20 * rid; - evergreen_context_pipe_state_set_resource(ctx, state, offset); + r600_context_pipe_state_set_resource(ctx, state, offset); } void evergreen_context_pipe_state_set_fs_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid) { unsigned offset = R_030000_SQ_TEX_RESOURCE_WORD0_0 + 0x7C00 + 0x20 * rid; - evergreen_context_pipe_state_set_resource(ctx, state, offset); + r600_context_pipe_state_set_resource(ctx, state, offset); } static inline void evergreen_context_pipe_state_set_sampler(struct r600_context *ctx, struct r600_pipe_state *state, unsigned offset) { struct r600_range *range; struct r600_block *block; + int i; + int dirty; range = &ctx->range[CTX_RANGE_ID(ctx, offset)]; block = range->blocks[CTX_BLOCK_ID(ctx, offset)]; @@ -709,15 +668,27 @@ static inline void evergreen_context_pipe_state_set_sampler(struct r600_context LIST_DELINIT(&block->list); return; } - block->reg[0] = state->regs[0].value; - block->reg[1] = state->regs[1].value; - block->reg[2] = state->regs[2].value; - if (!(block->status & R600_BLOCK_STATUS_DIRTY)) { - block->status |= R600_BLOCK_STATUS_ENABLED; - block->status |= R600_BLOCK_STATUS_DIRTY; - ctx->pm4_dirty_cdwords += block->pm4_ndwords + block->pm4_flush_ndwords; - LIST_ADDTAIL(&block->list,&ctx->dirty); + dirty = block->status & R600_BLOCK_STATUS_DIRTY; + + for (i = 0; i < 3; i++) { + if (block->reg[i] != state->regs[i].value) { + dirty |= R600_BLOCK_STATUS_DIRTY; + block->reg[i] = state->regs[i].value; + } } + + r600_context_dirty_block(ctx, block, dirty, 2); +} + +static inline void evergreen_context_ps_partial_flush(struct r600_context *ctx) +{ + if (!(ctx->flags & R600_CONTEXT_DRAW_PENDING)) + return; + + ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_EVENT_WRITE, 0, 0); + ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE(EVENT_TYPE_PS_PARTIAL_FLUSH) | EVENT_INDEX(4); + + ctx->flags &= ~R600_CONTEXT_DRAW_PENDING; } static inline void evergreen_context_pipe_state_set_sampler_border(struct r600_context *ctx, struct r600_pipe_state *state, unsigned offset, unsigned id) @@ -725,6 +696,8 @@ static inline void evergreen_context_pipe_state_set_sampler_border(struct r600_c unsigned fake_offset = (offset - R_00A400_TD_PS_SAMPLER0_BORDER_INDEX) * 0x100 + 0x40000 + id * 0x1C; struct r600_range *range; struct r600_block *block; + int i; + int dirty; range = &ctx->range[CTX_RANGE_ID(ctx, fake_offset)]; block = range->blocks[CTX_BLOCK_ID(ctx, fake_offset)]; @@ -736,17 +709,27 @@ static inline void evergreen_context_pipe_state_set_sampler_border(struct r600_c if (state->nregs <= 3) { return; } - block->reg[0] = id; - block->reg[1] = state->regs[3].value; - block->reg[2] = state->regs[4].value; - block->reg[3] = state->regs[5].value; - block->reg[4] = state->regs[6].value; - if (!(block->status & R600_BLOCK_STATUS_DIRTY)) { - block->status |= R600_BLOCK_STATUS_ENABLED; - block->status |= R600_BLOCK_STATUS_DIRTY; - ctx->pm4_dirty_cdwords += block->pm4_ndwords + block->pm4_flush_ndwords; - LIST_ADDTAIL(&block->list,&ctx->dirty); + + dirty = block->status & R600_BLOCK_STATUS_DIRTY; + if (block->reg[0] != id) { + block->reg[0] = id; + dirty |= R600_BLOCK_STATUS_DIRTY; } + + for (i = 1; i < 5; i++) { + if (block->reg[i] != state->regs[i + 2].value) { + block->reg[i] = state->regs[i + 2].value; + dirty |= R600_BLOCK_STATUS_DIRTY; + } + } + + /* We have to flush the shaders before we change the border color + * registers, or previous draw commands that haven't completed yet + * will end up using the new border color. */ + if (dirty & R600_BLOCK_STATUS_DIRTY) + evergreen_context_ps_partial_flush(ctx); + + r600_context_dirty_block(ctx, block, dirty, 4); } void evergreen_context_pipe_state_set_ps_sampler(struct r600_context *ctx, struct r600_pipe_state *state, unsigned id) @@ -770,42 +753,18 @@ void evergreen_context_pipe_state_set_vs_sampler(struct r600_context *ctx, struc void evergreen_context_draw(struct r600_context *ctx, const struct r600_draw *draw) { - struct r600_bo *cb[12]; - struct r600_bo *db; - unsigned ndwords = 9, flush; + unsigned ndwords = 7; struct r600_block *dirty_block = NULL; struct r600_block *next_block; if (draw->indices) { - ndwords = 13; + ndwords = 11; /* make sure there is enough relocation space before scheduling draw */ if (ctx->creloc >= (ctx->nreloc - 1)) { r600_context_flush(ctx); } } - /* find number of color buffer */ - db = r600_context_reg_bo(ctx, R_028048_DB_Z_READ_BASE); - cb[0] = r600_context_reg_bo(ctx, R_028C60_CB_COLOR0_BASE); - cb[1] = r600_context_reg_bo(ctx, R_028C9C_CB_COLOR1_BASE); - cb[2] = r600_context_reg_bo(ctx, R_028CD8_CB_COLOR2_BASE); - cb[3] = r600_context_reg_bo(ctx, R_028D14_CB_COLOR3_BASE); - cb[4] = r600_context_reg_bo(ctx, R_028D50_CB_COLOR4_BASE); - cb[5] = r600_context_reg_bo(ctx, R_028D8C_CB_COLOR5_BASE); - cb[6] = r600_context_reg_bo(ctx, R_028DC8_CB_COLOR6_BASE); - cb[7] = r600_context_reg_bo(ctx, R_028E04_CB_COLOR7_BASE); - cb[8] = r600_context_reg_bo(ctx, R_028E40_CB_COLOR8_BASE); - cb[9] = r600_context_reg_bo(ctx, R_028E5C_CB_COLOR9_BASE); - cb[10] = r600_context_reg_bo(ctx, R_028E78_CB_COLOR10_BASE); - cb[11] = r600_context_reg_bo(ctx, R_028E94_CB_COLOR11_BASE); - for (int i = 0; i < 12; i++) { - if (cb[i]) { - ndwords += 7; - } - } - if (db) - ndwords += 7; - /* queries need some special values */ if (ctx->num_query_running) { r600_context_reg(ctx, @@ -818,6 +777,10 @@ void evergreen_context_draw(struct r600_context *ctx, const struct r600_draw *dr S_02800C_NOOP_CULL_DISABLE(1)); } + /* update the max dword count to make sure we have enough space + * reserved for flushing the destination caches */ + ctx->pm4_ndwords = RADEON_CTX_MAX_PM4 - ctx->num_dest_buffers * 7 - 16; + if ((ctx->pm4_dirty_cdwords + ndwords + ctx->pm4_cdwords) > ctx->pm4_ndwords) { /* need to flush */ r600_context_flush(ctx); @@ -852,12 +815,41 @@ void evergreen_context_draw(struct r600_context *ctx, const struct r600_draw *dr ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_num_indices; ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_draw_initiator; } - ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_EVENT_WRITE, 0, ctx->predicate_drawing); - ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE(EVENT_TYPE_CACHE_FLUSH_AND_INV_EVENT) | EVENT_INDEX(0); + + ctx->flags |= (R600_CONTEXT_DRAW_PENDING | R600_CONTEXT_DST_CACHES_DIRTY); + + /* all dirty state have been scheduled in current cs */ + ctx->pm4_dirty_cdwords = 0; +} + +void evergreen_context_flush_dest_caches(struct r600_context *ctx) +{ + struct r600_bo *cb[12]; + struct r600_bo *db; + + if (!(ctx->flags & R600_CONTEXT_DST_CACHES_DIRTY)) + return; + + /* find number of color buffer */ + db = r600_context_reg_bo(ctx, R_028048_DB_Z_READ_BASE); + cb[0] = r600_context_reg_bo(ctx, R_028C60_CB_COLOR0_BASE); + cb[1] = r600_context_reg_bo(ctx, R_028C9C_CB_COLOR1_BASE); + cb[2] = r600_context_reg_bo(ctx, R_028CD8_CB_COLOR2_BASE); + cb[3] = r600_context_reg_bo(ctx, R_028D14_CB_COLOR3_BASE); + cb[4] = r600_context_reg_bo(ctx, R_028D50_CB_COLOR4_BASE); + cb[5] = r600_context_reg_bo(ctx, R_028D8C_CB_COLOR5_BASE); + cb[6] = r600_context_reg_bo(ctx, R_028DC8_CB_COLOR6_BASE); + cb[7] = r600_context_reg_bo(ctx, R_028E04_CB_COLOR7_BASE); + cb[8] = r600_context_reg_bo(ctx, R_028E40_CB_COLOR8_BASE); + cb[9] = r600_context_reg_bo(ctx, R_028E5C_CB_COLOR9_BASE); + cb[10] = r600_context_reg_bo(ctx, R_028E78_CB_COLOR10_BASE); + cb[11] = r600_context_reg_bo(ctx, R_028E94_CB_COLOR11_BASE); /* flush color buffer */ for (int i = 0; i < 12; i++) { if (cb[i]) { + unsigned flush; + if (i > 7) { flush = (S_0085F0_CB8_DEST_BASE_ENA(1) << (i - 8)) | S_0085F0_CB_ACTION_ENA(1); @@ -875,7 +867,6 @@ void evergreen_context_draw(struct r600_context *ctx, const struct r600_draw *dr 0, db); } - /* all dirty state have been scheduled in current cs */ - ctx->pm4_dirty_cdwords = 0; + ctx->flags &= ~R600_CONTEXT_DST_CACHES_DIRTY; } diff --git a/src/gallium/winsys/r600/drm/r600_drm.c b/src/gallium/winsys/r600/drm/r600_drm.c index c081abb4dcd..ddd8ee3d6dd 100644 --- a/src/gallium/winsys/r600/drm/r600_drm.c +++ b/src/gallium/winsys/r600/drm/r600_drm.c @@ -30,6 +30,7 @@ #include <sys/ioctl.h> #include "util/u_inlines.h" #include "util/u_debug.h" +#include "util/u_hash_table.h" #include <pipebuffer/pb_bufmgr.h> #include "r600.h" #include "r600_priv.h" @@ -242,6 +243,18 @@ static int radeon_init_fence(struct radeon *radeon) return 0; } +#define PTR_TO_UINT(x) ((unsigned)((intptr_t)(x))) + +static unsigned handle_hash(void *key) +{ + return PTR_TO_UINT(key); +} + +static int handle_compare(void *key1, void *key2) +{ + return PTR_TO_UINT(key1) != PTR_TO_UINT(key2); +} + static struct radeon *radeon_new(int fd, unsigned device) { struct radeon *radeon; @@ -340,6 +353,9 @@ static struct radeon *radeon_new(int fd, unsigned device) radeon_decref(radeon); return NULL; } + + radeon->bo_handles = util_hash_table_create(handle_hash, handle_compare); + pipe_mutex_init(radeon->bo_handles_mutex); return radeon; } @@ -356,6 +372,8 @@ struct radeon *radeon_decref(struct radeon *radeon) return NULL; } + util_hash_table_destroy(radeon->bo_handles); + pipe_mutex_destroy(radeon->bo_handles_mutex); if (radeon->fence_bo) { r600_bo_reference(radeon, &radeon->fence_bo, NULL); } diff --git a/src/gallium/winsys/r600/drm/r600_hw_context.c b/src/gallium/winsys/r600/drm/r600_hw_context.c index a7c21784e51..662455be28c 100644 --- a/src/gallium/winsys/r600/drm/r600_hw_context.c +++ b/src/gallium/winsys/r600/drm/r600_hw_context.c @@ -106,16 +106,22 @@ int r600_context_add_block(struct r600_context *ctx, const struct r600_reg *reg, } /* initialize block */ + block->status |= R600_BLOCK_STATUS_DIRTY; /* dirty all blocks at start */ block->start_offset = reg[i].offset; block->pm4[block->pm4_ndwords++] = PKT3(reg[i].opcode, n, 0); block->pm4[block->pm4_ndwords++] = (block->start_offset - reg[i].offset_base) >> 2; block->reg = &block->pm4[block->pm4_ndwords]; block->pm4_ndwords += n; block->nreg = n; + block->nreg_dirty = n; + block->flags = 0; LIST_INITHEAD(&block->list); for (j = 0; j < n; j++) { - if (reg[i+j].need_bo) { + if (reg[i+j].flags & REG_FLAG_DIRTY_ALWAYS) { + block->flags |= REG_FLAG_DIRTY_ALWAYS; + } + if (reg[i+j].flags & REG_FLAG_NEED_BO) { block->nbo++; assert(block->nbo < R600_BLOCK_MAX_BO); block->pm4_bo_index[j] = block->nbo; @@ -191,97 +197,97 @@ static const struct r600_reg r600_context_reg_list[] = { {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028028_DB_STENCIL_CLEAR, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_02802C_DB_DEPTH_CLEAR, 0, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028040_CB_COLOR0_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028040_CB_COLOR0_BASE, REG_FLAG_NEED_BO, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280A0_CB_COLOR0_INFO, 1, 0, 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280A0_CB_COLOR0_INFO, REG_FLAG_NEED_BO, 0, 0xFFFFFFFF}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028060_CB_COLOR0_SIZE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028080_CB_COLOR0_VIEW, 0, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280E0_CB_COLOR0_FRAG, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280E0_CB_COLOR0_FRAG, REG_FLAG_NEED_BO, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280C0_CB_COLOR0_TILE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280C0_CB_COLOR0_TILE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028100_CB_COLOR0_MASK, 0, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028044_CB_COLOR1_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028044_CB_COLOR1_BASE, REG_FLAG_NEED_BO, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280A4_CB_COLOR1_INFO, 1, 0, 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280A4_CB_COLOR1_INFO, REG_FLAG_NEED_BO, 0, 0xFFFFFFFF}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028064_CB_COLOR1_SIZE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028084_CB_COLOR1_VIEW, 0, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280E4_CB_COLOR1_FRAG, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280E4_CB_COLOR1_FRAG, REG_FLAG_NEED_BO, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280C4_CB_COLOR1_TILE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280C4_CB_COLOR1_TILE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028104_CB_COLOR1_MASK, 0, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028048_CB_COLOR2_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028048_CB_COLOR2_BASE, REG_FLAG_NEED_BO, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280A8_CB_COLOR2_INFO, 1, 0, 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280A8_CB_COLOR2_INFO, REG_FLAG_NEED_BO, 0, 0xFFFFFFFF}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028068_CB_COLOR2_SIZE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028088_CB_COLOR2_VIEW, 0, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280E8_CB_COLOR2_FRAG, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280E8_CB_COLOR2_FRAG, REG_FLAG_NEED_BO, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280C8_CB_COLOR2_TILE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280C8_CB_COLOR2_TILE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028108_CB_COLOR2_MASK, 0, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_02804C_CB_COLOR3_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_02804C_CB_COLOR3_BASE, REG_FLAG_NEED_BO, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280AC_CB_COLOR3_INFO, 1, 0, 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280AC_CB_COLOR3_INFO, REG_FLAG_NEED_BO, 0, 0xFFFFFFFF}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_02806C_CB_COLOR3_SIZE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_02808C_CB_COLOR3_VIEW, 0, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280EC_CB_COLOR3_FRAG, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280EC_CB_COLOR3_FRAG, REG_FLAG_NEED_BO, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280CC_CB_COLOR3_TILE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280CC_CB_COLOR3_TILE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_02810C_CB_COLOR3_MASK, 0, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028050_CB_COLOR4_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028050_CB_COLOR4_BASE, REG_FLAG_NEED_BO, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280B0_CB_COLOR4_INFO, 1, 0, 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280B0_CB_COLOR4_INFO, REG_FLAG_NEED_BO, 0, 0xFFFFFFFF}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028070_CB_COLOR4_SIZE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028090_CB_COLOR4_VIEW, 0, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280F0_CB_COLOR4_FRAG, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280F0_CB_COLOR4_FRAG, REG_FLAG_NEED_BO, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280D0_CB_COLOR4_TILE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280D0_CB_COLOR4_TILE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028110_CB_COLOR4_MASK, 0, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028054_CB_COLOR5_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028054_CB_COLOR5_BASE, REG_FLAG_NEED_BO, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280B4_CB_COLOR5_INFO, 1, 0, 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280B4_CB_COLOR5_INFO, REG_FLAG_NEED_BO, 0, 0xFFFFFFFF}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028074_CB_COLOR5_SIZE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028094_CB_COLOR5_VIEW, 0, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280F4_CB_COLOR5_FRAG, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280F4_CB_COLOR5_FRAG, REG_FLAG_NEED_BO, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280D4_CB_COLOR5_TILE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280D4_CB_COLOR5_TILE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028114_CB_COLOR5_MASK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028058_CB_COLOR6_BASE, 1, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280B8_CB_COLOR6_INFO, 1, 0, 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028058_CB_COLOR6_BASE, REG_FLAG_NEED_BO, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280B8_CB_COLOR6_INFO, REG_FLAG_NEED_BO, 0, 0xFFFFFFFF}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028078_CB_COLOR6_SIZE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028098_CB_COLOR6_VIEW, 0, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280F8_CB_COLOR6_FRAG, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280F8_CB_COLOR6_FRAG, REG_FLAG_NEED_BO, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280D8_CB_COLOR6_TILE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280D8_CB_COLOR6_TILE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028118_CB_COLOR6_MASK, 0, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_02805C_CB_COLOR7_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_02805C_CB_COLOR7_BASE, REG_FLAG_NEED_BO, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280BC_CB_COLOR7_INFO, 1, 0, 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280BC_CB_COLOR7_INFO, REG_FLAG_NEED_BO, 0, 0xFFFFFFFF}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_02807C_CB_COLOR7_SIZE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_02809C_CB_COLOR7_VIEW, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280FC_CB_COLOR7_FRAG, 1, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280DC_CB_COLOR7_TILE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280FC_CB_COLOR7_FRAG, REG_FLAG_NEED_BO, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0280DC_CB_COLOR7_TILE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_02811C_CB_COLOR7_MASK, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028120_CB_CLEAR_RED, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028124_CB_CLEAR_GREEN, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028128_CB_CLEAR_BLUE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_02812C_CB_CLEAR_ALPHA, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028140_ALU_CONST_BUFFER_SIZE_PS_0, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028180_ALU_CONST_BUFFER_SIZE_VS_0, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028940_ALU_CONST_CACHE_PS_0, 1, S_0085F0_SH_ACTION_ENA(1), 0xFFFFFFFF}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028980_ALU_CONST_CACHE_VS_0, 1, S_0085F0_SH_ACTION_ENA(1), 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028140_ALU_CONST_BUFFER_SIZE_PS_0, REG_FLAG_DIRTY_ALWAYS, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028180_ALU_CONST_BUFFER_SIZE_VS_0, REG_FLAG_DIRTY_ALWAYS, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028940_ALU_CONST_CACHE_PS_0, REG_FLAG_NEED_BO, S_0085F0_SH_ACTION_ENA(1), 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028980_ALU_CONST_CACHE_VS_0, REG_FLAG_NEED_BO, S_0085F0_SH_ACTION_ENA(1), 0xFFFFFFFF}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_02823C_CB_SHADER_MASK, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028238_CB_TARGET_MASK, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028410_SX_ALPHA_TEST_CONTROL, 0, 0, 0}, @@ -321,11 +327,11 @@ static const struct r600_reg r600_context_reg_list[] = { {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028C48_PA_SC_AA_MASK, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028D2C_DB_SRESULTS_COMPARE_STATE1, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028D44_DB_ALPHA_TO_MASK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_02800C_DB_DEPTH_BASE, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_02800C_DB_DEPTH_BASE, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028000_DB_DEPTH_SIZE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028004_DB_DEPTH_VIEW, 0, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028010_DB_DEPTH_INFO, 1, 0, 0}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028010_DB_DEPTH_INFO, REG_FLAG_NEED_BO, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028D0C_DB_RENDER_CONTROL, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028D10_DB_RENDER_OVERRIDE, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028D24_DB_HTILE_SURFACE, 0, 0, 0}, @@ -449,11 +455,11 @@ static const struct r600_reg r600_context_reg_list[] = { {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028638_SPI_VS_OUT_ID_9, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0286C4_SPI_VS_OUT_CONFIG, 0, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028858_SQ_PGM_START_VS, 1, S_0085F0_SH_ACTION_ENA(1), 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028858_SQ_PGM_START_VS, REG_FLAG_NEED_BO, S_0085F0_SH_ACTION_ENA(1), 0xFFFFFFFF}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028868_SQ_PGM_RESOURCES_VS, 0, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028894_SQ_PGM_START_FS, 1, S_0085F0_SH_ACTION_ENA(1), 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028894_SQ_PGM_START_FS, REG_FLAG_NEED_BO, S_0085F0_SH_ACTION_ENA(1), 0xFFFFFFFF}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0288A4_SQ_PGM_RESOURCES_FS, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0288D0_SQ_PGM_CF_OFFSET_VS, 0, 0, 0}, @@ -494,7 +500,7 @@ static const struct r600_reg r600_context_reg_list[] = { {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0286D0_SPI_PS_IN_CONTROL_1, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_0286D8_SPI_INPUT_Z, 0, 0, 0}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, - {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028840_SQ_PGM_START_PS, 1, S_0085F0_SH_ACTION_ENA(1), 0xFFFFFFFF}, + {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028840_SQ_PGM_START_PS, REG_FLAG_NEED_BO, S_0085F0_SH_ACTION_ENA(1), 0xFFFFFFFF}, {0, 0, GROUP_FORCE_NEW_BLOCK, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028850_SQ_PGM_RESOURCES_PS, 0, 0, 0}, {PKT3_SET_CONTEXT_REG, R600_CONTEXT_REG_OFFSET, R_028854_SQ_PGM_EXPORTS_PS, 0, 0, 0}, @@ -515,8 +521,8 @@ static int r600_state_resource_init(struct r600_context *ctx, u32 offset) struct r600_reg r600_shader_resource[] = { {PKT3_SET_RESOURCE, R600_RESOURCE_OFFSET, R_038000_RESOURCE0_WORD0, 0, 0, 0}, {PKT3_SET_RESOURCE, R600_RESOURCE_OFFSET, R_038004_RESOURCE0_WORD1, 0, 0, 0}, - {PKT3_SET_RESOURCE, R600_RESOURCE_OFFSET, R_038008_RESOURCE0_WORD2, 1, S_0085F0_TC_ACTION_ENA(1) | S_0085F0_VC_ACTION_ENA(1), 0xFFFFFFFF}, - {PKT3_SET_RESOURCE, R600_RESOURCE_OFFSET, R_03800C_RESOURCE0_WORD3, 1, S_0085F0_TC_ACTION_ENA(1) | S_0085F0_VC_ACTION_ENA(1), 0xFFFFFFFF}, + {PKT3_SET_RESOURCE, R600_RESOURCE_OFFSET, R_038008_RESOURCE0_WORD2, REG_FLAG_NEED_BO, S_0085F0_TC_ACTION_ENA(1) | S_0085F0_VC_ACTION_ENA(1), 0xFFFFFFFF}, + {PKT3_SET_RESOURCE, R600_RESOURCE_OFFSET, R_03800C_RESOURCE0_WORD3, REG_FLAG_NEED_BO, S_0085F0_TC_ACTION_ENA(1) | S_0085F0_VC_ACTION_ENA(1), 0xFFFFFFFF}, {PKT3_SET_RESOURCE, R600_RESOURCE_OFFSET, R_038010_RESOURCE0_WORD4, 0, 0, 0}, {PKT3_SET_RESOURCE, R600_RESOURCE_OFFSET, R_038014_RESOURCE0_WORD5, 0, 0, 0}, {PKT3_SET_RESOURCE, R600_RESOURCE_OFFSET, R_038018_RESOURCE0_WORD6, 0, 0, 0}, @@ -572,7 +578,7 @@ static int r600_loop_const_init(struct r600_context *ctx, u32 offset) r600_loop_consts[i].opcode = PKT3_SET_LOOP_CONST; r600_loop_consts[i].offset_base = R600_LOOP_CONST_OFFSET; r600_loop_consts[i].offset = R600_LOOP_CONST_OFFSET + ((offset + i) * 4); - r600_loop_consts[i].need_bo = 0; + r600_loop_consts[i].flags = REG_FLAG_DIRTY_ALWAYS; r600_loop_consts[i].flush_flags = 0; r600_loop_consts[i].flush_mask = 0; } @@ -771,14 +777,30 @@ static void rv6xx_context_surface_base_update(struct r600_context *ctx, } } +/* Flushes all surfaces */ +void r600_context_flush_all(struct r600_context *ctx, unsigned flush_flags) +{ + unsigned ndwords = 5; + + if ((ctx->pm4_dirty_cdwords + ndwords + ctx->pm4_cdwords) > ctx->pm4_ndwords) { + /* need to flush */ + r600_context_flush(ctx); + } + + ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_SURFACE_SYNC, 3, ctx->predicate_drawing); + ctx->pm4[ctx->pm4_cdwords++] = flush_flags; /* CP_COHER_CNTL */ + ctx->pm4[ctx->pm4_cdwords++] = 0xffffffff; /* CP_COHER_SIZE */ + ctx->pm4[ctx->pm4_cdwords++] = 0; /* CP_COHER_BASE */ + ctx->pm4[ctx->pm4_cdwords++] = 0x0000000A; /* POLL_INTERVAL */ +} + void r600_context_bo_flush(struct r600_context *ctx, unsigned flush_flags, unsigned flush_mask, struct r600_bo *rbo) { struct radeon_bo *bo; - bo = r600_bo_get_bo(rbo); - /* if bo has already been flush */ - if (!(bo->last_flush ^ flush_flags)) { + /* if bo has already been flushed */ + if (!(~bo->last_flush & flush_flags)) { bo->last_flush &= flush_mask; return; } @@ -815,38 +837,91 @@ void r600_context_bo_reloc(struct r600_context *ctx, u32 *pm4, struct r600_bo *r *pm4 = bo->reloc_id; } -void r600_context_pipe_state_set(struct r600_context *ctx, struct r600_pipe_state *state) +void r600_context_reg(struct r600_context *ctx, + unsigned offset, unsigned value, + unsigned mask) { struct r600_range *range; struct r600_block *block; + unsigned id; + unsigned new_val; + int dirty; + + range = &ctx->range[CTX_RANGE_ID(ctx, offset)]; + block = range->blocks[CTX_BLOCK_ID(ctx, offset)]; + id = (offset - block->start_offset) >> 2; + + dirty = block->status & R600_BLOCK_STATUS_DIRTY; + + new_val = block->reg[id]; + new_val &= ~mask; + new_val |= value; + if (new_val != block->reg[id]) { + dirty |= R600_BLOCK_STATUS_DIRTY; + block->reg[id] = new_val; + } + r600_context_dirty_block(ctx, block, dirty, id); +} +void r600_context_dirty_block(struct r600_context *ctx, struct r600_block *block, + int dirty, int index) +{ + if (dirty && (index + 1) > block->nreg_dirty) + block->nreg_dirty = index + 1; + + if ((dirty != (block->status & R600_BLOCK_STATUS_DIRTY)) || !(block->status & R600_BLOCK_STATUS_ENABLED)) { + + block->status |= R600_BLOCK_STATUS_ENABLED; + block->status |= R600_BLOCK_STATUS_DIRTY; + ctx->pm4_dirty_cdwords += block->pm4_ndwords + block->pm4_flush_ndwords; + LIST_ADDTAIL(&block->list,&ctx->dirty); + } +} + +void r600_context_pipe_state_set(struct r600_context *ctx, struct r600_pipe_state *state) +{ + struct r600_range *range; + struct r600_block *block; + unsigned new_val; + int dirty; for (int i = 0; i < state->nregs; i++) { - unsigned id; + unsigned id, reloc_id; range = &ctx->range[CTX_RANGE_ID(ctx, state->regs[i].offset)]; block = range->blocks[CTX_BLOCK_ID(ctx, state->regs[i].offset)]; id = (state->regs[i].offset - block->start_offset) >> 2; - block->reg[id] &= ~state->regs[i].mask; - block->reg[id] |= state->regs[i].value; + + dirty = block->status & R600_BLOCK_STATUS_DIRTY; + + new_val = block->reg[id]; + new_val &= ~state->regs[i].mask; + new_val |= state->regs[i].value; + if (new_val != block->reg[id]) { + block->reg[id] = new_val; + dirty |= R600_BLOCK_STATUS_DIRTY; + } + if (block->flags & REG_FLAG_DIRTY_ALWAYS) + dirty |= R600_BLOCK_STATUS_DIRTY; if (block->pm4_bo_index[id]) { /* find relocation */ - id = block->pm4_bo_index[id]; - r600_bo_reference(ctx->radeon, &block->reloc[id].bo, state->regs[i].bo); + reloc_id = block->pm4_bo_index[id]; + r600_bo_reference(ctx->radeon, &block->reloc[reloc_id].bo, state->regs[i].bo); state->regs[i].bo->fence = ctx->radeon->fence; + /* always force dirty for relocs for now */ + dirty |= R600_BLOCK_STATUS_DIRTY; } - if (!(block->status & R600_BLOCK_STATUS_DIRTY)) { - block->status |= R600_BLOCK_STATUS_ENABLED; - block->status |= R600_BLOCK_STATUS_DIRTY; - ctx->pm4_dirty_cdwords += block->pm4_ndwords + block->pm4_flush_ndwords; - LIST_ADDTAIL(&block->list,&ctx->dirty); - } + + r600_context_dirty_block(ctx, block, dirty, id); } } -static inline void r600_context_pipe_state_set_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned offset) +void r600_context_pipe_state_set_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned offset) { struct r600_range *range; struct r600_block *block; + int i; + int dirty; + int num_regs = ctx->radeon->chip_class >= EVERGREEN ? 8 : 7; range = &ctx->range[CTX_RANGE_ID(ctx, offset)]; block = range->blocks[CTX_BLOCK_ID(ctx, offset)]; @@ -857,35 +932,57 @@ static inline void r600_context_pipe_state_set_resource(struct r600_context *ctx LIST_DELINIT(&block->list); return; } - block->reg[0] = state->regs[0].value; - block->reg[1] = state->regs[1].value; - block->reg[2] = state->regs[2].value; - block->reg[3] = state->regs[3].value; - block->reg[4] = state->regs[4].value; - block->reg[5] = state->regs[5].value; - block->reg[6] = state->regs[6].value; - r600_bo_reference(ctx->radeon, &block->reloc[1].bo, NULL); - r600_bo_reference(ctx->radeon , &block->reloc[2].bo, NULL); - if (state->regs[0].bo) { - /* VERTEX RESOURCE, we preted there is 2 bo to relocate so - * we have single case btw VERTEX & TEXTURE resource - */ - r600_bo_reference(ctx->radeon, &block->reloc[1].bo, state->regs[0].bo); - r600_bo_reference(ctx->radeon, &block->reloc[2].bo, state->regs[0].bo); - state->regs[0].bo->fence = ctx->radeon->fence; - } else { - /* TEXTURE RESOURCE */ - r600_bo_reference(ctx->radeon, &block->reloc[1].bo, state->regs[2].bo); - r600_bo_reference(ctx->radeon, &block->reloc[2].bo, state->regs[3].bo); - state->regs[2].bo->fence = ctx->radeon->fence; - state->regs[3].bo->fence = ctx->radeon->fence; + + dirty = block->status & R600_BLOCK_STATUS_DIRTY; + + for (i = 0; i < num_regs; i++) { + if (block->reg[i] != state->regs[i].value) { + dirty |= R600_BLOCK_STATUS_DIRTY; + block->reg[i] = state->regs[i].value; + } } - if (!(block->status & R600_BLOCK_STATUS_DIRTY)) { - block->status |= R600_BLOCK_STATUS_ENABLED; - block->status |= R600_BLOCK_STATUS_DIRTY; - ctx->pm4_dirty_cdwords += block->pm4_ndwords + block->pm4_flush_ndwords; - LIST_ADDTAIL(&block->list,&ctx->dirty); + + /* if no BOs on block, force dirty */ + if (!block->reloc[1].bo || !block->reloc[2].bo) + dirty |= R600_BLOCK_STATUS_DIRTY; + + if (!dirty) { + if (state->regs[0].bo) { + if ((block->reloc[1].bo->bo->handle != state->regs[0].bo->bo->handle) || + (block->reloc[2].bo->bo->handle != state->regs[0].bo->bo->handle)) + dirty |= R600_BLOCK_STATUS_DIRTY; + } else { + if ((block->reloc[1].bo->bo->handle != state->regs[2].bo->bo->handle) || + (block->reloc[2].bo->bo->handle != state->regs[3].bo->bo->handle)) + dirty |= R600_BLOCK_STATUS_DIRTY; + } } + if (!dirty) { + if (state->regs[0].bo) + state->regs[0].bo->fence = ctx->radeon->fence; + else { + state->regs[2].bo->fence = ctx->radeon->fence; + state->regs[3].bo->fence = ctx->radeon->fence; + } + } else { + r600_bo_reference(ctx->radeon, &block->reloc[1].bo, NULL); + r600_bo_reference(ctx->radeon, &block->reloc[2].bo, NULL); + if (state->regs[0].bo) { + /* VERTEX RESOURCE, we preted there is 2 bo to relocate so + * we have single case btw VERTEX & TEXTURE resource + */ + r600_bo_reference(ctx->radeon, &block->reloc[1].bo, state->regs[0].bo); + r600_bo_reference(ctx->radeon, &block->reloc[2].bo, state->regs[0].bo); + state->regs[0].bo->fence = ctx->radeon->fence; + } else { + /* TEXTURE RESOURCE */ + r600_bo_reference(ctx->radeon, &block->reloc[1].bo, state->regs[2].bo); + r600_bo_reference(ctx->radeon, &block->reloc[2].bo, state->regs[3].bo); + state->regs[2].bo->fence = ctx->radeon->fence; + state->regs[3].bo->fence = ctx->radeon->fence; + } + } + r600_context_dirty_block(ctx, block, dirty, num_regs - 1); } void r600_context_pipe_state_set_ps_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned rid) @@ -913,6 +1010,8 @@ static inline void r600_context_pipe_state_set_sampler(struct r600_context *ctx, { struct r600_range *range; struct r600_block *block; + int i; + int dirty; range = &ctx->range[CTX_RANGE_ID(ctx, offset)]; block = range->blocks[CTX_BLOCK_ID(ctx, offset)]; @@ -921,21 +1020,34 @@ static inline void r600_context_pipe_state_set_sampler(struct r600_context *ctx, LIST_DELINIT(&block->list); return; } - block->reg[0] = state->regs[0].value; - block->reg[1] = state->regs[1].value; - block->reg[2] = state->regs[2].value; - if (!(block->status & R600_BLOCK_STATUS_DIRTY)) { - block->status |= R600_BLOCK_STATUS_ENABLED; - block->status |= R600_BLOCK_STATUS_DIRTY; - ctx->pm4_dirty_cdwords += block->pm4_ndwords + block->pm4_flush_ndwords; - LIST_ADDTAIL(&block->list,&ctx->dirty); + dirty = block->status & R600_BLOCK_STATUS_DIRTY; + for (i = 0; i < 3; i++) { + if (block->reg[i] != state->regs[i].value) { + block->reg[i] = state->regs[i].value; + dirty |= R600_BLOCK_STATUS_DIRTY; + } } + + r600_context_dirty_block(ctx, block, dirty, 2); +} + +static inline void r600_context_ps_partial_flush(struct r600_context *ctx) +{ + if (!(ctx->flags & R600_CONTEXT_DRAW_PENDING)) + return; + + ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_EVENT_WRITE, 0, 0); + ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE(EVENT_TYPE_PS_PARTIAL_FLUSH) | EVENT_INDEX(4); + + ctx->flags &= ~R600_CONTEXT_DRAW_PENDING; } static inline void r600_context_pipe_state_set_sampler_border(struct r600_context *ctx, struct r600_pipe_state *state, unsigned offset) { struct r600_range *range; struct r600_block *block; + int i; + int dirty; range = &ctx->range[CTX_RANGE_ID(ctx, offset)]; block = range->blocks[CTX_BLOCK_ID(ctx, offset)]; @@ -947,16 +1059,21 @@ static inline void r600_context_pipe_state_set_sampler_border(struct r600_contex if (state->nregs <= 3) { return; } - block->reg[0] = state->regs[3].value; - block->reg[1] = state->regs[4].value; - block->reg[2] = state->regs[5].value; - block->reg[3] = state->regs[6].value; - if (!(block->status & R600_BLOCK_STATUS_DIRTY)) { - block->status |= R600_BLOCK_STATUS_ENABLED; - block->status |= R600_BLOCK_STATUS_DIRTY; - ctx->pm4_dirty_cdwords += block->pm4_ndwords + block->pm4_flush_ndwords; - LIST_ADDTAIL(&block->list,&ctx->dirty); + dirty = block->status & R600_BLOCK_STATUS_DIRTY; + for (i = 0; i < 4; i++) { + if (block->reg[i] != state->regs[i + 3].value) { + block->reg[i] = state->regs[i + 3].value; + dirty |= R600_BLOCK_STATUS_DIRTY; + } } + + /* We have to flush the shaders before we change the border color + * registers, or previous draw commands that haven't completed yet + * will end up using the new border color. */ + if (dirty & R600_BLOCK_STATUS_DIRTY) + r600_context_ps_partial_flush(ctx); + + r600_context_dirty_block(ctx, block, dirty, 3); } void r600_context_pipe_state_set_ps_sampler(struct r600_context *ctx, struct r600_pipe_state *state, unsigned id) @@ -995,24 +1112,54 @@ struct r600_bo *r600_context_reg_bo(struct r600_context *ctx, unsigned offset) return NULL; } -void r600_context_draw(struct r600_context *ctx, const struct r600_draw *draw) +void r600_context_block_emit_dirty(struct r600_context *ctx, struct r600_block *block) { - struct r600_bo *cb[8]; - struct r600_bo *db; - unsigned ndwords = 9; - struct r600_block *dirty_block = NULL; - struct r600_block *next_block; - unsigned rv6xx_surface_base_update = 0; + int id; - if (draw->indices) { - ndwords = 13; - /* make sure there is enough relocation space before scheduling draw */ - if (ctx->creloc >= (ctx->nreloc - 1)) { - r600_context_flush(ctx); + if (block->nreg_dirty == 0 && block->nbo == 0 && !(block->flags & REG_FLAG_DIRTY_ALWAYS)) { + goto out; + } + + for (int j = 0; j < block->nreg; j++) { + if (block->pm4_bo_index[j]) { + /* find relocation */ + id = block->pm4_bo_index[j]; + r600_context_bo_reloc(ctx, + &block->pm4[block->reloc[id].bo_pm4_index], + block->reloc[id].bo); + r600_context_bo_flush(ctx, + block->reloc[id].flush_flags, + block->reloc[id].flush_mask, + block->reloc[id].bo); } } + memcpy(&ctx->pm4[ctx->pm4_cdwords], block->pm4, block->pm4_ndwords * 4); + ctx->pm4_cdwords += block->pm4_ndwords; + + if (block->nreg_dirty != block->nreg && block->nbo == 0 && !(block->flags & REG_FLAG_DIRTY_ALWAYS)) { + int new_dwords = block->nreg_dirty; + uint32_t oldword, newword; + ctx->pm4_cdwords -= block->pm4_ndwords; + newword = oldword = ctx->pm4[ctx->pm4_cdwords]; + newword &= PKT_COUNT_C; + newword |= PKT_COUNT_S(new_dwords); + ctx->pm4[ctx->pm4_cdwords] = newword; + ctx->pm4_cdwords += new_dwords + 2; + } +out: + block->status ^= R600_BLOCK_STATUS_DIRTY; + block->nreg_dirty = 0; + LIST_DELINIT(&block->list); +} + +void r600_context_flush_dest_caches(struct r600_context *ctx) +{ + struct r600_bo *cb[8]; + struct r600_bo *db; + + if (!(ctx->flags & R600_CONTEXT_DST_CACHES_DIRTY)) + return; - /* find number of color buffer */ db = r600_context_reg_bo(ctx, R_02800C_DB_DEPTH_BASE); cb[0] = r600_context_reg_bo(ctx, R_028040_CB_COLOR0_BASE); cb[1] = r600_context_reg_bo(ctx, R_028044_CB_COLOR1_BASE); @@ -1022,16 +1169,64 @@ void r600_context_draw(struct r600_context *ctx, const struct r600_draw *draw) cb[5] = r600_context_reg_bo(ctx, R_028054_CB_COLOR5_BASE); cb[6] = r600_context_reg_bo(ctx, R_028058_CB_COLOR6_BASE); cb[7] = r600_context_reg_bo(ctx, R_02805C_CB_COLOR7_BASE); + + /* flush the color buffers */ for (int i = 0; i < 8; i++) { - if (cb[i]) { - ndwords += 7; - rv6xx_surface_base_update |= SURFACE_BASE_UPDATE_COLOR(i); - } + if (!cb[i]) + continue; + + r600_context_bo_flush(ctx, + (S_0085F0_CB0_DEST_BASE_ENA(1) << i) | + S_0085F0_CB_ACTION_ENA(1), + 0, cb[i]); } if (db) { - ndwords += 7; - rv6xx_surface_base_update |= SURFACE_BASE_UPDATE_DEPTH; + r600_context_bo_flush(ctx, S_0085F0_DB_ACTION_ENA(1), 0, db); + } + + ctx->flags &= ~R600_CONTEXT_DST_CACHES_DIRTY; +} + +void r600_context_draw(struct r600_context *ctx, const struct r600_draw *draw) +{ + unsigned ndwords = 7; + struct r600_block *dirty_block = NULL; + struct r600_block *next_block; + unsigned rv6xx_surface_base_update = 0; + + if (draw->indices) { + ndwords = 11; + /* make sure there is enough relocation space before scheduling draw */ + if (ctx->creloc >= (ctx->nreloc - 1)) { + r600_context_flush(ctx); + } } + + /* rv6xx surface base update */ + if ((ctx->radeon->family > CHIP_R600) && + (ctx->radeon->family < CHIP_RV770)) { + struct r600_bo *cb[8]; + struct r600_bo *db; + + db = r600_context_reg_bo(ctx, R_02800C_DB_DEPTH_BASE); + cb[0] = r600_context_reg_bo(ctx, R_028040_CB_COLOR0_BASE); + cb[1] = r600_context_reg_bo(ctx, R_028044_CB_COLOR1_BASE); + cb[2] = r600_context_reg_bo(ctx, R_028048_CB_COLOR2_BASE); + cb[3] = r600_context_reg_bo(ctx, R_02804C_CB_COLOR3_BASE); + cb[4] = r600_context_reg_bo(ctx, R_028050_CB_COLOR4_BASE); + cb[5] = r600_context_reg_bo(ctx, R_028054_CB_COLOR5_BASE); + cb[6] = r600_context_reg_bo(ctx, R_028058_CB_COLOR6_BASE); + cb[7] = r600_context_reg_bo(ctx, R_02805C_CB_COLOR7_BASE); + for (int i = 0; i < 8; i++) { + if (cb[i]) { + rv6xx_surface_base_update |= SURFACE_BASE_UPDATE_COLOR(i); + } + } + if (db) { + rv6xx_surface_base_update |= SURFACE_BASE_UPDATE_DEPTH; + } + } + /* XXX also need to update SURFACE_BASE_UPDATE_STRMOUT when we support it */ /* queries need some special values */ @@ -1048,6 +1243,10 @@ void r600_context_draw(struct r600_context *ctx, const struct r600_draw *draw) S_028D10_NOOP_CULL_DISABLE(1)); } + /* update the max dword count to make sure we have enough space + * reserved for flushing the destination caches */ + ctx->pm4_ndwords = RADEON_CTX_MAX_PM4 - ctx->num_dest_buffers * 7 - 16; + if ((ctx->pm4_dirty_cdwords + ndwords + ctx->pm4_cdwords) > ctx->pm4_ndwords) { /* need to flush */ r600_context_flush(ctx); @@ -1057,7 +1256,6 @@ void r600_context_draw(struct r600_context *ctx, const struct r600_draw *draw) R600_ERR("context is too big to be scheduled\n"); return; } - /* enough room to copy packet */ LIST_FOR_EACH_ENTRY_SAFE(dirty_block, next_block, &ctx->dirty, list) { r600_context_block_emit_dirty(ctx, dirty_block); @@ -1086,21 +1284,8 @@ void r600_context_draw(struct r600_context *ctx, const struct r600_draw *draw) ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_num_indices; ctx->pm4[ctx->pm4_cdwords++] = draw->vgt_draw_initiator; } - ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_EVENT_WRITE, 0, ctx->predicate_drawing); - ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE(EVENT_TYPE_CACHE_FLUSH_AND_INV_EVENT) | EVENT_INDEX(0); - /* flush color buffer */ - for (int i = 0; i < 8; i++) { - if (cb[i]) { - r600_context_bo_flush(ctx, - (S_0085F0_CB0_DEST_BASE_ENA(1) << i) | - S_0085F0_CB_ACTION_ENA(1), - 0, cb[i]); - } - } - if (db) { - r600_context_bo_flush(ctx, S_0085F0_DB_ACTION_ENA(1), 0, db); - } + ctx->flags |= (R600_CONTEXT_DST_CACHES_DIRTY | R600_CONTEXT_DRAW_PENDING); /* all dirty state have been scheduled in current cs */ ctx->pm4_dirty_cdwords = 0; @@ -1120,9 +1305,15 @@ void r600_context_flush(struct r600_context *ctx) /* suspend queries */ r600_context_queries_suspend(ctx); - /* emit fence */ + if (ctx->radeon->family >= CHIP_CEDAR) + evergreen_context_flush_dest_caches(ctx); + else + r600_context_flush_dest_caches(ctx); + + /* partial flush is needed to avoid lockups on some chips with user fences */ ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_EVENT_WRITE, 0, 0); ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE(EVENT_TYPE_PS_PARTIAL_FLUSH) | EVENT_INDEX(4); + /* emit fence */ ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_EVENT_WRITE_EOP, 4, 0); ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE(EVENT_TYPE_CACHE_FLUSH_AND_INV_TS_EVENT) | EVENT_INDEX(5); ctx->pm4[ctx->pm4_cdwords++] = 0; @@ -1170,6 +1361,7 @@ void r600_context_flush(struct r600_context *ctx) ctx->creloc = 0; ctx->pm4_dirty_cdwords = 0; ctx->pm4_cdwords = 0; + ctx->flags = 0; /* resume queries */ r600_context_queries_resume(ctx); @@ -1184,10 +1376,34 @@ void r600_context_flush(struct r600_context *ctx) } ctx->pm4_dirty_cdwords += ctx->blocks[i]->pm4_ndwords + ctx->blocks[i]->pm4_flush_ndwords; ctx->blocks[i]->status |= R600_BLOCK_STATUS_DIRTY; + ctx->blocks[i]->nreg_dirty = ctx->blocks[i]->nreg; } } } +void r600_context_emit_fence(struct r600_context *ctx, struct r600_bo *fence_bo, unsigned offset, unsigned value) +{ + unsigned ndwords = 10; + + if (((ctx->pm4_dirty_cdwords + ndwords + ctx->pm4_cdwords) > ctx->pm4_ndwords) || + (ctx->creloc >= (ctx->nreloc - 1))) { + /* need to flush */ + r600_context_flush(ctx); + } + + ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_EVENT_WRITE, 0, 0); + ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE(EVENT_TYPE_PS_PARTIAL_FLUSH) | EVENT_INDEX(4); + ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_EVENT_WRITE_EOP, 4, 0); + ctx->pm4[ctx->pm4_cdwords++] = EVENT_TYPE(EVENT_TYPE_CACHE_FLUSH_AND_INV_TS_EVENT) | EVENT_INDEX(5); + ctx->pm4[ctx->pm4_cdwords++] = offset << 2; /* ADDRESS_LO */ + ctx->pm4[ctx->pm4_cdwords++] = (1 << 29) | (0 << 24); /* DATA_SEL | INT_EN | ADDRESS_HI */ + ctx->pm4[ctx->pm4_cdwords++] = value; /* DATA_LO */ + ctx->pm4[ctx->pm4_cdwords++] = 0; /* DATA_HI */ + ctx->pm4[ctx->pm4_cdwords++] = PKT3(PKT3_NOP, 0, 0); + ctx->pm4[ctx->pm4_cdwords++] = 0; + r600_context_bo_reloc(ctx, &ctx->pm4[ctx->pm4_cdwords - 1], fence_bo); +} + void r600_context_dump_bof(struct r600_context *ctx, const char *file) { bof_t *bcs, *blob, *array, *bo, *size, *handle, *device_id, *root; diff --git a/src/gallium/winsys/r600/drm/r600_priv.h b/src/gallium/winsys/r600/drm/r600_priv.h index 41c5ee02c38..ed0f3e584d3 100644 --- a/src/gallium/winsys/r600/drm/r600_priv.h +++ b/src/gallium/winsys/r600/drm/r600_priv.h @@ -32,9 +32,13 @@ #include <assert.h> #include <util/u_double_list.h> #include <util/u_inlines.h> +#include "util/u_hash_table.h" #include <os/os_thread.h> #include "r600.h" +#define PKT_COUNT_C 0xC000FFFF +#define PKT_COUNT_S(x) (((x) & 0x3FFF) << 16) + struct r600_bomgr; struct r600_bo; @@ -52,13 +56,20 @@ struct radeon { unsigned clock_crystal_freq; unsigned num_backends; unsigned minor_version; + + /* List of buffer handles and its mutex. */ + struct util_hash_table *bo_handles; + pipe_mutex bo_handles_mutex; }; +#define REG_FLAG_NEED_BO 1 +#define REG_FLAG_DIRTY_ALWAYS 2 + struct r600_reg { unsigned opcode; unsigned offset_base; unsigned offset; - unsigned need_bo; + unsigned flags; unsigned flush_flags; unsigned flush_mask; }; @@ -77,6 +88,7 @@ struct radeon_bo { struct r600_reloc *reloc; unsigned reloc_id; unsigned last_flush; + unsigned name; }; struct r600_bo { @@ -142,7 +154,14 @@ void r600_context_bo_flush(struct r600_context *ctx, unsigned flush_flags, unsigned flush_mask, struct r600_bo *rbo); struct r600_bo *r600_context_reg_bo(struct r600_context *ctx, unsigned offset); int r600_context_add_block(struct r600_context *ctx, const struct r600_reg *reg, unsigned nreg); - +void r600_context_pipe_state_set_resource(struct r600_context *ctx, struct r600_pipe_state *state, unsigned offset); +void r600_context_block_emit_dirty(struct r600_context *ctx, struct r600_block *block); +void r600_context_dirty_block(struct r600_context *ctx, struct r600_block *block, + int dirty, int index); + +void r600_context_reg(struct r600_context *ctx, + unsigned offset, unsigned value, + unsigned mask); /* * r600_bo.c */ @@ -167,50 +186,6 @@ struct r600_bo *r600_bomgr_bo_create(struct r600_bomgr *mgr, #define CTX_RANGE_ID(ctx, offset) (((offset) >> (ctx)->hash_shift) & 255) #define CTX_BLOCK_ID(ctx, offset) ((offset) & ((1 << (ctx)->hash_shift) - 1)) -static void inline r600_context_reg(struct r600_context *ctx, - unsigned offset, unsigned value, - unsigned mask) -{ - struct r600_range *range; - struct r600_block *block; - unsigned id; - - range = &ctx->range[CTX_RANGE_ID(ctx, offset)]; - block = range->blocks[CTX_BLOCK_ID(ctx, offset)]; - id = (offset - block->start_offset) >> 2; - block->reg[id] &= ~mask; - block->reg[id] |= value; - if (!(block->status & R600_BLOCK_STATUS_DIRTY)) { - ctx->pm4_dirty_cdwords += block->pm4_ndwords; - block->status |= R600_BLOCK_STATUS_ENABLED; - block->status |= R600_BLOCK_STATUS_DIRTY; - LIST_ADDTAIL(&block->list,&ctx->dirty); - } -} - -static inline void r600_context_block_emit_dirty(struct r600_context *ctx, struct r600_block *block) -{ - int id; - - for (int j = 0; j < block->nreg; j++) { - if (block->pm4_bo_index[j]) { - /* find relocation */ - id = block->pm4_bo_index[j]; - r600_context_bo_reloc(ctx, - &block->pm4[block->reloc[id].bo_pm4_index], - block->reloc[id].bo); - r600_context_bo_flush(ctx, - block->reloc[id].flush_flags, - block->reloc[id].flush_mask, - block->reloc[id].bo); - } - } - memcpy(&ctx->pm4[ctx->pm4_cdwords], block->pm4, block->pm4_ndwords * 4); - ctx->pm4_cdwords += block->pm4_ndwords; - block->status ^= R600_BLOCK_STATUS_DIRTY; - LIST_DELINIT(&block->list); -} - /* * radeon_bo.c */ diff --git a/src/gallium/winsys/r600/drm/radeon_bo.c b/src/gallium/winsys/r600/drm/radeon_bo.c index 3643ddbcb93..13b1d50b6e5 100644 --- a/src/gallium/winsys/r600/drm/radeon_bo.c +++ b/src/gallium/winsys/r600/drm/radeon_bo.c @@ -74,6 +74,16 @@ struct radeon_bo *radeon_bo(struct radeon *radeon, unsigned handle, struct radeon_bo *bo; int r; + if (handle) { + pipe_mutex_lock(radeon->bo_handles_mutex); + bo = util_hash_table_get(radeon->bo_handles, + (void *)(uintptr_t)handle); + if (bo) { + struct radeon_bo *b = NULL; + radeon_bo_reference(radeon, &b, bo); + goto done; + } + } bo = calloc(1, sizeof(*bo)); if (bo == NULL) { return NULL; @@ -94,6 +104,7 @@ struct radeon_bo *radeon_bo(struct radeon *radeon, unsigned handle, free(bo); return NULL; } + bo->name = handle; bo->handle = open_arg.handle; bo->size = open_arg.size; bo->shared = TRUE; @@ -121,6 +132,13 @@ struct radeon_bo *radeon_bo(struct radeon *radeon, unsigned handle, radeon_bo_reference(radeon, &bo, NULL); return bo; } + + if (handle) + util_hash_table_set(radeon->bo_handles, (void *)(uintptr_t)handle, bo); +done: + if (handle) + pipe_mutex_unlock(radeon->bo_handles_mutex); + return bo; } @@ -128,6 +146,12 @@ static void radeon_bo_destroy(struct radeon *radeon, struct radeon_bo *bo) { struct drm_gem_close args; + if (bo->name) { + pipe_mutex_lock(radeon->bo_handles_mutex); + util_hash_table_remove(radeon->bo_handles, + (void *)(uintptr_t)bo->name); + pipe_mutex_unlock(radeon->bo_handles_mutex); + } LIST_DEL(&bo->fencedlist); radeon_bo_fixed_unmap(radeon, bo); memset(&args, 0, sizeof(args)); diff --git a/src/gallium/winsys/r600/drm/radeon_pciid.c b/src/gallium/winsys/r600/drm/radeon_pciid.c index f19956931de..146d6bd3100 100644 --- a/src/gallium/winsys/r600/drm/radeon_pciid.c +++ b/src/gallium/winsys/r600/drm/radeon_pciid.c @@ -445,6 +445,8 @@ static const struct pci_id radeon_pci_id[] = { {0x1002, 0x9803, CHIP_PALM}, {0x1002, 0x9804, CHIP_PALM}, {0x1002, 0x9805, CHIP_PALM}, + {0x1002, 0x9806, CHIP_PALM}, + {0x1002, 0x9807, CHIP_PALM}, {0x1002, 0x6720, CHIP_BARTS}, {0x1002, 0x6721, CHIP_BARTS}, {0x1002, 0x6722, CHIP_BARTS}, diff --git a/src/gallium/winsys/radeon/drm/Makefile b/src/gallium/winsys/radeon/drm/Makefile index e63ae6f5006..d44b7c14250 100644 --- a/src/gallium/winsys/radeon/drm/Makefile +++ b/src/gallium/winsys/radeon/drm/Makefile @@ -7,10 +7,9 @@ LIBNAME = radeonwinsys C_SOURCES = \ radeon_drm_bo.c \ radeon_drm_cs.c \ - radeon_drm_common.c + radeon_drm_winsys.c -LIBRARY_INCLUDES = -I$(TOP)/src/gallium/drivers/r300 \ - $(shell pkg-config libdrm --cflags-only-I) +LIBRARY_INCLUDES = $(shell pkg-config libdrm --cflags-only-I) include ../../../Makefile.template diff --git a/src/gallium/winsys/radeon/drm/SConscript b/src/gallium/winsys/radeon/drm/SConscript index b16e03556d3..39a8c711b84 100644 --- a/src/gallium/winsys/radeon/drm/SConscript +++ b/src/gallium/winsys/radeon/drm/SConscript @@ -5,17 +5,15 @@ env = env.Clone() radeon_sources = [ 'radeon_drm_bo.c', 'radeon_drm_cs.c', - 'radeon_drm_common.c', + 'radeon_drm_winsys.c', ] try: - env.ParseConfig('pkg-config --cflags libdrm_radeon') + env.ParseConfig('pkg-config --cflags libdrm') except: - print 'warning: not building r300g' + print 'warning: not building Gallium Radeon' Return() -env.Append(CPPPATH = '#/src/gallium/drivers/r300') - radeonwinsys = env.ConvenienceLibrary( target ='radeonwinsys', source = radeon_sources, diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c index 9eb833454df..b6f12727e81 100644 --- a/src/gallium/winsys/radeon/drm/radeon_drm_bo.c +++ b/src/gallium/winsys/radeon/drm/radeon_drm_bo.c @@ -87,31 +87,7 @@ static struct radeon_bo *get_radeon_bo(struct pb_buffer *_buf) return bo; } -void radeon_bo_unref(struct radeon_bo *bo) -{ - struct drm_gem_close args = {}; - - if (!p_atomic_dec_zero(&bo->ref_count)) - return; - - if (bo->name) { - pipe_mutex_lock(bo->mgr->bo_handles_mutex); - util_hash_table_remove(bo->mgr->bo_handles, - (void*)(uintptr_t)bo->name); - pipe_mutex_unlock(bo->mgr->bo_handles_mutex); - } - - if (bo->ptr) - munmap(bo->ptr, bo->size); - - /* Close object. */ - args.handle = bo->handle; - drmIoctl(bo->rws->fd, DRM_IOCTL_GEM_CLOSE, &args); - pipe_mutex_destroy(bo->map_mutex); - FREE(bo); -} - -static void radeon_bo_wait(struct r300_winsys_bo *_buf) +static void radeon_bo_wait(struct pb_buffer *_buf) { struct radeon_bo *bo = get_radeon_bo(pb_buffer(_buf)); struct drm_radeon_gem_wait_idle args = {}; @@ -123,33 +99,58 @@ static void radeon_bo_wait(struct r300_winsys_bo *_buf) args.handle = bo->handle; while (drmCommandWriteRead(bo->rws->fd, DRM_RADEON_GEM_WAIT_IDLE, &args, sizeof(args)) == -EBUSY); + + bo->busy_for_write = FALSE; } -static boolean radeon_bo_is_busy(struct r300_winsys_bo *_buf) +static boolean radeon_bo_is_busy(struct pb_buffer *_buf) { struct radeon_bo *bo = get_radeon_bo(pb_buffer(_buf)); struct drm_radeon_gem_busy args = {}; + boolean busy; if (p_atomic_read(&bo->num_active_ioctls)) { return TRUE; } args.handle = bo->handle; - return drmCommandWriteRead(bo->rws->fd, DRM_RADEON_GEM_BUSY, + busy = drmCommandWriteRead(bo->rws->fd, DRM_RADEON_GEM_BUSY, &args, sizeof(args)) != 0; + + if (!busy) + bo->busy_for_write = FALSE; + return busy; } static void radeon_bo_destroy(struct pb_buffer *_buf) { struct radeon_bo *bo = radeon_bo(_buf); + struct drm_gem_close args = {}; - radeon_bo_unref(bo); + if (bo->name) { + pipe_mutex_lock(bo->mgr->bo_handles_mutex); + util_hash_table_remove(bo->mgr->bo_handles, + (void*)(uintptr_t)bo->name); + pipe_mutex_unlock(bo->mgr->bo_handles_mutex); + } + + if (bo->ptr) + munmap(bo->ptr, bo->size); + + /* Close object. */ + args.handle = bo->handle; + drmIoctl(bo->rws->fd, DRM_IOCTL_GEM_CLOSE, &args); + pipe_mutex_destroy(bo->map_mutex); + FREE(bo); } static unsigned get_pb_usage_from_transfer_flags(enum pipe_transfer_usage usage) { unsigned res = 0; + if (usage & PIPE_TRANSFER_WRITE) + res |= PB_USAGE_CPU_WRITE; + if (usage & PIPE_TRANSFER_DONTBLOCK) res |= PB_USAGE_DONTBLOCK; @@ -172,23 +173,44 @@ static void *radeon_bo_map_internal(struct pb_buffer *_buf, /* DONTBLOCK doesn't make sense with UNSYNCHRONIZED. */ if (flags & PB_USAGE_DONTBLOCK) { if (radeon_bo_is_referenced_by_cs(cs, bo)) { - cs->flush_cs(cs->flush_data, R300_FLUSH_ASYNC); + cs->flush_cs(cs->flush_data, RADEON_FLUSH_ASYNC); return NULL; } - if (radeon_bo_is_busy((struct r300_winsys_bo*)bo)) { + if (radeon_bo_is_busy((struct pb_buffer*)bo)) { return NULL; } } else { - if (radeon_bo_is_referenced_by_cs(cs, bo)) { - cs->flush_cs(cs->flush_data, 0); + if (!(flags & PB_USAGE_CPU_WRITE)) { + /* Mapping for read. + * + * Since we are mapping for read, we don't need to wait + * if the GPU is using the buffer for read too + * (neither one is changing it). + * + * Only check whether the buffer is being used for write. */ + if (radeon_bo_is_referenced_by_cs_for_write(cs, bo)) { + cs->flush_cs(cs->flush_data, 0); + radeon_bo_wait((struct pb_buffer*)bo); + } else if (bo->busy_for_write) { + /* Update the busy_for_write field (done by radeon_bo_is_busy) + * and wait if needed. */ + if (radeon_bo_is_busy((struct pb_buffer*)bo)) { + radeon_bo_wait((struct pb_buffer*)bo); + } + } } else { - /* Try to avoid busy-waiting in radeon_bo_wait. */ - if (p_atomic_read(&bo->num_active_ioctls)) - radeon_drm_cs_sync_flush(cs); + /* Mapping for write. */ + if (radeon_bo_is_referenced_by_cs(cs, bo)) { + cs->flush_cs(cs->flush_data, 0); + } else { + /* Try to avoid busy-waiting in radeon_bo_wait. */ + if (p_atomic_read(&bo->num_active_ioctls)) + radeon_drm_cs_sync_flush(cs); + } + + radeon_bo_wait((struct pb_buffer*)bo); } - - radeon_bo_wait((struct r300_winsys_bo*)bo); } } @@ -198,6 +220,11 @@ static void *radeon_bo_map_internal(struct pb_buffer *_buf, /* Map the buffer. */ pipe_mutex_lock(bo->map_mutex); + /* Return the pointer if it's already mapped (in case of a race). */ + if (bo->ptr) { + pipe_mutex_unlock(bo->map_mutex); + return bo->ptr; + } args.handle = bo->handle; args.offset = 0; args.size = (uint64_t)bo->size; @@ -278,10 +305,10 @@ static struct pb_buffer *radeon_bomgr_create_bo(struct pb_manager *_mgr, if (drmCommandWriteRead(rws->fd, DRM_RADEON_GEM_CREATE, &args, sizeof(args))) { - fprintf(stderr, "Failed to allocate :\n"); - fprintf(stderr, " size : %d bytes\n", size); - fprintf(stderr, " alignment : %d bytes\n", desc->alignment); - fprintf(stderr, " domains : %d\n", args.initial_domain); + fprintf(stderr, "radeon: Failed to allocate a buffer:\n"); + fprintf(stderr, "radeon: size : %d bytes\n", size); + fprintf(stderr, "radeon: alignment : %d bytes\n", desc->alignment); + fprintf(stderr, "radeon: domains : %d\n", args.initial_domain); return NULL; } @@ -300,7 +327,6 @@ static struct pb_buffer *radeon_bomgr_create_bo(struct pb_manager *_mgr, bo->size = size; pipe_mutex_init(bo->map_mutex); - radeon_bo_ref(bo); return &bo->base; } @@ -319,7 +345,7 @@ static boolean radeon_bomgr_is_buffer_busy(struct pb_manager *_mgr, return TRUE; } - if (radeon_bo_is_busy((struct r300_winsys_bo*)bo)) { + if (radeon_bo_is_busy((struct pb_buffer*)bo)) { return TRUE; } @@ -365,8 +391,8 @@ struct pb_manager *radeon_bomgr_create(struct radeon_drm_winsys *rws) return &mgr->base; } -static void *radeon_bo_map(struct r300_winsys_bo *buf, - struct r300_winsys_cs *cs, +static void *radeon_bo_map(struct pb_buffer *buf, + struct radeon_winsys_cs *cs, enum pipe_transfer_usage usage) { struct pb_buffer *_buf = pb_buffer(buf); @@ -374,9 +400,9 @@ static void *radeon_bo_map(struct r300_winsys_bo *buf, return pb_map(_buf, get_pb_usage_from_transfer_flags(usage), cs); } -static void radeon_bo_get_tiling(struct r300_winsys_bo *_buf, - enum r300_buffer_tiling *microtiled, - enum r300_buffer_tiling *macrotiled) +static void radeon_bo_get_tiling(struct pb_buffer *_buf, + enum radeon_bo_layout *microtiled, + enum radeon_bo_layout *macrotiled) { struct radeon_bo *bo = get_radeon_bo(pb_buffer(_buf)); struct drm_radeon_gem_set_tiling args = {}; @@ -388,19 +414,19 @@ static void radeon_bo_get_tiling(struct r300_winsys_bo *_buf, &args, sizeof(args)); - *microtiled = R300_BUFFER_LINEAR; - *macrotiled = R300_BUFFER_LINEAR; + *microtiled = RADEON_LAYOUT_LINEAR; + *macrotiled = RADEON_LAYOUT_LINEAR; if (args.tiling_flags & RADEON_BO_FLAGS_MICRO_TILE) - *microtiled = R300_BUFFER_TILED; + *microtiled = RADEON_LAYOUT_TILED; if (args.tiling_flags & RADEON_BO_FLAGS_MACRO_TILE) - *macrotiled = R300_BUFFER_TILED; + *macrotiled = RADEON_LAYOUT_TILED; } -static void radeon_bo_set_tiling(struct r300_winsys_bo *_buf, - struct r300_winsys_cs *rcs, - enum r300_buffer_tiling microtiled, - enum r300_buffer_tiling macrotiled, +static void radeon_bo_set_tiling(struct pb_buffer *_buf, + struct radeon_winsys_cs *rcs, + enum radeon_bo_layout microtiled, + enum radeon_bo_layout macrotiled, uint32_t pitch) { struct radeon_bo *bo = get_radeon_bo(pb_buffer(_buf)); @@ -417,12 +443,12 @@ static void radeon_bo_set_tiling(struct r300_winsys_bo *_buf, sched_yield(); } - if (microtiled == R300_BUFFER_TILED) + if (microtiled == RADEON_LAYOUT_TILED) args.tiling_flags |= RADEON_BO_FLAGS_MICRO_TILE; - else if (microtiled == R300_BUFFER_SQUARETILED) + else if (microtiled == RADEON_LAYOUT_SQUARETILED) args.tiling_flags |= RADEON_BO_FLAGS_MICRO_TILE_SQUARE; - if (macrotiled == R300_BUFFER_TILED) + if (macrotiled == RADEON_LAYOUT_TILED) args.tiling_flags |= RADEON_BO_FLAGS_MACRO_TILE; args.handle = bo->handle; @@ -434,38 +460,35 @@ static void radeon_bo_set_tiling(struct r300_winsys_bo *_buf, sizeof(args)); } -static struct r300_winsys_cs_handle *radeon_drm_get_cs_handle( - struct r300_winsys_bo *_buf) +static struct radeon_winsys_cs_handle *radeon_drm_get_cs_handle( + struct pb_buffer *_buf) { /* return radeon_bo. */ - return (struct r300_winsys_cs_handle*) + return (struct radeon_winsys_cs_handle*) get_radeon_bo(pb_buffer(_buf)); } static unsigned get_pb_usage_from_create_flags(unsigned bind, unsigned usage, - enum r300_buffer_domain domain) + enum radeon_bo_domain domain) { unsigned res = 0; - if (bind & (PIPE_BIND_VERTEX_BUFFER | PIPE_BIND_INDEX_BUFFER)) - res |= RADEON_PB_USAGE_CACHE; - - if (domain & R300_DOMAIN_GTT) + if (domain & RADEON_DOMAIN_GTT) res |= RADEON_PB_USAGE_DOMAIN_GTT; - if (domain & R300_DOMAIN_VRAM) + if (domain & RADEON_DOMAIN_VRAM) res |= RADEON_PB_USAGE_DOMAIN_VRAM; return res; } -static struct r300_winsys_bo * -radeon_winsys_bo_create(struct r300_winsys_screen *rws, +static struct pb_buffer * +radeon_winsys_bo_create(struct radeon_winsys *rws, unsigned size, unsigned alignment, unsigned bind, unsigned usage, - enum r300_buffer_domain domain) + enum radeon_bo_domain domain) { struct radeon_drm_winsys *ws = radeon_drm_winsys(rws); struct pb_desc desc; @@ -486,10 +509,10 @@ radeon_winsys_bo_create(struct r300_winsys_screen *rws, if (!buffer) return NULL; - return (struct r300_winsys_bo*)buffer; + return (struct pb_buffer*)buffer; } -static struct r300_winsys_bo *radeon_winsys_bo_from_handle(struct r300_winsys_screen *rws, +static struct pb_buffer *radeon_winsys_bo_from_handle(struct radeon_winsys *rws, struct winsys_handle *whandle, unsigned *stride, unsigned *size) @@ -531,7 +554,6 @@ static struct r300_winsys_bo *radeon_winsys_bo_from_handle(struct r300_winsys_sc bo->handle = open_arg.handle; bo->size = open_arg.size; bo->name = whandle->handle; - radeon_bo_ref(bo); /* Initialize it. */ pipe_reference_init(&bo->base.base.reference, 1); @@ -553,14 +575,14 @@ done: if (size) *size = bo->base.base.size; - return (struct r300_winsys_bo*)bo; + return (struct pb_buffer*)bo; fail: pipe_mutex_unlock(mgr->bo_handles_mutex); return NULL; } -static boolean radeon_winsys_bo_get_handle(struct r300_winsys_bo *buffer, +static boolean radeon_winsys_bo_get_handle(struct pb_buffer *buffer, unsigned stride, struct winsys_handle *whandle) { diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_bo.h b/src/gallium/winsys/radeon/drm/radeon_drm_bo.h index a26866b7e75..b94881bc4ce 100644 --- a/src/gallium/winsys/radeon/drm/radeon_drm_bo.h +++ b/src/gallium/winsys/radeon/drm/radeon_drm_bo.h @@ -29,14 +29,13 @@ * Jérôme Glisse <[email protected]> * Marek Olšák <[email protected]> */ -#ifndef RADEON_DRM_BUFFER_H -#define RADEON_DRM_BUFFER_H +#ifndef RADEON_DRM_BO_H +#define RADEON_DRM_BO_H -#include "radeon_winsys.h" +#include "radeon_drm_winsys.h" #include "pipebuffer/pb_bufmgr.h" #include "os/os_thread.h" -#define RADEON_PB_USAGE_CACHE (1 << 28) #define RADEON_PB_USAGE_DOMAIN_GTT (1 << 29) #define RADEON_PB_USAGE_DOMAIN_VRAM (1 << 30) @@ -54,8 +53,6 @@ struct radeon_bo { uint32_t handle; uint32_t name; - int ref_count; - /* how many command streams is this bo referenced in? */ int num_cs_references; @@ -63,6 +60,13 @@ struct radeon_bo { * thread, is this bo referenced in? */ int num_active_ioctls; + /* Whether the buffer has been relocated for write and is busy since then. + * This field is updated in: + * - radeon_drm_cs_flush (to TRUE if it's relocated for write) + * - radeon_bo_is_busy (to FALSE if it's not busy) + * - radeon_bo_wait (to FALSE) */ + boolean busy_for_write; + boolean flinked; uint32_t flink; }; @@ -70,16 +74,14 @@ struct radeon_bo { struct pb_manager *radeon_bomgr_create(struct radeon_drm_winsys *rws); void radeon_bomgr_init_functions(struct radeon_drm_winsys *ws); -void radeon_bo_unref(struct radeon_bo *buf); - - -static INLINE void radeon_bo_ref(struct radeon_bo *bo) +static INLINE +void radeon_bo_reference(struct radeon_bo **dst, struct radeon_bo *src) { - p_atomic_inc(&bo->ref_count); + pb_reference((struct pb_buffer**)dst, (struct pb_buffer*)src); } static INLINE struct pb_buffer * -pb_buffer(struct r300_winsys_bo *buffer) +pb_buffer(struct pb_buffer *buffer) { return (struct pb_buffer *)buffer; } diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c index 951791a1727..0139de1973a 100644 --- a/src/gallium/winsys/radeon/drm/radeon_drm_cs.c +++ b/src/gallium/winsys/radeon/drm/radeon_drm_cs.c @@ -36,7 +36,7 @@ /* This file replaces libdrm's radeon_cs_gem with our own implemention. - It's optimized specifically for r300g, but r600g could use it as well. + It's optimized specifically for Radeon DRM. Reloc writes and space checking are faster and simpler than their counterparts in libdrm (the time complexity of all the functions is O(1) in nearly all scenarios, thanks to hashing). @@ -111,8 +111,7 @@ static void radeon_cs_context_cleanup(struct radeon_cs_context *csc) for (i = 0; i < csc->crelocs; i++) { p_atomic_dec(&csc->relocs_bo[i]->num_cs_references); - radeon_bo_unref(csc->relocs_bo[i]); - csc->relocs_bo[i] = NULL; + radeon_bo_reference(&csc->relocs_bo[i], NULL); } csc->crelocs = 0; @@ -130,7 +129,7 @@ static void radeon_destroy_cs_context(struct radeon_cs_context *csc) FREE(csc->relocs); } -static struct r300_winsys_cs *radeon_drm_cs_create(struct r300_winsys_screen *rws) +static struct radeon_winsys_cs *radeon_drm_cs_create(struct radeon_winsys *rws) { struct radeon_drm_winsys *ws = radeon_drm_winsys(rws); struct radeon_drm_cs *cs; @@ -164,9 +163,9 @@ static struct r300_winsys_cs *radeon_drm_cs_create(struct r300_winsys_screen *rw #define OUT_CS(cs, value) (cs)->buf[(cs)->cdw++] = (value) static INLINE void update_domains(struct drm_radeon_cs_reloc *reloc, - enum r300_buffer_domain rd, - enum r300_buffer_domain wd, - enum r300_buffer_domain *added_domains) + enum radeon_bo_domain rd, + enum radeon_bo_domain wd, + enum radeon_bo_domain *added_domains) { *added_domains = (rd | wd) & ~(reloc->read_domains | reloc->write_domain); @@ -221,9 +220,9 @@ int radeon_get_reloc(struct radeon_cs_context *csc, struct radeon_bo *bo) static void radeon_add_reloc(struct radeon_cs_context *csc, struct radeon_bo *bo, - enum r300_buffer_domain rd, - enum r300_buffer_domain wd, - enum r300_buffer_domain *added_domains) + enum radeon_bo_domain rd, + enum radeon_bo_domain wd, + enum radeon_bo_domain *added_domains) { struct drm_radeon_cs_reloc *reloc; unsigned i; @@ -266,9 +265,9 @@ static void radeon_add_reloc(struct radeon_cs_context *csc, } /* Initialize the new relocation. */ - radeon_bo_ref(bo); + csc->relocs_bo[csc->crelocs] = NULL; + radeon_bo_reference(&csc->relocs_bo[csc->crelocs], bo); p_atomic_inc(&bo->num_cs_references); - csc->relocs_bo[csc->crelocs] = bo; reloc = &csc->relocs[csc->crelocs]; reloc->handle = bo->handle; reloc->read_domains = rd; @@ -285,27 +284,27 @@ static void radeon_add_reloc(struct radeon_cs_context *csc, *added_domains = rd | wd; } -static void radeon_drm_cs_add_reloc(struct r300_winsys_cs *rcs, - struct r300_winsys_cs_handle *buf, - enum r300_buffer_domain rd, - enum r300_buffer_domain wd) +static void radeon_drm_cs_add_reloc(struct radeon_winsys_cs *rcs, + struct radeon_winsys_cs_handle *buf, + enum radeon_bo_domain rd, + enum radeon_bo_domain wd) { struct radeon_drm_cs *cs = radeon_drm_cs(rcs); struct radeon_bo *bo = (struct radeon_bo*)buf; - enum r300_buffer_domain added_domains; + enum radeon_bo_domain added_domains; radeon_add_reloc(cs->csc, bo, rd, wd, &added_domains); if (!added_domains) return; - if (added_domains & R300_DOMAIN_GTT) + if (added_domains & RADEON_DOMAIN_GTT) cs->csc->used_gart += bo->size; - if (added_domains & R300_DOMAIN_VRAM) + if (added_domains & RADEON_DOMAIN_VRAM) cs->csc->used_vram += bo->size; } -static boolean radeon_drm_cs_validate(struct r300_winsys_cs *rcs) +static boolean radeon_drm_cs_validate(struct radeon_winsys_cs *rcs) { struct radeon_drm_cs *cs = radeon_drm_cs(rcs); @@ -313,8 +312,8 @@ static boolean radeon_drm_cs_validate(struct r300_winsys_cs *rcs) cs->csc->used_vram < cs->ws->vram_size * 0.8; } -static void radeon_drm_cs_write_reloc(struct r300_winsys_cs *rcs, - struct r300_winsys_cs_handle *buf) +static void radeon_drm_cs_write_reloc(struct radeon_winsys_cs *rcs, + struct radeon_winsys_cs_handle *buf) { struct radeon_drm_cs *cs = radeon_drm_cs(rcs); struct radeon_bo *bo = (struct radeon_bo*)buf; @@ -322,7 +321,7 @@ static void radeon_drm_cs_write_reloc(struct r300_winsys_cs *rcs, unsigned index = radeon_get_reloc(cs->csc, bo); if (index == -1) { - fprintf(stderr, "r300: Cannot get a relocation in %s.\n", __func__); + fprintf(stderr, "radeon: Cannot get a relocation in %s.\n", __func__); return; } @@ -366,7 +365,7 @@ void radeon_drm_cs_sync_flush(struct radeon_drm_cs *cs) DEBUG_GET_ONCE_BOOL_OPTION(thread, "RADEON_THREAD", TRUE) -static void radeon_drm_cs_flush(struct r300_winsys_cs *rcs, unsigned flags) +static void radeon_drm_cs_flush(struct radeon_winsys_cs *rcs, unsigned flags) { struct radeon_drm_cs *cs = radeon_drm_cs(rcs); struct radeon_cs_context *tmp; @@ -379,11 +378,18 @@ static void radeon_drm_cs_flush(struct r300_winsys_cs *rcs, unsigned flags) cs->csc->chunks[0].length_dw = cs->base.cdw; - for (i = 0; i < crelocs; i++) + for (i = 0; i < crelocs; i++) { + /* Update the number of active asynchronous CS ioctls for the buffer. */ p_atomic_inc(&cs->csc->relocs_bo[i]->num_active_ioctls); + /* Update whether the buffer is busy for write. */ + if (cs->csc->relocs[i].write_domain) { + cs->csc->relocs_bo[i]->busy_for_write = TRUE; + } + } + if (cs->ws->num_cpus > 1 && debug_get_option_thread() && - (flags & R300_FLUSH_ASYNC)) { + (flags & RADEON_FLUSH_ASYNC)) { cs->thread = pipe_thread_create(radeon_drm_cs_emit_ioctl, cs->csc); assert(cs->thread); } else { @@ -403,7 +409,7 @@ static void radeon_drm_cs_flush(struct r300_winsys_cs *rcs, unsigned flags) cs->base.cdw = 0; } -static void radeon_drm_cs_destroy(struct r300_winsys_cs *rcs) +static void radeon_drm_cs_destroy(struct radeon_winsys_cs *rcs) { struct radeon_drm_cs *cs = radeon_drm_cs(rcs); radeon_drm_cs_sync_flush(cs); @@ -415,7 +421,7 @@ static void radeon_drm_cs_destroy(struct r300_winsys_cs *rcs) FREE(cs); } -static void radeon_drm_cs_set_flush(struct r300_winsys_cs *rcs, +static void radeon_drm_cs_set_flush(struct radeon_winsys_cs *rcs, void (*flush)(void *ctx, unsigned flags), void *user) { @@ -424,8 +430,8 @@ static void radeon_drm_cs_set_flush(struct r300_winsys_cs *rcs, cs->flush_data = user; } -static boolean radeon_bo_is_referenced(struct r300_winsys_cs *rcs, - struct r300_winsys_cs_handle *_buf) +static boolean radeon_bo_is_referenced(struct radeon_winsys_cs *rcs, + struct radeon_winsys_cs_handle *_buf) { struct radeon_drm_cs *cs = radeon_drm_cs(rcs); struct radeon_bo *bo = (struct radeon_bo*)_buf; diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_cs.h b/src/gallium/winsys/radeon/drm/radeon_drm_cs.h index dfaa161c318..339beedc6ab 100644 --- a/src/gallium/winsys/radeon/drm/radeon_drm_cs.h +++ b/src/gallium/winsys/radeon/drm/radeon_drm_cs.h @@ -31,7 +31,7 @@ #include <radeon_drm.h> struct radeon_cs_context { - uint32_t buf[R300_MAX_CMDBUF_DWORDS]; + uint32_t buf[RADEON_MAX_CMDBUF_DWORDS]; int fd; struct drm_radeon_cs cs; @@ -54,7 +54,7 @@ struct radeon_cs_context { }; struct radeon_drm_cs { - struct r300_winsys_cs base; + struct radeon_winsys_cs base; /* We flip between these two CS. While one is being consumed * by the kernel in another thread, the other one is being filled @@ -79,19 +79,37 @@ struct radeon_drm_cs { int radeon_get_reloc(struct radeon_cs_context *csc, struct radeon_bo *bo); static INLINE struct radeon_drm_cs * -radeon_drm_cs(struct r300_winsys_cs *base) +radeon_drm_cs(struct radeon_winsys_cs *base) { return (struct radeon_drm_cs*)base; } -static INLINE boolean radeon_bo_is_referenced_by_cs(struct radeon_drm_cs *cs, - struct radeon_bo *bo) +static INLINE boolean +radeon_bo_is_referenced_by_cs(struct radeon_drm_cs *cs, + struct radeon_bo *bo) { return bo->num_cs_references == bo->rws->num_cs || (bo->num_cs_references && radeon_get_reloc(cs->csc, bo) != -1); } -static INLINE boolean radeon_bo_is_referenced_by_any_cs(struct radeon_bo *bo) +static INLINE boolean +radeon_bo_is_referenced_by_cs_for_write(struct radeon_drm_cs *cs, + struct radeon_bo *bo) +{ + int index; + + if (!bo->num_cs_references) + return FALSE; + + index = radeon_get_reloc(cs->csc, bo); + if (index == -1) + return FALSE; + + return cs->csc->relocs[index].write_domain != 0; +} + +static INLINE boolean +radeon_bo_is_referenced_by_any_cs(struct radeon_bo *bo) { return bo->num_cs_references; } diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_public.h b/src/gallium/winsys/radeon/drm/radeon_drm_public.h index 3a208cdd4c4..76d9dda422d 100644 --- a/src/gallium/winsys/radeon/drm/radeon_drm_public.h +++ b/src/gallium/winsys/radeon/drm/radeon_drm_public.h @@ -3,9 +3,9 @@ #include "pipe/p_defines.h" -struct r300_winsys_screen; +struct radeon_winsys; -struct r300_winsys_screen *r300_drm_winsys_screen_create(int fd); +struct radeon_winsys *radeon_drm_winsys_create(int fd); static INLINE boolean is_r3xx(int pciid) { diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_common.c b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c index 72c2ff11125..37f6d18689d 100644 --- a/src/gallium/winsys/radeon/drm/radeon_drm_common.c +++ b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c @@ -31,7 +31,6 @@ * Marek Olšák <[email protected]> */ -#include "radeon_winsys.h" #include "radeon_drm_bo.h" #include "radeon_drm_cs.h" #include "radeon_drm_public.h" @@ -164,7 +163,7 @@ static void do_ioctls(struct radeon_drm_winsys *winsys) winsys->num_cpus = sysconf(_SC_NPROCESSORS_ONLN); } -static void radeon_winsys_destroy(struct r300_winsys_screen *rws) +static void radeon_winsys_destroy(struct radeon_winsys *rws) { struct radeon_drm_winsys *ws = (struct radeon_drm_winsys*)rws; @@ -173,41 +172,41 @@ static void radeon_winsys_destroy(struct r300_winsys_screen *rws) FREE(rws); } -static uint32_t radeon_get_value(struct r300_winsys_screen *rws, - enum r300_value_id id) +static uint32_t radeon_get_value(struct radeon_winsys *rws, + enum radeon_value_id id) { struct radeon_drm_winsys *ws = (struct radeon_drm_winsys *)rws; switch(id) { - case R300_VID_PCI_ID: + case RADEON_VID_PCI_ID: return ws->pci_id; - case R300_VID_GB_PIPES: + case RADEON_VID_R300_GB_PIPES: return ws->gb_pipes; - case R300_VID_Z_PIPES: + case RADEON_VID_R300_Z_PIPES: return ws->z_pipes; - case R300_VID_GART_SIZE: + case RADEON_VID_GART_SIZE: return ws->gart_size; - case R300_VID_VRAM_SIZE: + case RADEON_VID_VRAM_SIZE: return ws->vram_size; - case R300_VID_DRM_MAJOR: + case RADEON_VID_DRM_MAJOR: return ws->drm_major; - case R300_VID_DRM_MINOR: + case RADEON_VID_DRM_MINOR: return ws->drm_minor; - case R300_VID_DRM_PATCHLEVEL: + case RADEON_VID_DRM_PATCHLEVEL: return ws->drm_patchlevel; - case R300_VID_DRM_2_6_0: + case RADEON_VID_DRM_2_6_0: return ws->drm_major*100 + ws->drm_minor >= 206; - case R300_VID_DRM_2_8_0: + case RADEON_VID_DRM_2_8_0: return ws->drm_major*100 + ws->drm_minor >= 208; - case R300_CAN_HYPERZ: + case RADEON_VID_CAN_HYPERZ: return ws->hyperz; - case R300_CAN_AACOMPRESS: + case RADEON_VID_CAN_AACOMPRESS: return ws->aacompress; } return 0; } -struct r300_winsys_screen *r300_drm_winsys_screen_create(int fd) +struct radeon_winsys *radeon_drm_winsys_create(int fd) { struct radeon_drm_winsys *ws = CALLOC_STRUCT(radeon_drm_winsys); if (!ws) { diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.h b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.h new file mode 100644 index 00000000000..e1b9493fc10 --- /dev/null +++ b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.h @@ -0,0 +1,67 @@ +/* + * Copyright © 2009 Corbin Simpson + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sub license, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS, AUTHORS + * 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. + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial portions + * of the Software. + */ +/* + * Authors: + * Corbin Simpson <[email protected]> + */ +#ifndef RADEON_DRM_WINSYS_H +#define RADEON_DRM_WINSYS_H + +#include "radeon_winsys.h" + +struct radeon_drm_winsys { + struct radeon_winsys base; + + int fd; /* DRM file descriptor */ + int num_cs; /* The number of command streams created. */ + + struct pb_manager *kman; + struct pb_manager *cman; + + uint32_t pci_id; /* PCI ID */ + uint32_t gb_pipes; /* GB pipe count */ + uint32_t z_pipes; /* Z pipe count (rv530 only) */ + uint32_t gart_size; /* GART size. */ + uint32_t vram_size; /* VRAM size. */ + uint32_t num_cpus; /* Number of CPUs. */ + + unsigned drm_major; + unsigned drm_minor; + unsigned drm_patchlevel; + + /* Hyper-Z user */ + boolean hyperz; + /* AA compression (CMask) */ + boolean aacompress; +}; + +static INLINE struct radeon_drm_winsys * +radeon_drm_winsys(struct radeon_winsys *base) +{ + return (struct radeon_drm_winsys*)base; +} + +#endif diff --git a/src/gallium/winsys/radeon/drm/radeon_winsys.h b/src/gallium/winsys/radeon/drm/radeon_winsys.h index 9ecbb074572..ca0e6624138 100644 --- a/src/gallium/winsys/radeon/drm/radeon_winsys.h +++ b/src/gallium/winsys/radeon/drm/radeon_winsys.h @@ -1,67 +1,319 @@ /* - * Copyright © 2009 Corbin Simpson - * All Rights Reserved. + * Copyright 2008 Corbin Simpson <[email protected]> + * Copyright 2010 Marek Olšák <[email protected]> * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * on the rights to use, copy, modify, merge, publish, distribute, sub + * license, and/or sell copies of the Software, and to permit persons to whom + * the Software is furnished to do so, subject to the following conditions: * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS, AUTHORS - * 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. + * 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 above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - */ -/* - * Authors: - * Corbin Simpson <[email protected]> - */ + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + * USE OR OTHER DEALINGS IN THE SOFTWARE. */ + #ifndef RADEON_WINSYS_H #define RADEON_WINSYS_H -#include "r300_winsys.h" +/* The public winsys interface header for the radeon driver. */ -struct radeon_drm_winsys { - struct r300_winsys_screen base; +#include "pipebuffer/pb_bufmgr.h" +#include "pipe/p_defines.h" +#include "pipe/p_state.h" - int fd; /* DRM file descriptor */ - int num_cs; /* The number of command streams created. */ +#define RADEON_MAX_CMDBUF_DWORDS (16 * 1024) +#define RADEON_FLUSH_ASYNC (1 << 0) - struct pb_manager *kman; - struct pb_manager *cman; +/* Tiling flags. */ +enum radeon_bo_layout { + RADEON_LAYOUT_LINEAR = 0, + RADEON_LAYOUT_TILED, + RADEON_LAYOUT_SQUARETILED, - uint32_t pci_id; /* PCI ID */ - uint32_t gb_pipes; /* GB pipe count */ - uint32_t z_pipes; /* Z pipe count (rv530 only) */ - uint32_t gart_size; /* GART size. */ - uint32_t vram_size; /* VRAM size. */ - uint32_t num_cpus; /* Number of CPUs. */ + RADEON_LAYOUT_UNKNOWN +}; + +enum radeon_bo_domain { /* bitfield */ + RADEON_DOMAIN_GTT = 2, + RADEON_DOMAIN_VRAM = 4 +}; - unsigned drm_major; - unsigned drm_minor; - unsigned drm_patchlevel; +struct winsys_handle; +struct radeon_winsys_cs_handle; /* for write_reloc etc. */ - /* Hyper-Z user */ - boolean hyperz; - /* AA compression (CMask) */ - boolean aacompress; +struct radeon_winsys_cs { + unsigned cdw; /* Number of used dwords. */ + uint32_t *buf; /* The command buffer. */ }; -static INLINE struct radeon_drm_winsys * -radeon_drm_winsys(struct r300_winsys_screen *base) -{ - return (struct radeon_drm_winsys*)base; -} +enum radeon_value_id { + RADEON_VID_PCI_ID, + RADEON_VID_R300_GB_PIPES, + RADEON_VID_R300_Z_PIPES, + RADEON_VID_GART_SIZE, + RADEON_VID_VRAM_SIZE, + RADEON_VID_DRM_MAJOR, + RADEON_VID_DRM_MINOR, + RADEON_VID_DRM_PATCHLEVEL, + + /* These should probably go away: */ + + /* R300 features: + * - Hyper-Z + * - GB_Z_PEQ_CONFIG on rv350->r4xx + * - R500 FG_ALPHA_VALUE + * + * R600 features: + * - TBD + */ + RADEON_VID_DRM_2_6_0, + + /* R300 features: + * - R500 US_FORMAT regs + * - R500 ARGB2101010 colorbuffer + * - CMask and AA regs + * - R16F/RG16F + * + * R600 features: + * - TBD + */ + RADEON_VID_DRM_2_8_0, + + RADEON_VID_CAN_HYPERZ, /* ZMask + HiZ */ + RADEON_VID_CAN_AACOMPRESS, /* CMask */ +}; + +struct radeon_winsys { + /** + * Destroy this winsys. + * + * \param ws The winsys this function is called from. + */ + void (*destroy)(struct radeon_winsys *ws); + + /** + * Query a system value from a winsys. + * + * \param ws The winsys this function is called from. + * \param vid One of the RADEON_VID_* enums. + */ + uint32_t (*get_value)(struct radeon_winsys *ws, + enum radeon_value_id vid); + + /************************************************************************** + * Buffer management. Buffer attributes are mostly fixed over its lifetime. + * + * Remember that gallium gets to choose the interface it needs, and the + * window systems must then implement that interface (rather than the + * other way around...). + *************************************************************************/ + + /** + * Create a buffer object. + * + * \param ws The winsys this function is called from. + * \param size The size to allocate. + * \param alignment An alignment of the buffer in memory. + * \param bind A bitmask of the PIPE_BIND_* flags. + * \param usage A bitmask of the PIPE_USAGE_* flags. + * \param domain A bitmask of the RADEON_DOMAIN_* flags. + * \return The created buffer object. + */ + struct pb_buffer *(*buffer_create)(struct radeon_winsys *ws, + unsigned size, + unsigned alignment, + unsigned bind, + unsigned usage, + enum radeon_bo_domain domain); + + struct radeon_winsys_cs_handle *(*buffer_get_cs_handle)( + struct pb_buffer *buf); + + /** + * Map the entire data store of a buffer object into the client's address + * space. + * + * \param buf A winsys buffer object to map. + * \param cs A command stream to flush if the buffer is referenced by it. + * \param usage A bitmask of the PIPE_TRANSFER_* flags. + * \return The pointer at the beginning of the buffer. + */ + void *(*buffer_map)(struct pb_buffer *buf, + struct radeon_winsys_cs *cs, + enum pipe_transfer_usage usage); + + /** + * Unmap a buffer object from the client's address space. + * + * \param buf A winsys buffer object to unmap. + */ + void (*buffer_unmap)(struct pb_buffer *buf); + + /** + * Return TRUE if a buffer object is being used by the GPU. + * + * \param buf A winsys buffer object. + */ + boolean (*buffer_is_busy)(struct pb_buffer *buf); + + /** + * Wait for a buffer object until it is not used by a GPU. This is + * equivalent to a fence placed after the last command using the buffer, + * and synchronizing to the fence. + * + * \param buf A winsys buffer object to wait for. + */ + void (*buffer_wait)(struct pb_buffer *buf); + + /** + * Return tiling flags describing a memory layout of a buffer object. + * + * \param buf A winsys buffer object to get the flags from. + * \param macrotile A pointer to the return value of the microtile flag. + * \param microtile A pointer to the return value of the macrotile flag. + * + * \note microtile and macrotile are not bitmasks! + */ + void (*buffer_get_tiling)(struct pb_buffer *buf, + enum radeon_bo_layout *microtile, + enum radeon_bo_layout *macrotile); + + /** + * Set tiling flags describing a memory layout of a buffer object. + * + * \param buf A winsys buffer object to set the flags for. + * \param cs A command stream to flush if the buffer is referenced by it. + * \param macrotile A macrotile flag. + * \param microtile A microtile flag. + * \param stride A stride of the buffer in bytes, for texturing. + * + * \note microtile and macrotile are not bitmasks! + */ + void (*buffer_set_tiling)(struct pb_buffer *buf, + struct radeon_winsys_cs *cs, + enum radeon_bo_layout microtile, + enum radeon_bo_layout macrotile, + unsigned stride); + + /** + * Get a winsys buffer from a winsys handle. The internal structure + * of the handle is platform-specific and only a winsys should access it. + * + * \param ws The winsys this function is called from. + * \param whandle A winsys handle pointer as was received from a state + * tracker. + * \param stride The returned buffer stride in bytes. + * \param size The returned buffer size. + */ + struct pb_buffer *(*buffer_from_handle)(struct radeon_winsys *ws, + struct winsys_handle *whandle, + unsigned *stride, + unsigned *size); + + /** + * Get a winsys handle from a winsys buffer. The internal structure + * of the handle is platform-specific and only a winsys should access it. + * + * \param buf A winsys buffer object to get the handle from. + * \param whandle A winsys handle pointer. + * \param stride A stride of the buffer in bytes, for texturing. + * \return TRUE on success. + */ + boolean (*buffer_get_handle)(struct pb_buffer *buf, + unsigned stride, + struct winsys_handle *whandle); + + /************************************************************************** + * Command submission. + * + * Each pipe context should create its own command stream and submit + * commands independently of other contexts. + *************************************************************************/ + + /** + * Create a command stream. + * + * \param ws The winsys this function is called from. + */ + struct radeon_winsys_cs *(*cs_create)(struct radeon_winsys *ws); + + /** + * Destroy a command stream. + * + * \param cs A command stream to destroy. + */ + void (*cs_destroy)(struct radeon_winsys_cs *cs); + + /** + * Add a new buffer relocation. Every relocation must first be added + * before it can be written. + * + * \param cs A command stream to add buffer for validation against. + * \param buf A winsys buffer to validate. + * \param rd A read domain containing a bitmask of the RADEON_DOMAIN_* flags. + * \param wd A write domain containing a bitmask of the RADEON_DOMAIN_* flags. + */ + void (*cs_add_reloc)(struct radeon_winsys_cs *cs, + struct radeon_winsys_cs_handle *buf, + enum radeon_bo_domain rd, + enum radeon_bo_domain wd); + + /** + * Return TRUE if there is enough memory in VRAM and GTT for the relocs + * added so far. + * + * \param cs A command stream to validate. + */ + boolean (*cs_validate)(struct radeon_winsys_cs *cs); + + /** + * Write a relocated dword to a command buffer. + * + * \param cs A command stream the relocation is written to. + * \param buf A winsys buffer to write the relocation for. + * \param rd A read domain containing a bitmask of the RADEON_DOMAIN_* flags. + * \param wd A write domain containing a bitmask of the RADEON_DOMAIN_* flags. + */ + void (*cs_write_reloc)(struct radeon_winsys_cs *cs, + struct radeon_winsys_cs_handle *buf); + + /** + * Flush a command stream. + * + * \param cs A command stream to flush. + * \param flags, RADEON_FLUSH_ASYNC or 0. + */ + void (*cs_flush)(struct radeon_winsys_cs *cs, unsigned flags); + + /** + * Set a flush callback which is called from winsys when flush is + * required. + * + * \param cs A command stream to set the callback for. + * \param flush A flush callback function associated with the command stream. + * \param user A user pointer that will be passed to the flush callback. + */ + void (*cs_set_flush)(struct radeon_winsys_cs *cs, + void (*flush)(void *ctx, unsigned flags), + void *user); + + /** + * Return TRUE if a buffer is referenced by a command stream. + * + * \param cs A command stream. + * \param buf A winsys buffer. + */ + boolean (*cs_is_buffer_referenced)(struct radeon_winsys_cs *cs, + struct radeon_winsys_cs_handle *buf); +}; #endif diff --git a/src/glsl/ast_function.cpp b/src/glsl/ast_function.cpp index e5cb8733952..67147b6718f 100644 --- a/src/glsl/ast_function.cpp +++ b/src/glsl/ast_function.cpp @@ -107,7 +107,11 @@ match_function_by_name(exec_list *instructions, const char *name, * FINISHME: matching signature but shader X + N contains an _exact_ * FINISHME: matching signature. */ - if (sig == NULL && (f == NULL || state->es_shader || !f->has_user_signature()) && state->symbols->get_type(name) == NULL && (state->language_version == 110 || state->symbols->get_variable(name) == NULL)) { + if (sig == NULL + && (f == NULL || state->es_shader || !f->has_user_signature()) + && state->symbols->get_type(name) == NULL + && (state->language_version == 110 + || state->symbols->get_variable(name) == NULL)) { /* The current shader doesn't contain a matching function or signature. * Before giving up, look for the prototype in the built-in functions. */ diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp index cdb16fd492b..3b87f0d56de 100644 --- a/src/glsl/ast_to_hir.cpp +++ b/src/glsl/ast_to_hir.cpp @@ -848,6 +848,36 @@ do_comparison(void *mem_ctx, int operation, ir_rvalue *op0, ir_rvalue *op1) return cmp; } +/* For logical operations, we want to ensure that the operands are + * scalar booleans. If it isn't, emit an error and return a constant + * boolean to avoid triggering cascading error messages. + */ +ir_rvalue * +get_scalar_boolean_operand(exec_list *instructions, + struct _mesa_glsl_parse_state *state, + ast_expression *parent_expr, + int operand, + const char *operand_name, + bool *error_emitted) +{ + ast_expression *expr = parent_expr->subexpressions[operand]; + void *ctx = state; + ir_rvalue *val = expr->hir(instructions, state); + + if (val->type->is_boolean() && val->type->is_scalar()) + return val; + + if (!*error_emitted) { + YYLTYPE loc = expr->get_location(); + _mesa_glsl_error(&loc, state, "%s of `%s' must be scalar boolean", + operand_name, + parent_expr->operator_string(parent_expr->oper)); + *error_emitted = true; + } + + return new(ctx) ir_constant(true); +} + ir_rvalue * ast_expression::hir(exec_list *instructions, struct _mesa_glsl_parse_state *state) @@ -910,7 +940,7 @@ ast_expression::hir(exec_list *instructions, }; ir_rvalue *result = NULL; ir_rvalue *op[3]; - const struct glsl_type *type = glsl_type::error_type; + const struct glsl_type *type; /* a temporary variable for switch cases */ bool error_emitted = false; YYLTYPE loc; @@ -924,7 +954,6 @@ ast_expression::hir(exec_list *instructions, result = do_assignment(instructions, state, op[0], op[1], false, this->subexpressions[0]->get_location()); error_emitted = result->type->is_error(); - type = result->type; break; } @@ -1043,10 +1072,12 @@ ast_expression::hir(exec_list *instructions, error_emitted = true; } - result = do_comparison(ctx, operations[this->oper], op[0], op[1]); - type = glsl_type::bool_type; - - assert(error_emitted || (result->type == glsl_type::bool_type)); + if (error_emitted) { + result = new(ctx) ir_constant(false); + } else { + result = do_comparison(ctx, operations[this->oper], op[0], op[1]); + assert(result->type == glsl_type::bool_type); + } break; case ast_bit_and: @@ -1079,29 +1110,16 @@ ast_expression::hir(exec_list *instructions, break; case ast_logic_and: { - op[0] = this->subexpressions[0]->hir(instructions, state); - - if (!op[0]->type->is_boolean() || !op[0]->type->is_scalar()) { - YYLTYPE loc = this->subexpressions[0]->get_location(); - - _mesa_glsl_error(& loc, state, "LHS of `%s' must be scalar boolean", - operator_string(this->oper)); - error_emitted = true; - } + exec_list rhs_instructions; + op[0] = get_scalar_boolean_operand(instructions, state, this, 0, + "LHS", &error_emitted); + op[1] = get_scalar_boolean_operand(&rhs_instructions, state, this, 1, + "RHS", &error_emitted); ir_constant *op0_const = op[0]->constant_expression_value(); if (op0_const) { if (op0_const->value.b[0]) { - op[1] = this->subexpressions[1]->hir(instructions, state); - - if (!op[1]->type->is_boolean() || !op[1]->type->is_scalar()) { - YYLTYPE loc = this->subexpressions[1]->get_location(); - - _mesa_glsl_error(& loc, state, - "RHS of `%s' must be scalar boolean", - operator_string(this->oper)); - error_emitted = true; - } + instructions->append_list(&rhs_instructions); result = op[1]; } else { result = op0_const; @@ -1116,17 +1134,7 @@ ast_expression::hir(exec_list *instructions, ir_if *const stmt = new(ctx) ir_if(op[0]); instructions->push_tail(stmt); - op[1] = this->subexpressions[1]->hir(&stmt->then_instructions, state); - - if (!op[1]->type->is_boolean() || !op[1]->type->is_scalar()) { - YYLTYPE loc = this->subexpressions[1]->get_location(); - - _mesa_glsl_error(& loc, state, - "RHS of `%s' must be scalar boolean", - operator_string(this->oper)); - error_emitted = true; - } - + stmt->then_instructions.append_list(&rhs_instructions); ir_dereference *const then_deref = new(ctx) ir_dereference_variable(tmp); ir_assignment *const then_assign = new(ctx) ir_assignment(then_deref, op[1], NULL); @@ -1144,31 +1152,17 @@ ast_expression::hir(exec_list *instructions, } case ast_logic_or: { - op[0] = this->subexpressions[0]->hir(instructions, state); - - if (!op[0]->type->is_boolean() || !op[0]->type->is_scalar()) { - YYLTYPE loc = this->subexpressions[0]->get_location(); - - _mesa_glsl_error(& loc, state, "LHS of `%s' must be scalar boolean", - operator_string(this->oper)); - error_emitted = true; - } + exec_list rhs_instructions; + op[0] = get_scalar_boolean_operand(instructions, state, this, 0, + "LHS", &error_emitted); + op[1] = get_scalar_boolean_operand(&rhs_instructions, state, this, 1, + "RHS", &error_emitted); ir_constant *op0_const = op[0]->constant_expression_value(); if (op0_const) { if (op0_const->value.b[0]) { result = op0_const; } else { - op[1] = this->subexpressions[1]->hir(instructions, state); - - if (!op[1]->type->is_boolean() || !op[1]->type->is_scalar()) { - YYLTYPE loc = this->subexpressions[1]->get_location(); - - _mesa_glsl_error(& loc, state, - "RHS of `%s' must be scalar boolean", - operator_string(this->oper)); - error_emitted = true; - } result = op[1]; } type = glsl_type::bool_type; @@ -1181,21 +1175,12 @@ ast_expression::hir(exec_list *instructions, ir_if *const stmt = new(ctx) ir_if(op[0]); instructions->push_tail(stmt); - op[1] = this->subexpressions[1]->hir(&stmt->else_instructions, state); - - if (!op[1]->type->is_boolean() || !op[1]->type->is_scalar()) { - YYLTYPE loc = this->subexpressions[1]->get_location(); - - _mesa_glsl_error(& loc, state, "RHS of `%s' must be scalar boolean", - operator_string(this->oper)); - error_emitted = true; - } - ir_dereference *const then_deref = new(ctx) ir_dereference_variable(tmp); ir_assignment *const then_assign = new(ctx) ir_assignment(then_deref, new(ctx) ir_constant(true), NULL); stmt->then_instructions.push_tail(then_assign); + stmt->else_instructions.append_list(&rhs_instructions); ir_dereference *const else_deref = new(ctx) ir_dereference_variable(tmp); ir_assignment *const else_assign = new(ctx) ir_assignment(else_deref, op[1], NULL); @@ -1208,29 +1193,27 @@ ast_expression::hir(exec_list *instructions, } case ast_logic_xor: - op[0] = this->subexpressions[0]->hir(instructions, state); - op[1] = this->subexpressions[1]->hir(instructions, state); - + /* From page 33 (page 39 of the PDF) of the GLSL 1.10 spec: + * + * "The logical binary operators and (&&), or ( | | ), and + * exclusive or (^^). They operate only on two Boolean + * expressions and result in a Boolean expression." + */ + op[0] = get_scalar_boolean_operand(instructions, state, this, 0, "LHS", + &error_emitted); + op[1] = get_scalar_boolean_operand(instructions, state, this, 1, "RHS", + &error_emitted); result = new(ctx) ir_expression(operations[this->oper], glsl_type::bool_type, op[0], op[1]); - type = glsl_type::bool_type; break; case ast_logic_not: - op[0] = this->subexpressions[0]->hir(instructions, state); - - if (!op[0]->type->is_boolean() || !op[0]->type->is_scalar()) { - YYLTYPE loc = this->subexpressions[0]->get_location(); - - _mesa_glsl_error(& loc, state, - "operand of `!' must be scalar boolean"); - error_emitted = true; - } + op[0] = get_scalar_boolean_operand(instructions, state, this, 0, + "operand", &error_emitted); result = new(ctx) ir_expression(operations[this->oper], glsl_type::bool_type, op[0], NULL); - type = glsl_type::bool_type; break; case ast_mul_assign: @@ -1250,7 +1233,6 @@ ast_expression::hir(exec_list *instructions, result = do_assignment(instructions, state, op[0]->clone(ctx, NULL), temp_rhs, false, this->subexpressions[0]->get_location()); - type = result->type; error_emitted = (op[0]->type->is_error()); /* GLSL 1.10 does not allow array assignment. However, we don't have to @@ -1276,7 +1258,6 @@ ast_expression::hir(exec_list *instructions, result = do_assignment(instructions, state, op[0]->clone(ctx, NULL), temp_rhs, false, this->subexpressions[0]->get_location()); - type = result->type; error_emitted = type->is_error(); break; } @@ -1313,20 +1294,14 @@ ast_expression::hir(exec_list *instructions, } case ast_conditional: { - op[0] = this->subexpressions[0]->hir(instructions, state); - /* From page 59 (page 65 of the PDF) of the GLSL 1.50 spec: * * "The ternary selection operator (?:). It operates on three * expressions (exp1 ? exp2 : exp3). This operator evaluates the * first expression, which must result in a scalar Boolean." */ - if (!op[0]->type->is_boolean() || !op[0]->type->is_scalar()) { - YYLTYPE loc = this->subexpressions[0]->get_location(); - - _mesa_glsl_error(& loc, state, "?: condition must be scalar boolean"); - error_emitted = true; - } + op[0] = get_scalar_boolean_operand(instructions, state, this, 0, + "condition", &error_emitted); /* The :? operator is implemented by generating an anonymous temporary * followed by an if-statement. The last instruction in each branch of @@ -1424,7 +1399,6 @@ ast_expression::hir(exec_list *instructions, result = do_assignment(instructions, state, op[0]->clone(ctx, NULL), temp_rhs, false, this->subexpressions[0]->get_location()); - type = result->type; error_emitted = op[0]->type->is_error(); break; } @@ -1454,14 +1428,12 @@ ast_expression::hir(exec_list *instructions, op[0]->clone(ctx, NULL), temp_rhs, false, this->subexpressions[0]->get_location()); - type = result->type; error_emitted = op[0]->type->is_error(); break; } case ast_field_selection: result = _mesa_ast_field_selection_to_hir(this, instructions, state); - type = result->type; break; case ast_array_index: { @@ -1577,7 +1549,7 @@ ast_expression::hir(exec_list *instructions, */ ir_variable *v = array->whole_variable_referenced(); if (v != NULL) - v->max_array_access = array->type->array_size(); + v->max_array_access = array->type->array_size() - 1; } } @@ -1618,7 +1590,6 @@ ast_expression::hir(exec_list *instructions, if (error_emitted) result->type = glsl_type::error_type; - type = result->type; break; } @@ -1641,7 +1612,6 @@ ast_expression::hir(exec_list *instructions, if (var != NULL) { var->used = true; - type = result->type; } else { _mesa_glsl_error(& loc, state, "`%s' undeclared", this->primary_expression.identifier); @@ -1652,22 +1622,18 @@ ast_expression::hir(exec_list *instructions, } case ast_int_constant: - type = glsl_type::int_type; result = new(ctx) ir_constant(this->primary_expression.int_constant); break; case ast_uint_constant: - type = glsl_type::uint_type; result = new(ctx) ir_constant(this->primary_expression.uint_constant); break; case ast_float_constant: - type = glsl_type::float_type; result = new(ctx) ir_constant(this->primary_expression.float_constant); break; case ast_bool_constant: - type = glsl_type::bool_type; result = new(ctx) ir_constant(bool(this->primary_expression.bool_constant)); break; @@ -1682,10 +1648,42 @@ ast_expression::hir(exec_list *instructions, * therefore add instructions to the instruction list), they get dropped * on the floor. */ - foreach_list_typed (ast_node, ast, link, &this->expressions) - result = ast->hir(instructions, state); + exec_node *previous_tail_pred = NULL; + YYLTYPE previous_operand_loc = loc; + + foreach_list_typed (ast_node, ast, link, &this->expressions) { + /* If one of the operands of comma operator does not generate any + * code, we want to emit a warning. At each pass through the loop + * previous_tail_pred will point to the last instruction in the + * stream *before* processing the previous operand. Naturally, + * instructions->tail_pred will point to the last instruction in the + * stream *after* processing the previous operand. If the two + * pointers match, then the previous operand had no effect. + * + * The warning behavior here differs slightly from GCC. GCC will + * only emit a warning if none of the left-hand operands have an + * effect. However, it will emit a warning for each. I believe that + * there are some cases in C (especially with GCC extensions) where + * it is useful to have an intermediate step in a sequence have no + * effect, but I don't think these cases exist in GLSL. Either way, + * it would be a giant hassle to replicate that behavior. + */ + if (previous_tail_pred == instructions->tail_pred) { + _mesa_glsl_warning(&previous_operand_loc, state, + "left-hand operand of comma expression has " + "no effect"); + } + + /* tail_pred is directly accessed instead of using the get_tail() + * method for performance reasons. get_tail() has extra code to + * return NULL when the list is empty. We don't care about that + * here, so using tail_pred directly is fine. + */ + previous_tail_pred = instructions->tail_pred; + previous_operand_loc = ast->get_location(); - type = result->type; + result = ast->hir(instructions, state); + } /* Any errors should have already been emitted in the loop above. */ @@ -1693,8 +1691,10 @@ ast_expression::hir(exec_list *instructions, break; } } + type = NULL; /* use result->type, not type. */ + assert(result != NULL); - if (type->is_error() && !error_emitted) + if (result->type->is_error() && !error_emitted) _mesa_glsl_error(& loc, state, "type mismatch"); return result; @@ -2676,17 +2676,24 @@ ast_declarator_list::hir(exec_list *instructions, * preceded by one of these precision qualifiers [...] Literal * constants do not have precision qualifiers. Neither do Boolean * variables. + * + * In GLSL ES, sampler types are also allowed. + * + * From page 87 of the GLSL ES spec: + * "RESOLUTION: Allow sampler types to take a precision qualifier." */ if (this->type->specifier->precision != ast_precision_none && !var->type->is_float() && !var->type->is_integer() + && !(var->type->is_sampler() && state->es_shader) && !(var->type->is_array() && (var->type->fields.array->is_float() || var->type->fields.array->is_integer()))) { _mesa_glsl_error(&loc, state, - "precision qualifiers apply only to floating point " - "and integer types"); + "precision qualifiers apply only to floating point" + "%s types", state->es_shader ? ", integer, and sampler" + : "and integer"); } /* Process the initializer and add its instructions to a temporary diff --git a/src/glsl/glcpp/glcpp-parse.y b/src/glsl/glcpp/glcpp-parse.y index 1f6e67fa062..6f15e85a122 100644 --- a/src/glsl/glcpp/glcpp-parse.y +++ b/src/glsl/glcpp/glcpp-parse.y @@ -95,16 +95,16 @@ _token_list_append_list (token_list_t *list, token_list_t *tail); static int _token_list_equal_ignoring_space (token_list_t *a, token_list_t *b); -static active_list_t * -_active_list_push (active_list_t *list, - const char *identifier, - token_node_t *marker); +static void +_parser_active_list_push (glcpp_parser_t *parser, + const char *identifier, + token_node_t *marker); -static active_list_t * -_active_list_pop (active_list_t *list); +static void +_parser_active_list_pop (glcpp_parser_t *parser); -int -_active_list_contains (active_list_t *list, const char *identifier); +static int +_parser_active_list_contains (glcpp_parser_t *parser, const char *identifier); static void _glcpp_parser_expand_if (glcpp_parser_t *parser, int type, token_list_t *list); @@ -1468,7 +1468,7 @@ _glcpp_parser_expand_node (glcpp_parser_t *parser, /* Finally, don't expand this macro if we're already actively * expanding it, (to avoid infinite recursion). */ - if (_active_list_contains (parser->active, identifier)) { + if (_parser_active_list_contains (parser, identifier)) { /* We change the token type here from IDENTIFIER to * OTHER to prevent any future expansion of this * unexpanded token. */ @@ -1498,51 +1498,53 @@ _glcpp_parser_expand_node (glcpp_parser_t *parser, return _glcpp_parser_expand_function (parser, node, last); } -/* Push a new identifier onto the active list, returning the new list. +/* Push a new identifier onto the parser's active list. * * Here, 'marker' is the token node that appears in the list after the * expansion of 'identifier'. That is, when the list iterator begins - * examinging 'marker', then it is time to pop this node from the + * examining 'marker', then it is time to pop this node from the * active stack. */ -active_list_t * -_active_list_push (active_list_t *list, - const char *identifier, - token_node_t *marker) +static void +_parser_active_list_push (glcpp_parser_t *parser, + const char *identifier, + token_node_t *marker) { active_list_t *node; - node = ralloc (list, active_list_t); + node = ralloc (parser->active, active_list_t); node->identifier = ralloc_strdup (node, identifier); node->marker = marker; - node->next = list; + node->next = parser->active; - return node; + parser->active = node; } -active_list_t * -_active_list_pop (active_list_t *list) +static void +_parser_active_list_pop (glcpp_parser_t *parser) { - active_list_t *node = list; + active_list_t *node = parser->active; - if (node == NULL) - return NULL; + if (node == NULL) { + parser->active = NULL; + return; + } - node = list->next; - ralloc_free (list); + node = parser->active->next; + ralloc_free (parser->active); - return node; + parser->active = node; } -int -_active_list_contains (active_list_t *list, const char *identifier) +static int +_parser_active_list_contains (glcpp_parser_t *parser, const char *identifier) { active_list_t *node; - if (list == NULL) + if (parser->active == NULL) return 0; - for (node = list; node; node = node->next) + for (node = parser->active; node; node = node->next) if (strcmp (node->identifier, identifier) == 0) return 1; @@ -1561,6 +1563,7 @@ _glcpp_parser_expand_token_list (glcpp_parser_t *parser, token_node_t *node_prev; token_node_t *node, *last = NULL; token_list_t *expansion; + active_list_t *active_initial = parser->active; if (list == NULL) return; @@ -1573,10 +1576,8 @@ _glcpp_parser_expand_token_list (glcpp_parser_t *parser, while (node) { while (parser->active && parser->active->marker == node) - parser->active = _active_list_pop (parser->active); + _parser_active_list_pop (parser); - /* Find the expansion for node, which will replace all - * nodes from node to last, inclusive. */ expansion = _glcpp_parser_expand_node (parser, node, &last); if (expansion) { token_node_t *n; @@ -1585,12 +1586,12 @@ _glcpp_parser_expand_token_list (glcpp_parser_t *parser, while (parser->active && parser->active->marker == n) { - parser->active = _active_list_pop (parser->active); + _parser_active_list_pop (parser); } - parser->active = _active_list_push (parser->active, - node->token->value.str, - last->next); + _parser_active_list_push (parser, + node->token->value.str, + last->next); /* Splice expansion into list, supporting a * simple deletion if the expansion is @@ -1617,8 +1618,11 @@ _glcpp_parser_expand_token_list (glcpp_parser_t *parser, node = node_prev ? node_prev->next : list->head; } - while (parser->active) - parser->active = _active_list_pop (parser->active); + /* Remove any lingering effects of this invocation on the + * active list. That is, pop until the list looks like it did + * at the beginning of this function. */ + while (parser->active && parser->active != active_initial) + _parser_active_list_pop (parser); list->non_space_tail = list->tail; } diff --git a/src/glsl/glcpp/tests/084-unbalanced-parentheses.c.expected b/src/glsl/glcpp/tests/084-unbalanced-parentheses.c.expected new file mode 100644 index 00000000000..af49a37369d --- /dev/null +++ b/src/glsl/glcpp/tests/084-unbalanced-parentheses.c.expected @@ -0,0 +1,2 @@ +0:2(8): preprocessor error: syntax error, unexpected $end + diff --git a/src/glsl/glcpp/tests/093-divide-by-zero.c.expected b/src/glsl/glcpp/tests/093-divide-by-zero.c.expected new file mode 100644 index 00000000000..08f183f24f5 --- /dev/null +++ b/src/glsl/glcpp/tests/093-divide-by-zero.c.expected @@ -0,0 +1,4 @@ +0:1(13): preprocessor error: division by 0 in preprocessor directive + + + diff --git a/src/glsl/glcpp/tests/094-divide-by-zero-short-circuit.c b/src/glsl/glcpp/tests/094-divide-by-zero-short-circuit.c index a9c6f36def8..04497b17913 100644 --- a/src/glsl/glcpp/tests/094-divide-by-zero-short-circuit.c +++ b/src/glsl/glcpp/tests/094-divide-by-zero-short-circuit.c @@ -1,2 +1,13 @@ +/* glcpp is generating a division-by-zero error for this case. It's + * easy to argue that it should be short-circuiting the evaluation and + * not generating the diagnostic (which happens to be what gcc does). + * But it doesn't seem like we should force this behavior on our + * pre-processor, (and, as always, the GLSL specification of the + * pre-processor is too vague on this point). + * + * If a short-circuit evaluation optimization does get added to the + * pre-processor then it would legitimate to update the expected file + * for this test. +*/ #if 1 || (1 / 0) #endif diff --git a/src/glsl/glcpp/tests/094-divide-by-zero-short-circuit.c.expected b/src/glsl/glcpp/tests/094-divide-by-zero-short-circuit.c.expected new file mode 100644 index 00000000000..84fdc50c920 --- /dev/null +++ b/src/glsl/glcpp/tests/094-divide-by-zero-short-circuit.c.expected @@ -0,0 +1,15 @@ +0:12(17): preprocessor error: division by 0 in preprocessor directive + + + + + + + + + + + + + + diff --git a/src/glsl/glcpp/tests/095-recursive-define.c.expected b/src/glsl/glcpp/tests/095-recursive-define.c.expected new file mode 100644 index 00000000000..c7aa18ff6cb --- /dev/null +++ b/src/glsl/glcpp/tests/095-recursive-define.c.expected @@ -0,0 +1,4 @@ + + +B(0, C) + diff --git a/src/glsl/glcpp/tests/glcpp-test b/src/glsl/glcpp/tests/glcpp-test index 5dc08ea6acb..e8f3b546387 100755 --- a/src/glsl/glcpp/tests/glcpp-test +++ b/src/glsl/glcpp/tests/glcpp-test @@ -2,6 +2,34 @@ trap 'rm $test.valgrind-errors; exit 1' INT QUIT +usage () +{ + cat <<EOF +Usage: glcpp [options...] + +Run the test suite for mesa's GLSL pre-processor. + +Valid options include: + + --valgrind Run the test suite a second time under valgrind +EOF +} + +# Parse command-line options +for option; do + if [ "${option}" = '--help' ] ; then + usage + exit 0 + elif [ "${option}" = '--valgrind' ] ; then + do_valgrind=yes + else + echo "Unrecognized option: $option" >&2 + echo >&2 + usage + exit 1 + fi +done + total=0 pass=0 clean=0 @@ -24,23 +52,25 @@ echo "" echo "$pass/$total tests returned correct results" echo "" -echo "====== Testing for valgrind cleanliness ======" -for test in *.c; do - echo -n "Testing $test with valgrind..." - valgrind --error-exitcode=31 --log-file=$test.valgrind-errors ../glcpp < $test >/dev/null 2>&1 - if [ "$?" = "31" ]; then - echo "ERRORS" - cat $test.valgrind-errors - else - echo "CLEAN" - clean=$((clean+1)) - rm $test.valgrind-errors - fi -done +if [ "$do_valgrind" = "yes" ]; then + echo "====== Testing for valgrind cleanliness ======" + for test in *.c; do + echo -n "Testing $test with valgrind..." + valgrind --error-exitcode=31 --log-file=$test.valgrind-errors ../glcpp < $test >/dev/null 2>&1 + if [ "$?" = "31" ]; then + echo "ERRORS" + cat $test.valgrind-errors + else + echo "CLEAN" + clean=$((clean+1)) + rm $test.valgrind-errors + fi + done -echo "" -echo "$pass/$total tests returned correct results" -echo "$clean/$total tests are valgrind-clean" + echo "" + echo "$pass/$total tests returned correct results" + echo "$clean/$total tests are valgrind-clean" +fi if [ "$pass" = "$total" ] && [ "$clean" = "$total" ]; then exit 0 diff --git a/src/glsl/glsl_parser_extras.cpp b/src/glsl/glsl_parser_extras.cpp index e8c60936fb6..5bb3a6f25a3 100644 --- a/src/glsl/glsl_parser_extras.cpp +++ b/src/glsl/glsl_parser_extras.cpp @@ -211,14 +211,13 @@ _mesa_glsl_process_extension(const char *name, YYLTYPE *name_locp, state->ARB_draw_buffers_warn = (ext_mode == extension_warn); } } else if (strcmp(name, "GL_ARB_draw_instanced") == 0) { + state->ARB_draw_instanced_enable = (ext_mode != extension_disable); + state->ARB_draw_instanced_warn = (ext_mode == extension_warn); + /* This extension is only supported in vertex shaders. */ - if (state->target != vertex_shader) { - unsupported = true; - } else { - state->ARB_draw_instanced_enable = (ext_mode != extension_disable); - state->ARB_draw_instanced_warn = (ext_mode == extension_warn); - } + unsupported = (state->target != vertex_shader) + || !state->extensions->ARB_draw_instanced; } else if (strcmp(name, "GL_ARB_explicit_attrib_location") == 0) { state->ARB_explicit_attrib_location_enable = (ext_mode != extension_disable); @@ -242,13 +241,13 @@ _mesa_glsl_process_extension(const char *name, YYLTYPE *name_locp, unsupported = !state->extensions->EXT_texture_array; } else if (strcmp(name, "GL_ARB_shader_stencil_export") == 0) { - if (state->target != fragment_shader) { - unsupported = true; - } else { - state->ARB_shader_stencil_export_enable = (ext_mode != extension_disable); - state->ARB_shader_stencil_export_warn = (ext_mode == extension_warn); - unsupported = !state->extensions->ARB_shader_stencil_export; - } + state->ARB_shader_stencil_export_enable = (ext_mode != extension_disable); + state->ARB_shader_stencil_export_warn = (ext_mode == extension_warn); + + /* This extension is only supported in fragment shaders. + */ + unsupported = (state->target != fragment_shader) + || !state->extensions->ARB_shader_stencil_export; } else if (strcmp(name, "GL_AMD_conservative_depth") == 0) { /* The AMD_conservative spec does not forbid requiring the extension in * the vertex shader. @@ -769,7 +768,7 @@ do_common_optimization(exec_list *ir, bool linked, unsigned max_unroll_iteration progress = do_if_simplification(ir) || progress; progress = do_discard_simplification(ir) || progress; progress = do_copy_propagation(ir) || progress; - /*progress = do_copy_propagation_elements(ir) || progress;*/ + progress = do_copy_propagation_elements(ir) || progress; if (linked) progress = do_dead_code(ir) || progress; else diff --git a/src/glsl/glsl_parser_extras.h b/src/glsl/glsl_parser_extras.h index b5c016fb399..6df0e160ae3 100644 --- a/src/glsl/glsl_parser_extras.h +++ b/src/glsl/glsl_parser_extras.h @@ -268,8 +268,8 @@ extern "C" { extern int preprocess(void *ctx, const char **shader, char **info_log, const struct gl_extensions *extensions, int api); -extern void _mesa_destroy_shader_compiler(); -extern void _mesa_destroy_shader_compiler_caches(); +extern void _mesa_destroy_shader_compiler(void); +extern void _mesa_destroy_shader_compiler_caches(void); #ifdef __cplusplus } diff --git a/src/glsl/ir.h b/src/glsl/ir.h index 39d4ebc7107..a41984310b3 100644 --- a/src/glsl/ir.h +++ b/src/glsl/ir.h @@ -253,6 +253,16 @@ enum ir_depth_layout { const char* depth_layout_string(ir_depth_layout layout); +/** + * Description of built-in state associated with a uniform + * + * \sa ir_variable::state_slots + */ +struct ir_state_slot { + int tokens[5]; + int swizzle; +}; + class ir_variable : public ir_instruction { public: ir_variable(const struct glsl_type *, const char *, ir_variable_mode); @@ -386,6 +396,22 @@ public: int location; /** + * Built-in state that backs this uniform + * + * Once set at variable creation, \c state_slots must remain invariant. + * This is because, ideally, this array would be shared by all clones of + * this variable in the IR tree. In other words, we'd really like for it + * to be a fly-weight. + * + * If the variable is not a uniform, \c num_state_slots will be zero and + * \c state_slots will be \c NULL. + */ + /*@{*/ + unsigned num_state_slots; /**< Number of state slots used */ + ir_state_slot *state_slots; /**< State descriptors. */ + /*@}*/ + + /** * Emit a warning if this variable is accessed. */ const char *warn_extension; diff --git a/src/glsl/ir_clone.cpp b/src/glsl/ir_clone.cpp index 2c0574dc6bf..069bb85e8de 100644 --- a/src/glsl/ir_clone.cpp +++ b/src/glsl/ir_clone.cpp @@ -53,6 +53,18 @@ ir_variable::clone(void *mem_ctx, struct hash_table *ht) const var->origin_upper_left = this->origin_upper_left; var->pixel_center_integer = this->pixel_center_integer; var->explicit_location = this->explicit_location; + + var->num_state_slots = this->num_state_slots; + if (this->state_slots) { + /* FINISHME: This really wants to use something like talloc_reference, but + * FINISHME: ralloc doesn't have any similar function. + */ + var->state_slots = ralloc_array(var, ir_state_slot, + this->num_state_slots); + memcpy(var->state_slots, this->state_slots, + sizeof(this->state_slots[0]) * var->num_state_slots); + } + if (this->explicit_location) var->location = this->location; diff --git a/src/glsl/ir_print_visitor.cpp b/src/glsl/ir_print_visitor.cpp index a84f8dfc8a1..02f3d814926 100644 --- a/src/glsl/ir_print_visitor.cpp +++ b/src/glsl/ir_print_visitor.cpp @@ -25,6 +25,10 @@ #include "glsl_types.h" #include "glsl_parser_extras.h" +extern "C" { +#include "program/hash_table.h" +} + static void print_type(const glsl_type *t); void @@ -67,6 +71,21 @@ _mesa_print_ir(exec_list *instructions, printf("\n)"); } +ir_print_visitor::ir_print_visitor() +{ + indentation = 0; + printable_names = + hash_table_ctor(32, hash_table_pointer_hash, hash_table_pointer_compare); + symbols = _mesa_symbol_table_ctor(); + mem_ctx = ralloc_context(NULL); +} + +ir_print_visitor::~ir_print_visitor() +{ + hash_table_dtor(printable_names); + _mesa_symbol_table_dtor(symbols); + ralloc_free(mem_ctx); +} void ir_print_visitor::indent(void) { @@ -74,6 +93,26 @@ void ir_print_visitor::indent(void) printf(" "); } +const char * +ir_print_visitor::unique_name(ir_variable *var) +{ + /* Do we already have a name for this variable? */ + const char *name = (const char *) hash_table_find(this->printable_names, var); + if (name != NULL) + return name; + + /* If there's no conflict, just use the original name */ + if (_mesa_symbol_table_find_symbol(this->symbols, -1, var->name) == NULL) { + name = var->name; + } else { + static unsigned i = 1; + name = ralloc_asprintf(this->mem_ctx, "%s@%u", var->name, ++i); + } + hash_table_insert(this->printable_names, (void *) name, var); + _mesa_symbol_table_add_symbol(this->symbols, -1, name, var); + return name; +} + static void print_type(const glsl_type *t) { @@ -104,12 +143,13 @@ void ir_print_visitor::visit(ir_variable *ir) cent, inv, mode[ir->mode], interp[ir->interpolation]); print_type(ir->type); - printf(" %s@%p)", ir->name, (void *) ir); + printf(" %s)", unique_name(ir)); } void ir_print_visitor::visit(ir_function_signature *ir) { + _mesa_symbol_table_push_scope(symbols); printf("(signature "); indentation++; @@ -148,6 +188,7 @@ void ir_print_visitor::visit(ir_function_signature *ir) indent(); printf("))\n"); indentation--; + _mesa_symbol_table_pop_scope(symbols); } @@ -265,7 +306,7 @@ void ir_print_visitor::visit(ir_swizzle *ir) void ir_print_visitor::visit(ir_dereference_variable *ir) { ir_variable *var = ir->variable_referenced(); - printf("(var_ref %s@%p) ", var->name, (void *) var); + printf("(var_ref %s) ", unique_name(var)); } diff --git a/src/glsl/ir_print_visitor.h b/src/glsl/ir_print_visitor.h index 4feeb8c184d..c7136f11a3b 100644 --- a/src/glsl/ir_print_visitor.h +++ b/src/glsl/ir_print_visitor.h @@ -29,6 +29,10 @@ #include "ir.h" #include "ir_visitor.h" +extern "C" { +#include "program/symbol_table.h" +} + extern void _mesa_print_ir(exec_list *instructions, struct _mesa_glsl_parse_state *state); @@ -37,15 +41,8 @@ extern void _mesa_print_ir(exec_list *instructions, */ class ir_print_visitor : public ir_visitor { public: - ir_print_visitor() - { - indentation = 0; - } - - virtual ~ir_print_visitor() - { - /* empty */ - } + ir_print_visitor(); + virtual ~ir_print_visitor(); void indent(void); @@ -77,6 +74,20 @@ public: /*@}*/ private: + /** + * Fetch/generate a unique name for ir_variable. + * + * GLSL IR permits multiple ir_variables to share the same name. This works + * fine until we try to print it, when we really need a unique one. + */ + const char *unique_name(ir_variable *var); + + /** A mapping from ir_variable * -> unique printable names. */ + hash_table *printable_names; + _mesa_symbol_table *symbols; + + void *mem_ctx; + int indentation; }; diff --git a/src/glsl/ir_validate.cpp b/src/glsl/ir_validate.cpp index 0fc3baf8690..7b1c19d65aa 100644 --- a/src/glsl/ir_validate.cpp +++ b/src/glsl/ir_validate.cpp @@ -254,7 +254,7 @@ ir_validate::visit_leave(ir_expression *ir) case ir_unop_f2i: assert(ir->operands[0]->type->base_type == GLSL_TYPE_FLOAT); - assert(ir->type->base_type == GLSL_TYPE_INT); + assert(ir->type->is_integer()); break; case ir_unop_i2f: assert(ir->operands[0]->type->base_type == GLSL_TYPE_INT); @@ -269,12 +269,12 @@ ir_validate::visit_leave(ir_expression *ir) assert(ir->type->base_type == GLSL_TYPE_FLOAT); break; case ir_unop_i2b: - assert(ir->operands[0]->type->base_type == GLSL_TYPE_INT); + assert(ir->operands[0]->type->is_integer()); assert(ir->type->base_type == GLSL_TYPE_BOOL); break; case ir_unop_b2i: assert(ir->operands[0]->type->base_type == GLSL_TYPE_BOOL); - assert(ir->type->base_type == GLSL_TYPE_INT); + assert(ir->type->is_integer()); break; case ir_unop_u2f: assert(ir->operands[0]->type->base_type == GLSL_TYPE_UINT); @@ -473,6 +473,21 @@ ir_validate::visit(ir_variable *ir) assert(ralloc_parent(ir->name) == ir); hash_table_insert(ht, ir, ir); + + + /* If a variable is an array, verify that the maximum array index is in + * bounds. There was once an error in AST-to-HIR conversion that set this + * to be out of bounds. + */ + if (ir->type->array_size() > 0) { + if (ir->max_array_access >= ir->type->length) { + printf("ir_variable has maximum access out of bounds (%d vs %d)\n", + ir->max_array_access, ir->type->length - 1); + ir->print(); + abort(); + } + } + return visit_continue; } diff --git a/src/glsl/ir_variable.cpp b/src/glsl/ir_variable.cpp index 18a3e0fb0d9..f3577175691 100644 --- a/src/glsl/ir_variable.cpp +++ b/src/glsl/ir_variable.cpp @@ -25,6 +25,10 @@ #include "glsl_parser_extras.h" #include "glsl_symbol_table.h" #include "builtin_variables.h" +#include "main/uniforms.h" +#include "program/prog_parameter.h" +#include "program/prog_statevars.h" +#include "program/prog_instruction.h" static void generate_ARB_draw_buffers_variables(exec_list *, struct _mesa_glsl_parse_state *, @@ -35,10 +39,259 @@ generate_ARB_draw_instanced_variables(exec_list *, struct _mesa_glsl_parse_state *, bool, _mesa_glsl_parser_targets); +static struct gl_builtin_uniform_element gl_DepthRange_elements[] = { + {"near", {STATE_DEPTH_RANGE, 0, 0}, SWIZZLE_XXXX}, + {"far", {STATE_DEPTH_RANGE, 0, 0}, SWIZZLE_YYYY}, + {"diff", {STATE_DEPTH_RANGE, 0, 0}, SWIZZLE_ZZZZ}, +}; + +static struct gl_builtin_uniform_element gl_ClipPlane_elements[] = { + {NULL, {STATE_CLIPPLANE, 0, 0}, SWIZZLE_XYZW} +}; + +static struct gl_builtin_uniform_element gl_Point_elements[] = { + {"size", {STATE_POINT_SIZE}, SWIZZLE_XXXX}, + {"sizeMin", {STATE_POINT_SIZE}, SWIZZLE_YYYY}, + {"sizeMax", {STATE_POINT_SIZE}, SWIZZLE_ZZZZ}, + {"fadeThresholdSize", {STATE_POINT_SIZE}, SWIZZLE_WWWW}, + {"distanceConstantAttenuation", {STATE_POINT_ATTENUATION}, SWIZZLE_XXXX}, + {"distanceLinearAttenuation", {STATE_POINT_ATTENUATION}, SWIZZLE_YYYY}, + {"distanceQuadraticAttenuation", {STATE_POINT_ATTENUATION}, SWIZZLE_ZZZZ}, +}; + +static struct gl_builtin_uniform_element gl_FrontMaterial_elements[] = { + {"emission", {STATE_MATERIAL, 0, STATE_EMISSION}, SWIZZLE_XYZW}, + {"ambient", {STATE_MATERIAL, 0, STATE_AMBIENT}, SWIZZLE_XYZW}, + {"diffuse", {STATE_MATERIAL, 0, STATE_DIFFUSE}, SWIZZLE_XYZW}, + {"specular", {STATE_MATERIAL, 0, STATE_SPECULAR}, SWIZZLE_XYZW}, + {"shininess", {STATE_MATERIAL, 0, STATE_SHININESS}, SWIZZLE_XXXX}, +}; + +static struct gl_builtin_uniform_element gl_BackMaterial_elements[] = { + {"emission", {STATE_MATERIAL, 1, STATE_EMISSION}, SWIZZLE_XYZW}, + {"ambient", {STATE_MATERIAL, 1, STATE_AMBIENT}, SWIZZLE_XYZW}, + {"diffuse", {STATE_MATERIAL, 1, STATE_DIFFUSE}, SWIZZLE_XYZW}, + {"specular", {STATE_MATERIAL, 1, STATE_SPECULAR}, SWIZZLE_XYZW}, + {"shininess", {STATE_MATERIAL, 1, STATE_SHININESS}, SWIZZLE_XXXX}, +}; + +static struct gl_builtin_uniform_element gl_LightSource_elements[] = { + {"ambient", {STATE_LIGHT, 0, STATE_AMBIENT}, SWIZZLE_XYZW}, + {"diffuse", {STATE_LIGHT, 0, STATE_DIFFUSE}, SWIZZLE_XYZW}, + {"specular", {STATE_LIGHT, 0, STATE_SPECULAR}, SWIZZLE_XYZW}, + {"position", {STATE_LIGHT, 0, STATE_POSITION}, SWIZZLE_XYZW}, + {"halfVector", {STATE_LIGHT, 0, STATE_HALF_VECTOR}, SWIZZLE_XYZW}, + {"spotDirection", {STATE_LIGHT, 0, STATE_SPOT_DIRECTION}, + MAKE_SWIZZLE4(SWIZZLE_X, + SWIZZLE_Y, + SWIZZLE_Z, + SWIZZLE_Z)}, + {"spotCosCutoff", {STATE_LIGHT, 0, STATE_SPOT_DIRECTION}, SWIZZLE_WWWW}, + {"spotCutoff", {STATE_LIGHT, 0, STATE_SPOT_CUTOFF}, SWIZZLE_XXXX}, + {"spotExponent", {STATE_LIGHT, 0, STATE_ATTENUATION}, SWIZZLE_WWWW}, + {"constantAttenuation", {STATE_LIGHT, 0, STATE_ATTENUATION}, SWIZZLE_XXXX}, + {"linearAttenuation", {STATE_LIGHT, 0, STATE_ATTENUATION}, SWIZZLE_YYYY}, + {"quadraticAttenuation", {STATE_LIGHT, 0, STATE_ATTENUATION}, SWIZZLE_ZZZZ}, +}; + +static struct gl_builtin_uniform_element gl_LightModel_elements[] = { + {"ambient", {STATE_LIGHTMODEL_AMBIENT, 0}, SWIZZLE_XYZW}, +}; + +static struct gl_builtin_uniform_element gl_FrontLightModelProduct_elements[] = { + {"sceneColor", {STATE_LIGHTMODEL_SCENECOLOR, 0}, SWIZZLE_XYZW}, +}; + +static struct gl_builtin_uniform_element gl_BackLightModelProduct_elements[] = { + {"sceneColor", {STATE_LIGHTMODEL_SCENECOLOR, 1}, SWIZZLE_XYZW}, +}; + +static struct gl_builtin_uniform_element gl_FrontLightProduct_elements[] = { + {"ambient", {STATE_LIGHTPROD, 0, 0, STATE_AMBIENT}, SWIZZLE_XYZW}, + {"diffuse", {STATE_LIGHTPROD, 0, 0, STATE_DIFFUSE}, SWIZZLE_XYZW}, + {"specular", {STATE_LIGHTPROD, 0, 0, STATE_SPECULAR}, SWIZZLE_XYZW}, +}; + +static struct gl_builtin_uniform_element gl_BackLightProduct_elements[] = { + {"ambient", {STATE_LIGHTPROD, 0, 1, STATE_AMBIENT}, SWIZZLE_XYZW}, + {"diffuse", {STATE_LIGHTPROD, 0, 1, STATE_DIFFUSE}, SWIZZLE_XYZW}, + {"specular", {STATE_LIGHTPROD, 0, 1, STATE_SPECULAR}, SWIZZLE_XYZW}, +}; + +static struct gl_builtin_uniform_element gl_TextureEnvColor_elements[] = { + {NULL, {STATE_TEXENV_COLOR, 0}, SWIZZLE_XYZW}, +}; + +static struct gl_builtin_uniform_element gl_EyePlaneS_elements[] = { + {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_EYE_S}, SWIZZLE_XYZW}, +}; + +static struct gl_builtin_uniform_element gl_EyePlaneT_elements[] = { + {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_EYE_T}, SWIZZLE_XYZW}, +}; + +static struct gl_builtin_uniform_element gl_EyePlaneR_elements[] = { + {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_EYE_R}, SWIZZLE_XYZW}, +}; + +static struct gl_builtin_uniform_element gl_EyePlaneQ_elements[] = { + {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_EYE_Q}, SWIZZLE_XYZW}, +}; + +static struct gl_builtin_uniform_element gl_ObjectPlaneS_elements[] = { + {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_OBJECT_S}, SWIZZLE_XYZW}, +}; + +static struct gl_builtin_uniform_element gl_ObjectPlaneT_elements[] = { + {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_OBJECT_T}, SWIZZLE_XYZW}, +}; + +static struct gl_builtin_uniform_element gl_ObjectPlaneR_elements[] = { + {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_OBJECT_R}, SWIZZLE_XYZW}, +}; + +static struct gl_builtin_uniform_element gl_ObjectPlaneQ_elements[] = { + {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_OBJECT_Q}, SWIZZLE_XYZW}, +}; + +static struct gl_builtin_uniform_element gl_Fog_elements[] = { + {"color", {STATE_FOG_COLOR}, SWIZZLE_XYZW}, + {"density", {STATE_FOG_PARAMS}, SWIZZLE_XXXX}, + {"start", {STATE_FOG_PARAMS}, SWIZZLE_YYYY}, + {"end", {STATE_FOG_PARAMS}, SWIZZLE_ZZZZ}, + {"scale", {STATE_FOG_PARAMS}, SWIZZLE_WWWW}, +}; + +static struct gl_builtin_uniform_element gl_NormalScale_elements[] = { + {NULL, {STATE_NORMAL_SCALE}, SWIZZLE_XXXX}, +}; + +static struct gl_builtin_uniform_element gl_MESABumpRotMatrix0_elements[] = { + {NULL, {STATE_INTERNAL, STATE_ROT_MATRIX_0}, SWIZZLE_XYZW}, +}; + +static struct gl_builtin_uniform_element gl_MESABumpRotMatrix1_elements[] = { + {NULL, {STATE_INTERNAL, STATE_ROT_MATRIX_1}, SWIZZLE_XYZW}, +}; + +static struct gl_builtin_uniform_element gl_MESAFogParamsOptimized_elements[] = { + {NULL, {STATE_INTERNAL, STATE_FOG_PARAMS_OPTIMIZED}, SWIZZLE_XYZW}, +}; + +#define MATRIX(name, statevar, modifier) \ + static struct gl_builtin_uniform_element name ## _elements[] = { \ + { NULL, { statevar, 0, 0, 0, modifier}, SWIZZLE_XYZW }, \ + { NULL, { statevar, 0, 1, 1, modifier}, SWIZZLE_XYZW }, \ + { NULL, { statevar, 0, 2, 2, modifier}, SWIZZLE_XYZW }, \ + { NULL, { statevar, 0, 3, 3, modifier}, SWIZZLE_XYZW }, \ + } + +MATRIX(gl_ModelViewMatrix, + STATE_MODELVIEW_MATRIX, STATE_MATRIX_TRANSPOSE); +MATRIX(gl_ModelViewMatrixInverse, + STATE_MODELVIEW_MATRIX, STATE_MATRIX_INVTRANS); +MATRIX(gl_ModelViewMatrixTranspose, + STATE_MODELVIEW_MATRIX, 0); +MATRIX(gl_ModelViewMatrixInverseTranspose, + STATE_MODELVIEW_MATRIX, STATE_MATRIX_INVERSE); + +MATRIX(gl_ProjectionMatrix, + STATE_PROJECTION_MATRIX, STATE_MATRIX_TRANSPOSE); +MATRIX(gl_ProjectionMatrixInverse, + STATE_PROJECTION_MATRIX, STATE_MATRIX_INVTRANS); +MATRIX(gl_ProjectionMatrixTranspose, + STATE_PROJECTION_MATRIX, 0); +MATRIX(gl_ProjectionMatrixInverseTranspose, + STATE_PROJECTION_MATRIX, STATE_MATRIX_INVERSE); + +MATRIX(gl_ModelViewProjectionMatrix, + STATE_MVP_MATRIX, STATE_MATRIX_TRANSPOSE); +MATRIX(gl_ModelViewProjectionMatrixInverse, + STATE_MVP_MATRIX, STATE_MATRIX_INVTRANS); +MATRIX(gl_ModelViewProjectionMatrixTranspose, + STATE_MVP_MATRIX, 0); +MATRIX(gl_ModelViewProjectionMatrixInverseTranspose, + STATE_MVP_MATRIX, STATE_MATRIX_INVERSE); + +MATRIX(gl_TextureMatrix, + STATE_TEXTURE_MATRIX, STATE_MATRIX_TRANSPOSE); +MATRIX(gl_TextureMatrixInverse, + STATE_TEXTURE_MATRIX, STATE_MATRIX_INVTRANS); +MATRIX(gl_TextureMatrixTranspose, + STATE_TEXTURE_MATRIX, 0); +MATRIX(gl_TextureMatrixInverseTranspose, + STATE_TEXTURE_MATRIX, STATE_MATRIX_INVERSE); + +static struct gl_builtin_uniform_element gl_NormalMatrix_elements[] = { + { NULL, { STATE_MODELVIEW_MATRIX, 0, 0, 0, STATE_MATRIX_INVERSE}, + SWIZZLE_XYZW }, + { NULL, { STATE_MODELVIEW_MATRIX, 0, 1, 1, STATE_MATRIX_INVERSE}, + SWIZZLE_XYZW }, + { NULL, { STATE_MODELVIEW_MATRIX, 0, 2, 2, STATE_MATRIX_INVERSE}, + SWIZZLE_XYZW }, +}; + +#undef MATRIX + +#define STATEVAR(name) {#name, name ## _elements, Elements(name ## _elements)} + +const struct gl_builtin_uniform_desc _mesa_builtin_uniform_desc[] = { + STATEVAR(gl_DepthRange), + STATEVAR(gl_ClipPlane), + STATEVAR(gl_Point), + STATEVAR(gl_FrontMaterial), + STATEVAR(gl_BackMaterial), + STATEVAR(gl_LightSource), + STATEVAR(gl_LightModel), + STATEVAR(gl_FrontLightModelProduct), + STATEVAR(gl_BackLightModelProduct), + STATEVAR(gl_FrontLightProduct), + STATEVAR(gl_BackLightProduct), + STATEVAR(gl_TextureEnvColor), + STATEVAR(gl_EyePlaneS), + STATEVAR(gl_EyePlaneT), + STATEVAR(gl_EyePlaneR), + STATEVAR(gl_EyePlaneQ), + STATEVAR(gl_ObjectPlaneS), + STATEVAR(gl_ObjectPlaneT), + STATEVAR(gl_ObjectPlaneR), + STATEVAR(gl_ObjectPlaneQ), + STATEVAR(gl_Fog), + + STATEVAR(gl_ModelViewMatrix), + STATEVAR(gl_ModelViewMatrixInverse), + STATEVAR(gl_ModelViewMatrixTranspose), + STATEVAR(gl_ModelViewMatrixInverseTranspose), + + STATEVAR(gl_ProjectionMatrix), + STATEVAR(gl_ProjectionMatrixInverse), + STATEVAR(gl_ProjectionMatrixTranspose), + STATEVAR(gl_ProjectionMatrixInverseTranspose), + + STATEVAR(gl_ModelViewProjectionMatrix), + STATEVAR(gl_ModelViewProjectionMatrixInverse), + STATEVAR(gl_ModelViewProjectionMatrixTranspose), + STATEVAR(gl_ModelViewProjectionMatrixInverseTranspose), + + STATEVAR(gl_TextureMatrix), + STATEVAR(gl_TextureMatrixInverse), + STATEVAR(gl_TextureMatrixTranspose), + STATEVAR(gl_TextureMatrixInverseTranspose), + + STATEVAR(gl_NormalMatrix), + STATEVAR(gl_NormalScale), + + STATEVAR(gl_MESABumpRotMatrix0), + STATEVAR(gl_MESABumpRotMatrix1), + STATEVAR(gl_MESAFogParamsOptimized), + + {NULL, NULL, 0} +}; + static ir_variable * -add_variable(const char *name, enum ir_variable_mode mode, int slot, - const glsl_type *type, exec_list *instructions, - glsl_symbol_table *symtab) +add_variable(exec_list *instructions, glsl_symbol_table *symtab, + const char *name, const glsl_type *type, + enum ir_variable_mode mode, int slot) { ir_variable *var = new(symtab) ir_variable(type, name, mode); @@ -71,17 +324,51 @@ add_variable(const char *name, enum ir_variable_mode mode, int slot, } static ir_variable * -add_uniform(exec_list *instructions, - struct _mesa_glsl_parse_state *state, +add_uniform(exec_list *instructions, glsl_symbol_table *symtab, const char *name, const glsl_type *type) { - return add_variable(name, ir_var_uniform, -1, type, instructions, - state->symbols); + ir_variable *const uni = + add_variable(instructions, symtab, name, type, ir_var_uniform, -1); + + unsigned i; + for (i = 0; _mesa_builtin_uniform_desc[i].name != NULL; i++) { + if (strcmp(_mesa_builtin_uniform_desc[i].name, name) == 0) { + break; + } + } + + assert(_mesa_builtin_uniform_desc[i].name != NULL); + const struct gl_builtin_uniform_desc* const statevar = + &_mesa_builtin_uniform_desc[i]; + + const unsigned array_count = type->is_array() ? type->length : 1; + uni->num_state_slots = array_count * statevar->num_elements; + + ir_state_slot *slots = + ralloc_array(uni, ir_state_slot, uni->num_state_slots); + + uni->state_slots = slots; + + for (unsigned a = 0; a < array_count; a++) { + for (unsigned j = 0; j < statevar->num_elements; j++) { + struct gl_builtin_uniform_element *element = &statevar->elements[j]; + + memcpy(slots->tokens, element->tokens, sizeof(element->tokens)); + if (type->is_array()) { + slots->tokens[1] = a; + } + + slots->swizzle = element->swizzle; + slots++; + } + } + + return uni; } static void -add_builtin_variable(const builtin_variable *proto, exec_list *instructions, - glsl_symbol_table *symtab) +add_builtin_variable(exec_list *instructions, glsl_symbol_table *symtab, + const builtin_variable *proto) { /* Create a new variable declaration from the description supplied by * the caller. @@ -90,18 +377,21 @@ add_builtin_variable(const builtin_variable *proto, exec_list *instructions, assert(type != NULL); - add_variable(proto->name, proto->mode, proto->slot, type, instructions, - symtab); + if (proto->mode == ir_var_uniform) { + add_uniform(instructions, symtab, proto->name, type); + } else { + add_variable(instructions, symtab, proto->name, type, proto->mode, + proto->slot); + } } static void -add_builtin_constant(exec_list *instructions, - struct _mesa_glsl_parse_state *state, +add_builtin_constant(exec_list *instructions, glsl_symbol_table *symtab, const char *name, int value) { - ir_variable *const var = add_variable(name, ir_var_auto, - -1, glsl_type::int_type, - instructions, state->symbols); + ir_variable *const var = add_variable(instructions, symtab, + name, glsl_type::int_type, + ir_var_auto, -1); var->constant_value = new(var) ir_constant(value); } @@ -112,22 +402,24 @@ static void generate_100ES_uniforms(exec_list *instructions, struct _mesa_glsl_parse_state *state) { - add_builtin_constant(instructions, state, "gl_MaxVertexAttribs", + glsl_symbol_table *const symtab = state->symbols; + + add_builtin_constant(instructions, symtab, "gl_MaxVertexAttribs", state->Const.MaxVertexAttribs); - add_builtin_constant(instructions, state, "gl_MaxVertexUniformVectors", + add_builtin_constant(instructions, symtab, "gl_MaxVertexUniformVectors", state->Const.MaxVertexUniformComponents); - add_builtin_constant(instructions, state, "gl_MaxVaryingVectors", + add_builtin_constant(instructions, symtab, "gl_MaxVaryingVectors", state->Const.MaxVaryingFloats / 4); - add_builtin_constant(instructions, state, "gl_MaxVertexTextureImageUnits", + add_builtin_constant(instructions, symtab, "gl_MaxVertexTextureImageUnits", state->Const.MaxVertexTextureImageUnits); - add_builtin_constant(instructions, state, "gl_MaxCombinedTextureImageUnits", + add_builtin_constant(instructions, symtab, "gl_MaxCombinedTextureImageUnits", state->Const.MaxCombinedTextureImageUnits); - add_builtin_constant(instructions, state, "gl_MaxTextureImageUnits", + add_builtin_constant(instructions, symtab, "gl_MaxTextureImageUnits", state->Const.MaxTextureImageUnits); - add_builtin_constant(instructions, state, "gl_MaxFragmentUniformVectors", + add_builtin_constant(instructions, symtab, "gl_MaxFragmentUniformVectors", state->Const.MaxFragmentUniformComponents); - add_uniform(instructions, state, "gl_DepthRange", + add_uniform(instructions, symtab, "gl_DepthRange", state->symbols->get_type("gl_DepthRangeParameters")); } @@ -135,95 +427,97 @@ static void generate_110_uniforms(exec_list *instructions, struct _mesa_glsl_parse_state *state) { + glsl_symbol_table *const symtab = state->symbols; + for (unsigned i = 0 ; i < Elements(builtin_110_deprecated_uniforms) ; i++) { - add_builtin_variable(& builtin_110_deprecated_uniforms[i], - instructions, state->symbols); + add_builtin_variable(instructions, symtab, + & builtin_110_deprecated_uniforms[i]); } - add_builtin_constant(instructions, state, "gl_MaxLights", + add_builtin_constant(instructions, symtab, "gl_MaxLights", state->Const.MaxLights); - add_builtin_constant(instructions, state, "gl_MaxClipPlanes", + add_builtin_constant(instructions, symtab, "gl_MaxClipPlanes", state->Const.MaxClipPlanes); - add_builtin_constant(instructions, state, "gl_MaxTextureUnits", + add_builtin_constant(instructions, symtab, "gl_MaxTextureUnits", state->Const.MaxTextureUnits); - add_builtin_constant(instructions, state, "gl_MaxTextureCoords", + add_builtin_constant(instructions, symtab, "gl_MaxTextureCoords", state->Const.MaxTextureCoords); - add_builtin_constant(instructions, state, "gl_MaxVertexAttribs", + add_builtin_constant(instructions, symtab, "gl_MaxVertexAttribs", state->Const.MaxVertexAttribs); - add_builtin_constant(instructions, state, "gl_MaxVertexUniformComponents", + add_builtin_constant(instructions, symtab, "gl_MaxVertexUniformComponents", state->Const.MaxVertexUniformComponents); - add_builtin_constant(instructions, state, "gl_MaxVaryingFloats", + add_builtin_constant(instructions, symtab, "gl_MaxVaryingFloats", state->Const.MaxVaryingFloats); - add_builtin_constant(instructions, state, "gl_MaxVertexTextureImageUnits", + add_builtin_constant(instructions, symtab, "gl_MaxVertexTextureImageUnits", state->Const.MaxVertexTextureImageUnits); - add_builtin_constant(instructions, state, "gl_MaxCombinedTextureImageUnits", + add_builtin_constant(instructions, symtab, "gl_MaxCombinedTextureImageUnits", state->Const.MaxCombinedTextureImageUnits); - add_builtin_constant(instructions, state, "gl_MaxTextureImageUnits", + add_builtin_constant(instructions, symtab, "gl_MaxTextureImageUnits", state->Const.MaxTextureImageUnits); - add_builtin_constant(instructions, state, "gl_MaxFragmentUniformComponents", + add_builtin_constant(instructions, symtab, "gl_MaxFragmentUniformComponents", state->Const.MaxFragmentUniformComponents); const glsl_type *const mat4_array_type = glsl_type::get_array_instance(glsl_type::mat4_type, state->Const.MaxTextureCoords); - add_uniform(instructions, state, "gl_TextureMatrix", mat4_array_type); - add_uniform(instructions, state, "gl_TextureMatrixInverse", mat4_array_type); - add_uniform(instructions, state, "gl_TextureMatrixTranspose", mat4_array_type); - add_uniform(instructions, state, "gl_TextureMatrixInverseTranspose", mat4_array_type); + add_uniform(instructions, symtab, "gl_TextureMatrix", mat4_array_type); + add_uniform(instructions, symtab, "gl_TextureMatrixInverse", mat4_array_type); + add_uniform(instructions, symtab, "gl_TextureMatrixTranspose", mat4_array_type); + add_uniform(instructions, symtab, "gl_TextureMatrixInverseTranspose", mat4_array_type); - add_uniform(instructions, state, "gl_DepthRange", - state->symbols->get_type("gl_DepthRangeParameters")); + add_uniform(instructions, symtab, "gl_DepthRange", + symtab->get_type("gl_DepthRangeParameters")); - add_uniform(instructions, state, "gl_ClipPlane", + add_uniform(instructions, symtab, "gl_ClipPlane", glsl_type::get_array_instance(glsl_type::vec4_type, state->Const.MaxClipPlanes)); - add_uniform(instructions, state, "gl_Point", - state->symbols->get_type("gl_PointParameters")); + add_uniform(instructions, symtab, "gl_Point", + symtab->get_type("gl_PointParameters")); const glsl_type *const material_parameters_type = - state->symbols->get_type("gl_MaterialParameters"); - add_uniform(instructions, state, "gl_FrontMaterial", material_parameters_type); - add_uniform(instructions, state, "gl_BackMaterial", material_parameters_type); + symtab->get_type("gl_MaterialParameters"); + add_uniform(instructions, symtab, "gl_FrontMaterial", material_parameters_type); + add_uniform(instructions, symtab, "gl_BackMaterial", material_parameters_type); const glsl_type *const light_source_array_type = - glsl_type::get_array_instance(state->symbols->get_type("gl_LightSourceParameters"), state->Const.MaxLights); + glsl_type::get_array_instance(symtab->get_type("gl_LightSourceParameters"), state->Const.MaxLights); - add_uniform(instructions, state, "gl_LightSource", light_source_array_type); + add_uniform(instructions, symtab, "gl_LightSource", light_source_array_type); const glsl_type *const light_model_products_type = - state->symbols->get_type("gl_LightModelProducts"); - add_uniform(instructions, state, "gl_FrontLightModelProduct", + symtab->get_type("gl_LightModelProducts"); + add_uniform(instructions, symtab, "gl_FrontLightModelProduct", light_model_products_type); - add_uniform(instructions, state, "gl_BackLightModelProduct", + add_uniform(instructions, symtab, "gl_BackLightModelProduct", light_model_products_type); const glsl_type *const light_products_type = - glsl_type::get_array_instance(state->symbols->get_type("gl_LightProducts"), + glsl_type::get_array_instance(symtab->get_type("gl_LightProducts"), state->Const.MaxLights); - add_uniform(instructions, state, "gl_FrontLightProduct", light_products_type); - add_uniform(instructions, state, "gl_BackLightProduct", light_products_type); + add_uniform(instructions, symtab, "gl_FrontLightProduct", light_products_type); + add_uniform(instructions, symtab, "gl_BackLightProduct", light_products_type); - add_uniform(instructions, state, "gl_TextureEnvColor", + add_uniform(instructions, symtab, "gl_TextureEnvColor", glsl_type::get_array_instance(glsl_type::vec4_type, state->Const.MaxTextureUnits)); const glsl_type *const texcoords_vec4 = glsl_type::get_array_instance(glsl_type::vec4_type, state->Const.MaxTextureCoords); - add_uniform(instructions, state, "gl_EyePlaneS", texcoords_vec4); - add_uniform(instructions, state, "gl_EyePlaneT", texcoords_vec4); - add_uniform(instructions, state, "gl_EyePlaneR", texcoords_vec4); - add_uniform(instructions, state, "gl_EyePlaneQ", texcoords_vec4); - add_uniform(instructions, state, "gl_ObjectPlaneS", texcoords_vec4); - add_uniform(instructions, state, "gl_ObjectPlaneT", texcoords_vec4); - add_uniform(instructions, state, "gl_ObjectPlaneR", texcoords_vec4); - add_uniform(instructions, state, "gl_ObjectPlaneQ", texcoords_vec4); - - add_uniform(instructions, state, "gl_Fog", - state->symbols->get_type("gl_FogParameters")); + add_uniform(instructions, symtab, "gl_EyePlaneS", texcoords_vec4); + add_uniform(instructions, symtab, "gl_EyePlaneT", texcoords_vec4); + add_uniform(instructions, symtab, "gl_EyePlaneR", texcoords_vec4); + add_uniform(instructions, symtab, "gl_EyePlaneQ", texcoords_vec4); + add_uniform(instructions, symtab, "gl_ObjectPlaneS", texcoords_vec4); + add_uniform(instructions, symtab, "gl_ObjectPlaneT", texcoords_vec4); + add_uniform(instructions, symtab, "gl_ObjectPlaneR", texcoords_vec4); + add_uniform(instructions, symtab, "gl_ObjectPlaneQ", texcoords_vec4); + + add_uniform(instructions, symtab, "gl_Fog", + symtab->get_type("gl_FogParameters")); } /* This function should only be called for ES, not desktop GL. */ @@ -232,8 +526,8 @@ generate_100ES_vs_variables(exec_list *instructions, struct _mesa_glsl_parse_state *state) { for (unsigned i = 0; i < Elements(builtin_core_vs_variables); i++) { - add_builtin_variable(& builtin_core_vs_variables[i], - instructions, state->symbols); + add_builtin_variable(instructions, state->symbols, + & builtin_core_vs_variables[i]); } generate_100ES_uniforms(instructions, state); @@ -248,15 +542,15 @@ generate_110_vs_variables(exec_list *instructions, struct _mesa_glsl_parse_state *state) { for (unsigned i = 0; i < Elements(builtin_core_vs_variables); i++) { - add_builtin_variable(& builtin_core_vs_variables[i], - instructions, state->symbols); + add_builtin_variable(instructions, state->symbols, + & builtin_core_vs_variables[i]); } for (unsigned i = 0 ; i < Elements(builtin_110_deprecated_vs_variables) ; i++) { - add_builtin_variable(& builtin_110_deprecated_vs_variables[i], - instructions, state->symbols); + add_builtin_variable(instructions, state->symbols, + & builtin_110_deprecated_vs_variables[i]); } generate_110_uniforms(instructions, state); @@ -271,8 +565,8 @@ generate_110_vs_variables(exec_list *instructions, const glsl_type *const vec4_array_type = glsl_type::get_array_instance(glsl_type::vec4_type, 0); - add_variable("gl_TexCoord", ir_var_out, VERT_RESULT_TEX0, vec4_array_type, - instructions, state->symbols); + add_variable(instructions, state->symbols, + "gl_TexCoord", vec4_array_type, ir_var_out, VERT_RESULT_TEX0); generate_ARB_draw_buffers_variables(instructions, state, false, vertex_shader); @@ -297,8 +591,8 @@ generate_130_vs_variables(exec_list *instructions, generate_120_vs_variables(instructions, state); for (unsigned i = 0; i < Elements(builtin_130_vs_variables); i++) { - add_builtin_variable(& builtin_130_vs_variables[i], - instructions, state->symbols); + add_builtin_variable(instructions, state->symbols, + & builtin_130_vs_variables[i]); } const glsl_type *const clip_distance_array_type = @@ -306,8 +600,8 @@ generate_130_vs_variables(exec_list *instructions, state->Const.MaxClipPlanes); /* FINISHME: gl_ClipDistance needs a real location assigned. */ - add_variable("gl_ClipDistance", ir_var_out, -1, clip_distance_array_type, - instructions, state->symbols); + add_variable(instructions, state->symbols, + "gl_ClipDistance", clip_distance_array_type, ir_var_out, -1); } @@ -344,13 +638,13 @@ generate_100ES_fs_variables(exec_list *instructions, struct _mesa_glsl_parse_state *state) { for (unsigned i = 0; i < Elements(builtin_core_fs_variables); i++) { - add_builtin_variable(& builtin_core_fs_variables[i], - instructions, state->symbols); + add_builtin_variable(instructions, state->symbols, + & builtin_core_fs_variables[i]); } for (unsigned i = 0; i < Elements(builtin_100ES_fs_variables); i++) { - add_builtin_variable(& builtin_100ES_fs_variables[i], - instructions, state->symbols); + add_builtin_variable(instructions, state->symbols, + & builtin_100ES_fs_variables[i]); } generate_100ES_uniforms(instructions, state); @@ -364,20 +658,20 @@ generate_110_fs_variables(exec_list *instructions, struct _mesa_glsl_parse_state *state) { for (unsigned i = 0; i < Elements(builtin_core_fs_variables); i++) { - add_builtin_variable(& builtin_core_fs_variables[i], - instructions, state->symbols); + add_builtin_variable(instructions, state->symbols, + & builtin_core_fs_variables[i]); } for (unsigned i = 0; i < Elements(builtin_110_fs_variables); i++) { - add_builtin_variable(& builtin_110_fs_variables[i], - instructions, state->symbols); + add_builtin_variable(instructions, state->symbols, + & builtin_110_fs_variables[i]); } for (unsigned i = 0 ; i < Elements(builtin_110_deprecated_fs_variables) ; i++) { - add_builtin_variable(& builtin_110_deprecated_fs_variables[i], - instructions, state->symbols); + add_builtin_variable(instructions, state->symbols, + & builtin_110_deprecated_fs_variables[i]); } generate_110_uniforms(instructions, state); @@ -392,8 +686,8 @@ generate_110_fs_variables(exec_list *instructions, const glsl_type *const vec4_array_type = glsl_type::get_array_instance(glsl_type::vec4_type, 0); - add_variable("gl_TexCoord", ir_var_in, FRAG_ATTRIB_TEX0, vec4_array_type, - instructions, state->symbols); + add_variable(instructions, state->symbols, + "gl_TexCoord", vec4_array_type, ir_var_in, FRAG_ATTRIB_TEX0); generate_ARB_draw_buffers_variables(instructions, state, false, fragment_shader); @@ -408,8 +702,8 @@ generate_ARB_draw_buffers_variables(exec_list *instructions, /* gl_MaxDrawBuffers is available in all shader stages. */ ir_variable *const mdb = - add_variable("gl_MaxDrawBuffers", ir_var_auto, -1, - glsl_type::int_type, instructions, state->symbols); + add_variable(instructions, state->symbols, + "gl_MaxDrawBuffers", glsl_type::int_type, ir_var_auto, -1); if (warn) mdb->warn_extension = "GL_ARB_draw_buffers"; @@ -426,8 +720,9 @@ generate_ARB_draw_buffers_variables(exec_list *instructions, state->Const.MaxDrawBuffers); ir_variable *const fd = - add_variable("gl_FragData", ir_var_out, FRAG_RESULT_DATA0, - vec4_array_type, instructions, state->symbols); + add_variable(instructions, state->symbols, + "gl_FragData", vec4_array_type, + ir_var_out, FRAG_RESULT_DATA0); if (warn) fd->warn_extension = "GL_ARB_draw_buffers"; @@ -445,9 +740,9 @@ generate_ARB_draw_instanced_variables(exec_list *instructions, */ if (target == vertex_shader) { ir_variable *const inst = - add_variable("gl_InstanceIDARB", ir_var_system_value, - SYSTEM_VALUE_INSTANCE_ID, - glsl_type::int_type, instructions, state->symbols); + add_variable(instructions, state->symbols, + "gl_InstanceIDARB", glsl_type::int_type, + ir_var_system_value, SYSTEM_VALUE_INSTANCE_ID); if (warn) inst->warn_extension = "GL_ARB_draw_instanced"; @@ -463,8 +758,9 @@ generate_ARB_shader_stencil_export_variables(exec_list *instructions, /* gl_FragStencilRefARB is only available in the fragment shader. */ ir_variable *const fd = - add_variable("gl_FragStencilRefARB", ir_var_out, FRAG_RESULT_STENCIL, - glsl_type::int_type, instructions, state->symbols); + add_variable(instructions, state->symbols, + "gl_FragStencilRefARB", glsl_type::int_type, + ir_var_out, FRAG_RESULT_STENCIL); if (warn) fd->warn_extension = "GL_ARB_shader_stencil_export"; @@ -479,8 +775,8 @@ generate_120_fs_variables(exec_list *instructions, for (unsigned i = 0 ; i < Elements(builtin_120_fs_variables) ; i++) { - add_builtin_variable(& builtin_120_fs_variables[i], - instructions, state->symbols); + add_builtin_variable(instructions, state->symbols, + & builtin_120_fs_variables[i]); } } @@ -495,8 +791,8 @@ generate_130_fs_variables(exec_list *instructions, state->Const.MaxClipPlanes); /* FINISHME: gl_ClipDistance needs a real location assigned. */ - add_variable("gl_ClipDistance", ir_var_in, -1, clip_distance_array_type, - instructions, state->symbols); + add_variable(instructions, state->symbols, + "gl_ClipDistance", clip_distance_array_type, ir_var_in, -1); } static void diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp index 7db5c5e8d53..17492357f2d 100644 --- a/src/glsl/linker.cpp +++ b/src/glsl/linker.cpp @@ -994,6 +994,19 @@ update_array_sizes(struct gl_shader_program *prog) } if (size + 1 != var->type->fields.array->length) { + /* If this is a built-in uniform (i.e., it's backed by some + * fixed-function state), adjust the number of state slots to + * match the new array size. The number of slots per array entry + * is not known. It seems saft to assume that the total number of + * slots is an integer multiple of the number of array elements. + * Determine the number of slots per array element by dividing by + * the old (total) size. + */ + if (var->num_state_slots > 0) { + var->num_state_slots = (size + 1) + * (var->num_state_slots / var->type->length); + } + var->type = glsl_type::get_array_instance(var->type->fields.array, size + 1); /* FINISHME: We should update the types of array diff --git a/src/glsl/opt_copy_propagation_elements.cpp b/src/glsl/opt_copy_propagation_elements.cpp index 8541d9a8ee1..a91e624cb72 100644 --- a/src/glsl/opt_copy_propagation_elements.cpp +++ b/src/glsl/opt_copy_propagation_elements.cpp @@ -161,9 +161,16 @@ ir_visitor_status ir_copy_propagation_elements_visitor::visit_leave(ir_assignment *ir) { ir_dereference_variable *lhs = ir->lhs->as_dereference_variable(); + ir_variable *var = ir->lhs->variable_referenced(); + + if (var->type->is_scalar() || var->type->is_vector()) { + kill_entry *k; + + if (lhs) + k = new(mem_ctx) kill_entry(var, ir->write_mask); + else + k = new(mem_ctx) kill_entry(var, ~0); - if (lhs && (lhs->type->is_scalar() || lhs->type->is_vector())) { - kill_entry *k = new(mem_ctx) kill_entry(lhs->var, ir->write_mask); kill(k); } @@ -383,8 +390,10 @@ ir_copy_propagation_elements_visitor::kill(kill_entry *k) if (entry->lhs == k->var) { entry->write_mask = entry->write_mask & ~k->write_mask; - if (entry->write_mask == 0) + if (entry->write_mask == 0) { entry->remove(); + continue; + } } if (entry->rhs == k->var) { entry->remove(); diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c index 2c28bc27150..fc0237a4f6b 100644 --- a/src/glx/dri2_glx.c +++ b/src/glx/dri2_glx.c @@ -945,6 +945,9 @@ handle_error: static void dri2DestroyDisplay(__GLXDRIdisplay * dpy) { + struct dri2_display *pdp = (struct dri2_display *) dpy; + + __glxHashDestroy(pdp->dri2Hash); Xfree(dpy); } diff --git a/src/glx/glxext.c b/src/glx/glxext.c index e35dcb73e89..278c71978fa 100644 --- a/src/glx/glxext.c +++ b/src/glx/glxext.c @@ -250,19 +250,24 @@ glx_display_free(struct glx_display *priv) static int __glXCloseDisplay(Display * dpy, XExtCodes * codes) { - struct glx_display *priv, **prev; + struct glx_display *priv, **prev, *next; _XLockMutex(_Xglobal_lock); prev = &glx_displays; for (priv = glx_displays; priv; prev = &priv->next, priv = priv->next) { if (priv->dpy == dpy) { - (*prev) = priv->next; break; } } - _XUnlockMutex(_Xglobal_lock); + /* Only remove the display from the list after it's destroyed. The cleanup + * code (e.g. driReleaseDrawables()) ends up calling __glXInitialize(), + * which would create a new glx_display while we're trying to destroy this + * one. */ + next = priv->next; glx_display_free(priv); + *prev = next; + _XUnlockMutex(_Xglobal_lock); return 1; } diff --git a/src/glx/indirect.c b/src/glx/indirect.c index b2675c2958f..c80a237bedc 100644 --- a/src/glx/indirect.c +++ b/src/glx/indirect.c @@ -8597,6 +8597,21 @@ __indirect_glDrawBuffersARB(GLsizei n, const GLenum * bufs) } } +#define X_GLrop_ClampColorARB 234 +void +__indirect_glClampColorARB(GLenum target, GLenum clamp) +{ + struct glx_context *const gc = __glXGetCurrentContext(); + const GLuint cmdlen = 12; + emit_header(gc->pc, X_GLrop_ClampColorARB, cmdlen); + (void) memcpy((void *) (gc->pc + 4), (void *) (&target), 4); + (void) memcpy((void *) (gc->pc + 8), (void *) (&clamp), 4); + gc->pc += cmdlen; + if (__builtin_expect(gc->pc > gc->limit, 0)) { + (void) __glXFlushRenderBuffer(gc, gc->pc); + } +} + #define X_GLrop_RenderbufferStorageMultisample 4331 void __indirect_glRenderbufferStorageMultisample(GLenum target, GLsizei samples, diff --git a/src/glx/indirect.h b/src/glx/indirect.h index b610cc20279..22bdb827d96 100644 --- a/src/glx/indirect.h +++ b/src/glx/indirect.h @@ -573,6 +573,7 @@ extern HIDDEN void __indirect_glGetQueryObjectuivARB(GLuint id, GLenum pname, GL extern HIDDEN void __indirect_glGetQueryivARB(GLenum target, GLenum pname, GLint * params); extern HIDDEN GLboolean __indirect_glIsQueryARB(GLuint id); extern HIDDEN void __indirect_glDrawBuffersARB(GLsizei n, const GLenum * bufs); +extern HIDDEN void __indirect_glClampColorARB(GLenum target, GLenum clamp); extern HIDDEN void __indirect_glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); extern HIDDEN void __indirect_glSampleMaskSGIS(GLclampf value, GLboolean invert); extern HIDDEN void __indirect_glSamplePatternSGIS(GLenum pattern); diff --git a/src/glx/indirect_init.c b/src/glx/indirect_init.c index 9f1ee5930fc..7bb6754e38f 100644 --- a/src/glx/indirect_init.c +++ b/src/glx/indirect_init.c @@ -588,6 +588,10 @@ struct _glapi_table * __glXNewIndirectAPI( void ) glAPI->DrawBuffersARB = __indirect_glDrawBuffersARB; + /* 39. GL_ARB_color_buffer_float */ + + glAPI->ClampColorARB = __indirect_glClampColorARB; + /* 45. GL_ARB_framebuffer_object */ glAPI->RenderbufferStorageMultisample = __indirect_glRenderbufferStorageMultisample; diff --git a/src/mapi/glapi/gen/ARB_color_buffer_float.xml b/src/mapi/glapi/gen/ARB_color_buffer_float.xml new file mode 100644 index 00000000000..7acf271558e --- /dev/null +++ b/src/mapi/glapi/gen/ARB_color_buffer_float.xml @@ -0,0 +1,25 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd"> + +<!-- Note: no GLX protocol info yet. --> + + +<OpenGLAPI> + +<category name="GL_ARB_color_buffer_float" number="39"> + + <enum name="RGBA_FLOAT_MODE_ARB" value="0x8820"/> + <enum name="CLAMP_VERTEX_COLOR_ARB" value="0x891A"/> + <enum name="CLAMP_FRAGMENT_COLOR_ARB" value="0x891B"/> + <enum name="CLAMP_READ_COLOR_ARB" value="0x891C"/> + <enum name="FIXED_ONLY_ARB" value="0x891D"/> + + <function name="ClampColorARB" offset="assign"> + <param name="target" type="GLenum"/> + <param name="clamp" type="GLenum"/> + <glx rop="234"/> + </function> + +</category> + +</OpenGLAPI> diff --git a/src/mapi/glapi/gen/ARB_sampler_objects.xml b/src/mapi/glapi/gen/ARB_sampler_objects.xml new file mode 100644 index 00000000000..0d39db4d33f --- /dev/null +++ b/src/mapi/glapi/gen/ARB_sampler_objects.xml @@ -0,0 +1,96 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd"> + +<!-- Note: no GLX protocol info yet. --> + +<OpenGLAPI> + +<category name="GL_ARB_sampler_objects" number="81"> + + <function name="GenSamplers" offset="assign"> + <param name="count" type="GLsizei"/> + <param name="samplers" type="GLuint *"/> + </function> + + <function name="DeleteSamplers" offset="assign"> + <param name="count" type="GLsizei"/> + <param name="samplers" type="const GLuint *"/> + </function> + + <function name="IsSampler" offset="assign"> + <param name="sampler" type="GLuint"/> + <return type="GLboolean"/> + </function> + + <function name="BindSampler" offset="assign"> + <param name="unit" type="GLuint"/> + <param name="sampler" type="GLuint"/> + </function> + + <function name="SamplerParameteri" offset="assign"> + <param name="sampler" type="GLuint"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLint"/> + </function> + + <function name="SamplerParameterf" offset="assign"> + <param name="sampler" type="GLuint"/> + <param name="pname" type="GLenum"/> + <param name="param" type="GLfloat"/> + </function> + + <function name="SamplerParameteriv" offset="assign"> + <param name="sampler" type="GLuint"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLint *"/> + </function> + + <function name="SamplerParameterfv" offset="assign"> + <param name="sampler" type="GLuint"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLfloat *"/> + </function> + + <function name="SamplerParameterIiv" offset="assign"> + <param name="sampler" type="GLuint"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLint *"/> + </function> + + <function name="SamplerParameterIuiv" offset="assign"> + <param name="sampler" type="GLuint"/> + <param name="pname" type="GLenum"/> + <param name="params" type="const GLuint *"/> + </function> + + <function name="GetSamplerParameteriv" offset="assign"> + <param name="sampler" type="GLuint"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *"/> + </function> + + <function name="GetSamplerParameterfv" offset="assign"> + <param name="sampler" type="GLuint"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLfloat *"/> + </function> + + <function name="GetSamplerParameterIiv" offset="assign"> + <param name="sampler" type="GLuint"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLint *"/> + </function> + + <function name="GetSamplerParameterIuiv" offset="assign"> + <param name="sampler" type="GLuint"/> + <param name="pname" type="GLenum"/> + <param name="params" type="GLuint *"/> + </function> + + <enum name="SAMPLER_BINDING" count="1" value="0x8919"> + <size name="Get" mode="get"/> + </enum> + +</category> + +</OpenGLAPI> diff --git a/src/mapi/glapi/gen/ARB_texture_buffer_object.xml b/src/mapi/glapi/gen/ARB_texture_buffer_object.xml new file mode 100644 index 00000000000..57680f5535e --- /dev/null +++ b/src/mapi/glapi/gen/ARB_texture_buffer_object.xml @@ -0,0 +1,22 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd"> + +<OpenGLAPI> + +<category name="GL_ARB_texture_buffer_object" number="51"> + + <enum name="TEXTURE_BUFFER_ARB" value="0x8C2A"/> + <enum name="MAX_TEXTURE_BUFFER_SIZE_ARB" value="0x8C2B"/> + <enum name="TEXTURE_BINDING_BUFFER_ARB" value="0x8C2C"/> + <enum name="TEXTURE_BUFFER_DATA_STORE_BINDING_ARB" value="0x8C2D"/> + <enum name="TEXTURE_BUFFER_FORMAT_ARB" value="0x8C2E"/> + + <function name="TexBufferARB" offset="assign"> + <param name="target" type="GLenum"/> + <param name="internalFormat" type="GLenum"/> + <param name="buffer" type="GLuint"/> + </function> + +</category> + +</OpenGLAPI> diff --git a/src/mapi/glapi/gen/GL3x.xml b/src/mapi/glapi/gen/GL3x.xml index 8d15c94970c..cec9c916eff 100644 --- a/src/mapi/glapi/gen/GL3x.xml +++ b/src/mapi/glapi/gen/GL3x.xml @@ -133,8 +133,8 @@ <function name="ClearBufferfi" offset="assign"> <param name="buffer" type="GLenum"/> <param name="drawbuffer" type="GLint"/> - <param name="depth" type="const GLfloat"/> - <param name="stencil" type="const GLint"/> + <param name="depth" type="GLfloat"/> + <param name="stencil" type="GLint"/> </function> <function name="GetStringi" offset="assign"> diff --git a/src/mapi/glapi/gen/Makefile b/src/mapi/glapi/gen/Makefile index 1f4642af559..b56ce863992 100644 --- a/src/mapi/glapi/gen/Makefile +++ b/src/mapi/glapi/gen/Makefile @@ -41,8 +41,6 @@ XORG_GLX_DIR = $(XORG_BASE)/glx XORG_GLAPI_DIR = $(XORG_BASE)/glx XORG_GLAPI_FILES = \ - $(XORG_GLAPI_DIR)/glapi.h \ - $(XORG_GLAPI_DIR)/glapi.c \ $(XORG_GLAPI_DIR)/glapi_getproc.c \ $(XORG_GLAPI_DIR)/glapi_nop.c \ $(XORG_GLAPI_DIR)/glthread.c \ @@ -50,7 +48,6 @@ XORG_GLAPI_FILES = \ XORG_GLAPI_OUTPUTS = \ $(XORG_GLAPI_DIR)/glprocs.h \ - $(XORG_GLAPI_DIR)/glapitemp.h \ $(XORG_GLAPI_DIR)/glapioffsets.h \ $(XORG_GLAPI_DIR)/glapitable.h \ $(XORG_GLAPI_DIR)/glapidispatch.h @@ -72,6 +69,7 @@ XORG_OUTPUTS = \ API_XML = \ gl_API.xml \ + ARB_color_buffer_float.xml \ ARB_copy_buffer.xml \ ARB_depth_clamp.xml \ ARB_draw_buffers_blend.xml \ @@ -82,8 +80,10 @@ API_XML = \ ARB_geometry_shader4.xml \ ARB_instanced_arrays.xml \ ARB_map_buffer_range.xml \ + ARB_sampler_objects.xml \ ARB_seamless_cube_map.xml \ ARB_sync.xml \ + ARB_texture_buffer_object.xml \ ARB_vertex_array_object.xml \ APPLE_object_purgeable.xml \ APPLE_vertex_array_object.xml \ diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml index 56c0ec71b36..ef68ad62cf7 100644 --- a/src/mapi/glapi/gen/gl_API.xml +++ b/src/mapi/glapi/gen/gl_API.xml @@ -7973,12 +7973,15 @@ <xi:include href="NV_texture_barrier.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> +<xi:include href="ARB_sampler_objects.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + <xi:include href="EXT_transform_feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> <xi:include href="ARB_draw_instanced.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> <xi:include href="ARB_geometry_shader4.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> +<xi:include href="ARB_color_buffer_float.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> <!-- Non-ARB extensions sorted by extension number. --> @@ -12529,4 +12532,6 @@ <xi:include href="ARB_draw_buffers_blend.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> +<xi:include href="ARB_texture_buffer_object.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + </OpenGLAPI> diff --git a/src/mapi/glapi/gen/gl_XML.py b/src/mapi/glapi/gen/gl_XML.py index 660c8cfb711..4d414e8b0f8 100644 --- a/src/mapi/glapi/gen/gl_XML.py +++ b/src/mapi/glapi/gen/gl_XML.py @@ -224,7 +224,7 @@ class gl_print_base: """ self.undef_list.append(S) - print """# if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) && defined(__ELF__) + print """# if (defined(__GNUC__) && !defined(__CYGWIN__) && !defined(__MINGW32__)) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) && defined(__ELF__)) # define %s __attribute__((visibility("%s"))) # else # define %s diff --git a/src/mapi/glapi/glapi_mapi_tmp.h b/src/mapi/glapi/glapi_mapi_tmp.h index c3f9cd227ce..02a541edc44 100644 --- a/src/mapi/glapi/glapi_mapi_tmp.h +++ b/src/mapi/glapi/glapi_mapi_tmp.h @@ -522,7 +522,7 @@ GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix3x4fv)(GLint location, GLsizei cou GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix4x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); GLAPI void APIENTRY GLAPI_PREFIX(UniformMatrix4x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); GLAPI void APIENTRY GLAPI_PREFIX(ClampColor)(GLenum target, GLenum clamp); -GLAPI void APIENTRY GLAPI_PREFIX(ClearBufferfi)(GLenum buffer, GLint drawbuffer, const GLfloat depth, const GLint stencil); +GLAPI void APIENTRY GLAPI_PREFIX(ClearBufferfi)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); GLAPI void APIENTRY GLAPI_PREFIX(ClearBufferfv)(GLenum buffer, GLint drawbuffer, const GLfloat *value); GLAPI void APIENTRY GLAPI_PREFIX(ClearBufferiv)(GLenum buffer, GLint drawbuffer, const GLint *value); GLAPI void APIENTRY GLAPI_PREFIX(ClearBufferuiv)(GLenum buffer, GLint drawbuffer, const GLuint *value); @@ -774,6 +774,7 @@ GLAPI GLint APIENTRY GLAPI_PREFIX(GetAttribLocation)(GLuint program, const GLcha GLAPI void APIENTRY GLAPI_PREFIX(DrawBuffersARB)(GLsizei n, const GLenum *bufs); GLAPI void APIENTRY GLAPI_PREFIX(DrawBuffers)(GLsizei n, const GLenum *bufs); GLAPI void APIENTRY GLAPI_PREFIX(DrawBuffersATI)(GLsizei n, const GLenum *bufs); +GLAPI void APIENTRY GLAPI_PREFIX(ClampColorARB)(GLenum target, GLenum clamp); GLAPI void APIENTRY GLAPI_PREFIX(DrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount); GLAPI void APIENTRY GLAPI_PREFIX(DrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei primcount); GLAPI void APIENTRY GLAPI_PREFIX(DrawArraysInstancedEXT)(GLenum mode, GLint first, GLsizei count, GLsizei primcount); @@ -788,6 +789,7 @@ GLAPI void APIENTRY GLAPI_PREFIX(ProgramParameteriARB)(GLuint program, GLenum pn GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribDivisorARB)(GLuint index, GLuint divisor); GLAPI void APIENTRY GLAPI_PREFIX(FlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length); GLAPI GLvoid * APIENTRY GLAPI_PREFIX(MapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +GLAPI void APIENTRY GLAPI_PREFIX(TexBufferARB)(GLenum target, GLenum internalFormat, GLuint buffer); GLAPI void APIENTRY GLAPI_PREFIX(BindVertexArray)(GLuint array); GLAPI void APIENTRY GLAPI_PREFIX(GenVertexArrays)(GLsizei n, GLuint *arrays); GLAPI void APIENTRY GLAPI_PREFIX(CopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); @@ -805,6 +807,20 @@ GLAPI void APIENTRY GLAPI_PREFIX(BlendEquationSeparateiARB)(GLuint buf, GLenum m GLAPI void APIENTRY GLAPI_PREFIX(BlendEquationiARB)(GLuint buf, GLenum mode); GLAPI void APIENTRY GLAPI_PREFIX(BlendFuncSeparateiARB)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcA, GLenum dstA); GLAPI void APIENTRY GLAPI_PREFIX(BlendFunciARB)(GLuint buf, GLenum src, GLenum dst); +GLAPI void APIENTRY GLAPI_PREFIX(BindSampler)(GLuint unit, GLuint sampler); +GLAPI void APIENTRY GLAPI_PREFIX(DeleteSamplers)(GLsizei count, const GLuint *samplers); +GLAPI void APIENTRY GLAPI_PREFIX(GenSamplers)(GLsizei count, GLuint *samplers); +GLAPI void APIENTRY GLAPI_PREFIX(GetSamplerParameterIiv)(GLuint sampler, GLenum pname, GLint *params); +GLAPI void APIENTRY GLAPI_PREFIX(GetSamplerParameterIuiv)(GLuint sampler, GLenum pname, GLuint *params); +GLAPI void APIENTRY GLAPI_PREFIX(GetSamplerParameterfv)(GLuint sampler, GLenum pname, GLfloat *params); +GLAPI void APIENTRY GLAPI_PREFIX(GetSamplerParameteriv)(GLuint sampler, GLenum pname, GLint *params); +GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsSampler)(GLuint sampler); +GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameterIiv)(GLuint sampler, GLenum pname, const GLint *params); +GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameterIuiv)(GLuint sampler, GLenum pname, const GLuint *params); +GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameterf)(GLuint sampler, GLenum pname, GLfloat param); +GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameterfv)(GLuint sampler, GLenum pname, const GLfloat *params); +GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameteri)(GLuint sampler, GLenum pname, GLint param); +GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameteriv)(GLuint sampler, GLenum pname, const GLint *params); GLAPI void APIENTRY GLAPI_PREFIX(BindTransformFeedback)(GLenum target, GLuint id); GLAPI void APIENTRY GLAPI_PREFIX(DeleteTransformFeedbacks)(GLsizei n, const GLuint *ids); GLAPI void APIENTRY GLAPI_PREFIX(DrawTransformFeedback)(GLenum mode, GLuint id); @@ -817,28 +833,28 @@ GLAPI void APIENTRY GLAPI_PREFIX(DepthRangef)(GLclampf zNear, GLclampf zFar); GLAPI void APIENTRY GLAPI_PREFIX(GetShaderPrecisionFormat)(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); GLAPI void APIENTRY GLAPI_PREFIX(ReleaseShaderCompiler)(void); GLAPI void APIENTRY GLAPI_PREFIX(ShaderBinary)(GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_610)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_611)(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_612)(GLuint program, GLenum pname, GLint value); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_626)(GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, GLvoid *binary); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_627)(GLuint program, GLenum binaryFormat, const GLvoid *binary, GLsizei length); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_628)(GLuint program, GLenum pname, GLint value); GLAPI void APIENTRY GLAPI_PREFIX(PolygonOffsetEXT)(GLfloat factor, GLfloat bias); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_614)(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_615)(const GLfloat *coords); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_616)(GLint x, GLint y, GLint z, GLint width, GLint height); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_617)(const GLint *coords); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_618)(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_619)(const GLshort *coords); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_620)(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_621)(const GLfixed *coords); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_622)(GLenum type, GLsizei stride, const GLvoid *pointer); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_623)(GLenum pname, GLfloat *params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_624)(GLenum pname, GLint *params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_625)(GLenum pname, GLfloat param); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_626)(GLenum pname, const GLfloat *params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_627)(GLenum pname, GLint param); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_628)(GLenum pname, const GLint *params); -GLbitfield APIENTRY GLAPI_PREFIX(_dispatch_stub_629)(GLfixed *mantissa, GLint *exponent); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_630)(GLclampf value, GLboolean invert); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_631)(GLenum pattern); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_630)(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_631)(const GLfloat *coords); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_632)(GLint x, GLint y, GLint z, GLint width, GLint height); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_633)(const GLint *coords); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_634)(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_635)(const GLshort *coords); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_636)(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_637)(const GLfixed *coords); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_638)(GLenum type, GLsizei stride, const GLvoid *pointer); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_639)(GLenum pname, GLfloat *params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_640)(GLenum pname, GLint *params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_641)(GLenum pname, GLfloat param); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_642)(GLenum pname, const GLfloat *params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_643)(GLenum pname, GLint param); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_644)(GLenum pname, const GLint *params); +GLbitfield APIENTRY GLAPI_PREFIX(_dispatch_stub_645)(GLfixed *mantissa, GLint *exponent); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_646)(GLclampf value, GLboolean invert); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_647)(GLenum pattern); GLAPI void APIENTRY GLAPI_PREFIX(ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); GLAPI void APIENTRY GLAPI_PREFIX(EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean *pointer); GLAPI void APIENTRY GLAPI_PREFIX(IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer); @@ -901,7 +917,7 @@ GLAPI void APIENTRY GLAPI_PREFIX(FogCoordfEXT)(GLfloat coord); GLAPI void APIENTRY GLAPI_PREFIX(FogCoordf)(GLfloat coord); GLAPI void APIENTRY GLAPI_PREFIX(FogCoordfvEXT)(const GLfloat *coord); GLAPI void APIENTRY GLAPI_PREFIX(FogCoordfv)(const GLfloat *coord); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_666)(GLenum mode); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_682)(GLenum mode); GLAPI void APIENTRY GLAPI_PREFIX(BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); GLAPI void APIENTRY GLAPI_PREFIX(BlendFuncSeparate)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); GLAPI void APIENTRY GLAPI_PREFIX(FlushVertexArrayRangeNV)(void); @@ -976,15 +992,15 @@ GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4iMESA)(GLint x, GLint y, GLint z, GLi GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4ivMESA)(const GLint *v); GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w); GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4svMESA)(const GLshort *v); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_708)(const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_709)(const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLsizei primcount, GLint modestride); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_710)(GLsizei n, const GLuint *fences); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_711)(GLuint fence); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_712)(GLsizei n, GLuint *fences); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_713)(GLuint fence, GLenum pname, GLint *params); -GLboolean APIENTRY GLAPI_PREFIX(_dispatch_stub_714)(GLuint fence); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_715)(GLuint fence, GLenum condition); -GLboolean APIENTRY GLAPI_PREFIX(_dispatch_stub_716)(GLuint fence); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_724)(const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_725)(const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid * const *indices, GLsizei primcount, GLint modestride); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_726)(GLsizei n, const GLuint *fences); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_727)(GLuint fence); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_728)(GLsizei n, GLuint *fences); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_729)(GLuint fence, GLenum pname, GLint *params); +GLboolean APIENTRY GLAPI_PREFIX(_dispatch_stub_730)(GLuint fence); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_731)(GLuint fence, GLenum condition); +GLboolean APIENTRY GLAPI_PREFIX(_dispatch_stub_732)(GLuint fence); GLAPI GLboolean APIENTRY GLAPI_PREFIX(AreProgramsResidentNV)(GLsizei n, const GLuint *ids, GLboolean *residences); GLAPI void APIENTRY GLAPI_PREFIX(BindProgramNV)(GLenum target, GLuint program); GLAPI void APIENTRY GLAPI_PREFIX(BindProgramARB)(GLenum target, GLuint program); @@ -1073,12 +1089,12 @@ GLAPI void APIENTRY GLAPI_PREFIX(PointParameteriNV)(GLenum pname, GLint param); GLAPI void APIENTRY GLAPI_PREFIX(PointParameteri)(GLenum pname, GLint param); GLAPI void APIENTRY GLAPI_PREFIX(PointParameterivNV)(GLenum pname, const GLint *params); GLAPI void APIENTRY GLAPI_PREFIX(PointParameteriv)(GLenum pname, const GLint *params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_797)(GLenum face); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_798)(GLuint array); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_799)(GLsizei n, const GLuint *arrays); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_813)(GLenum face); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_814)(GLuint array); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_815)(GLsizei n, const GLuint *arrays); GLAPI void APIENTRY GLAPI_PREFIX(DeleteVertexArrays)(GLsizei n, const GLuint *arrays); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_800)(GLsizei n, GLuint *arrays); -GLboolean APIENTRY GLAPI_PREFIX(_dispatch_stub_801)(GLuint array); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_816)(GLsizei n, GLuint *arrays); +GLboolean APIENTRY GLAPI_PREFIX(_dispatch_stub_817)(GLuint array); GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsVertexArray)(GLuint array); GLAPI void APIENTRY GLAPI_PREFIX(GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params); GLAPI void APIENTRY GLAPI_PREFIX(GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte *name, GLfloat *params); @@ -1089,54 +1105,54 @@ GLAPI void APIENTRY GLAPI_PREFIX(ProgramNamedParameter4fvNV)(GLuint id, GLsizei GLAPI void APIENTRY GLAPI_PREFIX(PrimitiveRestartIndexNV)(GLuint index); GLAPI void APIENTRY GLAPI_PREFIX(PrimitiveRestartIndex)(GLuint index); GLAPI void APIENTRY GLAPI_PREFIX(PrimitiveRestartNV)(void); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_810)(GLenum func, GLclampx ref); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_811)(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_812)(GLclampx depth); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_813)(GLenum plane, const GLfixed *equation); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_814)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_815)(GLclampx zNear, GLclampx zFar); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_816)(GLenum pname, GLfixed param); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_817)(GLenum pname, const GLfixed *params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_818)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_819)(GLenum plane, GLfixed *equation); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_820)(GLenum pname, GLfixed *params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_821)(GLenum light, GLenum pname, GLfixed *params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_822)(GLenum face, GLenum pname, GLfixed *params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_823)(GLenum target, GLenum pname, GLfixed *params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_824)(GLenum coord, GLenum pname, GLfixed *params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_825)(GLenum target, GLenum pname, GLfixed *params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_826)(GLenum pname, GLfixed param); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_827)(GLenum pname, const GLfixed *params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_828)(GLenum light, GLenum pname, GLfixed param); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_829)(GLenum light, GLenum pname, const GLfixed *params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_830)(GLfixed width); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_831)(const GLfixed *m); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_832)(GLenum face, GLenum pname, GLfixed param); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_833)(GLenum face, GLenum pname, const GLfixed *params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_834)(const GLfixed *m); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_835)(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_836)(GLfixed nx, GLfixed ny, GLfixed nz); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_837)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_838)(GLenum pname, GLfixed param); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_839)(GLenum pname, const GLfixed *params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_840)(GLfixed size); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_841)(GLfixed factor, GLfixed units); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_842)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_843)(GLclampx value, GLboolean invert); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_844)(GLfixed x, GLfixed y, GLfixed z); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_845)(GLenum target, GLenum pname, GLfixed param); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_846)(GLenum target, GLenum pname, const GLfixed *params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_847)(GLenum coord, GLenum pname, GLint param); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_848)(GLenum coord, GLenum pname, const GLfixed *params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_849)(GLenum target, GLenum pname, GLfixed param); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_850)(GLenum target, GLenum pname, const GLfixed *params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_851)(GLfixed x, GLfixed y, GLfixed z); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_852)(GLenum plane, const GLfloat *equation); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_853)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_854)(GLenum plane, GLfloat *equation); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_855)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_856)(GLclampd zmin, GLclampd zmax); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_857)(GLenum modeRGB, GLenum modeA); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_826)(GLenum func, GLclampx ref); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_827)(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_828)(GLclampx depth); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_829)(GLenum plane, const GLfixed *equation); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_830)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_831)(GLclampx zNear, GLclampx zFar); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_832)(GLenum pname, GLfixed param); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_833)(GLenum pname, const GLfixed *params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_834)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_835)(GLenum plane, GLfixed *equation); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_836)(GLenum pname, GLfixed *params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_837)(GLenum light, GLenum pname, GLfixed *params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_838)(GLenum face, GLenum pname, GLfixed *params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_839)(GLenum target, GLenum pname, GLfixed *params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_840)(GLenum coord, GLenum pname, GLfixed *params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_841)(GLenum target, GLenum pname, GLfixed *params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_842)(GLenum pname, GLfixed param); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_843)(GLenum pname, const GLfixed *params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_844)(GLenum light, GLenum pname, GLfixed param); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_845)(GLenum light, GLenum pname, const GLfixed *params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_846)(GLfixed width); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_847)(const GLfixed *m); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_848)(GLenum face, GLenum pname, GLfixed param); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_849)(GLenum face, GLenum pname, const GLfixed *params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_850)(const GLfixed *m); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_851)(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_852)(GLfixed nx, GLfixed ny, GLfixed nz); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_853)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_854)(GLenum pname, GLfixed param); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_855)(GLenum pname, const GLfixed *params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_856)(GLfixed size); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_857)(GLfixed factor, GLfixed units); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_858)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_859)(GLclampx value, GLboolean invert); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_860)(GLfixed x, GLfixed y, GLfixed z); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_861)(GLenum target, GLenum pname, GLfixed param); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_862)(GLenum target, GLenum pname, const GLfixed *params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_863)(GLenum coord, GLenum pname, GLint param); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_864)(GLenum coord, GLenum pname, const GLfixed *params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_865)(GLenum target, GLenum pname, GLfixed param); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_866)(GLenum target, GLenum pname, const GLfixed *params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_867)(GLfixed x, GLfixed y, GLfixed z); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_868)(GLenum plane, const GLfloat *equation); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_869)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_870)(GLenum plane, GLfloat *equation); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_871)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_872)(GLclampd zmin, GLclampd zmax); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_873)(GLenum modeRGB, GLenum modeA); GLAPI void APIENTRY GLAPI_PREFIX(BlendEquationSeparate)(GLenum modeRGB, GLenum modeA); GLAPI void APIENTRY GLAPI_PREFIX(BindFramebufferEXT)(GLenum target, GLuint framebuffer); GLAPI void APIENTRY GLAPI_PREFIX(BindFramebuffer)(GLenum target, GLuint framebuffer); @@ -1172,10 +1188,10 @@ GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsRenderbufferEXT)(GLuint renderbuffer); GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsRenderbuffer)(GLuint renderbuffer); GLAPI void APIENTRY GLAPI_PREFIX(RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); GLAPI void APIENTRY GLAPI_PREFIX(RenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_875)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_891)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); GLAPI void APIENTRY GLAPI_PREFIX(BlitFramebuffer)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_876)(GLenum target, GLenum pname, GLint param); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_877)(GLenum target, GLintptr offset, GLsizeiptr size); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_892)(GLenum target, GLenum pname, GLint param); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_893)(GLenum target, GLintptr offset, GLsizeiptr size); GLAPI void APIENTRY GLAPI_PREFIX(BindFragDataLocationEXT)(GLuint program, GLuint colorNumber, const GLchar *name); GLAPI void APIENTRY GLAPI_PREFIX(BindFragDataLocation)(GLuint program, GLuint colorNumber, const GLchar *name); GLAPI GLint APIENTRY GLAPI_PREFIX(GetFragDataLocationEXT)(GLuint program, const GLchar *name); @@ -1287,8 +1303,8 @@ GLAPI void APIENTRY GLAPI_PREFIX(TransformFeedbackVaryingsEXT)(GLuint program, G GLAPI void APIENTRY GLAPI_PREFIX(TransformFeedbackVaryings)(GLuint program, GLsizei count, const GLchar* *varyings, GLenum bufferMode); GLAPI void APIENTRY GLAPI_PREFIX(ProvokingVertexEXT)(GLenum mode); GLAPI void APIENTRY GLAPI_PREFIX(ProvokingVertex)(GLenum mode); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_935)(GLenum target, GLenum pname, GLvoid **params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_936)(GLenum target, GLsizei length, GLvoid *pointer); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_951)(GLenum target, GLenum pname, GLvoid **params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_952)(GLenum target, GLsizei length, GLvoid *pointer); GLAPI void APIENTRY GLAPI_PREFIX(GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint *value); GLAPI GLenum APIENTRY GLAPI_PREFIX(ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); GLAPI GLenum APIENTRY GLAPI_PREFIX(ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); @@ -1296,11 +1312,11 @@ GLAPI void APIENTRY GLAPI_PREFIX(ActiveProgramEXT)(GLuint program); GLAPI GLuint APIENTRY GLAPI_PREFIX(CreateShaderProgramEXT)(GLenum type, const GLchar *string); GLAPI void APIENTRY GLAPI_PREFIX(UseShaderProgramEXT)(GLenum type, GLuint program); GLAPI void APIENTRY GLAPI_PREFIX(TextureBarrierNV)(void); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_944)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_945)(GLenum target, GLuint index, GLsizei count, const GLfloat *params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_946)(GLenum target, GLuint index, GLsizei count, const GLfloat *params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_947)(GLuint id, GLenum pname, GLint64EXT *params); -void APIENTRY GLAPI_PREFIX(_dispatch_stub_948)(GLuint id, GLenum pname, GLuint64EXT *params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_960)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_961)(GLenum target, GLuint index, GLsizei count, const GLfloat *params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_962)(GLenum target, GLuint index, GLsizei count, const GLfloat *params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_963)(GLuint id, GLenum pname, GLint64EXT *params); +void APIENTRY GLAPI_PREFIX(_dispatch_stub_964)(GLuint id, GLenum pname, GLuint64EXT *params); GLAPI void APIENTRY GLAPI_PREFIX(EGLImageTargetRenderbufferStorageOES)(GLenum target, GLvoid *writeOffset); GLAPI void APIENTRY GLAPI_PREFIX(EGLImageTargetTexture2DOES)(GLenum target, GLvoid *writeOffset); #undef MAPI_TMP_DEFINES @@ -4751,11 +4767,11 @@ GLAPI void APIENTRY GLAPI_PREFIX(ClampColor)(GLenum target, GLenum clamp) ((void (APIENTRY *)(GLenum target, GLenum clamp)) _func)(target, clamp); } -GLAPI void APIENTRY GLAPI_PREFIX(ClearBufferfi)(GLenum buffer, GLint drawbuffer, const GLfloat depth, const GLint stencil) +GLAPI void APIENTRY GLAPI_PREFIX(ClearBufferfi)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) { const struct mapi_table *_tbl = entry_current_get(); mapi_func _func = ((const mapi_func *) _tbl)[431]; - ((void (APIENTRY *)(GLenum buffer, GLint drawbuffer, const GLfloat depth, const GLint stencil)) _func)(buffer, drawbuffer, depth, stencil); + ((void (APIENTRY *)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)) _func)(buffer, drawbuffer, depth, stencil); } GLAPI void APIENTRY GLAPI_PREFIX(ClearBufferfv)(GLenum buffer, GLint drawbuffer, const GLfloat *value) @@ -6515,3048 +6531,3160 @@ GLAPI void APIENTRY GLAPI_PREFIX(DrawBuffersATI)(GLsizei n, const GLenum *bufs) ((void (APIENTRY *)(GLsizei n, const GLenum *bufs)) _func)(n, bufs); } -GLAPI void APIENTRY GLAPI_PREFIX(DrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount) +GLAPI void APIENTRY GLAPI_PREFIX(ClampColorARB)(GLenum target, GLenum clamp) { const struct mapi_table *_tbl = entry_current_get(); mapi_func _func = ((const mapi_func *) _tbl)[572]; + ((void (APIENTRY *)(GLenum target, GLenum clamp)) _func)(target, clamp); +} + +GLAPI void APIENTRY GLAPI_PREFIX(DrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount) +{ + const struct mapi_table *_tbl = entry_current_get(); + mapi_func _func = ((const mapi_func *) _tbl)[573]; ((void (APIENTRY *)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)) _func)(mode, first, count, primcount); } GLAPI void APIENTRY GLAPI_PREFIX(DrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei primcount) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[572]; + mapi_func _func = ((const mapi_func *) _tbl)[573]; ((void (APIENTRY *)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)) _func)(mode, first, count, primcount); } GLAPI void APIENTRY GLAPI_PREFIX(DrawArraysInstancedEXT)(GLenum mode, GLint first, GLsizei count, GLsizei primcount) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[572]; + mapi_func _func = ((const mapi_func *) _tbl)[573]; ((void (APIENTRY *)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)) _func)(mode, first, count, primcount); } GLAPI void APIENTRY GLAPI_PREFIX(DrawElementsInstancedARB)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[573]; + mapi_func _func = ((const mapi_func *) _tbl)[574]; ((void (APIENTRY *)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount)) _func)(mode, count, type, indices, primcount); } GLAPI void APIENTRY GLAPI_PREFIX(DrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[573]; + mapi_func _func = ((const mapi_func *) _tbl)[574]; ((void (APIENTRY *)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount)) _func)(mode, count, type, indices, primcount); } GLAPI void APIENTRY GLAPI_PREFIX(DrawElementsInstancedEXT)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[573]; + mapi_func _func = ((const mapi_func *) _tbl)[574]; ((void (APIENTRY *)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount)) _func)(mode, count, type, indices, primcount); } GLAPI void APIENTRY GLAPI_PREFIX(RenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[574]; + mapi_func _func = ((const mapi_func *) _tbl)[575]; ((void (APIENTRY *)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) _func)(target, samples, internalformat, width, height); } GLAPI void APIENTRY GLAPI_PREFIX(RenderbufferStorageMultisampleEXT)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[574]; + mapi_func _func = ((const mapi_func *) _tbl)[575]; ((void (APIENTRY *)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) _func)(target, samples, internalformat, width, height); } GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTextureARB)(GLenum target, GLenum attachment, GLuint texture, GLint level) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[575]; + mapi_func _func = ((const mapi_func *) _tbl)[576]; ((void (APIENTRY *)(GLenum target, GLenum attachment, GLuint texture, GLint level)) _func)(target, attachment, texture, level); } GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTextureFaceARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[576]; + mapi_func _func = ((const mapi_func *) _tbl)[577]; ((void (APIENTRY *)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face)) _func)(target, attachment, texture, level, face); } GLAPI void APIENTRY GLAPI_PREFIX(ProgramParameteriARB)(GLuint program, GLenum pname, GLint value) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[577]; + mapi_func _func = ((const mapi_func *) _tbl)[578]; ((void (APIENTRY *)(GLuint program, GLenum pname, GLint value)) _func)(program, pname, value); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribDivisorARB)(GLuint index, GLuint divisor) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[578]; + mapi_func _func = ((const mapi_func *) _tbl)[579]; ((void (APIENTRY *)(GLuint index, GLuint divisor)) _func)(index, divisor); } GLAPI void APIENTRY GLAPI_PREFIX(FlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[579]; + mapi_func _func = ((const mapi_func *) _tbl)[580]; ((void (APIENTRY *)(GLenum target, GLintptr offset, GLsizeiptr length)) _func)(target, offset, length); } GLAPI GLvoid * APIENTRY GLAPI_PREFIX(MapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[580]; + mapi_func _func = ((const mapi_func *) _tbl)[581]; return ((GLvoid * (APIENTRY *)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)) _func)(target, offset, length, access); } +GLAPI void APIENTRY GLAPI_PREFIX(TexBufferARB)(GLenum target, GLenum internalFormat, GLuint buffer) +{ + const struct mapi_table *_tbl = entry_current_get(); + mapi_func _func = ((const mapi_func *) _tbl)[582]; + ((void (APIENTRY *)(GLenum target, GLenum internalFormat, GLuint buffer)) _func)(target, internalFormat, buffer); +} + GLAPI void APIENTRY GLAPI_PREFIX(BindVertexArray)(GLuint array) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[581]; + mapi_func _func = ((const mapi_func *) _tbl)[583]; ((void (APIENTRY *)(GLuint array)) _func)(array); } GLAPI void APIENTRY GLAPI_PREFIX(GenVertexArrays)(GLsizei n, GLuint *arrays) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[582]; + mapi_func _func = ((const mapi_func *) _tbl)[584]; ((void (APIENTRY *)(GLsizei n, GLuint *arrays)) _func)(n, arrays); } GLAPI void APIENTRY GLAPI_PREFIX(CopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[583]; + mapi_func _func = ((const mapi_func *) _tbl)[585]; ((void (APIENTRY *)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)) _func)(readTarget, writeTarget, readOffset, writeOffset, size); } GLAPI GLenum APIENTRY GLAPI_PREFIX(ClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[584]; + mapi_func _func = ((const mapi_func *) _tbl)[586]; return ((GLenum (APIENTRY *)(GLsync sync, GLbitfield flags, GLuint64 timeout)) _func)(sync, flags, timeout); } GLAPI void APIENTRY GLAPI_PREFIX(DeleteSync)(GLsync sync) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[585]; + mapi_func _func = ((const mapi_func *) _tbl)[587]; ((void (APIENTRY *)(GLsync sync)) _func)(sync); } GLAPI GLsync APIENTRY GLAPI_PREFIX(FenceSync)(GLenum condition, GLbitfield flags) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[586]; + mapi_func _func = ((const mapi_func *) _tbl)[588]; return ((GLsync (APIENTRY *)(GLenum condition, GLbitfield flags)) _func)(condition, flags); } GLAPI void APIENTRY GLAPI_PREFIX(GetInteger64v)(GLenum pname, GLint64 *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[587]; + mapi_func _func = ((const mapi_func *) _tbl)[589]; ((void (APIENTRY *)(GLenum pname, GLint64 *params)) _func)(pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[588]; + mapi_func _func = ((const mapi_func *) _tbl)[590]; ((void (APIENTRY *)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values)) _func)(sync, pname, bufSize, length, values); } GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsSync)(GLsync sync) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[589]; + mapi_func _func = ((const mapi_func *) _tbl)[591]; return ((GLboolean (APIENTRY *)(GLsync sync)) _func)(sync); } GLAPI void APIENTRY GLAPI_PREFIX(WaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[590]; + mapi_func _func = ((const mapi_func *) _tbl)[592]; ((void (APIENTRY *)(GLsync sync, GLbitfield flags, GLuint64 timeout)) _func)(sync, flags, timeout); } GLAPI void APIENTRY GLAPI_PREFIX(DrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[591]; + mapi_func _func = ((const mapi_func *) _tbl)[593]; ((void (APIENTRY *)(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex)) _func)(mode, count, type, indices, basevertex); } GLAPI void APIENTRY GLAPI_PREFIX(DrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[592]; + mapi_func _func = ((const mapi_func *) _tbl)[594]; ((void (APIENTRY *)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex)) _func)(mode, start, end, count, type, indices, basevertex); } GLAPI void APIENTRY GLAPI_PREFIX(MultiDrawElementsBaseVertex)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount, const GLint *basevertex) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[593]; + mapi_func _func = ((const mapi_func *) _tbl)[595]; ((void (APIENTRY *)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount, const GLint *basevertex)) _func)(mode, count, type, indices, primcount, basevertex); } GLAPI void APIENTRY GLAPI_PREFIX(BlendEquationSeparateiARB)(GLuint buf, GLenum modeRGB, GLenum modeA) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[594]; + mapi_func _func = ((const mapi_func *) _tbl)[596]; ((void (APIENTRY *)(GLuint buf, GLenum modeRGB, GLenum modeA)) _func)(buf, modeRGB, modeA); } GLAPI void APIENTRY GLAPI_PREFIX(BlendEquationiARB)(GLuint buf, GLenum mode) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[595]; + mapi_func _func = ((const mapi_func *) _tbl)[597]; ((void (APIENTRY *)(GLuint buf, GLenum mode)) _func)(buf, mode); } GLAPI void APIENTRY GLAPI_PREFIX(BlendFuncSeparateiARB)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcA, GLenum dstA) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[596]; + mapi_func _func = ((const mapi_func *) _tbl)[598]; ((void (APIENTRY *)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcA, GLenum dstA)) _func)(buf, srcRGB, dstRGB, srcA, dstA); } GLAPI void APIENTRY GLAPI_PREFIX(BlendFunciARB)(GLuint buf, GLenum src, GLenum dst) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[597]; + mapi_func _func = ((const mapi_func *) _tbl)[599]; ((void (APIENTRY *)(GLuint buf, GLenum src, GLenum dst)) _func)(buf, src, dst); } +GLAPI void APIENTRY GLAPI_PREFIX(BindSampler)(GLuint unit, GLuint sampler) +{ + const struct mapi_table *_tbl = entry_current_get(); + mapi_func _func = ((const mapi_func *) _tbl)[600]; + ((void (APIENTRY *)(GLuint unit, GLuint sampler)) _func)(unit, sampler); +} + +GLAPI void APIENTRY GLAPI_PREFIX(DeleteSamplers)(GLsizei count, const GLuint *samplers) +{ + const struct mapi_table *_tbl = entry_current_get(); + mapi_func _func = ((const mapi_func *) _tbl)[601]; + ((void (APIENTRY *)(GLsizei count, const GLuint *samplers)) _func)(count, samplers); +} + +GLAPI void APIENTRY GLAPI_PREFIX(GenSamplers)(GLsizei count, GLuint *samplers) +{ + const struct mapi_table *_tbl = entry_current_get(); + mapi_func _func = ((const mapi_func *) _tbl)[602]; + ((void (APIENTRY *)(GLsizei count, GLuint *samplers)) _func)(count, samplers); +} + +GLAPI void APIENTRY GLAPI_PREFIX(GetSamplerParameterIiv)(GLuint sampler, GLenum pname, GLint *params) +{ + const struct mapi_table *_tbl = entry_current_get(); + mapi_func _func = ((const mapi_func *) _tbl)[603]; + ((void (APIENTRY *)(GLuint sampler, GLenum pname, GLint *params)) _func)(sampler, pname, params); +} + +GLAPI void APIENTRY GLAPI_PREFIX(GetSamplerParameterIuiv)(GLuint sampler, GLenum pname, GLuint *params) +{ + const struct mapi_table *_tbl = entry_current_get(); + mapi_func _func = ((const mapi_func *) _tbl)[604]; + ((void (APIENTRY *)(GLuint sampler, GLenum pname, GLuint *params)) _func)(sampler, pname, params); +} + +GLAPI void APIENTRY GLAPI_PREFIX(GetSamplerParameterfv)(GLuint sampler, GLenum pname, GLfloat *params) +{ + const struct mapi_table *_tbl = entry_current_get(); + mapi_func _func = ((const mapi_func *) _tbl)[605]; + ((void (APIENTRY *)(GLuint sampler, GLenum pname, GLfloat *params)) _func)(sampler, pname, params); +} + +GLAPI void APIENTRY GLAPI_PREFIX(GetSamplerParameteriv)(GLuint sampler, GLenum pname, GLint *params) +{ + const struct mapi_table *_tbl = entry_current_get(); + mapi_func _func = ((const mapi_func *) _tbl)[606]; + ((void (APIENTRY *)(GLuint sampler, GLenum pname, GLint *params)) _func)(sampler, pname, params); +} + +GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsSampler)(GLuint sampler) +{ + const struct mapi_table *_tbl = entry_current_get(); + mapi_func _func = ((const mapi_func *) _tbl)[607]; + return ((GLboolean (APIENTRY *)(GLuint sampler)) _func)(sampler); +} + +GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameterIiv)(GLuint sampler, GLenum pname, const GLint *params) +{ + const struct mapi_table *_tbl = entry_current_get(); + mapi_func _func = ((const mapi_func *) _tbl)[608]; + ((void (APIENTRY *)(GLuint sampler, GLenum pname, const GLint *params)) _func)(sampler, pname, params); +} + +GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameterIuiv)(GLuint sampler, GLenum pname, const GLuint *params) +{ + const struct mapi_table *_tbl = entry_current_get(); + mapi_func _func = ((const mapi_func *) _tbl)[609]; + ((void (APIENTRY *)(GLuint sampler, GLenum pname, const GLuint *params)) _func)(sampler, pname, params); +} + +GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameterf)(GLuint sampler, GLenum pname, GLfloat param) +{ + const struct mapi_table *_tbl = entry_current_get(); + mapi_func _func = ((const mapi_func *) _tbl)[610]; + ((void (APIENTRY *)(GLuint sampler, GLenum pname, GLfloat param)) _func)(sampler, pname, param); +} + +GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameterfv)(GLuint sampler, GLenum pname, const GLfloat *params) +{ + const struct mapi_table *_tbl = entry_current_get(); + mapi_func _func = ((const mapi_func *) _tbl)[611]; + ((void (APIENTRY *)(GLuint sampler, GLenum pname, const GLfloat *params)) _func)(sampler, pname, params); +} + +GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameteri)(GLuint sampler, GLenum pname, GLint param) +{ + const struct mapi_table *_tbl = entry_current_get(); + mapi_func _func = ((const mapi_func *) _tbl)[612]; + ((void (APIENTRY *)(GLuint sampler, GLenum pname, GLint param)) _func)(sampler, pname, param); +} + +GLAPI void APIENTRY GLAPI_PREFIX(SamplerParameteriv)(GLuint sampler, GLenum pname, const GLint *params) +{ + const struct mapi_table *_tbl = entry_current_get(); + mapi_func _func = ((const mapi_func *) _tbl)[613]; + ((void (APIENTRY *)(GLuint sampler, GLenum pname, const GLint *params)) _func)(sampler, pname, params); +} + GLAPI void APIENTRY GLAPI_PREFIX(BindTransformFeedback)(GLenum target, GLuint id) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[598]; + mapi_func _func = ((const mapi_func *) _tbl)[614]; ((void (APIENTRY *)(GLenum target, GLuint id)) _func)(target, id); } GLAPI void APIENTRY GLAPI_PREFIX(DeleteTransformFeedbacks)(GLsizei n, const GLuint *ids) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[599]; + mapi_func _func = ((const mapi_func *) _tbl)[615]; ((void (APIENTRY *)(GLsizei n, const GLuint *ids)) _func)(n, ids); } GLAPI void APIENTRY GLAPI_PREFIX(DrawTransformFeedback)(GLenum mode, GLuint id) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[600]; + mapi_func _func = ((const mapi_func *) _tbl)[616]; ((void (APIENTRY *)(GLenum mode, GLuint id)) _func)(mode, id); } GLAPI void APIENTRY GLAPI_PREFIX(GenTransformFeedbacks)(GLsizei n, GLuint *ids) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[601]; + mapi_func _func = ((const mapi_func *) _tbl)[617]; ((void (APIENTRY *)(GLsizei n, GLuint *ids)) _func)(n, ids); } GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsTransformFeedback)(GLuint id) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[602]; + mapi_func _func = ((const mapi_func *) _tbl)[618]; return ((GLboolean (APIENTRY *)(GLuint id)) _func)(id); } GLAPI void APIENTRY GLAPI_PREFIX(PauseTransformFeedback)(void) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[603]; + mapi_func _func = ((const mapi_func *) _tbl)[619]; ((void (APIENTRY *)(void)) _func)(); } GLAPI void APIENTRY GLAPI_PREFIX(ResumeTransformFeedback)(void) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[604]; + mapi_func _func = ((const mapi_func *) _tbl)[620]; ((void (APIENTRY *)(void)) _func)(); } GLAPI void APIENTRY GLAPI_PREFIX(ClearDepthf)(GLclampf depth) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[605]; + mapi_func _func = ((const mapi_func *) _tbl)[621]; ((void (APIENTRY *)(GLclampf depth)) _func)(depth); } GLAPI void APIENTRY GLAPI_PREFIX(DepthRangef)(GLclampf zNear, GLclampf zFar) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[606]; + mapi_func _func = ((const mapi_func *) _tbl)[622]; ((void (APIENTRY *)(GLclampf zNear, GLclampf zFar)) _func)(zNear, zFar); } GLAPI void APIENTRY GLAPI_PREFIX(GetShaderPrecisionFormat)(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[607]; + mapi_func _func = ((const mapi_func *) _tbl)[623]; ((void (APIENTRY *)(GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision)) _func)(shadertype, precisiontype, range, precision); } GLAPI void APIENTRY GLAPI_PREFIX(ReleaseShaderCompiler)(void) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[608]; + mapi_func _func = ((const mapi_func *) _tbl)[624]; ((void (APIENTRY *)(void)) _func)(); } GLAPI void APIENTRY GLAPI_PREFIX(ShaderBinary)(GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[609]; + mapi_func _func = ((const mapi_func *) _tbl)[625]; ((void (APIENTRY *)(GLsizei n, const GLuint *shaders, GLenum binaryformat, const GLvoid *binary, GLsizei length)) _func)(n, shaders, binaryformat, binary, length); } GLAPI void APIENTRY GLAPI_PREFIX(PolygonOffsetEXT)(GLfloat factor, GLfloat bias) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[613]; + mapi_func _func = ((const mapi_func *) _tbl)[629]; ((void (APIENTRY *)(GLfloat factor, GLfloat bias)) _func)(factor, bias); } GLAPI void APIENTRY GLAPI_PREFIX(ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[632]; + mapi_func _func = ((const mapi_func *) _tbl)[648]; ((void (APIENTRY *)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer)) _func)(size, type, stride, count, pointer); } GLAPI void APIENTRY GLAPI_PREFIX(EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean *pointer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[633]; + mapi_func _func = ((const mapi_func *) _tbl)[649]; ((void (APIENTRY *)(GLsizei stride, GLsizei count, const GLboolean *pointer)) _func)(stride, count, pointer); } GLAPI void APIENTRY GLAPI_PREFIX(IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[634]; + mapi_func _func = ((const mapi_func *) _tbl)[650]; ((void (APIENTRY *)(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer)) _func)(type, stride, count, pointer); } GLAPI void APIENTRY GLAPI_PREFIX(NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[635]; + mapi_func _func = ((const mapi_func *) _tbl)[651]; ((void (APIENTRY *)(GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer)) _func)(type, stride, count, pointer); } GLAPI void APIENTRY GLAPI_PREFIX(TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[636]; + mapi_func _func = ((const mapi_func *) _tbl)[652]; ((void (APIENTRY *)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer)) _func)(size, type, stride, count, pointer); } GLAPI void APIENTRY GLAPI_PREFIX(VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[637]; + mapi_func _func = ((const mapi_func *) _tbl)[653]; ((void (APIENTRY *)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer)) _func)(size, type, stride, count, pointer); } GLAPI void APIENTRY GLAPI_PREFIX(PointParameterfEXT)(GLenum pname, GLfloat param) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[638]; + mapi_func _func = ((const mapi_func *) _tbl)[654]; ((void (APIENTRY *)(GLenum pname, GLfloat param)) _func)(pname, param); } GLAPI void APIENTRY GLAPI_PREFIX(PointParameterf)(GLenum pname, GLfloat param) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[638]; + mapi_func _func = ((const mapi_func *) _tbl)[654]; ((void (APIENTRY *)(GLenum pname, GLfloat param)) _func)(pname, param); } GLAPI void APIENTRY GLAPI_PREFIX(PointParameterfARB)(GLenum pname, GLfloat param) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[638]; + mapi_func _func = ((const mapi_func *) _tbl)[654]; ((void (APIENTRY *)(GLenum pname, GLfloat param)) _func)(pname, param); } GLAPI void APIENTRY GLAPI_PREFIX(PointParameterfvEXT)(GLenum pname, const GLfloat *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[639]; + mapi_func _func = ((const mapi_func *) _tbl)[655]; ((void (APIENTRY *)(GLenum pname, const GLfloat *params)) _func)(pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(PointParameterfv)(GLenum pname, const GLfloat *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[639]; + mapi_func _func = ((const mapi_func *) _tbl)[655]; ((void (APIENTRY *)(GLenum pname, const GLfloat *params)) _func)(pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(PointParameterfvARB)(GLenum pname, const GLfloat *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[639]; + mapi_func _func = ((const mapi_func *) _tbl)[655]; ((void (APIENTRY *)(GLenum pname, const GLfloat *params)) _func)(pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(LockArraysEXT)(GLint first, GLsizei count) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[640]; + mapi_func _func = ((const mapi_func *) _tbl)[656]; ((void (APIENTRY *)(GLint first, GLsizei count)) _func)(first, count); } GLAPI void APIENTRY GLAPI_PREFIX(UnlockArraysEXT)(void) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[641]; + mapi_func _func = ((const mapi_func *) _tbl)[657]; ((void (APIENTRY *)(void)) _func)(); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3bEXT)(GLbyte red, GLbyte green, GLbyte blue) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[642]; + mapi_func _func = ((const mapi_func *) _tbl)[658]; ((void (APIENTRY *)(GLbyte red, GLbyte green, GLbyte blue)) _func)(red, green, blue); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3b)(GLbyte red, GLbyte green, GLbyte blue) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[642]; + mapi_func _func = ((const mapi_func *) _tbl)[658]; ((void (APIENTRY *)(GLbyte red, GLbyte green, GLbyte blue)) _func)(red, green, blue); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3bvEXT)(const GLbyte *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[643]; + mapi_func _func = ((const mapi_func *) _tbl)[659]; ((void (APIENTRY *)(const GLbyte *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3bv)(const GLbyte *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[643]; + mapi_func _func = ((const mapi_func *) _tbl)[659]; ((void (APIENTRY *)(const GLbyte *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[644]; + mapi_func _func = ((const mapi_func *) _tbl)[660]; ((void (APIENTRY *)(GLdouble red, GLdouble green, GLdouble blue)) _func)(red, green, blue); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3d)(GLdouble red, GLdouble green, GLdouble blue) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[644]; + mapi_func _func = ((const mapi_func *) _tbl)[660]; ((void (APIENTRY *)(GLdouble red, GLdouble green, GLdouble blue)) _func)(red, green, blue); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3dvEXT)(const GLdouble *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[645]; + mapi_func _func = ((const mapi_func *) _tbl)[661]; ((void (APIENTRY *)(const GLdouble *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3dv)(const GLdouble *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[645]; + mapi_func _func = ((const mapi_func *) _tbl)[661]; ((void (APIENTRY *)(const GLdouble *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[646]; + mapi_func _func = ((const mapi_func *) _tbl)[662]; ((void (APIENTRY *)(GLfloat red, GLfloat green, GLfloat blue)) _func)(red, green, blue); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3f)(GLfloat red, GLfloat green, GLfloat blue) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[646]; + mapi_func _func = ((const mapi_func *) _tbl)[662]; ((void (APIENTRY *)(GLfloat red, GLfloat green, GLfloat blue)) _func)(red, green, blue); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3fvEXT)(const GLfloat *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[647]; + mapi_func _func = ((const mapi_func *) _tbl)[663]; ((void (APIENTRY *)(const GLfloat *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3fv)(const GLfloat *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[647]; + mapi_func _func = ((const mapi_func *) _tbl)[663]; ((void (APIENTRY *)(const GLfloat *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3iEXT)(GLint red, GLint green, GLint blue) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[648]; + mapi_func _func = ((const mapi_func *) _tbl)[664]; ((void (APIENTRY *)(GLint red, GLint green, GLint blue)) _func)(red, green, blue); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3i)(GLint red, GLint green, GLint blue) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[648]; + mapi_func _func = ((const mapi_func *) _tbl)[664]; ((void (APIENTRY *)(GLint red, GLint green, GLint blue)) _func)(red, green, blue); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3ivEXT)(const GLint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[649]; + mapi_func _func = ((const mapi_func *) _tbl)[665]; ((void (APIENTRY *)(const GLint *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3iv)(const GLint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[649]; + mapi_func _func = ((const mapi_func *) _tbl)[665]; ((void (APIENTRY *)(const GLint *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3sEXT)(GLshort red, GLshort green, GLshort blue) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[650]; + mapi_func _func = ((const mapi_func *) _tbl)[666]; ((void (APIENTRY *)(GLshort red, GLshort green, GLshort blue)) _func)(red, green, blue); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3s)(GLshort red, GLshort green, GLshort blue) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[650]; + mapi_func _func = ((const mapi_func *) _tbl)[666]; ((void (APIENTRY *)(GLshort red, GLshort green, GLshort blue)) _func)(red, green, blue); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3svEXT)(const GLshort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[651]; + mapi_func _func = ((const mapi_func *) _tbl)[667]; ((void (APIENTRY *)(const GLshort *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3sv)(const GLshort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[651]; + mapi_func _func = ((const mapi_func *) _tbl)[667]; ((void (APIENTRY *)(const GLshort *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3ubEXT)(GLubyte red, GLubyte green, GLubyte blue) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[652]; + mapi_func _func = ((const mapi_func *) _tbl)[668]; ((void (APIENTRY *)(GLubyte red, GLubyte green, GLubyte blue)) _func)(red, green, blue); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3ub)(GLubyte red, GLubyte green, GLubyte blue) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[652]; + mapi_func _func = ((const mapi_func *) _tbl)[668]; ((void (APIENTRY *)(GLubyte red, GLubyte green, GLubyte blue)) _func)(red, green, blue); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3ubvEXT)(const GLubyte *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[653]; + mapi_func _func = ((const mapi_func *) _tbl)[669]; ((void (APIENTRY *)(const GLubyte *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3ubv)(const GLubyte *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[653]; + mapi_func _func = ((const mapi_func *) _tbl)[669]; ((void (APIENTRY *)(const GLubyte *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[654]; + mapi_func _func = ((const mapi_func *) _tbl)[670]; ((void (APIENTRY *)(GLuint red, GLuint green, GLuint blue)) _func)(red, green, blue); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3ui)(GLuint red, GLuint green, GLuint blue) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[654]; + mapi_func _func = ((const mapi_func *) _tbl)[670]; ((void (APIENTRY *)(GLuint red, GLuint green, GLuint blue)) _func)(red, green, blue); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3uivEXT)(const GLuint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[655]; + mapi_func _func = ((const mapi_func *) _tbl)[671]; ((void (APIENTRY *)(const GLuint *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3uiv)(const GLuint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[655]; + mapi_func _func = ((const mapi_func *) _tbl)[671]; ((void (APIENTRY *)(const GLuint *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[656]; + mapi_func _func = ((const mapi_func *) _tbl)[672]; ((void (APIENTRY *)(GLushort red, GLushort green, GLushort blue)) _func)(red, green, blue); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3us)(GLushort red, GLushort green, GLushort blue) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[656]; + mapi_func _func = ((const mapi_func *) _tbl)[672]; ((void (APIENTRY *)(GLushort red, GLushort green, GLushort blue)) _func)(red, green, blue); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3usvEXT)(const GLushort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[657]; + mapi_func _func = ((const mapi_func *) _tbl)[673]; ((void (APIENTRY *)(const GLushort *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColor3usv)(const GLushort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[657]; + mapi_func _func = ((const mapi_func *) _tbl)[673]; ((void (APIENTRY *)(const GLushort *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[658]; + mapi_func _func = ((const mapi_func *) _tbl)[674]; ((void (APIENTRY *)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) _func)(size, type, stride, pointer); } GLAPI void APIENTRY GLAPI_PREFIX(SecondaryColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[658]; + mapi_func _func = ((const mapi_func *) _tbl)[674]; ((void (APIENTRY *)(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) _func)(size, type, stride, pointer); } GLAPI void APIENTRY GLAPI_PREFIX(MultiDrawArraysEXT)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[659]; + mapi_func _func = ((const mapi_func *) _tbl)[675]; ((void (APIENTRY *)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount)) _func)(mode, first, count, primcount); } GLAPI void APIENTRY GLAPI_PREFIX(MultiDrawArrays)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[659]; + mapi_func _func = ((const mapi_func *) _tbl)[675]; ((void (APIENTRY *)(GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount)) _func)(mode, first, count, primcount); } GLAPI void APIENTRY GLAPI_PREFIX(MultiDrawElementsEXT)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[660]; + mapi_func _func = ((const mapi_func *) _tbl)[676]; ((void (APIENTRY *)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount)) _func)(mode, count, type, indices, primcount); } GLAPI void APIENTRY GLAPI_PREFIX(MultiDrawElements)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[660]; + mapi_func _func = ((const mapi_func *) _tbl)[676]; ((void (APIENTRY *)(GLenum mode, const GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount)) _func)(mode, count, type, indices, primcount); } GLAPI void APIENTRY GLAPI_PREFIX(FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid *pointer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[661]; + mapi_func _func = ((const mapi_func *) _tbl)[677]; ((void (APIENTRY *)(GLenum type, GLsizei stride, const GLvoid *pointer)) _func)(type, stride, pointer); } GLAPI void APIENTRY GLAPI_PREFIX(FogCoordPointer)(GLenum type, GLsizei stride, const GLvoid *pointer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[661]; + mapi_func _func = ((const mapi_func *) _tbl)[677]; ((void (APIENTRY *)(GLenum type, GLsizei stride, const GLvoid *pointer)) _func)(type, stride, pointer); } GLAPI void APIENTRY GLAPI_PREFIX(FogCoorddEXT)(GLdouble coord) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[662]; + mapi_func _func = ((const mapi_func *) _tbl)[678]; ((void (APIENTRY *)(GLdouble coord)) _func)(coord); } GLAPI void APIENTRY GLAPI_PREFIX(FogCoordd)(GLdouble coord) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[662]; + mapi_func _func = ((const mapi_func *) _tbl)[678]; ((void (APIENTRY *)(GLdouble coord)) _func)(coord); } GLAPI void APIENTRY GLAPI_PREFIX(FogCoorddvEXT)(const GLdouble *coord) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[663]; + mapi_func _func = ((const mapi_func *) _tbl)[679]; ((void (APIENTRY *)(const GLdouble *coord)) _func)(coord); } GLAPI void APIENTRY GLAPI_PREFIX(FogCoorddv)(const GLdouble *coord) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[663]; + mapi_func _func = ((const mapi_func *) _tbl)[679]; ((void (APIENTRY *)(const GLdouble *coord)) _func)(coord); } GLAPI void APIENTRY GLAPI_PREFIX(FogCoordfEXT)(GLfloat coord) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[664]; + mapi_func _func = ((const mapi_func *) _tbl)[680]; ((void (APIENTRY *)(GLfloat coord)) _func)(coord); } GLAPI void APIENTRY GLAPI_PREFIX(FogCoordf)(GLfloat coord) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[664]; + mapi_func _func = ((const mapi_func *) _tbl)[680]; ((void (APIENTRY *)(GLfloat coord)) _func)(coord); } GLAPI void APIENTRY GLAPI_PREFIX(FogCoordfvEXT)(const GLfloat *coord) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[665]; + mapi_func _func = ((const mapi_func *) _tbl)[681]; ((void (APIENTRY *)(const GLfloat *coord)) _func)(coord); } GLAPI void APIENTRY GLAPI_PREFIX(FogCoordfv)(const GLfloat *coord) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[665]; + mapi_func _func = ((const mapi_func *) _tbl)[681]; ((void (APIENTRY *)(const GLfloat *coord)) _func)(coord); } GLAPI void APIENTRY GLAPI_PREFIX(BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[667]; + mapi_func _func = ((const mapi_func *) _tbl)[683]; ((void (APIENTRY *)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)) _func)(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); } GLAPI void APIENTRY GLAPI_PREFIX(BlendFuncSeparate)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[667]; + mapi_func _func = ((const mapi_func *) _tbl)[683]; ((void (APIENTRY *)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)) _func)(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha); } GLAPI void APIENTRY GLAPI_PREFIX(FlushVertexArrayRangeNV)(void) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[668]; + mapi_func _func = ((const mapi_func *) _tbl)[684]; ((void (APIENTRY *)(void)) _func)(); } GLAPI void APIENTRY GLAPI_PREFIX(VertexArrayRangeNV)(GLsizei length, const GLvoid *pointer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[669]; + mapi_func _func = ((const mapi_func *) _tbl)[685]; ((void (APIENTRY *)(GLsizei length, const GLvoid *pointer)) _func)(length, pointer); } GLAPI void APIENTRY GLAPI_PREFIX(CombinerInputNV)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[670]; + mapi_func _func = ((const mapi_func *) _tbl)[686]; ((void (APIENTRY *)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage)) _func)(stage, portion, variable, input, mapping, componentUsage); } GLAPI void APIENTRY GLAPI_PREFIX(CombinerOutputNV)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[671]; + mapi_func _func = ((const mapi_func *) _tbl)[687]; ((void (APIENTRY *)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum)) _func)(stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum); } GLAPI void APIENTRY GLAPI_PREFIX(CombinerParameterfNV)(GLenum pname, GLfloat param) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[672]; + mapi_func _func = ((const mapi_func *) _tbl)[688]; ((void (APIENTRY *)(GLenum pname, GLfloat param)) _func)(pname, param); } GLAPI void APIENTRY GLAPI_PREFIX(CombinerParameterfvNV)(GLenum pname, const GLfloat *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[673]; + mapi_func _func = ((const mapi_func *) _tbl)[689]; ((void (APIENTRY *)(GLenum pname, const GLfloat *params)) _func)(pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(CombinerParameteriNV)(GLenum pname, GLint param) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[674]; + mapi_func _func = ((const mapi_func *) _tbl)[690]; ((void (APIENTRY *)(GLenum pname, GLint param)) _func)(pname, param); } GLAPI void APIENTRY GLAPI_PREFIX(CombinerParameterivNV)(GLenum pname, const GLint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[675]; + mapi_func _func = ((const mapi_func *) _tbl)[691]; ((void (APIENTRY *)(GLenum pname, const GLint *params)) _func)(pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(FinalCombinerInputNV)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[676]; + mapi_func _func = ((const mapi_func *) _tbl)[692]; ((void (APIENTRY *)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage)) _func)(variable, input, mapping, componentUsage); } GLAPI void APIENTRY GLAPI_PREFIX(GetCombinerInputParameterfvNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[677]; + mapi_func _func = ((const mapi_func *) _tbl)[693]; ((void (APIENTRY *)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params)) _func)(stage, portion, variable, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetCombinerInputParameterivNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[678]; + mapi_func _func = ((const mapi_func *) _tbl)[694]; ((void (APIENTRY *)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params)) _func)(stage, portion, variable, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetCombinerOutputParameterfvNV)(GLenum stage, GLenum portion, GLenum pname, GLfloat *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[679]; + mapi_func _func = ((const mapi_func *) _tbl)[695]; ((void (APIENTRY *)(GLenum stage, GLenum portion, GLenum pname, GLfloat *params)) _func)(stage, portion, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetCombinerOutputParameterivNV)(GLenum stage, GLenum portion, GLenum pname, GLint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[680]; + mapi_func _func = ((const mapi_func *) _tbl)[696]; ((void (APIENTRY *)(GLenum stage, GLenum portion, GLenum pname, GLint *params)) _func)(stage, portion, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetFinalCombinerInputParameterfvNV)(GLenum variable, GLenum pname, GLfloat *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[681]; + mapi_func _func = ((const mapi_func *) _tbl)[697]; ((void (APIENTRY *)(GLenum variable, GLenum pname, GLfloat *params)) _func)(variable, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetFinalCombinerInputParameterivNV)(GLenum variable, GLenum pname, GLint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[682]; + mapi_func _func = ((const mapi_func *) _tbl)[698]; ((void (APIENTRY *)(GLenum variable, GLenum pname, GLint *params)) _func)(variable, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(ResizeBuffersMESA)(void) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[683]; + mapi_func _func = ((const mapi_func *) _tbl)[699]; ((void (APIENTRY *)(void)) _func)(); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2dMESA)(GLdouble x, GLdouble y) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[684]; + mapi_func _func = ((const mapi_func *) _tbl)[700]; ((void (APIENTRY *)(GLdouble x, GLdouble y)) _func)(x, y); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2d)(GLdouble x, GLdouble y) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[684]; + mapi_func _func = ((const mapi_func *) _tbl)[700]; ((void (APIENTRY *)(GLdouble x, GLdouble y)) _func)(x, y); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2dARB)(GLdouble x, GLdouble y) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[684]; + mapi_func _func = ((const mapi_func *) _tbl)[700]; ((void (APIENTRY *)(GLdouble x, GLdouble y)) _func)(x, y); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2dvMESA)(const GLdouble *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[685]; + mapi_func _func = ((const mapi_func *) _tbl)[701]; ((void (APIENTRY *)(const GLdouble *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2dv)(const GLdouble *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[685]; + mapi_func _func = ((const mapi_func *) _tbl)[701]; ((void (APIENTRY *)(const GLdouble *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2dvARB)(const GLdouble *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[685]; + mapi_func _func = ((const mapi_func *) _tbl)[701]; ((void (APIENTRY *)(const GLdouble *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2fMESA)(GLfloat x, GLfloat y) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[686]; + mapi_func _func = ((const mapi_func *) _tbl)[702]; ((void (APIENTRY *)(GLfloat x, GLfloat y)) _func)(x, y); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2f)(GLfloat x, GLfloat y) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[686]; + mapi_func _func = ((const mapi_func *) _tbl)[702]; ((void (APIENTRY *)(GLfloat x, GLfloat y)) _func)(x, y); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2fARB)(GLfloat x, GLfloat y) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[686]; + mapi_func _func = ((const mapi_func *) _tbl)[702]; ((void (APIENTRY *)(GLfloat x, GLfloat y)) _func)(x, y); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2fvMESA)(const GLfloat *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[687]; + mapi_func _func = ((const mapi_func *) _tbl)[703]; ((void (APIENTRY *)(const GLfloat *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2fv)(const GLfloat *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[687]; + mapi_func _func = ((const mapi_func *) _tbl)[703]; ((void (APIENTRY *)(const GLfloat *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2fvARB)(const GLfloat *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[687]; + mapi_func _func = ((const mapi_func *) _tbl)[703]; ((void (APIENTRY *)(const GLfloat *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2iMESA)(GLint x, GLint y) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[688]; + mapi_func _func = ((const mapi_func *) _tbl)[704]; ((void (APIENTRY *)(GLint x, GLint y)) _func)(x, y); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2i)(GLint x, GLint y) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[688]; + mapi_func _func = ((const mapi_func *) _tbl)[704]; ((void (APIENTRY *)(GLint x, GLint y)) _func)(x, y); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2iARB)(GLint x, GLint y) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[688]; + mapi_func _func = ((const mapi_func *) _tbl)[704]; ((void (APIENTRY *)(GLint x, GLint y)) _func)(x, y); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2ivMESA)(const GLint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[689]; + mapi_func _func = ((const mapi_func *) _tbl)[705]; ((void (APIENTRY *)(const GLint *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2iv)(const GLint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[689]; + mapi_func _func = ((const mapi_func *) _tbl)[705]; ((void (APIENTRY *)(const GLint *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2ivARB)(const GLint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[689]; + mapi_func _func = ((const mapi_func *) _tbl)[705]; ((void (APIENTRY *)(const GLint *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2sMESA)(GLshort x, GLshort y) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[690]; + mapi_func _func = ((const mapi_func *) _tbl)[706]; ((void (APIENTRY *)(GLshort x, GLshort y)) _func)(x, y); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2s)(GLshort x, GLshort y) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[690]; + mapi_func _func = ((const mapi_func *) _tbl)[706]; ((void (APIENTRY *)(GLshort x, GLshort y)) _func)(x, y); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2sARB)(GLshort x, GLshort y) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[690]; + mapi_func _func = ((const mapi_func *) _tbl)[706]; ((void (APIENTRY *)(GLshort x, GLshort y)) _func)(x, y); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2svMESA)(const GLshort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[691]; + mapi_func _func = ((const mapi_func *) _tbl)[707]; ((void (APIENTRY *)(const GLshort *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2sv)(const GLshort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[691]; + mapi_func _func = ((const mapi_func *) _tbl)[707]; ((void (APIENTRY *)(const GLshort *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos2svARB)(const GLshort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[691]; + mapi_func _func = ((const mapi_func *) _tbl)[707]; ((void (APIENTRY *)(const GLshort *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[692]; + mapi_func _func = ((const mapi_func *) _tbl)[708]; ((void (APIENTRY *)(GLdouble x, GLdouble y, GLdouble z)) _func)(x, y, z); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3d)(GLdouble x, GLdouble y, GLdouble z) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[692]; + mapi_func _func = ((const mapi_func *) _tbl)[708]; ((void (APIENTRY *)(GLdouble x, GLdouble y, GLdouble z)) _func)(x, y, z); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3dARB)(GLdouble x, GLdouble y, GLdouble z) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[692]; + mapi_func _func = ((const mapi_func *) _tbl)[708]; ((void (APIENTRY *)(GLdouble x, GLdouble y, GLdouble z)) _func)(x, y, z); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3dvMESA)(const GLdouble *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[693]; + mapi_func _func = ((const mapi_func *) _tbl)[709]; ((void (APIENTRY *)(const GLdouble *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3dv)(const GLdouble *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[693]; + mapi_func _func = ((const mapi_func *) _tbl)[709]; ((void (APIENTRY *)(const GLdouble *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3dvARB)(const GLdouble *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[693]; + mapi_func _func = ((const mapi_func *) _tbl)[709]; ((void (APIENTRY *)(const GLdouble *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[694]; + mapi_func _func = ((const mapi_func *) _tbl)[710]; ((void (APIENTRY *)(GLfloat x, GLfloat y, GLfloat z)) _func)(x, y, z); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3f)(GLfloat x, GLfloat y, GLfloat z) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[694]; + mapi_func _func = ((const mapi_func *) _tbl)[710]; ((void (APIENTRY *)(GLfloat x, GLfloat y, GLfloat z)) _func)(x, y, z); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3fARB)(GLfloat x, GLfloat y, GLfloat z) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[694]; + mapi_func _func = ((const mapi_func *) _tbl)[710]; ((void (APIENTRY *)(GLfloat x, GLfloat y, GLfloat z)) _func)(x, y, z); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3fvMESA)(const GLfloat *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[695]; + mapi_func _func = ((const mapi_func *) _tbl)[711]; ((void (APIENTRY *)(const GLfloat *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3fv)(const GLfloat *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[695]; + mapi_func _func = ((const mapi_func *) _tbl)[711]; ((void (APIENTRY *)(const GLfloat *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3fvARB)(const GLfloat *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[695]; + mapi_func _func = ((const mapi_func *) _tbl)[711]; ((void (APIENTRY *)(const GLfloat *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3iMESA)(GLint x, GLint y, GLint z) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[696]; + mapi_func _func = ((const mapi_func *) _tbl)[712]; ((void (APIENTRY *)(GLint x, GLint y, GLint z)) _func)(x, y, z); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3i)(GLint x, GLint y, GLint z) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[696]; + mapi_func _func = ((const mapi_func *) _tbl)[712]; ((void (APIENTRY *)(GLint x, GLint y, GLint z)) _func)(x, y, z); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3iARB)(GLint x, GLint y, GLint z) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[696]; + mapi_func _func = ((const mapi_func *) _tbl)[712]; ((void (APIENTRY *)(GLint x, GLint y, GLint z)) _func)(x, y, z); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3ivMESA)(const GLint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[697]; + mapi_func _func = ((const mapi_func *) _tbl)[713]; ((void (APIENTRY *)(const GLint *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3iv)(const GLint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[697]; + mapi_func _func = ((const mapi_func *) _tbl)[713]; ((void (APIENTRY *)(const GLint *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3ivARB)(const GLint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[697]; + mapi_func _func = ((const mapi_func *) _tbl)[713]; ((void (APIENTRY *)(const GLint *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3sMESA)(GLshort x, GLshort y, GLshort z) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[698]; + mapi_func _func = ((const mapi_func *) _tbl)[714]; ((void (APIENTRY *)(GLshort x, GLshort y, GLshort z)) _func)(x, y, z); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3s)(GLshort x, GLshort y, GLshort z) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[698]; + mapi_func _func = ((const mapi_func *) _tbl)[714]; ((void (APIENTRY *)(GLshort x, GLshort y, GLshort z)) _func)(x, y, z); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3sARB)(GLshort x, GLshort y, GLshort z) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[698]; + mapi_func _func = ((const mapi_func *) _tbl)[714]; ((void (APIENTRY *)(GLshort x, GLshort y, GLshort z)) _func)(x, y, z); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3svMESA)(const GLshort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[699]; + mapi_func _func = ((const mapi_func *) _tbl)[715]; ((void (APIENTRY *)(const GLshort *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3sv)(const GLshort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[699]; + mapi_func _func = ((const mapi_func *) _tbl)[715]; ((void (APIENTRY *)(const GLshort *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos3svARB)(const GLshort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[699]; + mapi_func _func = ((const mapi_func *) _tbl)[715]; ((void (APIENTRY *)(const GLshort *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[700]; + mapi_func _func = ((const mapi_func *) _tbl)[716]; ((void (APIENTRY *)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)) _func)(x, y, z, w); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4dvMESA)(const GLdouble *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[701]; + mapi_func _func = ((const mapi_func *) _tbl)[717]; ((void (APIENTRY *)(const GLdouble *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[702]; + mapi_func _func = ((const mapi_func *) _tbl)[718]; ((void (APIENTRY *)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)) _func)(x, y, z, w); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4fvMESA)(const GLfloat *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[703]; + mapi_func _func = ((const mapi_func *) _tbl)[719]; ((void (APIENTRY *)(const GLfloat *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[704]; + mapi_func _func = ((const mapi_func *) _tbl)[720]; ((void (APIENTRY *)(GLint x, GLint y, GLint z, GLint w)) _func)(x, y, z, w); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4ivMESA)(const GLint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[705]; + mapi_func _func = ((const mapi_func *) _tbl)[721]; ((void (APIENTRY *)(const GLint *v)) _func)(v); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[706]; + mapi_func _func = ((const mapi_func *) _tbl)[722]; ((void (APIENTRY *)(GLshort x, GLshort y, GLshort z, GLshort w)) _func)(x, y, z, w); } GLAPI void APIENTRY GLAPI_PREFIX(WindowPos4svMESA)(const GLshort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[707]; + mapi_func _func = ((const mapi_func *) _tbl)[723]; ((void (APIENTRY *)(const GLshort *v)) _func)(v); } GLAPI GLboolean APIENTRY GLAPI_PREFIX(AreProgramsResidentNV)(GLsizei n, const GLuint *ids, GLboolean *residences) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[717]; + mapi_func _func = ((const mapi_func *) _tbl)[733]; return ((GLboolean (APIENTRY *)(GLsizei n, const GLuint *ids, GLboolean *residences)) _func)(n, ids, residences); } GLAPI void APIENTRY GLAPI_PREFIX(BindProgramNV)(GLenum target, GLuint program) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[718]; + mapi_func _func = ((const mapi_func *) _tbl)[734]; ((void (APIENTRY *)(GLenum target, GLuint program)) _func)(target, program); } GLAPI void APIENTRY GLAPI_PREFIX(BindProgramARB)(GLenum target, GLuint program) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[718]; + mapi_func _func = ((const mapi_func *) _tbl)[734]; ((void (APIENTRY *)(GLenum target, GLuint program)) _func)(target, program); } GLAPI void APIENTRY GLAPI_PREFIX(DeleteProgramsNV)(GLsizei n, const GLuint *programs) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[719]; + mapi_func _func = ((const mapi_func *) _tbl)[735]; ((void (APIENTRY *)(GLsizei n, const GLuint *programs)) _func)(n, programs); } GLAPI void APIENTRY GLAPI_PREFIX(DeleteProgramsARB)(GLsizei n, const GLuint *programs) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[719]; + mapi_func _func = ((const mapi_func *) _tbl)[735]; ((void (APIENTRY *)(GLsizei n, const GLuint *programs)) _func)(n, programs); } GLAPI void APIENTRY GLAPI_PREFIX(ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[720]; + mapi_func _func = ((const mapi_func *) _tbl)[736]; ((void (APIENTRY *)(GLenum target, GLuint id, const GLfloat *params)) _func)(target, id, params); } GLAPI void APIENTRY GLAPI_PREFIX(GenProgramsNV)(GLsizei n, GLuint *programs) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[721]; + mapi_func _func = ((const mapi_func *) _tbl)[737]; ((void (APIENTRY *)(GLsizei n, GLuint *programs)) _func)(n, programs); } GLAPI void APIENTRY GLAPI_PREFIX(GenProgramsARB)(GLsizei n, GLuint *programs) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[721]; + mapi_func _func = ((const mapi_func *) _tbl)[737]; ((void (APIENTRY *)(GLsizei n, GLuint *programs)) _func)(n, programs); } GLAPI void APIENTRY GLAPI_PREFIX(GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[722]; + mapi_func _func = ((const mapi_func *) _tbl)[738]; ((void (APIENTRY *)(GLenum target, GLuint index, GLenum pname, GLdouble *params)) _func)(target, index, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[723]; + mapi_func _func = ((const mapi_func *) _tbl)[739]; ((void (APIENTRY *)(GLenum target, GLuint index, GLenum pname, GLfloat *params)) _func)(target, index, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetProgramStringNV)(GLuint id, GLenum pname, GLubyte *program) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[724]; + mapi_func _func = ((const mapi_func *) _tbl)[740]; ((void (APIENTRY *)(GLuint id, GLenum pname, GLubyte *program)) _func)(id, pname, program); } GLAPI void APIENTRY GLAPI_PREFIX(GetProgramivNV)(GLuint id, GLenum pname, GLint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[725]; + mapi_func _func = ((const mapi_func *) _tbl)[741]; ((void (APIENTRY *)(GLuint id, GLenum pname, GLint *params)) _func)(id, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[726]; + mapi_func _func = ((const mapi_func *) _tbl)[742]; ((void (APIENTRY *)(GLenum target, GLuint address, GLenum pname, GLint *params)) _func)(target, address, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid **pointer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[727]; + mapi_func _func = ((const mapi_func *) _tbl)[743]; ((void (APIENTRY *)(GLuint index, GLenum pname, GLvoid **pointer)) _func)(index, pname, pointer); } GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribPointerv)(GLuint index, GLenum pname, GLvoid **pointer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[727]; + mapi_func _func = ((const mapi_func *) _tbl)[743]; ((void (APIENTRY *)(GLuint index, GLenum pname, GLvoid **pointer)) _func)(index, pname, pointer); } GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribPointervARB)(GLuint index, GLenum pname, GLvoid **pointer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[727]; + mapi_func _func = ((const mapi_func *) _tbl)[743]; ((void (APIENTRY *)(GLuint index, GLenum pname, GLvoid **pointer)) _func)(index, pname, pointer); } GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[728]; + mapi_func _func = ((const mapi_func *) _tbl)[744]; ((void (APIENTRY *)(GLuint index, GLenum pname, GLdouble *params)) _func)(index, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[729]; + mapi_func _func = ((const mapi_func *) _tbl)[745]; ((void (APIENTRY *)(GLuint index, GLenum pname, GLfloat *params)) _func)(index, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribivNV)(GLuint index, GLenum pname, GLint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[730]; + mapi_func _func = ((const mapi_func *) _tbl)[746]; ((void (APIENTRY *)(GLuint index, GLenum pname, GLint *params)) _func)(index, pname, params); } GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsProgramNV)(GLuint program) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[731]; + mapi_func _func = ((const mapi_func *) _tbl)[747]; return ((GLboolean (APIENTRY *)(GLuint program)) _func)(program); } GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsProgramARB)(GLuint program) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[731]; + mapi_func _func = ((const mapi_func *) _tbl)[747]; return ((GLboolean (APIENTRY *)(GLuint program)) _func)(program); } GLAPI void APIENTRY GLAPI_PREFIX(LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte *program) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[732]; + mapi_func _func = ((const mapi_func *) _tbl)[748]; ((void (APIENTRY *)(GLenum target, GLuint id, GLsizei len, const GLubyte *program)) _func)(target, id, len, program); } GLAPI void APIENTRY GLAPI_PREFIX(ProgramParameters4dvNV)(GLenum target, GLuint index, GLsizei num, const GLdouble *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[733]; + mapi_func _func = ((const mapi_func *) _tbl)[749]; ((void (APIENTRY *)(GLenum target, GLuint index, GLsizei num, const GLdouble *params)) _func)(target, index, num, params); } GLAPI void APIENTRY GLAPI_PREFIX(ProgramParameters4fvNV)(GLenum target, GLuint index, GLsizei num, const GLfloat *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[734]; + mapi_func _func = ((const mapi_func *) _tbl)[750]; ((void (APIENTRY *)(GLenum target, GLuint index, GLsizei num, const GLfloat *params)) _func)(target, index, num, params); } GLAPI void APIENTRY GLAPI_PREFIX(RequestResidentProgramsNV)(GLsizei n, const GLuint *ids) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[735]; + mapi_func _func = ((const mapi_func *) _tbl)[751]; ((void (APIENTRY *)(GLsizei n, const GLuint *ids)) _func)(n, ids); } GLAPI void APIENTRY GLAPI_PREFIX(TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[736]; + mapi_func _func = ((const mapi_func *) _tbl)[752]; ((void (APIENTRY *)(GLenum target, GLuint address, GLenum matrix, GLenum transform)) _func)(target, address, matrix, transform); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1dNV)(GLuint index, GLdouble x) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[737]; + mapi_func _func = ((const mapi_func *) _tbl)[753]; ((void (APIENTRY *)(GLuint index, GLdouble x)) _func)(index, x); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1dvNV)(GLuint index, const GLdouble *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[738]; + mapi_func _func = ((const mapi_func *) _tbl)[754]; ((void (APIENTRY *)(GLuint index, const GLdouble *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1fNV)(GLuint index, GLfloat x) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[739]; + mapi_func _func = ((const mapi_func *) _tbl)[755]; ((void (APIENTRY *)(GLuint index, GLfloat x)) _func)(index, x); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1fvNV)(GLuint index, const GLfloat *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[740]; + mapi_func _func = ((const mapi_func *) _tbl)[756]; ((void (APIENTRY *)(GLuint index, const GLfloat *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1sNV)(GLuint index, GLshort x) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[741]; + mapi_func _func = ((const mapi_func *) _tbl)[757]; ((void (APIENTRY *)(GLuint index, GLshort x)) _func)(index, x); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib1svNV)(GLuint index, const GLshort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[742]; + mapi_func _func = ((const mapi_func *) _tbl)[758]; ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[743]; + mapi_func _func = ((const mapi_func *) _tbl)[759]; ((void (APIENTRY *)(GLuint index, GLdouble x, GLdouble y)) _func)(index, x, y); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2dvNV)(GLuint index, const GLdouble *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[744]; + mapi_func _func = ((const mapi_func *) _tbl)[760]; ((void (APIENTRY *)(GLuint index, const GLdouble *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[745]; + mapi_func _func = ((const mapi_func *) _tbl)[761]; ((void (APIENTRY *)(GLuint index, GLfloat x, GLfloat y)) _func)(index, x, y); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2fvNV)(GLuint index, const GLfloat *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[746]; + mapi_func _func = ((const mapi_func *) _tbl)[762]; ((void (APIENTRY *)(GLuint index, const GLfloat *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[747]; + mapi_func _func = ((const mapi_func *) _tbl)[763]; ((void (APIENTRY *)(GLuint index, GLshort x, GLshort y)) _func)(index, x, y); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib2svNV)(GLuint index, const GLshort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[748]; + mapi_func _func = ((const mapi_func *) _tbl)[764]; ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[749]; + mapi_func _func = ((const mapi_func *) _tbl)[765]; ((void (APIENTRY *)(GLuint index, GLdouble x, GLdouble y, GLdouble z)) _func)(index, x, y, z); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3dvNV)(GLuint index, const GLdouble *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[750]; + mapi_func _func = ((const mapi_func *) _tbl)[766]; ((void (APIENTRY *)(GLuint index, const GLdouble *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[751]; + mapi_func _func = ((const mapi_func *) _tbl)[767]; ((void (APIENTRY *)(GLuint index, GLfloat x, GLfloat y, GLfloat z)) _func)(index, x, y, z); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3fvNV)(GLuint index, const GLfloat *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[752]; + mapi_func _func = ((const mapi_func *) _tbl)[768]; ((void (APIENTRY *)(GLuint index, const GLfloat *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[753]; + mapi_func _func = ((const mapi_func *) _tbl)[769]; ((void (APIENTRY *)(GLuint index, GLshort x, GLshort y, GLshort z)) _func)(index, x, y, z); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib3svNV)(GLuint index, const GLshort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[754]; + mapi_func _func = ((const mapi_func *) _tbl)[770]; ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[755]; + mapi_func _func = ((const mapi_func *) _tbl)[771]; ((void (APIENTRY *)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) _func)(index, x, y, z, w); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4dvNV)(GLuint index, const GLdouble *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[756]; + mapi_func _func = ((const mapi_func *) _tbl)[772]; ((void (APIENTRY *)(GLuint index, const GLdouble *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[757]; + mapi_func _func = ((const mapi_func *) _tbl)[773]; ((void (APIENTRY *)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) _func)(index, x, y, z, w); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4fvNV)(GLuint index, const GLfloat *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[758]; + mapi_func _func = ((const mapi_func *) _tbl)[774]; ((void (APIENTRY *)(GLuint index, const GLfloat *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[759]; + mapi_func _func = ((const mapi_func *) _tbl)[775]; ((void (APIENTRY *)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)) _func)(index, x, y, z, w); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4svNV)(GLuint index, const GLshort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[760]; + mapi_func _func = ((const mapi_func *) _tbl)[776]; ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[761]; + mapi_func _func = ((const mapi_func *) _tbl)[777]; ((void (APIENTRY *)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)) _func)(index, x, y, z, w); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttrib4ubvNV)(GLuint index, const GLubyte *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[762]; + mapi_func _func = ((const mapi_func *) _tbl)[778]; ((void (APIENTRY *)(GLuint index, const GLubyte *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[763]; + mapi_func _func = ((const mapi_func *) _tbl)[779]; ((void (APIENTRY *)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) _func)(index, size, type, stride, pointer); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[764]; + mapi_func _func = ((const mapi_func *) _tbl)[780]; ((void (APIENTRY *)(GLuint index, GLsizei n, const GLdouble *v)) _func)(index, n, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[765]; + mapi_func _func = ((const mapi_func *) _tbl)[781]; ((void (APIENTRY *)(GLuint index, GLsizei n, const GLfloat *v)) _func)(index, n, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[766]; + mapi_func _func = ((const mapi_func *) _tbl)[782]; ((void (APIENTRY *)(GLuint index, GLsizei n, const GLshort *v)) _func)(index, n, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[767]; + mapi_func _func = ((const mapi_func *) _tbl)[783]; ((void (APIENTRY *)(GLuint index, GLsizei n, const GLdouble *v)) _func)(index, n, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[768]; + mapi_func _func = ((const mapi_func *) _tbl)[784]; ((void (APIENTRY *)(GLuint index, GLsizei n, const GLfloat *v)) _func)(index, n, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[769]; + mapi_func _func = ((const mapi_func *) _tbl)[785]; ((void (APIENTRY *)(GLuint index, GLsizei n, const GLshort *v)) _func)(index, n, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[770]; + mapi_func _func = ((const mapi_func *) _tbl)[786]; ((void (APIENTRY *)(GLuint index, GLsizei n, const GLdouble *v)) _func)(index, n, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[771]; + mapi_func _func = ((const mapi_func *) _tbl)[787]; ((void (APIENTRY *)(GLuint index, GLsizei n, const GLfloat *v)) _func)(index, n, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[772]; + mapi_func _func = ((const mapi_func *) _tbl)[788]; ((void (APIENTRY *)(GLuint index, GLsizei n, const GLshort *v)) _func)(index, n, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[773]; + mapi_func _func = ((const mapi_func *) _tbl)[789]; ((void (APIENTRY *)(GLuint index, GLsizei n, const GLdouble *v)) _func)(index, n, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[774]; + mapi_func _func = ((const mapi_func *) _tbl)[790]; ((void (APIENTRY *)(GLuint index, GLsizei n, const GLfloat *v)) _func)(index, n, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[775]; + mapi_func _func = ((const mapi_func *) _tbl)[791]; ((void (APIENTRY *)(GLuint index, GLsizei n, const GLshort *v)) _func)(index, n, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[776]; + mapi_func _func = ((const mapi_func *) _tbl)[792]; ((void (APIENTRY *)(GLuint index, GLsizei n, const GLubyte *v)) _func)(index, n, v); } GLAPI void APIENTRY GLAPI_PREFIX(GetTexBumpParameterfvATI)(GLenum pname, GLfloat *param) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[777]; + mapi_func _func = ((const mapi_func *) _tbl)[793]; ((void (APIENTRY *)(GLenum pname, GLfloat *param)) _func)(pname, param); } GLAPI void APIENTRY GLAPI_PREFIX(GetTexBumpParameterivATI)(GLenum pname, GLint *param) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[778]; + mapi_func _func = ((const mapi_func *) _tbl)[794]; ((void (APIENTRY *)(GLenum pname, GLint *param)) _func)(pname, param); } GLAPI void APIENTRY GLAPI_PREFIX(TexBumpParameterfvATI)(GLenum pname, const GLfloat *param) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[779]; + mapi_func _func = ((const mapi_func *) _tbl)[795]; ((void (APIENTRY *)(GLenum pname, const GLfloat *param)) _func)(pname, param); } GLAPI void APIENTRY GLAPI_PREFIX(TexBumpParameterivATI)(GLenum pname, const GLint *param) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[780]; + mapi_func _func = ((const mapi_func *) _tbl)[796]; ((void (APIENTRY *)(GLenum pname, const GLint *param)) _func)(pname, param); } GLAPI void APIENTRY GLAPI_PREFIX(AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[781]; + mapi_func _func = ((const mapi_func *) _tbl)[797]; ((void (APIENTRY *)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)) _func)(op, dst, dstMod, arg1, arg1Rep, arg1Mod); } GLAPI void APIENTRY GLAPI_PREFIX(AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[782]; + mapi_func _func = ((const mapi_func *) _tbl)[798]; ((void (APIENTRY *)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)) _func)(op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod); } GLAPI void APIENTRY GLAPI_PREFIX(AlphaFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[783]; + mapi_func _func = ((const mapi_func *) _tbl)[799]; ((void (APIENTRY *)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)) _func)(op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod); } GLAPI void APIENTRY GLAPI_PREFIX(BeginFragmentShaderATI)(void) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[784]; + mapi_func _func = ((const mapi_func *) _tbl)[800]; ((void (APIENTRY *)(void)) _func)(); } GLAPI void APIENTRY GLAPI_PREFIX(BindFragmentShaderATI)(GLuint id) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[785]; + mapi_func _func = ((const mapi_func *) _tbl)[801]; ((void (APIENTRY *)(GLuint id)) _func)(id); } GLAPI void APIENTRY GLAPI_PREFIX(ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[786]; + mapi_func _func = ((const mapi_func *) _tbl)[802]; ((void (APIENTRY *)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)) _func)(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod); } GLAPI void APIENTRY GLAPI_PREFIX(ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[787]; + mapi_func _func = ((const mapi_func *) _tbl)[803]; ((void (APIENTRY *)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)) _func)(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod); } GLAPI void APIENTRY GLAPI_PREFIX(ColorFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[788]; + mapi_func _func = ((const mapi_func *) _tbl)[804]; ((void (APIENTRY *)(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)) _func)(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod); } GLAPI void APIENTRY GLAPI_PREFIX(DeleteFragmentShaderATI)(GLuint id) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[789]; + mapi_func _func = ((const mapi_func *) _tbl)[805]; ((void (APIENTRY *)(GLuint id)) _func)(id); } GLAPI void APIENTRY GLAPI_PREFIX(EndFragmentShaderATI)(void) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[790]; + mapi_func _func = ((const mapi_func *) _tbl)[806]; ((void (APIENTRY *)(void)) _func)(); } GLAPI GLuint APIENTRY GLAPI_PREFIX(GenFragmentShadersATI)(GLuint range) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[791]; + mapi_func _func = ((const mapi_func *) _tbl)[807]; return ((GLuint (APIENTRY *)(GLuint range)) _func)(range); } GLAPI void APIENTRY GLAPI_PREFIX(PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[792]; + mapi_func _func = ((const mapi_func *) _tbl)[808]; ((void (APIENTRY *)(GLuint dst, GLuint coord, GLenum swizzle)) _func)(dst, coord, swizzle); } GLAPI void APIENTRY GLAPI_PREFIX(SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[793]; + mapi_func _func = ((const mapi_func *) _tbl)[809]; ((void (APIENTRY *)(GLuint dst, GLuint interp, GLenum swizzle)) _func)(dst, interp, swizzle); } GLAPI void APIENTRY GLAPI_PREFIX(SetFragmentShaderConstantATI)(GLuint dst, const GLfloat *value) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[794]; + mapi_func _func = ((const mapi_func *) _tbl)[810]; ((void (APIENTRY *)(GLuint dst, const GLfloat *value)) _func)(dst, value); } GLAPI void APIENTRY GLAPI_PREFIX(PointParameteriNV)(GLenum pname, GLint param) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[795]; + mapi_func _func = ((const mapi_func *) _tbl)[811]; ((void (APIENTRY *)(GLenum pname, GLint param)) _func)(pname, param); } GLAPI void APIENTRY GLAPI_PREFIX(PointParameteri)(GLenum pname, GLint param) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[795]; + mapi_func _func = ((const mapi_func *) _tbl)[811]; ((void (APIENTRY *)(GLenum pname, GLint param)) _func)(pname, param); } GLAPI void APIENTRY GLAPI_PREFIX(PointParameterivNV)(GLenum pname, const GLint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[796]; + mapi_func _func = ((const mapi_func *) _tbl)[812]; ((void (APIENTRY *)(GLenum pname, const GLint *params)) _func)(pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(PointParameteriv)(GLenum pname, const GLint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[796]; + mapi_func _func = ((const mapi_func *) _tbl)[812]; ((void (APIENTRY *)(GLenum pname, const GLint *params)) _func)(pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(DeleteVertexArrays)(GLsizei n, const GLuint *arrays) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[799]; + mapi_func _func = ((const mapi_func *) _tbl)[815]; ((void (APIENTRY *)(GLsizei n, const GLuint *arrays)) _func)(n, arrays); } GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsVertexArray)(GLuint array) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[801]; + mapi_func _func = ((const mapi_func *) _tbl)[817]; return ((GLboolean (APIENTRY *)(GLuint array)) _func)(array); } GLAPI void APIENTRY GLAPI_PREFIX(GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[802]; + mapi_func _func = ((const mapi_func *) _tbl)[818]; ((void (APIENTRY *)(GLuint id, GLsizei len, const GLubyte *name, GLdouble *params)) _func)(id, len, name, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte *name, GLfloat *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[803]; + mapi_func _func = ((const mapi_func *) _tbl)[819]; ((void (APIENTRY *)(GLuint id, GLsizei len, const GLubyte *name, GLfloat *params)) _func)(id, len, name, params); } GLAPI void APIENTRY GLAPI_PREFIX(ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[804]; + mapi_func _func = ((const mapi_func *) _tbl)[820]; ((void (APIENTRY *)(GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w)) _func)(id, len, name, x, y, z, w); } GLAPI void APIENTRY GLAPI_PREFIX(ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[805]; + mapi_func _func = ((const mapi_func *) _tbl)[821]; ((void (APIENTRY *)(GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v)) _func)(id, len, name, v); } GLAPI void APIENTRY GLAPI_PREFIX(ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[806]; + mapi_func _func = ((const mapi_func *) _tbl)[822]; ((void (APIENTRY *)(GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)) _func)(id, len, name, x, y, z, w); } GLAPI void APIENTRY GLAPI_PREFIX(ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[807]; + mapi_func _func = ((const mapi_func *) _tbl)[823]; ((void (APIENTRY *)(GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v)) _func)(id, len, name, v); } GLAPI void APIENTRY GLAPI_PREFIX(PrimitiveRestartIndexNV)(GLuint index) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[808]; + mapi_func _func = ((const mapi_func *) _tbl)[824]; ((void (APIENTRY *)(GLuint index)) _func)(index); } GLAPI void APIENTRY GLAPI_PREFIX(PrimitiveRestartIndex)(GLuint index) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[808]; + mapi_func _func = ((const mapi_func *) _tbl)[824]; ((void (APIENTRY *)(GLuint index)) _func)(index); } GLAPI void APIENTRY GLAPI_PREFIX(PrimitiveRestartNV)(void) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[809]; + mapi_func _func = ((const mapi_func *) _tbl)[825]; ((void (APIENTRY *)(void)) _func)(); } GLAPI void APIENTRY GLAPI_PREFIX(BlendEquationSeparate)(GLenum modeRGB, GLenum modeA) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[857]; + mapi_func _func = ((const mapi_func *) _tbl)[873]; ((void (APIENTRY *)(GLenum modeRGB, GLenum modeA)) _func)(modeRGB, modeA); } GLAPI void APIENTRY GLAPI_PREFIX(BindFramebufferEXT)(GLenum target, GLuint framebuffer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[858]; + mapi_func _func = ((const mapi_func *) _tbl)[874]; ((void (APIENTRY *)(GLenum target, GLuint framebuffer)) _func)(target, framebuffer); } GLAPI void APIENTRY GLAPI_PREFIX(BindFramebuffer)(GLenum target, GLuint framebuffer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[858]; + mapi_func _func = ((const mapi_func *) _tbl)[874]; ((void (APIENTRY *)(GLenum target, GLuint framebuffer)) _func)(target, framebuffer); } GLAPI void APIENTRY GLAPI_PREFIX(BindRenderbufferEXT)(GLenum target, GLuint renderbuffer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[859]; + mapi_func _func = ((const mapi_func *) _tbl)[875]; ((void (APIENTRY *)(GLenum target, GLuint renderbuffer)) _func)(target, renderbuffer); } GLAPI void APIENTRY GLAPI_PREFIX(BindRenderbuffer)(GLenum target, GLuint renderbuffer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[859]; + mapi_func _func = ((const mapi_func *) _tbl)[875]; ((void (APIENTRY *)(GLenum target, GLuint renderbuffer)) _func)(target, renderbuffer); } GLAPI GLenum APIENTRY GLAPI_PREFIX(CheckFramebufferStatusEXT)(GLenum target) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[860]; + mapi_func _func = ((const mapi_func *) _tbl)[876]; return ((GLenum (APIENTRY *)(GLenum target)) _func)(target); } GLAPI GLenum APIENTRY GLAPI_PREFIX(CheckFramebufferStatus)(GLenum target) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[860]; + mapi_func _func = ((const mapi_func *) _tbl)[876]; return ((GLenum (APIENTRY *)(GLenum target)) _func)(target); } GLAPI void APIENTRY GLAPI_PREFIX(DeleteFramebuffersEXT)(GLsizei n, const GLuint *framebuffers) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[861]; + mapi_func _func = ((const mapi_func *) _tbl)[877]; ((void (APIENTRY *)(GLsizei n, const GLuint *framebuffers)) _func)(n, framebuffers); } GLAPI void APIENTRY GLAPI_PREFIX(DeleteFramebuffers)(GLsizei n, const GLuint *framebuffers) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[861]; + mapi_func _func = ((const mapi_func *) _tbl)[877]; ((void (APIENTRY *)(GLsizei n, const GLuint *framebuffers)) _func)(n, framebuffers); } GLAPI void APIENTRY GLAPI_PREFIX(DeleteRenderbuffersEXT)(GLsizei n, const GLuint *renderbuffers) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[862]; + mapi_func _func = ((const mapi_func *) _tbl)[878]; ((void (APIENTRY *)(GLsizei n, const GLuint *renderbuffers)) _func)(n, renderbuffers); } GLAPI void APIENTRY GLAPI_PREFIX(DeleteRenderbuffers)(GLsizei n, const GLuint *renderbuffers) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[862]; + mapi_func _func = ((const mapi_func *) _tbl)[878]; ((void (APIENTRY *)(GLsizei n, const GLuint *renderbuffers)) _func)(n, renderbuffers); } GLAPI void APIENTRY GLAPI_PREFIX(FramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[863]; + mapi_func _func = ((const mapi_func *) _tbl)[879]; ((void (APIENTRY *)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)) _func)(target, attachment, renderbuffertarget, renderbuffer); } GLAPI void APIENTRY GLAPI_PREFIX(FramebufferRenderbuffer)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[863]; + mapi_func _func = ((const mapi_func *) _tbl)[879]; ((void (APIENTRY *)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)) _func)(target, attachment, renderbuffertarget, renderbuffer); } GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[864]; + mapi_func _func = ((const mapi_func *) _tbl)[880]; ((void (APIENTRY *)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)) _func)(target, attachment, textarget, texture, level); } GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTexture1D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[864]; + mapi_func _func = ((const mapi_func *) _tbl)[880]; ((void (APIENTRY *)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)) _func)(target, attachment, textarget, texture, level); } GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[865]; + mapi_func _func = ((const mapi_func *) _tbl)[881]; ((void (APIENTRY *)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)) _func)(target, attachment, textarget, texture, level); } GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTexture2D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[865]; + mapi_func _func = ((const mapi_func *) _tbl)[881]; ((void (APIENTRY *)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)) _func)(target, attachment, textarget, texture, level); } GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[866]; + mapi_func _func = ((const mapi_func *) _tbl)[882]; ((void (APIENTRY *)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)) _func)(target, attachment, textarget, texture, level, zoffset); } GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTexture3D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[866]; + mapi_func _func = ((const mapi_func *) _tbl)[882]; ((void (APIENTRY *)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)) _func)(target, attachment, textarget, texture, level, zoffset); } GLAPI void APIENTRY GLAPI_PREFIX(GenFramebuffersEXT)(GLsizei n, GLuint *framebuffers) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[867]; + mapi_func _func = ((const mapi_func *) _tbl)[883]; ((void (APIENTRY *)(GLsizei n, GLuint *framebuffers)) _func)(n, framebuffers); } GLAPI void APIENTRY GLAPI_PREFIX(GenFramebuffers)(GLsizei n, GLuint *framebuffers) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[867]; + mapi_func _func = ((const mapi_func *) _tbl)[883]; ((void (APIENTRY *)(GLsizei n, GLuint *framebuffers)) _func)(n, framebuffers); } GLAPI void APIENTRY GLAPI_PREFIX(GenRenderbuffersEXT)(GLsizei n, GLuint *renderbuffers) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[868]; + mapi_func _func = ((const mapi_func *) _tbl)[884]; ((void (APIENTRY *)(GLsizei n, GLuint *renderbuffers)) _func)(n, renderbuffers); } GLAPI void APIENTRY GLAPI_PREFIX(GenRenderbuffers)(GLsizei n, GLuint *renderbuffers) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[868]; + mapi_func _func = ((const mapi_func *) _tbl)[884]; ((void (APIENTRY *)(GLsizei n, GLuint *renderbuffers)) _func)(n, renderbuffers); } GLAPI void APIENTRY GLAPI_PREFIX(GenerateMipmapEXT)(GLenum target) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[869]; + mapi_func _func = ((const mapi_func *) _tbl)[885]; ((void (APIENTRY *)(GLenum target)) _func)(target); } GLAPI void APIENTRY GLAPI_PREFIX(GenerateMipmap)(GLenum target) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[869]; + mapi_func _func = ((const mapi_func *) _tbl)[885]; ((void (APIENTRY *)(GLenum target)) _func)(target); } GLAPI void APIENTRY GLAPI_PREFIX(GetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[870]; + mapi_func _func = ((const mapi_func *) _tbl)[886]; ((void (APIENTRY *)(GLenum target, GLenum attachment, GLenum pname, GLint *params)) _func)(target, attachment, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment, GLenum pname, GLint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[870]; + mapi_func _func = ((const mapi_func *) _tbl)[886]; ((void (APIENTRY *)(GLenum target, GLenum attachment, GLenum pname, GLint *params)) _func)(target, attachment, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[871]; + mapi_func _func = ((const mapi_func *) _tbl)[887]; ((void (APIENTRY *)(GLenum target, GLenum pname, GLint *params)) _func)(target, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetRenderbufferParameteriv)(GLenum target, GLenum pname, GLint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[871]; + mapi_func _func = ((const mapi_func *) _tbl)[887]; ((void (APIENTRY *)(GLenum target, GLenum pname, GLint *params)) _func)(target, pname, params); } GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsFramebufferEXT)(GLuint framebuffer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[872]; + mapi_func _func = ((const mapi_func *) _tbl)[888]; return ((GLboolean (APIENTRY *)(GLuint framebuffer)) _func)(framebuffer); } GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsFramebuffer)(GLuint framebuffer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[872]; + mapi_func _func = ((const mapi_func *) _tbl)[888]; return ((GLboolean (APIENTRY *)(GLuint framebuffer)) _func)(framebuffer); } GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsRenderbufferEXT)(GLuint renderbuffer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[873]; + mapi_func _func = ((const mapi_func *) _tbl)[889]; return ((GLboolean (APIENTRY *)(GLuint renderbuffer)) _func)(renderbuffer); } GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsRenderbuffer)(GLuint renderbuffer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[873]; + mapi_func _func = ((const mapi_func *) _tbl)[889]; return ((GLboolean (APIENTRY *)(GLuint renderbuffer)) _func)(renderbuffer); } GLAPI void APIENTRY GLAPI_PREFIX(RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[874]; + mapi_func _func = ((const mapi_func *) _tbl)[890]; ((void (APIENTRY *)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)) _func)(target, internalformat, width, height); } GLAPI void APIENTRY GLAPI_PREFIX(RenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[874]; + mapi_func _func = ((const mapi_func *) _tbl)[890]; ((void (APIENTRY *)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)) _func)(target, internalformat, width, height); } GLAPI void APIENTRY GLAPI_PREFIX(BlitFramebuffer)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[875]; + mapi_func _func = ((const mapi_func *) _tbl)[891]; ((void (APIENTRY *)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)) _func)(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); } GLAPI void APIENTRY GLAPI_PREFIX(BindFragDataLocationEXT)(GLuint program, GLuint colorNumber, const GLchar *name) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[878]; + mapi_func _func = ((const mapi_func *) _tbl)[894]; ((void (APIENTRY *)(GLuint program, GLuint colorNumber, const GLchar *name)) _func)(program, colorNumber, name); } GLAPI void APIENTRY GLAPI_PREFIX(BindFragDataLocation)(GLuint program, GLuint colorNumber, const GLchar *name) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[878]; + mapi_func _func = ((const mapi_func *) _tbl)[894]; ((void (APIENTRY *)(GLuint program, GLuint colorNumber, const GLchar *name)) _func)(program, colorNumber, name); } GLAPI GLint APIENTRY GLAPI_PREFIX(GetFragDataLocationEXT)(GLuint program, const GLchar *name) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[879]; + mapi_func _func = ((const mapi_func *) _tbl)[895]; return ((GLint (APIENTRY *)(GLuint program, const GLchar *name)) _func)(program, name); } GLAPI GLint APIENTRY GLAPI_PREFIX(GetFragDataLocation)(GLuint program, const GLchar *name) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[879]; + mapi_func _func = ((const mapi_func *) _tbl)[895]; return ((GLint (APIENTRY *)(GLuint program, const GLchar *name)) _func)(program, name); } GLAPI void APIENTRY GLAPI_PREFIX(GetUniformuivEXT)(GLuint program, GLint location, GLuint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[880]; + mapi_func _func = ((const mapi_func *) _tbl)[896]; ((void (APIENTRY *)(GLuint program, GLint location, GLuint *params)) _func)(program, location, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetUniformuiv)(GLuint program, GLint location, GLuint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[880]; + mapi_func _func = ((const mapi_func *) _tbl)[896]; ((void (APIENTRY *)(GLuint program, GLint location, GLuint *params)) _func)(program, location, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribIivEXT)(GLuint index, GLenum pname, GLint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[881]; + mapi_func _func = ((const mapi_func *) _tbl)[897]; ((void (APIENTRY *)(GLuint index, GLenum pname, GLint *params)) _func)(index, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribIiv)(GLuint index, GLenum pname, GLint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[881]; + mapi_func _func = ((const mapi_func *) _tbl)[897]; ((void (APIENTRY *)(GLuint index, GLenum pname, GLint *params)) _func)(index, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribIuivEXT)(GLuint index, GLenum pname, GLuint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[882]; + mapi_func _func = ((const mapi_func *) _tbl)[898]; ((void (APIENTRY *)(GLuint index, GLenum pname, GLuint *params)) _func)(index, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetVertexAttribIuiv)(GLuint index, GLenum pname, GLuint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[882]; + mapi_func _func = ((const mapi_func *) _tbl)[898]; ((void (APIENTRY *)(GLuint index, GLenum pname, GLuint *params)) _func)(index, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(Uniform1uiEXT)(GLint location, GLuint x) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[883]; + mapi_func _func = ((const mapi_func *) _tbl)[899]; ((void (APIENTRY *)(GLint location, GLuint x)) _func)(location, x); } GLAPI void APIENTRY GLAPI_PREFIX(Uniform1ui)(GLint location, GLuint x) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[883]; + mapi_func _func = ((const mapi_func *) _tbl)[899]; ((void (APIENTRY *)(GLint location, GLuint x)) _func)(location, x); } GLAPI void APIENTRY GLAPI_PREFIX(Uniform1uivEXT)(GLint location, GLsizei count, const GLuint *value) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[884]; + mapi_func _func = ((const mapi_func *) _tbl)[900]; ((void (APIENTRY *)(GLint location, GLsizei count, const GLuint *value)) _func)(location, count, value); } GLAPI void APIENTRY GLAPI_PREFIX(Uniform1uiv)(GLint location, GLsizei count, const GLuint *value) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[884]; + mapi_func _func = ((const mapi_func *) _tbl)[900]; ((void (APIENTRY *)(GLint location, GLsizei count, const GLuint *value)) _func)(location, count, value); } GLAPI void APIENTRY GLAPI_PREFIX(Uniform2uiEXT)(GLint location, GLuint x, GLuint y) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[885]; + mapi_func _func = ((const mapi_func *) _tbl)[901]; ((void (APIENTRY *)(GLint location, GLuint x, GLuint y)) _func)(location, x, y); } GLAPI void APIENTRY GLAPI_PREFIX(Uniform2ui)(GLint location, GLuint x, GLuint y) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[885]; + mapi_func _func = ((const mapi_func *) _tbl)[901]; ((void (APIENTRY *)(GLint location, GLuint x, GLuint y)) _func)(location, x, y); } GLAPI void APIENTRY GLAPI_PREFIX(Uniform2uivEXT)(GLint location, GLsizei count, const GLuint *value) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[886]; + mapi_func _func = ((const mapi_func *) _tbl)[902]; ((void (APIENTRY *)(GLint location, GLsizei count, const GLuint *value)) _func)(location, count, value); } GLAPI void APIENTRY GLAPI_PREFIX(Uniform2uiv)(GLint location, GLsizei count, const GLuint *value) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[886]; + mapi_func _func = ((const mapi_func *) _tbl)[902]; ((void (APIENTRY *)(GLint location, GLsizei count, const GLuint *value)) _func)(location, count, value); } GLAPI void APIENTRY GLAPI_PREFIX(Uniform3uiEXT)(GLint location, GLuint x, GLuint y, GLuint z) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[887]; + mapi_func _func = ((const mapi_func *) _tbl)[903]; ((void (APIENTRY *)(GLint location, GLuint x, GLuint y, GLuint z)) _func)(location, x, y, z); } GLAPI void APIENTRY GLAPI_PREFIX(Uniform3ui)(GLint location, GLuint x, GLuint y, GLuint z) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[887]; + mapi_func _func = ((const mapi_func *) _tbl)[903]; ((void (APIENTRY *)(GLint location, GLuint x, GLuint y, GLuint z)) _func)(location, x, y, z); } GLAPI void APIENTRY GLAPI_PREFIX(Uniform3uivEXT)(GLint location, GLsizei count, const GLuint *value) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[888]; + mapi_func _func = ((const mapi_func *) _tbl)[904]; ((void (APIENTRY *)(GLint location, GLsizei count, const GLuint *value)) _func)(location, count, value); } GLAPI void APIENTRY GLAPI_PREFIX(Uniform3uiv)(GLint location, GLsizei count, const GLuint *value) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[888]; + mapi_func _func = ((const mapi_func *) _tbl)[904]; ((void (APIENTRY *)(GLint location, GLsizei count, const GLuint *value)) _func)(location, count, value); } GLAPI void APIENTRY GLAPI_PREFIX(Uniform4uiEXT)(GLint location, GLuint x, GLuint y, GLuint z, GLuint w) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[889]; + mapi_func _func = ((const mapi_func *) _tbl)[905]; ((void (APIENTRY *)(GLint location, GLuint x, GLuint y, GLuint z, GLuint w)) _func)(location, x, y, z, w); } GLAPI void APIENTRY GLAPI_PREFIX(Uniform4ui)(GLint location, GLuint x, GLuint y, GLuint z, GLuint w) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[889]; + mapi_func _func = ((const mapi_func *) _tbl)[905]; ((void (APIENTRY *)(GLint location, GLuint x, GLuint y, GLuint z, GLuint w)) _func)(location, x, y, z, w); } GLAPI void APIENTRY GLAPI_PREFIX(Uniform4uivEXT)(GLint location, GLsizei count, const GLuint *value) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[890]; + mapi_func _func = ((const mapi_func *) _tbl)[906]; ((void (APIENTRY *)(GLint location, GLsizei count, const GLuint *value)) _func)(location, count, value); } GLAPI void APIENTRY GLAPI_PREFIX(Uniform4uiv)(GLint location, GLsizei count, const GLuint *value) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[890]; + mapi_func _func = ((const mapi_func *) _tbl)[906]; ((void (APIENTRY *)(GLint location, GLsizei count, const GLuint *value)) _func)(location, count, value); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1iEXT)(GLuint index, GLint x) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[891]; + mapi_func _func = ((const mapi_func *) _tbl)[907]; ((void (APIENTRY *)(GLuint index, GLint x)) _func)(index, x); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1i)(GLuint index, GLint x) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[891]; + mapi_func _func = ((const mapi_func *) _tbl)[907]; ((void (APIENTRY *)(GLuint index, GLint x)) _func)(index, x); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1ivEXT)(GLuint index, const GLint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[892]; + mapi_func _func = ((const mapi_func *) _tbl)[908]; ((void (APIENTRY *)(GLuint index, const GLint *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1iv)(GLuint index, const GLint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[892]; + mapi_func _func = ((const mapi_func *) _tbl)[908]; ((void (APIENTRY *)(GLuint index, const GLint *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1uiEXT)(GLuint index, GLuint x) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[893]; + mapi_func _func = ((const mapi_func *) _tbl)[909]; ((void (APIENTRY *)(GLuint index, GLuint x)) _func)(index, x); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1ui)(GLuint index, GLuint x) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[893]; + mapi_func _func = ((const mapi_func *) _tbl)[909]; ((void (APIENTRY *)(GLuint index, GLuint x)) _func)(index, x); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1uivEXT)(GLuint index, const GLuint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[894]; + mapi_func _func = ((const mapi_func *) _tbl)[910]; ((void (APIENTRY *)(GLuint index, const GLuint *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI1uiv)(GLuint index, const GLuint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[894]; + mapi_func _func = ((const mapi_func *) _tbl)[910]; ((void (APIENTRY *)(GLuint index, const GLuint *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2iEXT)(GLuint index, GLint x, GLint y) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[895]; + mapi_func _func = ((const mapi_func *) _tbl)[911]; ((void (APIENTRY *)(GLuint index, GLint x, GLint y)) _func)(index, x, y); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2i)(GLuint index, GLint x, GLint y) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[895]; + mapi_func _func = ((const mapi_func *) _tbl)[911]; ((void (APIENTRY *)(GLuint index, GLint x, GLint y)) _func)(index, x, y); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2ivEXT)(GLuint index, const GLint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[896]; + mapi_func _func = ((const mapi_func *) _tbl)[912]; ((void (APIENTRY *)(GLuint index, const GLint *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2iv)(GLuint index, const GLint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[896]; + mapi_func _func = ((const mapi_func *) _tbl)[912]; ((void (APIENTRY *)(GLuint index, const GLint *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2uiEXT)(GLuint index, GLuint x, GLuint y) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[897]; + mapi_func _func = ((const mapi_func *) _tbl)[913]; ((void (APIENTRY *)(GLuint index, GLuint x, GLuint y)) _func)(index, x, y); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2ui)(GLuint index, GLuint x, GLuint y) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[897]; + mapi_func _func = ((const mapi_func *) _tbl)[913]; ((void (APIENTRY *)(GLuint index, GLuint x, GLuint y)) _func)(index, x, y); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2uivEXT)(GLuint index, const GLuint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[898]; + mapi_func _func = ((const mapi_func *) _tbl)[914]; ((void (APIENTRY *)(GLuint index, const GLuint *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI2uiv)(GLuint index, const GLuint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[898]; + mapi_func _func = ((const mapi_func *) _tbl)[914]; ((void (APIENTRY *)(GLuint index, const GLuint *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3iEXT)(GLuint index, GLint x, GLint y, GLint z) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[899]; + mapi_func _func = ((const mapi_func *) _tbl)[915]; ((void (APIENTRY *)(GLuint index, GLint x, GLint y, GLint z)) _func)(index, x, y, z); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3i)(GLuint index, GLint x, GLint y, GLint z) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[899]; + mapi_func _func = ((const mapi_func *) _tbl)[915]; ((void (APIENTRY *)(GLuint index, GLint x, GLint y, GLint z)) _func)(index, x, y, z); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3ivEXT)(GLuint index, const GLint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[900]; + mapi_func _func = ((const mapi_func *) _tbl)[916]; ((void (APIENTRY *)(GLuint index, const GLint *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3iv)(GLuint index, const GLint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[900]; + mapi_func _func = ((const mapi_func *) _tbl)[916]; ((void (APIENTRY *)(GLuint index, const GLint *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[901]; + mapi_func _func = ((const mapi_func *) _tbl)[917]; ((void (APIENTRY *)(GLuint index, GLuint x, GLuint y, GLuint z)) _func)(index, x, y, z); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3ui)(GLuint index, GLuint x, GLuint y, GLuint z) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[901]; + mapi_func _func = ((const mapi_func *) _tbl)[917]; ((void (APIENTRY *)(GLuint index, GLuint x, GLuint y, GLuint z)) _func)(index, x, y, z); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3uivEXT)(GLuint index, const GLuint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[902]; + mapi_func _func = ((const mapi_func *) _tbl)[918]; ((void (APIENTRY *)(GLuint index, const GLuint *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI3uiv)(GLuint index, const GLuint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[902]; + mapi_func _func = ((const mapi_func *) _tbl)[918]; ((void (APIENTRY *)(GLuint index, const GLuint *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4bvEXT)(GLuint index, const GLbyte *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[903]; + mapi_func _func = ((const mapi_func *) _tbl)[919]; ((void (APIENTRY *)(GLuint index, const GLbyte *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4bv)(GLuint index, const GLbyte *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[903]; + mapi_func _func = ((const mapi_func *) _tbl)[919]; ((void (APIENTRY *)(GLuint index, const GLbyte *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4iEXT)(GLuint index, GLint x, GLint y, GLint z, GLint w) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[904]; + mapi_func _func = ((const mapi_func *) _tbl)[920]; ((void (APIENTRY *)(GLuint index, GLint x, GLint y, GLint z, GLint w)) _func)(index, x, y, z, w); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4i)(GLuint index, GLint x, GLint y, GLint z, GLint w) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[904]; + mapi_func _func = ((const mapi_func *) _tbl)[920]; ((void (APIENTRY *)(GLuint index, GLint x, GLint y, GLint z, GLint w)) _func)(index, x, y, z, w); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4ivEXT)(GLuint index, const GLint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[905]; + mapi_func _func = ((const mapi_func *) _tbl)[921]; ((void (APIENTRY *)(GLuint index, const GLint *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4iv)(GLuint index, const GLint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[905]; + mapi_func _func = ((const mapi_func *) _tbl)[921]; ((void (APIENTRY *)(GLuint index, const GLint *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4svEXT)(GLuint index, const GLshort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[906]; + mapi_func _func = ((const mapi_func *) _tbl)[922]; ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4sv)(GLuint index, const GLshort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[906]; + mapi_func _func = ((const mapi_func *) _tbl)[922]; ((void (APIENTRY *)(GLuint index, const GLshort *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4ubvEXT)(GLuint index, const GLubyte *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[907]; + mapi_func _func = ((const mapi_func *) _tbl)[923]; ((void (APIENTRY *)(GLuint index, const GLubyte *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4ubv)(GLuint index, const GLubyte *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[907]; + mapi_func _func = ((const mapi_func *) _tbl)[923]; ((void (APIENTRY *)(GLuint index, const GLubyte *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[908]; + mapi_func _func = ((const mapi_func *) _tbl)[924]; ((void (APIENTRY *)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)) _func)(index, x, y, z, w); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4ui)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[908]; + mapi_func _func = ((const mapi_func *) _tbl)[924]; ((void (APIENTRY *)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)) _func)(index, x, y, z, w); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4uivEXT)(GLuint index, const GLuint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[909]; + mapi_func _func = ((const mapi_func *) _tbl)[925]; ((void (APIENTRY *)(GLuint index, const GLuint *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4uiv)(GLuint index, const GLuint *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[909]; + mapi_func _func = ((const mapi_func *) _tbl)[925]; ((void (APIENTRY *)(GLuint index, const GLuint *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4usvEXT)(GLuint index, const GLushort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[910]; + mapi_func _func = ((const mapi_func *) _tbl)[926]; ((void (APIENTRY *)(GLuint index, const GLushort *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribI4usv)(GLuint index, const GLushort *v) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[910]; + mapi_func _func = ((const mapi_func *) _tbl)[926]; ((void (APIENTRY *)(GLuint index, const GLushort *v)) _func)(index, v); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribIPointerEXT)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[911]; + mapi_func _func = ((const mapi_func *) _tbl)[927]; ((void (APIENTRY *)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) _func)(index, size, type, stride, pointer); } GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribIPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[911]; + mapi_func _func = ((const mapi_func *) _tbl)[927]; ((void (APIENTRY *)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)) _func)(index, size, type, stride, pointer); } GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[912]; + mapi_func _func = ((const mapi_func *) _tbl)[928]; ((void (APIENTRY *)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)) _func)(target, attachment, texture, level, layer); } GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTextureLayer)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[912]; + mapi_func _func = ((const mapi_func *) _tbl)[928]; ((void (APIENTRY *)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)) _func)(target, attachment, texture, level, layer); } GLAPI void APIENTRY GLAPI_PREFIX(ColorMaskIndexedEXT)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[913]; + mapi_func _func = ((const mapi_func *) _tbl)[929]; ((void (APIENTRY *)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)) _func)(buf, r, g, b, a); } GLAPI void APIENTRY GLAPI_PREFIX(ColorMaski)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[913]; + mapi_func _func = ((const mapi_func *) _tbl)[929]; ((void (APIENTRY *)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)) _func)(buf, r, g, b, a); } GLAPI void APIENTRY GLAPI_PREFIX(DisableIndexedEXT)(GLenum target, GLuint index) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[914]; + mapi_func _func = ((const mapi_func *) _tbl)[930]; ((void (APIENTRY *)(GLenum target, GLuint index)) _func)(target, index); } GLAPI void APIENTRY GLAPI_PREFIX(Disablei)(GLenum target, GLuint index) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[914]; + mapi_func _func = ((const mapi_func *) _tbl)[930]; ((void (APIENTRY *)(GLenum target, GLuint index)) _func)(target, index); } GLAPI void APIENTRY GLAPI_PREFIX(EnableIndexedEXT)(GLenum target, GLuint index) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[915]; + mapi_func _func = ((const mapi_func *) _tbl)[931]; ((void (APIENTRY *)(GLenum target, GLuint index)) _func)(target, index); } GLAPI void APIENTRY GLAPI_PREFIX(Enablei)(GLenum target, GLuint index) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[915]; + mapi_func _func = ((const mapi_func *) _tbl)[931]; ((void (APIENTRY *)(GLenum target, GLuint index)) _func)(target, index); } GLAPI void APIENTRY GLAPI_PREFIX(GetBooleanIndexedvEXT)(GLenum value, GLuint index, GLboolean *data) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[916]; + mapi_func _func = ((const mapi_func *) _tbl)[932]; ((void (APIENTRY *)(GLenum value, GLuint index, GLboolean *data)) _func)(value, index, data); } GLAPI void APIENTRY GLAPI_PREFIX(GetBooleani_v)(GLenum value, GLuint index, GLboolean *data) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[916]; + mapi_func _func = ((const mapi_func *) _tbl)[932]; ((void (APIENTRY *)(GLenum value, GLuint index, GLboolean *data)) _func)(value, index, data); } GLAPI void APIENTRY GLAPI_PREFIX(GetIntegerIndexedvEXT)(GLenum value, GLuint index, GLint *data) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[917]; + mapi_func _func = ((const mapi_func *) _tbl)[933]; ((void (APIENTRY *)(GLenum value, GLuint index, GLint *data)) _func)(value, index, data); } GLAPI void APIENTRY GLAPI_PREFIX(GetIntegeri_v)(GLenum value, GLuint index, GLint *data) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[917]; + mapi_func _func = ((const mapi_func *) _tbl)[933]; ((void (APIENTRY *)(GLenum value, GLuint index, GLint *data)) _func)(value, index, data); } GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsEnabledIndexedEXT)(GLenum target, GLuint index) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[918]; + mapi_func _func = ((const mapi_func *) _tbl)[934]; return ((GLboolean (APIENTRY *)(GLenum target, GLuint index)) _func)(target, index); } GLAPI GLboolean APIENTRY GLAPI_PREFIX(IsEnabledi)(GLenum target, GLuint index) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[918]; + mapi_func _func = ((const mapi_func *) _tbl)[934]; return ((GLboolean (APIENTRY *)(GLenum target, GLuint index)) _func)(target, index); } GLAPI void APIENTRY GLAPI_PREFIX(ClearColorIiEXT)(GLint r, GLint g, GLint b, GLint a) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[919]; + mapi_func _func = ((const mapi_func *) _tbl)[935]; ((void (APIENTRY *)(GLint r, GLint g, GLint b, GLint a)) _func)(r, g, b, a); } GLAPI void APIENTRY GLAPI_PREFIX(ClearColorIuiEXT)(GLuint r, GLuint g, GLuint b, GLuint a) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[920]; + mapi_func _func = ((const mapi_func *) _tbl)[936]; ((void (APIENTRY *)(GLuint r, GLuint g, GLuint b, GLuint a)) _func)(r, g, b, a); } GLAPI void APIENTRY GLAPI_PREFIX(GetTexParameterIivEXT)(GLenum target, GLenum pname, GLint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[921]; + mapi_func _func = ((const mapi_func *) _tbl)[937]; ((void (APIENTRY *)(GLenum target, GLenum pname, GLint *params)) _func)(target, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetTexParameterIiv)(GLenum target, GLenum pname, GLint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[921]; + mapi_func _func = ((const mapi_func *) _tbl)[937]; ((void (APIENTRY *)(GLenum target, GLenum pname, GLint *params)) _func)(target, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetTexParameterIuivEXT)(GLenum target, GLenum pname, GLuint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[922]; + mapi_func _func = ((const mapi_func *) _tbl)[938]; ((void (APIENTRY *)(GLenum target, GLenum pname, GLuint *params)) _func)(target, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(GetTexParameterIuiv)(GLenum target, GLenum pname, GLuint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[922]; + mapi_func _func = ((const mapi_func *) _tbl)[938]; ((void (APIENTRY *)(GLenum target, GLenum pname, GLuint *params)) _func)(target, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(TexParameterIivEXT)(GLenum target, GLenum pname, const GLint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[923]; + mapi_func _func = ((const mapi_func *) _tbl)[939]; ((void (APIENTRY *)(GLenum target, GLenum pname, const GLint *params)) _func)(target, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(TexParameterIiv)(GLenum target, GLenum pname, const GLint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[923]; + mapi_func _func = ((const mapi_func *) _tbl)[939]; ((void (APIENTRY *)(GLenum target, GLenum pname, const GLint *params)) _func)(target, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(TexParameterIuivEXT)(GLenum target, GLenum pname, const GLuint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[924]; + mapi_func _func = ((const mapi_func *) _tbl)[940]; ((void (APIENTRY *)(GLenum target, GLenum pname, const GLuint *params)) _func)(target, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(TexParameterIuiv)(GLenum target, GLenum pname, const GLuint *params) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[924]; + mapi_func _func = ((const mapi_func *) _tbl)[940]; ((void (APIENTRY *)(GLenum target, GLenum pname, const GLuint *params)) _func)(target, pname, params); } GLAPI void APIENTRY GLAPI_PREFIX(BeginConditionalRenderNV)(GLuint query, GLenum mode) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[925]; + mapi_func _func = ((const mapi_func *) _tbl)[941]; ((void (APIENTRY *)(GLuint query, GLenum mode)) _func)(query, mode); } GLAPI void APIENTRY GLAPI_PREFIX(BeginConditionalRender)(GLuint query, GLenum mode) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[925]; + mapi_func _func = ((const mapi_func *) _tbl)[941]; ((void (APIENTRY *)(GLuint query, GLenum mode)) _func)(query, mode); } GLAPI void APIENTRY GLAPI_PREFIX(EndConditionalRenderNV)(void) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[926]; + mapi_func _func = ((const mapi_func *) _tbl)[942]; ((void (APIENTRY *)(void)) _func)(); } GLAPI void APIENTRY GLAPI_PREFIX(EndConditionalRender)(void) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[926]; + mapi_func _func = ((const mapi_func *) _tbl)[942]; ((void (APIENTRY *)(void)) _func)(); } GLAPI void APIENTRY GLAPI_PREFIX(BeginTransformFeedbackEXT)(GLenum mode) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[927]; + mapi_func _func = ((const mapi_func *) _tbl)[943]; ((void (APIENTRY *)(GLenum mode)) _func)(mode); } GLAPI void APIENTRY GLAPI_PREFIX(BeginTransformFeedback)(GLenum mode) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[927]; + mapi_func _func = ((const mapi_func *) _tbl)[943]; ((void (APIENTRY *)(GLenum mode)) _func)(mode); } GLAPI void APIENTRY GLAPI_PREFIX(BindBufferBaseEXT)(GLenum target, GLuint index, GLuint buffer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[928]; + mapi_func _func = ((const mapi_func *) _tbl)[944]; ((void (APIENTRY *)(GLenum target, GLuint index, GLuint buffer)) _func)(target, index, buffer); } GLAPI void APIENTRY GLAPI_PREFIX(BindBufferBase)(GLenum target, GLuint index, GLuint buffer) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[928]; + mapi_func _func = ((const mapi_func *) _tbl)[944]; ((void (APIENTRY *)(GLenum target, GLuint index, GLuint buffer)) _func)(target, index, buffer); } GLAPI void APIENTRY GLAPI_PREFIX(BindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[929]; + mapi_func _func = ((const mapi_func *) _tbl)[945]; ((void (APIENTRY *)(GLenum target, GLuint index, GLuint buffer, GLintptr offset)) _func)(target, index, buffer, offset); } GLAPI void APIENTRY GLAPI_PREFIX(BindBufferRangeEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[930]; + mapi_func _func = ((const mapi_func *) _tbl)[946]; ((void (APIENTRY *)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)) _func)(target, index, buffer, offset, size); } GLAPI void APIENTRY GLAPI_PREFIX(BindBufferRange)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[930]; + mapi_func _func = ((const mapi_func *) _tbl)[946]; ((void (APIENTRY *)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)) _func)(target, index, buffer, offset, size); } GLAPI void APIENTRY GLAPI_PREFIX(EndTransformFeedbackEXT)(void) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[931]; + mapi_func _func = ((const mapi_func *) _tbl)[947]; ((void (APIENTRY *)(void)) _func)(); } GLAPI void APIENTRY GLAPI_PREFIX(EndTransformFeedback)(void) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[931]; + mapi_func _func = ((const mapi_func *) _tbl)[947]; ((void (APIENTRY *)(void)) _func)(); } GLAPI void APIENTRY GLAPI_PREFIX(GetTransformFeedbackVaryingEXT)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[932]; + mapi_func _func = ((const mapi_func *) _tbl)[948]; ((void (APIENTRY *)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)) _func)(program, index, bufSize, length, size, type, name); } GLAPI void APIENTRY GLAPI_PREFIX(GetTransformFeedbackVarying)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[932]; + mapi_func _func = ((const mapi_func *) _tbl)[948]; ((void (APIENTRY *)(GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name)) _func)(program, index, bufSize, length, size, type, name); } GLAPI void APIENTRY GLAPI_PREFIX(TransformFeedbackVaryingsEXT)(GLuint program, GLsizei count, const char **varyings, GLenum bufferMode) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[933]; + mapi_func _func = ((const mapi_func *) _tbl)[949]; ((void (APIENTRY *)(GLuint program, GLsizei count, const char **varyings, GLenum bufferMode)) _func)(program, count, varyings, bufferMode); } GLAPI void APIENTRY GLAPI_PREFIX(TransformFeedbackVaryings)(GLuint program, GLsizei count, const GLchar* *varyings, GLenum bufferMode) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[933]; + mapi_func _func = ((const mapi_func *) _tbl)[949]; ((void (APIENTRY *)(GLuint program, GLsizei count, const GLchar* *varyings, GLenum bufferMode)) _func)(program, count, varyings, bufferMode); } GLAPI void APIENTRY GLAPI_PREFIX(ProvokingVertexEXT)(GLenum mode) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[934]; + mapi_func _func = ((const mapi_func *) _tbl)[950]; ((void (APIENTRY *)(GLenum mode)) _func)(mode); } GLAPI void APIENTRY GLAPI_PREFIX(ProvokingVertex)(GLenum mode) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[934]; + mapi_func _func = ((const mapi_func *) _tbl)[950]; ((void (APIENTRY *)(GLenum mode)) _func)(mode); } GLAPI void APIENTRY GLAPI_PREFIX(GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint *value) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[937]; + mapi_func _func = ((const mapi_func *) _tbl)[953]; ((void (APIENTRY *)(GLenum objectType, GLuint name, GLenum pname, GLint *value)) _func)(objectType, name, pname, value); } GLAPI GLenum APIENTRY GLAPI_PREFIX(ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[938]; + mapi_func _func = ((const mapi_func *) _tbl)[954]; return ((GLenum (APIENTRY *)(GLenum objectType, GLuint name, GLenum option)) _func)(objectType, name, option); } GLAPI GLenum APIENTRY GLAPI_PREFIX(ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[939]; + mapi_func _func = ((const mapi_func *) _tbl)[955]; return ((GLenum (APIENTRY *)(GLenum objectType, GLuint name, GLenum option)) _func)(objectType, name, option); } GLAPI void APIENTRY GLAPI_PREFIX(ActiveProgramEXT)(GLuint program) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[940]; + mapi_func _func = ((const mapi_func *) _tbl)[956]; ((void (APIENTRY *)(GLuint program)) _func)(program); } GLAPI GLuint APIENTRY GLAPI_PREFIX(CreateShaderProgramEXT)(GLenum type, const GLchar *string) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[941]; + mapi_func _func = ((const mapi_func *) _tbl)[957]; return ((GLuint (APIENTRY *)(GLenum type, const GLchar *string)) _func)(type, string); } GLAPI void APIENTRY GLAPI_PREFIX(UseShaderProgramEXT)(GLenum type, GLuint program) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[942]; + mapi_func _func = ((const mapi_func *) _tbl)[958]; ((void (APIENTRY *)(GLenum type, GLuint program)) _func)(type, program); } GLAPI void APIENTRY GLAPI_PREFIX(TextureBarrierNV)(void) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[943]; + mapi_func _func = ((const mapi_func *) _tbl)[959]; ((void (APIENTRY *)(void)) _func)(); } GLAPI void APIENTRY GLAPI_PREFIX(EGLImageTargetRenderbufferStorageOES)(GLenum target, GLvoid *writeOffset) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[949]; + mapi_func _func = ((const mapi_func *) _tbl)[965]; ((void (APIENTRY *)(GLenum target, GLvoid *writeOffset)) _func)(target, writeOffset); } GLAPI void APIENTRY GLAPI_PREFIX(EGLImageTargetTexture2DOES)(GLenum target, GLvoid *writeOffset) { const struct mapi_table *_tbl = entry_current_get(); - mapi_func _func = ((const mapi_func *) _tbl)[950]; + mapi_func _func = ((const mapi_func *) _tbl)[966]; ((void (APIENTRY *)(GLenum target, GLvoid *writeOffset)) _func)(target, writeOffset); } @@ -11806,9 +11934,12 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawBuffersARB))"\n" ".globl "GLAPI_PREFIX_STR(DrawBuffersATI)"\n" ".set "GLAPI_PREFIX_STR(DrawBuffersATI)", "GLAPI_PREFIX_STR(DrawBuffersARB)"\n" -STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawArraysInstancedARB))"\n" +STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClampColorARB))"\n" "\t"STUB_ASM_CODE("572")"\n" +STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawArraysInstancedARB))"\n" +"\t"STUB_ASM_CODE("573")"\n" + ".globl "GLAPI_PREFIX_STR(DrawArraysInstanced)"\n" ".set "GLAPI_PREFIX_STR(DrawArraysInstanced)", "GLAPI_PREFIX_STR(DrawArraysInstancedARB)"\n" @@ -11816,7 +11947,7 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawArraysInstancedARB))"\n" ".set "GLAPI_PREFIX_STR(DrawArraysInstancedEXT)", "GLAPI_PREFIX_STR(DrawArraysInstancedARB)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawElementsInstancedARB))"\n" -"\t"STUB_ASM_CODE("573")"\n" +"\t"STUB_ASM_CODE("574")"\n" ".globl "GLAPI_PREFIX_STR(DrawElementsInstanced)"\n" ".set "GLAPI_PREFIX_STR(DrawElementsInstanced)", "GLAPI_PREFIX_STR(DrawElementsInstancedARB)"\n" @@ -11825,139 +11956,184 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawElementsInstancedARB))"\n" ".set "GLAPI_PREFIX_STR(DrawElementsInstancedEXT)", "GLAPI_PREFIX_STR(DrawElementsInstancedARB)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RenderbufferStorageMultisample))"\n" -"\t"STUB_ASM_CODE("574")"\n" +"\t"STUB_ASM_CODE("575")"\n" ".globl "GLAPI_PREFIX_STR(RenderbufferStorageMultisampleEXT)"\n" ".set "GLAPI_PREFIX_STR(RenderbufferStorageMultisampleEXT)", "GLAPI_PREFIX_STR(RenderbufferStorageMultisample)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FramebufferTextureARB))"\n" -"\t"STUB_ASM_CODE("575")"\n" +"\t"STUB_ASM_CODE("576")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FramebufferTextureFaceARB))"\n" -"\t"STUB_ASM_CODE("576")"\n" +"\t"STUB_ASM_CODE("577")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramParameteriARB))"\n" -"\t"STUB_ASM_CODE("577")"\n" +"\t"STUB_ASM_CODE("578")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribDivisorARB))"\n" -"\t"STUB_ASM_CODE("578")"\n" +"\t"STUB_ASM_CODE("579")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FlushMappedBufferRange))"\n" -"\t"STUB_ASM_CODE("579")"\n" +"\t"STUB_ASM_CODE("580")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MapBufferRange))"\n" -"\t"STUB_ASM_CODE("580")"\n" +"\t"STUB_ASM_CODE("581")"\n" + +STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexBufferARB))"\n" +"\t"STUB_ASM_CODE("582")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindVertexArray))"\n" -"\t"STUB_ASM_CODE("581")"\n" +"\t"STUB_ASM_CODE("583")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GenVertexArrays))"\n" -"\t"STUB_ASM_CODE("582")"\n" +"\t"STUB_ASM_CODE("584")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CopyBufferSubData))"\n" -"\t"STUB_ASM_CODE("583")"\n" +"\t"STUB_ASM_CODE("585")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClientWaitSync))"\n" -"\t"STUB_ASM_CODE("584")"\n" +"\t"STUB_ASM_CODE("586")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteSync))"\n" -"\t"STUB_ASM_CODE("585")"\n" +"\t"STUB_ASM_CODE("587")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FenceSync))"\n" -"\t"STUB_ASM_CODE("586")"\n" +"\t"STUB_ASM_CODE("588")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetInteger64v))"\n" -"\t"STUB_ASM_CODE("587")"\n" +"\t"STUB_ASM_CODE("589")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetSynciv))"\n" -"\t"STUB_ASM_CODE("588")"\n" +"\t"STUB_ASM_CODE("590")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsSync))"\n" -"\t"STUB_ASM_CODE("589")"\n" +"\t"STUB_ASM_CODE("591")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WaitSync))"\n" -"\t"STUB_ASM_CODE("590")"\n" +"\t"STUB_ASM_CODE("592")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawElementsBaseVertex))"\n" -"\t"STUB_ASM_CODE("591")"\n" +"\t"STUB_ASM_CODE("593")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawRangeElementsBaseVertex))"\n" -"\t"STUB_ASM_CODE("592")"\n" +"\t"STUB_ASM_CODE("594")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiDrawElementsBaseVertex))"\n" -"\t"STUB_ASM_CODE("593")"\n" +"\t"STUB_ASM_CODE("595")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BlendEquationSeparateiARB))"\n" -"\t"STUB_ASM_CODE("594")"\n" +"\t"STUB_ASM_CODE("596")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BlendEquationiARB))"\n" -"\t"STUB_ASM_CODE("595")"\n" +"\t"STUB_ASM_CODE("597")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BlendFuncSeparateiARB))"\n" -"\t"STUB_ASM_CODE("596")"\n" +"\t"STUB_ASM_CODE("598")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BlendFunciARB))"\n" -"\t"STUB_ASM_CODE("597")"\n" +"\t"STUB_ASM_CODE("599")"\n" + +STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindSampler))"\n" +"\t"STUB_ASM_CODE("600")"\n" + +STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteSamplers))"\n" +"\t"STUB_ASM_CODE("601")"\n" + +STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GenSamplers))"\n" +"\t"STUB_ASM_CODE("602")"\n" + +STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetSamplerParameterIiv))"\n" +"\t"STUB_ASM_CODE("603")"\n" + +STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetSamplerParameterIuiv))"\n" +"\t"STUB_ASM_CODE("604")"\n" + +STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetSamplerParameterfv))"\n" +"\t"STUB_ASM_CODE("605")"\n" + +STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetSamplerParameteriv))"\n" +"\t"STUB_ASM_CODE("606")"\n" + +STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsSampler))"\n" +"\t"STUB_ASM_CODE("607")"\n" + +STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SamplerParameterIiv))"\n" +"\t"STUB_ASM_CODE("608")"\n" + +STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SamplerParameterIuiv))"\n" +"\t"STUB_ASM_CODE("609")"\n" + +STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SamplerParameterf))"\n" +"\t"STUB_ASM_CODE("610")"\n" + +STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SamplerParameterfv))"\n" +"\t"STUB_ASM_CODE("611")"\n" + +STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SamplerParameteri))"\n" +"\t"STUB_ASM_CODE("612")"\n" + +STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SamplerParameteriv))"\n" +"\t"STUB_ASM_CODE("613")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindTransformFeedback))"\n" -"\t"STUB_ASM_CODE("598")"\n" +"\t"STUB_ASM_CODE("614")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteTransformFeedbacks))"\n" -"\t"STUB_ASM_CODE("599")"\n" +"\t"STUB_ASM_CODE("615")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DrawTransformFeedback))"\n" -"\t"STUB_ASM_CODE("600")"\n" +"\t"STUB_ASM_CODE("616")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GenTransformFeedbacks))"\n" -"\t"STUB_ASM_CODE("601")"\n" +"\t"STUB_ASM_CODE("617")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsTransformFeedback))"\n" -"\t"STUB_ASM_CODE("602")"\n" +"\t"STUB_ASM_CODE("618")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PauseTransformFeedback))"\n" -"\t"STUB_ASM_CODE("603")"\n" +"\t"STUB_ASM_CODE("619")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ResumeTransformFeedback))"\n" -"\t"STUB_ASM_CODE("604")"\n" +"\t"STUB_ASM_CODE("620")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClearDepthf))"\n" -"\t"STUB_ASM_CODE("605")"\n" +"\t"STUB_ASM_CODE("621")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DepthRangef))"\n" -"\t"STUB_ASM_CODE("606")"\n" +"\t"STUB_ASM_CODE("622")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetShaderPrecisionFormat))"\n" -"\t"STUB_ASM_CODE("607")"\n" +"\t"STUB_ASM_CODE("623")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ReleaseShaderCompiler))"\n" -"\t"STUB_ASM_CODE("608")"\n" +"\t"STUB_ASM_CODE("624")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ShaderBinary))"\n" -"\t"STUB_ASM_CODE("609")"\n" +"\t"STUB_ASM_CODE("625")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PolygonOffsetEXT))"\n" -"\t"STUB_ASM_CODE("613")"\n" +"\t"STUB_ASM_CODE("629")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorPointerEXT))"\n" -"\t"STUB_ASM_CODE("632")"\n" +"\t"STUB_ASM_CODE("648")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EdgeFlagPointerEXT))"\n" -"\t"STUB_ASM_CODE("633")"\n" +"\t"STUB_ASM_CODE("649")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IndexPointerEXT))"\n" -"\t"STUB_ASM_CODE("634")"\n" +"\t"STUB_ASM_CODE("650")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(NormalPointerEXT))"\n" -"\t"STUB_ASM_CODE("635")"\n" +"\t"STUB_ASM_CODE("651")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexCoordPointerEXT))"\n" -"\t"STUB_ASM_CODE("636")"\n" +"\t"STUB_ASM_CODE("652")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexPointerEXT))"\n" -"\t"STUB_ASM_CODE("637")"\n" +"\t"STUB_ASM_CODE("653")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PointParameterfEXT))"\n" -"\t"STUB_ASM_CODE("638")"\n" +"\t"STUB_ASM_CODE("654")"\n" ".globl "GLAPI_PREFIX_STR(PointParameterf)"\n" ".set "GLAPI_PREFIX_STR(PointParameterf)", "GLAPI_PREFIX_STR(PointParameterfEXT)"\n" @@ -11966,7 +12142,7 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PointParameterfEXT))"\n" ".set "GLAPI_PREFIX_STR(PointParameterfARB)", "GLAPI_PREFIX_STR(PointParameterfEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PointParameterfvEXT))"\n" -"\t"STUB_ASM_CODE("639")"\n" +"\t"STUB_ASM_CODE("655")"\n" ".globl "GLAPI_PREFIX_STR(PointParameterfv)"\n" ".set "GLAPI_PREFIX_STR(PointParameterfv)", "GLAPI_PREFIX_STR(PointParameterfvEXT)"\n" @@ -11975,211 +12151,211 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PointParameterfvEXT))"\n" ".set "GLAPI_PREFIX_STR(PointParameterfvARB)", "GLAPI_PREFIX_STR(PointParameterfvEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(LockArraysEXT))"\n" -"\t"STUB_ASM_CODE("640")"\n" +"\t"STUB_ASM_CODE("656")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(UnlockArraysEXT))"\n" -"\t"STUB_ASM_CODE("641")"\n" +"\t"STUB_ASM_CODE("657")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3bEXT))"\n" -"\t"STUB_ASM_CODE("642")"\n" +"\t"STUB_ASM_CODE("658")"\n" ".globl "GLAPI_PREFIX_STR(SecondaryColor3b)"\n" ".set "GLAPI_PREFIX_STR(SecondaryColor3b)", "GLAPI_PREFIX_STR(SecondaryColor3bEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3bvEXT))"\n" -"\t"STUB_ASM_CODE("643")"\n" +"\t"STUB_ASM_CODE("659")"\n" ".globl "GLAPI_PREFIX_STR(SecondaryColor3bv)"\n" ".set "GLAPI_PREFIX_STR(SecondaryColor3bv)", "GLAPI_PREFIX_STR(SecondaryColor3bvEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3dEXT))"\n" -"\t"STUB_ASM_CODE("644")"\n" +"\t"STUB_ASM_CODE("660")"\n" ".globl "GLAPI_PREFIX_STR(SecondaryColor3d)"\n" ".set "GLAPI_PREFIX_STR(SecondaryColor3d)", "GLAPI_PREFIX_STR(SecondaryColor3dEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3dvEXT))"\n" -"\t"STUB_ASM_CODE("645")"\n" +"\t"STUB_ASM_CODE("661")"\n" ".globl "GLAPI_PREFIX_STR(SecondaryColor3dv)"\n" ".set "GLAPI_PREFIX_STR(SecondaryColor3dv)", "GLAPI_PREFIX_STR(SecondaryColor3dvEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3fEXT))"\n" -"\t"STUB_ASM_CODE("646")"\n" +"\t"STUB_ASM_CODE("662")"\n" ".globl "GLAPI_PREFIX_STR(SecondaryColor3f)"\n" ".set "GLAPI_PREFIX_STR(SecondaryColor3f)", "GLAPI_PREFIX_STR(SecondaryColor3fEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3fvEXT))"\n" -"\t"STUB_ASM_CODE("647")"\n" +"\t"STUB_ASM_CODE("663")"\n" ".globl "GLAPI_PREFIX_STR(SecondaryColor3fv)"\n" ".set "GLAPI_PREFIX_STR(SecondaryColor3fv)", "GLAPI_PREFIX_STR(SecondaryColor3fvEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3iEXT))"\n" -"\t"STUB_ASM_CODE("648")"\n" +"\t"STUB_ASM_CODE("664")"\n" ".globl "GLAPI_PREFIX_STR(SecondaryColor3i)"\n" ".set "GLAPI_PREFIX_STR(SecondaryColor3i)", "GLAPI_PREFIX_STR(SecondaryColor3iEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3ivEXT))"\n" -"\t"STUB_ASM_CODE("649")"\n" +"\t"STUB_ASM_CODE("665")"\n" ".globl "GLAPI_PREFIX_STR(SecondaryColor3iv)"\n" ".set "GLAPI_PREFIX_STR(SecondaryColor3iv)", "GLAPI_PREFIX_STR(SecondaryColor3ivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3sEXT))"\n" -"\t"STUB_ASM_CODE("650")"\n" +"\t"STUB_ASM_CODE("666")"\n" ".globl "GLAPI_PREFIX_STR(SecondaryColor3s)"\n" ".set "GLAPI_PREFIX_STR(SecondaryColor3s)", "GLAPI_PREFIX_STR(SecondaryColor3sEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3svEXT))"\n" -"\t"STUB_ASM_CODE("651")"\n" +"\t"STUB_ASM_CODE("667")"\n" ".globl "GLAPI_PREFIX_STR(SecondaryColor3sv)"\n" ".set "GLAPI_PREFIX_STR(SecondaryColor3sv)", "GLAPI_PREFIX_STR(SecondaryColor3svEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3ubEXT))"\n" -"\t"STUB_ASM_CODE("652")"\n" +"\t"STUB_ASM_CODE("668")"\n" ".globl "GLAPI_PREFIX_STR(SecondaryColor3ub)"\n" ".set "GLAPI_PREFIX_STR(SecondaryColor3ub)", "GLAPI_PREFIX_STR(SecondaryColor3ubEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3ubvEXT))"\n" -"\t"STUB_ASM_CODE("653")"\n" +"\t"STUB_ASM_CODE("669")"\n" ".globl "GLAPI_PREFIX_STR(SecondaryColor3ubv)"\n" ".set "GLAPI_PREFIX_STR(SecondaryColor3ubv)", "GLAPI_PREFIX_STR(SecondaryColor3ubvEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3uiEXT))"\n" -"\t"STUB_ASM_CODE("654")"\n" +"\t"STUB_ASM_CODE("670")"\n" ".globl "GLAPI_PREFIX_STR(SecondaryColor3ui)"\n" ".set "GLAPI_PREFIX_STR(SecondaryColor3ui)", "GLAPI_PREFIX_STR(SecondaryColor3uiEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3uivEXT))"\n" -"\t"STUB_ASM_CODE("655")"\n" +"\t"STUB_ASM_CODE("671")"\n" ".globl "GLAPI_PREFIX_STR(SecondaryColor3uiv)"\n" ".set "GLAPI_PREFIX_STR(SecondaryColor3uiv)", "GLAPI_PREFIX_STR(SecondaryColor3uivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3usEXT))"\n" -"\t"STUB_ASM_CODE("656")"\n" +"\t"STUB_ASM_CODE("672")"\n" ".globl "GLAPI_PREFIX_STR(SecondaryColor3us)"\n" ".set "GLAPI_PREFIX_STR(SecondaryColor3us)", "GLAPI_PREFIX_STR(SecondaryColor3usEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColor3usvEXT))"\n" -"\t"STUB_ASM_CODE("657")"\n" +"\t"STUB_ASM_CODE("673")"\n" ".globl "GLAPI_PREFIX_STR(SecondaryColor3usv)"\n" ".set "GLAPI_PREFIX_STR(SecondaryColor3usv)", "GLAPI_PREFIX_STR(SecondaryColor3usvEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SecondaryColorPointerEXT))"\n" -"\t"STUB_ASM_CODE("658")"\n" +"\t"STUB_ASM_CODE("674")"\n" ".globl "GLAPI_PREFIX_STR(SecondaryColorPointer)"\n" ".set "GLAPI_PREFIX_STR(SecondaryColorPointer)", "GLAPI_PREFIX_STR(SecondaryColorPointerEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiDrawArraysEXT))"\n" -"\t"STUB_ASM_CODE("659")"\n" +"\t"STUB_ASM_CODE("675")"\n" ".globl "GLAPI_PREFIX_STR(MultiDrawArrays)"\n" ".set "GLAPI_PREFIX_STR(MultiDrawArrays)", "GLAPI_PREFIX_STR(MultiDrawArraysEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(MultiDrawElementsEXT))"\n" -"\t"STUB_ASM_CODE("660")"\n" +"\t"STUB_ASM_CODE("676")"\n" ".globl "GLAPI_PREFIX_STR(MultiDrawElements)"\n" ".set "GLAPI_PREFIX_STR(MultiDrawElements)", "GLAPI_PREFIX_STR(MultiDrawElementsEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FogCoordPointerEXT))"\n" -"\t"STUB_ASM_CODE("661")"\n" +"\t"STUB_ASM_CODE("677")"\n" ".globl "GLAPI_PREFIX_STR(FogCoordPointer)"\n" ".set "GLAPI_PREFIX_STR(FogCoordPointer)", "GLAPI_PREFIX_STR(FogCoordPointerEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FogCoorddEXT))"\n" -"\t"STUB_ASM_CODE("662")"\n" +"\t"STUB_ASM_CODE("678")"\n" ".globl "GLAPI_PREFIX_STR(FogCoordd)"\n" ".set "GLAPI_PREFIX_STR(FogCoordd)", "GLAPI_PREFIX_STR(FogCoorddEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FogCoorddvEXT))"\n" -"\t"STUB_ASM_CODE("663")"\n" +"\t"STUB_ASM_CODE("679")"\n" ".globl "GLAPI_PREFIX_STR(FogCoorddv)"\n" ".set "GLAPI_PREFIX_STR(FogCoorddv)", "GLAPI_PREFIX_STR(FogCoorddvEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FogCoordfEXT))"\n" -"\t"STUB_ASM_CODE("664")"\n" +"\t"STUB_ASM_CODE("680")"\n" ".globl "GLAPI_PREFIX_STR(FogCoordf)"\n" ".set "GLAPI_PREFIX_STR(FogCoordf)", "GLAPI_PREFIX_STR(FogCoordfEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FogCoordfvEXT))"\n" -"\t"STUB_ASM_CODE("665")"\n" +"\t"STUB_ASM_CODE("681")"\n" ".globl "GLAPI_PREFIX_STR(FogCoordfv)"\n" ".set "GLAPI_PREFIX_STR(FogCoordfv)", "GLAPI_PREFIX_STR(FogCoordfvEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BlendFuncSeparateEXT))"\n" -"\t"STUB_ASM_CODE("667")"\n" +"\t"STUB_ASM_CODE("683")"\n" ".globl "GLAPI_PREFIX_STR(BlendFuncSeparate)"\n" ".set "GLAPI_PREFIX_STR(BlendFuncSeparate)", "GLAPI_PREFIX_STR(BlendFuncSeparateEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FlushVertexArrayRangeNV))"\n" -"\t"STUB_ASM_CODE("668")"\n" +"\t"STUB_ASM_CODE("684")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexArrayRangeNV))"\n" -"\t"STUB_ASM_CODE("669")"\n" +"\t"STUB_ASM_CODE("685")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CombinerInputNV))"\n" -"\t"STUB_ASM_CODE("670")"\n" +"\t"STUB_ASM_CODE("686")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CombinerOutputNV))"\n" -"\t"STUB_ASM_CODE("671")"\n" +"\t"STUB_ASM_CODE("687")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CombinerParameterfNV))"\n" -"\t"STUB_ASM_CODE("672")"\n" +"\t"STUB_ASM_CODE("688")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CombinerParameterfvNV))"\n" -"\t"STUB_ASM_CODE("673")"\n" +"\t"STUB_ASM_CODE("689")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CombinerParameteriNV))"\n" -"\t"STUB_ASM_CODE("674")"\n" +"\t"STUB_ASM_CODE("690")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CombinerParameterivNV))"\n" -"\t"STUB_ASM_CODE("675")"\n" +"\t"STUB_ASM_CODE("691")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FinalCombinerInputNV))"\n" -"\t"STUB_ASM_CODE("676")"\n" +"\t"STUB_ASM_CODE("692")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetCombinerInputParameterfvNV))"\n" -"\t"STUB_ASM_CODE("677")"\n" +"\t"STUB_ASM_CODE("693")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetCombinerInputParameterivNV))"\n" -"\t"STUB_ASM_CODE("678")"\n" +"\t"STUB_ASM_CODE("694")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetCombinerOutputParameterfvNV))"\n" -"\t"STUB_ASM_CODE("679")"\n" +"\t"STUB_ASM_CODE("695")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetCombinerOutputParameterivNV))"\n" -"\t"STUB_ASM_CODE("680")"\n" +"\t"STUB_ASM_CODE("696")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetFinalCombinerInputParameterfvNV))"\n" -"\t"STUB_ASM_CODE("681")"\n" +"\t"STUB_ASM_CODE("697")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetFinalCombinerInputParameterivNV))"\n" -"\t"STUB_ASM_CODE("682")"\n" +"\t"STUB_ASM_CODE("698")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ResizeBuffersMESA))"\n" -"\t"STUB_ASM_CODE("683")"\n" +"\t"STUB_ASM_CODE("699")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2dMESA))"\n" -"\t"STUB_ASM_CODE("684")"\n" +"\t"STUB_ASM_CODE("700")"\n" ".globl "GLAPI_PREFIX_STR(WindowPos2d)"\n" ".set "GLAPI_PREFIX_STR(WindowPos2d)", "GLAPI_PREFIX_STR(WindowPos2dMESA)"\n" @@ -12188,7 +12364,7 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2dMESA))"\n" ".set "GLAPI_PREFIX_STR(WindowPos2dARB)", "GLAPI_PREFIX_STR(WindowPos2dMESA)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2dvMESA))"\n" -"\t"STUB_ASM_CODE("685")"\n" +"\t"STUB_ASM_CODE("701")"\n" ".globl "GLAPI_PREFIX_STR(WindowPos2dv)"\n" ".set "GLAPI_PREFIX_STR(WindowPos2dv)", "GLAPI_PREFIX_STR(WindowPos2dvMESA)"\n" @@ -12197,7 +12373,7 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2dvMESA))"\n" ".set "GLAPI_PREFIX_STR(WindowPos2dvARB)", "GLAPI_PREFIX_STR(WindowPos2dvMESA)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2fMESA))"\n" -"\t"STUB_ASM_CODE("686")"\n" +"\t"STUB_ASM_CODE("702")"\n" ".globl "GLAPI_PREFIX_STR(WindowPos2f)"\n" ".set "GLAPI_PREFIX_STR(WindowPos2f)", "GLAPI_PREFIX_STR(WindowPos2fMESA)"\n" @@ -12206,7 +12382,7 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2fMESA))"\n" ".set "GLAPI_PREFIX_STR(WindowPos2fARB)", "GLAPI_PREFIX_STR(WindowPos2fMESA)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2fvMESA))"\n" -"\t"STUB_ASM_CODE("687")"\n" +"\t"STUB_ASM_CODE("703")"\n" ".globl "GLAPI_PREFIX_STR(WindowPos2fv)"\n" ".set "GLAPI_PREFIX_STR(WindowPos2fv)", "GLAPI_PREFIX_STR(WindowPos2fvMESA)"\n" @@ -12215,7 +12391,7 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2fvMESA))"\n" ".set "GLAPI_PREFIX_STR(WindowPos2fvARB)", "GLAPI_PREFIX_STR(WindowPos2fvMESA)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2iMESA))"\n" -"\t"STUB_ASM_CODE("688")"\n" +"\t"STUB_ASM_CODE("704")"\n" ".globl "GLAPI_PREFIX_STR(WindowPos2i)"\n" ".set "GLAPI_PREFIX_STR(WindowPos2i)", "GLAPI_PREFIX_STR(WindowPos2iMESA)"\n" @@ -12224,7 +12400,7 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2iMESA))"\n" ".set "GLAPI_PREFIX_STR(WindowPos2iARB)", "GLAPI_PREFIX_STR(WindowPos2iMESA)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2ivMESA))"\n" -"\t"STUB_ASM_CODE("689")"\n" +"\t"STUB_ASM_CODE("705")"\n" ".globl "GLAPI_PREFIX_STR(WindowPos2iv)"\n" ".set "GLAPI_PREFIX_STR(WindowPos2iv)", "GLAPI_PREFIX_STR(WindowPos2ivMESA)"\n" @@ -12233,7 +12409,7 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2ivMESA))"\n" ".set "GLAPI_PREFIX_STR(WindowPos2ivARB)", "GLAPI_PREFIX_STR(WindowPos2ivMESA)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2sMESA))"\n" -"\t"STUB_ASM_CODE("690")"\n" +"\t"STUB_ASM_CODE("706")"\n" ".globl "GLAPI_PREFIX_STR(WindowPos2s)"\n" ".set "GLAPI_PREFIX_STR(WindowPos2s)", "GLAPI_PREFIX_STR(WindowPos2sMESA)"\n" @@ -12242,7 +12418,7 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2sMESA))"\n" ".set "GLAPI_PREFIX_STR(WindowPos2sARB)", "GLAPI_PREFIX_STR(WindowPos2sMESA)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2svMESA))"\n" -"\t"STUB_ASM_CODE("691")"\n" +"\t"STUB_ASM_CODE("707")"\n" ".globl "GLAPI_PREFIX_STR(WindowPos2sv)"\n" ".set "GLAPI_PREFIX_STR(WindowPos2sv)", "GLAPI_PREFIX_STR(WindowPos2svMESA)"\n" @@ -12251,7 +12427,7 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos2svMESA))"\n" ".set "GLAPI_PREFIX_STR(WindowPos2svARB)", "GLAPI_PREFIX_STR(WindowPos2svMESA)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3dMESA))"\n" -"\t"STUB_ASM_CODE("692")"\n" +"\t"STUB_ASM_CODE("708")"\n" ".globl "GLAPI_PREFIX_STR(WindowPos3d)"\n" ".set "GLAPI_PREFIX_STR(WindowPos3d)", "GLAPI_PREFIX_STR(WindowPos3dMESA)"\n" @@ -12260,7 +12436,7 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3dMESA))"\n" ".set "GLAPI_PREFIX_STR(WindowPos3dARB)", "GLAPI_PREFIX_STR(WindowPos3dMESA)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3dvMESA))"\n" -"\t"STUB_ASM_CODE("693")"\n" +"\t"STUB_ASM_CODE("709")"\n" ".globl "GLAPI_PREFIX_STR(WindowPos3dv)"\n" ".set "GLAPI_PREFIX_STR(WindowPos3dv)", "GLAPI_PREFIX_STR(WindowPos3dvMESA)"\n" @@ -12269,7 +12445,7 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3dvMESA))"\n" ".set "GLAPI_PREFIX_STR(WindowPos3dvARB)", "GLAPI_PREFIX_STR(WindowPos3dvMESA)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3fMESA))"\n" -"\t"STUB_ASM_CODE("694")"\n" +"\t"STUB_ASM_CODE("710")"\n" ".globl "GLAPI_PREFIX_STR(WindowPos3f)"\n" ".set "GLAPI_PREFIX_STR(WindowPos3f)", "GLAPI_PREFIX_STR(WindowPos3fMESA)"\n" @@ -12278,7 +12454,7 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3fMESA))"\n" ".set "GLAPI_PREFIX_STR(WindowPos3fARB)", "GLAPI_PREFIX_STR(WindowPos3fMESA)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3fvMESA))"\n" -"\t"STUB_ASM_CODE("695")"\n" +"\t"STUB_ASM_CODE("711")"\n" ".globl "GLAPI_PREFIX_STR(WindowPos3fv)"\n" ".set "GLAPI_PREFIX_STR(WindowPos3fv)", "GLAPI_PREFIX_STR(WindowPos3fvMESA)"\n" @@ -12287,7 +12463,7 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3fvMESA))"\n" ".set "GLAPI_PREFIX_STR(WindowPos3fvARB)", "GLAPI_PREFIX_STR(WindowPos3fvMESA)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3iMESA))"\n" -"\t"STUB_ASM_CODE("696")"\n" +"\t"STUB_ASM_CODE("712")"\n" ".globl "GLAPI_PREFIX_STR(WindowPos3i)"\n" ".set "GLAPI_PREFIX_STR(WindowPos3i)", "GLAPI_PREFIX_STR(WindowPos3iMESA)"\n" @@ -12296,7 +12472,7 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3iMESA))"\n" ".set "GLAPI_PREFIX_STR(WindowPos3iARB)", "GLAPI_PREFIX_STR(WindowPos3iMESA)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3ivMESA))"\n" -"\t"STUB_ASM_CODE("697")"\n" +"\t"STUB_ASM_CODE("713")"\n" ".globl "GLAPI_PREFIX_STR(WindowPos3iv)"\n" ".set "GLAPI_PREFIX_STR(WindowPos3iv)", "GLAPI_PREFIX_STR(WindowPos3ivMESA)"\n" @@ -12305,7 +12481,7 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3ivMESA))"\n" ".set "GLAPI_PREFIX_STR(WindowPos3ivARB)", "GLAPI_PREFIX_STR(WindowPos3ivMESA)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3sMESA))"\n" -"\t"STUB_ASM_CODE("698")"\n" +"\t"STUB_ASM_CODE("714")"\n" ".globl "GLAPI_PREFIX_STR(WindowPos3s)"\n" ".set "GLAPI_PREFIX_STR(WindowPos3s)", "GLAPI_PREFIX_STR(WindowPos3sMESA)"\n" @@ -12314,7 +12490,7 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3sMESA))"\n" ".set "GLAPI_PREFIX_STR(WindowPos3sARB)", "GLAPI_PREFIX_STR(WindowPos3sMESA)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3svMESA))"\n" -"\t"STUB_ASM_CODE("699")"\n" +"\t"STUB_ASM_CODE("715")"\n" ".globl "GLAPI_PREFIX_STR(WindowPos3sv)"\n" ".set "GLAPI_PREFIX_STR(WindowPos3sv)", "GLAPI_PREFIX_STR(WindowPos3svMESA)"\n" @@ -12323,70 +12499,70 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos3svMESA))"\n" ".set "GLAPI_PREFIX_STR(WindowPos3svARB)", "GLAPI_PREFIX_STR(WindowPos3svMESA)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos4dMESA))"\n" -"\t"STUB_ASM_CODE("700")"\n" +"\t"STUB_ASM_CODE("716")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos4dvMESA))"\n" -"\t"STUB_ASM_CODE("701")"\n" +"\t"STUB_ASM_CODE("717")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos4fMESA))"\n" -"\t"STUB_ASM_CODE("702")"\n" +"\t"STUB_ASM_CODE("718")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos4fvMESA))"\n" -"\t"STUB_ASM_CODE("703")"\n" +"\t"STUB_ASM_CODE("719")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos4iMESA))"\n" -"\t"STUB_ASM_CODE("704")"\n" +"\t"STUB_ASM_CODE("720")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos4ivMESA))"\n" -"\t"STUB_ASM_CODE("705")"\n" +"\t"STUB_ASM_CODE("721")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos4sMESA))"\n" -"\t"STUB_ASM_CODE("706")"\n" +"\t"STUB_ASM_CODE("722")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(WindowPos4svMESA))"\n" -"\t"STUB_ASM_CODE("707")"\n" +"\t"STUB_ASM_CODE("723")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(AreProgramsResidentNV))"\n" -"\t"STUB_ASM_CODE("717")"\n" +"\t"STUB_ASM_CODE("733")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindProgramNV))"\n" -"\t"STUB_ASM_CODE("718")"\n" +"\t"STUB_ASM_CODE("734")"\n" ".globl "GLAPI_PREFIX_STR(BindProgramARB)"\n" ".set "GLAPI_PREFIX_STR(BindProgramARB)", "GLAPI_PREFIX_STR(BindProgramNV)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteProgramsNV))"\n" -"\t"STUB_ASM_CODE("719")"\n" +"\t"STUB_ASM_CODE("735")"\n" ".globl "GLAPI_PREFIX_STR(DeleteProgramsARB)"\n" ".set "GLAPI_PREFIX_STR(DeleteProgramsARB)", "GLAPI_PREFIX_STR(DeleteProgramsNV)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ExecuteProgramNV))"\n" -"\t"STUB_ASM_CODE("720")"\n" +"\t"STUB_ASM_CODE("736")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GenProgramsNV))"\n" -"\t"STUB_ASM_CODE("721")"\n" +"\t"STUB_ASM_CODE("737")"\n" ".globl "GLAPI_PREFIX_STR(GenProgramsARB)"\n" ".set "GLAPI_PREFIX_STR(GenProgramsARB)", "GLAPI_PREFIX_STR(GenProgramsNV)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetProgramParameterdvNV))"\n" -"\t"STUB_ASM_CODE("722")"\n" +"\t"STUB_ASM_CODE("738")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetProgramParameterfvNV))"\n" -"\t"STUB_ASM_CODE("723")"\n" +"\t"STUB_ASM_CODE("739")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetProgramStringNV))"\n" -"\t"STUB_ASM_CODE("724")"\n" +"\t"STUB_ASM_CODE("740")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetProgramivNV))"\n" -"\t"STUB_ASM_CODE("725")"\n" +"\t"STUB_ASM_CODE("741")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTrackMatrixivNV))"\n" -"\t"STUB_ASM_CODE("726")"\n" +"\t"STUB_ASM_CODE("742")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetVertexAttribPointervNV))"\n" -"\t"STUB_ASM_CODE("727")"\n" +"\t"STUB_ASM_CODE("743")"\n" ".globl "GLAPI_PREFIX_STR(GetVertexAttribPointerv)"\n" ".set "GLAPI_PREFIX_STR(GetVertexAttribPointerv)", "GLAPI_PREFIX_STR(GetVertexAttribPointervNV)"\n" @@ -12395,721 +12571,721 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetVertexAttribPointervNV))"\n" ".set "GLAPI_PREFIX_STR(GetVertexAttribPointervARB)", "GLAPI_PREFIX_STR(GetVertexAttribPointervNV)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetVertexAttribdvNV))"\n" -"\t"STUB_ASM_CODE("728")"\n" +"\t"STUB_ASM_CODE("744")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetVertexAttribfvNV))"\n" -"\t"STUB_ASM_CODE("729")"\n" +"\t"STUB_ASM_CODE("745")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetVertexAttribivNV))"\n" -"\t"STUB_ASM_CODE("730")"\n" +"\t"STUB_ASM_CODE("746")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsProgramNV))"\n" -"\t"STUB_ASM_CODE("731")"\n" +"\t"STUB_ASM_CODE("747")"\n" ".globl "GLAPI_PREFIX_STR(IsProgramARB)"\n" ".set "GLAPI_PREFIX_STR(IsProgramARB)", "GLAPI_PREFIX_STR(IsProgramNV)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(LoadProgramNV))"\n" -"\t"STUB_ASM_CODE("732")"\n" +"\t"STUB_ASM_CODE("748")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramParameters4dvNV))"\n" -"\t"STUB_ASM_CODE("733")"\n" +"\t"STUB_ASM_CODE("749")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramParameters4fvNV))"\n" -"\t"STUB_ASM_CODE("734")"\n" +"\t"STUB_ASM_CODE("750")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RequestResidentProgramsNV))"\n" -"\t"STUB_ASM_CODE("735")"\n" +"\t"STUB_ASM_CODE("751")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TrackMatrixNV))"\n" -"\t"STUB_ASM_CODE("736")"\n" +"\t"STUB_ASM_CODE("752")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib1dNV))"\n" -"\t"STUB_ASM_CODE("737")"\n" +"\t"STUB_ASM_CODE("753")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib1dvNV))"\n" -"\t"STUB_ASM_CODE("738")"\n" +"\t"STUB_ASM_CODE("754")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib1fNV))"\n" -"\t"STUB_ASM_CODE("739")"\n" +"\t"STUB_ASM_CODE("755")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib1fvNV))"\n" -"\t"STUB_ASM_CODE("740")"\n" +"\t"STUB_ASM_CODE("756")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib1sNV))"\n" -"\t"STUB_ASM_CODE("741")"\n" +"\t"STUB_ASM_CODE("757")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib1svNV))"\n" -"\t"STUB_ASM_CODE("742")"\n" +"\t"STUB_ASM_CODE("758")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib2dNV))"\n" -"\t"STUB_ASM_CODE("743")"\n" +"\t"STUB_ASM_CODE("759")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib2dvNV))"\n" -"\t"STUB_ASM_CODE("744")"\n" +"\t"STUB_ASM_CODE("760")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib2fNV))"\n" -"\t"STUB_ASM_CODE("745")"\n" +"\t"STUB_ASM_CODE("761")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib2fvNV))"\n" -"\t"STUB_ASM_CODE("746")"\n" +"\t"STUB_ASM_CODE("762")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib2sNV))"\n" -"\t"STUB_ASM_CODE("747")"\n" +"\t"STUB_ASM_CODE("763")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib2svNV))"\n" -"\t"STUB_ASM_CODE("748")"\n" +"\t"STUB_ASM_CODE("764")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib3dNV))"\n" -"\t"STUB_ASM_CODE("749")"\n" +"\t"STUB_ASM_CODE("765")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib3dvNV))"\n" -"\t"STUB_ASM_CODE("750")"\n" +"\t"STUB_ASM_CODE("766")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib3fNV))"\n" -"\t"STUB_ASM_CODE("751")"\n" +"\t"STUB_ASM_CODE("767")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib3fvNV))"\n" -"\t"STUB_ASM_CODE("752")"\n" +"\t"STUB_ASM_CODE("768")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib3sNV))"\n" -"\t"STUB_ASM_CODE("753")"\n" +"\t"STUB_ASM_CODE("769")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib3svNV))"\n" -"\t"STUB_ASM_CODE("754")"\n" +"\t"STUB_ASM_CODE("770")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4dNV))"\n" -"\t"STUB_ASM_CODE("755")"\n" +"\t"STUB_ASM_CODE("771")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4dvNV))"\n" -"\t"STUB_ASM_CODE("756")"\n" +"\t"STUB_ASM_CODE("772")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4fNV))"\n" -"\t"STUB_ASM_CODE("757")"\n" +"\t"STUB_ASM_CODE("773")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4fvNV))"\n" -"\t"STUB_ASM_CODE("758")"\n" +"\t"STUB_ASM_CODE("774")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4sNV))"\n" -"\t"STUB_ASM_CODE("759")"\n" +"\t"STUB_ASM_CODE("775")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4svNV))"\n" -"\t"STUB_ASM_CODE("760")"\n" +"\t"STUB_ASM_CODE("776")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4ubNV))"\n" -"\t"STUB_ASM_CODE("761")"\n" +"\t"STUB_ASM_CODE("777")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttrib4ubvNV))"\n" -"\t"STUB_ASM_CODE("762")"\n" +"\t"STUB_ASM_CODE("778")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribPointerNV))"\n" -"\t"STUB_ASM_CODE("763")"\n" +"\t"STUB_ASM_CODE("779")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs1dvNV))"\n" -"\t"STUB_ASM_CODE("764")"\n" +"\t"STUB_ASM_CODE("780")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs1fvNV))"\n" -"\t"STUB_ASM_CODE("765")"\n" +"\t"STUB_ASM_CODE("781")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs1svNV))"\n" -"\t"STUB_ASM_CODE("766")"\n" +"\t"STUB_ASM_CODE("782")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs2dvNV))"\n" -"\t"STUB_ASM_CODE("767")"\n" +"\t"STUB_ASM_CODE("783")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs2fvNV))"\n" -"\t"STUB_ASM_CODE("768")"\n" +"\t"STUB_ASM_CODE("784")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs2svNV))"\n" -"\t"STUB_ASM_CODE("769")"\n" +"\t"STUB_ASM_CODE("785")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs3dvNV))"\n" -"\t"STUB_ASM_CODE("770")"\n" +"\t"STUB_ASM_CODE("786")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs3fvNV))"\n" -"\t"STUB_ASM_CODE("771")"\n" +"\t"STUB_ASM_CODE("787")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs3svNV))"\n" -"\t"STUB_ASM_CODE("772")"\n" +"\t"STUB_ASM_CODE("788")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs4dvNV))"\n" -"\t"STUB_ASM_CODE("773")"\n" +"\t"STUB_ASM_CODE("789")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs4fvNV))"\n" -"\t"STUB_ASM_CODE("774")"\n" +"\t"STUB_ASM_CODE("790")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs4svNV))"\n" -"\t"STUB_ASM_CODE("775")"\n" +"\t"STUB_ASM_CODE("791")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribs4ubvNV))"\n" -"\t"STUB_ASM_CODE("776")"\n" +"\t"STUB_ASM_CODE("792")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTexBumpParameterfvATI))"\n" -"\t"STUB_ASM_CODE("777")"\n" +"\t"STUB_ASM_CODE("793")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTexBumpParameterivATI))"\n" -"\t"STUB_ASM_CODE("778")"\n" +"\t"STUB_ASM_CODE("794")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexBumpParameterfvATI))"\n" -"\t"STUB_ASM_CODE("779")"\n" +"\t"STUB_ASM_CODE("795")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexBumpParameterivATI))"\n" -"\t"STUB_ASM_CODE("780")"\n" +"\t"STUB_ASM_CODE("796")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(AlphaFragmentOp1ATI))"\n" -"\t"STUB_ASM_CODE("781")"\n" +"\t"STUB_ASM_CODE("797")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(AlphaFragmentOp2ATI))"\n" -"\t"STUB_ASM_CODE("782")"\n" +"\t"STUB_ASM_CODE("798")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(AlphaFragmentOp3ATI))"\n" -"\t"STUB_ASM_CODE("783")"\n" +"\t"STUB_ASM_CODE("799")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BeginFragmentShaderATI))"\n" -"\t"STUB_ASM_CODE("784")"\n" +"\t"STUB_ASM_CODE("800")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindFragmentShaderATI))"\n" -"\t"STUB_ASM_CODE("785")"\n" +"\t"STUB_ASM_CODE("801")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorFragmentOp1ATI))"\n" -"\t"STUB_ASM_CODE("786")"\n" +"\t"STUB_ASM_CODE("802")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorFragmentOp2ATI))"\n" -"\t"STUB_ASM_CODE("787")"\n" +"\t"STUB_ASM_CODE("803")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorFragmentOp3ATI))"\n" -"\t"STUB_ASM_CODE("788")"\n" +"\t"STUB_ASM_CODE("804")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteFragmentShaderATI))"\n" -"\t"STUB_ASM_CODE("789")"\n" +"\t"STUB_ASM_CODE("805")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EndFragmentShaderATI))"\n" -"\t"STUB_ASM_CODE("790")"\n" +"\t"STUB_ASM_CODE("806")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GenFragmentShadersATI))"\n" -"\t"STUB_ASM_CODE("791")"\n" +"\t"STUB_ASM_CODE("807")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PassTexCoordATI))"\n" -"\t"STUB_ASM_CODE("792")"\n" +"\t"STUB_ASM_CODE("808")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SampleMapATI))"\n" -"\t"STUB_ASM_CODE("793")"\n" +"\t"STUB_ASM_CODE("809")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(SetFragmentShaderConstantATI))"\n" -"\t"STUB_ASM_CODE("794")"\n" +"\t"STUB_ASM_CODE("810")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PointParameteriNV))"\n" -"\t"STUB_ASM_CODE("795")"\n" +"\t"STUB_ASM_CODE("811")"\n" ".globl "GLAPI_PREFIX_STR(PointParameteri)"\n" ".set "GLAPI_PREFIX_STR(PointParameteri)", "GLAPI_PREFIX_STR(PointParameteriNV)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PointParameterivNV))"\n" -"\t"STUB_ASM_CODE("796")"\n" +"\t"STUB_ASM_CODE("812")"\n" ".globl "GLAPI_PREFIX_STR(PointParameteriv)"\n" ".set "GLAPI_PREFIX_STR(PointParameteriv)", "GLAPI_PREFIX_STR(PointParameterivNV)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteVertexArrays))"\n" -"\t"STUB_ASM_CODE("799")"\n" +"\t"STUB_ASM_CODE("815")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsVertexArray))"\n" -"\t"STUB_ASM_CODE("801")"\n" +"\t"STUB_ASM_CODE("817")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetProgramNamedParameterdvNV))"\n" -"\t"STUB_ASM_CODE("802")"\n" +"\t"STUB_ASM_CODE("818")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetProgramNamedParameterfvNV))"\n" -"\t"STUB_ASM_CODE("803")"\n" +"\t"STUB_ASM_CODE("819")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramNamedParameter4dNV))"\n" -"\t"STUB_ASM_CODE("804")"\n" +"\t"STUB_ASM_CODE("820")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramNamedParameter4dvNV))"\n" -"\t"STUB_ASM_CODE("805")"\n" +"\t"STUB_ASM_CODE("821")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramNamedParameter4fNV))"\n" -"\t"STUB_ASM_CODE("806")"\n" +"\t"STUB_ASM_CODE("822")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProgramNamedParameter4fvNV))"\n" -"\t"STUB_ASM_CODE("807")"\n" +"\t"STUB_ASM_CODE("823")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PrimitiveRestartIndexNV))"\n" -"\t"STUB_ASM_CODE("808")"\n" +"\t"STUB_ASM_CODE("824")"\n" ".globl "GLAPI_PREFIX_STR(PrimitiveRestartIndex)"\n" ".set "GLAPI_PREFIX_STR(PrimitiveRestartIndex)", "GLAPI_PREFIX_STR(PrimitiveRestartIndexNV)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(PrimitiveRestartNV))"\n" -"\t"STUB_ASM_CODE("809")"\n" +"\t"STUB_ASM_CODE("825")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BlendEquationSeparate))"\n" -"\t"STUB_ASM_CODE("857")"\n" +"\t"STUB_ASM_CODE("873")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindFramebufferEXT))"\n" -"\t"STUB_ASM_CODE("858")"\n" +"\t"STUB_ASM_CODE("874")"\n" ".globl "GLAPI_PREFIX_STR(BindFramebuffer)"\n" ".set "GLAPI_PREFIX_STR(BindFramebuffer)", "GLAPI_PREFIX_STR(BindFramebufferEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindRenderbufferEXT))"\n" -"\t"STUB_ASM_CODE("859")"\n" +"\t"STUB_ASM_CODE("875")"\n" ".globl "GLAPI_PREFIX_STR(BindRenderbuffer)"\n" ".set "GLAPI_PREFIX_STR(BindRenderbuffer)", "GLAPI_PREFIX_STR(BindRenderbufferEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CheckFramebufferStatusEXT))"\n" -"\t"STUB_ASM_CODE("860")"\n" +"\t"STUB_ASM_CODE("876")"\n" ".globl "GLAPI_PREFIX_STR(CheckFramebufferStatus)"\n" ".set "GLAPI_PREFIX_STR(CheckFramebufferStatus)", "GLAPI_PREFIX_STR(CheckFramebufferStatusEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteFramebuffersEXT))"\n" -"\t"STUB_ASM_CODE("861")"\n" +"\t"STUB_ASM_CODE("877")"\n" ".globl "GLAPI_PREFIX_STR(DeleteFramebuffers)"\n" ".set "GLAPI_PREFIX_STR(DeleteFramebuffers)", "GLAPI_PREFIX_STR(DeleteFramebuffersEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DeleteRenderbuffersEXT))"\n" -"\t"STUB_ASM_CODE("862")"\n" +"\t"STUB_ASM_CODE("878")"\n" ".globl "GLAPI_PREFIX_STR(DeleteRenderbuffers)"\n" ".set "GLAPI_PREFIX_STR(DeleteRenderbuffers)", "GLAPI_PREFIX_STR(DeleteRenderbuffersEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FramebufferRenderbufferEXT))"\n" -"\t"STUB_ASM_CODE("863")"\n" +"\t"STUB_ASM_CODE("879")"\n" ".globl "GLAPI_PREFIX_STR(FramebufferRenderbuffer)"\n" ".set "GLAPI_PREFIX_STR(FramebufferRenderbuffer)", "GLAPI_PREFIX_STR(FramebufferRenderbufferEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FramebufferTexture1DEXT))"\n" -"\t"STUB_ASM_CODE("864")"\n" +"\t"STUB_ASM_CODE("880")"\n" ".globl "GLAPI_PREFIX_STR(FramebufferTexture1D)"\n" ".set "GLAPI_PREFIX_STR(FramebufferTexture1D)", "GLAPI_PREFIX_STR(FramebufferTexture1DEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FramebufferTexture2DEXT))"\n" -"\t"STUB_ASM_CODE("865")"\n" +"\t"STUB_ASM_CODE("881")"\n" ".globl "GLAPI_PREFIX_STR(FramebufferTexture2D)"\n" ".set "GLAPI_PREFIX_STR(FramebufferTexture2D)", "GLAPI_PREFIX_STR(FramebufferTexture2DEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FramebufferTexture3DEXT))"\n" -"\t"STUB_ASM_CODE("866")"\n" +"\t"STUB_ASM_CODE("882")"\n" ".globl "GLAPI_PREFIX_STR(FramebufferTexture3D)"\n" ".set "GLAPI_PREFIX_STR(FramebufferTexture3D)", "GLAPI_PREFIX_STR(FramebufferTexture3DEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GenFramebuffersEXT))"\n" -"\t"STUB_ASM_CODE("867")"\n" +"\t"STUB_ASM_CODE("883")"\n" ".globl "GLAPI_PREFIX_STR(GenFramebuffers)"\n" ".set "GLAPI_PREFIX_STR(GenFramebuffers)", "GLAPI_PREFIX_STR(GenFramebuffersEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GenRenderbuffersEXT))"\n" -"\t"STUB_ASM_CODE("868")"\n" +"\t"STUB_ASM_CODE("884")"\n" ".globl "GLAPI_PREFIX_STR(GenRenderbuffers)"\n" ".set "GLAPI_PREFIX_STR(GenRenderbuffers)", "GLAPI_PREFIX_STR(GenRenderbuffersEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GenerateMipmapEXT))"\n" -"\t"STUB_ASM_CODE("869")"\n" +"\t"STUB_ASM_CODE("885")"\n" ".globl "GLAPI_PREFIX_STR(GenerateMipmap)"\n" ".set "GLAPI_PREFIX_STR(GenerateMipmap)", "GLAPI_PREFIX_STR(GenerateMipmapEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetFramebufferAttachmentParameterivEXT))"\n" -"\t"STUB_ASM_CODE("870")"\n" +"\t"STUB_ASM_CODE("886")"\n" ".globl "GLAPI_PREFIX_STR(GetFramebufferAttachmentParameteriv)"\n" ".set "GLAPI_PREFIX_STR(GetFramebufferAttachmentParameteriv)", "GLAPI_PREFIX_STR(GetFramebufferAttachmentParameterivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetRenderbufferParameterivEXT))"\n" -"\t"STUB_ASM_CODE("871")"\n" +"\t"STUB_ASM_CODE("887")"\n" ".globl "GLAPI_PREFIX_STR(GetRenderbufferParameteriv)"\n" ".set "GLAPI_PREFIX_STR(GetRenderbufferParameteriv)", "GLAPI_PREFIX_STR(GetRenderbufferParameterivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsFramebufferEXT))"\n" -"\t"STUB_ASM_CODE("872")"\n" +"\t"STUB_ASM_CODE("888")"\n" ".globl "GLAPI_PREFIX_STR(IsFramebuffer)"\n" ".set "GLAPI_PREFIX_STR(IsFramebuffer)", "GLAPI_PREFIX_STR(IsFramebufferEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsRenderbufferEXT))"\n" -"\t"STUB_ASM_CODE("873")"\n" +"\t"STUB_ASM_CODE("889")"\n" ".globl "GLAPI_PREFIX_STR(IsRenderbuffer)"\n" ".set "GLAPI_PREFIX_STR(IsRenderbuffer)", "GLAPI_PREFIX_STR(IsRenderbufferEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(RenderbufferStorageEXT))"\n" -"\t"STUB_ASM_CODE("874")"\n" +"\t"STUB_ASM_CODE("890")"\n" ".globl "GLAPI_PREFIX_STR(RenderbufferStorage)"\n" ".set "GLAPI_PREFIX_STR(RenderbufferStorage)", "GLAPI_PREFIX_STR(RenderbufferStorageEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BlitFramebuffer))"\n" -"\t"STUB_ASM_CODE("875")"\n" +"\t"STUB_ASM_CODE("891")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindFragDataLocationEXT))"\n" -"\t"STUB_ASM_CODE("878")"\n" +"\t"STUB_ASM_CODE("894")"\n" ".globl "GLAPI_PREFIX_STR(BindFragDataLocation)"\n" ".set "GLAPI_PREFIX_STR(BindFragDataLocation)", "GLAPI_PREFIX_STR(BindFragDataLocationEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetFragDataLocationEXT))"\n" -"\t"STUB_ASM_CODE("879")"\n" +"\t"STUB_ASM_CODE("895")"\n" ".globl "GLAPI_PREFIX_STR(GetFragDataLocation)"\n" ".set "GLAPI_PREFIX_STR(GetFragDataLocation)", "GLAPI_PREFIX_STR(GetFragDataLocationEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetUniformuivEXT))"\n" -"\t"STUB_ASM_CODE("880")"\n" +"\t"STUB_ASM_CODE("896")"\n" ".globl "GLAPI_PREFIX_STR(GetUniformuiv)"\n" ".set "GLAPI_PREFIX_STR(GetUniformuiv)", "GLAPI_PREFIX_STR(GetUniformuivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetVertexAttribIivEXT))"\n" -"\t"STUB_ASM_CODE("881")"\n" +"\t"STUB_ASM_CODE("897")"\n" ".globl "GLAPI_PREFIX_STR(GetVertexAttribIiv)"\n" ".set "GLAPI_PREFIX_STR(GetVertexAttribIiv)", "GLAPI_PREFIX_STR(GetVertexAttribIivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetVertexAttribIuivEXT))"\n" -"\t"STUB_ASM_CODE("882")"\n" +"\t"STUB_ASM_CODE("898")"\n" ".globl "GLAPI_PREFIX_STR(GetVertexAttribIuiv)"\n" ".set "GLAPI_PREFIX_STR(GetVertexAttribIuiv)", "GLAPI_PREFIX_STR(GetVertexAttribIuivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform1uiEXT))"\n" -"\t"STUB_ASM_CODE("883")"\n" +"\t"STUB_ASM_CODE("899")"\n" ".globl "GLAPI_PREFIX_STR(Uniform1ui)"\n" ".set "GLAPI_PREFIX_STR(Uniform1ui)", "GLAPI_PREFIX_STR(Uniform1uiEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform1uivEXT))"\n" -"\t"STUB_ASM_CODE("884")"\n" +"\t"STUB_ASM_CODE("900")"\n" ".globl "GLAPI_PREFIX_STR(Uniform1uiv)"\n" ".set "GLAPI_PREFIX_STR(Uniform1uiv)", "GLAPI_PREFIX_STR(Uniform1uivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform2uiEXT))"\n" -"\t"STUB_ASM_CODE("885")"\n" +"\t"STUB_ASM_CODE("901")"\n" ".globl "GLAPI_PREFIX_STR(Uniform2ui)"\n" ".set "GLAPI_PREFIX_STR(Uniform2ui)", "GLAPI_PREFIX_STR(Uniform2uiEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform2uivEXT))"\n" -"\t"STUB_ASM_CODE("886")"\n" +"\t"STUB_ASM_CODE("902")"\n" ".globl "GLAPI_PREFIX_STR(Uniform2uiv)"\n" ".set "GLAPI_PREFIX_STR(Uniform2uiv)", "GLAPI_PREFIX_STR(Uniform2uivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform3uiEXT))"\n" -"\t"STUB_ASM_CODE("887")"\n" +"\t"STUB_ASM_CODE("903")"\n" ".globl "GLAPI_PREFIX_STR(Uniform3ui)"\n" ".set "GLAPI_PREFIX_STR(Uniform3ui)", "GLAPI_PREFIX_STR(Uniform3uiEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform3uivEXT))"\n" -"\t"STUB_ASM_CODE("888")"\n" +"\t"STUB_ASM_CODE("904")"\n" ".globl "GLAPI_PREFIX_STR(Uniform3uiv)"\n" ".set "GLAPI_PREFIX_STR(Uniform3uiv)", "GLAPI_PREFIX_STR(Uniform3uivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform4uiEXT))"\n" -"\t"STUB_ASM_CODE("889")"\n" +"\t"STUB_ASM_CODE("905")"\n" ".globl "GLAPI_PREFIX_STR(Uniform4ui)"\n" ".set "GLAPI_PREFIX_STR(Uniform4ui)", "GLAPI_PREFIX_STR(Uniform4uiEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(Uniform4uivEXT))"\n" -"\t"STUB_ASM_CODE("890")"\n" +"\t"STUB_ASM_CODE("906")"\n" ".globl "GLAPI_PREFIX_STR(Uniform4uiv)"\n" ".set "GLAPI_PREFIX_STR(Uniform4uiv)", "GLAPI_PREFIX_STR(Uniform4uivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI1iEXT))"\n" -"\t"STUB_ASM_CODE("891")"\n" +"\t"STUB_ASM_CODE("907")"\n" ".globl "GLAPI_PREFIX_STR(VertexAttribI1i)"\n" ".set "GLAPI_PREFIX_STR(VertexAttribI1i)", "GLAPI_PREFIX_STR(VertexAttribI1iEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI1ivEXT))"\n" -"\t"STUB_ASM_CODE("892")"\n" +"\t"STUB_ASM_CODE("908")"\n" ".globl "GLAPI_PREFIX_STR(VertexAttribI1iv)"\n" ".set "GLAPI_PREFIX_STR(VertexAttribI1iv)", "GLAPI_PREFIX_STR(VertexAttribI1ivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI1uiEXT))"\n" -"\t"STUB_ASM_CODE("893")"\n" +"\t"STUB_ASM_CODE("909")"\n" ".globl "GLAPI_PREFIX_STR(VertexAttribI1ui)"\n" ".set "GLAPI_PREFIX_STR(VertexAttribI1ui)", "GLAPI_PREFIX_STR(VertexAttribI1uiEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI1uivEXT))"\n" -"\t"STUB_ASM_CODE("894")"\n" +"\t"STUB_ASM_CODE("910")"\n" ".globl "GLAPI_PREFIX_STR(VertexAttribI1uiv)"\n" ".set "GLAPI_PREFIX_STR(VertexAttribI1uiv)", "GLAPI_PREFIX_STR(VertexAttribI1uivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI2iEXT))"\n" -"\t"STUB_ASM_CODE("895")"\n" +"\t"STUB_ASM_CODE("911")"\n" ".globl "GLAPI_PREFIX_STR(VertexAttribI2i)"\n" ".set "GLAPI_PREFIX_STR(VertexAttribI2i)", "GLAPI_PREFIX_STR(VertexAttribI2iEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI2ivEXT))"\n" -"\t"STUB_ASM_CODE("896")"\n" +"\t"STUB_ASM_CODE("912")"\n" ".globl "GLAPI_PREFIX_STR(VertexAttribI2iv)"\n" ".set "GLAPI_PREFIX_STR(VertexAttribI2iv)", "GLAPI_PREFIX_STR(VertexAttribI2ivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI2uiEXT))"\n" -"\t"STUB_ASM_CODE("897")"\n" +"\t"STUB_ASM_CODE("913")"\n" ".globl "GLAPI_PREFIX_STR(VertexAttribI2ui)"\n" ".set "GLAPI_PREFIX_STR(VertexAttribI2ui)", "GLAPI_PREFIX_STR(VertexAttribI2uiEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI2uivEXT))"\n" -"\t"STUB_ASM_CODE("898")"\n" +"\t"STUB_ASM_CODE("914")"\n" ".globl "GLAPI_PREFIX_STR(VertexAttribI2uiv)"\n" ".set "GLAPI_PREFIX_STR(VertexAttribI2uiv)", "GLAPI_PREFIX_STR(VertexAttribI2uivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI3iEXT))"\n" -"\t"STUB_ASM_CODE("899")"\n" +"\t"STUB_ASM_CODE("915")"\n" ".globl "GLAPI_PREFIX_STR(VertexAttribI3i)"\n" ".set "GLAPI_PREFIX_STR(VertexAttribI3i)", "GLAPI_PREFIX_STR(VertexAttribI3iEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI3ivEXT))"\n" -"\t"STUB_ASM_CODE("900")"\n" +"\t"STUB_ASM_CODE("916")"\n" ".globl "GLAPI_PREFIX_STR(VertexAttribI3iv)"\n" ".set "GLAPI_PREFIX_STR(VertexAttribI3iv)", "GLAPI_PREFIX_STR(VertexAttribI3ivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI3uiEXT))"\n" -"\t"STUB_ASM_CODE("901")"\n" +"\t"STUB_ASM_CODE("917")"\n" ".globl "GLAPI_PREFIX_STR(VertexAttribI3ui)"\n" ".set "GLAPI_PREFIX_STR(VertexAttribI3ui)", "GLAPI_PREFIX_STR(VertexAttribI3uiEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI3uivEXT))"\n" -"\t"STUB_ASM_CODE("902")"\n" +"\t"STUB_ASM_CODE("918")"\n" ".globl "GLAPI_PREFIX_STR(VertexAttribI3uiv)"\n" ".set "GLAPI_PREFIX_STR(VertexAttribI3uiv)", "GLAPI_PREFIX_STR(VertexAttribI3uivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI4bvEXT))"\n" -"\t"STUB_ASM_CODE("903")"\n" +"\t"STUB_ASM_CODE("919")"\n" ".globl "GLAPI_PREFIX_STR(VertexAttribI4bv)"\n" ".set "GLAPI_PREFIX_STR(VertexAttribI4bv)", "GLAPI_PREFIX_STR(VertexAttribI4bvEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI4iEXT))"\n" -"\t"STUB_ASM_CODE("904")"\n" +"\t"STUB_ASM_CODE("920")"\n" ".globl "GLAPI_PREFIX_STR(VertexAttribI4i)"\n" ".set "GLAPI_PREFIX_STR(VertexAttribI4i)", "GLAPI_PREFIX_STR(VertexAttribI4iEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI4ivEXT))"\n" -"\t"STUB_ASM_CODE("905")"\n" +"\t"STUB_ASM_CODE("921")"\n" ".globl "GLAPI_PREFIX_STR(VertexAttribI4iv)"\n" ".set "GLAPI_PREFIX_STR(VertexAttribI4iv)", "GLAPI_PREFIX_STR(VertexAttribI4ivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI4svEXT))"\n" -"\t"STUB_ASM_CODE("906")"\n" +"\t"STUB_ASM_CODE("922")"\n" ".globl "GLAPI_PREFIX_STR(VertexAttribI4sv)"\n" ".set "GLAPI_PREFIX_STR(VertexAttribI4sv)", "GLAPI_PREFIX_STR(VertexAttribI4svEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI4ubvEXT))"\n" -"\t"STUB_ASM_CODE("907")"\n" +"\t"STUB_ASM_CODE("923")"\n" ".globl "GLAPI_PREFIX_STR(VertexAttribI4ubv)"\n" ".set "GLAPI_PREFIX_STR(VertexAttribI4ubv)", "GLAPI_PREFIX_STR(VertexAttribI4ubvEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI4uiEXT))"\n" -"\t"STUB_ASM_CODE("908")"\n" +"\t"STUB_ASM_CODE("924")"\n" ".globl "GLAPI_PREFIX_STR(VertexAttribI4ui)"\n" ".set "GLAPI_PREFIX_STR(VertexAttribI4ui)", "GLAPI_PREFIX_STR(VertexAttribI4uiEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI4uivEXT))"\n" -"\t"STUB_ASM_CODE("909")"\n" +"\t"STUB_ASM_CODE("925")"\n" ".globl "GLAPI_PREFIX_STR(VertexAttribI4uiv)"\n" ".set "GLAPI_PREFIX_STR(VertexAttribI4uiv)", "GLAPI_PREFIX_STR(VertexAttribI4uivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribI4usvEXT))"\n" -"\t"STUB_ASM_CODE("910")"\n" +"\t"STUB_ASM_CODE("926")"\n" ".globl "GLAPI_PREFIX_STR(VertexAttribI4usv)"\n" ".set "GLAPI_PREFIX_STR(VertexAttribI4usv)", "GLAPI_PREFIX_STR(VertexAttribI4usvEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(VertexAttribIPointerEXT))"\n" -"\t"STUB_ASM_CODE("911")"\n" +"\t"STUB_ASM_CODE("927")"\n" ".globl "GLAPI_PREFIX_STR(VertexAttribIPointer)"\n" ".set "GLAPI_PREFIX_STR(VertexAttribIPointer)", "GLAPI_PREFIX_STR(VertexAttribIPointerEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FramebufferTextureLayerEXT))"\n" -"\t"STUB_ASM_CODE("912")"\n" +"\t"STUB_ASM_CODE("928")"\n" ".globl "GLAPI_PREFIX_STR(FramebufferTextureLayer)"\n" ".set "GLAPI_PREFIX_STR(FramebufferTextureLayer)", "GLAPI_PREFIX_STR(FramebufferTextureLayerEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorMaskIndexedEXT))"\n" -"\t"STUB_ASM_CODE("913")"\n" +"\t"STUB_ASM_CODE("929")"\n" ".globl "GLAPI_PREFIX_STR(ColorMaski)"\n" ".set "GLAPI_PREFIX_STR(ColorMaski)", "GLAPI_PREFIX_STR(ColorMaskIndexedEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(DisableIndexedEXT))"\n" -"\t"STUB_ASM_CODE("914")"\n" +"\t"STUB_ASM_CODE("930")"\n" ".globl "GLAPI_PREFIX_STR(Disablei)"\n" ".set "GLAPI_PREFIX_STR(Disablei)", "GLAPI_PREFIX_STR(DisableIndexedEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EnableIndexedEXT))"\n" -"\t"STUB_ASM_CODE("915")"\n" +"\t"STUB_ASM_CODE("931")"\n" ".globl "GLAPI_PREFIX_STR(Enablei)"\n" ".set "GLAPI_PREFIX_STR(Enablei)", "GLAPI_PREFIX_STR(EnableIndexedEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetBooleanIndexedvEXT))"\n" -"\t"STUB_ASM_CODE("916")"\n" +"\t"STUB_ASM_CODE("932")"\n" ".globl "GLAPI_PREFIX_STR(GetBooleani_v)"\n" ".set "GLAPI_PREFIX_STR(GetBooleani_v)", "GLAPI_PREFIX_STR(GetBooleanIndexedvEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetIntegerIndexedvEXT))"\n" -"\t"STUB_ASM_CODE("917")"\n" +"\t"STUB_ASM_CODE("933")"\n" ".globl "GLAPI_PREFIX_STR(GetIntegeri_v)"\n" ".set "GLAPI_PREFIX_STR(GetIntegeri_v)", "GLAPI_PREFIX_STR(GetIntegerIndexedvEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(IsEnabledIndexedEXT))"\n" -"\t"STUB_ASM_CODE("918")"\n" +"\t"STUB_ASM_CODE("934")"\n" ".globl "GLAPI_PREFIX_STR(IsEnabledi)"\n" ".set "GLAPI_PREFIX_STR(IsEnabledi)", "GLAPI_PREFIX_STR(IsEnabledIndexedEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClearColorIiEXT))"\n" -"\t"STUB_ASM_CODE("919")"\n" +"\t"STUB_ASM_CODE("935")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ClearColorIuiEXT))"\n" -"\t"STUB_ASM_CODE("920")"\n" +"\t"STUB_ASM_CODE("936")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTexParameterIivEXT))"\n" -"\t"STUB_ASM_CODE("921")"\n" +"\t"STUB_ASM_CODE("937")"\n" ".globl "GLAPI_PREFIX_STR(GetTexParameterIiv)"\n" ".set "GLAPI_PREFIX_STR(GetTexParameterIiv)", "GLAPI_PREFIX_STR(GetTexParameterIivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTexParameterIuivEXT))"\n" -"\t"STUB_ASM_CODE("922")"\n" +"\t"STUB_ASM_CODE("938")"\n" ".globl "GLAPI_PREFIX_STR(GetTexParameterIuiv)"\n" ".set "GLAPI_PREFIX_STR(GetTexParameterIuiv)", "GLAPI_PREFIX_STR(GetTexParameterIuivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexParameterIivEXT))"\n" -"\t"STUB_ASM_CODE("923")"\n" +"\t"STUB_ASM_CODE("939")"\n" ".globl "GLAPI_PREFIX_STR(TexParameterIiv)"\n" ".set "GLAPI_PREFIX_STR(TexParameterIiv)", "GLAPI_PREFIX_STR(TexParameterIivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TexParameterIuivEXT))"\n" -"\t"STUB_ASM_CODE("924")"\n" +"\t"STUB_ASM_CODE("940")"\n" ".globl "GLAPI_PREFIX_STR(TexParameterIuiv)"\n" ".set "GLAPI_PREFIX_STR(TexParameterIuiv)", "GLAPI_PREFIX_STR(TexParameterIuivEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BeginConditionalRenderNV))"\n" -"\t"STUB_ASM_CODE("925")"\n" +"\t"STUB_ASM_CODE("941")"\n" ".globl "GLAPI_PREFIX_STR(BeginConditionalRender)"\n" ".set "GLAPI_PREFIX_STR(BeginConditionalRender)", "GLAPI_PREFIX_STR(BeginConditionalRenderNV)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EndConditionalRenderNV))"\n" -"\t"STUB_ASM_CODE("926")"\n" +"\t"STUB_ASM_CODE("942")"\n" ".globl "GLAPI_PREFIX_STR(EndConditionalRender)"\n" ".set "GLAPI_PREFIX_STR(EndConditionalRender)", "GLAPI_PREFIX_STR(EndConditionalRenderNV)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BeginTransformFeedbackEXT))"\n" -"\t"STUB_ASM_CODE("927")"\n" +"\t"STUB_ASM_CODE("943")"\n" ".globl "GLAPI_PREFIX_STR(BeginTransformFeedback)"\n" ".set "GLAPI_PREFIX_STR(BeginTransformFeedback)", "GLAPI_PREFIX_STR(BeginTransformFeedbackEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindBufferBaseEXT))"\n" -"\t"STUB_ASM_CODE("928")"\n" +"\t"STUB_ASM_CODE("944")"\n" ".globl "GLAPI_PREFIX_STR(BindBufferBase)"\n" ".set "GLAPI_PREFIX_STR(BindBufferBase)", "GLAPI_PREFIX_STR(BindBufferBaseEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindBufferOffsetEXT))"\n" -"\t"STUB_ASM_CODE("929")"\n" +"\t"STUB_ASM_CODE("945")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(BindBufferRangeEXT))"\n" -"\t"STUB_ASM_CODE("930")"\n" +"\t"STUB_ASM_CODE("946")"\n" ".globl "GLAPI_PREFIX_STR(BindBufferRange)"\n" ".set "GLAPI_PREFIX_STR(BindBufferRange)", "GLAPI_PREFIX_STR(BindBufferRangeEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EndTransformFeedbackEXT))"\n" -"\t"STUB_ASM_CODE("931")"\n" +"\t"STUB_ASM_CODE("947")"\n" ".globl "GLAPI_PREFIX_STR(EndTransformFeedback)"\n" ".set "GLAPI_PREFIX_STR(EndTransformFeedback)", "GLAPI_PREFIX_STR(EndTransformFeedbackEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetTransformFeedbackVaryingEXT))"\n" -"\t"STUB_ASM_CODE("932")"\n" +"\t"STUB_ASM_CODE("948")"\n" ".globl "GLAPI_PREFIX_STR(GetTransformFeedbackVarying)"\n" ".set "GLAPI_PREFIX_STR(GetTransformFeedbackVarying)", "GLAPI_PREFIX_STR(GetTransformFeedbackVaryingEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TransformFeedbackVaryingsEXT))"\n" -"\t"STUB_ASM_CODE("933")"\n" +"\t"STUB_ASM_CODE("949")"\n" ".globl "GLAPI_PREFIX_STR(TransformFeedbackVaryings)"\n" ".set "GLAPI_PREFIX_STR(TransformFeedbackVaryings)", "GLAPI_PREFIX_STR(TransformFeedbackVaryingsEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ProvokingVertexEXT))"\n" -"\t"STUB_ASM_CODE("934")"\n" +"\t"STUB_ASM_CODE("950")"\n" ".globl "GLAPI_PREFIX_STR(ProvokingVertex)"\n" ".set "GLAPI_PREFIX_STR(ProvokingVertex)", "GLAPI_PREFIX_STR(ProvokingVertexEXT)"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(GetObjectParameterivAPPLE))"\n" -"\t"STUB_ASM_CODE("937")"\n" +"\t"STUB_ASM_CODE("953")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ObjectPurgeableAPPLE))"\n" -"\t"STUB_ASM_CODE("938")"\n" +"\t"STUB_ASM_CODE("954")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ObjectUnpurgeableAPPLE))"\n" -"\t"STUB_ASM_CODE("939")"\n" +"\t"STUB_ASM_CODE("955")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ActiveProgramEXT))"\n" -"\t"STUB_ASM_CODE("940")"\n" +"\t"STUB_ASM_CODE("956")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(CreateShaderProgramEXT))"\n" -"\t"STUB_ASM_CODE("941")"\n" +"\t"STUB_ASM_CODE("957")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(UseShaderProgramEXT))"\n" -"\t"STUB_ASM_CODE("942")"\n" +"\t"STUB_ASM_CODE("958")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(TextureBarrierNV))"\n" -"\t"STUB_ASM_CODE("943")"\n" +"\t"STUB_ASM_CODE("959")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EGLImageTargetRenderbufferStorageOES))"\n" -"\t"STUB_ASM_CODE("949")"\n" +"\t"STUB_ASM_CODE("965")"\n" STUB_ASM_ENTRY(GLAPI_PREFIX_STR(EGLImageTargetTexture2DOES))"\n" -"\t"STUB_ASM_CODE("950")"\n" +"\t"STUB_ASM_CODE("966")"\n" ); #undef MAPI_TMP_STUB_ASM_GCC_NO_HIDDEN diff --git a/src/mapi/glapi/glapi_sparc.S b/src/mapi/glapi/glapi_sparc.S index ca39b175d81..f62e1258b4e 100644 --- a/src/mapi/glapi/glapi_sparc.S +++ b/src/mapi/glapi/glapi_sparc.S @@ -767,361 +767,377 @@ gl_dispatch_functions_start: GL_STUB(glGetActiveAttribARB, 569) GL_STUB(glGetAttribLocationARB, 570) GL_STUB(glDrawBuffersARB, 571) - GL_STUB(glDrawArraysInstancedARB, 572) - GL_STUB(glDrawElementsInstancedARB, 573) - GL_STUB(glRenderbufferStorageMultisample, 574) - GL_STUB(glFramebufferTextureARB, 575) - GL_STUB(glFramebufferTextureFaceARB, 576) - GL_STUB(glProgramParameteriARB, 577) - GL_STUB(glVertexAttribDivisorARB, 578) - GL_STUB(glFlushMappedBufferRange, 579) - GL_STUB(glMapBufferRange, 580) - GL_STUB(glBindVertexArray, 581) - GL_STUB(glGenVertexArrays, 582) - GL_STUB(glCopyBufferSubData, 583) - GL_STUB(glClientWaitSync, 584) - GL_STUB(glDeleteSync, 585) - GL_STUB(glFenceSync, 586) - GL_STUB(glGetInteger64v, 587) - GL_STUB(glGetSynciv, 588) - GL_STUB(glIsSync, 589) - GL_STUB(glWaitSync, 590) - GL_STUB(glDrawElementsBaseVertex, 591) - GL_STUB(glDrawRangeElementsBaseVertex, 592) - GL_STUB(glMultiDrawElementsBaseVertex, 593) - GL_STUB(glBlendEquationSeparateiARB, 594) - GL_STUB(glBlendEquationiARB, 595) - GL_STUB(glBlendFuncSeparateiARB, 596) - GL_STUB(glBlendFunciARB, 597) - GL_STUB(glBindTransformFeedback, 598) - GL_STUB(glDeleteTransformFeedbacks, 599) - GL_STUB(glDrawTransformFeedback, 600) - GL_STUB(glGenTransformFeedbacks, 601) - GL_STUB(glIsTransformFeedback, 602) - GL_STUB(glPauseTransformFeedback, 603) - GL_STUB(glResumeTransformFeedback, 604) - GL_STUB(glClearDepthf, 605) - GL_STUB(glDepthRangef, 606) - GL_STUB(glGetShaderPrecisionFormat, 607) - GL_STUB(glReleaseShaderCompiler, 608) - GL_STUB(glShaderBinary, 609) - GL_STUB(glPolygonOffsetEXT, 610) - GL_STUB(gl_dispatch_stub_611, 611) - HIDDEN(gl_dispatch_stub_611) - GL_STUB(gl_dispatch_stub_612, 612) - HIDDEN(gl_dispatch_stub_612) - GL_STUB(gl_dispatch_stub_613, 613) - HIDDEN(gl_dispatch_stub_613) - GL_STUB(gl_dispatch_stub_614, 614) - HIDDEN(gl_dispatch_stub_614) - GL_STUB(gl_dispatch_stub_615, 615) - HIDDEN(gl_dispatch_stub_615) - GL_STUB(gl_dispatch_stub_616, 616) - HIDDEN(gl_dispatch_stub_616) - GL_STUB(gl_dispatch_stub_617, 617) - HIDDEN(gl_dispatch_stub_617) - GL_STUB(gl_dispatch_stub_618, 618) - HIDDEN(gl_dispatch_stub_618) - GL_STUB(glColorPointerEXT, 619) - GL_STUB(glEdgeFlagPointerEXT, 620) - GL_STUB(glIndexPointerEXT, 621) - GL_STUB(glNormalPointerEXT, 622) - GL_STUB(glTexCoordPointerEXT, 623) - GL_STUB(glVertexPointerEXT, 624) - GL_STUB(glPointParameterfEXT, 625) - GL_STUB(glPointParameterfvEXT, 626) - GL_STUB(glLockArraysEXT, 627) - GL_STUB(glUnlockArraysEXT, 628) - GL_STUB(glSecondaryColor3bEXT, 629) - GL_STUB(glSecondaryColor3bvEXT, 630) - GL_STUB(glSecondaryColor3dEXT, 631) - GL_STUB(glSecondaryColor3dvEXT, 632) - GL_STUB(glSecondaryColor3fEXT, 633) - GL_STUB(glSecondaryColor3fvEXT, 634) - GL_STUB(glSecondaryColor3iEXT, 635) - GL_STUB(glSecondaryColor3ivEXT, 636) - GL_STUB(glSecondaryColor3sEXT, 637) - GL_STUB(glSecondaryColor3svEXT, 638) - GL_STUB(glSecondaryColor3ubEXT, 639) - GL_STUB(glSecondaryColor3ubvEXT, 640) - GL_STUB(glSecondaryColor3uiEXT, 641) - GL_STUB(glSecondaryColor3uivEXT, 642) - GL_STUB(glSecondaryColor3usEXT, 643) - GL_STUB(glSecondaryColor3usvEXT, 644) - GL_STUB(glSecondaryColorPointerEXT, 645) - GL_STUB(glMultiDrawArraysEXT, 646) - GL_STUB(glMultiDrawElementsEXT, 647) - GL_STUB(glFogCoordPointerEXT, 648) - GL_STUB(glFogCoorddEXT, 649) - GL_STUB(glFogCoorddvEXT, 650) - GL_STUB(glFogCoordfEXT, 651) - GL_STUB(glFogCoordfvEXT, 652) - GL_STUB(gl_dispatch_stub_653, 653) - HIDDEN(gl_dispatch_stub_653) - GL_STUB(glBlendFuncSeparateEXT, 654) - GL_STUB(glFlushVertexArrayRangeNV, 655) - GL_STUB(glVertexArrayRangeNV, 656) - GL_STUB(glCombinerInputNV, 657) - GL_STUB(glCombinerOutputNV, 658) - GL_STUB(glCombinerParameterfNV, 659) - GL_STUB(glCombinerParameterfvNV, 660) - GL_STUB(glCombinerParameteriNV, 661) - GL_STUB(glCombinerParameterivNV, 662) - GL_STUB(glFinalCombinerInputNV, 663) - GL_STUB(glGetCombinerInputParameterfvNV, 664) - GL_STUB(glGetCombinerInputParameterivNV, 665) - GL_STUB(glGetCombinerOutputParameterfvNV, 666) - GL_STUB(glGetCombinerOutputParameterivNV, 667) - GL_STUB(glGetFinalCombinerInputParameterfvNV, 668) - GL_STUB(glGetFinalCombinerInputParameterivNV, 669) - GL_STUB(glResizeBuffersMESA, 670) - GL_STUB(glWindowPos2dMESA, 671) - GL_STUB(glWindowPos2dvMESA, 672) - GL_STUB(glWindowPos2fMESA, 673) - GL_STUB(glWindowPos2fvMESA, 674) - GL_STUB(glWindowPos2iMESA, 675) - GL_STUB(glWindowPos2ivMESA, 676) - GL_STUB(glWindowPos2sMESA, 677) - GL_STUB(glWindowPos2svMESA, 678) - GL_STUB(glWindowPos3dMESA, 679) - GL_STUB(glWindowPos3dvMESA, 680) - GL_STUB(glWindowPos3fMESA, 681) - GL_STUB(glWindowPos3fvMESA, 682) - GL_STUB(glWindowPos3iMESA, 683) - GL_STUB(glWindowPos3ivMESA, 684) - GL_STUB(glWindowPos3sMESA, 685) - GL_STUB(glWindowPos3svMESA, 686) - GL_STUB(glWindowPos4dMESA, 687) - GL_STUB(glWindowPos4dvMESA, 688) - GL_STUB(glWindowPos4fMESA, 689) - GL_STUB(glWindowPos4fvMESA, 690) - GL_STUB(glWindowPos4iMESA, 691) - GL_STUB(glWindowPos4ivMESA, 692) - GL_STUB(glWindowPos4sMESA, 693) - GL_STUB(glWindowPos4svMESA, 694) - GL_STUB(gl_dispatch_stub_695, 695) - HIDDEN(gl_dispatch_stub_695) - GL_STUB(gl_dispatch_stub_696, 696) - HIDDEN(gl_dispatch_stub_696) - GL_STUB(gl_dispatch_stub_697, 697) - HIDDEN(gl_dispatch_stub_697) - GL_STUB(gl_dispatch_stub_698, 698) - HIDDEN(gl_dispatch_stub_698) - GL_STUB(gl_dispatch_stub_699, 699) - HIDDEN(gl_dispatch_stub_699) - GL_STUB(gl_dispatch_stub_700, 700) - HIDDEN(gl_dispatch_stub_700) - GL_STUB(gl_dispatch_stub_701, 701) - HIDDEN(gl_dispatch_stub_701) - GL_STUB(gl_dispatch_stub_702, 702) - HIDDEN(gl_dispatch_stub_702) - GL_STUB(gl_dispatch_stub_703, 703) - HIDDEN(gl_dispatch_stub_703) - GL_STUB(glAreProgramsResidentNV, 704) - GL_STUB(glBindProgramNV, 705) - GL_STUB(glDeleteProgramsNV, 706) - GL_STUB(glExecuteProgramNV, 707) - GL_STUB(glGenProgramsNV, 708) - GL_STUB(glGetProgramParameterdvNV, 709) - GL_STUB(glGetProgramParameterfvNV, 710) - GL_STUB(glGetProgramStringNV, 711) - GL_STUB(glGetProgramivNV, 712) - GL_STUB(glGetTrackMatrixivNV, 713) - GL_STUB(glGetVertexAttribPointervNV, 714) - GL_STUB(glGetVertexAttribdvNV, 715) - GL_STUB(glGetVertexAttribfvNV, 716) - GL_STUB(glGetVertexAttribivNV, 717) - GL_STUB(glIsProgramNV, 718) - GL_STUB(glLoadProgramNV, 719) - GL_STUB(glProgramParameters4dvNV, 720) - GL_STUB(glProgramParameters4fvNV, 721) - GL_STUB(glRequestResidentProgramsNV, 722) - GL_STUB(glTrackMatrixNV, 723) - GL_STUB(glVertexAttrib1dNV, 724) - GL_STUB(glVertexAttrib1dvNV, 725) - GL_STUB(glVertexAttrib1fNV, 726) - GL_STUB(glVertexAttrib1fvNV, 727) - GL_STUB(glVertexAttrib1sNV, 728) - GL_STUB(glVertexAttrib1svNV, 729) - GL_STUB(glVertexAttrib2dNV, 730) - GL_STUB(glVertexAttrib2dvNV, 731) - GL_STUB(glVertexAttrib2fNV, 732) - GL_STUB(glVertexAttrib2fvNV, 733) - GL_STUB(glVertexAttrib2sNV, 734) - GL_STUB(glVertexAttrib2svNV, 735) - GL_STUB(glVertexAttrib3dNV, 736) - GL_STUB(glVertexAttrib3dvNV, 737) - GL_STUB(glVertexAttrib3fNV, 738) - GL_STUB(glVertexAttrib3fvNV, 739) - GL_STUB(glVertexAttrib3sNV, 740) - GL_STUB(glVertexAttrib3svNV, 741) - GL_STUB(glVertexAttrib4dNV, 742) - GL_STUB(glVertexAttrib4dvNV, 743) - GL_STUB(glVertexAttrib4fNV, 744) - GL_STUB(glVertexAttrib4fvNV, 745) - GL_STUB(glVertexAttrib4sNV, 746) - GL_STUB(glVertexAttrib4svNV, 747) - GL_STUB(glVertexAttrib4ubNV, 748) - GL_STUB(glVertexAttrib4ubvNV, 749) - GL_STUB(glVertexAttribPointerNV, 750) - GL_STUB(glVertexAttribs1dvNV, 751) - GL_STUB(glVertexAttribs1fvNV, 752) - GL_STUB(glVertexAttribs1svNV, 753) - GL_STUB(glVertexAttribs2dvNV, 754) - GL_STUB(glVertexAttribs2fvNV, 755) - GL_STUB(glVertexAttribs2svNV, 756) - GL_STUB(glVertexAttribs3dvNV, 757) - GL_STUB(glVertexAttribs3fvNV, 758) - GL_STUB(glVertexAttribs3svNV, 759) - GL_STUB(glVertexAttribs4dvNV, 760) - GL_STUB(glVertexAttribs4fvNV, 761) - GL_STUB(glVertexAttribs4svNV, 762) - GL_STUB(glVertexAttribs4ubvNV, 763) - GL_STUB(glGetTexBumpParameterfvATI, 764) - GL_STUB(glGetTexBumpParameterivATI, 765) - GL_STUB(glTexBumpParameterfvATI, 766) - GL_STUB(glTexBumpParameterivATI, 767) - GL_STUB(glAlphaFragmentOp1ATI, 768) - GL_STUB(glAlphaFragmentOp2ATI, 769) - GL_STUB(glAlphaFragmentOp3ATI, 770) - GL_STUB(glBeginFragmentShaderATI, 771) - GL_STUB(glBindFragmentShaderATI, 772) - GL_STUB(glColorFragmentOp1ATI, 773) - GL_STUB(glColorFragmentOp2ATI, 774) - GL_STUB(glColorFragmentOp3ATI, 775) - GL_STUB(glDeleteFragmentShaderATI, 776) - GL_STUB(glEndFragmentShaderATI, 777) - GL_STUB(glGenFragmentShadersATI, 778) - GL_STUB(glPassTexCoordATI, 779) - GL_STUB(glSampleMapATI, 780) - GL_STUB(glSetFragmentShaderConstantATI, 781) - GL_STUB(glPointParameteriNV, 782) - GL_STUB(glPointParameterivNV, 783) - GL_STUB(gl_dispatch_stub_784, 784) - HIDDEN(gl_dispatch_stub_784) - GL_STUB(gl_dispatch_stub_785, 785) - HIDDEN(gl_dispatch_stub_785) - GL_STUB(gl_dispatch_stub_786, 786) - HIDDEN(gl_dispatch_stub_786) - GL_STUB(gl_dispatch_stub_787, 787) - HIDDEN(gl_dispatch_stub_787) - GL_STUB(gl_dispatch_stub_788, 788) - HIDDEN(gl_dispatch_stub_788) - GL_STUB(glGetProgramNamedParameterdvNV, 789) - GL_STUB(glGetProgramNamedParameterfvNV, 790) - GL_STUB(glProgramNamedParameter4dNV, 791) - GL_STUB(glProgramNamedParameter4dvNV, 792) - GL_STUB(glProgramNamedParameter4fNV, 793) - GL_STUB(glProgramNamedParameter4fvNV, 794) - GL_STUB(glPrimitiveRestartIndexNV, 795) - GL_STUB(glPrimitiveRestartNV, 796) - GL_STUB(gl_dispatch_stub_797, 797) - HIDDEN(gl_dispatch_stub_797) - GL_STUB(gl_dispatch_stub_798, 798) - HIDDEN(gl_dispatch_stub_798) - GL_STUB(glBindFramebufferEXT, 799) - GL_STUB(glBindRenderbufferEXT, 800) - GL_STUB(glCheckFramebufferStatusEXT, 801) - GL_STUB(glDeleteFramebuffersEXT, 802) - GL_STUB(glDeleteRenderbuffersEXT, 803) - GL_STUB(glFramebufferRenderbufferEXT, 804) - GL_STUB(glFramebufferTexture1DEXT, 805) - GL_STUB(glFramebufferTexture2DEXT, 806) - GL_STUB(glFramebufferTexture3DEXT, 807) - GL_STUB(glGenFramebuffersEXT, 808) - GL_STUB(glGenRenderbuffersEXT, 809) - GL_STUB(glGenerateMipmapEXT, 810) - GL_STUB(glGetFramebufferAttachmentParameterivEXT, 811) - GL_STUB(glGetRenderbufferParameterivEXT, 812) - GL_STUB(glIsFramebufferEXT, 813) - GL_STUB(glIsRenderbufferEXT, 814) - GL_STUB(glRenderbufferStorageEXT, 815) - GL_STUB(gl_dispatch_stub_816, 816) - HIDDEN(gl_dispatch_stub_816) - GL_STUB(gl_dispatch_stub_817, 817) - HIDDEN(gl_dispatch_stub_817) - GL_STUB(gl_dispatch_stub_818, 818) - HIDDEN(gl_dispatch_stub_818) - GL_STUB(glBindFragDataLocationEXT, 819) - GL_STUB(glGetFragDataLocationEXT, 820) - GL_STUB(glGetUniformuivEXT, 821) - GL_STUB(glGetVertexAttribIivEXT, 822) - GL_STUB(glGetVertexAttribIuivEXT, 823) - GL_STUB(glUniform1uiEXT, 824) - GL_STUB(glUniform1uivEXT, 825) - GL_STUB(glUniform2uiEXT, 826) - GL_STUB(glUniform2uivEXT, 827) - GL_STUB(glUniform3uiEXT, 828) - GL_STUB(glUniform3uivEXT, 829) - GL_STUB(glUniform4uiEXT, 830) - GL_STUB(glUniform4uivEXT, 831) - GL_STUB(glVertexAttribI1iEXT, 832) - GL_STUB(glVertexAttribI1ivEXT, 833) - GL_STUB(glVertexAttribI1uiEXT, 834) - GL_STUB(glVertexAttribI1uivEXT, 835) - GL_STUB(glVertexAttribI2iEXT, 836) - GL_STUB(glVertexAttribI2ivEXT, 837) - GL_STUB(glVertexAttribI2uiEXT, 838) - GL_STUB(glVertexAttribI2uivEXT, 839) - GL_STUB(glVertexAttribI3iEXT, 840) - GL_STUB(glVertexAttribI3ivEXT, 841) - GL_STUB(glVertexAttribI3uiEXT, 842) - GL_STUB(glVertexAttribI3uivEXT, 843) - GL_STUB(glVertexAttribI4bvEXT, 844) - GL_STUB(glVertexAttribI4iEXT, 845) - GL_STUB(glVertexAttribI4ivEXT, 846) - GL_STUB(glVertexAttribI4svEXT, 847) - GL_STUB(glVertexAttribI4ubvEXT, 848) - GL_STUB(glVertexAttribI4uiEXT, 849) - GL_STUB(glVertexAttribI4uivEXT, 850) - GL_STUB(glVertexAttribI4usvEXT, 851) - GL_STUB(glVertexAttribIPointerEXT, 852) - GL_STUB(glFramebufferTextureLayerEXT, 853) - GL_STUB(glColorMaskIndexedEXT, 854) - GL_STUB(glDisableIndexedEXT, 855) - GL_STUB(glEnableIndexedEXT, 856) - GL_STUB(glGetBooleanIndexedvEXT, 857) - GL_STUB(glGetIntegerIndexedvEXT, 858) - GL_STUB(glIsEnabledIndexedEXT, 859) - GL_STUB(glClearColorIiEXT, 860) - GL_STUB(glClearColorIuiEXT, 861) - GL_STUB(glGetTexParameterIivEXT, 862) - GL_STUB(glGetTexParameterIuivEXT, 863) - GL_STUB(glTexParameterIivEXT, 864) - GL_STUB(glTexParameterIuivEXT, 865) - GL_STUB(glBeginConditionalRenderNV, 866) - GL_STUB(glEndConditionalRenderNV, 867) - GL_STUB(glBeginTransformFeedbackEXT, 868) - GL_STUB(glBindBufferBaseEXT, 869) - GL_STUB(glBindBufferOffsetEXT, 870) - GL_STUB(glBindBufferRangeEXT, 871) - GL_STUB(glEndTransformFeedbackEXT, 872) - GL_STUB(glGetTransformFeedbackVaryingEXT, 873) - GL_STUB(glTransformFeedbackVaryingsEXT, 874) - GL_STUB(glProvokingVertexEXT, 875) - GL_STUB(gl_dispatch_stub_876, 876) - HIDDEN(gl_dispatch_stub_876) - GL_STUB(gl_dispatch_stub_877, 877) - HIDDEN(gl_dispatch_stub_877) - GL_STUB(glGetObjectParameterivAPPLE, 878) - GL_STUB(glObjectPurgeableAPPLE, 879) - GL_STUB(glObjectUnpurgeableAPPLE, 880) - GL_STUB(glActiveProgramEXT, 881) - GL_STUB(glCreateShaderProgramEXT, 882) - GL_STUB(glUseShaderProgramEXT, 883) - GL_STUB(glTextureBarrierNV, 884) - GL_STUB(gl_dispatch_stub_885, 885) - HIDDEN(gl_dispatch_stub_885) - GL_STUB(gl_dispatch_stub_886, 886) - HIDDEN(gl_dispatch_stub_886) - GL_STUB(gl_dispatch_stub_887, 887) - HIDDEN(gl_dispatch_stub_887) - GL_STUB(gl_dispatch_stub_888, 888) - HIDDEN(gl_dispatch_stub_888) - GL_STUB(gl_dispatch_stub_889, 889) - HIDDEN(gl_dispatch_stub_889) - GL_STUB(glEGLImageTargetRenderbufferStorageOES, 890) - GL_STUB(glEGLImageTargetTexture2DOES, 891) + GL_STUB(glClampColorARB, 572) + GL_STUB(glDrawArraysInstancedARB, 573) + GL_STUB(glDrawElementsInstancedARB, 574) + GL_STUB(glRenderbufferStorageMultisample, 575) + GL_STUB(glFramebufferTextureARB, 576) + GL_STUB(glFramebufferTextureFaceARB, 577) + GL_STUB(glProgramParameteriARB, 578) + GL_STUB(glVertexAttribDivisorARB, 579) + GL_STUB(glFlushMappedBufferRange, 580) + GL_STUB(glMapBufferRange, 581) + GL_STUB(glTexBufferARB, 582) + GL_STUB(glBindVertexArray, 583) + GL_STUB(glGenVertexArrays, 584) + GL_STUB(glCopyBufferSubData, 585) + GL_STUB(glClientWaitSync, 586) + GL_STUB(glDeleteSync, 587) + GL_STUB(glFenceSync, 588) + GL_STUB(glGetInteger64v, 589) + GL_STUB(glGetSynciv, 590) + GL_STUB(glIsSync, 591) + GL_STUB(glWaitSync, 592) + GL_STUB(glDrawElementsBaseVertex, 593) + GL_STUB(glDrawRangeElementsBaseVertex, 594) + GL_STUB(glMultiDrawElementsBaseVertex, 595) + GL_STUB(glBlendEquationSeparateiARB, 596) + GL_STUB(glBlendEquationiARB, 597) + GL_STUB(glBlendFuncSeparateiARB, 598) + GL_STUB(glBlendFunciARB, 599) + GL_STUB(glBindSampler, 600) + GL_STUB(glDeleteSamplers, 601) + GL_STUB(glGenSamplers, 602) + GL_STUB(glGetSamplerParameterIiv, 603) + GL_STUB(glGetSamplerParameterIuiv, 604) + GL_STUB(glGetSamplerParameterfv, 605) + GL_STUB(glGetSamplerParameteriv, 606) + GL_STUB(glIsSampler, 607) + GL_STUB(glSamplerParameterIiv, 608) + GL_STUB(glSamplerParameterIuiv, 609) + GL_STUB(glSamplerParameterf, 610) + GL_STUB(glSamplerParameterfv, 611) + GL_STUB(glSamplerParameteri, 612) + GL_STUB(glSamplerParameteriv, 613) + GL_STUB(glBindTransformFeedback, 614) + GL_STUB(glDeleteTransformFeedbacks, 615) + GL_STUB(glDrawTransformFeedback, 616) + GL_STUB(glGenTransformFeedbacks, 617) + GL_STUB(glIsTransformFeedback, 618) + GL_STUB(glPauseTransformFeedback, 619) + GL_STUB(glResumeTransformFeedback, 620) + GL_STUB(glClearDepthf, 621) + GL_STUB(glDepthRangef, 622) + GL_STUB(glGetShaderPrecisionFormat, 623) + GL_STUB(glReleaseShaderCompiler, 624) + GL_STUB(glShaderBinary, 625) + GL_STUB(glPolygonOffsetEXT, 626) + GL_STUB(gl_dispatch_stub_627, 627) + HIDDEN(gl_dispatch_stub_627) + GL_STUB(gl_dispatch_stub_628, 628) + HIDDEN(gl_dispatch_stub_628) + GL_STUB(gl_dispatch_stub_629, 629) + HIDDEN(gl_dispatch_stub_629) + GL_STUB(gl_dispatch_stub_630, 630) + HIDDEN(gl_dispatch_stub_630) + GL_STUB(gl_dispatch_stub_631, 631) + HIDDEN(gl_dispatch_stub_631) + GL_STUB(gl_dispatch_stub_632, 632) + HIDDEN(gl_dispatch_stub_632) + GL_STUB(gl_dispatch_stub_633, 633) + HIDDEN(gl_dispatch_stub_633) + GL_STUB(gl_dispatch_stub_634, 634) + HIDDEN(gl_dispatch_stub_634) + GL_STUB(glColorPointerEXT, 635) + GL_STUB(glEdgeFlagPointerEXT, 636) + GL_STUB(glIndexPointerEXT, 637) + GL_STUB(glNormalPointerEXT, 638) + GL_STUB(glTexCoordPointerEXT, 639) + GL_STUB(glVertexPointerEXT, 640) + GL_STUB(glPointParameterfEXT, 641) + GL_STUB(glPointParameterfvEXT, 642) + GL_STUB(glLockArraysEXT, 643) + GL_STUB(glUnlockArraysEXT, 644) + GL_STUB(glSecondaryColor3bEXT, 645) + GL_STUB(glSecondaryColor3bvEXT, 646) + GL_STUB(glSecondaryColor3dEXT, 647) + GL_STUB(glSecondaryColor3dvEXT, 648) + GL_STUB(glSecondaryColor3fEXT, 649) + GL_STUB(glSecondaryColor3fvEXT, 650) + GL_STUB(glSecondaryColor3iEXT, 651) + GL_STUB(glSecondaryColor3ivEXT, 652) + GL_STUB(glSecondaryColor3sEXT, 653) + GL_STUB(glSecondaryColor3svEXT, 654) + GL_STUB(glSecondaryColor3ubEXT, 655) + GL_STUB(glSecondaryColor3ubvEXT, 656) + GL_STUB(glSecondaryColor3uiEXT, 657) + GL_STUB(glSecondaryColor3uivEXT, 658) + GL_STUB(glSecondaryColor3usEXT, 659) + GL_STUB(glSecondaryColor3usvEXT, 660) + GL_STUB(glSecondaryColorPointerEXT, 661) + GL_STUB(glMultiDrawArraysEXT, 662) + GL_STUB(glMultiDrawElementsEXT, 663) + GL_STUB(glFogCoordPointerEXT, 664) + GL_STUB(glFogCoorddEXT, 665) + GL_STUB(glFogCoorddvEXT, 666) + GL_STUB(glFogCoordfEXT, 667) + GL_STUB(glFogCoordfvEXT, 668) + GL_STUB(gl_dispatch_stub_669, 669) + HIDDEN(gl_dispatch_stub_669) + GL_STUB(glBlendFuncSeparateEXT, 670) + GL_STUB(glFlushVertexArrayRangeNV, 671) + GL_STUB(glVertexArrayRangeNV, 672) + GL_STUB(glCombinerInputNV, 673) + GL_STUB(glCombinerOutputNV, 674) + GL_STUB(glCombinerParameterfNV, 675) + GL_STUB(glCombinerParameterfvNV, 676) + GL_STUB(glCombinerParameteriNV, 677) + GL_STUB(glCombinerParameterivNV, 678) + GL_STUB(glFinalCombinerInputNV, 679) + GL_STUB(glGetCombinerInputParameterfvNV, 680) + GL_STUB(glGetCombinerInputParameterivNV, 681) + GL_STUB(glGetCombinerOutputParameterfvNV, 682) + GL_STUB(glGetCombinerOutputParameterivNV, 683) + GL_STUB(glGetFinalCombinerInputParameterfvNV, 684) + GL_STUB(glGetFinalCombinerInputParameterivNV, 685) + GL_STUB(glResizeBuffersMESA, 686) + GL_STUB(glWindowPos2dMESA, 687) + GL_STUB(glWindowPos2dvMESA, 688) + GL_STUB(glWindowPos2fMESA, 689) + GL_STUB(glWindowPos2fvMESA, 690) + GL_STUB(glWindowPos2iMESA, 691) + GL_STUB(glWindowPos2ivMESA, 692) + GL_STUB(glWindowPos2sMESA, 693) + GL_STUB(glWindowPos2svMESA, 694) + GL_STUB(glWindowPos3dMESA, 695) + GL_STUB(glWindowPos3dvMESA, 696) + GL_STUB(glWindowPos3fMESA, 697) + GL_STUB(glWindowPos3fvMESA, 698) + GL_STUB(glWindowPos3iMESA, 699) + GL_STUB(glWindowPos3ivMESA, 700) + GL_STUB(glWindowPos3sMESA, 701) + GL_STUB(glWindowPos3svMESA, 702) + GL_STUB(glWindowPos4dMESA, 703) + GL_STUB(glWindowPos4dvMESA, 704) + GL_STUB(glWindowPos4fMESA, 705) + GL_STUB(glWindowPos4fvMESA, 706) + GL_STUB(glWindowPos4iMESA, 707) + GL_STUB(glWindowPos4ivMESA, 708) + GL_STUB(glWindowPos4sMESA, 709) + GL_STUB(glWindowPos4svMESA, 710) + GL_STUB(gl_dispatch_stub_711, 711) + HIDDEN(gl_dispatch_stub_711) + GL_STUB(gl_dispatch_stub_712, 712) + HIDDEN(gl_dispatch_stub_712) + GL_STUB(gl_dispatch_stub_713, 713) + HIDDEN(gl_dispatch_stub_713) + GL_STUB(gl_dispatch_stub_714, 714) + HIDDEN(gl_dispatch_stub_714) + GL_STUB(gl_dispatch_stub_715, 715) + HIDDEN(gl_dispatch_stub_715) + GL_STUB(gl_dispatch_stub_716, 716) + HIDDEN(gl_dispatch_stub_716) + GL_STUB(gl_dispatch_stub_717, 717) + HIDDEN(gl_dispatch_stub_717) + GL_STUB(gl_dispatch_stub_718, 718) + HIDDEN(gl_dispatch_stub_718) + GL_STUB(gl_dispatch_stub_719, 719) + HIDDEN(gl_dispatch_stub_719) + GL_STUB(glAreProgramsResidentNV, 720) + GL_STUB(glBindProgramNV, 721) + GL_STUB(glDeleteProgramsNV, 722) + GL_STUB(glExecuteProgramNV, 723) + GL_STUB(glGenProgramsNV, 724) + GL_STUB(glGetProgramParameterdvNV, 725) + GL_STUB(glGetProgramParameterfvNV, 726) + GL_STUB(glGetProgramStringNV, 727) + GL_STUB(glGetProgramivNV, 728) + GL_STUB(glGetTrackMatrixivNV, 729) + GL_STUB(glGetVertexAttribPointervNV, 730) + GL_STUB(glGetVertexAttribdvNV, 731) + GL_STUB(glGetVertexAttribfvNV, 732) + GL_STUB(glGetVertexAttribivNV, 733) + GL_STUB(glIsProgramNV, 734) + GL_STUB(glLoadProgramNV, 735) + GL_STUB(glProgramParameters4dvNV, 736) + GL_STUB(glProgramParameters4fvNV, 737) + GL_STUB(glRequestResidentProgramsNV, 738) + GL_STUB(glTrackMatrixNV, 739) + GL_STUB(glVertexAttrib1dNV, 740) + GL_STUB(glVertexAttrib1dvNV, 741) + GL_STUB(glVertexAttrib1fNV, 742) + GL_STUB(glVertexAttrib1fvNV, 743) + GL_STUB(glVertexAttrib1sNV, 744) + GL_STUB(glVertexAttrib1svNV, 745) + GL_STUB(glVertexAttrib2dNV, 746) + GL_STUB(glVertexAttrib2dvNV, 747) + GL_STUB(glVertexAttrib2fNV, 748) + GL_STUB(glVertexAttrib2fvNV, 749) + GL_STUB(glVertexAttrib2sNV, 750) + GL_STUB(glVertexAttrib2svNV, 751) + GL_STUB(glVertexAttrib3dNV, 752) + GL_STUB(glVertexAttrib3dvNV, 753) + GL_STUB(glVertexAttrib3fNV, 754) + GL_STUB(glVertexAttrib3fvNV, 755) + GL_STUB(glVertexAttrib3sNV, 756) + GL_STUB(glVertexAttrib3svNV, 757) + GL_STUB(glVertexAttrib4dNV, 758) + GL_STUB(glVertexAttrib4dvNV, 759) + GL_STUB(glVertexAttrib4fNV, 760) + GL_STUB(glVertexAttrib4fvNV, 761) + GL_STUB(glVertexAttrib4sNV, 762) + GL_STUB(glVertexAttrib4svNV, 763) + GL_STUB(glVertexAttrib4ubNV, 764) + GL_STUB(glVertexAttrib4ubvNV, 765) + GL_STUB(glVertexAttribPointerNV, 766) + GL_STUB(glVertexAttribs1dvNV, 767) + GL_STUB(glVertexAttribs1fvNV, 768) + GL_STUB(glVertexAttribs1svNV, 769) + GL_STUB(glVertexAttribs2dvNV, 770) + GL_STUB(glVertexAttribs2fvNV, 771) + GL_STUB(glVertexAttribs2svNV, 772) + GL_STUB(glVertexAttribs3dvNV, 773) + GL_STUB(glVertexAttribs3fvNV, 774) + GL_STUB(glVertexAttribs3svNV, 775) + GL_STUB(glVertexAttribs4dvNV, 776) + GL_STUB(glVertexAttribs4fvNV, 777) + GL_STUB(glVertexAttribs4svNV, 778) + GL_STUB(glVertexAttribs4ubvNV, 779) + GL_STUB(glGetTexBumpParameterfvATI, 780) + GL_STUB(glGetTexBumpParameterivATI, 781) + GL_STUB(glTexBumpParameterfvATI, 782) + GL_STUB(glTexBumpParameterivATI, 783) + GL_STUB(glAlphaFragmentOp1ATI, 784) + GL_STUB(glAlphaFragmentOp2ATI, 785) + GL_STUB(glAlphaFragmentOp3ATI, 786) + GL_STUB(glBeginFragmentShaderATI, 787) + GL_STUB(glBindFragmentShaderATI, 788) + GL_STUB(glColorFragmentOp1ATI, 789) + GL_STUB(glColorFragmentOp2ATI, 790) + GL_STUB(glColorFragmentOp3ATI, 791) + GL_STUB(glDeleteFragmentShaderATI, 792) + GL_STUB(glEndFragmentShaderATI, 793) + GL_STUB(glGenFragmentShadersATI, 794) + GL_STUB(glPassTexCoordATI, 795) + GL_STUB(glSampleMapATI, 796) + GL_STUB(glSetFragmentShaderConstantATI, 797) + GL_STUB(glPointParameteriNV, 798) + GL_STUB(glPointParameterivNV, 799) + GL_STUB(gl_dispatch_stub_800, 800) + HIDDEN(gl_dispatch_stub_800) + GL_STUB(gl_dispatch_stub_801, 801) + HIDDEN(gl_dispatch_stub_801) + GL_STUB(gl_dispatch_stub_802, 802) + HIDDEN(gl_dispatch_stub_802) + GL_STUB(gl_dispatch_stub_803, 803) + HIDDEN(gl_dispatch_stub_803) + GL_STUB(gl_dispatch_stub_804, 804) + HIDDEN(gl_dispatch_stub_804) + GL_STUB(glGetProgramNamedParameterdvNV, 805) + GL_STUB(glGetProgramNamedParameterfvNV, 806) + GL_STUB(glProgramNamedParameter4dNV, 807) + GL_STUB(glProgramNamedParameter4dvNV, 808) + GL_STUB(glProgramNamedParameter4fNV, 809) + GL_STUB(glProgramNamedParameter4fvNV, 810) + GL_STUB(glPrimitiveRestartIndexNV, 811) + GL_STUB(glPrimitiveRestartNV, 812) + GL_STUB(gl_dispatch_stub_813, 813) + HIDDEN(gl_dispatch_stub_813) + GL_STUB(gl_dispatch_stub_814, 814) + HIDDEN(gl_dispatch_stub_814) + GL_STUB(glBindFramebufferEXT, 815) + GL_STUB(glBindRenderbufferEXT, 816) + GL_STUB(glCheckFramebufferStatusEXT, 817) + GL_STUB(glDeleteFramebuffersEXT, 818) + GL_STUB(glDeleteRenderbuffersEXT, 819) + GL_STUB(glFramebufferRenderbufferEXT, 820) + GL_STUB(glFramebufferTexture1DEXT, 821) + GL_STUB(glFramebufferTexture2DEXT, 822) + GL_STUB(glFramebufferTexture3DEXT, 823) + GL_STUB(glGenFramebuffersEXT, 824) + GL_STUB(glGenRenderbuffersEXT, 825) + GL_STUB(glGenerateMipmapEXT, 826) + GL_STUB(glGetFramebufferAttachmentParameterivEXT, 827) + GL_STUB(glGetRenderbufferParameterivEXT, 828) + GL_STUB(glIsFramebufferEXT, 829) + GL_STUB(glIsRenderbufferEXT, 830) + GL_STUB(glRenderbufferStorageEXT, 831) + GL_STUB(gl_dispatch_stub_832, 832) + HIDDEN(gl_dispatch_stub_832) + GL_STUB(gl_dispatch_stub_833, 833) + HIDDEN(gl_dispatch_stub_833) + GL_STUB(gl_dispatch_stub_834, 834) + HIDDEN(gl_dispatch_stub_834) + GL_STUB(glBindFragDataLocationEXT, 835) + GL_STUB(glGetFragDataLocationEXT, 836) + GL_STUB(glGetUniformuivEXT, 837) + GL_STUB(glGetVertexAttribIivEXT, 838) + GL_STUB(glGetVertexAttribIuivEXT, 839) + GL_STUB(glUniform1uiEXT, 840) + GL_STUB(glUniform1uivEXT, 841) + GL_STUB(glUniform2uiEXT, 842) + GL_STUB(glUniform2uivEXT, 843) + GL_STUB(glUniform3uiEXT, 844) + GL_STUB(glUniform3uivEXT, 845) + GL_STUB(glUniform4uiEXT, 846) + GL_STUB(glUniform4uivEXT, 847) + GL_STUB(glVertexAttribI1iEXT, 848) + GL_STUB(glVertexAttribI1ivEXT, 849) + GL_STUB(glVertexAttribI1uiEXT, 850) + GL_STUB(glVertexAttribI1uivEXT, 851) + GL_STUB(glVertexAttribI2iEXT, 852) + GL_STUB(glVertexAttribI2ivEXT, 853) + GL_STUB(glVertexAttribI2uiEXT, 854) + GL_STUB(glVertexAttribI2uivEXT, 855) + GL_STUB(glVertexAttribI3iEXT, 856) + GL_STUB(glVertexAttribI3ivEXT, 857) + GL_STUB(glVertexAttribI3uiEXT, 858) + GL_STUB(glVertexAttribI3uivEXT, 859) + GL_STUB(glVertexAttribI4bvEXT, 860) + GL_STUB(glVertexAttribI4iEXT, 861) + GL_STUB(glVertexAttribI4ivEXT, 862) + GL_STUB(glVertexAttribI4svEXT, 863) + GL_STUB(glVertexAttribI4ubvEXT, 864) + GL_STUB(glVertexAttribI4uiEXT, 865) + GL_STUB(glVertexAttribI4uivEXT, 866) + GL_STUB(glVertexAttribI4usvEXT, 867) + GL_STUB(glVertexAttribIPointerEXT, 868) + GL_STUB(glFramebufferTextureLayerEXT, 869) + GL_STUB(glColorMaskIndexedEXT, 870) + GL_STUB(glDisableIndexedEXT, 871) + GL_STUB(glEnableIndexedEXT, 872) + GL_STUB(glGetBooleanIndexedvEXT, 873) + GL_STUB(glGetIntegerIndexedvEXT, 874) + GL_STUB(glIsEnabledIndexedEXT, 875) + GL_STUB(glClearColorIiEXT, 876) + GL_STUB(glClearColorIuiEXT, 877) + GL_STUB(glGetTexParameterIivEXT, 878) + GL_STUB(glGetTexParameterIuivEXT, 879) + GL_STUB(glTexParameterIivEXT, 880) + GL_STUB(glTexParameterIuivEXT, 881) + GL_STUB(glBeginConditionalRenderNV, 882) + GL_STUB(glEndConditionalRenderNV, 883) + GL_STUB(glBeginTransformFeedbackEXT, 884) + GL_STUB(glBindBufferBaseEXT, 885) + GL_STUB(glBindBufferOffsetEXT, 886) + GL_STUB(glBindBufferRangeEXT, 887) + GL_STUB(glEndTransformFeedbackEXT, 888) + GL_STUB(glGetTransformFeedbackVaryingEXT, 889) + GL_STUB(glTransformFeedbackVaryingsEXT, 890) + GL_STUB(glProvokingVertexEXT, 891) + GL_STUB(gl_dispatch_stub_892, 892) + HIDDEN(gl_dispatch_stub_892) + GL_STUB(gl_dispatch_stub_893, 893) + HIDDEN(gl_dispatch_stub_893) + GL_STUB(glGetObjectParameterivAPPLE, 894) + GL_STUB(glObjectPurgeableAPPLE, 895) + GL_STUB(glObjectUnpurgeableAPPLE, 896) + GL_STUB(glActiveProgramEXT, 897) + GL_STUB(glCreateShaderProgramEXT, 898) + GL_STUB(glUseShaderProgramEXT, 899) + GL_STUB(glTextureBarrierNV, 900) + GL_STUB(gl_dispatch_stub_901, 901) + HIDDEN(gl_dispatch_stub_901) + GL_STUB(gl_dispatch_stub_902, 902) + HIDDEN(gl_dispatch_stub_902) + GL_STUB(gl_dispatch_stub_903, 903) + HIDDEN(gl_dispatch_stub_903) + GL_STUB(gl_dispatch_stub_904, 904) + HIDDEN(gl_dispatch_stub_904) + GL_STUB(gl_dispatch_stub_905, 905) + HIDDEN(gl_dispatch_stub_905) + GL_STUB(glEGLImageTargetRenderbufferStorageOES, 906) + GL_STUB(glEGLImageTargetTexture2DOES, 907) GL_STUB_ALIAS(glArrayElementEXT, glArrayElement) GL_STUB_ALIAS(glBindTextureEXT, glBindTexture) GL_STUB_ALIAS(glDrawArraysEXT, glDrawArrays) diff --git a/src/mapi/glapi/glapi_x86-64.S b/src/mapi/glapi/glapi_x86-64.S index 2dec611c5df..9b81f52d763 100644 --- a/src/mapi/glapi/glapi_x86-64.S +++ b/src/mapi/glapi/glapi_x86-64.S @@ -21536,12 +21536,49 @@ GL_PREFIX(DrawBuffersARB): .size GL_PREFIX(DrawBuffersARB), .-GL_PREFIX(DrawBuffersARB) .p2align 4,,15 + .globl GL_PREFIX(ClampColorARB) + .type GL_PREFIX(ClampColorARB), @function +GL_PREFIX(ClampColorARB): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 4576(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 4576(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 4576(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 4576(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(ClampColorARB), .-GL_PREFIX(ClampColorARB) + + .p2align 4,,15 .globl GL_PREFIX(DrawArraysInstancedARB) .type GL_PREFIX(DrawArraysInstancedARB), @function GL_PREFIX(DrawArraysInstancedARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4576(%rax), %r11 + movq 4584(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21555,13 +21592,13 @@ GL_PREFIX(DrawArraysInstancedARB): popq %rdx popq %rsi popq %rdi - movq 4576(%rax), %r11 + movq 4584(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4576(%rax), %r11 + movq 4584(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21575,7 +21612,7 @@ GL_PREFIX(DrawArraysInstancedARB): popq %rdx popq %rsi popq %rdi - movq 4576(%rax), %r11 + movq 4584(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DrawArraysInstancedARB), .-GL_PREFIX(DrawArraysInstancedARB) @@ -21586,7 +21623,7 @@ GL_PREFIX(DrawArraysInstancedARB): GL_PREFIX(DrawElementsInstancedARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4584(%rax), %r11 + movq 4592(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21600,13 +21637,13 @@ GL_PREFIX(DrawElementsInstancedARB): popq %rdx popq %rsi popq %rdi - movq 4584(%rax), %r11 + movq 4592(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4584(%rax), %r11 + movq 4592(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21620,7 +21657,7 @@ GL_PREFIX(DrawElementsInstancedARB): popq %rdx popq %rsi popq %rdi - movq 4584(%rax), %r11 + movq 4592(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DrawElementsInstancedARB), .-GL_PREFIX(DrawElementsInstancedARB) @@ -21631,7 +21668,7 @@ GL_PREFIX(DrawElementsInstancedARB): GL_PREFIX(RenderbufferStorageMultisample): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4592(%rax), %r11 + movq 4600(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21645,13 +21682,13 @@ GL_PREFIX(RenderbufferStorageMultisample): popq %rdx popq %rsi popq %rdi - movq 4592(%rax), %r11 + movq 4600(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4592(%rax), %r11 + movq 4600(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21665,7 +21702,7 @@ GL_PREFIX(RenderbufferStorageMultisample): popq %rdx popq %rsi popq %rdi - movq 4592(%rax), %r11 + movq 4600(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(RenderbufferStorageMultisample), .-GL_PREFIX(RenderbufferStorageMultisample) @@ -21676,7 +21713,7 @@ GL_PREFIX(RenderbufferStorageMultisample): GL_PREFIX(FramebufferTextureARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4600(%rax), %r11 + movq 4608(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21690,13 +21727,13 @@ GL_PREFIX(FramebufferTextureARB): popq %rdx popq %rsi popq %rdi - movq 4600(%rax), %r11 + movq 4608(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4600(%rax), %r11 + movq 4608(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21710,7 +21747,7 @@ GL_PREFIX(FramebufferTextureARB): popq %rdx popq %rsi popq %rdi - movq 4600(%rax), %r11 + movq 4608(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FramebufferTextureARB), .-GL_PREFIX(FramebufferTextureARB) @@ -21721,7 +21758,7 @@ GL_PREFIX(FramebufferTextureARB): GL_PREFIX(FramebufferTextureFaceARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4608(%rax), %r11 + movq 4616(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21735,13 +21772,13 @@ GL_PREFIX(FramebufferTextureFaceARB): popq %rdx popq %rsi popq %rdi - movq 4608(%rax), %r11 + movq 4616(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4608(%rax), %r11 + movq 4616(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21755,7 +21792,7 @@ GL_PREFIX(FramebufferTextureFaceARB): popq %rdx popq %rsi popq %rdi - movq 4608(%rax), %r11 + movq 4616(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FramebufferTextureFaceARB), .-GL_PREFIX(FramebufferTextureFaceARB) @@ -21766,7 +21803,7 @@ GL_PREFIX(FramebufferTextureFaceARB): GL_PREFIX(ProgramParameteriARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4616(%rax), %r11 + movq 4624(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21776,13 +21813,13 @@ GL_PREFIX(ProgramParameteriARB): popq %rdx popq %rsi popq %rdi - movq 4616(%rax), %r11 + movq 4624(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4616(%rax), %r11 + movq 4624(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21792,7 +21829,7 @@ GL_PREFIX(ProgramParameteriARB): popq %rdx popq %rsi popq %rdi - movq 4616(%rax), %r11 + movq 4624(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramParameteriARB), .-GL_PREFIX(ProgramParameteriARB) @@ -21803,7 +21840,7 @@ GL_PREFIX(ProgramParameteriARB): GL_PREFIX(VertexAttribDivisorARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4624(%rax), %r11 + movq 4632(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21813,13 +21850,13 @@ GL_PREFIX(VertexAttribDivisorARB): popq %rbp popq %rsi popq %rdi - movq 4624(%rax), %r11 + movq 4632(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4624(%rax), %r11 + movq 4632(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21829,7 +21866,7 @@ GL_PREFIX(VertexAttribDivisorARB): popq %rbp popq %rsi popq %rdi - movq 4624(%rax), %r11 + movq 4632(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribDivisorARB), .-GL_PREFIX(VertexAttribDivisorARB) @@ -21840,7 +21877,7 @@ GL_PREFIX(VertexAttribDivisorARB): GL_PREFIX(FlushMappedBufferRange): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4632(%rax), %r11 + movq 4640(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21850,13 +21887,13 @@ GL_PREFIX(FlushMappedBufferRange): popq %rdx popq %rsi popq %rdi - movq 4632(%rax), %r11 + movq 4640(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4632(%rax), %r11 + movq 4640(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21866,7 +21903,7 @@ GL_PREFIX(FlushMappedBufferRange): popq %rdx popq %rsi popq %rdi - movq 4632(%rax), %r11 + movq 4640(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FlushMappedBufferRange), .-GL_PREFIX(FlushMappedBufferRange) @@ -21877,7 +21914,7 @@ GL_PREFIX(FlushMappedBufferRange): GL_PREFIX(MapBufferRange): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4640(%rax), %r11 + movq 4648(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21891,13 +21928,13 @@ GL_PREFIX(MapBufferRange): popq %rdx popq %rsi popq %rdi - movq 4640(%rax), %r11 + movq 4648(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4640(%rax), %r11 + movq 4648(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21911,36 +21948,73 @@ GL_PREFIX(MapBufferRange): popq %rdx popq %rsi popq %rdi - movq 4640(%rax), %r11 + movq 4648(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(MapBufferRange), .-GL_PREFIX(MapBufferRange) .p2align 4,,15 + .globl GL_PREFIX(TexBufferARB) + .type GL_PREFIX(TexBufferARB), @function +GL_PREFIX(TexBufferARB): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 4656(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 4656(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 4656(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 4656(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(TexBufferARB), .-GL_PREFIX(TexBufferARB) + + .p2align 4,,15 .globl GL_PREFIX(BindVertexArray) .type GL_PREFIX(BindVertexArray), @function GL_PREFIX(BindVertexArray): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4648(%rax), %r11 + movq 4664(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4648(%rax), %r11 + movq 4664(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4648(%rax), %r11 + movq 4664(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4648(%rax), %r11 + movq 4664(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BindVertexArray), .-GL_PREFIX(BindVertexArray) @@ -21951,7 +22025,7 @@ GL_PREFIX(BindVertexArray): GL_PREFIX(GenVertexArrays): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4656(%rax), %r11 + movq 4672(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -21961,13 +22035,13 @@ GL_PREFIX(GenVertexArrays): popq %rbp popq %rsi popq %rdi - movq 4656(%rax), %r11 + movq 4672(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4656(%rax), %r11 + movq 4672(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -21977,7 +22051,7 @@ GL_PREFIX(GenVertexArrays): popq %rbp popq %rsi popq %rdi - movq 4656(%rax), %r11 + movq 4672(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GenVertexArrays), .-GL_PREFIX(GenVertexArrays) @@ -21988,7 +22062,7 @@ GL_PREFIX(GenVertexArrays): GL_PREFIX(CopyBufferSubData): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4664(%rax), %r11 + movq 4680(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22002,13 +22076,13 @@ GL_PREFIX(CopyBufferSubData): popq %rdx popq %rsi popq %rdi - movq 4664(%rax), %r11 + movq 4680(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4664(%rax), %r11 + movq 4680(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22022,7 +22096,7 @@ GL_PREFIX(CopyBufferSubData): popq %rdx popq %rsi popq %rdi - movq 4664(%rax), %r11 + movq 4680(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CopyBufferSubData), .-GL_PREFIX(CopyBufferSubData) @@ -22033,7 +22107,7 @@ GL_PREFIX(CopyBufferSubData): GL_PREFIX(ClientWaitSync): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4672(%rax), %r11 + movq 4688(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22043,13 +22117,13 @@ GL_PREFIX(ClientWaitSync): popq %rdx popq %rsi popq %rdi - movq 4672(%rax), %r11 + movq 4688(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4672(%rax), %r11 + movq 4688(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22059,7 +22133,7 @@ GL_PREFIX(ClientWaitSync): popq %rdx popq %rsi popq %rdi - movq 4672(%rax), %r11 + movq 4688(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ClientWaitSync), .-GL_PREFIX(ClientWaitSync) @@ -22070,25 +22144,25 @@ GL_PREFIX(ClientWaitSync): GL_PREFIX(DeleteSync): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4680(%rax), %r11 + movq 4696(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4680(%rax), %r11 + movq 4696(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4680(%rax), %r11 + movq 4696(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4680(%rax), %r11 + movq 4696(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DeleteSync), .-GL_PREFIX(DeleteSync) @@ -22099,7 +22173,7 @@ GL_PREFIX(DeleteSync): GL_PREFIX(FenceSync): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4688(%rax), %r11 + movq 4704(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22109,13 +22183,13 @@ GL_PREFIX(FenceSync): popq %rbp popq %rsi popq %rdi - movq 4688(%rax), %r11 + movq 4704(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4688(%rax), %r11 + movq 4704(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22125,7 +22199,7 @@ GL_PREFIX(FenceSync): popq %rbp popq %rsi popq %rdi - movq 4688(%rax), %r11 + movq 4704(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FenceSync), .-GL_PREFIX(FenceSync) @@ -22136,7 +22210,7 @@ GL_PREFIX(FenceSync): GL_PREFIX(GetInteger64v): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4696(%rax), %r11 + movq 4712(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22146,13 +22220,13 @@ GL_PREFIX(GetInteger64v): popq %rbp popq %rsi popq %rdi - movq 4696(%rax), %r11 + movq 4712(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4696(%rax), %r11 + movq 4712(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22162,7 +22236,7 @@ GL_PREFIX(GetInteger64v): popq %rbp popq %rsi popq %rdi - movq 4696(%rax), %r11 + movq 4712(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetInteger64v), .-GL_PREFIX(GetInteger64v) @@ -22173,7 +22247,7 @@ GL_PREFIX(GetInteger64v): GL_PREFIX(GetSynciv): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4704(%rax), %r11 + movq 4720(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22187,13 +22261,13 @@ GL_PREFIX(GetSynciv): popq %rdx popq %rsi popq %rdi - movq 4704(%rax), %r11 + movq 4720(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4704(%rax), %r11 + movq 4720(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22207,7 +22281,7 @@ GL_PREFIX(GetSynciv): popq %rdx popq %rsi popq %rdi - movq 4704(%rax), %r11 + movq 4720(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetSynciv), .-GL_PREFIX(GetSynciv) @@ -22218,25 +22292,25 @@ GL_PREFIX(GetSynciv): GL_PREFIX(IsSync): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4712(%rax), %r11 + movq 4728(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4712(%rax), %r11 + movq 4728(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4712(%rax), %r11 + movq 4728(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4712(%rax), %r11 + movq 4728(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(IsSync), .-GL_PREFIX(IsSync) @@ -22247,7 +22321,7 @@ GL_PREFIX(IsSync): GL_PREFIX(WaitSync): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4720(%rax), %r11 + movq 4736(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22257,13 +22331,13 @@ GL_PREFIX(WaitSync): popq %rdx popq %rsi popq %rdi - movq 4720(%rax), %r11 + movq 4736(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4720(%rax), %r11 + movq 4736(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22273,7 +22347,7 @@ GL_PREFIX(WaitSync): popq %rdx popq %rsi popq %rdi - movq 4720(%rax), %r11 + movq 4736(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WaitSync), .-GL_PREFIX(WaitSync) @@ -22284,7 +22358,7 @@ GL_PREFIX(WaitSync): GL_PREFIX(DrawElementsBaseVertex): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4728(%rax), %r11 + movq 4744(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22298,13 +22372,13 @@ GL_PREFIX(DrawElementsBaseVertex): popq %rdx popq %rsi popq %rdi - movq 4728(%rax), %r11 + movq 4744(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4728(%rax), %r11 + movq 4744(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22318,7 +22392,7 @@ GL_PREFIX(DrawElementsBaseVertex): popq %rdx popq %rsi popq %rdi - movq 4728(%rax), %r11 + movq 4744(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DrawElementsBaseVertex), .-GL_PREFIX(DrawElementsBaseVertex) @@ -22329,7 +22403,7 @@ GL_PREFIX(DrawElementsBaseVertex): GL_PREFIX(DrawRangeElementsBaseVertex): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4736(%rax), %r11 + movq 4752(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22347,13 +22421,13 @@ GL_PREFIX(DrawRangeElementsBaseVertex): popq %rdx popq %rsi popq %rdi - movq 4736(%rax), %r11 + movq 4752(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4736(%rax), %r11 + movq 4752(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22371,7 +22445,7 @@ GL_PREFIX(DrawRangeElementsBaseVertex): popq %rdx popq %rsi popq %rdi - movq 4736(%rax), %r11 + movq 4752(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DrawRangeElementsBaseVertex), .-GL_PREFIX(DrawRangeElementsBaseVertex) @@ -22382,7 +22456,7 @@ GL_PREFIX(DrawRangeElementsBaseVertex): GL_PREFIX(MultiDrawElementsBaseVertex): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4744(%rax), %r11 + movq 4760(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22400,13 +22474,13 @@ GL_PREFIX(MultiDrawElementsBaseVertex): popq %rdx popq %rsi popq %rdi - movq 4744(%rax), %r11 + movq 4760(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4744(%rax), %r11 + movq 4760(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22424,7 +22498,7 @@ GL_PREFIX(MultiDrawElementsBaseVertex): popq %rdx popq %rsi popq %rdi - movq 4744(%rax), %r11 + movq 4760(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(MultiDrawElementsBaseVertex), .-GL_PREFIX(MultiDrawElementsBaseVertex) @@ -22435,7 +22509,7 @@ GL_PREFIX(MultiDrawElementsBaseVertex): GL_PREFIX(BlendEquationSeparateiARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4752(%rax), %r11 + movq 4768(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22445,13 +22519,13 @@ GL_PREFIX(BlendEquationSeparateiARB): popq %rdx popq %rsi popq %rdi - movq 4752(%rax), %r11 + movq 4768(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4752(%rax), %r11 + movq 4768(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22461,7 +22535,7 @@ GL_PREFIX(BlendEquationSeparateiARB): popq %rdx popq %rsi popq %rdi - movq 4752(%rax), %r11 + movq 4768(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BlendEquationSeparateiARB), .-GL_PREFIX(BlendEquationSeparateiARB) @@ -22472,7 +22546,7 @@ GL_PREFIX(BlendEquationSeparateiARB): GL_PREFIX(BlendEquationiARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4760(%rax), %r11 + movq 4776(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22482,13 +22556,13 @@ GL_PREFIX(BlendEquationiARB): popq %rbp popq %rsi popq %rdi - movq 4760(%rax), %r11 + movq 4776(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4760(%rax), %r11 + movq 4776(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22498,7 +22572,7 @@ GL_PREFIX(BlendEquationiARB): popq %rbp popq %rsi popq %rdi - movq 4760(%rax), %r11 + movq 4776(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BlendEquationiARB), .-GL_PREFIX(BlendEquationiARB) @@ -22509,7 +22583,7 @@ GL_PREFIX(BlendEquationiARB): GL_PREFIX(BlendFuncSeparateiARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4768(%rax), %r11 + movq 4784(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22523,13 +22597,13 @@ GL_PREFIX(BlendFuncSeparateiARB): popq %rdx popq %rsi popq %rdi - movq 4768(%rax), %r11 + movq 4784(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4768(%rax), %r11 + movq 4784(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22543,7 +22617,7 @@ GL_PREFIX(BlendFuncSeparateiARB): popq %rdx popq %rsi popq %rdi - movq 4768(%rax), %r11 + movq 4784(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BlendFuncSeparateiARB), .-GL_PREFIX(BlendFuncSeparateiARB) @@ -22554,7 +22628,7 @@ GL_PREFIX(BlendFuncSeparateiARB): GL_PREFIX(BlendFunciARB): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4776(%rax), %r11 + movq 4792(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22564,13 +22638,13 @@ GL_PREFIX(BlendFunciARB): popq %rdx popq %rsi popq %rdi - movq 4776(%rax), %r11 + movq 4792(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4776(%rax), %r11 + movq 4792(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22580,18 +22654,532 @@ GL_PREFIX(BlendFunciARB): popq %rdx popq %rsi popq %rdi - movq 4776(%rax), %r11 + movq 4792(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BlendFunciARB), .-GL_PREFIX(BlendFunciARB) .p2align 4,,15 + .globl GL_PREFIX(BindSampler) + .type GL_PREFIX(BindSampler), @function +GL_PREFIX(BindSampler): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 4800(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 4800(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 4800(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 4800(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(BindSampler), .-GL_PREFIX(BindSampler) + + .p2align 4,,15 + .globl GL_PREFIX(DeleteSamplers) + .type GL_PREFIX(DeleteSamplers), @function +GL_PREFIX(DeleteSamplers): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 4808(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 4808(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 4808(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 4808(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(DeleteSamplers), .-GL_PREFIX(DeleteSamplers) + + .p2align 4,,15 + .globl GL_PREFIX(GenSamplers) + .type GL_PREFIX(GenSamplers), @function +GL_PREFIX(GenSamplers): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 4816(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rbp + call _x86_64_get_dispatch@PLT + popq %rbp + popq %rsi + popq %rdi + movq 4816(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 4816(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rbp + call _glapi_get_dispatch + popq %rbp + popq %rsi + popq %rdi + movq 4816(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(GenSamplers), .-GL_PREFIX(GenSamplers) + + .p2align 4,,15 + .globl GL_PREFIX(GetSamplerParameterIiv) + .type GL_PREFIX(GetSamplerParameterIiv), @function +GL_PREFIX(GetSamplerParameterIiv): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 4824(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 4824(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 4824(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 4824(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(GetSamplerParameterIiv), .-GL_PREFIX(GetSamplerParameterIiv) + + .p2align 4,,15 + .globl GL_PREFIX(GetSamplerParameterIuiv) + .type GL_PREFIX(GetSamplerParameterIuiv), @function +GL_PREFIX(GetSamplerParameterIuiv): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 4832(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 4832(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 4832(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 4832(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(GetSamplerParameterIuiv), .-GL_PREFIX(GetSamplerParameterIuiv) + + .p2align 4,,15 + .globl GL_PREFIX(GetSamplerParameterfv) + .type GL_PREFIX(GetSamplerParameterfv), @function +GL_PREFIX(GetSamplerParameterfv): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 4840(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 4840(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 4840(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 4840(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(GetSamplerParameterfv), .-GL_PREFIX(GetSamplerParameterfv) + + .p2align 4,,15 + .globl GL_PREFIX(GetSamplerParameteriv) + .type GL_PREFIX(GetSamplerParameteriv), @function +GL_PREFIX(GetSamplerParameteriv): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 4848(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 4848(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 4848(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 4848(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(GetSamplerParameteriv), .-GL_PREFIX(GetSamplerParameteriv) + + .p2align 4,,15 + .globl GL_PREFIX(IsSampler) + .type GL_PREFIX(IsSampler), @function +GL_PREFIX(IsSampler): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 4856(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + call _x86_64_get_dispatch@PLT + popq %rdi + movq 4856(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 4856(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + call _glapi_get_dispatch + popq %rdi + movq 4856(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(IsSampler), .-GL_PREFIX(IsSampler) + + .p2align 4,,15 + .globl GL_PREFIX(SamplerParameterIiv) + .type GL_PREFIX(SamplerParameterIiv), @function +GL_PREFIX(SamplerParameterIiv): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 4864(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 4864(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 4864(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 4864(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(SamplerParameterIiv), .-GL_PREFIX(SamplerParameterIiv) + + .p2align 4,,15 + .globl GL_PREFIX(SamplerParameterIuiv) + .type GL_PREFIX(SamplerParameterIuiv), @function +GL_PREFIX(SamplerParameterIuiv): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 4872(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 4872(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 4872(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 4872(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(SamplerParameterIuiv), .-GL_PREFIX(SamplerParameterIuiv) + + .p2align 4,,15 + .globl GL_PREFIX(SamplerParameterf) + .type GL_PREFIX(SamplerParameterf), @function +GL_PREFIX(SamplerParameterf): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 4880(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + subq $24, %rsp + movq %rdi, (%rsp) + movq %rsi, 8(%rsp) + movq %xmm0, 16(%rsp) + call _x86_64_get_dispatch@PLT + movq 16(%rsp), %xmm0 + movq 8(%rsp), %rsi + movq (%rsp), %rdi + addq $24, %rsp + movq 4880(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 4880(%rax), %r11 + jmp *%r11 +1: + subq $24, %rsp + movq %rdi, (%rsp) + movq %rsi, 8(%rsp) + movq %xmm0, 16(%rsp) + call _glapi_get_dispatch + movq 16(%rsp), %xmm0 + movq 8(%rsp), %rsi + movq (%rsp), %rdi + addq $24, %rsp + movq 4880(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(SamplerParameterf), .-GL_PREFIX(SamplerParameterf) + + .p2align 4,,15 + .globl GL_PREFIX(SamplerParameterfv) + .type GL_PREFIX(SamplerParameterfv), @function +GL_PREFIX(SamplerParameterfv): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 4888(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 4888(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 4888(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 4888(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(SamplerParameterfv), .-GL_PREFIX(SamplerParameterfv) + + .p2align 4,,15 + .globl GL_PREFIX(SamplerParameteri) + .type GL_PREFIX(SamplerParameteri), @function +GL_PREFIX(SamplerParameteri): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 4896(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 4896(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 4896(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 4896(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(SamplerParameteri), .-GL_PREFIX(SamplerParameteri) + + .p2align 4,,15 + .globl GL_PREFIX(SamplerParameteriv) + .type GL_PREFIX(SamplerParameteriv), @function +GL_PREFIX(SamplerParameteriv): +#if defined(GLX_USE_TLS) + call _x86_64_get_dispatch@PLT + movq 4904(%rax), %r11 + jmp *%r11 +#elif defined(PTHREADS) + pushq %rdi + pushq %rsi + pushq %rdx + call _x86_64_get_dispatch@PLT + popq %rdx + popq %rsi + popq %rdi + movq 4904(%rax), %r11 + jmp *%r11 +#else + movq _glapi_Dispatch(%rip), %rax + testq %rax, %rax + je 1f + movq 4904(%rax), %r11 + jmp *%r11 +1: + pushq %rdi + pushq %rsi + pushq %rdx + call _glapi_get_dispatch + popq %rdx + popq %rsi + popq %rdi + movq 4904(%rax), %r11 + jmp *%r11 +#endif /* defined(GLX_USE_TLS) */ + .size GL_PREFIX(SamplerParameteriv), .-GL_PREFIX(SamplerParameteriv) + + .p2align 4,,15 .globl GL_PREFIX(BindTransformFeedback) .type GL_PREFIX(BindTransformFeedback), @function GL_PREFIX(BindTransformFeedback): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4784(%rax), %r11 + movq 4912(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22601,13 +23189,13 @@ GL_PREFIX(BindTransformFeedback): popq %rbp popq %rsi popq %rdi - movq 4784(%rax), %r11 + movq 4912(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4784(%rax), %r11 + movq 4912(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22617,7 +23205,7 @@ GL_PREFIX(BindTransformFeedback): popq %rbp popq %rsi popq %rdi - movq 4784(%rax), %r11 + movq 4912(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BindTransformFeedback), .-GL_PREFIX(BindTransformFeedback) @@ -22628,7 +23216,7 @@ GL_PREFIX(BindTransformFeedback): GL_PREFIX(DeleteTransformFeedbacks): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4792(%rax), %r11 + movq 4920(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22638,13 +23226,13 @@ GL_PREFIX(DeleteTransformFeedbacks): popq %rbp popq %rsi popq %rdi - movq 4792(%rax), %r11 + movq 4920(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4792(%rax), %r11 + movq 4920(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22654,7 +23242,7 @@ GL_PREFIX(DeleteTransformFeedbacks): popq %rbp popq %rsi popq %rdi - movq 4792(%rax), %r11 + movq 4920(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DeleteTransformFeedbacks), .-GL_PREFIX(DeleteTransformFeedbacks) @@ -22665,7 +23253,7 @@ GL_PREFIX(DeleteTransformFeedbacks): GL_PREFIX(DrawTransformFeedback): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4800(%rax), %r11 + movq 4928(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22675,13 +23263,13 @@ GL_PREFIX(DrawTransformFeedback): popq %rbp popq %rsi popq %rdi - movq 4800(%rax), %r11 + movq 4928(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4800(%rax), %r11 + movq 4928(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22691,7 +23279,7 @@ GL_PREFIX(DrawTransformFeedback): popq %rbp popq %rsi popq %rdi - movq 4800(%rax), %r11 + movq 4928(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DrawTransformFeedback), .-GL_PREFIX(DrawTransformFeedback) @@ -22702,7 +23290,7 @@ GL_PREFIX(DrawTransformFeedback): GL_PREFIX(GenTransformFeedbacks): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4808(%rax), %r11 + movq 4936(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22712,13 +23300,13 @@ GL_PREFIX(GenTransformFeedbacks): popq %rbp popq %rsi popq %rdi - movq 4808(%rax), %r11 + movq 4936(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4808(%rax), %r11 + movq 4936(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22728,7 +23316,7 @@ GL_PREFIX(GenTransformFeedbacks): popq %rbp popq %rsi popq %rdi - movq 4808(%rax), %r11 + movq 4936(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GenTransformFeedbacks), .-GL_PREFIX(GenTransformFeedbacks) @@ -22739,25 +23327,25 @@ GL_PREFIX(GenTransformFeedbacks): GL_PREFIX(IsTransformFeedback): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4816(%rax), %r11 + movq 4944(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4816(%rax), %r11 + movq 4944(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4816(%rax), %r11 + movq 4944(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4816(%rax), %r11 + movq 4944(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(IsTransformFeedback), .-GL_PREFIX(IsTransformFeedback) @@ -22768,25 +23356,25 @@ GL_PREFIX(IsTransformFeedback): GL_PREFIX(PauseTransformFeedback): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4824(%rax), %r11 + movq 4952(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 4824(%rax), %r11 + movq 4952(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4824(%rax), %r11 + movq 4952(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 4824(%rax), %r11 + movq 4952(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(PauseTransformFeedback), .-GL_PREFIX(PauseTransformFeedback) @@ -22797,25 +23385,25 @@ GL_PREFIX(PauseTransformFeedback): GL_PREFIX(ResumeTransformFeedback): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4832(%rax), %r11 + movq 4960(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 4832(%rax), %r11 + movq 4960(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4832(%rax), %r11 + movq 4960(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 4832(%rax), %r11 + movq 4960(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ResumeTransformFeedback), .-GL_PREFIX(ResumeTransformFeedback) @@ -22826,25 +23414,25 @@ GL_PREFIX(ResumeTransformFeedback): GL_PREFIX(ClearDepthf): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4840(%rax), %r11 + movq 4968(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4840(%rax), %r11 + movq 4968(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4840(%rax), %r11 + movq 4968(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4840(%rax), %r11 + movq 4968(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ClearDepthf), .-GL_PREFIX(ClearDepthf) @@ -22855,7 +23443,7 @@ GL_PREFIX(ClearDepthf): GL_PREFIX(DepthRangef): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4848(%rax), %r11 + movq 4976(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22865,13 +23453,13 @@ GL_PREFIX(DepthRangef): popq %rbp popq %rsi popq %rdi - movq 4848(%rax), %r11 + movq 4976(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4848(%rax), %r11 + movq 4976(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22881,7 +23469,7 @@ GL_PREFIX(DepthRangef): popq %rbp popq %rsi popq %rdi - movq 4848(%rax), %r11 + movq 4976(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DepthRangef), .-GL_PREFIX(DepthRangef) @@ -22892,7 +23480,7 @@ GL_PREFIX(DepthRangef): GL_PREFIX(GetShaderPrecisionFormat): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4856(%rax), %r11 + movq 4984(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22906,13 +23494,13 @@ GL_PREFIX(GetShaderPrecisionFormat): popq %rdx popq %rsi popq %rdi - movq 4856(%rax), %r11 + movq 4984(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4856(%rax), %r11 + movq 4984(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -22926,7 +23514,7 @@ GL_PREFIX(GetShaderPrecisionFormat): popq %rdx popq %rsi popq %rdi - movq 4856(%rax), %r11 + movq 4984(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetShaderPrecisionFormat), .-GL_PREFIX(GetShaderPrecisionFormat) @@ -22937,25 +23525,25 @@ GL_PREFIX(GetShaderPrecisionFormat): GL_PREFIX(ReleaseShaderCompiler): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4864(%rax), %r11 + movq 4992(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 4864(%rax), %r11 + movq 4992(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4864(%rax), %r11 + movq 4992(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 4864(%rax), %r11 + movq 4992(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ReleaseShaderCompiler), .-GL_PREFIX(ReleaseShaderCompiler) @@ -22966,7 +23554,7 @@ GL_PREFIX(ReleaseShaderCompiler): GL_PREFIX(ShaderBinary): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4872(%rax), %r11 + movq 5000(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -22980,13 +23568,13 @@ GL_PREFIX(ShaderBinary): popq %rdx popq %rsi popq %rdi - movq 4872(%rax), %r11 + movq 5000(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4872(%rax), %r11 + movq 5000(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23000,7 +23588,7 @@ GL_PREFIX(ShaderBinary): popq %rdx popq %rsi popq %rdi - movq 4872(%rax), %r11 + movq 5000(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ShaderBinary), .-GL_PREFIX(ShaderBinary) @@ -23011,7 +23599,7 @@ GL_PREFIX(ShaderBinary): GL_PREFIX(PolygonOffsetEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4880(%rax), %r11 + movq 5008(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -23021,13 +23609,13 @@ GL_PREFIX(PolygonOffsetEXT): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 4880(%rax), %r11 + movq 5008(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4880(%rax), %r11 + movq 5008(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -23037,19 +23625,19 @@ GL_PREFIX(PolygonOffsetEXT): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 4880(%rax), %r11 + movq 5008(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(PolygonOffsetEXT), .-GL_PREFIX(PolygonOffsetEXT) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_611) - .type GL_PREFIX(_dispatch_stub_611), @function - HIDDEN(GL_PREFIX(_dispatch_stub_611)) -GL_PREFIX(_dispatch_stub_611): + .globl GL_PREFIX(_dispatch_stub_627) + .type GL_PREFIX(_dispatch_stub_627), @function + HIDDEN(GL_PREFIX(_dispatch_stub_627)) +GL_PREFIX(_dispatch_stub_627): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4888(%rax), %r11 + movq 5016(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23059,13 +23647,13 @@ GL_PREFIX(_dispatch_stub_611): popq %rbp popq %rsi popq %rdi - movq 4888(%rax), %r11 + movq 5016(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4888(%rax), %r11 + movq 5016(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23075,19 +23663,19 @@ GL_PREFIX(_dispatch_stub_611): popq %rbp popq %rsi popq %rdi - movq 4888(%rax), %r11 + movq 5016(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_611), .-GL_PREFIX(_dispatch_stub_611) + .size GL_PREFIX(_dispatch_stub_627), .-GL_PREFIX(_dispatch_stub_627) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_612) - .type GL_PREFIX(_dispatch_stub_612), @function - HIDDEN(GL_PREFIX(_dispatch_stub_612)) -GL_PREFIX(_dispatch_stub_612): + .globl GL_PREFIX(_dispatch_stub_628) + .type GL_PREFIX(_dispatch_stub_628), @function + HIDDEN(GL_PREFIX(_dispatch_stub_628)) +GL_PREFIX(_dispatch_stub_628): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4896(%rax), %r11 + movq 5024(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23097,13 +23685,13 @@ GL_PREFIX(_dispatch_stub_612): popq %rbp popq %rsi popq %rdi - movq 4896(%rax), %r11 + movq 5024(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4896(%rax), %r11 + movq 5024(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23113,19 +23701,19 @@ GL_PREFIX(_dispatch_stub_612): popq %rbp popq %rsi popq %rdi - movq 4896(%rax), %r11 + movq 5024(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_612), .-GL_PREFIX(_dispatch_stub_612) + .size GL_PREFIX(_dispatch_stub_628), .-GL_PREFIX(_dispatch_stub_628) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_613) - .type GL_PREFIX(_dispatch_stub_613), @function - HIDDEN(GL_PREFIX(_dispatch_stub_613)) -GL_PREFIX(_dispatch_stub_613): + .globl GL_PREFIX(_dispatch_stub_629) + .type GL_PREFIX(_dispatch_stub_629), @function + HIDDEN(GL_PREFIX(_dispatch_stub_629)) +GL_PREFIX(_dispatch_stub_629): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4904(%rax), %r11 + movq 5032(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -23135,13 +23723,13 @@ GL_PREFIX(_dispatch_stub_613): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 4904(%rax), %r11 + movq 5032(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4904(%rax), %r11 + movq 5032(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -23151,19 +23739,19 @@ GL_PREFIX(_dispatch_stub_613): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 4904(%rax), %r11 + movq 5032(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_613), .-GL_PREFIX(_dispatch_stub_613) + .size GL_PREFIX(_dispatch_stub_629), .-GL_PREFIX(_dispatch_stub_629) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_614) - .type GL_PREFIX(_dispatch_stub_614), @function - HIDDEN(GL_PREFIX(_dispatch_stub_614)) -GL_PREFIX(_dispatch_stub_614): + .globl GL_PREFIX(_dispatch_stub_630) + .type GL_PREFIX(_dispatch_stub_630), @function + HIDDEN(GL_PREFIX(_dispatch_stub_630)) +GL_PREFIX(_dispatch_stub_630): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4912(%rax), %r11 + movq 5040(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23173,13 +23761,13 @@ GL_PREFIX(_dispatch_stub_614): popq %rbp popq %rsi popq %rdi - movq 4912(%rax), %r11 + movq 5040(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4912(%rax), %r11 + movq 5040(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23189,19 +23777,19 @@ GL_PREFIX(_dispatch_stub_614): popq %rbp popq %rsi popq %rdi - movq 4912(%rax), %r11 + movq 5040(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_614), .-GL_PREFIX(_dispatch_stub_614) + .size GL_PREFIX(_dispatch_stub_630), .-GL_PREFIX(_dispatch_stub_630) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_615) - .type GL_PREFIX(_dispatch_stub_615), @function - HIDDEN(GL_PREFIX(_dispatch_stub_615)) -GL_PREFIX(_dispatch_stub_615): + .globl GL_PREFIX(_dispatch_stub_631) + .type GL_PREFIX(_dispatch_stub_631), @function + HIDDEN(GL_PREFIX(_dispatch_stub_631)) +GL_PREFIX(_dispatch_stub_631): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4920(%rax), %r11 + movq 5048(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23211,13 +23799,13 @@ GL_PREFIX(_dispatch_stub_615): popq %rbp popq %rsi popq %rdi - movq 4920(%rax), %r11 + movq 5048(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4920(%rax), %r11 + movq 5048(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23227,19 +23815,19 @@ GL_PREFIX(_dispatch_stub_615): popq %rbp popq %rsi popq %rdi - movq 4920(%rax), %r11 + movq 5048(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_615), .-GL_PREFIX(_dispatch_stub_615) + .size GL_PREFIX(_dispatch_stub_631), .-GL_PREFIX(_dispatch_stub_631) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_616) - .type GL_PREFIX(_dispatch_stub_616), @function - HIDDEN(GL_PREFIX(_dispatch_stub_616)) -GL_PREFIX(_dispatch_stub_616): + .globl GL_PREFIX(_dispatch_stub_632) + .type GL_PREFIX(_dispatch_stub_632), @function + HIDDEN(GL_PREFIX(_dispatch_stub_632)) +GL_PREFIX(_dispatch_stub_632): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4928(%rax), %r11 + movq 5056(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23249,13 +23837,13 @@ GL_PREFIX(_dispatch_stub_616): popq %rbp popq %rsi popq %rdi - movq 4928(%rax), %r11 + movq 5056(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4928(%rax), %r11 + movq 5056(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23265,19 +23853,19 @@ GL_PREFIX(_dispatch_stub_616): popq %rbp popq %rsi popq %rdi - movq 4928(%rax), %r11 + movq 5056(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_616), .-GL_PREFIX(_dispatch_stub_616) + .size GL_PREFIX(_dispatch_stub_632), .-GL_PREFIX(_dispatch_stub_632) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_617) - .type GL_PREFIX(_dispatch_stub_617), @function - HIDDEN(GL_PREFIX(_dispatch_stub_617)) -GL_PREFIX(_dispatch_stub_617): + .globl GL_PREFIX(_dispatch_stub_633) + .type GL_PREFIX(_dispatch_stub_633), @function + HIDDEN(GL_PREFIX(_dispatch_stub_633)) +GL_PREFIX(_dispatch_stub_633): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4936(%rax), %r11 + movq 5064(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23287,13 +23875,13 @@ GL_PREFIX(_dispatch_stub_617): popq %rbp popq %rsi popq %rdi - movq 4936(%rax), %r11 + movq 5064(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4936(%rax), %r11 + movq 5064(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23303,40 +23891,40 @@ GL_PREFIX(_dispatch_stub_617): popq %rbp popq %rsi popq %rdi - movq 4936(%rax), %r11 + movq 5064(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_617), .-GL_PREFIX(_dispatch_stub_617) + .size GL_PREFIX(_dispatch_stub_633), .-GL_PREFIX(_dispatch_stub_633) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_618) - .type GL_PREFIX(_dispatch_stub_618), @function - HIDDEN(GL_PREFIX(_dispatch_stub_618)) -GL_PREFIX(_dispatch_stub_618): + .globl GL_PREFIX(_dispatch_stub_634) + .type GL_PREFIX(_dispatch_stub_634), @function + HIDDEN(GL_PREFIX(_dispatch_stub_634)) +GL_PREFIX(_dispatch_stub_634): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4944(%rax), %r11 + movq 5072(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 4944(%rax), %r11 + movq 5072(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4944(%rax), %r11 + movq 5072(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 4944(%rax), %r11 + movq 5072(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_618), .-GL_PREFIX(_dispatch_stub_618) + .size GL_PREFIX(_dispatch_stub_634), .-GL_PREFIX(_dispatch_stub_634) .p2align 4,,15 .globl GL_PREFIX(ColorPointerEXT) @@ -23344,7 +23932,7 @@ GL_PREFIX(_dispatch_stub_618): GL_PREFIX(ColorPointerEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4952(%rax), %r11 + movq 5080(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23358,13 +23946,13 @@ GL_PREFIX(ColorPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4952(%rax), %r11 + movq 5080(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4952(%rax), %r11 + movq 5080(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23378,7 +23966,7 @@ GL_PREFIX(ColorPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4952(%rax), %r11 + movq 5080(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ColorPointerEXT), .-GL_PREFIX(ColorPointerEXT) @@ -23389,7 +23977,7 @@ GL_PREFIX(ColorPointerEXT): GL_PREFIX(EdgeFlagPointerEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4960(%rax), %r11 + movq 5088(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23399,13 +23987,13 @@ GL_PREFIX(EdgeFlagPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4960(%rax), %r11 + movq 5088(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4960(%rax), %r11 + movq 5088(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23415,7 +24003,7 @@ GL_PREFIX(EdgeFlagPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4960(%rax), %r11 + movq 5088(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(EdgeFlagPointerEXT), .-GL_PREFIX(EdgeFlagPointerEXT) @@ -23426,7 +24014,7 @@ GL_PREFIX(EdgeFlagPointerEXT): GL_PREFIX(IndexPointerEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4968(%rax), %r11 + movq 5096(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23440,13 +24028,13 @@ GL_PREFIX(IndexPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4968(%rax), %r11 + movq 5096(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4968(%rax), %r11 + movq 5096(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23460,7 +24048,7 @@ GL_PREFIX(IndexPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4968(%rax), %r11 + movq 5096(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(IndexPointerEXT), .-GL_PREFIX(IndexPointerEXT) @@ -23471,7 +24059,7 @@ GL_PREFIX(IndexPointerEXT): GL_PREFIX(NormalPointerEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4976(%rax), %r11 + movq 5104(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23485,13 +24073,13 @@ GL_PREFIX(NormalPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4976(%rax), %r11 + movq 5104(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4976(%rax), %r11 + movq 5104(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23505,7 +24093,7 @@ GL_PREFIX(NormalPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4976(%rax), %r11 + movq 5104(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(NormalPointerEXT), .-GL_PREFIX(NormalPointerEXT) @@ -23516,7 +24104,7 @@ GL_PREFIX(NormalPointerEXT): GL_PREFIX(TexCoordPointerEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4984(%rax), %r11 + movq 5112(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23530,13 +24118,13 @@ GL_PREFIX(TexCoordPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4984(%rax), %r11 + movq 5112(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4984(%rax), %r11 + movq 5112(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23550,7 +24138,7 @@ GL_PREFIX(TexCoordPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4984(%rax), %r11 + movq 5112(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(TexCoordPointerEXT), .-GL_PREFIX(TexCoordPointerEXT) @@ -23561,7 +24149,7 @@ GL_PREFIX(TexCoordPointerEXT): GL_PREFIX(VertexPointerEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 4992(%rax), %r11 + movq 5120(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23575,13 +24163,13 @@ GL_PREFIX(VertexPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4992(%rax), %r11 + movq 5120(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 4992(%rax), %r11 + movq 5120(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23595,7 +24183,7 @@ GL_PREFIX(VertexPointerEXT): popq %rdx popq %rsi popq %rdi - movq 4992(%rax), %r11 + movq 5120(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexPointerEXT), .-GL_PREFIX(VertexPointerEXT) @@ -23606,7 +24194,7 @@ GL_PREFIX(VertexPointerEXT): GL_PREFIX(PointParameterfEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5000(%rax), %r11 + movq 5128(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -23616,13 +24204,13 @@ GL_PREFIX(PointParameterfEXT): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5000(%rax), %r11 + movq 5128(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5000(%rax), %r11 + movq 5128(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -23632,7 +24220,7 @@ GL_PREFIX(PointParameterfEXT): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5000(%rax), %r11 + movq 5128(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(PointParameterfEXT), .-GL_PREFIX(PointParameterfEXT) @@ -23643,7 +24231,7 @@ GL_PREFIX(PointParameterfEXT): GL_PREFIX(PointParameterfvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5008(%rax), %r11 + movq 5136(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23653,13 +24241,13 @@ GL_PREFIX(PointParameterfvEXT): popq %rbp popq %rsi popq %rdi - movq 5008(%rax), %r11 + movq 5136(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5008(%rax), %r11 + movq 5136(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23669,7 +24257,7 @@ GL_PREFIX(PointParameterfvEXT): popq %rbp popq %rsi popq %rdi - movq 5008(%rax), %r11 + movq 5136(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(PointParameterfvEXT), .-GL_PREFIX(PointParameterfvEXT) @@ -23680,7 +24268,7 @@ GL_PREFIX(PointParameterfvEXT): GL_PREFIX(LockArraysEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5016(%rax), %r11 + movq 5144(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23690,13 +24278,13 @@ GL_PREFIX(LockArraysEXT): popq %rbp popq %rsi popq %rdi - movq 5016(%rax), %r11 + movq 5144(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5016(%rax), %r11 + movq 5144(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23706,7 +24294,7 @@ GL_PREFIX(LockArraysEXT): popq %rbp popq %rsi popq %rdi - movq 5016(%rax), %r11 + movq 5144(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(LockArraysEXT), .-GL_PREFIX(LockArraysEXT) @@ -23717,25 +24305,25 @@ GL_PREFIX(LockArraysEXT): GL_PREFIX(UnlockArraysEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5024(%rax), %r11 + movq 5152(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 5024(%rax), %r11 + movq 5152(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5024(%rax), %r11 + movq 5152(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 5024(%rax), %r11 + movq 5152(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(UnlockArraysEXT), .-GL_PREFIX(UnlockArraysEXT) @@ -23746,7 +24334,7 @@ GL_PREFIX(UnlockArraysEXT): GL_PREFIX(SecondaryColor3bEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5032(%rax), %r11 + movq 5160(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23756,13 +24344,13 @@ GL_PREFIX(SecondaryColor3bEXT): popq %rdx popq %rsi popq %rdi - movq 5032(%rax), %r11 + movq 5160(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5032(%rax), %r11 + movq 5160(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23772,7 +24360,7 @@ GL_PREFIX(SecondaryColor3bEXT): popq %rdx popq %rsi popq %rdi - movq 5032(%rax), %r11 + movq 5160(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3bEXT), .-GL_PREFIX(SecondaryColor3bEXT) @@ -23783,25 +24371,25 @@ GL_PREFIX(SecondaryColor3bEXT): GL_PREFIX(SecondaryColor3bvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5040(%rax), %r11 + movq 5168(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5040(%rax), %r11 + movq 5168(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5040(%rax), %r11 + movq 5168(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5040(%rax), %r11 + movq 5168(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3bvEXT), .-GL_PREFIX(SecondaryColor3bvEXT) @@ -23812,7 +24400,7 @@ GL_PREFIX(SecondaryColor3bvEXT): GL_PREFIX(SecondaryColor3dEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5048(%rax), %r11 + movq 5176(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -23824,13 +24412,13 @@ GL_PREFIX(SecondaryColor3dEXT): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 5048(%rax), %r11 + movq 5176(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5048(%rax), %r11 + movq 5176(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -23842,7 +24430,7 @@ GL_PREFIX(SecondaryColor3dEXT): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 5048(%rax), %r11 + movq 5176(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3dEXT), .-GL_PREFIX(SecondaryColor3dEXT) @@ -23853,25 +24441,25 @@ GL_PREFIX(SecondaryColor3dEXT): GL_PREFIX(SecondaryColor3dvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5056(%rax), %r11 + movq 5184(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5056(%rax), %r11 + movq 5184(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5056(%rax), %r11 + movq 5184(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5056(%rax), %r11 + movq 5184(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3dvEXT), .-GL_PREFIX(SecondaryColor3dvEXT) @@ -23882,7 +24470,7 @@ GL_PREFIX(SecondaryColor3dvEXT): GL_PREFIX(SecondaryColor3fEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5064(%rax), %r11 + movq 5192(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -23894,13 +24482,13 @@ GL_PREFIX(SecondaryColor3fEXT): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 5064(%rax), %r11 + movq 5192(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5064(%rax), %r11 + movq 5192(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -23912,7 +24500,7 @@ GL_PREFIX(SecondaryColor3fEXT): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 5064(%rax), %r11 + movq 5192(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3fEXT), .-GL_PREFIX(SecondaryColor3fEXT) @@ -23923,25 +24511,25 @@ GL_PREFIX(SecondaryColor3fEXT): GL_PREFIX(SecondaryColor3fvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5072(%rax), %r11 + movq 5200(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5072(%rax), %r11 + movq 5200(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5072(%rax), %r11 + movq 5200(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5072(%rax), %r11 + movq 5200(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3fvEXT), .-GL_PREFIX(SecondaryColor3fvEXT) @@ -23952,7 +24540,7 @@ GL_PREFIX(SecondaryColor3fvEXT): GL_PREFIX(SecondaryColor3iEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5080(%rax), %r11 + movq 5208(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -23962,13 +24550,13 @@ GL_PREFIX(SecondaryColor3iEXT): popq %rdx popq %rsi popq %rdi - movq 5080(%rax), %r11 + movq 5208(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5080(%rax), %r11 + movq 5208(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -23978,7 +24566,7 @@ GL_PREFIX(SecondaryColor3iEXT): popq %rdx popq %rsi popq %rdi - movq 5080(%rax), %r11 + movq 5208(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3iEXT), .-GL_PREFIX(SecondaryColor3iEXT) @@ -23989,25 +24577,25 @@ GL_PREFIX(SecondaryColor3iEXT): GL_PREFIX(SecondaryColor3ivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5088(%rax), %r11 + movq 5216(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5088(%rax), %r11 + movq 5216(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5088(%rax), %r11 + movq 5216(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5088(%rax), %r11 + movq 5216(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3ivEXT), .-GL_PREFIX(SecondaryColor3ivEXT) @@ -24018,7 +24606,7 @@ GL_PREFIX(SecondaryColor3ivEXT): GL_PREFIX(SecondaryColor3sEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5096(%rax), %r11 + movq 5224(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24028,13 +24616,13 @@ GL_PREFIX(SecondaryColor3sEXT): popq %rdx popq %rsi popq %rdi - movq 5096(%rax), %r11 + movq 5224(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5096(%rax), %r11 + movq 5224(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24044,7 +24632,7 @@ GL_PREFIX(SecondaryColor3sEXT): popq %rdx popq %rsi popq %rdi - movq 5096(%rax), %r11 + movq 5224(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3sEXT), .-GL_PREFIX(SecondaryColor3sEXT) @@ -24055,25 +24643,25 @@ GL_PREFIX(SecondaryColor3sEXT): GL_PREFIX(SecondaryColor3svEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5104(%rax), %r11 + movq 5232(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5104(%rax), %r11 + movq 5232(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5104(%rax), %r11 + movq 5232(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5104(%rax), %r11 + movq 5232(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3svEXT), .-GL_PREFIX(SecondaryColor3svEXT) @@ -24084,7 +24672,7 @@ GL_PREFIX(SecondaryColor3svEXT): GL_PREFIX(SecondaryColor3ubEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5112(%rax), %r11 + movq 5240(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24094,13 +24682,13 @@ GL_PREFIX(SecondaryColor3ubEXT): popq %rdx popq %rsi popq %rdi - movq 5112(%rax), %r11 + movq 5240(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5112(%rax), %r11 + movq 5240(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24110,7 +24698,7 @@ GL_PREFIX(SecondaryColor3ubEXT): popq %rdx popq %rsi popq %rdi - movq 5112(%rax), %r11 + movq 5240(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3ubEXT), .-GL_PREFIX(SecondaryColor3ubEXT) @@ -24121,25 +24709,25 @@ GL_PREFIX(SecondaryColor3ubEXT): GL_PREFIX(SecondaryColor3ubvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5120(%rax), %r11 + movq 5248(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5120(%rax), %r11 + movq 5248(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5120(%rax), %r11 + movq 5248(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5120(%rax), %r11 + movq 5248(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3ubvEXT), .-GL_PREFIX(SecondaryColor3ubvEXT) @@ -24150,7 +24738,7 @@ GL_PREFIX(SecondaryColor3ubvEXT): GL_PREFIX(SecondaryColor3uiEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5128(%rax), %r11 + movq 5256(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24160,13 +24748,13 @@ GL_PREFIX(SecondaryColor3uiEXT): popq %rdx popq %rsi popq %rdi - movq 5128(%rax), %r11 + movq 5256(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5128(%rax), %r11 + movq 5256(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24176,7 +24764,7 @@ GL_PREFIX(SecondaryColor3uiEXT): popq %rdx popq %rsi popq %rdi - movq 5128(%rax), %r11 + movq 5256(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3uiEXT), .-GL_PREFIX(SecondaryColor3uiEXT) @@ -24187,25 +24775,25 @@ GL_PREFIX(SecondaryColor3uiEXT): GL_PREFIX(SecondaryColor3uivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5136(%rax), %r11 + movq 5264(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5136(%rax), %r11 + movq 5264(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5136(%rax), %r11 + movq 5264(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5136(%rax), %r11 + movq 5264(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3uivEXT), .-GL_PREFIX(SecondaryColor3uivEXT) @@ -24216,7 +24804,7 @@ GL_PREFIX(SecondaryColor3uivEXT): GL_PREFIX(SecondaryColor3usEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5144(%rax), %r11 + movq 5272(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24226,13 +24814,13 @@ GL_PREFIX(SecondaryColor3usEXT): popq %rdx popq %rsi popq %rdi - movq 5144(%rax), %r11 + movq 5272(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5144(%rax), %r11 + movq 5272(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24242,7 +24830,7 @@ GL_PREFIX(SecondaryColor3usEXT): popq %rdx popq %rsi popq %rdi - movq 5144(%rax), %r11 + movq 5272(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3usEXT), .-GL_PREFIX(SecondaryColor3usEXT) @@ -24253,25 +24841,25 @@ GL_PREFIX(SecondaryColor3usEXT): GL_PREFIX(SecondaryColor3usvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5152(%rax), %r11 + movq 5280(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5152(%rax), %r11 + movq 5280(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5152(%rax), %r11 + movq 5280(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5152(%rax), %r11 + movq 5280(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColor3usvEXT), .-GL_PREFIX(SecondaryColor3usvEXT) @@ -24282,7 +24870,7 @@ GL_PREFIX(SecondaryColor3usvEXT): GL_PREFIX(SecondaryColorPointerEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5160(%rax), %r11 + movq 5288(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24296,13 +24884,13 @@ GL_PREFIX(SecondaryColorPointerEXT): popq %rdx popq %rsi popq %rdi - movq 5160(%rax), %r11 + movq 5288(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5160(%rax), %r11 + movq 5288(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24316,7 +24904,7 @@ GL_PREFIX(SecondaryColorPointerEXT): popq %rdx popq %rsi popq %rdi - movq 5160(%rax), %r11 + movq 5288(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SecondaryColorPointerEXT), .-GL_PREFIX(SecondaryColorPointerEXT) @@ -24327,7 +24915,7 @@ GL_PREFIX(SecondaryColorPointerEXT): GL_PREFIX(MultiDrawArraysEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5168(%rax), %r11 + movq 5296(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24341,13 +24929,13 @@ GL_PREFIX(MultiDrawArraysEXT): popq %rdx popq %rsi popq %rdi - movq 5168(%rax), %r11 + movq 5296(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5168(%rax), %r11 + movq 5296(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24361,7 +24949,7 @@ GL_PREFIX(MultiDrawArraysEXT): popq %rdx popq %rsi popq %rdi - movq 5168(%rax), %r11 + movq 5296(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(MultiDrawArraysEXT), .-GL_PREFIX(MultiDrawArraysEXT) @@ -24372,7 +24960,7 @@ GL_PREFIX(MultiDrawArraysEXT): GL_PREFIX(MultiDrawElementsEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5176(%rax), %r11 + movq 5304(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24386,13 +24974,13 @@ GL_PREFIX(MultiDrawElementsEXT): popq %rdx popq %rsi popq %rdi - movq 5176(%rax), %r11 + movq 5304(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5176(%rax), %r11 + movq 5304(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24406,7 +24994,7 @@ GL_PREFIX(MultiDrawElementsEXT): popq %rdx popq %rsi popq %rdi - movq 5176(%rax), %r11 + movq 5304(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(MultiDrawElementsEXT), .-GL_PREFIX(MultiDrawElementsEXT) @@ -24417,7 +25005,7 @@ GL_PREFIX(MultiDrawElementsEXT): GL_PREFIX(FogCoordPointerEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5184(%rax), %r11 + movq 5312(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24427,13 +25015,13 @@ GL_PREFIX(FogCoordPointerEXT): popq %rdx popq %rsi popq %rdi - movq 5184(%rax), %r11 + movq 5312(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5184(%rax), %r11 + movq 5312(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24443,7 +25031,7 @@ GL_PREFIX(FogCoordPointerEXT): popq %rdx popq %rsi popq %rdi - movq 5184(%rax), %r11 + movq 5312(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FogCoordPointerEXT), .-GL_PREFIX(FogCoordPointerEXT) @@ -24454,7 +25042,7 @@ GL_PREFIX(FogCoordPointerEXT): GL_PREFIX(FogCoorddEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5192(%rax), %r11 + movq 5320(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $8, %rsp @@ -24462,13 +25050,13 @@ GL_PREFIX(FogCoorddEXT): call _x86_64_get_dispatch@PLT movq (%rsp), %xmm0 addq $8, %rsp - movq 5192(%rax), %r11 + movq 5320(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5192(%rax), %r11 + movq 5320(%rax), %r11 jmp *%r11 1: subq $8, %rsp @@ -24476,7 +25064,7 @@ GL_PREFIX(FogCoorddEXT): call _glapi_get_dispatch movq (%rsp), %xmm0 addq $8, %rsp - movq 5192(%rax), %r11 + movq 5320(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FogCoorddEXT), .-GL_PREFIX(FogCoorddEXT) @@ -24487,25 +25075,25 @@ GL_PREFIX(FogCoorddEXT): GL_PREFIX(FogCoorddvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5200(%rax), %r11 + movq 5328(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5200(%rax), %r11 + movq 5328(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5200(%rax), %r11 + movq 5328(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5200(%rax), %r11 + movq 5328(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FogCoorddvEXT), .-GL_PREFIX(FogCoorddvEXT) @@ -24516,7 +25104,7 @@ GL_PREFIX(FogCoorddvEXT): GL_PREFIX(FogCoordfEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5208(%rax), %r11 + movq 5336(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $8, %rsp @@ -24524,13 +25112,13 @@ GL_PREFIX(FogCoordfEXT): call _x86_64_get_dispatch@PLT movq (%rsp), %xmm0 addq $8, %rsp - movq 5208(%rax), %r11 + movq 5336(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5208(%rax), %r11 + movq 5336(%rax), %r11 jmp *%r11 1: subq $8, %rsp @@ -24538,7 +25126,7 @@ GL_PREFIX(FogCoordfEXT): call _glapi_get_dispatch movq (%rsp), %xmm0 addq $8, %rsp - movq 5208(%rax), %r11 + movq 5336(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FogCoordfEXT), .-GL_PREFIX(FogCoordfEXT) @@ -24549,58 +25137,58 @@ GL_PREFIX(FogCoordfEXT): GL_PREFIX(FogCoordfvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5216(%rax), %r11 + movq 5344(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5216(%rax), %r11 + movq 5344(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5216(%rax), %r11 + movq 5344(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5216(%rax), %r11 + movq 5344(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FogCoordfvEXT), .-GL_PREFIX(FogCoordfvEXT) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_653) - .type GL_PREFIX(_dispatch_stub_653), @function - HIDDEN(GL_PREFIX(_dispatch_stub_653)) -GL_PREFIX(_dispatch_stub_653): + .globl GL_PREFIX(_dispatch_stub_669) + .type GL_PREFIX(_dispatch_stub_669), @function + HIDDEN(GL_PREFIX(_dispatch_stub_669)) +GL_PREFIX(_dispatch_stub_669): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5224(%rax), %r11 + movq 5352(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5224(%rax), %r11 + movq 5352(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5224(%rax), %r11 + movq 5352(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5224(%rax), %r11 + movq 5352(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_653), .-GL_PREFIX(_dispatch_stub_653) + .size GL_PREFIX(_dispatch_stub_669), .-GL_PREFIX(_dispatch_stub_669) .p2align 4,,15 .globl GL_PREFIX(BlendFuncSeparateEXT) @@ -24608,7 +25196,7 @@ GL_PREFIX(_dispatch_stub_653): GL_PREFIX(BlendFuncSeparateEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5232(%rax), %r11 + movq 5360(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24622,13 +25210,13 @@ GL_PREFIX(BlendFuncSeparateEXT): popq %rdx popq %rsi popq %rdi - movq 5232(%rax), %r11 + movq 5360(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5232(%rax), %r11 + movq 5360(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24642,7 +25230,7 @@ GL_PREFIX(BlendFuncSeparateEXT): popq %rdx popq %rsi popq %rdi - movq 5232(%rax), %r11 + movq 5360(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BlendFuncSeparateEXT), .-GL_PREFIX(BlendFuncSeparateEXT) @@ -24653,25 +25241,25 @@ GL_PREFIX(BlendFuncSeparateEXT): GL_PREFIX(FlushVertexArrayRangeNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5240(%rax), %r11 + movq 5368(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 5240(%rax), %r11 + movq 5368(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5240(%rax), %r11 + movq 5368(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 5240(%rax), %r11 + movq 5368(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FlushVertexArrayRangeNV), .-GL_PREFIX(FlushVertexArrayRangeNV) @@ -24682,7 +25270,7 @@ GL_PREFIX(FlushVertexArrayRangeNV): GL_PREFIX(VertexArrayRangeNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5248(%rax), %r11 + movq 5376(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24692,13 +25280,13 @@ GL_PREFIX(VertexArrayRangeNV): popq %rbp popq %rsi popq %rdi - movq 5248(%rax), %r11 + movq 5376(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5248(%rax), %r11 + movq 5376(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24708,7 +25296,7 @@ GL_PREFIX(VertexArrayRangeNV): popq %rbp popq %rsi popq %rdi - movq 5248(%rax), %r11 + movq 5376(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexArrayRangeNV), .-GL_PREFIX(VertexArrayRangeNV) @@ -24719,7 +25307,7 @@ GL_PREFIX(VertexArrayRangeNV): GL_PREFIX(CombinerInputNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5256(%rax), %r11 + movq 5384(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24737,13 +25325,13 @@ GL_PREFIX(CombinerInputNV): popq %rdx popq %rsi popq %rdi - movq 5256(%rax), %r11 + movq 5384(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5256(%rax), %r11 + movq 5384(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24761,7 +25349,7 @@ GL_PREFIX(CombinerInputNV): popq %rdx popq %rsi popq %rdi - movq 5256(%rax), %r11 + movq 5384(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CombinerInputNV), .-GL_PREFIX(CombinerInputNV) @@ -24772,7 +25360,7 @@ GL_PREFIX(CombinerInputNV): GL_PREFIX(CombinerOutputNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5264(%rax), %r11 + movq 5392(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24790,13 +25378,13 @@ GL_PREFIX(CombinerOutputNV): popq %rdx popq %rsi popq %rdi - movq 5264(%rax), %r11 + movq 5392(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5264(%rax), %r11 + movq 5392(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24814,7 +25402,7 @@ GL_PREFIX(CombinerOutputNV): popq %rdx popq %rsi popq %rdi - movq 5264(%rax), %r11 + movq 5392(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CombinerOutputNV), .-GL_PREFIX(CombinerOutputNV) @@ -24825,7 +25413,7 @@ GL_PREFIX(CombinerOutputNV): GL_PREFIX(CombinerParameterfNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5272(%rax), %r11 + movq 5400(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -24835,13 +25423,13 @@ GL_PREFIX(CombinerParameterfNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5272(%rax), %r11 + movq 5400(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5272(%rax), %r11 + movq 5400(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -24851,7 +25439,7 @@ GL_PREFIX(CombinerParameterfNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5272(%rax), %r11 + movq 5400(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CombinerParameterfNV), .-GL_PREFIX(CombinerParameterfNV) @@ -24862,7 +25450,7 @@ GL_PREFIX(CombinerParameterfNV): GL_PREFIX(CombinerParameterfvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5280(%rax), %r11 + movq 5408(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24872,13 +25460,13 @@ GL_PREFIX(CombinerParameterfvNV): popq %rbp popq %rsi popq %rdi - movq 5280(%rax), %r11 + movq 5408(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5280(%rax), %r11 + movq 5408(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24888,7 +25476,7 @@ GL_PREFIX(CombinerParameterfvNV): popq %rbp popq %rsi popq %rdi - movq 5280(%rax), %r11 + movq 5408(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CombinerParameterfvNV), .-GL_PREFIX(CombinerParameterfvNV) @@ -24899,7 +25487,7 @@ GL_PREFIX(CombinerParameterfvNV): GL_PREFIX(CombinerParameteriNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5288(%rax), %r11 + movq 5416(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24909,13 +25497,13 @@ GL_PREFIX(CombinerParameteriNV): popq %rbp popq %rsi popq %rdi - movq 5288(%rax), %r11 + movq 5416(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5288(%rax), %r11 + movq 5416(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24925,7 +25513,7 @@ GL_PREFIX(CombinerParameteriNV): popq %rbp popq %rsi popq %rdi - movq 5288(%rax), %r11 + movq 5416(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CombinerParameteriNV), .-GL_PREFIX(CombinerParameteriNV) @@ -24936,7 +25524,7 @@ GL_PREFIX(CombinerParameteriNV): GL_PREFIX(CombinerParameterivNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5296(%rax), %r11 + movq 5424(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24946,13 +25534,13 @@ GL_PREFIX(CombinerParameterivNV): popq %rbp popq %rsi popq %rdi - movq 5296(%rax), %r11 + movq 5424(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5296(%rax), %r11 + movq 5424(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -24962,7 +25550,7 @@ GL_PREFIX(CombinerParameterivNV): popq %rbp popq %rsi popq %rdi - movq 5296(%rax), %r11 + movq 5424(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CombinerParameterivNV), .-GL_PREFIX(CombinerParameterivNV) @@ -24973,7 +25561,7 @@ GL_PREFIX(CombinerParameterivNV): GL_PREFIX(FinalCombinerInputNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5304(%rax), %r11 + movq 5432(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -24987,13 +25575,13 @@ GL_PREFIX(FinalCombinerInputNV): popq %rdx popq %rsi popq %rdi - movq 5304(%rax), %r11 + movq 5432(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5304(%rax), %r11 + movq 5432(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25007,7 +25595,7 @@ GL_PREFIX(FinalCombinerInputNV): popq %rdx popq %rsi popq %rdi - movq 5304(%rax), %r11 + movq 5432(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FinalCombinerInputNV), .-GL_PREFIX(FinalCombinerInputNV) @@ -25018,7 +25606,7 @@ GL_PREFIX(FinalCombinerInputNV): GL_PREFIX(GetCombinerInputParameterfvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5312(%rax), %r11 + movq 5440(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25032,13 +25620,13 @@ GL_PREFIX(GetCombinerInputParameterfvNV): popq %rdx popq %rsi popq %rdi - movq 5312(%rax), %r11 + movq 5440(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5312(%rax), %r11 + movq 5440(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25052,7 +25640,7 @@ GL_PREFIX(GetCombinerInputParameterfvNV): popq %rdx popq %rsi popq %rdi - movq 5312(%rax), %r11 + movq 5440(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetCombinerInputParameterfvNV), .-GL_PREFIX(GetCombinerInputParameterfvNV) @@ -25063,7 +25651,7 @@ GL_PREFIX(GetCombinerInputParameterfvNV): GL_PREFIX(GetCombinerInputParameterivNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5320(%rax), %r11 + movq 5448(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25077,13 +25665,13 @@ GL_PREFIX(GetCombinerInputParameterivNV): popq %rdx popq %rsi popq %rdi - movq 5320(%rax), %r11 + movq 5448(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5320(%rax), %r11 + movq 5448(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25097,7 +25685,7 @@ GL_PREFIX(GetCombinerInputParameterivNV): popq %rdx popq %rsi popq %rdi - movq 5320(%rax), %r11 + movq 5448(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetCombinerInputParameterivNV), .-GL_PREFIX(GetCombinerInputParameterivNV) @@ -25108,7 +25696,7 @@ GL_PREFIX(GetCombinerInputParameterivNV): GL_PREFIX(GetCombinerOutputParameterfvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5328(%rax), %r11 + movq 5456(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25122,13 +25710,13 @@ GL_PREFIX(GetCombinerOutputParameterfvNV): popq %rdx popq %rsi popq %rdi - movq 5328(%rax), %r11 + movq 5456(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5328(%rax), %r11 + movq 5456(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25142,7 +25730,7 @@ GL_PREFIX(GetCombinerOutputParameterfvNV): popq %rdx popq %rsi popq %rdi - movq 5328(%rax), %r11 + movq 5456(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetCombinerOutputParameterfvNV), .-GL_PREFIX(GetCombinerOutputParameterfvNV) @@ -25153,7 +25741,7 @@ GL_PREFIX(GetCombinerOutputParameterfvNV): GL_PREFIX(GetCombinerOutputParameterivNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5336(%rax), %r11 + movq 5464(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25167,13 +25755,13 @@ GL_PREFIX(GetCombinerOutputParameterivNV): popq %rdx popq %rsi popq %rdi - movq 5336(%rax), %r11 + movq 5464(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5336(%rax), %r11 + movq 5464(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25187,7 +25775,7 @@ GL_PREFIX(GetCombinerOutputParameterivNV): popq %rdx popq %rsi popq %rdi - movq 5336(%rax), %r11 + movq 5464(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetCombinerOutputParameterivNV), .-GL_PREFIX(GetCombinerOutputParameterivNV) @@ -25198,7 +25786,7 @@ GL_PREFIX(GetCombinerOutputParameterivNV): GL_PREFIX(GetFinalCombinerInputParameterfvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5344(%rax), %r11 + movq 5472(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25208,13 +25796,13 @@ GL_PREFIX(GetFinalCombinerInputParameterfvNV): popq %rdx popq %rsi popq %rdi - movq 5344(%rax), %r11 + movq 5472(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5344(%rax), %r11 + movq 5472(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25224,7 +25812,7 @@ GL_PREFIX(GetFinalCombinerInputParameterfvNV): popq %rdx popq %rsi popq %rdi - movq 5344(%rax), %r11 + movq 5472(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetFinalCombinerInputParameterfvNV), .-GL_PREFIX(GetFinalCombinerInputParameterfvNV) @@ -25235,7 +25823,7 @@ GL_PREFIX(GetFinalCombinerInputParameterfvNV): GL_PREFIX(GetFinalCombinerInputParameterivNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5352(%rax), %r11 + movq 5480(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25245,13 +25833,13 @@ GL_PREFIX(GetFinalCombinerInputParameterivNV): popq %rdx popq %rsi popq %rdi - movq 5352(%rax), %r11 + movq 5480(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5352(%rax), %r11 + movq 5480(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25261,7 +25849,7 @@ GL_PREFIX(GetFinalCombinerInputParameterivNV): popq %rdx popq %rsi popq %rdi - movq 5352(%rax), %r11 + movq 5480(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetFinalCombinerInputParameterivNV), .-GL_PREFIX(GetFinalCombinerInputParameterivNV) @@ -25272,25 +25860,25 @@ GL_PREFIX(GetFinalCombinerInputParameterivNV): GL_PREFIX(ResizeBuffersMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5360(%rax), %r11 + movq 5488(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 5360(%rax), %r11 + movq 5488(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5360(%rax), %r11 + movq 5488(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 5360(%rax), %r11 + movq 5488(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ResizeBuffersMESA), .-GL_PREFIX(ResizeBuffersMESA) @@ -25301,7 +25889,7 @@ GL_PREFIX(ResizeBuffersMESA): GL_PREFIX(WindowPos2dMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5368(%rax), %r11 + movq 5496(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -25311,13 +25899,13 @@ GL_PREFIX(WindowPos2dMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 5368(%rax), %r11 + movq 5496(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5368(%rax), %r11 + movq 5496(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -25327,7 +25915,7 @@ GL_PREFIX(WindowPos2dMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 5368(%rax), %r11 + movq 5496(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos2dMESA), .-GL_PREFIX(WindowPos2dMESA) @@ -25338,25 +25926,25 @@ GL_PREFIX(WindowPos2dMESA): GL_PREFIX(WindowPos2dvMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5376(%rax), %r11 + movq 5504(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5376(%rax), %r11 + movq 5504(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5376(%rax), %r11 + movq 5504(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5376(%rax), %r11 + movq 5504(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos2dvMESA), .-GL_PREFIX(WindowPos2dvMESA) @@ -25367,7 +25955,7 @@ GL_PREFIX(WindowPos2dvMESA): GL_PREFIX(WindowPos2fMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5384(%rax), %r11 + movq 5512(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -25377,13 +25965,13 @@ GL_PREFIX(WindowPos2fMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 5384(%rax), %r11 + movq 5512(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5384(%rax), %r11 + movq 5512(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -25393,7 +25981,7 @@ GL_PREFIX(WindowPos2fMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 5384(%rax), %r11 + movq 5512(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos2fMESA), .-GL_PREFIX(WindowPos2fMESA) @@ -25404,25 +25992,25 @@ GL_PREFIX(WindowPos2fMESA): GL_PREFIX(WindowPos2fvMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5392(%rax), %r11 + movq 5520(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5392(%rax), %r11 + movq 5520(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5392(%rax), %r11 + movq 5520(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5392(%rax), %r11 + movq 5520(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos2fvMESA), .-GL_PREFIX(WindowPos2fvMESA) @@ -25433,7 +26021,7 @@ GL_PREFIX(WindowPos2fvMESA): GL_PREFIX(WindowPos2iMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5400(%rax), %r11 + movq 5528(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25443,13 +26031,13 @@ GL_PREFIX(WindowPos2iMESA): popq %rbp popq %rsi popq %rdi - movq 5400(%rax), %r11 + movq 5528(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5400(%rax), %r11 + movq 5528(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25459,7 +26047,7 @@ GL_PREFIX(WindowPos2iMESA): popq %rbp popq %rsi popq %rdi - movq 5400(%rax), %r11 + movq 5528(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos2iMESA), .-GL_PREFIX(WindowPos2iMESA) @@ -25470,25 +26058,25 @@ GL_PREFIX(WindowPos2iMESA): GL_PREFIX(WindowPos2ivMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5408(%rax), %r11 + movq 5536(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5408(%rax), %r11 + movq 5536(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5408(%rax), %r11 + movq 5536(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5408(%rax), %r11 + movq 5536(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos2ivMESA), .-GL_PREFIX(WindowPos2ivMESA) @@ -25499,7 +26087,7 @@ GL_PREFIX(WindowPos2ivMESA): GL_PREFIX(WindowPos2sMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5416(%rax), %r11 + movq 5544(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25509,13 +26097,13 @@ GL_PREFIX(WindowPos2sMESA): popq %rbp popq %rsi popq %rdi - movq 5416(%rax), %r11 + movq 5544(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5416(%rax), %r11 + movq 5544(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25525,7 +26113,7 @@ GL_PREFIX(WindowPos2sMESA): popq %rbp popq %rsi popq %rdi - movq 5416(%rax), %r11 + movq 5544(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos2sMESA), .-GL_PREFIX(WindowPos2sMESA) @@ -25536,25 +26124,25 @@ GL_PREFIX(WindowPos2sMESA): GL_PREFIX(WindowPos2svMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5424(%rax), %r11 + movq 5552(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5424(%rax), %r11 + movq 5552(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5424(%rax), %r11 + movq 5552(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5424(%rax), %r11 + movq 5552(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos2svMESA), .-GL_PREFIX(WindowPos2svMESA) @@ -25565,7 +26153,7 @@ GL_PREFIX(WindowPos2svMESA): GL_PREFIX(WindowPos3dMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5432(%rax), %r11 + movq 5560(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -25577,13 +26165,13 @@ GL_PREFIX(WindowPos3dMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 5432(%rax), %r11 + movq 5560(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5432(%rax), %r11 + movq 5560(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -25595,7 +26183,7 @@ GL_PREFIX(WindowPos3dMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 5432(%rax), %r11 + movq 5560(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos3dMESA), .-GL_PREFIX(WindowPos3dMESA) @@ -25606,25 +26194,25 @@ GL_PREFIX(WindowPos3dMESA): GL_PREFIX(WindowPos3dvMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5440(%rax), %r11 + movq 5568(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5440(%rax), %r11 + movq 5568(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5440(%rax), %r11 + movq 5568(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5440(%rax), %r11 + movq 5568(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos3dvMESA), .-GL_PREFIX(WindowPos3dvMESA) @@ -25635,7 +26223,7 @@ GL_PREFIX(WindowPos3dvMESA): GL_PREFIX(WindowPos3fMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5448(%rax), %r11 + movq 5576(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -25647,13 +26235,13 @@ GL_PREFIX(WindowPos3fMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 5448(%rax), %r11 + movq 5576(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5448(%rax), %r11 + movq 5576(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -25665,7 +26253,7 @@ GL_PREFIX(WindowPos3fMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $24, %rsp - movq 5448(%rax), %r11 + movq 5576(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos3fMESA), .-GL_PREFIX(WindowPos3fMESA) @@ -25676,25 +26264,25 @@ GL_PREFIX(WindowPos3fMESA): GL_PREFIX(WindowPos3fvMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5456(%rax), %r11 + movq 5584(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5456(%rax), %r11 + movq 5584(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5456(%rax), %r11 + movq 5584(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5456(%rax), %r11 + movq 5584(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos3fvMESA), .-GL_PREFIX(WindowPos3fvMESA) @@ -25705,7 +26293,7 @@ GL_PREFIX(WindowPos3fvMESA): GL_PREFIX(WindowPos3iMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5464(%rax), %r11 + movq 5592(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25715,13 +26303,13 @@ GL_PREFIX(WindowPos3iMESA): popq %rdx popq %rsi popq %rdi - movq 5464(%rax), %r11 + movq 5592(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5464(%rax), %r11 + movq 5592(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25731,7 +26319,7 @@ GL_PREFIX(WindowPos3iMESA): popq %rdx popq %rsi popq %rdi - movq 5464(%rax), %r11 + movq 5592(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos3iMESA), .-GL_PREFIX(WindowPos3iMESA) @@ -25742,25 +26330,25 @@ GL_PREFIX(WindowPos3iMESA): GL_PREFIX(WindowPos3ivMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5472(%rax), %r11 + movq 5600(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5472(%rax), %r11 + movq 5600(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5472(%rax), %r11 + movq 5600(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5472(%rax), %r11 + movq 5600(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos3ivMESA), .-GL_PREFIX(WindowPos3ivMESA) @@ -25771,7 +26359,7 @@ GL_PREFIX(WindowPos3ivMESA): GL_PREFIX(WindowPos3sMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5480(%rax), %r11 + movq 5608(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25781,13 +26369,13 @@ GL_PREFIX(WindowPos3sMESA): popq %rdx popq %rsi popq %rdi - movq 5480(%rax), %r11 + movq 5608(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5480(%rax), %r11 + movq 5608(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -25797,7 +26385,7 @@ GL_PREFIX(WindowPos3sMESA): popq %rdx popq %rsi popq %rdi - movq 5480(%rax), %r11 + movq 5608(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos3sMESA), .-GL_PREFIX(WindowPos3sMESA) @@ -25808,25 +26396,25 @@ GL_PREFIX(WindowPos3sMESA): GL_PREFIX(WindowPos3svMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5488(%rax), %r11 + movq 5616(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5488(%rax), %r11 + movq 5616(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5488(%rax), %r11 + movq 5616(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5488(%rax), %r11 + movq 5616(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos3svMESA), .-GL_PREFIX(WindowPos3svMESA) @@ -25837,7 +26425,7 @@ GL_PREFIX(WindowPos3svMESA): GL_PREFIX(WindowPos4dMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5496(%rax), %r11 + movq 5624(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $40, %rsp @@ -25851,13 +26439,13 @@ GL_PREFIX(WindowPos4dMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $40, %rsp - movq 5496(%rax), %r11 + movq 5624(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5496(%rax), %r11 + movq 5624(%rax), %r11 jmp *%r11 1: subq $40, %rsp @@ -25871,7 +26459,7 @@ GL_PREFIX(WindowPos4dMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $40, %rsp - movq 5496(%rax), %r11 + movq 5624(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos4dMESA), .-GL_PREFIX(WindowPos4dMESA) @@ -25882,25 +26470,25 @@ GL_PREFIX(WindowPos4dMESA): GL_PREFIX(WindowPos4dvMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5504(%rax), %r11 + movq 5632(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5504(%rax), %r11 + movq 5632(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5504(%rax), %r11 + movq 5632(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5504(%rax), %r11 + movq 5632(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos4dvMESA), .-GL_PREFIX(WindowPos4dvMESA) @@ -25911,7 +26499,7 @@ GL_PREFIX(WindowPos4dvMESA): GL_PREFIX(WindowPos4fMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5512(%rax), %r11 + movq 5640(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $40, %rsp @@ -25925,13 +26513,13 @@ GL_PREFIX(WindowPos4fMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $40, %rsp - movq 5512(%rax), %r11 + movq 5640(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5512(%rax), %r11 + movq 5640(%rax), %r11 jmp *%r11 1: subq $40, %rsp @@ -25945,7 +26533,7 @@ GL_PREFIX(WindowPos4fMESA): movq 8(%rsp), %xmm1 movq (%rsp), %xmm0 addq $40, %rsp - movq 5512(%rax), %r11 + movq 5640(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos4fMESA), .-GL_PREFIX(WindowPos4fMESA) @@ -25956,25 +26544,25 @@ GL_PREFIX(WindowPos4fMESA): GL_PREFIX(WindowPos4fvMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5520(%rax), %r11 + movq 5648(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5520(%rax), %r11 + movq 5648(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5520(%rax), %r11 + movq 5648(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5520(%rax), %r11 + movq 5648(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos4fvMESA), .-GL_PREFIX(WindowPos4fvMESA) @@ -25985,7 +26573,7 @@ GL_PREFIX(WindowPos4fvMESA): GL_PREFIX(WindowPos4iMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5528(%rax), %r11 + movq 5656(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -25999,13 +26587,13 @@ GL_PREFIX(WindowPos4iMESA): popq %rdx popq %rsi popq %rdi - movq 5528(%rax), %r11 + movq 5656(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5528(%rax), %r11 + movq 5656(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26019,7 +26607,7 @@ GL_PREFIX(WindowPos4iMESA): popq %rdx popq %rsi popq %rdi - movq 5528(%rax), %r11 + movq 5656(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos4iMESA), .-GL_PREFIX(WindowPos4iMESA) @@ -26030,25 +26618,25 @@ GL_PREFIX(WindowPos4iMESA): GL_PREFIX(WindowPos4ivMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5536(%rax), %r11 + movq 5664(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5536(%rax), %r11 + movq 5664(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5536(%rax), %r11 + movq 5664(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5536(%rax), %r11 + movq 5664(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos4ivMESA), .-GL_PREFIX(WindowPos4ivMESA) @@ -26059,7 +26647,7 @@ GL_PREFIX(WindowPos4ivMESA): GL_PREFIX(WindowPos4sMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5544(%rax), %r11 + movq 5672(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26073,13 +26661,13 @@ GL_PREFIX(WindowPos4sMESA): popq %rdx popq %rsi popq %rdi - movq 5544(%rax), %r11 + movq 5672(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5544(%rax), %r11 + movq 5672(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26093,7 +26681,7 @@ GL_PREFIX(WindowPos4sMESA): popq %rdx popq %rsi popq %rdi - movq 5544(%rax), %r11 + movq 5672(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos4sMESA), .-GL_PREFIX(WindowPos4sMESA) @@ -26104,37 +26692,37 @@ GL_PREFIX(WindowPos4sMESA): GL_PREFIX(WindowPos4svMESA): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5552(%rax), %r11 + movq 5680(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5552(%rax), %r11 + movq 5680(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5552(%rax), %r11 + movq 5680(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5552(%rax), %r11 + movq 5680(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(WindowPos4svMESA), .-GL_PREFIX(WindowPos4svMESA) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_695) - .type GL_PREFIX(_dispatch_stub_695), @function - HIDDEN(GL_PREFIX(_dispatch_stub_695)) -GL_PREFIX(_dispatch_stub_695): + .globl GL_PREFIX(_dispatch_stub_711) + .type GL_PREFIX(_dispatch_stub_711), @function + HIDDEN(GL_PREFIX(_dispatch_stub_711)) +GL_PREFIX(_dispatch_stub_711): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5560(%rax), %r11 + movq 5688(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26148,13 +26736,13 @@ GL_PREFIX(_dispatch_stub_695): popq %rdx popq %rsi popq %rdi - movq 5560(%rax), %r11 + movq 5688(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5560(%rax), %r11 + movq 5688(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26168,19 +26756,19 @@ GL_PREFIX(_dispatch_stub_695): popq %rdx popq %rsi popq %rdi - movq 5560(%rax), %r11 + movq 5688(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_695), .-GL_PREFIX(_dispatch_stub_695) + .size GL_PREFIX(_dispatch_stub_711), .-GL_PREFIX(_dispatch_stub_711) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_696) - .type GL_PREFIX(_dispatch_stub_696), @function - HIDDEN(GL_PREFIX(_dispatch_stub_696)) -GL_PREFIX(_dispatch_stub_696): + .globl GL_PREFIX(_dispatch_stub_712) + .type GL_PREFIX(_dispatch_stub_712), @function + HIDDEN(GL_PREFIX(_dispatch_stub_712)) +GL_PREFIX(_dispatch_stub_712): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5568(%rax), %r11 + movq 5696(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26198,13 +26786,13 @@ GL_PREFIX(_dispatch_stub_696): popq %rdx popq %rsi popq %rdi - movq 5568(%rax), %r11 + movq 5696(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5568(%rax), %r11 + movq 5696(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26222,19 +26810,19 @@ GL_PREFIX(_dispatch_stub_696): popq %rdx popq %rsi popq %rdi - movq 5568(%rax), %r11 + movq 5696(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_696), .-GL_PREFIX(_dispatch_stub_696) + .size GL_PREFIX(_dispatch_stub_712), .-GL_PREFIX(_dispatch_stub_712) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_697) - .type GL_PREFIX(_dispatch_stub_697), @function - HIDDEN(GL_PREFIX(_dispatch_stub_697)) -GL_PREFIX(_dispatch_stub_697): + .globl GL_PREFIX(_dispatch_stub_713) + .type GL_PREFIX(_dispatch_stub_713), @function + HIDDEN(GL_PREFIX(_dispatch_stub_713)) +GL_PREFIX(_dispatch_stub_713): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5576(%rax), %r11 + movq 5704(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26244,13 +26832,13 @@ GL_PREFIX(_dispatch_stub_697): popq %rbp popq %rsi popq %rdi - movq 5576(%rax), %r11 + movq 5704(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5576(%rax), %r11 + movq 5704(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26260,49 +26848,49 @@ GL_PREFIX(_dispatch_stub_697): popq %rbp popq %rsi popq %rdi - movq 5576(%rax), %r11 + movq 5704(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_697), .-GL_PREFIX(_dispatch_stub_697) + .size GL_PREFIX(_dispatch_stub_713), .-GL_PREFIX(_dispatch_stub_713) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_698) - .type GL_PREFIX(_dispatch_stub_698), @function - HIDDEN(GL_PREFIX(_dispatch_stub_698)) -GL_PREFIX(_dispatch_stub_698): + .globl GL_PREFIX(_dispatch_stub_714) + .type GL_PREFIX(_dispatch_stub_714), @function + HIDDEN(GL_PREFIX(_dispatch_stub_714)) +GL_PREFIX(_dispatch_stub_714): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5584(%rax), %r11 + movq 5712(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5584(%rax), %r11 + movq 5712(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5584(%rax), %r11 + movq 5712(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5584(%rax), %r11 + movq 5712(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_698), .-GL_PREFIX(_dispatch_stub_698) + .size GL_PREFIX(_dispatch_stub_714), .-GL_PREFIX(_dispatch_stub_714) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_699) - .type GL_PREFIX(_dispatch_stub_699), @function - HIDDEN(GL_PREFIX(_dispatch_stub_699)) -GL_PREFIX(_dispatch_stub_699): + .globl GL_PREFIX(_dispatch_stub_715) + .type GL_PREFIX(_dispatch_stub_715), @function + HIDDEN(GL_PREFIX(_dispatch_stub_715)) +GL_PREFIX(_dispatch_stub_715): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5592(%rax), %r11 + movq 5720(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26312,13 +26900,13 @@ GL_PREFIX(_dispatch_stub_699): popq %rbp popq %rsi popq %rdi - movq 5592(%rax), %r11 + movq 5720(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5592(%rax), %r11 + movq 5720(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26328,19 +26916,19 @@ GL_PREFIX(_dispatch_stub_699): popq %rbp popq %rsi popq %rdi - movq 5592(%rax), %r11 + movq 5720(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_699), .-GL_PREFIX(_dispatch_stub_699) + .size GL_PREFIX(_dispatch_stub_715), .-GL_PREFIX(_dispatch_stub_715) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_700) - .type GL_PREFIX(_dispatch_stub_700), @function - HIDDEN(GL_PREFIX(_dispatch_stub_700)) -GL_PREFIX(_dispatch_stub_700): + .globl GL_PREFIX(_dispatch_stub_716) + .type GL_PREFIX(_dispatch_stub_716), @function + HIDDEN(GL_PREFIX(_dispatch_stub_716)) +GL_PREFIX(_dispatch_stub_716): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5600(%rax), %r11 + movq 5728(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26350,13 +26938,13 @@ GL_PREFIX(_dispatch_stub_700): popq %rdx popq %rsi popq %rdi - movq 5600(%rax), %r11 + movq 5728(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5600(%rax), %r11 + movq 5728(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26366,49 +26954,49 @@ GL_PREFIX(_dispatch_stub_700): popq %rdx popq %rsi popq %rdi - movq 5600(%rax), %r11 + movq 5728(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_700), .-GL_PREFIX(_dispatch_stub_700) + .size GL_PREFIX(_dispatch_stub_716), .-GL_PREFIX(_dispatch_stub_716) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_701) - .type GL_PREFIX(_dispatch_stub_701), @function - HIDDEN(GL_PREFIX(_dispatch_stub_701)) -GL_PREFIX(_dispatch_stub_701): + .globl GL_PREFIX(_dispatch_stub_717) + .type GL_PREFIX(_dispatch_stub_717), @function + HIDDEN(GL_PREFIX(_dispatch_stub_717)) +GL_PREFIX(_dispatch_stub_717): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5608(%rax), %r11 + movq 5736(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5608(%rax), %r11 + movq 5736(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5608(%rax), %r11 + movq 5736(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5608(%rax), %r11 + movq 5736(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_701), .-GL_PREFIX(_dispatch_stub_701) + .size GL_PREFIX(_dispatch_stub_717), .-GL_PREFIX(_dispatch_stub_717) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_702) - .type GL_PREFIX(_dispatch_stub_702), @function - HIDDEN(GL_PREFIX(_dispatch_stub_702)) -GL_PREFIX(_dispatch_stub_702): + .globl GL_PREFIX(_dispatch_stub_718) + .type GL_PREFIX(_dispatch_stub_718), @function + HIDDEN(GL_PREFIX(_dispatch_stub_718)) +GL_PREFIX(_dispatch_stub_718): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5616(%rax), %r11 + movq 5744(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26418,13 +27006,13 @@ GL_PREFIX(_dispatch_stub_702): popq %rbp popq %rsi popq %rdi - movq 5616(%rax), %r11 + movq 5744(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5616(%rax), %r11 + movq 5744(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26434,40 +27022,40 @@ GL_PREFIX(_dispatch_stub_702): popq %rbp popq %rsi popq %rdi - movq 5616(%rax), %r11 + movq 5744(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_702), .-GL_PREFIX(_dispatch_stub_702) + .size GL_PREFIX(_dispatch_stub_718), .-GL_PREFIX(_dispatch_stub_718) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_703) - .type GL_PREFIX(_dispatch_stub_703), @function - HIDDEN(GL_PREFIX(_dispatch_stub_703)) -GL_PREFIX(_dispatch_stub_703): + .globl GL_PREFIX(_dispatch_stub_719) + .type GL_PREFIX(_dispatch_stub_719), @function + HIDDEN(GL_PREFIX(_dispatch_stub_719)) +GL_PREFIX(_dispatch_stub_719): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5624(%rax), %r11 + movq 5752(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5624(%rax), %r11 + movq 5752(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5624(%rax), %r11 + movq 5752(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5624(%rax), %r11 + movq 5752(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_703), .-GL_PREFIX(_dispatch_stub_703) + .size GL_PREFIX(_dispatch_stub_719), .-GL_PREFIX(_dispatch_stub_719) .p2align 4,,15 .globl GL_PREFIX(AreProgramsResidentNV) @@ -26475,7 +27063,7 @@ GL_PREFIX(_dispatch_stub_703): GL_PREFIX(AreProgramsResidentNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5632(%rax), %r11 + movq 5760(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26485,13 +27073,13 @@ GL_PREFIX(AreProgramsResidentNV): popq %rdx popq %rsi popq %rdi - movq 5632(%rax), %r11 + movq 5760(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5632(%rax), %r11 + movq 5760(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26501,7 +27089,7 @@ GL_PREFIX(AreProgramsResidentNV): popq %rdx popq %rsi popq %rdi - movq 5632(%rax), %r11 + movq 5760(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(AreProgramsResidentNV), .-GL_PREFIX(AreProgramsResidentNV) @@ -26512,7 +27100,7 @@ GL_PREFIX(AreProgramsResidentNV): GL_PREFIX(BindProgramNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5640(%rax), %r11 + movq 5768(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26522,13 +27110,13 @@ GL_PREFIX(BindProgramNV): popq %rbp popq %rsi popq %rdi - movq 5640(%rax), %r11 + movq 5768(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5640(%rax), %r11 + movq 5768(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26538,7 +27126,7 @@ GL_PREFIX(BindProgramNV): popq %rbp popq %rsi popq %rdi - movq 5640(%rax), %r11 + movq 5768(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BindProgramNV), .-GL_PREFIX(BindProgramNV) @@ -26549,7 +27137,7 @@ GL_PREFIX(BindProgramNV): GL_PREFIX(DeleteProgramsNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5648(%rax), %r11 + movq 5776(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26559,13 +27147,13 @@ GL_PREFIX(DeleteProgramsNV): popq %rbp popq %rsi popq %rdi - movq 5648(%rax), %r11 + movq 5776(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5648(%rax), %r11 + movq 5776(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26575,7 +27163,7 @@ GL_PREFIX(DeleteProgramsNV): popq %rbp popq %rsi popq %rdi - movq 5648(%rax), %r11 + movq 5776(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DeleteProgramsNV), .-GL_PREFIX(DeleteProgramsNV) @@ -26586,7 +27174,7 @@ GL_PREFIX(DeleteProgramsNV): GL_PREFIX(ExecuteProgramNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5656(%rax), %r11 + movq 5784(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26596,13 +27184,13 @@ GL_PREFIX(ExecuteProgramNV): popq %rdx popq %rsi popq %rdi - movq 5656(%rax), %r11 + movq 5784(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5656(%rax), %r11 + movq 5784(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26612,7 +27200,7 @@ GL_PREFIX(ExecuteProgramNV): popq %rdx popq %rsi popq %rdi - movq 5656(%rax), %r11 + movq 5784(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ExecuteProgramNV), .-GL_PREFIX(ExecuteProgramNV) @@ -26623,7 +27211,7 @@ GL_PREFIX(ExecuteProgramNV): GL_PREFIX(GenProgramsNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5664(%rax), %r11 + movq 5792(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26633,13 +27221,13 @@ GL_PREFIX(GenProgramsNV): popq %rbp popq %rsi popq %rdi - movq 5664(%rax), %r11 + movq 5792(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5664(%rax), %r11 + movq 5792(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26649,7 +27237,7 @@ GL_PREFIX(GenProgramsNV): popq %rbp popq %rsi popq %rdi - movq 5664(%rax), %r11 + movq 5792(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GenProgramsNV), .-GL_PREFIX(GenProgramsNV) @@ -26660,7 +27248,7 @@ GL_PREFIX(GenProgramsNV): GL_PREFIX(GetProgramParameterdvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5672(%rax), %r11 + movq 5800(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26674,13 +27262,13 @@ GL_PREFIX(GetProgramParameterdvNV): popq %rdx popq %rsi popq %rdi - movq 5672(%rax), %r11 + movq 5800(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5672(%rax), %r11 + movq 5800(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26694,7 +27282,7 @@ GL_PREFIX(GetProgramParameterdvNV): popq %rdx popq %rsi popq %rdi - movq 5672(%rax), %r11 + movq 5800(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetProgramParameterdvNV), .-GL_PREFIX(GetProgramParameterdvNV) @@ -26705,7 +27293,7 @@ GL_PREFIX(GetProgramParameterdvNV): GL_PREFIX(GetProgramParameterfvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5680(%rax), %r11 + movq 5808(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26719,13 +27307,13 @@ GL_PREFIX(GetProgramParameterfvNV): popq %rdx popq %rsi popq %rdi - movq 5680(%rax), %r11 + movq 5808(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5680(%rax), %r11 + movq 5808(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26739,7 +27327,7 @@ GL_PREFIX(GetProgramParameterfvNV): popq %rdx popq %rsi popq %rdi - movq 5680(%rax), %r11 + movq 5808(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetProgramParameterfvNV), .-GL_PREFIX(GetProgramParameterfvNV) @@ -26750,7 +27338,7 @@ GL_PREFIX(GetProgramParameterfvNV): GL_PREFIX(GetProgramStringNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5688(%rax), %r11 + movq 5816(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26760,13 +27348,13 @@ GL_PREFIX(GetProgramStringNV): popq %rdx popq %rsi popq %rdi - movq 5688(%rax), %r11 + movq 5816(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5688(%rax), %r11 + movq 5816(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26776,7 +27364,7 @@ GL_PREFIX(GetProgramStringNV): popq %rdx popq %rsi popq %rdi - movq 5688(%rax), %r11 + movq 5816(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetProgramStringNV), .-GL_PREFIX(GetProgramStringNV) @@ -26787,7 +27375,7 @@ GL_PREFIX(GetProgramStringNV): GL_PREFIX(GetProgramivNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5696(%rax), %r11 + movq 5824(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26797,13 +27385,13 @@ GL_PREFIX(GetProgramivNV): popq %rdx popq %rsi popq %rdi - movq 5696(%rax), %r11 + movq 5824(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5696(%rax), %r11 + movq 5824(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26813,7 +27401,7 @@ GL_PREFIX(GetProgramivNV): popq %rdx popq %rsi popq %rdi - movq 5696(%rax), %r11 + movq 5824(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetProgramivNV), .-GL_PREFIX(GetProgramivNV) @@ -26824,7 +27412,7 @@ GL_PREFIX(GetProgramivNV): GL_PREFIX(GetTrackMatrixivNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5704(%rax), %r11 + movq 5832(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26838,13 +27426,13 @@ GL_PREFIX(GetTrackMatrixivNV): popq %rdx popq %rsi popq %rdi - movq 5704(%rax), %r11 + movq 5832(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5704(%rax), %r11 + movq 5832(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26858,7 +27446,7 @@ GL_PREFIX(GetTrackMatrixivNV): popq %rdx popq %rsi popq %rdi - movq 5704(%rax), %r11 + movq 5832(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetTrackMatrixivNV), .-GL_PREFIX(GetTrackMatrixivNV) @@ -26869,7 +27457,7 @@ GL_PREFIX(GetTrackMatrixivNV): GL_PREFIX(GetVertexAttribPointervNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5712(%rax), %r11 + movq 5840(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26879,13 +27467,13 @@ GL_PREFIX(GetVertexAttribPointervNV): popq %rdx popq %rsi popq %rdi - movq 5712(%rax), %r11 + movq 5840(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5712(%rax), %r11 + movq 5840(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26895,7 +27483,7 @@ GL_PREFIX(GetVertexAttribPointervNV): popq %rdx popq %rsi popq %rdi - movq 5712(%rax), %r11 + movq 5840(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetVertexAttribPointervNV), .-GL_PREFIX(GetVertexAttribPointervNV) @@ -26906,7 +27494,7 @@ GL_PREFIX(GetVertexAttribPointervNV): GL_PREFIX(GetVertexAttribdvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5720(%rax), %r11 + movq 5848(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26916,13 +27504,13 @@ GL_PREFIX(GetVertexAttribdvNV): popq %rdx popq %rsi popq %rdi - movq 5720(%rax), %r11 + movq 5848(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5720(%rax), %r11 + movq 5848(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26932,7 +27520,7 @@ GL_PREFIX(GetVertexAttribdvNV): popq %rdx popq %rsi popq %rdi - movq 5720(%rax), %r11 + movq 5848(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetVertexAttribdvNV), .-GL_PREFIX(GetVertexAttribdvNV) @@ -26943,7 +27531,7 @@ GL_PREFIX(GetVertexAttribdvNV): GL_PREFIX(GetVertexAttribfvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5728(%rax), %r11 + movq 5856(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26953,13 +27541,13 @@ GL_PREFIX(GetVertexAttribfvNV): popq %rdx popq %rsi popq %rdi - movq 5728(%rax), %r11 + movq 5856(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5728(%rax), %r11 + movq 5856(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -26969,7 +27557,7 @@ GL_PREFIX(GetVertexAttribfvNV): popq %rdx popq %rsi popq %rdi - movq 5728(%rax), %r11 + movq 5856(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetVertexAttribfvNV), .-GL_PREFIX(GetVertexAttribfvNV) @@ -26980,7 +27568,7 @@ GL_PREFIX(GetVertexAttribfvNV): GL_PREFIX(GetVertexAttribivNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5736(%rax), %r11 + movq 5864(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -26990,13 +27578,13 @@ GL_PREFIX(GetVertexAttribivNV): popq %rdx popq %rsi popq %rdi - movq 5736(%rax), %r11 + movq 5864(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5736(%rax), %r11 + movq 5864(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27006,7 +27594,7 @@ GL_PREFIX(GetVertexAttribivNV): popq %rdx popq %rsi popq %rdi - movq 5736(%rax), %r11 + movq 5864(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetVertexAttribivNV), .-GL_PREFIX(GetVertexAttribivNV) @@ -27017,25 +27605,25 @@ GL_PREFIX(GetVertexAttribivNV): GL_PREFIX(IsProgramNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5744(%rax), %r11 + movq 5872(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 5744(%rax), %r11 + movq 5872(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5744(%rax), %r11 + movq 5872(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 5744(%rax), %r11 + movq 5872(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(IsProgramNV), .-GL_PREFIX(IsProgramNV) @@ -27046,7 +27634,7 @@ GL_PREFIX(IsProgramNV): GL_PREFIX(LoadProgramNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5752(%rax), %r11 + movq 5880(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27060,13 +27648,13 @@ GL_PREFIX(LoadProgramNV): popq %rdx popq %rsi popq %rdi - movq 5752(%rax), %r11 + movq 5880(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5752(%rax), %r11 + movq 5880(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27080,7 +27668,7 @@ GL_PREFIX(LoadProgramNV): popq %rdx popq %rsi popq %rdi - movq 5752(%rax), %r11 + movq 5880(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(LoadProgramNV), .-GL_PREFIX(LoadProgramNV) @@ -27091,7 +27679,7 @@ GL_PREFIX(LoadProgramNV): GL_PREFIX(ProgramParameters4dvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5760(%rax), %r11 + movq 5888(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27105,13 +27693,13 @@ GL_PREFIX(ProgramParameters4dvNV): popq %rdx popq %rsi popq %rdi - movq 5760(%rax), %r11 + movq 5888(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5760(%rax), %r11 + movq 5888(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27125,7 +27713,7 @@ GL_PREFIX(ProgramParameters4dvNV): popq %rdx popq %rsi popq %rdi - movq 5760(%rax), %r11 + movq 5888(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramParameters4dvNV), .-GL_PREFIX(ProgramParameters4dvNV) @@ -27136,7 +27724,7 @@ GL_PREFIX(ProgramParameters4dvNV): GL_PREFIX(ProgramParameters4fvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5768(%rax), %r11 + movq 5896(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27150,13 +27738,13 @@ GL_PREFIX(ProgramParameters4fvNV): popq %rdx popq %rsi popq %rdi - movq 5768(%rax), %r11 + movq 5896(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5768(%rax), %r11 + movq 5896(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27170,7 +27758,7 @@ GL_PREFIX(ProgramParameters4fvNV): popq %rdx popq %rsi popq %rdi - movq 5768(%rax), %r11 + movq 5896(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramParameters4fvNV), .-GL_PREFIX(ProgramParameters4fvNV) @@ -27181,7 +27769,7 @@ GL_PREFIX(ProgramParameters4fvNV): GL_PREFIX(RequestResidentProgramsNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5776(%rax), %r11 + movq 5904(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27191,13 +27779,13 @@ GL_PREFIX(RequestResidentProgramsNV): popq %rbp popq %rsi popq %rdi - movq 5776(%rax), %r11 + movq 5904(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5776(%rax), %r11 + movq 5904(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27207,7 +27795,7 @@ GL_PREFIX(RequestResidentProgramsNV): popq %rbp popq %rsi popq %rdi - movq 5776(%rax), %r11 + movq 5904(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(RequestResidentProgramsNV), .-GL_PREFIX(RequestResidentProgramsNV) @@ -27218,7 +27806,7 @@ GL_PREFIX(RequestResidentProgramsNV): GL_PREFIX(TrackMatrixNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5784(%rax), %r11 + movq 5912(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27232,13 +27820,13 @@ GL_PREFIX(TrackMatrixNV): popq %rdx popq %rsi popq %rdi - movq 5784(%rax), %r11 + movq 5912(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5784(%rax), %r11 + movq 5912(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27252,7 +27840,7 @@ GL_PREFIX(TrackMatrixNV): popq %rdx popq %rsi popq %rdi - movq 5784(%rax), %r11 + movq 5912(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(TrackMatrixNV), .-GL_PREFIX(TrackMatrixNV) @@ -27263,7 +27851,7 @@ GL_PREFIX(TrackMatrixNV): GL_PREFIX(VertexAttrib1dNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5792(%rax), %r11 + movq 5920(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -27273,13 +27861,13 @@ GL_PREFIX(VertexAttrib1dNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5792(%rax), %r11 + movq 5920(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5792(%rax), %r11 + movq 5920(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -27289,7 +27877,7 @@ GL_PREFIX(VertexAttrib1dNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5792(%rax), %r11 + movq 5920(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib1dNV), .-GL_PREFIX(VertexAttrib1dNV) @@ -27300,7 +27888,7 @@ GL_PREFIX(VertexAttrib1dNV): GL_PREFIX(VertexAttrib1dvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5800(%rax), %r11 + movq 5928(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27310,13 +27898,13 @@ GL_PREFIX(VertexAttrib1dvNV): popq %rbp popq %rsi popq %rdi - movq 5800(%rax), %r11 + movq 5928(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5800(%rax), %r11 + movq 5928(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27326,7 +27914,7 @@ GL_PREFIX(VertexAttrib1dvNV): popq %rbp popq %rsi popq %rdi - movq 5800(%rax), %r11 + movq 5928(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib1dvNV), .-GL_PREFIX(VertexAttrib1dvNV) @@ -27337,7 +27925,7 @@ GL_PREFIX(VertexAttrib1dvNV): GL_PREFIX(VertexAttrib1fNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5808(%rax), %r11 + movq 5936(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -27347,13 +27935,13 @@ GL_PREFIX(VertexAttrib1fNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5808(%rax), %r11 + movq 5936(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5808(%rax), %r11 + movq 5936(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -27363,7 +27951,7 @@ GL_PREFIX(VertexAttrib1fNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5808(%rax), %r11 + movq 5936(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib1fNV), .-GL_PREFIX(VertexAttrib1fNV) @@ -27374,7 +27962,7 @@ GL_PREFIX(VertexAttrib1fNV): GL_PREFIX(VertexAttrib1fvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5816(%rax), %r11 + movq 5944(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27384,13 +27972,13 @@ GL_PREFIX(VertexAttrib1fvNV): popq %rbp popq %rsi popq %rdi - movq 5816(%rax), %r11 + movq 5944(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5816(%rax), %r11 + movq 5944(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27400,7 +27988,7 @@ GL_PREFIX(VertexAttrib1fvNV): popq %rbp popq %rsi popq %rdi - movq 5816(%rax), %r11 + movq 5944(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib1fvNV), .-GL_PREFIX(VertexAttrib1fvNV) @@ -27411,7 +27999,7 @@ GL_PREFIX(VertexAttrib1fvNV): GL_PREFIX(VertexAttrib1sNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5824(%rax), %r11 + movq 5952(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27421,13 +28009,13 @@ GL_PREFIX(VertexAttrib1sNV): popq %rbp popq %rsi popq %rdi - movq 5824(%rax), %r11 + movq 5952(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5824(%rax), %r11 + movq 5952(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27437,7 +28025,7 @@ GL_PREFIX(VertexAttrib1sNV): popq %rbp popq %rsi popq %rdi - movq 5824(%rax), %r11 + movq 5952(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib1sNV), .-GL_PREFIX(VertexAttrib1sNV) @@ -27448,7 +28036,7 @@ GL_PREFIX(VertexAttrib1sNV): GL_PREFIX(VertexAttrib1svNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5832(%rax), %r11 + movq 5960(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27458,13 +28046,13 @@ GL_PREFIX(VertexAttrib1svNV): popq %rbp popq %rsi popq %rdi - movq 5832(%rax), %r11 + movq 5960(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5832(%rax), %r11 + movq 5960(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27474,7 +28062,7 @@ GL_PREFIX(VertexAttrib1svNV): popq %rbp popq %rsi popq %rdi - movq 5832(%rax), %r11 + movq 5960(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib1svNV), .-GL_PREFIX(VertexAttrib1svNV) @@ -27485,7 +28073,7 @@ GL_PREFIX(VertexAttrib1svNV): GL_PREFIX(VertexAttrib2dNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5840(%rax), %r11 + movq 5968(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -27497,13 +28085,13 @@ GL_PREFIX(VertexAttrib2dNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5840(%rax), %r11 + movq 5968(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5840(%rax), %r11 + movq 5968(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -27515,7 +28103,7 @@ GL_PREFIX(VertexAttrib2dNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5840(%rax), %r11 + movq 5968(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib2dNV), .-GL_PREFIX(VertexAttrib2dNV) @@ -27526,7 +28114,7 @@ GL_PREFIX(VertexAttrib2dNV): GL_PREFIX(VertexAttrib2dvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5848(%rax), %r11 + movq 5976(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27536,13 +28124,13 @@ GL_PREFIX(VertexAttrib2dvNV): popq %rbp popq %rsi popq %rdi - movq 5848(%rax), %r11 + movq 5976(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5848(%rax), %r11 + movq 5976(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27552,7 +28140,7 @@ GL_PREFIX(VertexAttrib2dvNV): popq %rbp popq %rsi popq %rdi - movq 5848(%rax), %r11 + movq 5976(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib2dvNV), .-GL_PREFIX(VertexAttrib2dvNV) @@ -27563,7 +28151,7 @@ GL_PREFIX(VertexAttrib2dvNV): GL_PREFIX(VertexAttrib2fNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5856(%rax), %r11 + movq 5984(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $24, %rsp @@ -27575,13 +28163,13 @@ GL_PREFIX(VertexAttrib2fNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5856(%rax), %r11 + movq 5984(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5856(%rax), %r11 + movq 5984(%rax), %r11 jmp *%r11 1: subq $24, %rsp @@ -27593,7 +28181,7 @@ GL_PREFIX(VertexAttrib2fNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $24, %rsp - movq 5856(%rax), %r11 + movq 5984(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib2fNV), .-GL_PREFIX(VertexAttrib2fNV) @@ -27604,7 +28192,7 @@ GL_PREFIX(VertexAttrib2fNV): GL_PREFIX(VertexAttrib2fvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5864(%rax), %r11 + movq 5992(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27614,13 +28202,13 @@ GL_PREFIX(VertexAttrib2fvNV): popq %rbp popq %rsi popq %rdi - movq 5864(%rax), %r11 + movq 5992(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5864(%rax), %r11 + movq 5992(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27630,7 +28218,7 @@ GL_PREFIX(VertexAttrib2fvNV): popq %rbp popq %rsi popq %rdi - movq 5864(%rax), %r11 + movq 5992(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib2fvNV), .-GL_PREFIX(VertexAttrib2fvNV) @@ -27641,7 +28229,7 @@ GL_PREFIX(VertexAttrib2fvNV): GL_PREFIX(VertexAttrib2sNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5872(%rax), %r11 + movq 6000(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27651,13 +28239,13 @@ GL_PREFIX(VertexAttrib2sNV): popq %rdx popq %rsi popq %rdi - movq 5872(%rax), %r11 + movq 6000(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5872(%rax), %r11 + movq 6000(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27667,7 +28255,7 @@ GL_PREFIX(VertexAttrib2sNV): popq %rdx popq %rsi popq %rdi - movq 5872(%rax), %r11 + movq 6000(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib2sNV), .-GL_PREFIX(VertexAttrib2sNV) @@ -27678,7 +28266,7 @@ GL_PREFIX(VertexAttrib2sNV): GL_PREFIX(VertexAttrib2svNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5880(%rax), %r11 + movq 6008(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27688,13 +28276,13 @@ GL_PREFIX(VertexAttrib2svNV): popq %rbp popq %rsi popq %rdi - movq 5880(%rax), %r11 + movq 6008(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5880(%rax), %r11 + movq 6008(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27704,7 +28292,7 @@ GL_PREFIX(VertexAttrib2svNV): popq %rbp popq %rsi popq %rdi - movq 5880(%rax), %r11 + movq 6008(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib2svNV), .-GL_PREFIX(VertexAttrib2svNV) @@ -27715,7 +28303,7 @@ GL_PREFIX(VertexAttrib2svNV): GL_PREFIX(VertexAttrib3dNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5888(%rax), %r11 + movq 6016(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $40, %rsp @@ -27729,13 +28317,13 @@ GL_PREFIX(VertexAttrib3dNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 5888(%rax), %r11 + movq 6016(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5888(%rax), %r11 + movq 6016(%rax), %r11 jmp *%r11 1: subq $40, %rsp @@ -27749,7 +28337,7 @@ GL_PREFIX(VertexAttrib3dNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 5888(%rax), %r11 + movq 6016(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib3dNV), .-GL_PREFIX(VertexAttrib3dNV) @@ -27760,7 +28348,7 @@ GL_PREFIX(VertexAttrib3dNV): GL_PREFIX(VertexAttrib3dvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5896(%rax), %r11 + movq 6024(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27770,13 +28358,13 @@ GL_PREFIX(VertexAttrib3dvNV): popq %rbp popq %rsi popq %rdi - movq 5896(%rax), %r11 + movq 6024(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5896(%rax), %r11 + movq 6024(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27786,7 +28374,7 @@ GL_PREFIX(VertexAttrib3dvNV): popq %rbp popq %rsi popq %rdi - movq 5896(%rax), %r11 + movq 6024(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib3dvNV), .-GL_PREFIX(VertexAttrib3dvNV) @@ -27797,7 +28385,7 @@ GL_PREFIX(VertexAttrib3dvNV): GL_PREFIX(VertexAttrib3fNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5904(%rax), %r11 + movq 6032(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $40, %rsp @@ -27811,13 +28399,13 @@ GL_PREFIX(VertexAttrib3fNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 5904(%rax), %r11 + movq 6032(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5904(%rax), %r11 + movq 6032(%rax), %r11 jmp *%r11 1: subq $40, %rsp @@ -27831,7 +28419,7 @@ GL_PREFIX(VertexAttrib3fNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 5904(%rax), %r11 + movq 6032(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib3fNV), .-GL_PREFIX(VertexAttrib3fNV) @@ -27842,7 +28430,7 @@ GL_PREFIX(VertexAttrib3fNV): GL_PREFIX(VertexAttrib3fvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5912(%rax), %r11 + movq 6040(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27852,13 +28440,13 @@ GL_PREFIX(VertexAttrib3fvNV): popq %rbp popq %rsi popq %rdi - movq 5912(%rax), %r11 + movq 6040(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5912(%rax), %r11 + movq 6040(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27868,7 +28456,7 @@ GL_PREFIX(VertexAttrib3fvNV): popq %rbp popq %rsi popq %rdi - movq 5912(%rax), %r11 + movq 6040(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib3fvNV), .-GL_PREFIX(VertexAttrib3fvNV) @@ -27879,7 +28467,7 @@ GL_PREFIX(VertexAttrib3fvNV): GL_PREFIX(VertexAttrib3sNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5920(%rax), %r11 + movq 6048(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27893,13 +28481,13 @@ GL_PREFIX(VertexAttrib3sNV): popq %rdx popq %rsi popq %rdi - movq 5920(%rax), %r11 + movq 6048(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5920(%rax), %r11 + movq 6048(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27913,7 +28501,7 @@ GL_PREFIX(VertexAttrib3sNV): popq %rdx popq %rsi popq %rdi - movq 5920(%rax), %r11 + movq 6048(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib3sNV), .-GL_PREFIX(VertexAttrib3sNV) @@ -27924,7 +28512,7 @@ GL_PREFIX(VertexAttrib3sNV): GL_PREFIX(VertexAttrib3svNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5928(%rax), %r11 + movq 6056(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -27934,13 +28522,13 @@ GL_PREFIX(VertexAttrib3svNV): popq %rbp popq %rsi popq %rdi - movq 5928(%rax), %r11 + movq 6056(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5928(%rax), %r11 + movq 6056(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -27950,7 +28538,7 @@ GL_PREFIX(VertexAttrib3svNV): popq %rbp popq %rsi popq %rdi - movq 5928(%rax), %r11 + movq 6056(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib3svNV), .-GL_PREFIX(VertexAttrib3svNV) @@ -27961,7 +28549,7 @@ GL_PREFIX(VertexAttrib3svNV): GL_PREFIX(VertexAttrib4dNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5936(%rax), %r11 + movq 6064(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $40, %rsp @@ -27977,13 +28565,13 @@ GL_PREFIX(VertexAttrib4dNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 5936(%rax), %r11 + movq 6064(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5936(%rax), %r11 + movq 6064(%rax), %r11 jmp *%r11 1: subq $40, %rsp @@ -27999,7 +28587,7 @@ GL_PREFIX(VertexAttrib4dNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 5936(%rax), %r11 + movq 6064(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4dNV), .-GL_PREFIX(VertexAttrib4dNV) @@ -28010,7 +28598,7 @@ GL_PREFIX(VertexAttrib4dNV): GL_PREFIX(VertexAttrib4dvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5944(%rax), %r11 + movq 6072(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28020,13 +28608,13 @@ GL_PREFIX(VertexAttrib4dvNV): popq %rbp popq %rsi popq %rdi - movq 5944(%rax), %r11 + movq 6072(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5944(%rax), %r11 + movq 6072(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28036,7 +28624,7 @@ GL_PREFIX(VertexAttrib4dvNV): popq %rbp popq %rsi popq %rdi - movq 5944(%rax), %r11 + movq 6072(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4dvNV), .-GL_PREFIX(VertexAttrib4dvNV) @@ -28047,7 +28635,7 @@ GL_PREFIX(VertexAttrib4dvNV): GL_PREFIX(VertexAttrib4fNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5952(%rax), %r11 + movq 6080(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $40, %rsp @@ -28063,13 +28651,13 @@ GL_PREFIX(VertexAttrib4fNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 5952(%rax), %r11 + movq 6080(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5952(%rax), %r11 + movq 6080(%rax), %r11 jmp *%r11 1: subq $40, %rsp @@ -28085,7 +28673,7 @@ GL_PREFIX(VertexAttrib4fNV): movq 8(%rsp), %xmm0 movq (%rsp), %rdi addq $40, %rsp - movq 5952(%rax), %r11 + movq 6080(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4fNV), .-GL_PREFIX(VertexAttrib4fNV) @@ -28096,7 +28684,7 @@ GL_PREFIX(VertexAttrib4fNV): GL_PREFIX(VertexAttrib4fvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5960(%rax), %r11 + movq 6088(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28106,13 +28694,13 @@ GL_PREFIX(VertexAttrib4fvNV): popq %rbp popq %rsi popq %rdi - movq 5960(%rax), %r11 + movq 6088(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5960(%rax), %r11 + movq 6088(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28122,7 +28710,7 @@ GL_PREFIX(VertexAttrib4fvNV): popq %rbp popq %rsi popq %rdi - movq 5960(%rax), %r11 + movq 6088(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4fvNV), .-GL_PREFIX(VertexAttrib4fvNV) @@ -28133,7 +28721,7 @@ GL_PREFIX(VertexAttrib4fvNV): GL_PREFIX(VertexAttrib4sNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5968(%rax), %r11 + movq 6096(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28147,13 +28735,13 @@ GL_PREFIX(VertexAttrib4sNV): popq %rdx popq %rsi popq %rdi - movq 5968(%rax), %r11 + movq 6096(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5968(%rax), %r11 + movq 6096(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28167,7 +28755,7 @@ GL_PREFIX(VertexAttrib4sNV): popq %rdx popq %rsi popq %rdi - movq 5968(%rax), %r11 + movq 6096(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4sNV), .-GL_PREFIX(VertexAttrib4sNV) @@ -28178,7 +28766,7 @@ GL_PREFIX(VertexAttrib4sNV): GL_PREFIX(VertexAttrib4svNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5976(%rax), %r11 + movq 6104(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28188,13 +28776,13 @@ GL_PREFIX(VertexAttrib4svNV): popq %rbp popq %rsi popq %rdi - movq 5976(%rax), %r11 + movq 6104(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5976(%rax), %r11 + movq 6104(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28204,7 +28792,7 @@ GL_PREFIX(VertexAttrib4svNV): popq %rbp popq %rsi popq %rdi - movq 5976(%rax), %r11 + movq 6104(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4svNV), .-GL_PREFIX(VertexAttrib4svNV) @@ -28215,7 +28803,7 @@ GL_PREFIX(VertexAttrib4svNV): GL_PREFIX(VertexAttrib4ubNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5984(%rax), %r11 + movq 6112(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28229,13 +28817,13 @@ GL_PREFIX(VertexAttrib4ubNV): popq %rdx popq %rsi popq %rdi - movq 5984(%rax), %r11 + movq 6112(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5984(%rax), %r11 + movq 6112(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28249,7 +28837,7 @@ GL_PREFIX(VertexAttrib4ubNV): popq %rdx popq %rsi popq %rdi - movq 5984(%rax), %r11 + movq 6112(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4ubNV), .-GL_PREFIX(VertexAttrib4ubNV) @@ -28260,7 +28848,7 @@ GL_PREFIX(VertexAttrib4ubNV): GL_PREFIX(VertexAttrib4ubvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 5992(%rax), %r11 + movq 6120(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28270,13 +28858,13 @@ GL_PREFIX(VertexAttrib4ubvNV): popq %rbp popq %rsi popq %rdi - movq 5992(%rax), %r11 + movq 6120(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 5992(%rax), %r11 + movq 6120(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28286,7 +28874,7 @@ GL_PREFIX(VertexAttrib4ubvNV): popq %rbp popq %rsi popq %rdi - movq 5992(%rax), %r11 + movq 6120(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttrib4ubvNV), .-GL_PREFIX(VertexAttrib4ubvNV) @@ -28297,7 +28885,7 @@ GL_PREFIX(VertexAttrib4ubvNV): GL_PREFIX(VertexAttribPointerNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6000(%rax), %r11 + movq 6128(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28311,13 +28899,13 @@ GL_PREFIX(VertexAttribPointerNV): popq %rdx popq %rsi popq %rdi - movq 6000(%rax), %r11 + movq 6128(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6000(%rax), %r11 + movq 6128(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28331,7 +28919,7 @@ GL_PREFIX(VertexAttribPointerNV): popq %rdx popq %rsi popq %rdi - movq 6000(%rax), %r11 + movq 6128(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribPointerNV), .-GL_PREFIX(VertexAttribPointerNV) @@ -28342,7 +28930,7 @@ GL_PREFIX(VertexAttribPointerNV): GL_PREFIX(VertexAttribs1dvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6008(%rax), %r11 + movq 6136(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28352,13 +28940,13 @@ GL_PREFIX(VertexAttribs1dvNV): popq %rdx popq %rsi popq %rdi - movq 6008(%rax), %r11 + movq 6136(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6008(%rax), %r11 + movq 6136(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28368,7 +28956,7 @@ GL_PREFIX(VertexAttribs1dvNV): popq %rdx popq %rsi popq %rdi - movq 6008(%rax), %r11 + movq 6136(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs1dvNV), .-GL_PREFIX(VertexAttribs1dvNV) @@ -28379,7 +28967,7 @@ GL_PREFIX(VertexAttribs1dvNV): GL_PREFIX(VertexAttribs1fvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6016(%rax), %r11 + movq 6144(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28389,13 +28977,13 @@ GL_PREFIX(VertexAttribs1fvNV): popq %rdx popq %rsi popq %rdi - movq 6016(%rax), %r11 + movq 6144(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6016(%rax), %r11 + movq 6144(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28405,7 +28993,7 @@ GL_PREFIX(VertexAttribs1fvNV): popq %rdx popq %rsi popq %rdi - movq 6016(%rax), %r11 + movq 6144(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs1fvNV), .-GL_PREFIX(VertexAttribs1fvNV) @@ -28416,7 +29004,7 @@ GL_PREFIX(VertexAttribs1fvNV): GL_PREFIX(VertexAttribs1svNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6024(%rax), %r11 + movq 6152(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28426,13 +29014,13 @@ GL_PREFIX(VertexAttribs1svNV): popq %rdx popq %rsi popq %rdi - movq 6024(%rax), %r11 + movq 6152(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6024(%rax), %r11 + movq 6152(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28442,7 +29030,7 @@ GL_PREFIX(VertexAttribs1svNV): popq %rdx popq %rsi popq %rdi - movq 6024(%rax), %r11 + movq 6152(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs1svNV), .-GL_PREFIX(VertexAttribs1svNV) @@ -28453,7 +29041,7 @@ GL_PREFIX(VertexAttribs1svNV): GL_PREFIX(VertexAttribs2dvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6032(%rax), %r11 + movq 6160(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28463,13 +29051,13 @@ GL_PREFIX(VertexAttribs2dvNV): popq %rdx popq %rsi popq %rdi - movq 6032(%rax), %r11 + movq 6160(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6032(%rax), %r11 + movq 6160(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28479,7 +29067,7 @@ GL_PREFIX(VertexAttribs2dvNV): popq %rdx popq %rsi popq %rdi - movq 6032(%rax), %r11 + movq 6160(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs2dvNV), .-GL_PREFIX(VertexAttribs2dvNV) @@ -28490,7 +29078,7 @@ GL_PREFIX(VertexAttribs2dvNV): GL_PREFIX(VertexAttribs2fvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6040(%rax), %r11 + movq 6168(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28500,13 +29088,13 @@ GL_PREFIX(VertexAttribs2fvNV): popq %rdx popq %rsi popq %rdi - movq 6040(%rax), %r11 + movq 6168(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6040(%rax), %r11 + movq 6168(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28516,7 +29104,7 @@ GL_PREFIX(VertexAttribs2fvNV): popq %rdx popq %rsi popq %rdi - movq 6040(%rax), %r11 + movq 6168(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs2fvNV), .-GL_PREFIX(VertexAttribs2fvNV) @@ -28527,7 +29115,7 @@ GL_PREFIX(VertexAttribs2fvNV): GL_PREFIX(VertexAttribs2svNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6048(%rax), %r11 + movq 6176(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28537,13 +29125,13 @@ GL_PREFIX(VertexAttribs2svNV): popq %rdx popq %rsi popq %rdi - movq 6048(%rax), %r11 + movq 6176(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6048(%rax), %r11 + movq 6176(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28553,7 +29141,7 @@ GL_PREFIX(VertexAttribs2svNV): popq %rdx popq %rsi popq %rdi - movq 6048(%rax), %r11 + movq 6176(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs2svNV), .-GL_PREFIX(VertexAttribs2svNV) @@ -28564,7 +29152,7 @@ GL_PREFIX(VertexAttribs2svNV): GL_PREFIX(VertexAttribs3dvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6056(%rax), %r11 + movq 6184(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28574,13 +29162,13 @@ GL_PREFIX(VertexAttribs3dvNV): popq %rdx popq %rsi popq %rdi - movq 6056(%rax), %r11 + movq 6184(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6056(%rax), %r11 + movq 6184(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28590,7 +29178,7 @@ GL_PREFIX(VertexAttribs3dvNV): popq %rdx popq %rsi popq %rdi - movq 6056(%rax), %r11 + movq 6184(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs3dvNV), .-GL_PREFIX(VertexAttribs3dvNV) @@ -28601,7 +29189,7 @@ GL_PREFIX(VertexAttribs3dvNV): GL_PREFIX(VertexAttribs3fvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6064(%rax), %r11 + movq 6192(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28611,13 +29199,13 @@ GL_PREFIX(VertexAttribs3fvNV): popq %rdx popq %rsi popq %rdi - movq 6064(%rax), %r11 + movq 6192(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6064(%rax), %r11 + movq 6192(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28627,7 +29215,7 @@ GL_PREFIX(VertexAttribs3fvNV): popq %rdx popq %rsi popq %rdi - movq 6064(%rax), %r11 + movq 6192(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs3fvNV), .-GL_PREFIX(VertexAttribs3fvNV) @@ -28638,7 +29226,7 @@ GL_PREFIX(VertexAttribs3fvNV): GL_PREFIX(VertexAttribs3svNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6072(%rax), %r11 + movq 6200(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28648,13 +29236,13 @@ GL_PREFIX(VertexAttribs3svNV): popq %rdx popq %rsi popq %rdi - movq 6072(%rax), %r11 + movq 6200(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6072(%rax), %r11 + movq 6200(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28664,7 +29252,7 @@ GL_PREFIX(VertexAttribs3svNV): popq %rdx popq %rsi popq %rdi - movq 6072(%rax), %r11 + movq 6200(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs3svNV), .-GL_PREFIX(VertexAttribs3svNV) @@ -28675,7 +29263,7 @@ GL_PREFIX(VertexAttribs3svNV): GL_PREFIX(VertexAttribs4dvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6080(%rax), %r11 + movq 6208(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28685,13 +29273,13 @@ GL_PREFIX(VertexAttribs4dvNV): popq %rdx popq %rsi popq %rdi - movq 6080(%rax), %r11 + movq 6208(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6080(%rax), %r11 + movq 6208(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28701,7 +29289,7 @@ GL_PREFIX(VertexAttribs4dvNV): popq %rdx popq %rsi popq %rdi - movq 6080(%rax), %r11 + movq 6208(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs4dvNV), .-GL_PREFIX(VertexAttribs4dvNV) @@ -28712,7 +29300,7 @@ GL_PREFIX(VertexAttribs4dvNV): GL_PREFIX(VertexAttribs4fvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6088(%rax), %r11 + movq 6216(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28722,13 +29310,13 @@ GL_PREFIX(VertexAttribs4fvNV): popq %rdx popq %rsi popq %rdi - movq 6088(%rax), %r11 + movq 6216(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6088(%rax), %r11 + movq 6216(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28738,7 +29326,7 @@ GL_PREFIX(VertexAttribs4fvNV): popq %rdx popq %rsi popq %rdi - movq 6088(%rax), %r11 + movq 6216(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs4fvNV), .-GL_PREFIX(VertexAttribs4fvNV) @@ -28749,7 +29337,7 @@ GL_PREFIX(VertexAttribs4fvNV): GL_PREFIX(VertexAttribs4svNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6096(%rax), %r11 + movq 6224(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28759,13 +29347,13 @@ GL_PREFIX(VertexAttribs4svNV): popq %rdx popq %rsi popq %rdi - movq 6096(%rax), %r11 + movq 6224(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6096(%rax), %r11 + movq 6224(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28775,7 +29363,7 @@ GL_PREFIX(VertexAttribs4svNV): popq %rdx popq %rsi popq %rdi - movq 6096(%rax), %r11 + movq 6224(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs4svNV), .-GL_PREFIX(VertexAttribs4svNV) @@ -28786,7 +29374,7 @@ GL_PREFIX(VertexAttribs4svNV): GL_PREFIX(VertexAttribs4ubvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6104(%rax), %r11 + movq 6232(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28796,13 +29384,13 @@ GL_PREFIX(VertexAttribs4ubvNV): popq %rdx popq %rsi popq %rdi - movq 6104(%rax), %r11 + movq 6232(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6104(%rax), %r11 + movq 6232(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28812,7 +29400,7 @@ GL_PREFIX(VertexAttribs4ubvNV): popq %rdx popq %rsi popq %rdi - movq 6104(%rax), %r11 + movq 6232(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribs4ubvNV), .-GL_PREFIX(VertexAttribs4ubvNV) @@ -28823,7 +29411,7 @@ GL_PREFIX(VertexAttribs4ubvNV): GL_PREFIX(GetTexBumpParameterfvATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6112(%rax), %r11 + movq 6240(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28833,13 +29421,13 @@ GL_PREFIX(GetTexBumpParameterfvATI): popq %rbp popq %rsi popq %rdi - movq 6112(%rax), %r11 + movq 6240(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6112(%rax), %r11 + movq 6240(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28849,7 +29437,7 @@ GL_PREFIX(GetTexBumpParameterfvATI): popq %rbp popq %rsi popq %rdi - movq 6112(%rax), %r11 + movq 6240(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetTexBumpParameterfvATI), .-GL_PREFIX(GetTexBumpParameterfvATI) @@ -28860,7 +29448,7 @@ GL_PREFIX(GetTexBumpParameterfvATI): GL_PREFIX(GetTexBumpParameterivATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6120(%rax), %r11 + movq 6248(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28870,13 +29458,13 @@ GL_PREFIX(GetTexBumpParameterivATI): popq %rbp popq %rsi popq %rdi - movq 6120(%rax), %r11 + movq 6248(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6120(%rax), %r11 + movq 6248(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28886,7 +29474,7 @@ GL_PREFIX(GetTexBumpParameterivATI): popq %rbp popq %rsi popq %rdi - movq 6120(%rax), %r11 + movq 6248(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetTexBumpParameterivATI), .-GL_PREFIX(GetTexBumpParameterivATI) @@ -28897,7 +29485,7 @@ GL_PREFIX(GetTexBumpParameterivATI): GL_PREFIX(TexBumpParameterfvATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6128(%rax), %r11 + movq 6256(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28907,13 +29495,13 @@ GL_PREFIX(TexBumpParameterfvATI): popq %rbp popq %rsi popq %rdi - movq 6128(%rax), %r11 + movq 6256(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6128(%rax), %r11 + movq 6256(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28923,7 +29511,7 @@ GL_PREFIX(TexBumpParameterfvATI): popq %rbp popq %rsi popq %rdi - movq 6128(%rax), %r11 + movq 6256(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(TexBumpParameterfvATI), .-GL_PREFIX(TexBumpParameterfvATI) @@ -28934,7 +29522,7 @@ GL_PREFIX(TexBumpParameterfvATI): GL_PREFIX(TexBumpParameterivATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6136(%rax), %r11 + movq 6264(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28944,13 +29532,13 @@ GL_PREFIX(TexBumpParameterivATI): popq %rbp popq %rsi popq %rdi - movq 6136(%rax), %r11 + movq 6264(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6136(%rax), %r11 + movq 6264(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -28960,7 +29548,7 @@ GL_PREFIX(TexBumpParameterivATI): popq %rbp popq %rsi popq %rdi - movq 6136(%rax), %r11 + movq 6264(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(TexBumpParameterivATI), .-GL_PREFIX(TexBumpParameterivATI) @@ -28971,7 +29559,7 @@ GL_PREFIX(TexBumpParameterivATI): GL_PREFIX(AlphaFragmentOp1ATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6144(%rax), %r11 + movq 6272(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -28989,13 +29577,13 @@ GL_PREFIX(AlphaFragmentOp1ATI): popq %rdx popq %rsi popq %rdi - movq 6144(%rax), %r11 + movq 6272(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6144(%rax), %r11 + movq 6272(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29013,7 +29601,7 @@ GL_PREFIX(AlphaFragmentOp1ATI): popq %rdx popq %rsi popq %rdi - movq 6144(%rax), %r11 + movq 6272(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(AlphaFragmentOp1ATI), .-GL_PREFIX(AlphaFragmentOp1ATI) @@ -29024,7 +29612,7 @@ GL_PREFIX(AlphaFragmentOp1ATI): GL_PREFIX(AlphaFragmentOp2ATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6152(%rax), %r11 + movq 6280(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29042,13 +29630,13 @@ GL_PREFIX(AlphaFragmentOp2ATI): popq %rdx popq %rsi popq %rdi - movq 6152(%rax), %r11 + movq 6280(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6152(%rax), %r11 + movq 6280(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29066,7 +29654,7 @@ GL_PREFIX(AlphaFragmentOp2ATI): popq %rdx popq %rsi popq %rdi - movq 6152(%rax), %r11 + movq 6280(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(AlphaFragmentOp2ATI), .-GL_PREFIX(AlphaFragmentOp2ATI) @@ -29077,7 +29665,7 @@ GL_PREFIX(AlphaFragmentOp2ATI): GL_PREFIX(AlphaFragmentOp3ATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6160(%rax), %r11 + movq 6288(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29095,13 +29683,13 @@ GL_PREFIX(AlphaFragmentOp3ATI): popq %rdx popq %rsi popq %rdi - movq 6160(%rax), %r11 + movq 6288(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6160(%rax), %r11 + movq 6288(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29119,7 +29707,7 @@ GL_PREFIX(AlphaFragmentOp3ATI): popq %rdx popq %rsi popq %rdi - movq 6160(%rax), %r11 + movq 6288(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(AlphaFragmentOp3ATI), .-GL_PREFIX(AlphaFragmentOp3ATI) @@ -29130,25 +29718,25 @@ GL_PREFIX(AlphaFragmentOp3ATI): GL_PREFIX(BeginFragmentShaderATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6168(%rax), %r11 + movq 6296(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 6168(%rax), %r11 + movq 6296(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6168(%rax), %r11 + movq 6296(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 6168(%rax), %r11 + movq 6296(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BeginFragmentShaderATI), .-GL_PREFIX(BeginFragmentShaderATI) @@ -29159,25 +29747,25 @@ GL_PREFIX(BeginFragmentShaderATI): GL_PREFIX(BindFragmentShaderATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6176(%rax), %r11 + movq 6304(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6176(%rax), %r11 + movq 6304(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6176(%rax), %r11 + movq 6304(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6176(%rax), %r11 + movq 6304(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BindFragmentShaderATI), .-GL_PREFIX(BindFragmentShaderATI) @@ -29188,7 +29776,7 @@ GL_PREFIX(BindFragmentShaderATI): GL_PREFIX(ColorFragmentOp1ATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6184(%rax), %r11 + movq 6312(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29206,13 +29794,13 @@ GL_PREFIX(ColorFragmentOp1ATI): popq %rdx popq %rsi popq %rdi - movq 6184(%rax), %r11 + movq 6312(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6184(%rax), %r11 + movq 6312(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29230,7 +29818,7 @@ GL_PREFIX(ColorFragmentOp1ATI): popq %rdx popq %rsi popq %rdi - movq 6184(%rax), %r11 + movq 6312(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ColorFragmentOp1ATI), .-GL_PREFIX(ColorFragmentOp1ATI) @@ -29241,7 +29829,7 @@ GL_PREFIX(ColorFragmentOp1ATI): GL_PREFIX(ColorFragmentOp2ATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6192(%rax), %r11 + movq 6320(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29259,13 +29847,13 @@ GL_PREFIX(ColorFragmentOp2ATI): popq %rdx popq %rsi popq %rdi - movq 6192(%rax), %r11 + movq 6320(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6192(%rax), %r11 + movq 6320(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29283,7 +29871,7 @@ GL_PREFIX(ColorFragmentOp2ATI): popq %rdx popq %rsi popq %rdi - movq 6192(%rax), %r11 + movq 6320(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ColorFragmentOp2ATI), .-GL_PREFIX(ColorFragmentOp2ATI) @@ -29294,7 +29882,7 @@ GL_PREFIX(ColorFragmentOp2ATI): GL_PREFIX(ColorFragmentOp3ATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6200(%rax), %r11 + movq 6328(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29312,13 +29900,13 @@ GL_PREFIX(ColorFragmentOp3ATI): popq %rdx popq %rsi popq %rdi - movq 6200(%rax), %r11 + movq 6328(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6200(%rax), %r11 + movq 6328(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29336,7 +29924,7 @@ GL_PREFIX(ColorFragmentOp3ATI): popq %rdx popq %rsi popq %rdi - movq 6200(%rax), %r11 + movq 6328(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ColorFragmentOp3ATI), .-GL_PREFIX(ColorFragmentOp3ATI) @@ -29347,25 +29935,25 @@ GL_PREFIX(ColorFragmentOp3ATI): GL_PREFIX(DeleteFragmentShaderATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6208(%rax), %r11 + movq 6336(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6208(%rax), %r11 + movq 6336(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6208(%rax), %r11 + movq 6336(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6208(%rax), %r11 + movq 6336(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DeleteFragmentShaderATI), .-GL_PREFIX(DeleteFragmentShaderATI) @@ -29376,25 +29964,25 @@ GL_PREFIX(DeleteFragmentShaderATI): GL_PREFIX(EndFragmentShaderATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6216(%rax), %r11 + movq 6344(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 6216(%rax), %r11 + movq 6344(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6216(%rax), %r11 + movq 6344(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 6216(%rax), %r11 + movq 6344(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(EndFragmentShaderATI), .-GL_PREFIX(EndFragmentShaderATI) @@ -29405,25 +29993,25 @@ GL_PREFIX(EndFragmentShaderATI): GL_PREFIX(GenFragmentShadersATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6224(%rax), %r11 + movq 6352(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6224(%rax), %r11 + movq 6352(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6224(%rax), %r11 + movq 6352(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6224(%rax), %r11 + movq 6352(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GenFragmentShadersATI), .-GL_PREFIX(GenFragmentShadersATI) @@ -29434,7 +30022,7 @@ GL_PREFIX(GenFragmentShadersATI): GL_PREFIX(PassTexCoordATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6232(%rax), %r11 + movq 6360(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29444,13 +30032,13 @@ GL_PREFIX(PassTexCoordATI): popq %rdx popq %rsi popq %rdi - movq 6232(%rax), %r11 + movq 6360(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6232(%rax), %r11 + movq 6360(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29460,7 +30048,7 @@ GL_PREFIX(PassTexCoordATI): popq %rdx popq %rsi popq %rdi - movq 6232(%rax), %r11 + movq 6360(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(PassTexCoordATI), .-GL_PREFIX(PassTexCoordATI) @@ -29471,7 +30059,7 @@ GL_PREFIX(PassTexCoordATI): GL_PREFIX(SampleMapATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6240(%rax), %r11 + movq 6368(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29481,13 +30069,13 @@ GL_PREFIX(SampleMapATI): popq %rdx popq %rsi popq %rdi - movq 6240(%rax), %r11 + movq 6368(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6240(%rax), %r11 + movq 6368(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29497,7 +30085,7 @@ GL_PREFIX(SampleMapATI): popq %rdx popq %rsi popq %rdi - movq 6240(%rax), %r11 + movq 6368(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SampleMapATI), .-GL_PREFIX(SampleMapATI) @@ -29508,7 +30096,7 @@ GL_PREFIX(SampleMapATI): GL_PREFIX(SetFragmentShaderConstantATI): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6248(%rax), %r11 + movq 6376(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29518,13 +30106,13 @@ GL_PREFIX(SetFragmentShaderConstantATI): popq %rbp popq %rsi popq %rdi - movq 6248(%rax), %r11 + movq 6376(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6248(%rax), %r11 + movq 6376(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29534,7 +30122,7 @@ GL_PREFIX(SetFragmentShaderConstantATI): popq %rbp popq %rsi popq %rdi - movq 6248(%rax), %r11 + movq 6376(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(SetFragmentShaderConstantATI), .-GL_PREFIX(SetFragmentShaderConstantATI) @@ -29545,7 +30133,7 @@ GL_PREFIX(SetFragmentShaderConstantATI): GL_PREFIX(PointParameteriNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6256(%rax), %r11 + movq 6384(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29555,13 +30143,13 @@ GL_PREFIX(PointParameteriNV): popq %rbp popq %rsi popq %rdi - movq 6256(%rax), %r11 + movq 6384(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6256(%rax), %r11 + movq 6384(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29571,7 +30159,7 @@ GL_PREFIX(PointParameteriNV): popq %rbp popq %rsi popq %rdi - movq 6256(%rax), %r11 + movq 6384(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(PointParameteriNV), .-GL_PREFIX(PointParameteriNV) @@ -29582,7 +30170,7 @@ GL_PREFIX(PointParameteriNV): GL_PREFIX(PointParameterivNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6264(%rax), %r11 + movq 6392(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29592,13 +30180,13 @@ GL_PREFIX(PointParameterivNV): popq %rbp popq %rsi popq %rdi - movq 6264(%rax), %r11 + movq 6392(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6264(%rax), %r11 + movq 6392(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29608,79 +30196,79 @@ GL_PREFIX(PointParameterivNV): popq %rbp popq %rsi popq %rdi - movq 6264(%rax), %r11 + movq 6392(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(PointParameterivNV), .-GL_PREFIX(PointParameterivNV) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_784) - .type GL_PREFIX(_dispatch_stub_784), @function - HIDDEN(GL_PREFIX(_dispatch_stub_784)) -GL_PREFIX(_dispatch_stub_784): + .globl GL_PREFIX(_dispatch_stub_800) + .type GL_PREFIX(_dispatch_stub_800), @function + HIDDEN(GL_PREFIX(_dispatch_stub_800)) +GL_PREFIX(_dispatch_stub_800): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6272(%rax), %r11 + movq 6400(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6272(%rax), %r11 + movq 6400(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6272(%rax), %r11 + movq 6400(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6272(%rax), %r11 + movq 6400(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_784), .-GL_PREFIX(_dispatch_stub_784) + .size GL_PREFIX(_dispatch_stub_800), .-GL_PREFIX(_dispatch_stub_800) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_785) - .type GL_PREFIX(_dispatch_stub_785), @function - HIDDEN(GL_PREFIX(_dispatch_stub_785)) -GL_PREFIX(_dispatch_stub_785): + .globl GL_PREFIX(_dispatch_stub_801) + .type GL_PREFIX(_dispatch_stub_801), @function + HIDDEN(GL_PREFIX(_dispatch_stub_801)) +GL_PREFIX(_dispatch_stub_801): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6280(%rax), %r11 + movq 6408(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6280(%rax), %r11 + movq 6408(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6280(%rax), %r11 + movq 6408(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6280(%rax), %r11 + movq 6408(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_785), .-GL_PREFIX(_dispatch_stub_785) + .size GL_PREFIX(_dispatch_stub_801), .-GL_PREFIX(_dispatch_stub_801) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_786) - .type GL_PREFIX(_dispatch_stub_786), @function - HIDDEN(GL_PREFIX(_dispatch_stub_786)) -GL_PREFIX(_dispatch_stub_786): + .globl GL_PREFIX(_dispatch_stub_802) + .type GL_PREFIX(_dispatch_stub_802), @function + HIDDEN(GL_PREFIX(_dispatch_stub_802)) +GL_PREFIX(_dispatch_stub_802): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6288(%rax), %r11 + movq 6416(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29690,13 +30278,13 @@ GL_PREFIX(_dispatch_stub_786): popq %rbp popq %rsi popq %rdi - movq 6288(%rax), %r11 + movq 6416(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6288(%rax), %r11 + movq 6416(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29706,19 +30294,19 @@ GL_PREFIX(_dispatch_stub_786): popq %rbp popq %rsi popq %rdi - movq 6288(%rax), %r11 + movq 6416(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_786), .-GL_PREFIX(_dispatch_stub_786) + .size GL_PREFIX(_dispatch_stub_802), .-GL_PREFIX(_dispatch_stub_802) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_787) - .type GL_PREFIX(_dispatch_stub_787), @function - HIDDEN(GL_PREFIX(_dispatch_stub_787)) -GL_PREFIX(_dispatch_stub_787): + .globl GL_PREFIX(_dispatch_stub_803) + .type GL_PREFIX(_dispatch_stub_803), @function + HIDDEN(GL_PREFIX(_dispatch_stub_803)) +GL_PREFIX(_dispatch_stub_803): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6296(%rax), %r11 + movq 6424(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29728,13 +30316,13 @@ GL_PREFIX(_dispatch_stub_787): popq %rbp popq %rsi popq %rdi - movq 6296(%rax), %r11 + movq 6424(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6296(%rax), %r11 + movq 6424(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29744,40 +30332,40 @@ GL_PREFIX(_dispatch_stub_787): popq %rbp popq %rsi popq %rdi - movq 6296(%rax), %r11 + movq 6424(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_787), .-GL_PREFIX(_dispatch_stub_787) + .size GL_PREFIX(_dispatch_stub_803), .-GL_PREFIX(_dispatch_stub_803) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_788) - .type GL_PREFIX(_dispatch_stub_788), @function - HIDDEN(GL_PREFIX(_dispatch_stub_788)) -GL_PREFIX(_dispatch_stub_788): + .globl GL_PREFIX(_dispatch_stub_804) + .type GL_PREFIX(_dispatch_stub_804), @function + HIDDEN(GL_PREFIX(_dispatch_stub_804)) +GL_PREFIX(_dispatch_stub_804): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6304(%rax), %r11 + movq 6432(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6304(%rax), %r11 + movq 6432(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6304(%rax), %r11 + movq 6432(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6304(%rax), %r11 + movq 6432(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_788), .-GL_PREFIX(_dispatch_stub_788) + .size GL_PREFIX(_dispatch_stub_804), .-GL_PREFIX(_dispatch_stub_804) .p2align 4,,15 .globl GL_PREFIX(GetProgramNamedParameterdvNV) @@ -29785,7 +30373,7 @@ GL_PREFIX(_dispatch_stub_788): GL_PREFIX(GetProgramNamedParameterdvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6312(%rax), %r11 + movq 6440(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29799,13 +30387,13 @@ GL_PREFIX(GetProgramNamedParameterdvNV): popq %rdx popq %rsi popq %rdi - movq 6312(%rax), %r11 + movq 6440(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6312(%rax), %r11 + movq 6440(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29819,7 +30407,7 @@ GL_PREFIX(GetProgramNamedParameterdvNV): popq %rdx popq %rsi popq %rdi - movq 6312(%rax), %r11 + movq 6440(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetProgramNamedParameterdvNV), .-GL_PREFIX(GetProgramNamedParameterdvNV) @@ -29830,7 +30418,7 @@ GL_PREFIX(GetProgramNamedParameterdvNV): GL_PREFIX(GetProgramNamedParameterfvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6320(%rax), %r11 + movq 6448(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29844,13 +30432,13 @@ GL_PREFIX(GetProgramNamedParameterfvNV): popq %rdx popq %rsi popq %rdi - movq 6320(%rax), %r11 + movq 6448(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6320(%rax), %r11 + movq 6448(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29864,7 +30452,7 @@ GL_PREFIX(GetProgramNamedParameterfvNV): popq %rdx popq %rsi popq %rdi - movq 6320(%rax), %r11 + movq 6448(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetProgramNamedParameterfvNV), .-GL_PREFIX(GetProgramNamedParameterfvNV) @@ -29875,7 +30463,7 @@ GL_PREFIX(GetProgramNamedParameterfvNV): GL_PREFIX(ProgramNamedParameter4dNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6328(%rax), %r11 + movq 6456(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $56, %rsp @@ -29895,13 +30483,13 @@ GL_PREFIX(ProgramNamedParameter4dNV): movq 8(%rsp), %rsi movq (%rsp), %rdi addq $56, %rsp - movq 6328(%rax), %r11 + movq 6456(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6328(%rax), %r11 + movq 6456(%rax), %r11 jmp *%r11 1: subq $56, %rsp @@ -29921,7 +30509,7 @@ GL_PREFIX(ProgramNamedParameter4dNV): movq 8(%rsp), %rsi movq (%rsp), %rdi addq $56, %rsp - movq 6328(%rax), %r11 + movq 6456(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramNamedParameter4dNV), .-GL_PREFIX(ProgramNamedParameter4dNV) @@ -29932,7 +30520,7 @@ GL_PREFIX(ProgramNamedParameter4dNV): GL_PREFIX(ProgramNamedParameter4dvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6336(%rax), %r11 + movq 6464(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -29946,13 +30534,13 @@ GL_PREFIX(ProgramNamedParameter4dvNV): popq %rdx popq %rsi popq %rdi - movq 6336(%rax), %r11 + movq 6464(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6336(%rax), %r11 + movq 6464(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -29966,7 +30554,7 @@ GL_PREFIX(ProgramNamedParameter4dvNV): popq %rdx popq %rsi popq %rdi - movq 6336(%rax), %r11 + movq 6464(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramNamedParameter4dvNV), .-GL_PREFIX(ProgramNamedParameter4dvNV) @@ -29977,7 +30565,7 @@ GL_PREFIX(ProgramNamedParameter4dvNV): GL_PREFIX(ProgramNamedParameter4fNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6344(%rax), %r11 + movq 6472(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) subq $56, %rsp @@ -29997,13 +30585,13 @@ GL_PREFIX(ProgramNamedParameter4fNV): movq 8(%rsp), %rsi movq (%rsp), %rdi addq $56, %rsp - movq 6344(%rax), %r11 + movq 6472(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6344(%rax), %r11 + movq 6472(%rax), %r11 jmp *%r11 1: subq $56, %rsp @@ -30023,7 +30611,7 @@ GL_PREFIX(ProgramNamedParameter4fNV): movq 8(%rsp), %rsi movq (%rsp), %rdi addq $56, %rsp - movq 6344(%rax), %r11 + movq 6472(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramNamedParameter4fNV), .-GL_PREFIX(ProgramNamedParameter4fNV) @@ -30034,7 +30622,7 @@ GL_PREFIX(ProgramNamedParameter4fNV): GL_PREFIX(ProgramNamedParameter4fvNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6352(%rax), %r11 + movq 6480(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30048,13 +30636,13 @@ GL_PREFIX(ProgramNamedParameter4fvNV): popq %rdx popq %rsi popq %rdi - movq 6352(%rax), %r11 + movq 6480(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6352(%rax), %r11 + movq 6480(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30068,7 +30656,7 @@ GL_PREFIX(ProgramNamedParameter4fvNV): popq %rdx popq %rsi popq %rdi - movq 6352(%rax), %r11 + movq 6480(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProgramNamedParameter4fvNV), .-GL_PREFIX(ProgramNamedParameter4fvNV) @@ -30079,25 +30667,25 @@ GL_PREFIX(ProgramNamedParameter4fvNV): GL_PREFIX(PrimitiveRestartIndexNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6360(%rax), %r11 + movq 6488(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6360(%rax), %r11 + movq 6488(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6360(%rax), %r11 + movq 6488(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6360(%rax), %r11 + movq 6488(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(PrimitiveRestartIndexNV), .-GL_PREFIX(PrimitiveRestartIndexNV) @@ -30108,37 +30696,37 @@ GL_PREFIX(PrimitiveRestartIndexNV): GL_PREFIX(PrimitiveRestartNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6368(%rax), %r11 + movq 6496(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 6368(%rax), %r11 + movq 6496(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6368(%rax), %r11 + movq 6496(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 6368(%rax), %r11 + movq 6496(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(PrimitiveRestartNV), .-GL_PREFIX(PrimitiveRestartNV) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_797) - .type GL_PREFIX(_dispatch_stub_797), @function - HIDDEN(GL_PREFIX(_dispatch_stub_797)) -GL_PREFIX(_dispatch_stub_797): + .globl GL_PREFIX(_dispatch_stub_813) + .type GL_PREFIX(_dispatch_stub_813), @function + HIDDEN(GL_PREFIX(_dispatch_stub_813)) +GL_PREFIX(_dispatch_stub_813): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6376(%rax), %r11 + movq 6504(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30148,13 +30736,13 @@ GL_PREFIX(_dispatch_stub_797): popq %rbp popq %rsi popq %rdi - movq 6376(%rax), %r11 + movq 6504(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6376(%rax), %r11 + movq 6504(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30164,19 +30752,19 @@ GL_PREFIX(_dispatch_stub_797): popq %rbp popq %rsi popq %rdi - movq 6376(%rax), %r11 + movq 6504(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_797), .-GL_PREFIX(_dispatch_stub_797) + .size GL_PREFIX(_dispatch_stub_813), .-GL_PREFIX(_dispatch_stub_813) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_798) - .type GL_PREFIX(_dispatch_stub_798), @function - HIDDEN(GL_PREFIX(_dispatch_stub_798)) -GL_PREFIX(_dispatch_stub_798): + .globl GL_PREFIX(_dispatch_stub_814) + .type GL_PREFIX(_dispatch_stub_814), @function + HIDDEN(GL_PREFIX(_dispatch_stub_814)) +GL_PREFIX(_dispatch_stub_814): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6384(%rax), %r11 + movq 6512(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30186,13 +30774,13 @@ GL_PREFIX(_dispatch_stub_798): popq %rbp popq %rsi popq %rdi - movq 6384(%rax), %r11 + movq 6512(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6384(%rax), %r11 + movq 6512(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30202,10 +30790,10 @@ GL_PREFIX(_dispatch_stub_798): popq %rbp popq %rsi popq %rdi - movq 6384(%rax), %r11 + movq 6512(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_798), .-GL_PREFIX(_dispatch_stub_798) + .size GL_PREFIX(_dispatch_stub_814), .-GL_PREFIX(_dispatch_stub_814) .p2align 4,,15 .globl GL_PREFIX(BindFramebufferEXT) @@ -30213,7 +30801,7 @@ GL_PREFIX(_dispatch_stub_798): GL_PREFIX(BindFramebufferEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6392(%rax), %r11 + movq 6520(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30223,13 +30811,13 @@ GL_PREFIX(BindFramebufferEXT): popq %rbp popq %rsi popq %rdi - movq 6392(%rax), %r11 + movq 6520(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6392(%rax), %r11 + movq 6520(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30239,7 +30827,7 @@ GL_PREFIX(BindFramebufferEXT): popq %rbp popq %rsi popq %rdi - movq 6392(%rax), %r11 + movq 6520(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BindFramebufferEXT), .-GL_PREFIX(BindFramebufferEXT) @@ -30250,7 +30838,7 @@ GL_PREFIX(BindFramebufferEXT): GL_PREFIX(BindRenderbufferEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6400(%rax), %r11 + movq 6528(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30260,13 +30848,13 @@ GL_PREFIX(BindRenderbufferEXT): popq %rbp popq %rsi popq %rdi - movq 6400(%rax), %r11 + movq 6528(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6400(%rax), %r11 + movq 6528(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30276,7 +30864,7 @@ GL_PREFIX(BindRenderbufferEXT): popq %rbp popq %rsi popq %rdi - movq 6400(%rax), %r11 + movq 6528(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BindRenderbufferEXT), .-GL_PREFIX(BindRenderbufferEXT) @@ -30287,25 +30875,25 @@ GL_PREFIX(BindRenderbufferEXT): GL_PREFIX(CheckFramebufferStatusEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6408(%rax), %r11 + movq 6536(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6408(%rax), %r11 + movq 6536(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6408(%rax), %r11 + movq 6536(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6408(%rax), %r11 + movq 6536(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CheckFramebufferStatusEXT), .-GL_PREFIX(CheckFramebufferStatusEXT) @@ -30316,7 +30904,7 @@ GL_PREFIX(CheckFramebufferStatusEXT): GL_PREFIX(DeleteFramebuffersEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6416(%rax), %r11 + movq 6544(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30326,13 +30914,13 @@ GL_PREFIX(DeleteFramebuffersEXT): popq %rbp popq %rsi popq %rdi - movq 6416(%rax), %r11 + movq 6544(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6416(%rax), %r11 + movq 6544(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30342,7 +30930,7 @@ GL_PREFIX(DeleteFramebuffersEXT): popq %rbp popq %rsi popq %rdi - movq 6416(%rax), %r11 + movq 6544(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DeleteFramebuffersEXT), .-GL_PREFIX(DeleteFramebuffersEXT) @@ -30353,7 +30941,7 @@ GL_PREFIX(DeleteFramebuffersEXT): GL_PREFIX(DeleteRenderbuffersEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6424(%rax), %r11 + movq 6552(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30363,13 +30951,13 @@ GL_PREFIX(DeleteRenderbuffersEXT): popq %rbp popq %rsi popq %rdi - movq 6424(%rax), %r11 + movq 6552(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6424(%rax), %r11 + movq 6552(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30379,7 +30967,7 @@ GL_PREFIX(DeleteRenderbuffersEXT): popq %rbp popq %rsi popq %rdi - movq 6424(%rax), %r11 + movq 6552(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DeleteRenderbuffersEXT), .-GL_PREFIX(DeleteRenderbuffersEXT) @@ -30390,7 +30978,7 @@ GL_PREFIX(DeleteRenderbuffersEXT): GL_PREFIX(FramebufferRenderbufferEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6432(%rax), %r11 + movq 6560(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30404,13 +30992,13 @@ GL_PREFIX(FramebufferRenderbufferEXT): popq %rdx popq %rsi popq %rdi - movq 6432(%rax), %r11 + movq 6560(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6432(%rax), %r11 + movq 6560(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30424,7 +31012,7 @@ GL_PREFIX(FramebufferRenderbufferEXT): popq %rdx popq %rsi popq %rdi - movq 6432(%rax), %r11 + movq 6560(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FramebufferRenderbufferEXT), .-GL_PREFIX(FramebufferRenderbufferEXT) @@ -30435,7 +31023,7 @@ GL_PREFIX(FramebufferRenderbufferEXT): GL_PREFIX(FramebufferTexture1DEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6440(%rax), %r11 + movq 6568(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30449,13 +31037,13 @@ GL_PREFIX(FramebufferTexture1DEXT): popq %rdx popq %rsi popq %rdi - movq 6440(%rax), %r11 + movq 6568(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6440(%rax), %r11 + movq 6568(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30469,7 +31057,7 @@ GL_PREFIX(FramebufferTexture1DEXT): popq %rdx popq %rsi popq %rdi - movq 6440(%rax), %r11 + movq 6568(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FramebufferTexture1DEXT), .-GL_PREFIX(FramebufferTexture1DEXT) @@ -30480,7 +31068,7 @@ GL_PREFIX(FramebufferTexture1DEXT): GL_PREFIX(FramebufferTexture2DEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6448(%rax), %r11 + movq 6576(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30494,13 +31082,13 @@ GL_PREFIX(FramebufferTexture2DEXT): popq %rdx popq %rsi popq %rdi - movq 6448(%rax), %r11 + movq 6576(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6448(%rax), %r11 + movq 6576(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30514,7 +31102,7 @@ GL_PREFIX(FramebufferTexture2DEXT): popq %rdx popq %rsi popq %rdi - movq 6448(%rax), %r11 + movq 6576(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FramebufferTexture2DEXT), .-GL_PREFIX(FramebufferTexture2DEXT) @@ -30525,7 +31113,7 @@ GL_PREFIX(FramebufferTexture2DEXT): GL_PREFIX(FramebufferTexture3DEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6456(%rax), %r11 + movq 6584(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30543,13 +31131,13 @@ GL_PREFIX(FramebufferTexture3DEXT): popq %rdx popq %rsi popq %rdi - movq 6456(%rax), %r11 + movq 6584(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6456(%rax), %r11 + movq 6584(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30567,7 +31155,7 @@ GL_PREFIX(FramebufferTexture3DEXT): popq %rdx popq %rsi popq %rdi - movq 6456(%rax), %r11 + movq 6584(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FramebufferTexture3DEXT), .-GL_PREFIX(FramebufferTexture3DEXT) @@ -30578,7 +31166,7 @@ GL_PREFIX(FramebufferTexture3DEXT): GL_PREFIX(GenFramebuffersEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6464(%rax), %r11 + movq 6592(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30588,13 +31176,13 @@ GL_PREFIX(GenFramebuffersEXT): popq %rbp popq %rsi popq %rdi - movq 6464(%rax), %r11 + movq 6592(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6464(%rax), %r11 + movq 6592(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30604,7 +31192,7 @@ GL_PREFIX(GenFramebuffersEXT): popq %rbp popq %rsi popq %rdi - movq 6464(%rax), %r11 + movq 6592(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GenFramebuffersEXT), .-GL_PREFIX(GenFramebuffersEXT) @@ -30615,7 +31203,7 @@ GL_PREFIX(GenFramebuffersEXT): GL_PREFIX(GenRenderbuffersEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6472(%rax), %r11 + movq 6600(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30625,13 +31213,13 @@ GL_PREFIX(GenRenderbuffersEXT): popq %rbp popq %rsi popq %rdi - movq 6472(%rax), %r11 + movq 6600(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6472(%rax), %r11 + movq 6600(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30641,7 +31229,7 @@ GL_PREFIX(GenRenderbuffersEXT): popq %rbp popq %rsi popq %rdi - movq 6472(%rax), %r11 + movq 6600(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GenRenderbuffersEXT), .-GL_PREFIX(GenRenderbuffersEXT) @@ -30652,25 +31240,25 @@ GL_PREFIX(GenRenderbuffersEXT): GL_PREFIX(GenerateMipmapEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6480(%rax), %r11 + movq 6608(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6480(%rax), %r11 + movq 6608(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6480(%rax), %r11 + movq 6608(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6480(%rax), %r11 + movq 6608(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GenerateMipmapEXT), .-GL_PREFIX(GenerateMipmapEXT) @@ -30681,7 +31269,7 @@ GL_PREFIX(GenerateMipmapEXT): GL_PREFIX(GetFramebufferAttachmentParameterivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6488(%rax), %r11 + movq 6616(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30695,13 +31283,13 @@ GL_PREFIX(GetFramebufferAttachmentParameterivEXT): popq %rdx popq %rsi popq %rdi - movq 6488(%rax), %r11 + movq 6616(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6488(%rax), %r11 + movq 6616(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30715,7 +31303,7 @@ GL_PREFIX(GetFramebufferAttachmentParameterivEXT): popq %rdx popq %rsi popq %rdi - movq 6488(%rax), %r11 + movq 6616(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetFramebufferAttachmentParameterivEXT), .-GL_PREFIX(GetFramebufferAttachmentParameterivEXT) @@ -30726,7 +31314,7 @@ GL_PREFIX(GetFramebufferAttachmentParameterivEXT): GL_PREFIX(GetRenderbufferParameterivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6496(%rax), %r11 + movq 6624(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30736,13 +31324,13 @@ GL_PREFIX(GetRenderbufferParameterivEXT): popq %rdx popq %rsi popq %rdi - movq 6496(%rax), %r11 + movq 6624(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6496(%rax), %r11 + movq 6624(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30752,7 +31340,7 @@ GL_PREFIX(GetRenderbufferParameterivEXT): popq %rdx popq %rsi popq %rdi - movq 6496(%rax), %r11 + movq 6624(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetRenderbufferParameterivEXT), .-GL_PREFIX(GetRenderbufferParameterivEXT) @@ -30763,25 +31351,25 @@ GL_PREFIX(GetRenderbufferParameterivEXT): GL_PREFIX(IsFramebufferEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6504(%rax), %r11 + movq 6632(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6504(%rax), %r11 + movq 6632(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6504(%rax), %r11 + movq 6632(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6504(%rax), %r11 + movq 6632(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(IsFramebufferEXT), .-GL_PREFIX(IsFramebufferEXT) @@ -30792,25 +31380,25 @@ GL_PREFIX(IsFramebufferEXT): GL_PREFIX(IsRenderbufferEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6512(%rax), %r11 + movq 6640(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6512(%rax), %r11 + movq 6640(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6512(%rax), %r11 + movq 6640(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6512(%rax), %r11 + movq 6640(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(IsRenderbufferEXT), .-GL_PREFIX(IsRenderbufferEXT) @@ -30821,7 +31409,7 @@ GL_PREFIX(IsRenderbufferEXT): GL_PREFIX(RenderbufferStorageEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6520(%rax), %r11 + movq 6648(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30835,13 +31423,13 @@ GL_PREFIX(RenderbufferStorageEXT): popq %rdx popq %rsi popq %rdi - movq 6520(%rax), %r11 + movq 6648(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6520(%rax), %r11 + movq 6648(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30855,19 +31443,19 @@ GL_PREFIX(RenderbufferStorageEXT): popq %rdx popq %rsi popq %rdi - movq 6520(%rax), %r11 + movq 6648(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(RenderbufferStorageEXT), .-GL_PREFIX(RenderbufferStorageEXT) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_816) - .type GL_PREFIX(_dispatch_stub_816), @function - HIDDEN(GL_PREFIX(_dispatch_stub_816)) -GL_PREFIX(_dispatch_stub_816): + .globl GL_PREFIX(_dispatch_stub_832) + .type GL_PREFIX(_dispatch_stub_832), @function + HIDDEN(GL_PREFIX(_dispatch_stub_832)) +GL_PREFIX(_dispatch_stub_832): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6528(%rax), %r11 + movq 6656(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30885,13 +31473,13 @@ GL_PREFIX(_dispatch_stub_816): popq %rdx popq %rsi popq %rdi - movq 6528(%rax), %r11 + movq 6656(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6528(%rax), %r11 + movq 6656(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30909,19 +31497,19 @@ GL_PREFIX(_dispatch_stub_816): popq %rdx popq %rsi popq %rdi - movq 6528(%rax), %r11 + movq 6656(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_816), .-GL_PREFIX(_dispatch_stub_816) + .size GL_PREFIX(_dispatch_stub_832), .-GL_PREFIX(_dispatch_stub_832) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_817) - .type GL_PREFIX(_dispatch_stub_817), @function - HIDDEN(GL_PREFIX(_dispatch_stub_817)) -GL_PREFIX(_dispatch_stub_817): + .globl GL_PREFIX(_dispatch_stub_833) + .type GL_PREFIX(_dispatch_stub_833), @function + HIDDEN(GL_PREFIX(_dispatch_stub_833)) +GL_PREFIX(_dispatch_stub_833): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6536(%rax), %r11 + movq 6664(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30931,13 +31519,13 @@ GL_PREFIX(_dispatch_stub_817): popq %rdx popq %rsi popq %rdi - movq 6536(%rax), %r11 + movq 6664(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6536(%rax), %r11 + movq 6664(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30947,19 +31535,19 @@ GL_PREFIX(_dispatch_stub_817): popq %rdx popq %rsi popq %rdi - movq 6536(%rax), %r11 + movq 6664(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_817), .-GL_PREFIX(_dispatch_stub_817) + .size GL_PREFIX(_dispatch_stub_833), .-GL_PREFIX(_dispatch_stub_833) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_818) - .type GL_PREFIX(_dispatch_stub_818), @function - HIDDEN(GL_PREFIX(_dispatch_stub_818)) -GL_PREFIX(_dispatch_stub_818): + .globl GL_PREFIX(_dispatch_stub_834) + .type GL_PREFIX(_dispatch_stub_834), @function + HIDDEN(GL_PREFIX(_dispatch_stub_834)) +GL_PREFIX(_dispatch_stub_834): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6544(%rax), %r11 + movq 6672(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -30969,13 +31557,13 @@ GL_PREFIX(_dispatch_stub_818): popq %rdx popq %rsi popq %rdi - movq 6544(%rax), %r11 + movq 6672(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6544(%rax), %r11 + movq 6672(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -30985,10 +31573,10 @@ GL_PREFIX(_dispatch_stub_818): popq %rdx popq %rsi popq %rdi - movq 6544(%rax), %r11 + movq 6672(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_818), .-GL_PREFIX(_dispatch_stub_818) + .size GL_PREFIX(_dispatch_stub_834), .-GL_PREFIX(_dispatch_stub_834) .p2align 4,,15 .globl GL_PREFIX(BindFragDataLocationEXT) @@ -30996,7 +31584,7 @@ GL_PREFIX(_dispatch_stub_818): GL_PREFIX(BindFragDataLocationEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6552(%rax), %r11 + movq 6680(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31006,13 +31594,13 @@ GL_PREFIX(BindFragDataLocationEXT): popq %rdx popq %rsi popq %rdi - movq 6552(%rax), %r11 + movq 6680(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6552(%rax), %r11 + movq 6680(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31022,7 +31610,7 @@ GL_PREFIX(BindFragDataLocationEXT): popq %rdx popq %rsi popq %rdi - movq 6552(%rax), %r11 + movq 6680(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BindFragDataLocationEXT), .-GL_PREFIX(BindFragDataLocationEXT) @@ -31033,7 +31621,7 @@ GL_PREFIX(BindFragDataLocationEXT): GL_PREFIX(GetFragDataLocationEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6560(%rax), %r11 + movq 6688(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31043,13 +31631,13 @@ GL_PREFIX(GetFragDataLocationEXT): popq %rbp popq %rsi popq %rdi - movq 6560(%rax), %r11 + movq 6688(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6560(%rax), %r11 + movq 6688(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31059,7 +31647,7 @@ GL_PREFIX(GetFragDataLocationEXT): popq %rbp popq %rsi popq %rdi - movq 6560(%rax), %r11 + movq 6688(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetFragDataLocationEXT), .-GL_PREFIX(GetFragDataLocationEXT) @@ -31070,7 +31658,7 @@ GL_PREFIX(GetFragDataLocationEXT): GL_PREFIX(GetUniformuivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6568(%rax), %r11 + movq 6696(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31080,13 +31668,13 @@ GL_PREFIX(GetUniformuivEXT): popq %rdx popq %rsi popq %rdi - movq 6568(%rax), %r11 + movq 6696(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6568(%rax), %r11 + movq 6696(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31096,7 +31684,7 @@ GL_PREFIX(GetUniformuivEXT): popq %rdx popq %rsi popq %rdi - movq 6568(%rax), %r11 + movq 6696(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetUniformuivEXT), .-GL_PREFIX(GetUniformuivEXT) @@ -31107,7 +31695,7 @@ GL_PREFIX(GetUniformuivEXT): GL_PREFIX(GetVertexAttribIivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6576(%rax), %r11 + movq 6704(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31117,13 +31705,13 @@ GL_PREFIX(GetVertexAttribIivEXT): popq %rdx popq %rsi popq %rdi - movq 6576(%rax), %r11 + movq 6704(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6576(%rax), %r11 + movq 6704(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31133,7 +31721,7 @@ GL_PREFIX(GetVertexAttribIivEXT): popq %rdx popq %rsi popq %rdi - movq 6576(%rax), %r11 + movq 6704(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetVertexAttribIivEXT), .-GL_PREFIX(GetVertexAttribIivEXT) @@ -31144,7 +31732,7 @@ GL_PREFIX(GetVertexAttribIivEXT): GL_PREFIX(GetVertexAttribIuivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6584(%rax), %r11 + movq 6712(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31154,13 +31742,13 @@ GL_PREFIX(GetVertexAttribIuivEXT): popq %rdx popq %rsi popq %rdi - movq 6584(%rax), %r11 + movq 6712(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6584(%rax), %r11 + movq 6712(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31170,7 +31758,7 @@ GL_PREFIX(GetVertexAttribIuivEXT): popq %rdx popq %rsi popq %rdi - movq 6584(%rax), %r11 + movq 6712(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetVertexAttribIuivEXT), .-GL_PREFIX(GetVertexAttribIuivEXT) @@ -31181,7 +31769,7 @@ GL_PREFIX(GetVertexAttribIuivEXT): GL_PREFIX(Uniform1uiEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6592(%rax), %r11 + movq 6720(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31191,13 +31779,13 @@ GL_PREFIX(Uniform1uiEXT): popq %rbp popq %rsi popq %rdi - movq 6592(%rax), %r11 + movq 6720(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6592(%rax), %r11 + movq 6720(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31207,7 +31795,7 @@ GL_PREFIX(Uniform1uiEXT): popq %rbp popq %rsi popq %rdi - movq 6592(%rax), %r11 + movq 6720(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform1uiEXT), .-GL_PREFIX(Uniform1uiEXT) @@ -31218,7 +31806,7 @@ GL_PREFIX(Uniform1uiEXT): GL_PREFIX(Uniform1uivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6600(%rax), %r11 + movq 6728(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31228,13 +31816,13 @@ GL_PREFIX(Uniform1uivEXT): popq %rdx popq %rsi popq %rdi - movq 6600(%rax), %r11 + movq 6728(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6600(%rax), %r11 + movq 6728(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31244,7 +31832,7 @@ GL_PREFIX(Uniform1uivEXT): popq %rdx popq %rsi popq %rdi - movq 6600(%rax), %r11 + movq 6728(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform1uivEXT), .-GL_PREFIX(Uniform1uivEXT) @@ -31255,7 +31843,7 @@ GL_PREFIX(Uniform1uivEXT): GL_PREFIX(Uniform2uiEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6608(%rax), %r11 + movq 6736(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31265,13 +31853,13 @@ GL_PREFIX(Uniform2uiEXT): popq %rdx popq %rsi popq %rdi - movq 6608(%rax), %r11 + movq 6736(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6608(%rax), %r11 + movq 6736(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31281,7 +31869,7 @@ GL_PREFIX(Uniform2uiEXT): popq %rdx popq %rsi popq %rdi - movq 6608(%rax), %r11 + movq 6736(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform2uiEXT), .-GL_PREFIX(Uniform2uiEXT) @@ -31292,7 +31880,7 @@ GL_PREFIX(Uniform2uiEXT): GL_PREFIX(Uniform2uivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6616(%rax), %r11 + movq 6744(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31302,13 +31890,13 @@ GL_PREFIX(Uniform2uivEXT): popq %rdx popq %rsi popq %rdi - movq 6616(%rax), %r11 + movq 6744(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6616(%rax), %r11 + movq 6744(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31318,7 +31906,7 @@ GL_PREFIX(Uniform2uivEXT): popq %rdx popq %rsi popq %rdi - movq 6616(%rax), %r11 + movq 6744(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform2uivEXT), .-GL_PREFIX(Uniform2uivEXT) @@ -31329,7 +31917,7 @@ GL_PREFIX(Uniform2uivEXT): GL_PREFIX(Uniform3uiEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6624(%rax), %r11 + movq 6752(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31343,13 +31931,13 @@ GL_PREFIX(Uniform3uiEXT): popq %rdx popq %rsi popq %rdi - movq 6624(%rax), %r11 + movq 6752(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6624(%rax), %r11 + movq 6752(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31363,7 +31951,7 @@ GL_PREFIX(Uniform3uiEXT): popq %rdx popq %rsi popq %rdi - movq 6624(%rax), %r11 + movq 6752(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform3uiEXT), .-GL_PREFIX(Uniform3uiEXT) @@ -31374,7 +31962,7 @@ GL_PREFIX(Uniform3uiEXT): GL_PREFIX(Uniform3uivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6632(%rax), %r11 + movq 6760(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31384,13 +31972,13 @@ GL_PREFIX(Uniform3uivEXT): popq %rdx popq %rsi popq %rdi - movq 6632(%rax), %r11 + movq 6760(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6632(%rax), %r11 + movq 6760(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31400,7 +31988,7 @@ GL_PREFIX(Uniform3uivEXT): popq %rdx popq %rsi popq %rdi - movq 6632(%rax), %r11 + movq 6760(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform3uivEXT), .-GL_PREFIX(Uniform3uivEXT) @@ -31411,7 +31999,7 @@ GL_PREFIX(Uniform3uivEXT): GL_PREFIX(Uniform4uiEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6640(%rax), %r11 + movq 6768(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31425,13 +32013,13 @@ GL_PREFIX(Uniform4uiEXT): popq %rdx popq %rsi popq %rdi - movq 6640(%rax), %r11 + movq 6768(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6640(%rax), %r11 + movq 6768(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31445,7 +32033,7 @@ GL_PREFIX(Uniform4uiEXT): popq %rdx popq %rsi popq %rdi - movq 6640(%rax), %r11 + movq 6768(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform4uiEXT), .-GL_PREFIX(Uniform4uiEXT) @@ -31456,7 +32044,7 @@ GL_PREFIX(Uniform4uiEXT): GL_PREFIX(Uniform4uivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6648(%rax), %r11 + movq 6776(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31466,13 +32054,13 @@ GL_PREFIX(Uniform4uivEXT): popq %rdx popq %rsi popq %rdi - movq 6648(%rax), %r11 + movq 6776(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6648(%rax), %r11 + movq 6776(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31482,7 +32070,7 @@ GL_PREFIX(Uniform4uivEXT): popq %rdx popq %rsi popq %rdi - movq 6648(%rax), %r11 + movq 6776(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(Uniform4uivEXT), .-GL_PREFIX(Uniform4uivEXT) @@ -31493,7 +32081,7 @@ GL_PREFIX(Uniform4uivEXT): GL_PREFIX(VertexAttribI1iEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6656(%rax), %r11 + movq 6784(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31503,13 +32091,13 @@ GL_PREFIX(VertexAttribI1iEXT): popq %rbp popq %rsi popq %rdi - movq 6656(%rax), %r11 + movq 6784(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6656(%rax), %r11 + movq 6784(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31519,7 +32107,7 @@ GL_PREFIX(VertexAttribI1iEXT): popq %rbp popq %rsi popq %rdi - movq 6656(%rax), %r11 + movq 6784(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribI1iEXT), .-GL_PREFIX(VertexAttribI1iEXT) @@ -31530,7 +32118,7 @@ GL_PREFIX(VertexAttribI1iEXT): GL_PREFIX(VertexAttribI1ivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6664(%rax), %r11 + movq 6792(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31540,13 +32128,13 @@ GL_PREFIX(VertexAttribI1ivEXT): popq %rbp popq %rsi popq %rdi - movq 6664(%rax), %r11 + movq 6792(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6664(%rax), %r11 + movq 6792(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31556,7 +32144,7 @@ GL_PREFIX(VertexAttribI1ivEXT): popq %rbp popq %rsi popq %rdi - movq 6664(%rax), %r11 + movq 6792(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribI1ivEXT), .-GL_PREFIX(VertexAttribI1ivEXT) @@ -31567,7 +32155,7 @@ GL_PREFIX(VertexAttribI1ivEXT): GL_PREFIX(VertexAttribI1uiEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6672(%rax), %r11 + movq 6800(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31577,13 +32165,13 @@ GL_PREFIX(VertexAttribI1uiEXT): popq %rbp popq %rsi popq %rdi - movq 6672(%rax), %r11 + movq 6800(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6672(%rax), %r11 + movq 6800(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31593,7 +32181,7 @@ GL_PREFIX(VertexAttribI1uiEXT): popq %rbp popq %rsi popq %rdi - movq 6672(%rax), %r11 + movq 6800(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribI1uiEXT), .-GL_PREFIX(VertexAttribI1uiEXT) @@ -31604,7 +32192,7 @@ GL_PREFIX(VertexAttribI1uiEXT): GL_PREFIX(VertexAttribI1uivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6680(%rax), %r11 + movq 6808(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31614,13 +32202,13 @@ GL_PREFIX(VertexAttribI1uivEXT): popq %rbp popq %rsi popq %rdi - movq 6680(%rax), %r11 + movq 6808(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6680(%rax), %r11 + movq 6808(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31630,7 +32218,7 @@ GL_PREFIX(VertexAttribI1uivEXT): popq %rbp popq %rsi popq %rdi - movq 6680(%rax), %r11 + movq 6808(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribI1uivEXT), .-GL_PREFIX(VertexAttribI1uivEXT) @@ -31641,7 +32229,7 @@ GL_PREFIX(VertexAttribI1uivEXT): GL_PREFIX(VertexAttribI2iEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6688(%rax), %r11 + movq 6816(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31651,13 +32239,13 @@ GL_PREFIX(VertexAttribI2iEXT): popq %rdx popq %rsi popq %rdi - movq 6688(%rax), %r11 + movq 6816(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6688(%rax), %r11 + movq 6816(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31667,7 +32255,7 @@ GL_PREFIX(VertexAttribI2iEXT): popq %rdx popq %rsi popq %rdi - movq 6688(%rax), %r11 + movq 6816(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribI2iEXT), .-GL_PREFIX(VertexAttribI2iEXT) @@ -31678,7 +32266,7 @@ GL_PREFIX(VertexAttribI2iEXT): GL_PREFIX(VertexAttribI2ivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6696(%rax), %r11 + movq 6824(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31688,13 +32276,13 @@ GL_PREFIX(VertexAttribI2ivEXT): popq %rbp popq %rsi popq %rdi - movq 6696(%rax), %r11 + movq 6824(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6696(%rax), %r11 + movq 6824(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31704,7 +32292,7 @@ GL_PREFIX(VertexAttribI2ivEXT): popq %rbp popq %rsi popq %rdi - movq 6696(%rax), %r11 + movq 6824(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribI2ivEXT), .-GL_PREFIX(VertexAttribI2ivEXT) @@ -31715,7 +32303,7 @@ GL_PREFIX(VertexAttribI2ivEXT): GL_PREFIX(VertexAttribI2uiEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6704(%rax), %r11 + movq 6832(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31725,13 +32313,13 @@ GL_PREFIX(VertexAttribI2uiEXT): popq %rdx popq %rsi popq %rdi - movq 6704(%rax), %r11 + movq 6832(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6704(%rax), %r11 + movq 6832(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31741,7 +32329,7 @@ GL_PREFIX(VertexAttribI2uiEXT): popq %rdx popq %rsi popq %rdi - movq 6704(%rax), %r11 + movq 6832(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribI2uiEXT), .-GL_PREFIX(VertexAttribI2uiEXT) @@ -31752,7 +32340,7 @@ GL_PREFIX(VertexAttribI2uiEXT): GL_PREFIX(VertexAttribI2uivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6712(%rax), %r11 + movq 6840(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31762,13 +32350,13 @@ GL_PREFIX(VertexAttribI2uivEXT): popq %rbp popq %rsi popq %rdi - movq 6712(%rax), %r11 + movq 6840(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6712(%rax), %r11 + movq 6840(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31778,7 +32366,7 @@ GL_PREFIX(VertexAttribI2uivEXT): popq %rbp popq %rsi popq %rdi - movq 6712(%rax), %r11 + movq 6840(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribI2uivEXT), .-GL_PREFIX(VertexAttribI2uivEXT) @@ -31789,7 +32377,7 @@ GL_PREFIX(VertexAttribI2uivEXT): GL_PREFIX(VertexAttribI3iEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6720(%rax), %r11 + movq 6848(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31803,13 +32391,13 @@ GL_PREFIX(VertexAttribI3iEXT): popq %rdx popq %rsi popq %rdi - movq 6720(%rax), %r11 + movq 6848(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6720(%rax), %r11 + movq 6848(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31823,7 +32411,7 @@ GL_PREFIX(VertexAttribI3iEXT): popq %rdx popq %rsi popq %rdi - movq 6720(%rax), %r11 + movq 6848(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribI3iEXT), .-GL_PREFIX(VertexAttribI3iEXT) @@ -31834,7 +32422,7 @@ GL_PREFIX(VertexAttribI3iEXT): GL_PREFIX(VertexAttribI3ivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6728(%rax), %r11 + movq 6856(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31844,13 +32432,13 @@ GL_PREFIX(VertexAttribI3ivEXT): popq %rbp popq %rsi popq %rdi - movq 6728(%rax), %r11 + movq 6856(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6728(%rax), %r11 + movq 6856(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31860,7 +32448,7 @@ GL_PREFIX(VertexAttribI3ivEXT): popq %rbp popq %rsi popq %rdi - movq 6728(%rax), %r11 + movq 6856(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribI3ivEXT), .-GL_PREFIX(VertexAttribI3ivEXT) @@ -31871,7 +32459,7 @@ GL_PREFIX(VertexAttribI3ivEXT): GL_PREFIX(VertexAttribI3uiEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6736(%rax), %r11 + movq 6864(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31885,13 +32473,13 @@ GL_PREFIX(VertexAttribI3uiEXT): popq %rdx popq %rsi popq %rdi - movq 6736(%rax), %r11 + movq 6864(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6736(%rax), %r11 + movq 6864(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31905,7 +32493,7 @@ GL_PREFIX(VertexAttribI3uiEXT): popq %rdx popq %rsi popq %rdi - movq 6736(%rax), %r11 + movq 6864(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribI3uiEXT), .-GL_PREFIX(VertexAttribI3uiEXT) @@ -31916,7 +32504,7 @@ GL_PREFIX(VertexAttribI3uiEXT): GL_PREFIX(VertexAttribI3uivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6744(%rax), %r11 + movq 6872(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31926,13 +32514,13 @@ GL_PREFIX(VertexAttribI3uivEXT): popq %rbp popq %rsi popq %rdi - movq 6744(%rax), %r11 + movq 6872(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6744(%rax), %r11 + movq 6872(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31942,7 +32530,7 @@ GL_PREFIX(VertexAttribI3uivEXT): popq %rbp popq %rsi popq %rdi - movq 6744(%rax), %r11 + movq 6872(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribI3uivEXT), .-GL_PREFIX(VertexAttribI3uivEXT) @@ -31953,7 +32541,7 @@ GL_PREFIX(VertexAttribI3uivEXT): GL_PREFIX(VertexAttribI4bvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6752(%rax), %r11 + movq 6880(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -31963,13 +32551,13 @@ GL_PREFIX(VertexAttribI4bvEXT): popq %rbp popq %rsi popq %rdi - movq 6752(%rax), %r11 + movq 6880(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6752(%rax), %r11 + movq 6880(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -31979,7 +32567,7 @@ GL_PREFIX(VertexAttribI4bvEXT): popq %rbp popq %rsi popq %rdi - movq 6752(%rax), %r11 + movq 6880(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribI4bvEXT), .-GL_PREFIX(VertexAttribI4bvEXT) @@ -31990,7 +32578,7 @@ GL_PREFIX(VertexAttribI4bvEXT): GL_PREFIX(VertexAttribI4iEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6760(%rax), %r11 + movq 6888(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32004,13 +32592,13 @@ GL_PREFIX(VertexAttribI4iEXT): popq %rdx popq %rsi popq %rdi - movq 6760(%rax), %r11 + movq 6888(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6760(%rax), %r11 + movq 6888(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32024,7 +32612,7 @@ GL_PREFIX(VertexAttribI4iEXT): popq %rdx popq %rsi popq %rdi - movq 6760(%rax), %r11 + movq 6888(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribI4iEXT), .-GL_PREFIX(VertexAttribI4iEXT) @@ -32035,7 +32623,7 @@ GL_PREFIX(VertexAttribI4iEXT): GL_PREFIX(VertexAttribI4ivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6768(%rax), %r11 + movq 6896(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32045,13 +32633,13 @@ GL_PREFIX(VertexAttribI4ivEXT): popq %rbp popq %rsi popq %rdi - movq 6768(%rax), %r11 + movq 6896(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6768(%rax), %r11 + movq 6896(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32061,7 +32649,7 @@ GL_PREFIX(VertexAttribI4ivEXT): popq %rbp popq %rsi popq %rdi - movq 6768(%rax), %r11 + movq 6896(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribI4ivEXT), .-GL_PREFIX(VertexAttribI4ivEXT) @@ -32072,7 +32660,7 @@ GL_PREFIX(VertexAttribI4ivEXT): GL_PREFIX(VertexAttribI4svEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6776(%rax), %r11 + movq 6904(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32082,13 +32670,13 @@ GL_PREFIX(VertexAttribI4svEXT): popq %rbp popq %rsi popq %rdi - movq 6776(%rax), %r11 + movq 6904(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6776(%rax), %r11 + movq 6904(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32098,7 +32686,7 @@ GL_PREFIX(VertexAttribI4svEXT): popq %rbp popq %rsi popq %rdi - movq 6776(%rax), %r11 + movq 6904(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribI4svEXT), .-GL_PREFIX(VertexAttribI4svEXT) @@ -32109,7 +32697,7 @@ GL_PREFIX(VertexAttribI4svEXT): GL_PREFIX(VertexAttribI4ubvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6784(%rax), %r11 + movq 6912(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32119,13 +32707,13 @@ GL_PREFIX(VertexAttribI4ubvEXT): popq %rbp popq %rsi popq %rdi - movq 6784(%rax), %r11 + movq 6912(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6784(%rax), %r11 + movq 6912(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32135,7 +32723,7 @@ GL_PREFIX(VertexAttribI4ubvEXT): popq %rbp popq %rsi popq %rdi - movq 6784(%rax), %r11 + movq 6912(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribI4ubvEXT), .-GL_PREFIX(VertexAttribI4ubvEXT) @@ -32146,7 +32734,7 @@ GL_PREFIX(VertexAttribI4ubvEXT): GL_PREFIX(VertexAttribI4uiEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6792(%rax), %r11 + movq 6920(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32160,13 +32748,13 @@ GL_PREFIX(VertexAttribI4uiEXT): popq %rdx popq %rsi popq %rdi - movq 6792(%rax), %r11 + movq 6920(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6792(%rax), %r11 + movq 6920(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32180,7 +32768,7 @@ GL_PREFIX(VertexAttribI4uiEXT): popq %rdx popq %rsi popq %rdi - movq 6792(%rax), %r11 + movq 6920(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribI4uiEXT), .-GL_PREFIX(VertexAttribI4uiEXT) @@ -32191,7 +32779,7 @@ GL_PREFIX(VertexAttribI4uiEXT): GL_PREFIX(VertexAttribI4uivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6800(%rax), %r11 + movq 6928(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32201,13 +32789,13 @@ GL_PREFIX(VertexAttribI4uivEXT): popq %rbp popq %rsi popq %rdi - movq 6800(%rax), %r11 + movq 6928(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6800(%rax), %r11 + movq 6928(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32217,7 +32805,7 @@ GL_PREFIX(VertexAttribI4uivEXT): popq %rbp popq %rsi popq %rdi - movq 6800(%rax), %r11 + movq 6928(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribI4uivEXT), .-GL_PREFIX(VertexAttribI4uivEXT) @@ -32228,7 +32816,7 @@ GL_PREFIX(VertexAttribI4uivEXT): GL_PREFIX(VertexAttribI4usvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6808(%rax), %r11 + movq 6936(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32238,13 +32826,13 @@ GL_PREFIX(VertexAttribI4usvEXT): popq %rbp popq %rsi popq %rdi - movq 6808(%rax), %r11 + movq 6936(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6808(%rax), %r11 + movq 6936(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32254,7 +32842,7 @@ GL_PREFIX(VertexAttribI4usvEXT): popq %rbp popq %rsi popq %rdi - movq 6808(%rax), %r11 + movq 6936(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribI4usvEXT), .-GL_PREFIX(VertexAttribI4usvEXT) @@ -32265,7 +32853,7 @@ GL_PREFIX(VertexAttribI4usvEXT): GL_PREFIX(VertexAttribIPointerEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6816(%rax), %r11 + movq 6944(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32279,13 +32867,13 @@ GL_PREFIX(VertexAttribIPointerEXT): popq %rdx popq %rsi popq %rdi - movq 6816(%rax), %r11 + movq 6944(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6816(%rax), %r11 + movq 6944(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32299,7 +32887,7 @@ GL_PREFIX(VertexAttribIPointerEXT): popq %rdx popq %rsi popq %rdi - movq 6816(%rax), %r11 + movq 6944(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(VertexAttribIPointerEXT), .-GL_PREFIX(VertexAttribIPointerEXT) @@ -32310,7 +32898,7 @@ GL_PREFIX(VertexAttribIPointerEXT): GL_PREFIX(FramebufferTextureLayerEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6824(%rax), %r11 + movq 6952(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32324,13 +32912,13 @@ GL_PREFIX(FramebufferTextureLayerEXT): popq %rdx popq %rsi popq %rdi - movq 6824(%rax), %r11 + movq 6952(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6824(%rax), %r11 + movq 6952(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32344,7 +32932,7 @@ GL_PREFIX(FramebufferTextureLayerEXT): popq %rdx popq %rsi popq %rdi - movq 6824(%rax), %r11 + movq 6952(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(FramebufferTextureLayerEXT), .-GL_PREFIX(FramebufferTextureLayerEXT) @@ -32355,7 +32943,7 @@ GL_PREFIX(FramebufferTextureLayerEXT): GL_PREFIX(ColorMaskIndexedEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6832(%rax), %r11 + movq 6960(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32369,13 +32957,13 @@ GL_PREFIX(ColorMaskIndexedEXT): popq %rdx popq %rsi popq %rdi - movq 6832(%rax), %r11 + movq 6960(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6832(%rax), %r11 + movq 6960(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32389,7 +32977,7 @@ GL_PREFIX(ColorMaskIndexedEXT): popq %rdx popq %rsi popq %rdi - movq 6832(%rax), %r11 + movq 6960(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ColorMaskIndexedEXT), .-GL_PREFIX(ColorMaskIndexedEXT) @@ -32400,7 +32988,7 @@ GL_PREFIX(ColorMaskIndexedEXT): GL_PREFIX(DisableIndexedEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6840(%rax), %r11 + movq 6968(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32410,13 +32998,13 @@ GL_PREFIX(DisableIndexedEXT): popq %rbp popq %rsi popq %rdi - movq 6840(%rax), %r11 + movq 6968(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6840(%rax), %r11 + movq 6968(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32426,7 +33014,7 @@ GL_PREFIX(DisableIndexedEXT): popq %rbp popq %rsi popq %rdi - movq 6840(%rax), %r11 + movq 6968(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(DisableIndexedEXT), .-GL_PREFIX(DisableIndexedEXT) @@ -32437,7 +33025,7 @@ GL_PREFIX(DisableIndexedEXT): GL_PREFIX(EnableIndexedEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6848(%rax), %r11 + movq 6976(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32447,13 +33035,13 @@ GL_PREFIX(EnableIndexedEXT): popq %rbp popq %rsi popq %rdi - movq 6848(%rax), %r11 + movq 6976(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6848(%rax), %r11 + movq 6976(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32463,7 +33051,7 @@ GL_PREFIX(EnableIndexedEXT): popq %rbp popq %rsi popq %rdi - movq 6848(%rax), %r11 + movq 6976(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(EnableIndexedEXT), .-GL_PREFIX(EnableIndexedEXT) @@ -32474,7 +33062,7 @@ GL_PREFIX(EnableIndexedEXT): GL_PREFIX(GetBooleanIndexedvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6856(%rax), %r11 + movq 6984(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32484,13 +33072,13 @@ GL_PREFIX(GetBooleanIndexedvEXT): popq %rdx popq %rsi popq %rdi - movq 6856(%rax), %r11 + movq 6984(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6856(%rax), %r11 + movq 6984(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32500,7 +33088,7 @@ GL_PREFIX(GetBooleanIndexedvEXT): popq %rdx popq %rsi popq %rdi - movq 6856(%rax), %r11 + movq 6984(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetBooleanIndexedvEXT), .-GL_PREFIX(GetBooleanIndexedvEXT) @@ -32511,7 +33099,7 @@ GL_PREFIX(GetBooleanIndexedvEXT): GL_PREFIX(GetIntegerIndexedvEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6864(%rax), %r11 + movq 6992(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32521,13 +33109,13 @@ GL_PREFIX(GetIntegerIndexedvEXT): popq %rdx popq %rsi popq %rdi - movq 6864(%rax), %r11 + movq 6992(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6864(%rax), %r11 + movq 6992(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32537,7 +33125,7 @@ GL_PREFIX(GetIntegerIndexedvEXT): popq %rdx popq %rsi popq %rdi - movq 6864(%rax), %r11 + movq 6992(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetIntegerIndexedvEXT), .-GL_PREFIX(GetIntegerIndexedvEXT) @@ -32548,7 +33136,7 @@ GL_PREFIX(GetIntegerIndexedvEXT): GL_PREFIX(IsEnabledIndexedEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6872(%rax), %r11 + movq 7000(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32558,13 +33146,13 @@ GL_PREFIX(IsEnabledIndexedEXT): popq %rbp popq %rsi popq %rdi - movq 6872(%rax), %r11 + movq 7000(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6872(%rax), %r11 + movq 7000(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32574,7 +33162,7 @@ GL_PREFIX(IsEnabledIndexedEXT): popq %rbp popq %rsi popq %rdi - movq 6872(%rax), %r11 + movq 7000(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(IsEnabledIndexedEXT), .-GL_PREFIX(IsEnabledIndexedEXT) @@ -32585,7 +33173,7 @@ GL_PREFIX(IsEnabledIndexedEXT): GL_PREFIX(ClearColorIiEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6880(%rax), %r11 + movq 7008(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32599,13 +33187,13 @@ GL_PREFIX(ClearColorIiEXT): popq %rdx popq %rsi popq %rdi - movq 6880(%rax), %r11 + movq 7008(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6880(%rax), %r11 + movq 7008(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32619,7 +33207,7 @@ GL_PREFIX(ClearColorIiEXT): popq %rdx popq %rsi popq %rdi - movq 6880(%rax), %r11 + movq 7008(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ClearColorIiEXT), .-GL_PREFIX(ClearColorIiEXT) @@ -32630,7 +33218,7 @@ GL_PREFIX(ClearColorIiEXT): GL_PREFIX(ClearColorIuiEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6888(%rax), %r11 + movq 7016(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32644,13 +33232,13 @@ GL_PREFIX(ClearColorIuiEXT): popq %rdx popq %rsi popq %rdi - movq 6888(%rax), %r11 + movq 7016(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6888(%rax), %r11 + movq 7016(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32664,7 +33252,7 @@ GL_PREFIX(ClearColorIuiEXT): popq %rdx popq %rsi popq %rdi - movq 6888(%rax), %r11 + movq 7016(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ClearColorIuiEXT), .-GL_PREFIX(ClearColorIuiEXT) @@ -32675,7 +33263,7 @@ GL_PREFIX(ClearColorIuiEXT): GL_PREFIX(GetTexParameterIivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6896(%rax), %r11 + movq 7024(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32685,13 +33273,13 @@ GL_PREFIX(GetTexParameterIivEXT): popq %rdx popq %rsi popq %rdi - movq 6896(%rax), %r11 + movq 7024(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6896(%rax), %r11 + movq 7024(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32701,7 +33289,7 @@ GL_PREFIX(GetTexParameterIivEXT): popq %rdx popq %rsi popq %rdi - movq 6896(%rax), %r11 + movq 7024(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetTexParameterIivEXT), .-GL_PREFIX(GetTexParameterIivEXT) @@ -32712,7 +33300,7 @@ GL_PREFIX(GetTexParameterIivEXT): GL_PREFIX(GetTexParameterIuivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6904(%rax), %r11 + movq 7032(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32722,13 +33310,13 @@ GL_PREFIX(GetTexParameterIuivEXT): popq %rdx popq %rsi popq %rdi - movq 6904(%rax), %r11 + movq 7032(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6904(%rax), %r11 + movq 7032(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32738,7 +33326,7 @@ GL_PREFIX(GetTexParameterIuivEXT): popq %rdx popq %rsi popq %rdi - movq 6904(%rax), %r11 + movq 7032(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetTexParameterIuivEXT), .-GL_PREFIX(GetTexParameterIuivEXT) @@ -32749,7 +33337,7 @@ GL_PREFIX(GetTexParameterIuivEXT): GL_PREFIX(TexParameterIivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6912(%rax), %r11 + movq 7040(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32759,13 +33347,13 @@ GL_PREFIX(TexParameterIivEXT): popq %rdx popq %rsi popq %rdi - movq 6912(%rax), %r11 + movq 7040(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6912(%rax), %r11 + movq 7040(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32775,7 +33363,7 @@ GL_PREFIX(TexParameterIivEXT): popq %rdx popq %rsi popq %rdi - movq 6912(%rax), %r11 + movq 7040(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(TexParameterIivEXT), .-GL_PREFIX(TexParameterIivEXT) @@ -32786,7 +33374,7 @@ GL_PREFIX(TexParameterIivEXT): GL_PREFIX(TexParameterIuivEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6920(%rax), %r11 + movq 7048(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32796,13 +33384,13 @@ GL_PREFIX(TexParameterIuivEXT): popq %rdx popq %rsi popq %rdi - movq 6920(%rax), %r11 + movq 7048(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6920(%rax), %r11 + movq 7048(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32812,7 +33400,7 @@ GL_PREFIX(TexParameterIuivEXT): popq %rdx popq %rsi popq %rdi - movq 6920(%rax), %r11 + movq 7048(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(TexParameterIuivEXT), .-GL_PREFIX(TexParameterIuivEXT) @@ -32823,7 +33411,7 @@ GL_PREFIX(TexParameterIuivEXT): GL_PREFIX(BeginConditionalRenderNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6928(%rax), %r11 + movq 7056(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32833,13 +33421,13 @@ GL_PREFIX(BeginConditionalRenderNV): popq %rbp popq %rsi popq %rdi - movq 6928(%rax), %r11 + movq 7056(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6928(%rax), %r11 + movq 7056(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32849,7 +33437,7 @@ GL_PREFIX(BeginConditionalRenderNV): popq %rbp popq %rsi popq %rdi - movq 6928(%rax), %r11 + movq 7056(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BeginConditionalRenderNV), .-GL_PREFIX(BeginConditionalRenderNV) @@ -32860,25 +33448,25 @@ GL_PREFIX(BeginConditionalRenderNV): GL_PREFIX(EndConditionalRenderNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6936(%rax), %r11 + movq 7064(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 6936(%rax), %r11 + movq 7064(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6936(%rax), %r11 + movq 7064(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 6936(%rax), %r11 + movq 7064(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(EndConditionalRenderNV), .-GL_PREFIX(EndConditionalRenderNV) @@ -32889,25 +33477,25 @@ GL_PREFIX(EndConditionalRenderNV): GL_PREFIX(BeginTransformFeedbackEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6944(%rax), %r11 + movq 7072(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 6944(%rax), %r11 + movq 7072(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6944(%rax), %r11 + movq 7072(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 6944(%rax), %r11 + movq 7072(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BeginTransformFeedbackEXT), .-GL_PREFIX(BeginTransformFeedbackEXT) @@ -32918,7 +33506,7 @@ GL_PREFIX(BeginTransformFeedbackEXT): GL_PREFIX(BindBufferBaseEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6952(%rax), %r11 + movq 7080(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32928,13 +33516,13 @@ GL_PREFIX(BindBufferBaseEXT): popq %rdx popq %rsi popq %rdi - movq 6952(%rax), %r11 + movq 7080(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6952(%rax), %r11 + movq 7080(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32944,7 +33532,7 @@ GL_PREFIX(BindBufferBaseEXT): popq %rdx popq %rsi popq %rdi - movq 6952(%rax), %r11 + movq 7080(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BindBufferBaseEXT), .-GL_PREFIX(BindBufferBaseEXT) @@ -32955,7 +33543,7 @@ GL_PREFIX(BindBufferBaseEXT): GL_PREFIX(BindBufferOffsetEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6960(%rax), %r11 + movq 7088(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -32969,13 +33557,13 @@ GL_PREFIX(BindBufferOffsetEXT): popq %rdx popq %rsi popq %rdi - movq 6960(%rax), %r11 + movq 7088(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6960(%rax), %r11 + movq 7088(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -32989,7 +33577,7 @@ GL_PREFIX(BindBufferOffsetEXT): popq %rdx popq %rsi popq %rdi - movq 6960(%rax), %r11 + movq 7088(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BindBufferOffsetEXT), .-GL_PREFIX(BindBufferOffsetEXT) @@ -33000,7 +33588,7 @@ GL_PREFIX(BindBufferOffsetEXT): GL_PREFIX(BindBufferRangeEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6968(%rax), %r11 + movq 7096(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -33014,13 +33602,13 @@ GL_PREFIX(BindBufferRangeEXT): popq %rdx popq %rsi popq %rdi - movq 6968(%rax), %r11 + movq 7096(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6968(%rax), %r11 + movq 7096(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -33034,7 +33622,7 @@ GL_PREFIX(BindBufferRangeEXT): popq %rdx popq %rsi popq %rdi - movq 6968(%rax), %r11 + movq 7096(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(BindBufferRangeEXT), .-GL_PREFIX(BindBufferRangeEXT) @@ -33045,25 +33633,25 @@ GL_PREFIX(BindBufferRangeEXT): GL_PREFIX(EndTransformFeedbackEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6976(%rax), %r11 + movq 7104(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 6976(%rax), %r11 + movq 7104(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6976(%rax), %r11 + movq 7104(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 6976(%rax), %r11 + movq 7104(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(EndTransformFeedbackEXT), .-GL_PREFIX(EndTransformFeedbackEXT) @@ -33074,7 +33662,7 @@ GL_PREFIX(EndTransformFeedbackEXT): GL_PREFIX(GetTransformFeedbackVaryingEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6984(%rax), %r11 + movq 7112(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -33092,13 +33680,13 @@ GL_PREFIX(GetTransformFeedbackVaryingEXT): popq %rdx popq %rsi popq %rdi - movq 6984(%rax), %r11 + movq 7112(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6984(%rax), %r11 + movq 7112(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -33116,7 +33704,7 @@ GL_PREFIX(GetTransformFeedbackVaryingEXT): popq %rdx popq %rsi popq %rdi - movq 6984(%rax), %r11 + movq 7112(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetTransformFeedbackVaryingEXT), .-GL_PREFIX(GetTransformFeedbackVaryingEXT) @@ -33127,7 +33715,7 @@ GL_PREFIX(GetTransformFeedbackVaryingEXT): GL_PREFIX(TransformFeedbackVaryingsEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 6992(%rax), %r11 + movq 7120(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -33141,13 +33729,13 @@ GL_PREFIX(TransformFeedbackVaryingsEXT): popq %rdx popq %rsi popq %rdi - movq 6992(%rax), %r11 + movq 7120(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 6992(%rax), %r11 + movq 7120(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -33161,7 +33749,7 @@ GL_PREFIX(TransformFeedbackVaryingsEXT): popq %rdx popq %rsi popq %rdi - movq 6992(%rax), %r11 + movq 7120(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(TransformFeedbackVaryingsEXT), .-GL_PREFIX(TransformFeedbackVaryingsEXT) @@ -33172,37 +33760,37 @@ GL_PREFIX(TransformFeedbackVaryingsEXT): GL_PREFIX(ProvokingVertexEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 7000(%rax), %r11 + movq 7128(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 7000(%rax), %r11 + movq 7128(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 7000(%rax), %r11 + movq 7128(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 7000(%rax), %r11 + movq 7128(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ProvokingVertexEXT), .-GL_PREFIX(ProvokingVertexEXT) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_876) - .type GL_PREFIX(_dispatch_stub_876), @function - HIDDEN(GL_PREFIX(_dispatch_stub_876)) -GL_PREFIX(_dispatch_stub_876): + .globl GL_PREFIX(_dispatch_stub_892) + .type GL_PREFIX(_dispatch_stub_892), @function + HIDDEN(GL_PREFIX(_dispatch_stub_892)) +GL_PREFIX(_dispatch_stub_892): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 7008(%rax), %r11 + movq 7136(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -33212,13 +33800,13 @@ GL_PREFIX(_dispatch_stub_876): popq %rdx popq %rsi popq %rdi - movq 7008(%rax), %r11 + movq 7136(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 7008(%rax), %r11 + movq 7136(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -33228,19 +33816,19 @@ GL_PREFIX(_dispatch_stub_876): popq %rdx popq %rsi popq %rdi - movq 7008(%rax), %r11 + movq 7136(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_876), .-GL_PREFIX(_dispatch_stub_876) + .size GL_PREFIX(_dispatch_stub_892), .-GL_PREFIX(_dispatch_stub_892) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_877) - .type GL_PREFIX(_dispatch_stub_877), @function - HIDDEN(GL_PREFIX(_dispatch_stub_877)) -GL_PREFIX(_dispatch_stub_877): + .globl GL_PREFIX(_dispatch_stub_893) + .type GL_PREFIX(_dispatch_stub_893), @function + HIDDEN(GL_PREFIX(_dispatch_stub_893)) +GL_PREFIX(_dispatch_stub_893): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 7016(%rax), %r11 + movq 7144(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -33250,13 +33838,13 @@ GL_PREFIX(_dispatch_stub_877): popq %rdx popq %rsi popq %rdi - movq 7016(%rax), %r11 + movq 7144(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 7016(%rax), %r11 + movq 7144(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -33266,10 +33854,10 @@ GL_PREFIX(_dispatch_stub_877): popq %rdx popq %rsi popq %rdi - movq 7016(%rax), %r11 + movq 7144(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_877), .-GL_PREFIX(_dispatch_stub_877) + .size GL_PREFIX(_dispatch_stub_893), .-GL_PREFIX(_dispatch_stub_893) .p2align 4,,15 .globl GL_PREFIX(GetObjectParameterivAPPLE) @@ -33277,7 +33865,7 @@ GL_PREFIX(_dispatch_stub_877): GL_PREFIX(GetObjectParameterivAPPLE): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 7024(%rax), %r11 + movq 7152(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -33291,13 +33879,13 @@ GL_PREFIX(GetObjectParameterivAPPLE): popq %rdx popq %rsi popq %rdi - movq 7024(%rax), %r11 + movq 7152(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 7024(%rax), %r11 + movq 7152(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -33311,7 +33899,7 @@ GL_PREFIX(GetObjectParameterivAPPLE): popq %rdx popq %rsi popq %rdi - movq 7024(%rax), %r11 + movq 7152(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(GetObjectParameterivAPPLE), .-GL_PREFIX(GetObjectParameterivAPPLE) @@ -33322,7 +33910,7 @@ GL_PREFIX(GetObjectParameterivAPPLE): GL_PREFIX(ObjectPurgeableAPPLE): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 7032(%rax), %r11 + movq 7160(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -33332,13 +33920,13 @@ GL_PREFIX(ObjectPurgeableAPPLE): popq %rdx popq %rsi popq %rdi - movq 7032(%rax), %r11 + movq 7160(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 7032(%rax), %r11 + movq 7160(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -33348,7 +33936,7 @@ GL_PREFIX(ObjectPurgeableAPPLE): popq %rdx popq %rsi popq %rdi - movq 7032(%rax), %r11 + movq 7160(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ObjectPurgeableAPPLE), .-GL_PREFIX(ObjectPurgeableAPPLE) @@ -33359,7 +33947,7 @@ GL_PREFIX(ObjectPurgeableAPPLE): GL_PREFIX(ObjectUnpurgeableAPPLE): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 7040(%rax), %r11 + movq 7168(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -33369,13 +33957,13 @@ GL_PREFIX(ObjectUnpurgeableAPPLE): popq %rdx popq %rsi popq %rdi - movq 7040(%rax), %r11 + movq 7168(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 7040(%rax), %r11 + movq 7168(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -33385,7 +33973,7 @@ GL_PREFIX(ObjectUnpurgeableAPPLE): popq %rdx popq %rsi popq %rdi - movq 7040(%rax), %r11 + movq 7168(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ObjectUnpurgeableAPPLE), .-GL_PREFIX(ObjectUnpurgeableAPPLE) @@ -33396,25 +33984,25 @@ GL_PREFIX(ObjectUnpurgeableAPPLE): GL_PREFIX(ActiveProgramEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 7048(%rax), %r11 + movq 7176(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi call _x86_64_get_dispatch@PLT popq %rdi - movq 7048(%rax), %r11 + movq 7176(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 7048(%rax), %r11 + movq 7176(%rax), %r11 jmp *%r11 1: pushq %rdi call _glapi_get_dispatch popq %rdi - movq 7048(%rax), %r11 + movq 7176(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(ActiveProgramEXT), .-GL_PREFIX(ActiveProgramEXT) @@ -33425,7 +34013,7 @@ GL_PREFIX(ActiveProgramEXT): GL_PREFIX(CreateShaderProgramEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 7056(%rax), %r11 + movq 7184(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -33435,13 +34023,13 @@ GL_PREFIX(CreateShaderProgramEXT): popq %rbp popq %rsi popq %rdi - movq 7056(%rax), %r11 + movq 7184(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 7056(%rax), %r11 + movq 7184(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -33451,7 +34039,7 @@ GL_PREFIX(CreateShaderProgramEXT): popq %rbp popq %rsi popq %rdi - movq 7056(%rax), %r11 + movq 7184(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(CreateShaderProgramEXT), .-GL_PREFIX(CreateShaderProgramEXT) @@ -33462,7 +34050,7 @@ GL_PREFIX(CreateShaderProgramEXT): GL_PREFIX(UseShaderProgramEXT): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 7064(%rax), %r11 + movq 7192(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -33472,13 +34060,13 @@ GL_PREFIX(UseShaderProgramEXT): popq %rbp popq %rsi popq %rdi - movq 7064(%rax), %r11 + movq 7192(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 7064(%rax), %r11 + movq 7192(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -33488,7 +34076,7 @@ GL_PREFIX(UseShaderProgramEXT): popq %rbp popq %rsi popq %rdi - movq 7064(%rax), %r11 + movq 7192(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(UseShaderProgramEXT), .-GL_PREFIX(UseShaderProgramEXT) @@ -33499,37 +34087,37 @@ GL_PREFIX(UseShaderProgramEXT): GL_PREFIX(TextureBarrierNV): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 7072(%rax), %r11 + movq 7200(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rbp call _x86_64_get_dispatch@PLT popq %rbp - movq 7072(%rax), %r11 + movq 7200(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 7072(%rax), %r11 + movq 7200(%rax), %r11 jmp *%r11 1: pushq %rbp call _glapi_get_dispatch popq %rbp - movq 7072(%rax), %r11 + movq 7200(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(TextureBarrierNV), .-GL_PREFIX(TextureBarrierNV) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_885) - .type GL_PREFIX(_dispatch_stub_885), @function - HIDDEN(GL_PREFIX(_dispatch_stub_885)) -GL_PREFIX(_dispatch_stub_885): + .globl GL_PREFIX(_dispatch_stub_901) + .type GL_PREFIX(_dispatch_stub_901), @function + HIDDEN(GL_PREFIX(_dispatch_stub_901)) +GL_PREFIX(_dispatch_stub_901): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 7080(%rax), %r11 + movq 7208(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -33543,13 +34131,13 @@ GL_PREFIX(_dispatch_stub_885): popq %rdx popq %rsi popq %rdi - movq 7080(%rax), %r11 + movq 7208(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 7080(%rax), %r11 + movq 7208(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -33563,19 +34151,19 @@ GL_PREFIX(_dispatch_stub_885): popq %rdx popq %rsi popq %rdi - movq 7080(%rax), %r11 + movq 7208(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_885), .-GL_PREFIX(_dispatch_stub_885) + .size GL_PREFIX(_dispatch_stub_901), .-GL_PREFIX(_dispatch_stub_901) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_886) - .type GL_PREFIX(_dispatch_stub_886), @function - HIDDEN(GL_PREFIX(_dispatch_stub_886)) -GL_PREFIX(_dispatch_stub_886): + .globl GL_PREFIX(_dispatch_stub_902) + .type GL_PREFIX(_dispatch_stub_902), @function + HIDDEN(GL_PREFIX(_dispatch_stub_902)) +GL_PREFIX(_dispatch_stub_902): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 7088(%rax), %r11 + movq 7216(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -33589,13 +34177,13 @@ GL_PREFIX(_dispatch_stub_886): popq %rdx popq %rsi popq %rdi - movq 7088(%rax), %r11 + movq 7216(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 7088(%rax), %r11 + movq 7216(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -33609,19 +34197,19 @@ GL_PREFIX(_dispatch_stub_886): popq %rdx popq %rsi popq %rdi - movq 7088(%rax), %r11 + movq 7216(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_886), .-GL_PREFIX(_dispatch_stub_886) + .size GL_PREFIX(_dispatch_stub_902), .-GL_PREFIX(_dispatch_stub_902) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_887) - .type GL_PREFIX(_dispatch_stub_887), @function - HIDDEN(GL_PREFIX(_dispatch_stub_887)) -GL_PREFIX(_dispatch_stub_887): + .globl GL_PREFIX(_dispatch_stub_903) + .type GL_PREFIX(_dispatch_stub_903), @function + HIDDEN(GL_PREFIX(_dispatch_stub_903)) +GL_PREFIX(_dispatch_stub_903): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 7096(%rax), %r11 + movq 7224(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -33635,13 +34223,13 @@ GL_PREFIX(_dispatch_stub_887): popq %rdx popq %rsi popq %rdi - movq 7096(%rax), %r11 + movq 7224(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 7096(%rax), %r11 + movq 7224(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -33655,19 +34243,19 @@ GL_PREFIX(_dispatch_stub_887): popq %rdx popq %rsi popq %rdi - movq 7096(%rax), %r11 + movq 7224(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_887), .-GL_PREFIX(_dispatch_stub_887) + .size GL_PREFIX(_dispatch_stub_903), .-GL_PREFIX(_dispatch_stub_903) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_888) - .type GL_PREFIX(_dispatch_stub_888), @function - HIDDEN(GL_PREFIX(_dispatch_stub_888)) -GL_PREFIX(_dispatch_stub_888): + .globl GL_PREFIX(_dispatch_stub_904) + .type GL_PREFIX(_dispatch_stub_904), @function + HIDDEN(GL_PREFIX(_dispatch_stub_904)) +GL_PREFIX(_dispatch_stub_904): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 7104(%rax), %r11 + movq 7232(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -33677,13 +34265,13 @@ GL_PREFIX(_dispatch_stub_888): popq %rdx popq %rsi popq %rdi - movq 7104(%rax), %r11 + movq 7232(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 7104(%rax), %r11 + movq 7232(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -33693,19 +34281,19 @@ GL_PREFIX(_dispatch_stub_888): popq %rdx popq %rsi popq %rdi - movq 7104(%rax), %r11 + movq 7232(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_888), .-GL_PREFIX(_dispatch_stub_888) + .size GL_PREFIX(_dispatch_stub_904), .-GL_PREFIX(_dispatch_stub_904) .p2align 4,,15 - .globl GL_PREFIX(_dispatch_stub_889) - .type GL_PREFIX(_dispatch_stub_889), @function - HIDDEN(GL_PREFIX(_dispatch_stub_889)) -GL_PREFIX(_dispatch_stub_889): + .globl GL_PREFIX(_dispatch_stub_905) + .type GL_PREFIX(_dispatch_stub_905), @function + HIDDEN(GL_PREFIX(_dispatch_stub_905)) +GL_PREFIX(_dispatch_stub_905): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 7112(%rax), %r11 + movq 7240(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -33715,13 +34303,13 @@ GL_PREFIX(_dispatch_stub_889): popq %rdx popq %rsi popq %rdi - movq 7112(%rax), %r11 + movq 7240(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 7112(%rax), %r11 + movq 7240(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -33731,10 +34319,10 @@ GL_PREFIX(_dispatch_stub_889): popq %rdx popq %rsi popq %rdi - movq 7112(%rax), %r11 + movq 7240(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ - .size GL_PREFIX(_dispatch_stub_889), .-GL_PREFIX(_dispatch_stub_889) + .size GL_PREFIX(_dispatch_stub_905), .-GL_PREFIX(_dispatch_stub_905) .p2align 4,,15 .globl GL_PREFIX(EGLImageTargetRenderbufferStorageOES) @@ -33742,7 +34330,7 @@ GL_PREFIX(_dispatch_stub_889): GL_PREFIX(EGLImageTargetRenderbufferStorageOES): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 7120(%rax), %r11 + movq 7248(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -33752,13 +34340,13 @@ GL_PREFIX(EGLImageTargetRenderbufferStorageOES): popq %rbp popq %rsi popq %rdi - movq 7120(%rax), %r11 + movq 7248(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 7120(%rax), %r11 + movq 7248(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -33768,7 +34356,7 @@ GL_PREFIX(EGLImageTargetRenderbufferStorageOES): popq %rbp popq %rsi popq %rdi - movq 7120(%rax), %r11 + movq 7248(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(EGLImageTargetRenderbufferStorageOES), .-GL_PREFIX(EGLImageTargetRenderbufferStorageOES) @@ -33779,7 +34367,7 @@ GL_PREFIX(EGLImageTargetRenderbufferStorageOES): GL_PREFIX(EGLImageTargetTexture2DOES): #if defined(GLX_USE_TLS) call _x86_64_get_dispatch@PLT - movq 7128(%rax), %r11 + movq 7256(%rax), %r11 jmp *%r11 #elif defined(PTHREADS) pushq %rdi @@ -33789,13 +34377,13 @@ GL_PREFIX(EGLImageTargetTexture2DOES): popq %rbp popq %rsi popq %rdi - movq 7128(%rax), %r11 + movq 7256(%rax), %r11 jmp *%r11 #else movq _glapi_Dispatch(%rip), %rax testq %rax, %rax je 1f - movq 7128(%rax), %r11 + movq 7256(%rax), %r11 jmp *%r11 1: pushq %rdi @@ -33805,7 +34393,7 @@ GL_PREFIX(EGLImageTargetTexture2DOES): popq %rbp popq %rsi popq %rdi - movq 7128(%rax), %r11 + movq 7256(%rax), %r11 jmp *%r11 #endif /* defined(GLX_USE_TLS) */ .size GL_PREFIX(EGLImageTargetTexture2DOES), .-GL_PREFIX(EGLImageTargetTexture2DOES) @@ -34068,10 +34656,10 @@ GL_PREFIX(EGLImageTargetTexture2DOES): .globl GL_PREFIX(IsProgramARB) ; .set GL_PREFIX(IsProgramARB), GL_PREFIX(IsProgramNV) .globl GL_PREFIX(PointParameteri) ; .set GL_PREFIX(PointParameteri), GL_PREFIX(PointParameteriNV) .globl GL_PREFIX(PointParameteriv) ; .set GL_PREFIX(PointParameteriv), GL_PREFIX(PointParameterivNV) - .globl GL_PREFIX(DeleteVertexArrays) ; .set GL_PREFIX(DeleteVertexArrays), GL_PREFIX(_dispatch_stub_786) - .globl GL_PREFIX(IsVertexArray) ; .set GL_PREFIX(IsVertexArray), GL_PREFIX(_dispatch_stub_788) + .globl GL_PREFIX(DeleteVertexArrays) ; .set GL_PREFIX(DeleteVertexArrays), GL_PREFIX(_dispatch_stub_802) + .globl GL_PREFIX(IsVertexArray) ; .set GL_PREFIX(IsVertexArray), GL_PREFIX(_dispatch_stub_804) .globl GL_PREFIX(PrimitiveRestartIndex) ; .set GL_PREFIX(PrimitiveRestartIndex), GL_PREFIX(PrimitiveRestartIndexNV) - .globl GL_PREFIX(BlendEquationSeparate) ; .set GL_PREFIX(BlendEquationSeparate), GL_PREFIX(_dispatch_stub_798) + .globl GL_PREFIX(BlendEquationSeparate) ; .set GL_PREFIX(BlendEquationSeparate), GL_PREFIX(_dispatch_stub_814) .globl GL_PREFIX(BindFramebuffer) ; .set GL_PREFIX(BindFramebuffer), GL_PREFIX(BindFramebufferEXT) .globl GL_PREFIX(BindRenderbuffer) ; .set GL_PREFIX(BindRenderbuffer), GL_PREFIX(BindRenderbufferEXT) .globl GL_PREFIX(CheckFramebufferStatus) ; .set GL_PREFIX(CheckFramebufferStatus), GL_PREFIX(CheckFramebufferStatusEXT) @@ -34089,7 +34677,7 @@ GL_PREFIX(EGLImageTargetTexture2DOES): .globl GL_PREFIX(IsFramebuffer) ; .set GL_PREFIX(IsFramebuffer), GL_PREFIX(IsFramebufferEXT) .globl GL_PREFIX(IsRenderbuffer) ; .set GL_PREFIX(IsRenderbuffer), GL_PREFIX(IsRenderbufferEXT) .globl GL_PREFIX(RenderbufferStorage) ; .set GL_PREFIX(RenderbufferStorage), GL_PREFIX(RenderbufferStorageEXT) - .globl GL_PREFIX(BlitFramebuffer) ; .set GL_PREFIX(BlitFramebuffer), GL_PREFIX(_dispatch_stub_816) + .globl GL_PREFIX(BlitFramebuffer) ; .set GL_PREFIX(BlitFramebuffer), GL_PREFIX(_dispatch_stub_832) .globl GL_PREFIX(BindFragDataLocation) ; .set GL_PREFIX(BindFragDataLocation), GL_PREFIX(BindFragDataLocationEXT) .globl GL_PREFIX(GetFragDataLocation) ; .set GL_PREFIX(GetFragDataLocation), GL_PREFIX(GetFragDataLocationEXT) .globl GL_PREFIX(GetUniformuiv) ; .set GL_PREFIX(GetUniformuiv), GL_PREFIX(GetUniformuivEXT) diff --git a/src/mapi/glapi/glapi_x86.S b/src/mapi/glapi/glapi_x86.S index 2ef45f3b734..f56dc748dee 100644 --- a/src/mapi/glapi/glapi_x86.S +++ b/src/mapi/glapi/glapi_x86.S @@ -722,361 +722,377 @@ GLNAME(gl_dispatch_functions_start): GL_STUB(GetActiveAttribARB, 569, GetActiveAttribARB@28) GL_STUB(GetAttribLocationARB, 570, GetAttribLocationARB@8) GL_STUB(DrawBuffersARB, 571, DrawBuffersARB@8) - GL_STUB(DrawArraysInstancedARB, 572, DrawArraysInstancedARB@16) - GL_STUB(DrawElementsInstancedARB, 573, DrawElementsInstancedARB@20) - GL_STUB(RenderbufferStorageMultisample, 574, RenderbufferStorageMultisample@20) - GL_STUB(FramebufferTextureARB, 575, FramebufferTextureARB@16) - GL_STUB(FramebufferTextureFaceARB, 576, FramebufferTextureFaceARB@20) - GL_STUB(ProgramParameteriARB, 577, ProgramParameteriARB@12) - GL_STUB(VertexAttribDivisorARB, 578, VertexAttribDivisorARB@8) - GL_STUB(FlushMappedBufferRange, 579, FlushMappedBufferRange@12) - GL_STUB(MapBufferRange, 580, MapBufferRange@16) - GL_STUB(BindVertexArray, 581, BindVertexArray@4) - GL_STUB(GenVertexArrays, 582, GenVertexArrays@8) - GL_STUB(CopyBufferSubData, 583, CopyBufferSubData@20) - GL_STUB(ClientWaitSync, 584, ClientWaitSync@12) - GL_STUB(DeleteSync, 585, DeleteSync@4) - GL_STUB(FenceSync, 586, FenceSync@8) - GL_STUB(GetInteger64v, 587, GetInteger64v@8) - GL_STUB(GetSynciv, 588, GetSynciv@20) - GL_STUB(IsSync, 589, IsSync@4) - GL_STUB(WaitSync, 590, WaitSync@12) - GL_STUB(DrawElementsBaseVertex, 591, DrawElementsBaseVertex@20) - GL_STUB(DrawRangeElementsBaseVertex, 592, DrawRangeElementsBaseVertex@28) - GL_STUB(MultiDrawElementsBaseVertex, 593, MultiDrawElementsBaseVertex@24) - GL_STUB(BlendEquationSeparateiARB, 594, BlendEquationSeparateiARB@12) - GL_STUB(BlendEquationiARB, 595, BlendEquationiARB@8) - GL_STUB(BlendFuncSeparateiARB, 596, BlendFuncSeparateiARB@20) - GL_STUB(BlendFunciARB, 597, BlendFunciARB@12) - GL_STUB(BindTransformFeedback, 598, BindTransformFeedback@8) - GL_STUB(DeleteTransformFeedbacks, 599, DeleteTransformFeedbacks@8) - GL_STUB(DrawTransformFeedback, 600, DrawTransformFeedback@8) - GL_STUB(GenTransformFeedbacks, 601, GenTransformFeedbacks@8) - GL_STUB(IsTransformFeedback, 602, IsTransformFeedback@4) - GL_STUB(PauseTransformFeedback, 603, PauseTransformFeedback@0) - GL_STUB(ResumeTransformFeedback, 604, ResumeTransformFeedback@0) - GL_STUB(ClearDepthf, 605, ClearDepthf@4) - GL_STUB(DepthRangef, 606, DepthRangef@8) - GL_STUB(GetShaderPrecisionFormat, 607, GetShaderPrecisionFormat@16) - GL_STUB(ReleaseShaderCompiler, 608, ReleaseShaderCompiler@0) - GL_STUB(ShaderBinary, 609, ShaderBinary@20) - GL_STUB(PolygonOffsetEXT, 610, PolygonOffsetEXT@8) - GL_STUB(_dispatch_stub_611, 611, _dispatch_stub_611@8) - HIDDEN(GL_PREFIX(_dispatch_stub_611, _dispatch_stub_611@8)) - GL_STUB(_dispatch_stub_612, 612, _dispatch_stub_612@8) - HIDDEN(GL_PREFIX(_dispatch_stub_612, _dispatch_stub_612@8)) - GL_STUB(_dispatch_stub_613, 613, _dispatch_stub_613@8) - HIDDEN(GL_PREFIX(_dispatch_stub_613, _dispatch_stub_613@8)) - GL_STUB(_dispatch_stub_614, 614, _dispatch_stub_614@8) - HIDDEN(GL_PREFIX(_dispatch_stub_614, _dispatch_stub_614@8)) - GL_STUB(_dispatch_stub_615, 615, _dispatch_stub_615@8) - HIDDEN(GL_PREFIX(_dispatch_stub_615, _dispatch_stub_615@8)) - GL_STUB(_dispatch_stub_616, 616, _dispatch_stub_616@8) - HIDDEN(GL_PREFIX(_dispatch_stub_616, _dispatch_stub_616@8)) - GL_STUB(_dispatch_stub_617, 617, _dispatch_stub_617@8) - HIDDEN(GL_PREFIX(_dispatch_stub_617, _dispatch_stub_617@8)) - GL_STUB(_dispatch_stub_618, 618, _dispatch_stub_618@4) - HIDDEN(GL_PREFIX(_dispatch_stub_618, _dispatch_stub_618@4)) - GL_STUB(ColorPointerEXT, 619, ColorPointerEXT@20) - GL_STUB(EdgeFlagPointerEXT, 620, EdgeFlagPointerEXT@12) - GL_STUB(IndexPointerEXT, 621, IndexPointerEXT@16) - GL_STUB(NormalPointerEXT, 622, NormalPointerEXT@16) - GL_STUB(TexCoordPointerEXT, 623, TexCoordPointerEXT@20) - GL_STUB(VertexPointerEXT, 624, VertexPointerEXT@20) - GL_STUB(PointParameterfEXT, 625, PointParameterfEXT@8) - GL_STUB(PointParameterfvEXT, 626, PointParameterfvEXT@8) - GL_STUB(LockArraysEXT, 627, LockArraysEXT@8) - GL_STUB(UnlockArraysEXT, 628, UnlockArraysEXT@0) - GL_STUB(SecondaryColor3bEXT, 629, SecondaryColor3bEXT@12) - GL_STUB(SecondaryColor3bvEXT, 630, SecondaryColor3bvEXT@4) - GL_STUB(SecondaryColor3dEXT, 631, SecondaryColor3dEXT@24) - GL_STUB(SecondaryColor3dvEXT, 632, SecondaryColor3dvEXT@4) - GL_STUB(SecondaryColor3fEXT, 633, SecondaryColor3fEXT@12) - GL_STUB(SecondaryColor3fvEXT, 634, SecondaryColor3fvEXT@4) - GL_STUB(SecondaryColor3iEXT, 635, SecondaryColor3iEXT@12) - GL_STUB(SecondaryColor3ivEXT, 636, SecondaryColor3ivEXT@4) - GL_STUB(SecondaryColor3sEXT, 637, SecondaryColor3sEXT@12) - GL_STUB(SecondaryColor3svEXT, 638, SecondaryColor3svEXT@4) - GL_STUB(SecondaryColor3ubEXT, 639, SecondaryColor3ubEXT@12) - GL_STUB(SecondaryColor3ubvEXT, 640, SecondaryColor3ubvEXT@4) - GL_STUB(SecondaryColor3uiEXT, 641, SecondaryColor3uiEXT@12) - GL_STUB(SecondaryColor3uivEXT, 642, SecondaryColor3uivEXT@4) - GL_STUB(SecondaryColor3usEXT, 643, SecondaryColor3usEXT@12) - GL_STUB(SecondaryColor3usvEXT, 644, SecondaryColor3usvEXT@4) - GL_STUB(SecondaryColorPointerEXT, 645, SecondaryColorPointerEXT@16) - GL_STUB(MultiDrawArraysEXT, 646, MultiDrawArraysEXT@16) - GL_STUB(MultiDrawElementsEXT, 647, MultiDrawElementsEXT@20) - GL_STUB(FogCoordPointerEXT, 648, FogCoordPointerEXT@12) - GL_STUB(FogCoorddEXT, 649, FogCoorddEXT@8) - GL_STUB(FogCoorddvEXT, 650, FogCoorddvEXT@4) - GL_STUB(FogCoordfEXT, 651, FogCoordfEXT@4) - GL_STUB(FogCoordfvEXT, 652, FogCoordfvEXT@4) - GL_STUB(_dispatch_stub_653, 653, _dispatch_stub_653@4) - HIDDEN(GL_PREFIX(_dispatch_stub_653, _dispatch_stub_653@4)) - GL_STUB(BlendFuncSeparateEXT, 654, BlendFuncSeparateEXT@16) - GL_STUB(FlushVertexArrayRangeNV, 655, FlushVertexArrayRangeNV@0) - GL_STUB(VertexArrayRangeNV, 656, VertexArrayRangeNV@8) - GL_STUB(CombinerInputNV, 657, CombinerInputNV@24) - GL_STUB(CombinerOutputNV, 658, CombinerOutputNV@40) - GL_STUB(CombinerParameterfNV, 659, CombinerParameterfNV@8) - GL_STUB(CombinerParameterfvNV, 660, CombinerParameterfvNV@8) - GL_STUB(CombinerParameteriNV, 661, CombinerParameteriNV@8) - GL_STUB(CombinerParameterivNV, 662, CombinerParameterivNV@8) - GL_STUB(FinalCombinerInputNV, 663, FinalCombinerInputNV@16) - GL_STUB(GetCombinerInputParameterfvNV, 664, GetCombinerInputParameterfvNV@20) - GL_STUB(GetCombinerInputParameterivNV, 665, GetCombinerInputParameterivNV@20) - GL_STUB(GetCombinerOutputParameterfvNV, 666, GetCombinerOutputParameterfvNV@16) - GL_STUB(GetCombinerOutputParameterivNV, 667, GetCombinerOutputParameterivNV@16) - GL_STUB(GetFinalCombinerInputParameterfvNV, 668, GetFinalCombinerInputParameterfvNV@12) - GL_STUB(GetFinalCombinerInputParameterivNV, 669, GetFinalCombinerInputParameterivNV@12) - GL_STUB(ResizeBuffersMESA, 670, ResizeBuffersMESA@0) - GL_STUB(WindowPos2dMESA, 671, WindowPos2dMESA@16) - GL_STUB(WindowPos2dvMESA, 672, WindowPos2dvMESA@4) - GL_STUB(WindowPos2fMESA, 673, WindowPos2fMESA@8) - GL_STUB(WindowPos2fvMESA, 674, WindowPos2fvMESA@4) - GL_STUB(WindowPos2iMESA, 675, WindowPos2iMESA@8) - GL_STUB(WindowPos2ivMESA, 676, WindowPos2ivMESA@4) - GL_STUB(WindowPos2sMESA, 677, WindowPos2sMESA@8) - GL_STUB(WindowPos2svMESA, 678, WindowPos2svMESA@4) - GL_STUB(WindowPos3dMESA, 679, WindowPos3dMESA@24) - GL_STUB(WindowPos3dvMESA, 680, WindowPos3dvMESA@4) - GL_STUB(WindowPos3fMESA, 681, WindowPos3fMESA@12) - GL_STUB(WindowPos3fvMESA, 682, WindowPos3fvMESA@4) - GL_STUB(WindowPos3iMESA, 683, WindowPos3iMESA@12) - GL_STUB(WindowPos3ivMESA, 684, WindowPos3ivMESA@4) - GL_STUB(WindowPos3sMESA, 685, WindowPos3sMESA@12) - GL_STUB(WindowPos3svMESA, 686, WindowPos3svMESA@4) - GL_STUB(WindowPos4dMESA, 687, WindowPos4dMESA@32) - GL_STUB(WindowPos4dvMESA, 688, WindowPos4dvMESA@4) - GL_STUB(WindowPos4fMESA, 689, WindowPos4fMESA@16) - GL_STUB(WindowPos4fvMESA, 690, WindowPos4fvMESA@4) - GL_STUB(WindowPos4iMESA, 691, WindowPos4iMESA@16) - GL_STUB(WindowPos4ivMESA, 692, WindowPos4ivMESA@4) - GL_STUB(WindowPos4sMESA, 693, WindowPos4sMESA@16) - GL_STUB(WindowPos4svMESA, 694, WindowPos4svMESA@4) - GL_STUB(_dispatch_stub_695, 695, _dispatch_stub_695@20) - HIDDEN(GL_PREFIX(_dispatch_stub_695, _dispatch_stub_695@20)) - GL_STUB(_dispatch_stub_696, 696, _dispatch_stub_696@24) - HIDDEN(GL_PREFIX(_dispatch_stub_696, _dispatch_stub_696@24)) - GL_STUB(_dispatch_stub_697, 697, _dispatch_stub_697@8) - HIDDEN(GL_PREFIX(_dispatch_stub_697, _dispatch_stub_697@8)) - GL_STUB(_dispatch_stub_698, 698, _dispatch_stub_698@4) - HIDDEN(GL_PREFIX(_dispatch_stub_698, _dispatch_stub_698@4)) - GL_STUB(_dispatch_stub_699, 699, _dispatch_stub_699@8) - HIDDEN(GL_PREFIX(_dispatch_stub_699, _dispatch_stub_699@8)) - GL_STUB(_dispatch_stub_700, 700, _dispatch_stub_700@12) - HIDDEN(GL_PREFIX(_dispatch_stub_700, _dispatch_stub_700@12)) - GL_STUB(_dispatch_stub_701, 701, _dispatch_stub_701@4) - HIDDEN(GL_PREFIX(_dispatch_stub_701, _dispatch_stub_701@4)) - GL_STUB(_dispatch_stub_702, 702, _dispatch_stub_702@8) - HIDDEN(GL_PREFIX(_dispatch_stub_702, _dispatch_stub_702@8)) - GL_STUB(_dispatch_stub_703, 703, _dispatch_stub_703@4) - HIDDEN(GL_PREFIX(_dispatch_stub_703, _dispatch_stub_703@4)) - GL_STUB(AreProgramsResidentNV, 704, AreProgramsResidentNV@12) - GL_STUB(BindProgramNV, 705, BindProgramNV@8) - GL_STUB(DeleteProgramsNV, 706, DeleteProgramsNV@8) - GL_STUB(ExecuteProgramNV, 707, ExecuteProgramNV@12) - GL_STUB(GenProgramsNV, 708, GenProgramsNV@8) - GL_STUB(GetProgramParameterdvNV, 709, GetProgramParameterdvNV@16) - GL_STUB(GetProgramParameterfvNV, 710, GetProgramParameterfvNV@16) - GL_STUB(GetProgramStringNV, 711, GetProgramStringNV@12) - GL_STUB(GetProgramivNV, 712, GetProgramivNV@12) - GL_STUB(GetTrackMatrixivNV, 713, GetTrackMatrixivNV@16) - GL_STUB(GetVertexAttribPointervNV, 714, GetVertexAttribPointervNV@12) - GL_STUB(GetVertexAttribdvNV, 715, GetVertexAttribdvNV@12) - GL_STUB(GetVertexAttribfvNV, 716, GetVertexAttribfvNV@12) - GL_STUB(GetVertexAttribivNV, 717, GetVertexAttribivNV@12) - GL_STUB(IsProgramNV, 718, IsProgramNV@4) - GL_STUB(LoadProgramNV, 719, LoadProgramNV@16) - GL_STUB(ProgramParameters4dvNV, 720, ProgramParameters4dvNV@16) - GL_STUB(ProgramParameters4fvNV, 721, ProgramParameters4fvNV@16) - GL_STUB(RequestResidentProgramsNV, 722, RequestResidentProgramsNV@8) - GL_STUB(TrackMatrixNV, 723, TrackMatrixNV@16) - GL_STUB(VertexAttrib1dNV, 724, VertexAttrib1dNV@12) - GL_STUB(VertexAttrib1dvNV, 725, VertexAttrib1dvNV@8) - GL_STUB(VertexAttrib1fNV, 726, VertexAttrib1fNV@8) - GL_STUB(VertexAttrib1fvNV, 727, VertexAttrib1fvNV@8) - GL_STUB(VertexAttrib1sNV, 728, VertexAttrib1sNV@8) - GL_STUB(VertexAttrib1svNV, 729, VertexAttrib1svNV@8) - GL_STUB(VertexAttrib2dNV, 730, VertexAttrib2dNV@20) - GL_STUB(VertexAttrib2dvNV, 731, VertexAttrib2dvNV@8) - GL_STUB(VertexAttrib2fNV, 732, VertexAttrib2fNV@12) - GL_STUB(VertexAttrib2fvNV, 733, VertexAttrib2fvNV@8) - GL_STUB(VertexAttrib2sNV, 734, VertexAttrib2sNV@12) - GL_STUB(VertexAttrib2svNV, 735, VertexAttrib2svNV@8) - GL_STUB(VertexAttrib3dNV, 736, VertexAttrib3dNV@28) - GL_STUB(VertexAttrib3dvNV, 737, VertexAttrib3dvNV@8) - GL_STUB(VertexAttrib3fNV, 738, VertexAttrib3fNV@16) - GL_STUB(VertexAttrib3fvNV, 739, VertexAttrib3fvNV@8) - GL_STUB(VertexAttrib3sNV, 740, VertexAttrib3sNV@16) - GL_STUB(VertexAttrib3svNV, 741, VertexAttrib3svNV@8) - GL_STUB(VertexAttrib4dNV, 742, VertexAttrib4dNV@36) - GL_STUB(VertexAttrib4dvNV, 743, VertexAttrib4dvNV@8) - GL_STUB(VertexAttrib4fNV, 744, VertexAttrib4fNV@20) - GL_STUB(VertexAttrib4fvNV, 745, VertexAttrib4fvNV@8) - GL_STUB(VertexAttrib4sNV, 746, VertexAttrib4sNV@20) - GL_STUB(VertexAttrib4svNV, 747, VertexAttrib4svNV@8) - GL_STUB(VertexAttrib4ubNV, 748, VertexAttrib4ubNV@20) - GL_STUB(VertexAttrib4ubvNV, 749, VertexAttrib4ubvNV@8) - GL_STUB(VertexAttribPointerNV, 750, VertexAttribPointerNV@20) - GL_STUB(VertexAttribs1dvNV, 751, VertexAttribs1dvNV@12) - GL_STUB(VertexAttribs1fvNV, 752, VertexAttribs1fvNV@12) - GL_STUB(VertexAttribs1svNV, 753, VertexAttribs1svNV@12) - GL_STUB(VertexAttribs2dvNV, 754, VertexAttribs2dvNV@12) - GL_STUB(VertexAttribs2fvNV, 755, VertexAttribs2fvNV@12) - GL_STUB(VertexAttribs2svNV, 756, VertexAttribs2svNV@12) - GL_STUB(VertexAttribs3dvNV, 757, VertexAttribs3dvNV@12) - GL_STUB(VertexAttribs3fvNV, 758, VertexAttribs3fvNV@12) - GL_STUB(VertexAttribs3svNV, 759, VertexAttribs3svNV@12) - GL_STUB(VertexAttribs4dvNV, 760, VertexAttribs4dvNV@12) - GL_STUB(VertexAttribs4fvNV, 761, VertexAttribs4fvNV@12) - GL_STUB(VertexAttribs4svNV, 762, VertexAttribs4svNV@12) - GL_STUB(VertexAttribs4ubvNV, 763, VertexAttribs4ubvNV@12) - GL_STUB(GetTexBumpParameterfvATI, 764, GetTexBumpParameterfvATI@8) - GL_STUB(GetTexBumpParameterivATI, 765, GetTexBumpParameterivATI@8) - GL_STUB(TexBumpParameterfvATI, 766, TexBumpParameterfvATI@8) - GL_STUB(TexBumpParameterivATI, 767, TexBumpParameterivATI@8) - GL_STUB(AlphaFragmentOp1ATI, 768, AlphaFragmentOp1ATI@24) - GL_STUB(AlphaFragmentOp2ATI, 769, AlphaFragmentOp2ATI@36) - GL_STUB(AlphaFragmentOp3ATI, 770, AlphaFragmentOp3ATI@48) - GL_STUB(BeginFragmentShaderATI, 771, BeginFragmentShaderATI@0) - GL_STUB(BindFragmentShaderATI, 772, BindFragmentShaderATI@4) - GL_STUB(ColorFragmentOp1ATI, 773, ColorFragmentOp1ATI@28) - GL_STUB(ColorFragmentOp2ATI, 774, ColorFragmentOp2ATI@40) - GL_STUB(ColorFragmentOp3ATI, 775, ColorFragmentOp3ATI@52) - GL_STUB(DeleteFragmentShaderATI, 776, DeleteFragmentShaderATI@4) - GL_STUB(EndFragmentShaderATI, 777, EndFragmentShaderATI@0) - GL_STUB(GenFragmentShadersATI, 778, GenFragmentShadersATI@4) - GL_STUB(PassTexCoordATI, 779, PassTexCoordATI@12) - GL_STUB(SampleMapATI, 780, SampleMapATI@12) - GL_STUB(SetFragmentShaderConstantATI, 781, SetFragmentShaderConstantATI@8) - GL_STUB(PointParameteriNV, 782, PointParameteriNV@8) - GL_STUB(PointParameterivNV, 783, PointParameterivNV@8) - GL_STUB(_dispatch_stub_784, 784, _dispatch_stub_784@4) - HIDDEN(GL_PREFIX(_dispatch_stub_784, _dispatch_stub_784@4)) - GL_STUB(_dispatch_stub_785, 785, _dispatch_stub_785@4) - HIDDEN(GL_PREFIX(_dispatch_stub_785, _dispatch_stub_785@4)) - GL_STUB(_dispatch_stub_786, 786, _dispatch_stub_786@8) - HIDDEN(GL_PREFIX(_dispatch_stub_786, _dispatch_stub_786@8)) - GL_STUB(_dispatch_stub_787, 787, _dispatch_stub_787@8) - HIDDEN(GL_PREFIX(_dispatch_stub_787, _dispatch_stub_787@8)) - GL_STUB(_dispatch_stub_788, 788, _dispatch_stub_788@4) - HIDDEN(GL_PREFIX(_dispatch_stub_788, _dispatch_stub_788@4)) - GL_STUB(GetProgramNamedParameterdvNV, 789, GetProgramNamedParameterdvNV@16) - GL_STUB(GetProgramNamedParameterfvNV, 790, GetProgramNamedParameterfvNV@16) - GL_STUB(ProgramNamedParameter4dNV, 791, ProgramNamedParameter4dNV@44) - GL_STUB(ProgramNamedParameter4dvNV, 792, ProgramNamedParameter4dvNV@16) - GL_STUB(ProgramNamedParameter4fNV, 793, ProgramNamedParameter4fNV@28) - GL_STUB(ProgramNamedParameter4fvNV, 794, ProgramNamedParameter4fvNV@16) - GL_STUB(PrimitiveRestartIndexNV, 795, PrimitiveRestartIndexNV@4) - GL_STUB(PrimitiveRestartNV, 796, PrimitiveRestartNV@0) - GL_STUB(_dispatch_stub_797, 797, _dispatch_stub_797@16) - HIDDEN(GL_PREFIX(_dispatch_stub_797, _dispatch_stub_797@16)) - GL_STUB(_dispatch_stub_798, 798, _dispatch_stub_798@8) - HIDDEN(GL_PREFIX(_dispatch_stub_798, _dispatch_stub_798@8)) - GL_STUB(BindFramebufferEXT, 799, BindFramebufferEXT@8) - GL_STUB(BindRenderbufferEXT, 800, BindRenderbufferEXT@8) - GL_STUB(CheckFramebufferStatusEXT, 801, CheckFramebufferStatusEXT@4) - GL_STUB(DeleteFramebuffersEXT, 802, DeleteFramebuffersEXT@8) - GL_STUB(DeleteRenderbuffersEXT, 803, DeleteRenderbuffersEXT@8) - GL_STUB(FramebufferRenderbufferEXT, 804, FramebufferRenderbufferEXT@16) - GL_STUB(FramebufferTexture1DEXT, 805, FramebufferTexture1DEXT@20) - GL_STUB(FramebufferTexture2DEXT, 806, FramebufferTexture2DEXT@20) - GL_STUB(FramebufferTexture3DEXT, 807, FramebufferTexture3DEXT@24) - GL_STUB(GenFramebuffersEXT, 808, GenFramebuffersEXT@8) - GL_STUB(GenRenderbuffersEXT, 809, GenRenderbuffersEXT@8) - GL_STUB(GenerateMipmapEXT, 810, GenerateMipmapEXT@4) - GL_STUB(GetFramebufferAttachmentParameterivEXT, 811, GetFramebufferAttachmentParameterivEXT@16) - GL_STUB(GetRenderbufferParameterivEXT, 812, GetRenderbufferParameterivEXT@12) - GL_STUB(IsFramebufferEXT, 813, IsFramebufferEXT@4) - GL_STUB(IsRenderbufferEXT, 814, IsRenderbufferEXT@4) - GL_STUB(RenderbufferStorageEXT, 815, RenderbufferStorageEXT@16) - GL_STUB(_dispatch_stub_816, 816, _dispatch_stub_816@40) - HIDDEN(GL_PREFIX(_dispatch_stub_816, _dispatch_stub_816@40)) - GL_STUB(_dispatch_stub_817, 817, _dispatch_stub_817@12) - HIDDEN(GL_PREFIX(_dispatch_stub_817, _dispatch_stub_817@12)) - GL_STUB(_dispatch_stub_818, 818, _dispatch_stub_818@12) - HIDDEN(GL_PREFIX(_dispatch_stub_818, _dispatch_stub_818@12)) - GL_STUB(BindFragDataLocationEXT, 819, BindFragDataLocationEXT@12) - GL_STUB(GetFragDataLocationEXT, 820, GetFragDataLocationEXT@8) - GL_STUB(GetUniformuivEXT, 821, GetUniformuivEXT@12) - GL_STUB(GetVertexAttribIivEXT, 822, GetVertexAttribIivEXT@12) - GL_STUB(GetVertexAttribIuivEXT, 823, GetVertexAttribIuivEXT@12) - GL_STUB(Uniform1uiEXT, 824, Uniform1uiEXT@8) - GL_STUB(Uniform1uivEXT, 825, Uniform1uivEXT@12) - GL_STUB(Uniform2uiEXT, 826, Uniform2uiEXT@12) - GL_STUB(Uniform2uivEXT, 827, Uniform2uivEXT@12) - GL_STUB(Uniform3uiEXT, 828, Uniform3uiEXT@16) - GL_STUB(Uniform3uivEXT, 829, Uniform3uivEXT@12) - GL_STUB(Uniform4uiEXT, 830, Uniform4uiEXT@20) - GL_STUB(Uniform4uivEXT, 831, Uniform4uivEXT@12) - GL_STUB(VertexAttribI1iEXT, 832, VertexAttribI1iEXT@8) - GL_STUB(VertexAttribI1ivEXT, 833, VertexAttribI1ivEXT@8) - GL_STUB(VertexAttribI1uiEXT, 834, VertexAttribI1uiEXT@8) - GL_STUB(VertexAttribI1uivEXT, 835, VertexAttribI1uivEXT@8) - GL_STUB(VertexAttribI2iEXT, 836, VertexAttribI2iEXT@12) - GL_STUB(VertexAttribI2ivEXT, 837, VertexAttribI2ivEXT@8) - GL_STUB(VertexAttribI2uiEXT, 838, VertexAttribI2uiEXT@12) - GL_STUB(VertexAttribI2uivEXT, 839, VertexAttribI2uivEXT@8) - GL_STUB(VertexAttribI3iEXT, 840, VertexAttribI3iEXT@16) - GL_STUB(VertexAttribI3ivEXT, 841, VertexAttribI3ivEXT@8) - GL_STUB(VertexAttribI3uiEXT, 842, VertexAttribI3uiEXT@16) - GL_STUB(VertexAttribI3uivEXT, 843, VertexAttribI3uivEXT@8) - GL_STUB(VertexAttribI4bvEXT, 844, VertexAttribI4bvEXT@8) - GL_STUB(VertexAttribI4iEXT, 845, VertexAttribI4iEXT@20) - GL_STUB(VertexAttribI4ivEXT, 846, VertexAttribI4ivEXT@8) - GL_STUB(VertexAttribI4svEXT, 847, VertexAttribI4svEXT@8) - GL_STUB(VertexAttribI4ubvEXT, 848, VertexAttribI4ubvEXT@8) - GL_STUB(VertexAttribI4uiEXT, 849, VertexAttribI4uiEXT@20) - GL_STUB(VertexAttribI4uivEXT, 850, VertexAttribI4uivEXT@8) - GL_STUB(VertexAttribI4usvEXT, 851, VertexAttribI4usvEXT@8) - GL_STUB(VertexAttribIPointerEXT, 852, VertexAttribIPointerEXT@20) - GL_STUB(FramebufferTextureLayerEXT, 853, FramebufferTextureLayerEXT@20) - GL_STUB(ColorMaskIndexedEXT, 854, ColorMaskIndexedEXT@20) - GL_STUB(DisableIndexedEXT, 855, DisableIndexedEXT@8) - GL_STUB(EnableIndexedEXT, 856, EnableIndexedEXT@8) - GL_STUB(GetBooleanIndexedvEXT, 857, GetBooleanIndexedvEXT@12) - GL_STUB(GetIntegerIndexedvEXT, 858, GetIntegerIndexedvEXT@12) - GL_STUB(IsEnabledIndexedEXT, 859, IsEnabledIndexedEXT@8) - GL_STUB(ClearColorIiEXT, 860, ClearColorIiEXT@16) - GL_STUB(ClearColorIuiEXT, 861, ClearColorIuiEXT@16) - GL_STUB(GetTexParameterIivEXT, 862, GetTexParameterIivEXT@12) - GL_STUB(GetTexParameterIuivEXT, 863, GetTexParameterIuivEXT@12) - GL_STUB(TexParameterIivEXT, 864, TexParameterIivEXT@12) - GL_STUB(TexParameterIuivEXT, 865, TexParameterIuivEXT@12) - GL_STUB(BeginConditionalRenderNV, 866, BeginConditionalRenderNV@8) - GL_STUB(EndConditionalRenderNV, 867, EndConditionalRenderNV@0) - GL_STUB(BeginTransformFeedbackEXT, 868, BeginTransformFeedbackEXT@4) - GL_STUB(BindBufferBaseEXT, 869, BindBufferBaseEXT@12) - GL_STUB(BindBufferOffsetEXT, 870, BindBufferOffsetEXT@16) - GL_STUB(BindBufferRangeEXT, 871, BindBufferRangeEXT@20) - GL_STUB(EndTransformFeedbackEXT, 872, EndTransformFeedbackEXT@0) - GL_STUB(GetTransformFeedbackVaryingEXT, 873, GetTransformFeedbackVaryingEXT@28) - GL_STUB(TransformFeedbackVaryingsEXT, 874, TransformFeedbackVaryingsEXT@16) - GL_STUB(ProvokingVertexEXT, 875, ProvokingVertexEXT@4) - GL_STUB(_dispatch_stub_876, 876, _dispatch_stub_876@12) - HIDDEN(GL_PREFIX(_dispatch_stub_876, _dispatch_stub_876@12)) - GL_STUB(_dispatch_stub_877, 877, _dispatch_stub_877@12) - HIDDEN(GL_PREFIX(_dispatch_stub_877, _dispatch_stub_877@12)) - GL_STUB(GetObjectParameterivAPPLE, 878, GetObjectParameterivAPPLE@16) - GL_STUB(ObjectPurgeableAPPLE, 879, ObjectPurgeableAPPLE@12) - GL_STUB(ObjectUnpurgeableAPPLE, 880, ObjectUnpurgeableAPPLE@12) - GL_STUB(ActiveProgramEXT, 881, ActiveProgramEXT@4) - GL_STUB(CreateShaderProgramEXT, 882, CreateShaderProgramEXT@8) - GL_STUB(UseShaderProgramEXT, 883, UseShaderProgramEXT@8) - GL_STUB(TextureBarrierNV, 884, TextureBarrierNV@0) - GL_STUB(_dispatch_stub_885, 885, _dispatch_stub_885@16) - HIDDEN(GL_PREFIX(_dispatch_stub_885, _dispatch_stub_885@16)) - GL_STUB(_dispatch_stub_886, 886, _dispatch_stub_886@16) - HIDDEN(GL_PREFIX(_dispatch_stub_886, _dispatch_stub_886@16)) - GL_STUB(_dispatch_stub_887, 887, _dispatch_stub_887@16) - HIDDEN(GL_PREFIX(_dispatch_stub_887, _dispatch_stub_887@16)) - GL_STUB(_dispatch_stub_888, 888, _dispatch_stub_888@12) - HIDDEN(GL_PREFIX(_dispatch_stub_888, _dispatch_stub_888@12)) - GL_STUB(_dispatch_stub_889, 889, _dispatch_stub_889@12) - HIDDEN(GL_PREFIX(_dispatch_stub_889, _dispatch_stub_889@12)) - GL_STUB(EGLImageTargetRenderbufferStorageOES, 890, EGLImageTargetRenderbufferStorageOES@8) - GL_STUB(EGLImageTargetTexture2DOES, 891, EGLImageTargetTexture2DOES@8) + GL_STUB(ClampColorARB, 572, ClampColorARB@8) + GL_STUB(DrawArraysInstancedARB, 573, DrawArraysInstancedARB@16) + GL_STUB(DrawElementsInstancedARB, 574, DrawElementsInstancedARB@20) + GL_STUB(RenderbufferStorageMultisample, 575, RenderbufferStorageMultisample@20) + GL_STUB(FramebufferTextureARB, 576, FramebufferTextureARB@16) + GL_STUB(FramebufferTextureFaceARB, 577, FramebufferTextureFaceARB@20) + GL_STUB(ProgramParameteriARB, 578, ProgramParameteriARB@12) + GL_STUB(VertexAttribDivisorARB, 579, VertexAttribDivisorARB@8) + GL_STUB(FlushMappedBufferRange, 580, FlushMappedBufferRange@12) + GL_STUB(MapBufferRange, 581, MapBufferRange@16) + GL_STUB(TexBufferARB, 582, TexBufferARB@12) + GL_STUB(BindVertexArray, 583, BindVertexArray@4) + GL_STUB(GenVertexArrays, 584, GenVertexArrays@8) + GL_STUB(CopyBufferSubData, 585, CopyBufferSubData@20) + GL_STUB(ClientWaitSync, 586, ClientWaitSync@12) + GL_STUB(DeleteSync, 587, DeleteSync@4) + GL_STUB(FenceSync, 588, FenceSync@8) + GL_STUB(GetInteger64v, 589, GetInteger64v@8) + GL_STUB(GetSynciv, 590, GetSynciv@20) + GL_STUB(IsSync, 591, IsSync@4) + GL_STUB(WaitSync, 592, WaitSync@12) + GL_STUB(DrawElementsBaseVertex, 593, DrawElementsBaseVertex@20) + GL_STUB(DrawRangeElementsBaseVertex, 594, DrawRangeElementsBaseVertex@28) + GL_STUB(MultiDrawElementsBaseVertex, 595, MultiDrawElementsBaseVertex@24) + GL_STUB(BlendEquationSeparateiARB, 596, BlendEquationSeparateiARB@12) + GL_STUB(BlendEquationiARB, 597, BlendEquationiARB@8) + GL_STUB(BlendFuncSeparateiARB, 598, BlendFuncSeparateiARB@20) + GL_STUB(BlendFunciARB, 599, BlendFunciARB@12) + GL_STUB(BindSampler, 600, BindSampler@8) + GL_STUB(DeleteSamplers, 601, DeleteSamplers@8) + GL_STUB(GenSamplers, 602, GenSamplers@8) + GL_STUB(GetSamplerParameterIiv, 603, GetSamplerParameterIiv@12) + GL_STUB(GetSamplerParameterIuiv, 604, GetSamplerParameterIuiv@12) + GL_STUB(GetSamplerParameterfv, 605, GetSamplerParameterfv@12) + GL_STUB(GetSamplerParameteriv, 606, GetSamplerParameteriv@12) + GL_STUB(IsSampler, 607, IsSampler@4) + GL_STUB(SamplerParameterIiv, 608, SamplerParameterIiv@12) + GL_STUB(SamplerParameterIuiv, 609, SamplerParameterIuiv@12) + GL_STUB(SamplerParameterf, 610, SamplerParameterf@12) + GL_STUB(SamplerParameterfv, 611, SamplerParameterfv@12) + GL_STUB(SamplerParameteri, 612, SamplerParameteri@12) + GL_STUB(SamplerParameteriv, 613, SamplerParameteriv@12) + GL_STUB(BindTransformFeedback, 614, BindTransformFeedback@8) + GL_STUB(DeleteTransformFeedbacks, 615, DeleteTransformFeedbacks@8) + GL_STUB(DrawTransformFeedback, 616, DrawTransformFeedback@8) + GL_STUB(GenTransformFeedbacks, 617, GenTransformFeedbacks@8) + GL_STUB(IsTransformFeedback, 618, IsTransformFeedback@4) + GL_STUB(PauseTransformFeedback, 619, PauseTransformFeedback@0) + GL_STUB(ResumeTransformFeedback, 620, ResumeTransformFeedback@0) + GL_STUB(ClearDepthf, 621, ClearDepthf@4) + GL_STUB(DepthRangef, 622, DepthRangef@8) + GL_STUB(GetShaderPrecisionFormat, 623, GetShaderPrecisionFormat@16) + GL_STUB(ReleaseShaderCompiler, 624, ReleaseShaderCompiler@0) + GL_STUB(ShaderBinary, 625, ShaderBinary@20) + GL_STUB(PolygonOffsetEXT, 626, PolygonOffsetEXT@8) + GL_STUB(_dispatch_stub_627, 627, _dispatch_stub_627@8) + HIDDEN(GL_PREFIX(_dispatch_stub_627, _dispatch_stub_627@8)) + GL_STUB(_dispatch_stub_628, 628, _dispatch_stub_628@8) + HIDDEN(GL_PREFIX(_dispatch_stub_628, _dispatch_stub_628@8)) + GL_STUB(_dispatch_stub_629, 629, _dispatch_stub_629@8) + HIDDEN(GL_PREFIX(_dispatch_stub_629, _dispatch_stub_629@8)) + GL_STUB(_dispatch_stub_630, 630, _dispatch_stub_630@8) + HIDDEN(GL_PREFIX(_dispatch_stub_630, _dispatch_stub_630@8)) + GL_STUB(_dispatch_stub_631, 631, _dispatch_stub_631@8) + HIDDEN(GL_PREFIX(_dispatch_stub_631, _dispatch_stub_631@8)) + GL_STUB(_dispatch_stub_632, 632, _dispatch_stub_632@8) + HIDDEN(GL_PREFIX(_dispatch_stub_632, _dispatch_stub_632@8)) + GL_STUB(_dispatch_stub_633, 633, _dispatch_stub_633@8) + HIDDEN(GL_PREFIX(_dispatch_stub_633, _dispatch_stub_633@8)) + GL_STUB(_dispatch_stub_634, 634, _dispatch_stub_634@4) + HIDDEN(GL_PREFIX(_dispatch_stub_634, _dispatch_stub_634@4)) + GL_STUB(ColorPointerEXT, 635, ColorPointerEXT@20) + GL_STUB(EdgeFlagPointerEXT, 636, EdgeFlagPointerEXT@12) + GL_STUB(IndexPointerEXT, 637, IndexPointerEXT@16) + GL_STUB(NormalPointerEXT, 638, NormalPointerEXT@16) + GL_STUB(TexCoordPointerEXT, 639, TexCoordPointerEXT@20) + GL_STUB(VertexPointerEXT, 640, VertexPointerEXT@20) + GL_STUB(PointParameterfEXT, 641, PointParameterfEXT@8) + GL_STUB(PointParameterfvEXT, 642, PointParameterfvEXT@8) + GL_STUB(LockArraysEXT, 643, LockArraysEXT@8) + GL_STUB(UnlockArraysEXT, 644, UnlockArraysEXT@0) + GL_STUB(SecondaryColor3bEXT, 645, SecondaryColor3bEXT@12) + GL_STUB(SecondaryColor3bvEXT, 646, SecondaryColor3bvEXT@4) + GL_STUB(SecondaryColor3dEXT, 647, SecondaryColor3dEXT@24) + GL_STUB(SecondaryColor3dvEXT, 648, SecondaryColor3dvEXT@4) + GL_STUB(SecondaryColor3fEXT, 649, SecondaryColor3fEXT@12) + GL_STUB(SecondaryColor3fvEXT, 650, SecondaryColor3fvEXT@4) + GL_STUB(SecondaryColor3iEXT, 651, SecondaryColor3iEXT@12) + GL_STUB(SecondaryColor3ivEXT, 652, SecondaryColor3ivEXT@4) + GL_STUB(SecondaryColor3sEXT, 653, SecondaryColor3sEXT@12) + GL_STUB(SecondaryColor3svEXT, 654, SecondaryColor3svEXT@4) + GL_STUB(SecondaryColor3ubEXT, 655, SecondaryColor3ubEXT@12) + GL_STUB(SecondaryColor3ubvEXT, 656, SecondaryColor3ubvEXT@4) + GL_STUB(SecondaryColor3uiEXT, 657, SecondaryColor3uiEXT@12) + GL_STUB(SecondaryColor3uivEXT, 658, SecondaryColor3uivEXT@4) + GL_STUB(SecondaryColor3usEXT, 659, SecondaryColor3usEXT@12) + GL_STUB(SecondaryColor3usvEXT, 660, SecondaryColor3usvEXT@4) + GL_STUB(SecondaryColorPointerEXT, 661, SecondaryColorPointerEXT@16) + GL_STUB(MultiDrawArraysEXT, 662, MultiDrawArraysEXT@16) + GL_STUB(MultiDrawElementsEXT, 663, MultiDrawElementsEXT@20) + GL_STUB(FogCoordPointerEXT, 664, FogCoordPointerEXT@12) + GL_STUB(FogCoorddEXT, 665, FogCoorddEXT@8) + GL_STUB(FogCoorddvEXT, 666, FogCoorddvEXT@4) + GL_STUB(FogCoordfEXT, 667, FogCoordfEXT@4) + GL_STUB(FogCoordfvEXT, 668, FogCoordfvEXT@4) + GL_STUB(_dispatch_stub_669, 669, _dispatch_stub_669@4) + HIDDEN(GL_PREFIX(_dispatch_stub_669, _dispatch_stub_669@4)) + GL_STUB(BlendFuncSeparateEXT, 670, BlendFuncSeparateEXT@16) + GL_STUB(FlushVertexArrayRangeNV, 671, FlushVertexArrayRangeNV@0) + GL_STUB(VertexArrayRangeNV, 672, VertexArrayRangeNV@8) + GL_STUB(CombinerInputNV, 673, CombinerInputNV@24) + GL_STUB(CombinerOutputNV, 674, CombinerOutputNV@40) + GL_STUB(CombinerParameterfNV, 675, CombinerParameterfNV@8) + GL_STUB(CombinerParameterfvNV, 676, CombinerParameterfvNV@8) + GL_STUB(CombinerParameteriNV, 677, CombinerParameteriNV@8) + GL_STUB(CombinerParameterivNV, 678, CombinerParameterivNV@8) + GL_STUB(FinalCombinerInputNV, 679, FinalCombinerInputNV@16) + GL_STUB(GetCombinerInputParameterfvNV, 680, GetCombinerInputParameterfvNV@20) + GL_STUB(GetCombinerInputParameterivNV, 681, GetCombinerInputParameterivNV@20) + GL_STUB(GetCombinerOutputParameterfvNV, 682, GetCombinerOutputParameterfvNV@16) + GL_STUB(GetCombinerOutputParameterivNV, 683, GetCombinerOutputParameterivNV@16) + GL_STUB(GetFinalCombinerInputParameterfvNV, 684, GetFinalCombinerInputParameterfvNV@12) + GL_STUB(GetFinalCombinerInputParameterivNV, 685, GetFinalCombinerInputParameterivNV@12) + GL_STUB(ResizeBuffersMESA, 686, ResizeBuffersMESA@0) + GL_STUB(WindowPos2dMESA, 687, WindowPos2dMESA@16) + GL_STUB(WindowPos2dvMESA, 688, WindowPos2dvMESA@4) + GL_STUB(WindowPos2fMESA, 689, WindowPos2fMESA@8) + GL_STUB(WindowPos2fvMESA, 690, WindowPos2fvMESA@4) + GL_STUB(WindowPos2iMESA, 691, WindowPos2iMESA@8) + GL_STUB(WindowPos2ivMESA, 692, WindowPos2ivMESA@4) + GL_STUB(WindowPos2sMESA, 693, WindowPos2sMESA@8) + GL_STUB(WindowPos2svMESA, 694, WindowPos2svMESA@4) + GL_STUB(WindowPos3dMESA, 695, WindowPos3dMESA@24) + GL_STUB(WindowPos3dvMESA, 696, WindowPos3dvMESA@4) + GL_STUB(WindowPos3fMESA, 697, WindowPos3fMESA@12) + GL_STUB(WindowPos3fvMESA, 698, WindowPos3fvMESA@4) + GL_STUB(WindowPos3iMESA, 699, WindowPos3iMESA@12) + GL_STUB(WindowPos3ivMESA, 700, WindowPos3ivMESA@4) + GL_STUB(WindowPos3sMESA, 701, WindowPos3sMESA@12) + GL_STUB(WindowPos3svMESA, 702, WindowPos3svMESA@4) + GL_STUB(WindowPos4dMESA, 703, WindowPos4dMESA@32) + GL_STUB(WindowPos4dvMESA, 704, WindowPos4dvMESA@4) + GL_STUB(WindowPos4fMESA, 705, WindowPos4fMESA@16) + GL_STUB(WindowPos4fvMESA, 706, WindowPos4fvMESA@4) + GL_STUB(WindowPos4iMESA, 707, WindowPos4iMESA@16) + GL_STUB(WindowPos4ivMESA, 708, WindowPos4ivMESA@4) + GL_STUB(WindowPos4sMESA, 709, WindowPos4sMESA@16) + GL_STUB(WindowPos4svMESA, 710, WindowPos4svMESA@4) + GL_STUB(_dispatch_stub_711, 711, _dispatch_stub_711@20) + HIDDEN(GL_PREFIX(_dispatch_stub_711, _dispatch_stub_711@20)) + GL_STUB(_dispatch_stub_712, 712, _dispatch_stub_712@24) + HIDDEN(GL_PREFIX(_dispatch_stub_712, _dispatch_stub_712@24)) + GL_STUB(_dispatch_stub_713, 713, _dispatch_stub_713@8) + HIDDEN(GL_PREFIX(_dispatch_stub_713, _dispatch_stub_713@8)) + GL_STUB(_dispatch_stub_714, 714, _dispatch_stub_714@4) + HIDDEN(GL_PREFIX(_dispatch_stub_714, _dispatch_stub_714@4)) + GL_STUB(_dispatch_stub_715, 715, _dispatch_stub_715@8) + HIDDEN(GL_PREFIX(_dispatch_stub_715, _dispatch_stub_715@8)) + GL_STUB(_dispatch_stub_716, 716, _dispatch_stub_716@12) + HIDDEN(GL_PREFIX(_dispatch_stub_716, _dispatch_stub_716@12)) + GL_STUB(_dispatch_stub_717, 717, _dispatch_stub_717@4) + HIDDEN(GL_PREFIX(_dispatch_stub_717, _dispatch_stub_717@4)) + GL_STUB(_dispatch_stub_718, 718, _dispatch_stub_718@8) + HIDDEN(GL_PREFIX(_dispatch_stub_718, _dispatch_stub_718@8)) + GL_STUB(_dispatch_stub_719, 719, _dispatch_stub_719@4) + HIDDEN(GL_PREFIX(_dispatch_stub_719, _dispatch_stub_719@4)) + GL_STUB(AreProgramsResidentNV, 720, AreProgramsResidentNV@12) + GL_STUB(BindProgramNV, 721, BindProgramNV@8) + GL_STUB(DeleteProgramsNV, 722, DeleteProgramsNV@8) + GL_STUB(ExecuteProgramNV, 723, ExecuteProgramNV@12) + GL_STUB(GenProgramsNV, 724, GenProgramsNV@8) + GL_STUB(GetProgramParameterdvNV, 725, GetProgramParameterdvNV@16) + GL_STUB(GetProgramParameterfvNV, 726, GetProgramParameterfvNV@16) + GL_STUB(GetProgramStringNV, 727, GetProgramStringNV@12) + GL_STUB(GetProgramivNV, 728, GetProgramivNV@12) + GL_STUB(GetTrackMatrixivNV, 729, GetTrackMatrixivNV@16) + GL_STUB(GetVertexAttribPointervNV, 730, GetVertexAttribPointervNV@12) + GL_STUB(GetVertexAttribdvNV, 731, GetVertexAttribdvNV@12) + GL_STUB(GetVertexAttribfvNV, 732, GetVertexAttribfvNV@12) + GL_STUB(GetVertexAttribivNV, 733, GetVertexAttribivNV@12) + GL_STUB(IsProgramNV, 734, IsProgramNV@4) + GL_STUB(LoadProgramNV, 735, LoadProgramNV@16) + GL_STUB(ProgramParameters4dvNV, 736, ProgramParameters4dvNV@16) + GL_STUB(ProgramParameters4fvNV, 737, ProgramParameters4fvNV@16) + GL_STUB(RequestResidentProgramsNV, 738, RequestResidentProgramsNV@8) + GL_STUB(TrackMatrixNV, 739, TrackMatrixNV@16) + GL_STUB(VertexAttrib1dNV, 740, VertexAttrib1dNV@12) + GL_STUB(VertexAttrib1dvNV, 741, VertexAttrib1dvNV@8) + GL_STUB(VertexAttrib1fNV, 742, VertexAttrib1fNV@8) + GL_STUB(VertexAttrib1fvNV, 743, VertexAttrib1fvNV@8) + GL_STUB(VertexAttrib1sNV, 744, VertexAttrib1sNV@8) + GL_STUB(VertexAttrib1svNV, 745, VertexAttrib1svNV@8) + GL_STUB(VertexAttrib2dNV, 746, VertexAttrib2dNV@20) + GL_STUB(VertexAttrib2dvNV, 747, VertexAttrib2dvNV@8) + GL_STUB(VertexAttrib2fNV, 748, VertexAttrib2fNV@12) + GL_STUB(VertexAttrib2fvNV, 749, VertexAttrib2fvNV@8) + GL_STUB(VertexAttrib2sNV, 750, VertexAttrib2sNV@12) + GL_STUB(VertexAttrib2svNV, 751, VertexAttrib2svNV@8) + GL_STUB(VertexAttrib3dNV, 752, VertexAttrib3dNV@28) + GL_STUB(VertexAttrib3dvNV, 753, VertexAttrib3dvNV@8) + GL_STUB(VertexAttrib3fNV, 754, VertexAttrib3fNV@16) + GL_STUB(VertexAttrib3fvNV, 755, VertexAttrib3fvNV@8) + GL_STUB(VertexAttrib3sNV, 756, VertexAttrib3sNV@16) + GL_STUB(VertexAttrib3svNV, 757, VertexAttrib3svNV@8) + GL_STUB(VertexAttrib4dNV, 758, VertexAttrib4dNV@36) + GL_STUB(VertexAttrib4dvNV, 759, VertexAttrib4dvNV@8) + GL_STUB(VertexAttrib4fNV, 760, VertexAttrib4fNV@20) + GL_STUB(VertexAttrib4fvNV, 761, VertexAttrib4fvNV@8) + GL_STUB(VertexAttrib4sNV, 762, VertexAttrib4sNV@20) + GL_STUB(VertexAttrib4svNV, 763, VertexAttrib4svNV@8) + GL_STUB(VertexAttrib4ubNV, 764, VertexAttrib4ubNV@20) + GL_STUB(VertexAttrib4ubvNV, 765, VertexAttrib4ubvNV@8) + GL_STUB(VertexAttribPointerNV, 766, VertexAttribPointerNV@20) + GL_STUB(VertexAttribs1dvNV, 767, VertexAttribs1dvNV@12) + GL_STUB(VertexAttribs1fvNV, 768, VertexAttribs1fvNV@12) + GL_STUB(VertexAttribs1svNV, 769, VertexAttribs1svNV@12) + GL_STUB(VertexAttribs2dvNV, 770, VertexAttribs2dvNV@12) + GL_STUB(VertexAttribs2fvNV, 771, VertexAttribs2fvNV@12) + GL_STUB(VertexAttribs2svNV, 772, VertexAttribs2svNV@12) + GL_STUB(VertexAttribs3dvNV, 773, VertexAttribs3dvNV@12) + GL_STUB(VertexAttribs3fvNV, 774, VertexAttribs3fvNV@12) + GL_STUB(VertexAttribs3svNV, 775, VertexAttribs3svNV@12) + GL_STUB(VertexAttribs4dvNV, 776, VertexAttribs4dvNV@12) + GL_STUB(VertexAttribs4fvNV, 777, VertexAttribs4fvNV@12) + GL_STUB(VertexAttribs4svNV, 778, VertexAttribs4svNV@12) + GL_STUB(VertexAttribs4ubvNV, 779, VertexAttribs4ubvNV@12) + GL_STUB(GetTexBumpParameterfvATI, 780, GetTexBumpParameterfvATI@8) + GL_STUB(GetTexBumpParameterivATI, 781, GetTexBumpParameterivATI@8) + GL_STUB(TexBumpParameterfvATI, 782, TexBumpParameterfvATI@8) + GL_STUB(TexBumpParameterivATI, 783, TexBumpParameterivATI@8) + GL_STUB(AlphaFragmentOp1ATI, 784, AlphaFragmentOp1ATI@24) + GL_STUB(AlphaFragmentOp2ATI, 785, AlphaFragmentOp2ATI@36) + GL_STUB(AlphaFragmentOp3ATI, 786, AlphaFragmentOp3ATI@48) + GL_STUB(BeginFragmentShaderATI, 787, BeginFragmentShaderATI@0) + GL_STUB(BindFragmentShaderATI, 788, BindFragmentShaderATI@4) + GL_STUB(ColorFragmentOp1ATI, 789, ColorFragmentOp1ATI@28) + GL_STUB(ColorFragmentOp2ATI, 790, ColorFragmentOp2ATI@40) + GL_STUB(ColorFragmentOp3ATI, 791, ColorFragmentOp3ATI@52) + GL_STUB(DeleteFragmentShaderATI, 792, DeleteFragmentShaderATI@4) + GL_STUB(EndFragmentShaderATI, 793, EndFragmentShaderATI@0) + GL_STUB(GenFragmentShadersATI, 794, GenFragmentShadersATI@4) + GL_STUB(PassTexCoordATI, 795, PassTexCoordATI@12) + GL_STUB(SampleMapATI, 796, SampleMapATI@12) + GL_STUB(SetFragmentShaderConstantATI, 797, SetFragmentShaderConstantATI@8) + GL_STUB(PointParameteriNV, 798, PointParameteriNV@8) + GL_STUB(PointParameterivNV, 799, PointParameterivNV@8) + GL_STUB(_dispatch_stub_800, 800, _dispatch_stub_800@4) + HIDDEN(GL_PREFIX(_dispatch_stub_800, _dispatch_stub_800@4)) + GL_STUB(_dispatch_stub_801, 801, _dispatch_stub_801@4) + HIDDEN(GL_PREFIX(_dispatch_stub_801, _dispatch_stub_801@4)) + GL_STUB(_dispatch_stub_802, 802, _dispatch_stub_802@8) + HIDDEN(GL_PREFIX(_dispatch_stub_802, _dispatch_stub_802@8)) + GL_STUB(_dispatch_stub_803, 803, _dispatch_stub_803@8) + HIDDEN(GL_PREFIX(_dispatch_stub_803, _dispatch_stub_803@8)) + GL_STUB(_dispatch_stub_804, 804, _dispatch_stub_804@4) + HIDDEN(GL_PREFIX(_dispatch_stub_804, _dispatch_stub_804@4)) + GL_STUB(GetProgramNamedParameterdvNV, 805, GetProgramNamedParameterdvNV@16) + GL_STUB(GetProgramNamedParameterfvNV, 806, GetProgramNamedParameterfvNV@16) + GL_STUB(ProgramNamedParameter4dNV, 807, ProgramNamedParameter4dNV@44) + GL_STUB(ProgramNamedParameter4dvNV, 808, ProgramNamedParameter4dvNV@16) + GL_STUB(ProgramNamedParameter4fNV, 809, ProgramNamedParameter4fNV@28) + GL_STUB(ProgramNamedParameter4fvNV, 810, ProgramNamedParameter4fvNV@16) + GL_STUB(PrimitiveRestartIndexNV, 811, PrimitiveRestartIndexNV@4) + GL_STUB(PrimitiveRestartNV, 812, PrimitiveRestartNV@0) + GL_STUB(_dispatch_stub_813, 813, _dispatch_stub_813@16) + HIDDEN(GL_PREFIX(_dispatch_stub_813, _dispatch_stub_813@16)) + GL_STUB(_dispatch_stub_814, 814, _dispatch_stub_814@8) + HIDDEN(GL_PREFIX(_dispatch_stub_814, _dispatch_stub_814@8)) + GL_STUB(BindFramebufferEXT, 815, BindFramebufferEXT@8) + GL_STUB(BindRenderbufferEXT, 816, BindRenderbufferEXT@8) + GL_STUB(CheckFramebufferStatusEXT, 817, CheckFramebufferStatusEXT@4) + GL_STUB(DeleteFramebuffersEXT, 818, DeleteFramebuffersEXT@8) + GL_STUB(DeleteRenderbuffersEXT, 819, DeleteRenderbuffersEXT@8) + GL_STUB(FramebufferRenderbufferEXT, 820, FramebufferRenderbufferEXT@16) + GL_STUB(FramebufferTexture1DEXT, 821, FramebufferTexture1DEXT@20) + GL_STUB(FramebufferTexture2DEXT, 822, FramebufferTexture2DEXT@20) + GL_STUB(FramebufferTexture3DEXT, 823, FramebufferTexture3DEXT@24) + GL_STUB(GenFramebuffersEXT, 824, GenFramebuffersEXT@8) + GL_STUB(GenRenderbuffersEXT, 825, GenRenderbuffersEXT@8) + GL_STUB(GenerateMipmapEXT, 826, GenerateMipmapEXT@4) + GL_STUB(GetFramebufferAttachmentParameterivEXT, 827, GetFramebufferAttachmentParameterivEXT@16) + GL_STUB(GetRenderbufferParameterivEXT, 828, GetRenderbufferParameterivEXT@12) + GL_STUB(IsFramebufferEXT, 829, IsFramebufferEXT@4) + GL_STUB(IsRenderbufferEXT, 830, IsRenderbufferEXT@4) + GL_STUB(RenderbufferStorageEXT, 831, RenderbufferStorageEXT@16) + GL_STUB(_dispatch_stub_832, 832, _dispatch_stub_832@40) + HIDDEN(GL_PREFIX(_dispatch_stub_832, _dispatch_stub_832@40)) + GL_STUB(_dispatch_stub_833, 833, _dispatch_stub_833@12) + HIDDEN(GL_PREFIX(_dispatch_stub_833, _dispatch_stub_833@12)) + GL_STUB(_dispatch_stub_834, 834, _dispatch_stub_834@12) + HIDDEN(GL_PREFIX(_dispatch_stub_834, _dispatch_stub_834@12)) + GL_STUB(BindFragDataLocationEXT, 835, BindFragDataLocationEXT@12) + GL_STUB(GetFragDataLocationEXT, 836, GetFragDataLocationEXT@8) + GL_STUB(GetUniformuivEXT, 837, GetUniformuivEXT@12) + GL_STUB(GetVertexAttribIivEXT, 838, GetVertexAttribIivEXT@12) + GL_STUB(GetVertexAttribIuivEXT, 839, GetVertexAttribIuivEXT@12) + GL_STUB(Uniform1uiEXT, 840, Uniform1uiEXT@8) + GL_STUB(Uniform1uivEXT, 841, Uniform1uivEXT@12) + GL_STUB(Uniform2uiEXT, 842, Uniform2uiEXT@12) + GL_STUB(Uniform2uivEXT, 843, Uniform2uivEXT@12) + GL_STUB(Uniform3uiEXT, 844, Uniform3uiEXT@16) + GL_STUB(Uniform3uivEXT, 845, Uniform3uivEXT@12) + GL_STUB(Uniform4uiEXT, 846, Uniform4uiEXT@20) + GL_STUB(Uniform4uivEXT, 847, Uniform4uivEXT@12) + GL_STUB(VertexAttribI1iEXT, 848, VertexAttribI1iEXT@8) + GL_STUB(VertexAttribI1ivEXT, 849, VertexAttribI1ivEXT@8) + GL_STUB(VertexAttribI1uiEXT, 850, VertexAttribI1uiEXT@8) + GL_STUB(VertexAttribI1uivEXT, 851, VertexAttribI1uivEXT@8) + GL_STUB(VertexAttribI2iEXT, 852, VertexAttribI2iEXT@12) + GL_STUB(VertexAttribI2ivEXT, 853, VertexAttribI2ivEXT@8) + GL_STUB(VertexAttribI2uiEXT, 854, VertexAttribI2uiEXT@12) + GL_STUB(VertexAttribI2uivEXT, 855, VertexAttribI2uivEXT@8) + GL_STUB(VertexAttribI3iEXT, 856, VertexAttribI3iEXT@16) + GL_STUB(VertexAttribI3ivEXT, 857, VertexAttribI3ivEXT@8) + GL_STUB(VertexAttribI3uiEXT, 858, VertexAttribI3uiEXT@16) + GL_STUB(VertexAttribI3uivEXT, 859, VertexAttribI3uivEXT@8) + GL_STUB(VertexAttribI4bvEXT, 860, VertexAttribI4bvEXT@8) + GL_STUB(VertexAttribI4iEXT, 861, VertexAttribI4iEXT@20) + GL_STUB(VertexAttribI4ivEXT, 862, VertexAttribI4ivEXT@8) + GL_STUB(VertexAttribI4svEXT, 863, VertexAttribI4svEXT@8) + GL_STUB(VertexAttribI4ubvEXT, 864, VertexAttribI4ubvEXT@8) + GL_STUB(VertexAttribI4uiEXT, 865, VertexAttribI4uiEXT@20) + GL_STUB(VertexAttribI4uivEXT, 866, VertexAttribI4uivEXT@8) + GL_STUB(VertexAttribI4usvEXT, 867, VertexAttribI4usvEXT@8) + GL_STUB(VertexAttribIPointerEXT, 868, VertexAttribIPointerEXT@20) + GL_STUB(FramebufferTextureLayerEXT, 869, FramebufferTextureLayerEXT@20) + GL_STUB(ColorMaskIndexedEXT, 870, ColorMaskIndexedEXT@20) + GL_STUB(DisableIndexedEXT, 871, DisableIndexedEXT@8) + GL_STUB(EnableIndexedEXT, 872, EnableIndexedEXT@8) + GL_STUB(GetBooleanIndexedvEXT, 873, GetBooleanIndexedvEXT@12) + GL_STUB(GetIntegerIndexedvEXT, 874, GetIntegerIndexedvEXT@12) + GL_STUB(IsEnabledIndexedEXT, 875, IsEnabledIndexedEXT@8) + GL_STUB(ClearColorIiEXT, 876, ClearColorIiEXT@16) + GL_STUB(ClearColorIuiEXT, 877, ClearColorIuiEXT@16) + GL_STUB(GetTexParameterIivEXT, 878, GetTexParameterIivEXT@12) + GL_STUB(GetTexParameterIuivEXT, 879, GetTexParameterIuivEXT@12) + GL_STUB(TexParameterIivEXT, 880, TexParameterIivEXT@12) + GL_STUB(TexParameterIuivEXT, 881, TexParameterIuivEXT@12) + GL_STUB(BeginConditionalRenderNV, 882, BeginConditionalRenderNV@8) + GL_STUB(EndConditionalRenderNV, 883, EndConditionalRenderNV@0) + GL_STUB(BeginTransformFeedbackEXT, 884, BeginTransformFeedbackEXT@4) + GL_STUB(BindBufferBaseEXT, 885, BindBufferBaseEXT@12) + GL_STUB(BindBufferOffsetEXT, 886, BindBufferOffsetEXT@16) + GL_STUB(BindBufferRangeEXT, 887, BindBufferRangeEXT@20) + GL_STUB(EndTransformFeedbackEXT, 888, EndTransformFeedbackEXT@0) + GL_STUB(GetTransformFeedbackVaryingEXT, 889, GetTransformFeedbackVaryingEXT@28) + GL_STUB(TransformFeedbackVaryingsEXT, 890, TransformFeedbackVaryingsEXT@16) + GL_STUB(ProvokingVertexEXT, 891, ProvokingVertexEXT@4) + GL_STUB(_dispatch_stub_892, 892, _dispatch_stub_892@12) + HIDDEN(GL_PREFIX(_dispatch_stub_892, _dispatch_stub_892@12)) + GL_STUB(_dispatch_stub_893, 893, _dispatch_stub_893@12) + HIDDEN(GL_PREFIX(_dispatch_stub_893, _dispatch_stub_893@12)) + GL_STUB(GetObjectParameterivAPPLE, 894, GetObjectParameterivAPPLE@16) + GL_STUB(ObjectPurgeableAPPLE, 895, ObjectPurgeableAPPLE@12) + GL_STUB(ObjectUnpurgeableAPPLE, 896, ObjectUnpurgeableAPPLE@12) + GL_STUB(ActiveProgramEXT, 897, ActiveProgramEXT@4) + GL_STUB(CreateShaderProgramEXT, 898, CreateShaderProgramEXT@8) + GL_STUB(UseShaderProgramEXT, 899, UseShaderProgramEXT@8) + GL_STUB(TextureBarrierNV, 900, TextureBarrierNV@0) + GL_STUB(_dispatch_stub_901, 901, _dispatch_stub_901@16) + HIDDEN(GL_PREFIX(_dispatch_stub_901, _dispatch_stub_901@16)) + GL_STUB(_dispatch_stub_902, 902, _dispatch_stub_902@16) + HIDDEN(GL_PREFIX(_dispatch_stub_902, _dispatch_stub_902@16)) + GL_STUB(_dispatch_stub_903, 903, _dispatch_stub_903@16) + HIDDEN(GL_PREFIX(_dispatch_stub_903, _dispatch_stub_903@16)) + GL_STUB(_dispatch_stub_904, 904, _dispatch_stub_904@12) + HIDDEN(GL_PREFIX(_dispatch_stub_904, _dispatch_stub_904@12)) + GL_STUB(_dispatch_stub_905, 905, _dispatch_stub_905@12) + HIDDEN(GL_PREFIX(_dispatch_stub_905, _dispatch_stub_905@12)) + GL_STUB(EGLImageTargetRenderbufferStorageOES, 906, EGLImageTargetRenderbufferStorageOES@8) + GL_STUB(EGLImageTargetTexture2DOES, 907, EGLImageTargetTexture2DOES@8) GL_STUB_ALIAS(ArrayElementEXT, 306, ArrayElementEXT@4, ArrayElement, ArrayElement@4) GL_STUB_ALIAS(BindTextureEXT, 307, BindTextureEXT@8, BindTexture, BindTexture@8) GL_STUB_ALIAS(DrawArraysEXT, 310, DrawArraysEXT@12, DrawArrays, DrawArrays@12) @@ -1261,156 +1277,156 @@ GLNAME(gl_dispatch_functions_start): GL_STUB_ALIAS(GetAttribLocation, 570, GetAttribLocation@8, GetAttribLocationARB, GetAttribLocationARB@8) GL_STUB_ALIAS(DrawBuffers, 571, DrawBuffers@8, DrawBuffersARB, DrawBuffersARB@8) GL_STUB_ALIAS(DrawBuffersATI, 571, DrawBuffersATI@8, DrawBuffersARB, DrawBuffersARB@8) - GL_STUB_ALIAS(DrawArraysInstancedEXT, 572, DrawArraysInstancedEXT@16, DrawArraysInstancedARB, DrawArraysInstancedARB@16) - GL_STUB_ALIAS(DrawArraysInstanced, 572, DrawArraysInstanced@16, DrawArraysInstancedARB, DrawArraysInstancedARB@16) - GL_STUB_ALIAS(DrawElementsInstancedEXT, 573, DrawElementsInstancedEXT@20, DrawElementsInstancedARB, DrawElementsInstancedARB@20) - GL_STUB_ALIAS(DrawElementsInstanced, 573, DrawElementsInstanced@20, DrawElementsInstancedARB, DrawElementsInstancedARB@20) - GL_STUB_ALIAS(RenderbufferStorageMultisampleEXT, 574, RenderbufferStorageMultisampleEXT@20, RenderbufferStorageMultisample, RenderbufferStorageMultisample@20) - GL_STUB_ALIAS(PointParameterf, 625, PointParameterf@8, PointParameterfEXT, PointParameterfEXT@8) - GL_STUB_ALIAS(PointParameterfARB, 625, PointParameterfARB@8, PointParameterfEXT, PointParameterfEXT@8) - GL_STUB_ALIAS(PointParameterfv, 626, PointParameterfv@8, PointParameterfvEXT, PointParameterfvEXT@8) - GL_STUB_ALIAS(PointParameterfvARB, 626, PointParameterfvARB@8, PointParameterfvEXT, PointParameterfvEXT@8) - GL_STUB_ALIAS(SecondaryColor3b, 629, SecondaryColor3b@12, SecondaryColor3bEXT, SecondaryColor3bEXT@12) - GL_STUB_ALIAS(SecondaryColor3bv, 630, SecondaryColor3bv@4, SecondaryColor3bvEXT, SecondaryColor3bvEXT@4) - GL_STUB_ALIAS(SecondaryColor3d, 631, SecondaryColor3d@24, SecondaryColor3dEXT, SecondaryColor3dEXT@24) - GL_STUB_ALIAS(SecondaryColor3dv, 632, SecondaryColor3dv@4, SecondaryColor3dvEXT, SecondaryColor3dvEXT@4) - GL_STUB_ALIAS(SecondaryColor3f, 633, SecondaryColor3f@12, SecondaryColor3fEXT, SecondaryColor3fEXT@12) - GL_STUB_ALIAS(SecondaryColor3fv, 634, SecondaryColor3fv@4, SecondaryColor3fvEXT, SecondaryColor3fvEXT@4) - GL_STUB_ALIAS(SecondaryColor3i, 635, SecondaryColor3i@12, SecondaryColor3iEXT, SecondaryColor3iEXT@12) - GL_STUB_ALIAS(SecondaryColor3iv, 636, SecondaryColor3iv@4, SecondaryColor3ivEXT, SecondaryColor3ivEXT@4) - GL_STUB_ALIAS(SecondaryColor3s, 637, SecondaryColor3s@12, SecondaryColor3sEXT, SecondaryColor3sEXT@12) - GL_STUB_ALIAS(SecondaryColor3sv, 638, SecondaryColor3sv@4, SecondaryColor3svEXT, SecondaryColor3svEXT@4) - GL_STUB_ALIAS(SecondaryColor3ub, 639, SecondaryColor3ub@12, SecondaryColor3ubEXT, SecondaryColor3ubEXT@12) - GL_STUB_ALIAS(SecondaryColor3ubv, 640, SecondaryColor3ubv@4, SecondaryColor3ubvEXT, SecondaryColor3ubvEXT@4) - GL_STUB_ALIAS(SecondaryColor3ui, 641, SecondaryColor3ui@12, SecondaryColor3uiEXT, SecondaryColor3uiEXT@12) - GL_STUB_ALIAS(SecondaryColor3uiv, 642, SecondaryColor3uiv@4, SecondaryColor3uivEXT, SecondaryColor3uivEXT@4) - GL_STUB_ALIAS(SecondaryColor3us, 643, SecondaryColor3us@12, SecondaryColor3usEXT, SecondaryColor3usEXT@12) - GL_STUB_ALIAS(SecondaryColor3usv, 644, SecondaryColor3usv@4, SecondaryColor3usvEXT, SecondaryColor3usvEXT@4) - GL_STUB_ALIAS(SecondaryColorPointer, 645, SecondaryColorPointer@16, SecondaryColorPointerEXT, SecondaryColorPointerEXT@16) - GL_STUB_ALIAS(MultiDrawArrays, 646, MultiDrawArrays@16, MultiDrawArraysEXT, MultiDrawArraysEXT@16) - GL_STUB_ALIAS(MultiDrawElements, 647, MultiDrawElements@20, MultiDrawElementsEXT, MultiDrawElementsEXT@20) - GL_STUB_ALIAS(FogCoordPointer, 648, FogCoordPointer@12, FogCoordPointerEXT, FogCoordPointerEXT@12) - GL_STUB_ALIAS(FogCoordd, 649, FogCoordd@8, FogCoorddEXT, FogCoorddEXT@8) - GL_STUB_ALIAS(FogCoorddv, 650, FogCoorddv@4, FogCoorddvEXT, FogCoorddvEXT@4) - GL_STUB_ALIAS(FogCoordf, 651, FogCoordf@4, FogCoordfEXT, FogCoordfEXT@4) - GL_STUB_ALIAS(FogCoordfv, 652, FogCoordfv@4, FogCoordfvEXT, FogCoordfvEXT@4) - GL_STUB_ALIAS(BlendFuncSeparate, 654, BlendFuncSeparate@16, BlendFuncSeparateEXT, BlendFuncSeparateEXT@16) - GL_STUB_ALIAS(WindowPos2d, 671, WindowPos2d@16, WindowPos2dMESA, WindowPos2dMESA@16) - GL_STUB_ALIAS(WindowPos2dARB, 671, WindowPos2dARB@16, WindowPos2dMESA, WindowPos2dMESA@16) - GL_STUB_ALIAS(WindowPos2dv, 672, WindowPos2dv@4, WindowPos2dvMESA, WindowPos2dvMESA@4) - GL_STUB_ALIAS(WindowPos2dvARB, 672, WindowPos2dvARB@4, WindowPos2dvMESA, WindowPos2dvMESA@4) - GL_STUB_ALIAS(WindowPos2f, 673, WindowPos2f@8, WindowPos2fMESA, WindowPos2fMESA@8) - GL_STUB_ALIAS(WindowPos2fARB, 673, WindowPos2fARB@8, WindowPos2fMESA, WindowPos2fMESA@8) - GL_STUB_ALIAS(WindowPos2fv, 674, WindowPos2fv@4, WindowPos2fvMESA, WindowPos2fvMESA@4) - GL_STUB_ALIAS(WindowPos2fvARB, 674, WindowPos2fvARB@4, WindowPos2fvMESA, WindowPos2fvMESA@4) - GL_STUB_ALIAS(WindowPos2i, 675, WindowPos2i@8, WindowPos2iMESA, WindowPos2iMESA@8) - GL_STUB_ALIAS(WindowPos2iARB, 675, WindowPos2iARB@8, WindowPos2iMESA, WindowPos2iMESA@8) - GL_STUB_ALIAS(WindowPos2iv, 676, WindowPos2iv@4, WindowPos2ivMESA, WindowPos2ivMESA@4) - GL_STUB_ALIAS(WindowPos2ivARB, 676, WindowPos2ivARB@4, WindowPos2ivMESA, WindowPos2ivMESA@4) - GL_STUB_ALIAS(WindowPos2s, 677, WindowPos2s@8, WindowPos2sMESA, WindowPos2sMESA@8) - GL_STUB_ALIAS(WindowPos2sARB, 677, WindowPos2sARB@8, WindowPos2sMESA, WindowPos2sMESA@8) - GL_STUB_ALIAS(WindowPos2sv, 678, WindowPos2sv@4, WindowPos2svMESA, WindowPos2svMESA@4) - GL_STUB_ALIAS(WindowPos2svARB, 678, WindowPos2svARB@4, WindowPos2svMESA, WindowPos2svMESA@4) - GL_STUB_ALIAS(WindowPos3d, 679, WindowPos3d@24, WindowPos3dMESA, WindowPos3dMESA@24) - GL_STUB_ALIAS(WindowPos3dARB, 679, WindowPos3dARB@24, WindowPos3dMESA, WindowPos3dMESA@24) - GL_STUB_ALIAS(WindowPos3dv, 680, WindowPos3dv@4, WindowPos3dvMESA, WindowPos3dvMESA@4) - GL_STUB_ALIAS(WindowPos3dvARB, 680, WindowPos3dvARB@4, WindowPos3dvMESA, WindowPos3dvMESA@4) - GL_STUB_ALIAS(WindowPos3f, 681, WindowPos3f@12, WindowPos3fMESA, WindowPos3fMESA@12) - GL_STUB_ALIAS(WindowPos3fARB, 681, WindowPos3fARB@12, WindowPos3fMESA, WindowPos3fMESA@12) - GL_STUB_ALIAS(WindowPos3fv, 682, WindowPos3fv@4, WindowPos3fvMESA, WindowPos3fvMESA@4) - GL_STUB_ALIAS(WindowPos3fvARB, 682, WindowPos3fvARB@4, WindowPos3fvMESA, WindowPos3fvMESA@4) - GL_STUB_ALIAS(WindowPos3i, 683, WindowPos3i@12, WindowPos3iMESA, WindowPos3iMESA@12) - GL_STUB_ALIAS(WindowPos3iARB, 683, WindowPos3iARB@12, WindowPos3iMESA, WindowPos3iMESA@12) - GL_STUB_ALIAS(WindowPos3iv, 684, WindowPos3iv@4, WindowPos3ivMESA, WindowPos3ivMESA@4) - GL_STUB_ALIAS(WindowPos3ivARB, 684, WindowPos3ivARB@4, WindowPos3ivMESA, WindowPos3ivMESA@4) - GL_STUB_ALIAS(WindowPos3s, 685, WindowPos3s@12, WindowPos3sMESA, WindowPos3sMESA@12) - GL_STUB_ALIAS(WindowPos3sARB, 685, WindowPos3sARB@12, WindowPos3sMESA, WindowPos3sMESA@12) - GL_STUB_ALIAS(WindowPos3sv, 686, WindowPos3sv@4, WindowPos3svMESA, WindowPos3svMESA@4) - GL_STUB_ALIAS(WindowPos3svARB, 686, WindowPos3svARB@4, WindowPos3svMESA, WindowPos3svMESA@4) - GL_STUB_ALIAS(BindProgramARB, 705, BindProgramARB@8, BindProgramNV, BindProgramNV@8) - GL_STUB_ALIAS(DeleteProgramsARB, 706, DeleteProgramsARB@8, DeleteProgramsNV, DeleteProgramsNV@8) - GL_STUB_ALIAS(GenProgramsARB, 708, GenProgramsARB@8, GenProgramsNV, GenProgramsNV@8) - GL_STUB_ALIAS(GetVertexAttribPointerv, 714, GetVertexAttribPointerv@12, GetVertexAttribPointervNV, GetVertexAttribPointervNV@12) - GL_STUB_ALIAS(GetVertexAttribPointervARB, 714, GetVertexAttribPointervARB@12, GetVertexAttribPointervNV, GetVertexAttribPointervNV@12) - GL_STUB_ALIAS(IsProgramARB, 718, IsProgramARB@4, IsProgramNV, IsProgramNV@4) - GL_STUB_ALIAS(PointParameteri, 782, PointParameteri@8, PointParameteriNV, PointParameteriNV@8) - GL_STUB_ALIAS(PointParameteriv, 783, PointParameteriv@8, PointParameterivNV, PointParameterivNV@8) - GL_STUB_ALIAS(DeleteVertexArrays, 786, DeleteVertexArrays@8, _dispatch_stub_786, _dispatch_stub_786@8) - GL_STUB_ALIAS(IsVertexArray, 788, IsVertexArray@4, _dispatch_stub_788, _dispatch_stub_788@4) - GL_STUB_ALIAS(PrimitiveRestartIndex, 795, PrimitiveRestartIndex@4, PrimitiveRestartIndexNV, PrimitiveRestartIndexNV@4) - GL_STUB_ALIAS(BlendEquationSeparate, 798, BlendEquationSeparate@8, _dispatch_stub_798, _dispatch_stub_798@8) - GL_STUB_ALIAS(BindFramebuffer, 799, BindFramebuffer@8, BindFramebufferEXT, BindFramebufferEXT@8) - GL_STUB_ALIAS(BindRenderbuffer, 800, BindRenderbuffer@8, BindRenderbufferEXT, BindRenderbufferEXT@8) - GL_STUB_ALIAS(CheckFramebufferStatus, 801, CheckFramebufferStatus@4, CheckFramebufferStatusEXT, CheckFramebufferStatusEXT@4) - GL_STUB_ALIAS(DeleteFramebuffers, 802, DeleteFramebuffers@8, DeleteFramebuffersEXT, DeleteFramebuffersEXT@8) - GL_STUB_ALIAS(DeleteRenderbuffers, 803, DeleteRenderbuffers@8, DeleteRenderbuffersEXT, DeleteRenderbuffersEXT@8) - GL_STUB_ALIAS(FramebufferRenderbuffer, 804, FramebufferRenderbuffer@16, FramebufferRenderbufferEXT, FramebufferRenderbufferEXT@16) - GL_STUB_ALIAS(FramebufferTexture1D, 805, FramebufferTexture1D@20, FramebufferTexture1DEXT, FramebufferTexture1DEXT@20) - GL_STUB_ALIAS(FramebufferTexture2D, 806, FramebufferTexture2D@20, FramebufferTexture2DEXT, FramebufferTexture2DEXT@20) - GL_STUB_ALIAS(FramebufferTexture3D, 807, FramebufferTexture3D@24, FramebufferTexture3DEXT, FramebufferTexture3DEXT@24) - GL_STUB_ALIAS(GenFramebuffers, 808, GenFramebuffers@8, GenFramebuffersEXT, GenFramebuffersEXT@8) - GL_STUB_ALIAS(GenRenderbuffers, 809, GenRenderbuffers@8, GenRenderbuffersEXT, GenRenderbuffersEXT@8) - GL_STUB_ALIAS(GenerateMipmap, 810, GenerateMipmap@4, GenerateMipmapEXT, GenerateMipmapEXT@4) - GL_STUB_ALIAS(GetFramebufferAttachmentParameteriv, 811, GetFramebufferAttachmentParameteriv@16, GetFramebufferAttachmentParameterivEXT, GetFramebufferAttachmentParameterivEXT@16) - GL_STUB_ALIAS(GetRenderbufferParameteriv, 812, GetRenderbufferParameteriv@12, GetRenderbufferParameterivEXT, GetRenderbufferParameterivEXT@12) - GL_STUB_ALIAS(IsFramebuffer, 813, IsFramebuffer@4, IsFramebufferEXT, IsFramebufferEXT@4) - GL_STUB_ALIAS(IsRenderbuffer, 814, IsRenderbuffer@4, IsRenderbufferEXT, IsRenderbufferEXT@4) - GL_STUB_ALIAS(RenderbufferStorage, 815, RenderbufferStorage@16, RenderbufferStorageEXT, RenderbufferStorageEXT@16) - GL_STUB_ALIAS(BlitFramebuffer, 816, BlitFramebuffer@40, _dispatch_stub_816, _dispatch_stub_816@40) - GL_STUB_ALIAS(BindFragDataLocation, 819, BindFragDataLocation@12, BindFragDataLocationEXT, BindFragDataLocationEXT@12) - GL_STUB_ALIAS(GetFragDataLocation, 820, GetFragDataLocation@8, GetFragDataLocationEXT, GetFragDataLocationEXT@8) - GL_STUB_ALIAS(GetUniformuiv, 821, GetUniformuiv@12, GetUniformuivEXT, GetUniformuivEXT@12) - GL_STUB_ALIAS(GetVertexAttribIiv, 822, GetVertexAttribIiv@12, GetVertexAttribIivEXT, GetVertexAttribIivEXT@12) - GL_STUB_ALIAS(GetVertexAttribIuiv, 823, GetVertexAttribIuiv@12, GetVertexAttribIuivEXT, GetVertexAttribIuivEXT@12) - GL_STUB_ALIAS(Uniform1ui, 824, Uniform1ui@8, Uniform1uiEXT, Uniform1uiEXT@8) - GL_STUB_ALIAS(Uniform1uiv, 825, Uniform1uiv@12, Uniform1uivEXT, Uniform1uivEXT@12) - GL_STUB_ALIAS(Uniform2ui, 826, Uniform2ui@12, Uniform2uiEXT, Uniform2uiEXT@12) - GL_STUB_ALIAS(Uniform2uiv, 827, Uniform2uiv@12, Uniform2uivEXT, Uniform2uivEXT@12) - GL_STUB_ALIAS(Uniform3ui, 828, Uniform3ui@16, Uniform3uiEXT, Uniform3uiEXT@16) - GL_STUB_ALIAS(Uniform3uiv, 829, Uniform3uiv@12, Uniform3uivEXT, Uniform3uivEXT@12) - GL_STUB_ALIAS(Uniform4ui, 830, Uniform4ui@20, Uniform4uiEXT, Uniform4uiEXT@20) - GL_STUB_ALIAS(Uniform4uiv, 831, Uniform4uiv@12, Uniform4uivEXT, Uniform4uivEXT@12) - GL_STUB_ALIAS(VertexAttribI1i, 832, VertexAttribI1i@8, VertexAttribI1iEXT, VertexAttribI1iEXT@8) - GL_STUB_ALIAS(VertexAttribI1iv, 833, VertexAttribI1iv@8, VertexAttribI1ivEXT, VertexAttribI1ivEXT@8) - GL_STUB_ALIAS(VertexAttribI1ui, 834, VertexAttribI1ui@8, VertexAttribI1uiEXT, VertexAttribI1uiEXT@8) - GL_STUB_ALIAS(VertexAttribI1uiv, 835, VertexAttribI1uiv@8, VertexAttribI1uivEXT, VertexAttribI1uivEXT@8) - GL_STUB_ALIAS(VertexAttribI2i, 836, VertexAttribI2i@12, VertexAttribI2iEXT, VertexAttribI2iEXT@12) - GL_STUB_ALIAS(VertexAttribI2iv, 837, VertexAttribI2iv@8, VertexAttribI2ivEXT, VertexAttribI2ivEXT@8) - GL_STUB_ALIAS(VertexAttribI2ui, 838, VertexAttribI2ui@12, VertexAttribI2uiEXT, VertexAttribI2uiEXT@12) - GL_STUB_ALIAS(VertexAttribI2uiv, 839, VertexAttribI2uiv@8, VertexAttribI2uivEXT, VertexAttribI2uivEXT@8) - GL_STUB_ALIAS(VertexAttribI3i, 840, VertexAttribI3i@16, VertexAttribI3iEXT, VertexAttribI3iEXT@16) - GL_STUB_ALIAS(VertexAttribI3iv, 841, VertexAttribI3iv@8, VertexAttribI3ivEXT, VertexAttribI3ivEXT@8) - GL_STUB_ALIAS(VertexAttribI3ui, 842, VertexAttribI3ui@16, VertexAttribI3uiEXT, VertexAttribI3uiEXT@16) - GL_STUB_ALIAS(VertexAttribI3uiv, 843, VertexAttribI3uiv@8, VertexAttribI3uivEXT, VertexAttribI3uivEXT@8) - GL_STUB_ALIAS(VertexAttribI4bv, 844, VertexAttribI4bv@8, VertexAttribI4bvEXT, VertexAttribI4bvEXT@8) - GL_STUB_ALIAS(VertexAttribI4i, 845, VertexAttribI4i@20, VertexAttribI4iEXT, VertexAttribI4iEXT@20) - GL_STUB_ALIAS(VertexAttribI4iv, 846, VertexAttribI4iv@8, VertexAttribI4ivEXT, VertexAttribI4ivEXT@8) - GL_STUB_ALIAS(VertexAttribI4sv, 847, VertexAttribI4sv@8, VertexAttribI4svEXT, VertexAttribI4svEXT@8) - GL_STUB_ALIAS(VertexAttribI4ubv, 848, VertexAttribI4ubv@8, VertexAttribI4ubvEXT, VertexAttribI4ubvEXT@8) - GL_STUB_ALIAS(VertexAttribI4ui, 849, VertexAttribI4ui@20, VertexAttribI4uiEXT, VertexAttribI4uiEXT@20) - GL_STUB_ALIAS(VertexAttribI4uiv, 850, VertexAttribI4uiv@8, VertexAttribI4uivEXT, VertexAttribI4uivEXT@8) - GL_STUB_ALIAS(VertexAttribI4usv, 851, VertexAttribI4usv@8, VertexAttribI4usvEXT, VertexAttribI4usvEXT@8) - GL_STUB_ALIAS(VertexAttribIPointer, 852, VertexAttribIPointer@20, VertexAttribIPointerEXT, VertexAttribIPointerEXT@20) - GL_STUB_ALIAS(FramebufferTextureLayer, 853, FramebufferTextureLayer@20, FramebufferTextureLayerEXT, FramebufferTextureLayerEXT@20) - GL_STUB_ALIAS(ColorMaski, 854, ColorMaski@20, ColorMaskIndexedEXT, ColorMaskIndexedEXT@20) - GL_STUB_ALIAS(Disablei, 855, Disablei@8, DisableIndexedEXT, DisableIndexedEXT@8) - GL_STUB_ALIAS(Enablei, 856, Enablei@8, EnableIndexedEXT, EnableIndexedEXT@8) - GL_STUB_ALIAS(GetBooleani_v, 857, GetBooleani_v@12, GetBooleanIndexedvEXT, GetBooleanIndexedvEXT@12) - GL_STUB_ALIAS(GetIntegeri_v, 858, GetIntegeri_v@12, GetIntegerIndexedvEXT, GetIntegerIndexedvEXT@12) - GL_STUB_ALIAS(IsEnabledi, 859, IsEnabledi@8, IsEnabledIndexedEXT, IsEnabledIndexedEXT@8) - GL_STUB_ALIAS(GetTexParameterIiv, 862, GetTexParameterIiv@12, GetTexParameterIivEXT, GetTexParameterIivEXT@12) - GL_STUB_ALIAS(GetTexParameterIuiv, 863, GetTexParameterIuiv@12, GetTexParameterIuivEXT, GetTexParameterIuivEXT@12) - GL_STUB_ALIAS(TexParameterIiv, 864, TexParameterIiv@12, TexParameterIivEXT, TexParameterIivEXT@12) - GL_STUB_ALIAS(TexParameterIuiv, 865, TexParameterIuiv@12, TexParameterIuivEXT, TexParameterIuivEXT@12) - GL_STUB_ALIAS(BeginConditionalRender, 866, BeginConditionalRender@8, BeginConditionalRenderNV, BeginConditionalRenderNV@8) - GL_STUB_ALIAS(EndConditionalRender, 867, EndConditionalRender@0, EndConditionalRenderNV, EndConditionalRenderNV@0) - GL_STUB_ALIAS(BeginTransformFeedback, 868, BeginTransformFeedback@4, BeginTransformFeedbackEXT, BeginTransformFeedbackEXT@4) - GL_STUB_ALIAS(BindBufferBase, 869, BindBufferBase@12, BindBufferBaseEXT, BindBufferBaseEXT@12) - GL_STUB_ALIAS(BindBufferRange, 871, BindBufferRange@20, BindBufferRangeEXT, BindBufferRangeEXT@20) - GL_STUB_ALIAS(EndTransformFeedback, 872, EndTransformFeedback@0, EndTransformFeedbackEXT, EndTransformFeedbackEXT@0) - GL_STUB_ALIAS(GetTransformFeedbackVarying, 873, GetTransformFeedbackVarying@28, GetTransformFeedbackVaryingEXT, GetTransformFeedbackVaryingEXT@28) - GL_STUB_ALIAS(TransformFeedbackVaryings, 874, TransformFeedbackVaryings@16, TransformFeedbackVaryingsEXT, TransformFeedbackVaryingsEXT@16) - GL_STUB_ALIAS(ProvokingVertex, 875, ProvokingVertex@4, ProvokingVertexEXT, ProvokingVertexEXT@4) + GL_STUB_ALIAS(DrawArraysInstancedEXT, 573, DrawArraysInstancedEXT@16, DrawArraysInstancedARB, DrawArraysInstancedARB@16) + GL_STUB_ALIAS(DrawArraysInstanced, 573, DrawArraysInstanced@16, DrawArraysInstancedARB, DrawArraysInstancedARB@16) + GL_STUB_ALIAS(DrawElementsInstancedEXT, 574, DrawElementsInstancedEXT@20, DrawElementsInstancedARB, DrawElementsInstancedARB@20) + GL_STUB_ALIAS(DrawElementsInstanced, 574, DrawElementsInstanced@20, DrawElementsInstancedARB, DrawElementsInstancedARB@20) + GL_STUB_ALIAS(RenderbufferStorageMultisampleEXT, 575, RenderbufferStorageMultisampleEXT@20, RenderbufferStorageMultisample, RenderbufferStorageMultisample@20) + GL_STUB_ALIAS(PointParameterf, 641, PointParameterf@8, PointParameterfEXT, PointParameterfEXT@8) + GL_STUB_ALIAS(PointParameterfARB, 641, PointParameterfARB@8, PointParameterfEXT, PointParameterfEXT@8) + GL_STUB_ALIAS(PointParameterfv, 642, PointParameterfv@8, PointParameterfvEXT, PointParameterfvEXT@8) + GL_STUB_ALIAS(PointParameterfvARB, 642, PointParameterfvARB@8, PointParameterfvEXT, PointParameterfvEXT@8) + GL_STUB_ALIAS(SecondaryColor3b, 645, SecondaryColor3b@12, SecondaryColor3bEXT, SecondaryColor3bEXT@12) + GL_STUB_ALIAS(SecondaryColor3bv, 646, SecondaryColor3bv@4, SecondaryColor3bvEXT, SecondaryColor3bvEXT@4) + GL_STUB_ALIAS(SecondaryColor3d, 647, SecondaryColor3d@24, SecondaryColor3dEXT, SecondaryColor3dEXT@24) + GL_STUB_ALIAS(SecondaryColor3dv, 648, SecondaryColor3dv@4, SecondaryColor3dvEXT, SecondaryColor3dvEXT@4) + GL_STUB_ALIAS(SecondaryColor3f, 649, SecondaryColor3f@12, SecondaryColor3fEXT, SecondaryColor3fEXT@12) + GL_STUB_ALIAS(SecondaryColor3fv, 650, SecondaryColor3fv@4, SecondaryColor3fvEXT, SecondaryColor3fvEXT@4) + GL_STUB_ALIAS(SecondaryColor3i, 651, SecondaryColor3i@12, SecondaryColor3iEXT, SecondaryColor3iEXT@12) + GL_STUB_ALIAS(SecondaryColor3iv, 652, SecondaryColor3iv@4, SecondaryColor3ivEXT, SecondaryColor3ivEXT@4) + GL_STUB_ALIAS(SecondaryColor3s, 653, SecondaryColor3s@12, SecondaryColor3sEXT, SecondaryColor3sEXT@12) + GL_STUB_ALIAS(SecondaryColor3sv, 654, SecondaryColor3sv@4, SecondaryColor3svEXT, SecondaryColor3svEXT@4) + GL_STUB_ALIAS(SecondaryColor3ub, 655, SecondaryColor3ub@12, SecondaryColor3ubEXT, SecondaryColor3ubEXT@12) + GL_STUB_ALIAS(SecondaryColor3ubv, 656, SecondaryColor3ubv@4, SecondaryColor3ubvEXT, SecondaryColor3ubvEXT@4) + GL_STUB_ALIAS(SecondaryColor3ui, 657, SecondaryColor3ui@12, SecondaryColor3uiEXT, SecondaryColor3uiEXT@12) + GL_STUB_ALIAS(SecondaryColor3uiv, 658, SecondaryColor3uiv@4, SecondaryColor3uivEXT, SecondaryColor3uivEXT@4) + GL_STUB_ALIAS(SecondaryColor3us, 659, SecondaryColor3us@12, SecondaryColor3usEXT, SecondaryColor3usEXT@12) + GL_STUB_ALIAS(SecondaryColor3usv, 660, SecondaryColor3usv@4, SecondaryColor3usvEXT, SecondaryColor3usvEXT@4) + GL_STUB_ALIAS(SecondaryColorPointer, 661, SecondaryColorPointer@16, SecondaryColorPointerEXT, SecondaryColorPointerEXT@16) + GL_STUB_ALIAS(MultiDrawArrays, 662, MultiDrawArrays@16, MultiDrawArraysEXT, MultiDrawArraysEXT@16) + GL_STUB_ALIAS(MultiDrawElements, 663, MultiDrawElements@20, MultiDrawElementsEXT, MultiDrawElementsEXT@20) + GL_STUB_ALIAS(FogCoordPointer, 664, FogCoordPointer@12, FogCoordPointerEXT, FogCoordPointerEXT@12) + GL_STUB_ALIAS(FogCoordd, 665, FogCoordd@8, FogCoorddEXT, FogCoorddEXT@8) + GL_STUB_ALIAS(FogCoorddv, 666, FogCoorddv@4, FogCoorddvEXT, FogCoorddvEXT@4) + GL_STUB_ALIAS(FogCoordf, 667, FogCoordf@4, FogCoordfEXT, FogCoordfEXT@4) + GL_STUB_ALIAS(FogCoordfv, 668, FogCoordfv@4, FogCoordfvEXT, FogCoordfvEXT@4) + GL_STUB_ALIAS(BlendFuncSeparate, 670, BlendFuncSeparate@16, BlendFuncSeparateEXT, BlendFuncSeparateEXT@16) + GL_STUB_ALIAS(WindowPos2d, 687, WindowPos2d@16, WindowPos2dMESA, WindowPos2dMESA@16) + GL_STUB_ALIAS(WindowPos2dARB, 687, WindowPos2dARB@16, WindowPos2dMESA, WindowPos2dMESA@16) + GL_STUB_ALIAS(WindowPos2dv, 688, WindowPos2dv@4, WindowPos2dvMESA, WindowPos2dvMESA@4) + GL_STUB_ALIAS(WindowPos2dvARB, 688, WindowPos2dvARB@4, WindowPos2dvMESA, WindowPos2dvMESA@4) + GL_STUB_ALIAS(WindowPos2f, 689, WindowPos2f@8, WindowPos2fMESA, WindowPos2fMESA@8) + GL_STUB_ALIAS(WindowPos2fARB, 689, WindowPos2fARB@8, WindowPos2fMESA, WindowPos2fMESA@8) + GL_STUB_ALIAS(WindowPos2fv, 690, WindowPos2fv@4, WindowPos2fvMESA, WindowPos2fvMESA@4) + GL_STUB_ALIAS(WindowPos2fvARB, 690, WindowPos2fvARB@4, WindowPos2fvMESA, WindowPos2fvMESA@4) + GL_STUB_ALIAS(WindowPos2i, 691, WindowPos2i@8, WindowPos2iMESA, WindowPos2iMESA@8) + GL_STUB_ALIAS(WindowPos2iARB, 691, WindowPos2iARB@8, WindowPos2iMESA, WindowPos2iMESA@8) + GL_STUB_ALIAS(WindowPos2iv, 692, WindowPos2iv@4, WindowPos2ivMESA, WindowPos2ivMESA@4) + GL_STUB_ALIAS(WindowPos2ivARB, 692, WindowPos2ivARB@4, WindowPos2ivMESA, WindowPos2ivMESA@4) + GL_STUB_ALIAS(WindowPos2s, 693, WindowPos2s@8, WindowPos2sMESA, WindowPos2sMESA@8) + GL_STUB_ALIAS(WindowPos2sARB, 693, WindowPos2sARB@8, WindowPos2sMESA, WindowPos2sMESA@8) + GL_STUB_ALIAS(WindowPos2sv, 694, WindowPos2sv@4, WindowPos2svMESA, WindowPos2svMESA@4) + GL_STUB_ALIAS(WindowPos2svARB, 694, WindowPos2svARB@4, WindowPos2svMESA, WindowPos2svMESA@4) + GL_STUB_ALIAS(WindowPos3d, 695, WindowPos3d@24, WindowPos3dMESA, WindowPos3dMESA@24) + GL_STUB_ALIAS(WindowPos3dARB, 695, WindowPos3dARB@24, WindowPos3dMESA, WindowPos3dMESA@24) + GL_STUB_ALIAS(WindowPos3dv, 696, WindowPos3dv@4, WindowPos3dvMESA, WindowPos3dvMESA@4) + GL_STUB_ALIAS(WindowPos3dvARB, 696, WindowPos3dvARB@4, WindowPos3dvMESA, WindowPos3dvMESA@4) + GL_STUB_ALIAS(WindowPos3f, 697, WindowPos3f@12, WindowPos3fMESA, WindowPos3fMESA@12) + GL_STUB_ALIAS(WindowPos3fARB, 697, WindowPos3fARB@12, WindowPos3fMESA, WindowPos3fMESA@12) + GL_STUB_ALIAS(WindowPos3fv, 698, WindowPos3fv@4, WindowPos3fvMESA, WindowPos3fvMESA@4) + GL_STUB_ALIAS(WindowPos3fvARB, 698, WindowPos3fvARB@4, WindowPos3fvMESA, WindowPos3fvMESA@4) + GL_STUB_ALIAS(WindowPos3i, 699, WindowPos3i@12, WindowPos3iMESA, WindowPos3iMESA@12) + GL_STUB_ALIAS(WindowPos3iARB, 699, WindowPos3iARB@12, WindowPos3iMESA, WindowPos3iMESA@12) + GL_STUB_ALIAS(WindowPos3iv, 700, WindowPos3iv@4, WindowPos3ivMESA, WindowPos3ivMESA@4) + GL_STUB_ALIAS(WindowPos3ivARB, 700, WindowPos3ivARB@4, WindowPos3ivMESA, WindowPos3ivMESA@4) + GL_STUB_ALIAS(WindowPos3s, 701, WindowPos3s@12, WindowPos3sMESA, WindowPos3sMESA@12) + GL_STUB_ALIAS(WindowPos3sARB, 701, WindowPos3sARB@12, WindowPos3sMESA, WindowPos3sMESA@12) + GL_STUB_ALIAS(WindowPos3sv, 702, WindowPos3sv@4, WindowPos3svMESA, WindowPos3svMESA@4) + GL_STUB_ALIAS(WindowPos3svARB, 702, WindowPos3svARB@4, WindowPos3svMESA, WindowPos3svMESA@4) + GL_STUB_ALIAS(BindProgramARB, 721, BindProgramARB@8, BindProgramNV, BindProgramNV@8) + GL_STUB_ALIAS(DeleteProgramsARB, 722, DeleteProgramsARB@8, DeleteProgramsNV, DeleteProgramsNV@8) + GL_STUB_ALIAS(GenProgramsARB, 724, GenProgramsARB@8, GenProgramsNV, GenProgramsNV@8) + GL_STUB_ALIAS(GetVertexAttribPointerv, 730, GetVertexAttribPointerv@12, GetVertexAttribPointervNV, GetVertexAttribPointervNV@12) + GL_STUB_ALIAS(GetVertexAttribPointervARB, 730, GetVertexAttribPointervARB@12, GetVertexAttribPointervNV, GetVertexAttribPointervNV@12) + GL_STUB_ALIAS(IsProgramARB, 734, IsProgramARB@4, IsProgramNV, IsProgramNV@4) + GL_STUB_ALIAS(PointParameteri, 798, PointParameteri@8, PointParameteriNV, PointParameteriNV@8) + GL_STUB_ALIAS(PointParameteriv, 799, PointParameteriv@8, PointParameterivNV, PointParameterivNV@8) + GL_STUB_ALIAS(DeleteVertexArrays, 802, DeleteVertexArrays@8, _dispatch_stub_802, _dispatch_stub_802@8) + GL_STUB_ALIAS(IsVertexArray, 804, IsVertexArray@4, _dispatch_stub_804, _dispatch_stub_804@4) + GL_STUB_ALIAS(PrimitiveRestartIndex, 811, PrimitiveRestartIndex@4, PrimitiveRestartIndexNV, PrimitiveRestartIndexNV@4) + GL_STUB_ALIAS(BlendEquationSeparate, 814, BlendEquationSeparate@8, _dispatch_stub_814, _dispatch_stub_814@8) + GL_STUB_ALIAS(BindFramebuffer, 815, BindFramebuffer@8, BindFramebufferEXT, BindFramebufferEXT@8) + GL_STUB_ALIAS(BindRenderbuffer, 816, BindRenderbuffer@8, BindRenderbufferEXT, BindRenderbufferEXT@8) + GL_STUB_ALIAS(CheckFramebufferStatus, 817, CheckFramebufferStatus@4, CheckFramebufferStatusEXT, CheckFramebufferStatusEXT@4) + GL_STUB_ALIAS(DeleteFramebuffers, 818, DeleteFramebuffers@8, DeleteFramebuffersEXT, DeleteFramebuffersEXT@8) + GL_STUB_ALIAS(DeleteRenderbuffers, 819, DeleteRenderbuffers@8, DeleteRenderbuffersEXT, DeleteRenderbuffersEXT@8) + GL_STUB_ALIAS(FramebufferRenderbuffer, 820, FramebufferRenderbuffer@16, FramebufferRenderbufferEXT, FramebufferRenderbufferEXT@16) + GL_STUB_ALIAS(FramebufferTexture1D, 821, FramebufferTexture1D@20, FramebufferTexture1DEXT, FramebufferTexture1DEXT@20) + GL_STUB_ALIAS(FramebufferTexture2D, 822, FramebufferTexture2D@20, FramebufferTexture2DEXT, FramebufferTexture2DEXT@20) + GL_STUB_ALIAS(FramebufferTexture3D, 823, FramebufferTexture3D@24, FramebufferTexture3DEXT, FramebufferTexture3DEXT@24) + GL_STUB_ALIAS(GenFramebuffers, 824, GenFramebuffers@8, GenFramebuffersEXT, GenFramebuffersEXT@8) + GL_STUB_ALIAS(GenRenderbuffers, 825, GenRenderbuffers@8, GenRenderbuffersEXT, GenRenderbuffersEXT@8) + GL_STUB_ALIAS(GenerateMipmap, 826, GenerateMipmap@4, GenerateMipmapEXT, GenerateMipmapEXT@4) + GL_STUB_ALIAS(GetFramebufferAttachmentParameteriv, 827, GetFramebufferAttachmentParameteriv@16, GetFramebufferAttachmentParameterivEXT, GetFramebufferAttachmentParameterivEXT@16) + GL_STUB_ALIAS(GetRenderbufferParameteriv, 828, GetRenderbufferParameteriv@12, GetRenderbufferParameterivEXT, GetRenderbufferParameterivEXT@12) + GL_STUB_ALIAS(IsFramebuffer, 829, IsFramebuffer@4, IsFramebufferEXT, IsFramebufferEXT@4) + GL_STUB_ALIAS(IsRenderbuffer, 830, IsRenderbuffer@4, IsRenderbufferEXT, IsRenderbufferEXT@4) + GL_STUB_ALIAS(RenderbufferStorage, 831, RenderbufferStorage@16, RenderbufferStorageEXT, RenderbufferStorageEXT@16) + GL_STUB_ALIAS(BlitFramebuffer, 832, BlitFramebuffer@40, _dispatch_stub_832, _dispatch_stub_832@40) + GL_STUB_ALIAS(BindFragDataLocation, 835, BindFragDataLocation@12, BindFragDataLocationEXT, BindFragDataLocationEXT@12) + GL_STUB_ALIAS(GetFragDataLocation, 836, GetFragDataLocation@8, GetFragDataLocationEXT, GetFragDataLocationEXT@8) + GL_STUB_ALIAS(GetUniformuiv, 837, GetUniformuiv@12, GetUniformuivEXT, GetUniformuivEXT@12) + GL_STUB_ALIAS(GetVertexAttribIiv, 838, GetVertexAttribIiv@12, GetVertexAttribIivEXT, GetVertexAttribIivEXT@12) + GL_STUB_ALIAS(GetVertexAttribIuiv, 839, GetVertexAttribIuiv@12, GetVertexAttribIuivEXT, GetVertexAttribIuivEXT@12) + GL_STUB_ALIAS(Uniform1ui, 840, Uniform1ui@8, Uniform1uiEXT, Uniform1uiEXT@8) + GL_STUB_ALIAS(Uniform1uiv, 841, Uniform1uiv@12, Uniform1uivEXT, Uniform1uivEXT@12) + GL_STUB_ALIAS(Uniform2ui, 842, Uniform2ui@12, Uniform2uiEXT, Uniform2uiEXT@12) + GL_STUB_ALIAS(Uniform2uiv, 843, Uniform2uiv@12, Uniform2uivEXT, Uniform2uivEXT@12) + GL_STUB_ALIAS(Uniform3ui, 844, Uniform3ui@16, Uniform3uiEXT, Uniform3uiEXT@16) + GL_STUB_ALIAS(Uniform3uiv, 845, Uniform3uiv@12, Uniform3uivEXT, Uniform3uivEXT@12) + GL_STUB_ALIAS(Uniform4ui, 846, Uniform4ui@20, Uniform4uiEXT, Uniform4uiEXT@20) + GL_STUB_ALIAS(Uniform4uiv, 847, Uniform4uiv@12, Uniform4uivEXT, Uniform4uivEXT@12) + GL_STUB_ALIAS(VertexAttribI1i, 848, VertexAttribI1i@8, VertexAttribI1iEXT, VertexAttribI1iEXT@8) + GL_STUB_ALIAS(VertexAttribI1iv, 849, VertexAttribI1iv@8, VertexAttribI1ivEXT, VertexAttribI1ivEXT@8) + GL_STUB_ALIAS(VertexAttribI1ui, 850, VertexAttribI1ui@8, VertexAttribI1uiEXT, VertexAttribI1uiEXT@8) + GL_STUB_ALIAS(VertexAttribI1uiv, 851, VertexAttribI1uiv@8, VertexAttribI1uivEXT, VertexAttribI1uivEXT@8) + GL_STUB_ALIAS(VertexAttribI2i, 852, VertexAttribI2i@12, VertexAttribI2iEXT, VertexAttribI2iEXT@12) + GL_STUB_ALIAS(VertexAttribI2iv, 853, VertexAttribI2iv@8, VertexAttribI2ivEXT, VertexAttribI2ivEXT@8) + GL_STUB_ALIAS(VertexAttribI2ui, 854, VertexAttribI2ui@12, VertexAttribI2uiEXT, VertexAttribI2uiEXT@12) + GL_STUB_ALIAS(VertexAttribI2uiv, 855, VertexAttribI2uiv@8, VertexAttribI2uivEXT, VertexAttribI2uivEXT@8) + GL_STUB_ALIAS(VertexAttribI3i, 856, VertexAttribI3i@16, VertexAttribI3iEXT, VertexAttribI3iEXT@16) + GL_STUB_ALIAS(VertexAttribI3iv, 857, VertexAttribI3iv@8, VertexAttribI3ivEXT, VertexAttribI3ivEXT@8) + GL_STUB_ALIAS(VertexAttribI3ui, 858, VertexAttribI3ui@16, VertexAttribI3uiEXT, VertexAttribI3uiEXT@16) + GL_STUB_ALIAS(VertexAttribI3uiv, 859, VertexAttribI3uiv@8, VertexAttribI3uivEXT, VertexAttribI3uivEXT@8) + GL_STUB_ALIAS(VertexAttribI4bv, 860, VertexAttribI4bv@8, VertexAttribI4bvEXT, VertexAttribI4bvEXT@8) + GL_STUB_ALIAS(VertexAttribI4i, 861, VertexAttribI4i@20, VertexAttribI4iEXT, VertexAttribI4iEXT@20) + GL_STUB_ALIAS(VertexAttribI4iv, 862, VertexAttribI4iv@8, VertexAttribI4ivEXT, VertexAttribI4ivEXT@8) + GL_STUB_ALIAS(VertexAttribI4sv, 863, VertexAttribI4sv@8, VertexAttribI4svEXT, VertexAttribI4svEXT@8) + GL_STUB_ALIAS(VertexAttribI4ubv, 864, VertexAttribI4ubv@8, VertexAttribI4ubvEXT, VertexAttribI4ubvEXT@8) + GL_STUB_ALIAS(VertexAttribI4ui, 865, VertexAttribI4ui@20, VertexAttribI4uiEXT, VertexAttribI4uiEXT@20) + GL_STUB_ALIAS(VertexAttribI4uiv, 866, VertexAttribI4uiv@8, VertexAttribI4uivEXT, VertexAttribI4uivEXT@8) + GL_STUB_ALIAS(VertexAttribI4usv, 867, VertexAttribI4usv@8, VertexAttribI4usvEXT, VertexAttribI4usvEXT@8) + GL_STUB_ALIAS(VertexAttribIPointer, 868, VertexAttribIPointer@20, VertexAttribIPointerEXT, VertexAttribIPointerEXT@20) + GL_STUB_ALIAS(FramebufferTextureLayer, 869, FramebufferTextureLayer@20, FramebufferTextureLayerEXT, FramebufferTextureLayerEXT@20) + GL_STUB_ALIAS(ColorMaski, 870, ColorMaski@20, ColorMaskIndexedEXT, ColorMaskIndexedEXT@20) + GL_STUB_ALIAS(Disablei, 871, Disablei@8, DisableIndexedEXT, DisableIndexedEXT@8) + GL_STUB_ALIAS(Enablei, 872, Enablei@8, EnableIndexedEXT, EnableIndexedEXT@8) + GL_STUB_ALIAS(GetBooleani_v, 873, GetBooleani_v@12, GetBooleanIndexedvEXT, GetBooleanIndexedvEXT@12) + GL_STUB_ALIAS(GetIntegeri_v, 874, GetIntegeri_v@12, GetIntegerIndexedvEXT, GetIntegerIndexedvEXT@12) + GL_STUB_ALIAS(IsEnabledi, 875, IsEnabledi@8, IsEnabledIndexedEXT, IsEnabledIndexedEXT@8) + GL_STUB_ALIAS(GetTexParameterIiv, 878, GetTexParameterIiv@12, GetTexParameterIivEXT, GetTexParameterIivEXT@12) + GL_STUB_ALIAS(GetTexParameterIuiv, 879, GetTexParameterIuiv@12, GetTexParameterIuivEXT, GetTexParameterIuivEXT@12) + GL_STUB_ALIAS(TexParameterIiv, 880, TexParameterIiv@12, TexParameterIivEXT, TexParameterIivEXT@12) + GL_STUB_ALIAS(TexParameterIuiv, 881, TexParameterIuiv@12, TexParameterIuivEXT, TexParameterIuivEXT@12) + GL_STUB_ALIAS(BeginConditionalRender, 882, BeginConditionalRender@8, BeginConditionalRenderNV, BeginConditionalRenderNV@8) + GL_STUB_ALIAS(EndConditionalRender, 883, EndConditionalRender@0, EndConditionalRenderNV, EndConditionalRenderNV@0) + GL_STUB_ALIAS(BeginTransformFeedback, 884, BeginTransformFeedback@4, BeginTransformFeedbackEXT, BeginTransformFeedbackEXT@4) + GL_STUB_ALIAS(BindBufferBase, 885, BindBufferBase@12, BindBufferBaseEXT, BindBufferBaseEXT@12) + GL_STUB_ALIAS(BindBufferRange, 887, BindBufferRange@20, BindBufferRangeEXT, BindBufferRangeEXT@20) + GL_STUB_ALIAS(EndTransformFeedback, 888, EndTransformFeedback@0, EndTransformFeedbackEXT, EndTransformFeedbackEXT@0) + GL_STUB_ALIAS(GetTransformFeedbackVarying, 889, GetTransformFeedbackVarying@28, GetTransformFeedbackVaryingEXT, GetTransformFeedbackVaryingEXT@28) + GL_STUB_ALIAS(TransformFeedbackVaryings, 890, TransformFeedbackVaryings@16, TransformFeedbackVaryingsEXT, TransformFeedbackVaryingsEXT@16) + GL_STUB_ALIAS(ProvokingVertex, 891, ProvokingVertex@4, ProvokingVertexEXT, ProvokingVertexEXT@4) GLOBL GLNAME(gl_dispatch_functions_end) HIDDEN(GLNAME(gl_dispatch_functions_end)) diff --git a/src/mapi/glapi/glapitable.h b/src/mapi/glapi/glapitable.h index 1de71b97daf..5b7aeee6796 100644 --- a/src/mapi/glapi/glapitable.h +++ b/src/mapi/glapi/glapitable.h @@ -471,7 +471,7 @@ struct _glapi_table void (GLAPIENTRYP UniformMatrix4x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 428 */ void (GLAPIENTRYP UniformMatrix4x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 429 */ void (GLAPIENTRYP ClampColor)(GLenum target, GLenum clamp); /* 430 */ - void (GLAPIENTRYP ClearBufferfi)(GLenum buffer, GLint drawbuffer, const GLfloat depth, const GLint stencil); /* 431 */ + void (GLAPIENTRYP ClearBufferfi)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil); /* 431 */ void (GLAPIENTRYP ClearBufferfv)(GLenum buffer, GLint drawbuffer, const GLfloat * value); /* 432 */ void (GLAPIENTRYP ClearBufferiv)(GLenum buffer, GLint drawbuffer, const GLint * value); /* 433 */ void (GLAPIENTRYP ClearBufferuiv)(GLenum buffer, GLint drawbuffer, const GLuint * value); /* 434 */ @@ -612,326 +612,342 @@ struct _glapi_table void (GLAPIENTRYP GetActiveAttribARB)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name); /* 569 */ GLint (GLAPIENTRYP GetAttribLocationARB)(GLhandleARB program, const GLcharARB * name); /* 570 */ void (GLAPIENTRYP DrawBuffersARB)(GLsizei n, const GLenum * bufs); /* 571 */ - void (GLAPIENTRYP DrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount); /* 572 */ - void (GLAPIENTRYP DrawElementsInstancedARB)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount); /* 573 */ - void (GLAPIENTRYP RenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); /* 574 */ - void (GLAPIENTRYP FramebufferTextureARB)(GLenum target, GLenum attachment, GLuint texture, GLint level); /* 575 */ - void (GLAPIENTRYP FramebufferTextureFaceARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); /* 576 */ - void (GLAPIENTRYP ProgramParameteriARB)(GLuint program, GLenum pname, GLint value); /* 577 */ - void (GLAPIENTRYP VertexAttribDivisorARB)(GLuint index, GLuint divisor); /* 578 */ - void (GLAPIENTRYP FlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length); /* 579 */ - GLvoid * (GLAPIENTRYP MapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); /* 580 */ - void (GLAPIENTRYP BindVertexArray)(GLuint array); /* 581 */ - void (GLAPIENTRYP GenVertexArrays)(GLsizei n, GLuint * arrays); /* 582 */ - void (GLAPIENTRYP CopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); /* 583 */ - GLenum (GLAPIENTRYP ClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); /* 584 */ - void (GLAPIENTRYP DeleteSync)(GLsync sync); /* 585 */ - GLsync (GLAPIENTRYP FenceSync)(GLenum condition, GLbitfield flags); /* 586 */ - void (GLAPIENTRYP GetInteger64v)(GLenum pname, GLint64 * params); /* 587 */ - void (GLAPIENTRYP GetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values); /* 588 */ - GLboolean (GLAPIENTRYP IsSync)(GLsync sync); /* 589 */ - void (GLAPIENTRYP WaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); /* 590 */ - void (GLAPIENTRYP DrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex); /* 591 */ - void (GLAPIENTRYP DrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex); /* 592 */ - void (GLAPIENTRYP MultiDrawElementsBaseVertex)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount, const GLint * basevertex); /* 593 */ - void (GLAPIENTRYP BlendEquationSeparateiARB)(GLuint buf, GLenum modeRGB, GLenum modeA); /* 594 */ - void (GLAPIENTRYP BlendEquationiARB)(GLuint buf, GLenum mode); /* 595 */ - void (GLAPIENTRYP BlendFuncSeparateiARB)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcA, GLenum dstA); /* 596 */ - void (GLAPIENTRYP BlendFunciARB)(GLuint buf, GLenum src, GLenum dst); /* 597 */ - void (GLAPIENTRYP BindTransformFeedback)(GLenum target, GLuint id); /* 598 */ - void (GLAPIENTRYP DeleteTransformFeedbacks)(GLsizei n, const GLuint * ids); /* 599 */ - void (GLAPIENTRYP DrawTransformFeedback)(GLenum mode, GLuint id); /* 600 */ - void (GLAPIENTRYP GenTransformFeedbacks)(GLsizei n, GLuint * ids); /* 601 */ - GLboolean (GLAPIENTRYP IsTransformFeedback)(GLuint id); /* 602 */ - void (GLAPIENTRYP PauseTransformFeedback)(void); /* 603 */ - void (GLAPIENTRYP ResumeTransformFeedback)(void); /* 604 */ - void (GLAPIENTRYP ClearDepthf)(GLclampf depth); /* 605 */ - void (GLAPIENTRYP DepthRangef)(GLclampf zNear, GLclampf zFar); /* 606 */ - void (GLAPIENTRYP GetShaderPrecisionFormat)(GLenum shadertype, GLenum precisiontype, GLint * range, GLint * precision); /* 607 */ - void (GLAPIENTRYP ReleaseShaderCompiler)(void); /* 608 */ - void (GLAPIENTRYP ShaderBinary)(GLsizei n, const GLuint * shaders, GLenum binaryformat, const GLvoid * binary, GLsizei length); /* 609 */ - void (GLAPIENTRYP PolygonOffsetEXT)(GLfloat factor, GLfloat bias); /* 610 */ - void (GLAPIENTRYP GetPixelTexGenParameterfvSGIS)(GLenum pname, GLfloat * params); /* 611 */ - void (GLAPIENTRYP GetPixelTexGenParameterivSGIS)(GLenum pname, GLint * params); /* 612 */ - void (GLAPIENTRYP PixelTexGenParameterfSGIS)(GLenum pname, GLfloat param); /* 613 */ - void (GLAPIENTRYP PixelTexGenParameterfvSGIS)(GLenum pname, const GLfloat * params); /* 614 */ - void (GLAPIENTRYP PixelTexGenParameteriSGIS)(GLenum pname, GLint param); /* 615 */ - void (GLAPIENTRYP PixelTexGenParameterivSGIS)(GLenum pname, const GLint * params); /* 616 */ - void (GLAPIENTRYP SampleMaskSGIS)(GLclampf value, GLboolean invert); /* 617 */ - void (GLAPIENTRYP SamplePatternSGIS)(GLenum pattern); /* 618 */ - void (GLAPIENTRYP ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 619 */ - void (GLAPIENTRYP EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean * pointer); /* 620 */ - void (GLAPIENTRYP IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 621 */ - void (GLAPIENTRYP NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 622 */ - void (GLAPIENTRYP TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 623 */ - void (GLAPIENTRYP VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 624 */ - void (GLAPIENTRYP PointParameterfEXT)(GLenum pname, GLfloat param); /* 625 */ - void (GLAPIENTRYP PointParameterfvEXT)(GLenum pname, const GLfloat * params); /* 626 */ - void (GLAPIENTRYP LockArraysEXT)(GLint first, GLsizei count); /* 627 */ - void (GLAPIENTRYP UnlockArraysEXT)(void); /* 628 */ - void (GLAPIENTRYP SecondaryColor3bEXT)(GLbyte red, GLbyte green, GLbyte blue); /* 629 */ - void (GLAPIENTRYP SecondaryColor3bvEXT)(const GLbyte * v); /* 630 */ - void (GLAPIENTRYP SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue); /* 631 */ - void (GLAPIENTRYP SecondaryColor3dvEXT)(const GLdouble * v); /* 632 */ - void (GLAPIENTRYP SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue); /* 633 */ - void (GLAPIENTRYP SecondaryColor3fvEXT)(const GLfloat * v); /* 634 */ - void (GLAPIENTRYP SecondaryColor3iEXT)(GLint red, GLint green, GLint blue); /* 635 */ - void (GLAPIENTRYP SecondaryColor3ivEXT)(const GLint * v); /* 636 */ - void (GLAPIENTRYP SecondaryColor3sEXT)(GLshort red, GLshort green, GLshort blue); /* 637 */ - void (GLAPIENTRYP SecondaryColor3svEXT)(const GLshort * v); /* 638 */ - void (GLAPIENTRYP SecondaryColor3ubEXT)(GLubyte red, GLubyte green, GLubyte blue); /* 639 */ - void (GLAPIENTRYP SecondaryColor3ubvEXT)(const GLubyte * v); /* 640 */ - void (GLAPIENTRYP SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue); /* 641 */ - void (GLAPIENTRYP SecondaryColor3uivEXT)(const GLuint * v); /* 642 */ - void (GLAPIENTRYP SecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue); /* 643 */ - void (GLAPIENTRYP SecondaryColor3usvEXT)(const GLushort * v); /* 644 */ - void (GLAPIENTRYP SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 645 */ - void (GLAPIENTRYP MultiDrawArraysEXT)(GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount); /* 646 */ - void (GLAPIENTRYP MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount); /* 647 */ - void (GLAPIENTRYP FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid * pointer); /* 648 */ - void (GLAPIENTRYP FogCoorddEXT)(GLdouble coord); /* 649 */ - void (GLAPIENTRYP FogCoorddvEXT)(const GLdouble * coord); /* 650 */ - void (GLAPIENTRYP FogCoordfEXT)(GLfloat coord); /* 651 */ - void (GLAPIENTRYP FogCoordfvEXT)(const GLfloat * coord); /* 652 */ - void (GLAPIENTRYP PixelTexGenSGIX)(GLenum mode); /* 653 */ - void (GLAPIENTRYP BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); /* 654 */ - void (GLAPIENTRYP FlushVertexArrayRangeNV)(void); /* 655 */ - void (GLAPIENTRYP VertexArrayRangeNV)(GLsizei length, const GLvoid * pointer); /* 656 */ - void (GLAPIENTRYP CombinerInputNV)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 657 */ - void (GLAPIENTRYP CombinerOutputNV)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); /* 658 */ - void (GLAPIENTRYP CombinerParameterfNV)(GLenum pname, GLfloat param); /* 659 */ - void (GLAPIENTRYP CombinerParameterfvNV)(GLenum pname, const GLfloat * params); /* 660 */ - void (GLAPIENTRYP CombinerParameteriNV)(GLenum pname, GLint param); /* 661 */ - void (GLAPIENTRYP CombinerParameterivNV)(GLenum pname, const GLint * params); /* 662 */ - void (GLAPIENTRYP FinalCombinerInputNV)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 663 */ - void (GLAPIENTRYP GetCombinerInputParameterfvNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params); /* 664 */ - void (GLAPIENTRYP GetCombinerInputParameterivNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params); /* 665 */ - void (GLAPIENTRYP GetCombinerOutputParameterfvNV)(GLenum stage, GLenum portion, GLenum pname, GLfloat * params); /* 666 */ - void (GLAPIENTRYP GetCombinerOutputParameterivNV)(GLenum stage, GLenum portion, GLenum pname, GLint * params); /* 667 */ - void (GLAPIENTRYP GetFinalCombinerInputParameterfvNV)(GLenum variable, GLenum pname, GLfloat * params); /* 668 */ - void (GLAPIENTRYP GetFinalCombinerInputParameterivNV)(GLenum variable, GLenum pname, GLint * params); /* 669 */ - void (GLAPIENTRYP ResizeBuffersMESA)(void); /* 670 */ - void (GLAPIENTRYP WindowPos2dMESA)(GLdouble x, GLdouble y); /* 671 */ - void (GLAPIENTRYP WindowPos2dvMESA)(const GLdouble * v); /* 672 */ - void (GLAPIENTRYP WindowPos2fMESA)(GLfloat x, GLfloat y); /* 673 */ - void (GLAPIENTRYP WindowPos2fvMESA)(const GLfloat * v); /* 674 */ - void (GLAPIENTRYP WindowPos2iMESA)(GLint x, GLint y); /* 675 */ - void (GLAPIENTRYP WindowPos2ivMESA)(const GLint * v); /* 676 */ - void (GLAPIENTRYP WindowPos2sMESA)(GLshort x, GLshort y); /* 677 */ - void (GLAPIENTRYP WindowPos2svMESA)(const GLshort * v); /* 678 */ - void (GLAPIENTRYP WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z); /* 679 */ - void (GLAPIENTRYP WindowPos3dvMESA)(const GLdouble * v); /* 680 */ - void (GLAPIENTRYP WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z); /* 681 */ - void (GLAPIENTRYP WindowPos3fvMESA)(const GLfloat * v); /* 682 */ - void (GLAPIENTRYP WindowPos3iMESA)(GLint x, GLint y, GLint z); /* 683 */ - void (GLAPIENTRYP WindowPos3ivMESA)(const GLint * v); /* 684 */ - void (GLAPIENTRYP WindowPos3sMESA)(GLshort x, GLshort y, GLshort z); /* 685 */ - void (GLAPIENTRYP WindowPos3svMESA)(const GLshort * v); /* 686 */ - void (GLAPIENTRYP WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 687 */ - void (GLAPIENTRYP WindowPos4dvMESA)(const GLdouble * v); /* 688 */ - void (GLAPIENTRYP WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 689 */ - void (GLAPIENTRYP WindowPos4fvMESA)(const GLfloat * v); /* 690 */ - void (GLAPIENTRYP WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w); /* 691 */ - void (GLAPIENTRYP WindowPos4ivMESA)(const GLint * v); /* 692 */ - void (GLAPIENTRYP WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w); /* 693 */ - void (GLAPIENTRYP WindowPos4svMESA)(const GLshort * v); /* 694 */ - void (GLAPIENTRYP MultiModeDrawArraysIBM)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); /* 695 */ - void (GLAPIENTRYP MultiModeDrawElementsIBM)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); /* 696 */ - void (GLAPIENTRYP DeleteFencesNV)(GLsizei n, const GLuint * fences); /* 697 */ - void (GLAPIENTRYP FinishFenceNV)(GLuint fence); /* 698 */ - void (GLAPIENTRYP GenFencesNV)(GLsizei n, GLuint * fences); /* 699 */ - void (GLAPIENTRYP GetFenceivNV)(GLuint fence, GLenum pname, GLint * params); /* 700 */ - GLboolean (GLAPIENTRYP IsFenceNV)(GLuint fence); /* 701 */ - void (GLAPIENTRYP SetFenceNV)(GLuint fence, GLenum condition); /* 702 */ - GLboolean (GLAPIENTRYP TestFenceNV)(GLuint fence); /* 703 */ - GLboolean (GLAPIENTRYP AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences); /* 704 */ - void (GLAPIENTRYP BindProgramNV)(GLenum target, GLuint program); /* 705 */ - void (GLAPIENTRYP DeleteProgramsNV)(GLsizei n, const GLuint * programs); /* 706 */ - void (GLAPIENTRYP ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params); /* 707 */ - void (GLAPIENTRYP GenProgramsNV)(GLsizei n, GLuint * programs); /* 708 */ - void (GLAPIENTRYP GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params); /* 709 */ - void (GLAPIENTRYP GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params); /* 710 */ - void (GLAPIENTRYP GetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program); /* 711 */ - void (GLAPIENTRYP GetProgramivNV)(GLuint id, GLenum pname, GLint * params); /* 712 */ - void (GLAPIENTRYP GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params); /* 713 */ - void (GLAPIENTRYP GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid ** pointer); /* 714 */ - void (GLAPIENTRYP GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params); /* 715 */ - void (GLAPIENTRYP GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params); /* 716 */ - void (GLAPIENTRYP GetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params); /* 717 */ - GLboolean (GLAPIENTRYP IsProgramNV)(GLuint program); /* 718 */ - void (GLAPIENTRYP LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program); /* 719 */ - void (GLAPIENTRYP ProgramParameters4dvNV)(GLenum target, GLuint index, GLsizei num, const GLdouble * params); /* 720 */ - void (GLAPIENTRYP ProgramParameters4fvNV)(GLenum target, GLuint index, GLsizei num, const GLfloat * params); /* 721 */ - void (GLAPIENTRYP RequestResidentProgramsNV)(GLsizei n, const GLuint * ids); /* 722 */ - void (GLAPIENTRYP TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform); /* 723 */ - void (GLAPIENTRYP VertexAttrib1dNV)(GLuint index, GLdouble x); /* 724 */ - void (GLAPIENTRYP VertexAttrib1dvNV)(GLuint index, const GLdouble * v); /* 725 */ - void (GLAPIENTRYP VertexAttrib1fNV)(GLuint index, GLfloat x); /* 726 */ - void (GLAPIENTRYP VertexAttrib1fvNV)(GLuint index, const GLfloat * v); /* 727 */ - void (GLAPIENTRYP VertexAttrib1sNV)(GLuint index, GLshort x); /* 728 */ - void (GLAPIENTRYP VertexAttrib1svNV)(GLuint index, const GLshort * v); /* 729 */ - void (GLAPIENTRYP VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y); /* 730 */ - void (GLAPIENTRYP VertexAttrib2dvNV)(GLuint index, const GLdouble * v); /* 731 */ - void (GLAPIENTRYP VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y); /* 732 */ - void (GLAPIENTRYP VertexAttrib2fvNV)(GLuint index, const GLfloat * v); /* 733 */ - void (GLAPIENTRYP VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y); /* 734 */ - void (GLAPIENTRYP VertexAttrib2svNV)(GLuint index, const GLshort * v); /* 735 */ - void (GLAPIENTRYP VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 736 */ - void (GLAPIENTRYP VertexAttrib3dvNV)(GLuint index, const GLdouble * v); /* 737 */ - void (GLAPIENTRYP VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 738 */ - void (GLAPIENTRYP VertexAttrib3fvNV)(GLuint index, const GLfloat * v); /* 739 */ - void (GLAPIENTRYP VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z); /* 740 */ - void (GLAPIENTRYP VertexAttrib3svNV)(GLuint index, const GLshort * v); /* 741 */ - void (GLAPIENTRYP VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 742 */ - void (GLAPIENTRYP VertexAttrib4dvNV)(GLuint index, const GLdouble * v); /* 743 */ - void (GLAPIENTRYP VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 744 */ - void (GLAPIENTRYP VertexAttrib4fvNV)(GLuint index, const GLfloat * v); /* 745 */ - void (GLAPIENTRYP VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); /* 746 */ - void (GLAPIENTRYP VertexAttrib4svNV)(GLuint index, const GLshort * v); /* 747 */ - void (GLAPIENTRYP VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); /* 748 */ - void (GLAPIENTRYP VertexAttrib4ubvNV)(GLuint index, const GLubyte * v); /* 749 */ - void (GLAPIENTRYP VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 750 */ - void (GLAPIENTRYP VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 751 */ - void (GLAPIENTRYP VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 752 */ - void (GLAPIENTRYP VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort * v); /* 753 */ - void (GLAPIENTRYP VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 754 */ - void (GLAPIENTRYP VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 755 */ - void (GLAPIENTRYP VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort * v); /* 756 */ - void (GLAPIENTRYP VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 757 */ - void (GLAPIENTRYP VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 758 */ - void (GLAPIENTRYP VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort * v); /* 759 */ - void (GLAPIENTRYP VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 760 */ - void (GLAPIENTRYP VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 761 */ - void (GLAPIENTRYP VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v); /* 762 */ - void (GLAPIENTRYP VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v); /* 763 */ - void (GLAPIENTRYP GetTexBumpParameterfvATI)(GLenum pname, GLfloat * param); /* 764 */ - void (GLAPIENTRYP GetTexBumpParameterivATI)(GLenum pname, GLint * param); /* 765 */ - void (GLAPIENTRYP TexBumpParameterfvATI)(GLenum pname, const GLfloat * param); /* 766 */ - void (GLAPIENTRYP TexBumpParameterivATI)(GLenum pname, const GLint * param); /* 767 */ - void (GLAPIENTRYP AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 768 */ - void (GLAPIENTRYP AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 769 */ - void (GLAPIENTRYP AlphaFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); /* 770 */ - void (GLAPIENTRYP BeginFragmentShaderATI)(void); /* 771 */ - void (GLAPIENTRYP BindFragmentShaderATI)(GLuint id); /* 772 */ - void (GLAPIENTRYP ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 773 */ - void (GLAPIENTRYP ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 774 */ - void (GLAPIENTRYP ColorFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); /* 775 */ - void (GLAPIENTRYP DeleteFragmentShaderATI)(GLuint id); /* 776 */ - void (GLAPIENTRYP EndFragmentShaderATI)(void); /* 777 */ - GLuint (GLAPIENTRYP GenFragmentShadersATI)(GLuint range); /* 778 */ - void (GLAPIENTRYP PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle); /* 779 */ - void (GLAPIENTRYP SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle); /* 780 */ - void (GLAPIENTRYP SetFragmentShaderConstantATI)(GLuint dst, const GLfloat * value); /* 781 */ - void (GLAPIENTRYP PointParameteriNV)(GLenum pname, GLint param); /* 782 */ - void (GLAPIENTRYP PointParameterivNV)(GLenum pname, const GLint * params); /* 783 */ - void (GLAPIENTRYP ActiveStencilFaceEXT)(GLenum face); /* 784 */ - void (GLAPIENTRYP BindVertexArrayAPPLE)(GLuint array); /* 785 */ - void (GLAPIENTRYP DeleteVertexArraysAPPLE)(GLsizei n, const GLuint * arrays); /* 786 */ - void (GLAPIENTRYP GenVertexArraysAPPLE)(GLsizei n, GLuint * arrays); /* 787 */ - GLboolean (GLAPIENTRYP IsVertexArrayAPPLE)(GLuint array); /* 788 */ - void (GLAPIENTRYP GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params); /* 789 */ - void (GLAPIENTRYP GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params); /* 790 */ - void (GLAPIENTRYP ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 791 */ - void (GLAPIENTRYP ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v); /* 792 */ - void (GLAPIENTRYP ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 793 */ - void (GLAPIENTRYP ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v); /* 794 */ - void (GLAPIENTRYP PrimitiveRestartIndexNV)(GLuint index); /* 795 */ - void (GLAPIENTRYP PrimitiveRestartNV)(void); /* 796 */ - void (GLAPIENTRYP DepthBoundsEXT)(GLclampd zmin, GLclampd zmax); /* 797 */ - void (GLAPIENTRYP BlendEquationSeparateEXT)(GLenum modeRGB, GLenum modeA); /* 798 */ - void (GLAPIENTRYP BindFramebufferEXT)(GLenum target, GLuint framebuffer); /* 799 */ - void (GLAPIENTRYP BindRenderbufferEXT)(GLenum target, GLuint renderbuffer); /* 800 */ - GLenum (GLAPIENTRYP CheckFramebufferStatusEXT)(GLenum target); /* 801 */ - void (GLAPIENTRYP DeleteFramebuffersEXT)(GLsizei n, const GLuint * framebuffers); /* 802 */ - void (GLAPIENTRYP DeleteRenderbuffersEXT)(GLsizei n, const GLuint * renderbuffers); /* 803 */ - void (GLAPIENTRYP FramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); /* 804 */ - void (GLAPIENTRYP FramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 805 */ - void (GLAPIENTRYP FramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 806 */ - void (GLAPIENTRYP FramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); /* 807 */ - void (GLAPIENTRYP GenFramebuffersEXT)(GLsizei n, GLuint * framebuffers); /* 808 */ - void (GLAPIENTRYP GenRenderbuffersEXT)(GLsizei n, GLuint * renderbuffers); /* 809 */ - void (GLAPIENTRYP GenerateMipmapEXT)(GLenum target); /* 810 */ - void (GLAPIENTRYP GetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint * params); /* 811 */ - void (GLAPIENTRYP GetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint * params); /* 812 */ - GLboolean (GLAPIENTRYP IsFramebufferEXT)(GLuint framebuffer); /* 813 */ - GLboolean (GLAPIENTRYP IsRenderbufferEXT)(GLuint renderbuffer); /* 814 */ - void (GLAPIENTRYP RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); /* 815 */ - void (GLAPIENTRYP BlitFramebufferEXT)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); /* 816 */ - void (GLAPIENTRYP BufferParameteriAPPLE)(GLenum target, GLenum pname, GLint param); /* 817 */ - void (GLAPIENTRYP FlushMappedBufferRangeAPPLE)(GLenum target, GLintptr offset, GLsizeiptr size); /* 818 */ - void (GLAPIENTRYP BindFragDataLocationEXT)(GLuint program, GLuint colorNumber, const GLchar * name); /* 819 */ - GLint (GLAPIENTRYP GetFragDataLocationEXT)(GLuint program, const GLchar * name); /* 820 */ - void (GLAPIENTRYP GetUniformuivEXT)(GLuint program, GLint location, GLuint * params); /* 821 */ - void (GLAPIENTRYP GetVertexAttribIivEXT)(GLuint index, GLenum pname, GLint * params); /* 822 */ - void (GLAPIENTRYP GetVertexAttribIuivEXT)(GLuint index, GLenum pname, GLuint * params); /* 823 */ - void (GLAPIENTRYP Uniform1uiEXT)(GLint location, GLuint x); /* 824 */ - void (GLAPIENTRYP Uniform1uivEXT)(GLint location, GLsizei count, const GLuint * value); /* 825 */ - void (GLAPIENTRYP Uniform2uiEXT)(GLint location, GLuint x, GLuint y); /* 826 */ - void (GLAPIENTRYP Uniform2uivEXT)(GLint location, GLsizei count, const GLuint * value); /* 827 */ - void (GLAPIENTRYP Uniform3uiEXT)(GLint location, GLuint x, GLuint y, GLuint z); /* 828 */ - void (GLAPIENTRYP Uniform3uivEXT)(GLint location, GLsizei count, const GLuint * value); /* 829 */ - void (GLAPIENTRYP Uniform4uiEXT)(GLint location, GLuint x, GLuint y, GLuint z, GLuint w); /* 830 */ - void (GLAPIENTRYP Uniform4uivEXT)(GLint location, GLsizei count, const GLuint * value); /* 831 */ - void (GLAPIENTRYP VertexAttribI1iEXT)(GLuint index, GLint x); /* 832 */ - void (GLAPIENTRYP VertexAttribI1ivEXT)(GLuint index, const GLint * v); /* 833 */ - void (GLAPIENTRYP VertexAttribI1uiEXT)(GLuint index, GLuint x); /* 834 */ - void (GLAPIENTRYP VertexAttribI1uivEXT)(GLuint index, const GLuint * v); /* 835 */ - void (GLAPIENTRYP VertexAttribI2iEXT)(GLuint index, GLint x, GLint y); /* 836 */ - void (GLAPIENTRYP VertexAttribI2ivEXT)(GLuint index, const GLint * v); /* 837 */ - void (GLAPIENTRYP VertexAttribI2uiEXT)(GLuint index, GLuint x, GLuint y); /* 838 */ - void (GLAPIENTRYP VertexAttribI2uivEXT)(GLuint index, const GLuint * v); /* 839 */ - void (GLAPIENTRYP VertexAttribI3iEXT)(GLuint index, GLint x, GLint y, GLint z); /* 840 */ - void (GLAPIENTRYP VertexAttribI3ivEXT)(GLuint index, const GLint * v); /* 841 */ - void (GLAPIENTRYP VertexAttribI3uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z); /* 842 */ - void (GLAPIENTRYP VertexAttribI3uivEXT)(GLuint index, const GLuint * v); /* 843 */ - void (GLAPIENTRYP VertexAttribI4bvEXT)(GLuint index, const GLbyte * v); /* 844 */ - void (GLAPIENTRYP VertexAttribI4iEXT)(GLuint index, GLint x, GLint y, GLint z, GLint w); /* 845 */ - void (GLAPIENTRYP VertexAttribI4ivEXT)(GLuint index, const GLint * v); /* 846 */ - void (GLAPIENTRYP VertexAttribI4svEXT)(GLuint index, const GLshort * v); /* 847 */ - void (GLAPIENTRYP VertexAttribI4ubvEXT)(GLuint index, const GLubyte * v); /* 848 */ - void (GLAPIENTRYP VertexAttribI4uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); /* 849 */ - void (GLAPIENTRYP VertexAttribI4uivEXT)(GLuint index, const GLuint * v); /* 850 */ - void (GLAPIENTRYP VertexAttribI4usvEXT)(GLuint index, const GLushort * v); /* 851 */ - void (GLAPIENTRYP VertexAttribIPointerEXT)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 852 */ - void (GLAPIENTRYP FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); /* 853 */ - void (GLAPIENTRYP ColorMaskIndexedEXT)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a); /* 854 */ - void (GLAPIENTRYP DisableIndexedEXT)(GLenum target, GLuint index); /* 855 */ - void (GLAPIENTRYP EnableIndexedEXT)(GLenum target, GLuint index); /* 856 */ - void (GLAPIENTRYP GetBooleanIndexedvEXT)(GLenum value, GLuint index, GLboolean * data); /* 857 */ - void (GLAPIENTRYP GetIntegerIndexedvEXT)(GLenum value, GLuint index, GLint * data); /* 858 */ - GLboolean (GLAPIENTRYP IsEnabledIndexedEXT)(GLenum target, GLuint index); /* 859 */ - void (GLAPIENTRYP ClearColorIiEXT)(GLint r, GLint g, GLint b, GLint a); /* 860 */ - void (GLAPIENTRYP ClearColorIuiEXT)(GLuint r, GLuint g, GLuint b, GLuint a); /* 861 */ - void (GLAPIENTRYP GetTexParameterIivEXT)(GLenum target, GLenum pname, GLint * params); /* 862 */ - void (GLAPIENTRYP GetTexParameterIuivEXT)(GLenum target, GLenum pname, GLuint * params); /* 863 */ - void (GLAPIENTRYP TexParameterIivEXT)(GLenum target, GLenum pname, const GLint * params); /* 864 */ - void (GLAPIENTRYP TexParameterIuivEXT)(GLenum target, GLenum pname, const GLuint * params); /* 865 */ - void (GLAPIENTRYP BeginConditionalRenderNV)(GLuint query, GLenum mode); /* 866 */ - void (GLAPIENTRYP EndConditionalRenderNV)(void); /* 867 */ - void (GLAPIENTRYP BeginTransformFeedbackEXT)(GLenum mode); /* 868 */ - void (GLAPIENTRYP BindBufferBaseEXT)(GLenum target, GLuint index, GLuint buffer); /* 869 */ - void (GLAPIENTRYP BindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); /* 870 */ - void (GLAPIENTRYP BindBufferRangeEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 871 */ - void (GLAPIENTRYP EndTransformFeedbackEXT)(void); /* 872 */ - void (GLAPIENTRYP GetTransformFeedbackVaryingEXT)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name); /* 873 */ - void (GLAPIENTRYP TransformFeedbackVaryingsEXT)(GLuint program, GLsizei count, const char ** varyings, GLenum bufferMode); /* 874 */ - void (GLAPIENTRYP ProvokingVertexEXT)(GLenum mode); /* 875 */ - void (GLAPIENTRYP GetTexParameterPointervAPPLE)(GLenum target, GLenum pname, GLvoid ** params); /* 876 */ - void (GLAPIENTRYP TextureRangeAPPLE)(GLenum target, GLsizei length, GLvoid * pointer); /* 877 */ - void (GLAPIENTRYP GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint * value); /* 878 */ - GLenum (GLAPIENTRYP ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 879 */ - GLenum (GLAPIENTRYP ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 880 */ - void (GLAPIENTRYP ActiveProgramEXT)(GLuint program); /* 881 */ - GLuint (GLAPIENTRYP CreateShaderProgramEXT)(GLenum type, const GLchar * string); /* 882 */ - void (GLAPIENTRYP UseShaderProgramEXT)(GLenum type, GLuint program); /* 883 */ - void (GLAPIENTRYP TextureBarrierNV)(void); /* 884 */ - void (GLAPIENTRYP StencilFuncSeparateATI)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); /* 885 */ - void (GLAPIENTRYP ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 886 */ - void (GLAPIENTRYP ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 887 */ - void (GLAPIENTRYP GetQueryObjecti64vEXT)(GLuint id, GLenum pname, GLint64EXT * params); /* 888 */ - void (GLAPIENTRYP GetQueryObjectui64vEXT)(GLuint id, GLenum pname, GLuint64EXT * params); /* 889 */ - void (GLAPIENTRYP EGLImageTargetRenderbufferStorageOES)(GLenum target, GLvoid * writeOffset); /* 890 */ - void (GLAPIENTRYP EGLImageTargetTexture2DOES)(GLenum target, GLvoid * writeOffset); /* 891 */ + void (GLAPIENTRYP ClampColorARB)(GLenum target, GLenum clamp); /* 572 */ + void (GLAPIENTRYP DrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount); /* 573 */ + void (GLAPIENTRYP DrawElementsInstancedARB)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount); /* 574 */ + void (GLAPIENTRYP RenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); /* 575 */ + void (GLAPIENTRYP FramebufferTextureARB)(GLenum target, GLenum attachment, GLuint texture, GLint level); /* 576 */ + void (GLAPIENTRYP FramebufferTextureFaceARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face); /* 577 */ + void (GLAPIENTRYP ProgramParameteriARB)(GLuint program, GLenum pname, GLint value); /* 578 */ + void (GLAPIENTRYP VertexAttribDivisorARB)(GLuint index, GLuint divisor); /* 579 */ + void (GLAPIENTRYP FlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length); /* 580 */ + GLvoid * (GLAPIENTRYP MapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); /* 581 */ + void (GLAPIENTRYP TexBufferARB)(GLenum target, GLenum internalFormat, GLuint buffer); /* 582 */ + void (GLAPIENTRYP BindVertexArray)(GLuint array); /* 583 */ + void (GLAPIENTRYP GenVertexArrays)(GLsizei n, GLuint * arrays); /* 584 */ + void (GLAPIENTRYP CopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); /* 585 */ + GLenum (GLAPIENTRYP ClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); /* 586 */ + void (GLAPIENTRYP DeleteSync)(GLsync sync); /* 587 */ + GLsync (GLAPIENTRYP FenceSync)(GLenum condition, GLbitfield flags); /* 588 */ + void (GLAPIENTRYP GetInteger64v)(GLenum pname, GLint64 * params); /* 589 */ + void (GLAPIENTRYP GetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values); /* 590 */ + GLboolean (GLAPIENTRYP IsSync)(GLsync sync); /* 591 */ + void (GLAPIENTRYP WaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); /* 592 */ + void (GLAPIENTRYP DrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex); /* 593 */ + void (GLAPIENTRYP DrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex); /* 594 */ + void (GLAPIENTRYP MultiDrawElementsBaseVertex)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount, const GLint * basevertex); /* 595 */ + void (GLAPIENTRYP BlendEquationSeparateiARB)(GLuint buf, GLenum modeRGB, GLenum modeA); /* 596 */ + void (GLAPIENTRYP BlendEquationiARB)(GLuint buf, GLenum mode); /* 597 */ + void (GLAPIENTRYP BlendFuncSeparateiARB)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcA, GLenum dstA); /* 598 */ + void (GLAPIENTRYP BlendFunciARB)(GLuint buf, GLenum src, GLenum dst); /* 599 */ + void (GLAPIENTRYP BindSampler)(GLuint unit, GLuint sampler); /* 600 */ + void (GLAPIENTRYP DeleteSamplers)(GLsizei count, const GLuint * samplers); /* 601 */ + void (GLAPIENTRYP GenSamplers)(GLsizei count, GLuint * samplers); /* 602 */ + void (GLAPIENTRYP GetSamplerParameterIiv)(GLuint sampler, GLenum pname, GLint * params); /* 603 */ + void (GLAPIENTRYP GetSamplerParameterIuiv)(GLuint sampler, GLenum pname, GLuint * params); /* 604 */ + void (GLAPIENTRYP GetSamplerParameterfv)(GLuint sampler, GLenum pname, GLfloat * params); /* 605 */ + void (GLAPIENTRYP GetSamplerParameteriv)(GLuint sampler, GLenum pname, GLint * params); /* 606 */ + GLboolean (GLAPIENTRYP IsSampler)(GLuint sampler); /* 607 */ + void (GLAPIENTRYP SamplerParameterIiv)(GLuint sampler, GLenum pname, const GLint * params); /* 608 */ + void (GLAPIENTRYP SamplerParameterIuiv)(GLuint sampler, GLenum pname, const GLuint * params); /* 609 */ + void (GLAPIENTRYP SamplerParameterf)(GLuint sampler, GLenum pname, GLfloat param); /* 610 */ + void (GLAPIENTRYP SamplerParameterfv)(GLuint sampler, GLenum pname, const GLfloat * params); /* 611 */ + void (GLAPIENTRYP SamplerParameteri)(GLuint sampler, GLenum pname, GLint param); /* 612 */ + void (GLAPIENTRYP SamplerParameteriv)(GLuint sampler, GLenum pname, const GLint * params); /* 613 */ + void (GLAPIENTRYP BindTransformFeedback)(GLenum target, GLuint id); /* 614 */ + void (GLAPIENTRYP DeleteTransformFeedbacks)(GLsizei n, const GLuint * ids); /* 615 */ + void (GLAPIENTRYP DrawTransformFeedback)(GLenum mode, GLuint id); /* 616 */ + void (GLAPIENTRYP GenTransformFeedbacks)(GLsizei n, GLuint * ids); /* 617 */ + GLboolean (GLAPIENTRYP IsTransformFeedback)(GLuint id); /* 618 */ + void (GLAPIENTRYP PauseTransformFeedback)(void); /* 619 */ + void (GLAPIENTRYP ResumeTransformFeedback)(void); /* 620 */ + void (GLAPIENTRYP ClearDepthf)(GLclampf depth); /* 621 */ + void (GLAPIENTRYP DepthRangef)(GLclampf zNear, GLclampf zFar); /* 622 */ + void (GLAPIENTRYP GetShaderPrecisionFormat)(GLenum shadertype, GLenum precisiontype, GLint * range, GLint * precision); /* 623 */ + void (GLAPIENTRYP ReleaseShaderCompiler)(void); /* 624 */ + void (GLAPIENTRYP ShaderBinary)(GLsizei n, const GLuint * shaders, GLenum binaryformat, const GLvoid * binary, GLsizei length); /* 625 */ + void (GLAPIENTRYP PolygonOffsetEXT)(GLfloat factor, GLfloat bias); /* 626 */ + void (GLAPIENTRYP GetPixelTexGenParameterfvSGIS)(GLenum pname, GLfloat * params); /* 627 */ + void (GLAPIENTRYP GetPixelTexGenParameterivSGIS)(GLenum pname, GLint * params); /* 628 */ + void (GLAPIENTRYP PixelTexGenParameterfSGIS)(GLenum pname, GLfloat param); /* 629 */ + void (GLAPIENTRYP PixelTexGenParameterfvSGIS)(GLenum pname, const GLfloat * params); /* 630 */ + void (GLAPIENTRYP PixelTexGenParameteriSGIS)(GLenum pname, GLint param); /* 631 */ + void (GLAPIENTRYP PixelTexGenParameterivSGIS)(GLenum pname, const GLint * params); /* 632 */ + void (GLAPIENTRYP SampleMaskSGIS)(GLclampf value, GLboolean invert); /* 633 */ + void (GLAPIENTRYP SamplePatternSGIS)(GLenum pattern); /* 634 */ + void (GLAPIENTRYP ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 635 */ + void (GLAPIENTRYP EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean * pointer); /* 636 */ + void (GLAPIENTRYP IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 637 */ + void (GLAPIENTRYP NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 638 */ + void (GLAPIENTRYP TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 639 */ + void (GLAPIENTRYP VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 640 */ + void (GLAPIENTRYP PointParameterfEXT)(GLenum pname, GLfloat param); /* 641 */ + void (GLAPIENTRYP PointParameterfvEXT)(GLenum pname, const GLfloat * params); /* 642 */ + void (GLAPIENTRYP LockArraysEXT)(GLint first, GLsizei count); /* 643 */ + void (GLAPIENTRYP UnlockArraysEXT)(void); /* 644 */ + void (GLAPIENTRYP SecondaryColor3bEXT)(GLbyte red, GLbyte green, GLbyte blue); /* 645 */ + void (GLAPIENTRYP SecondaryColor3bvEXT)(const GLbyte * v); /* 646 */ + void (GLAPIENTRYP SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue); /* 647 */ + void (GLAPIENTRYP SecondaryColor3dvEXT)(const GLdouble * v); /* 648 */ + void (GLAPIENTRYP SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue); /* 649 */ + void (GLAPIENTRYP SecondaryColor3fvEXT)(const GLfloat * v); /* 650 */ + void (GLAPIENTRYP SecondaryColor3iEXT)(GLint red, GLint green, GLint blue); /* 651 */ + void (GLAPIENTRYP SecondaryColor3ivEXT)(const GLint * v); /* 652 */ + void (GLAPIENTRYP SecondaryColor3sEXT)(GLshort red, GLshort green, GLshort blue); /* 653 */ + void (GLAPIENTRYP SecondaryColor3svEXT)(const GLshort * v); /* 654 */ + void (GLAPIENTRYP SecondaryColor3ubEXT)(GLubyte red, GLubyte green, GLubyte blue); /* 655 */ + void (GLAPIENTRYP SecondaryColor3ubvEXT)(const GLubyte * v); /* 656 */ + void (GLAPIENTRYP SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue); /* 657 */ + void (GLAPIENTRYP SecondaryColor3uivEXT)(const GLuint * v); /* 658 */ + void (GLAPIENTRYP SecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue); /* 659 */ + void (GLAPIENTRYP SecondaryColor3usvEXT)(const GLushort * v); /* 660 */ + void (GLAPIENTRYP SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 661 */ + void (GLAPIENTRYP MultiDrawArraysEXT)(GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount); /* 662 */ + void (GLAPIENTRYP MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount); /* 663 */ + void (GLAPIENTRYP FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid * pointer); /* 664 */ + void (GLAPIENTRYP FogCoorddEXT)(GLdouble coord); /* 665 */ + void (GLAPIENTRYP FogCoorddvEXT)(const GLdouble * coord); /* 666 */ + void (GLAPIENTRYP FogCoordfEXT)(GLfloat coord); /* 667 */ + void (GLAPIENTRYP FogCoordfvEXT)(const GLfloat * coord); /* 668 */ + void (GLAPIENTRYP PixelTexGenSGIX)(GLenum mode); /* 669 */ + void (GLAPIENTRYP BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); /* 670 */ + void (GLAPIENTRYP FlushVertexArrayRangeNV)(void); /* 671 */ + void (GLAPIENTRYP VertexArrayRangeNV)(GLsizei length, const GLvoid * pointer); /* 672 */ + void (GLAPIENTRYP CombinerInputNV)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 673 */ + void (GLAPIENTRYP CombinerOutputNV)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); /* 674 */ + void (GLAPIENTRYP CombinerParameterfNV)(GLenum pname, GLfloat param); /* 675 */ + void (GLAPIENTRYP CombinerParameterfvNV)(GLenum pname, const GLfloat * params); /* 676 */ + void (GLAPIENTRYP CombinerParameteriNV)(GLenum pname, GLint param); /* 677 */ + void (GLAPIENTRYP CombinerParameterivNV)(GLenum pname, const GLint * params); /* 678 */ + void (GLAPIENTRYP FinalCombinerInputNV)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 679 */ + void (GLAPIENTRYP GetCombinerInputParameterfvNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params); /* 680 */ + void (GLAPIENTRYP GetCombinerInputParameterivNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params); /* 681 */ + void (GLAPIENTRYP GetCombinerOutputParameterfvNV)(GLenum stage, GLenum portion, GLenum pname, GLfloat * params); /* 682 */ + void (GLAPIENTRYP GetCombinerOutputParameterivNV)(GLenum stage, GLenum portion, GLenum pname, GLint * params); /* 683 */ + void (GLAPIENTRYP GetFinalCombinerInputParameterfvNV)(GLenum variable, GLenum pname, GLfloat * params); /* 684 */ + void (GLAPIENTRYP GetFinalCombinerInputParameterivNV)(GLenum variable, GLenum pname, GLint * params); /* 685 */ + void (GLAPIENTRYP ResizeBuffersMESA)(void); /* 686 */ + void (GLAPIENTRYP WindowPos2dMESA)(GLdouble x, GLdouble y); /* 687 */ + void (GLAPIENTRYP WindowPos2dvMESA)(const GLdouble * v); /* 688 */ + void (GLAPIENTRYP WindowPos2fMESA)(GLfloat x, GLfloat y); /* 689 */ + void (GLAPIENTRYP WindowPos2fvMESA)(const GLfloat * v); /* 690 */ + void (GLAPIENTRYP WindowPos2iMESA)(GLint x, GLint y); /* 691 */ + void (GLAPIENTRYP WindowPos2ivMESA)(const GLint * v); /* 692 */ + void (GLAPIENTRYP WindowPos2sMESA)(GLshort x, GLshort y); /* 693 */ + void (GLAPIENTRYP WindowPos2svMESA)(const GLshort * v); /* 694 */ + void (GLAPIENTRYP WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z); /* 695 */ + void (GLAPIENTRYP WindowPos3dvMESA)(const GLdouble * v); /* 696 */ + void (GLAPIENTRYP WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z); /* 697 */ + void (GLAPIENTRYP WindowPos3fvMESA)(const GLfloat * v); /* 698 */ + void (GLAPIENTRYP WindowPos3iMESA)(GLint x, GLint y, GLint z); /* 699 */ + void (GLAPIENTRYP WindowPos3ivMESA)(const GLint * v); /* 700 */ + void (GLAPIENTRYP WindowPos3sMESA)(GLshort x, GLshort y, GLshort z); /* 701 */ + void (GLAPIENTRYP WindowPos3svMESA)(const GLshort * v); /* 702 */ + void (GLAPIENTRYP WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 703 */ + void (GLAPIENTRYP WindowPos4dvMESA)(const GLdouble * v); /* 704 */ + void (GLAPIENTRYP WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 705 */ + void (GLAPIENTRYP WindowPos4fvMESA)(const GLfloat * v); /* 706 */ + void (GLAPIENTRYP WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w); /* 707 */ + void (GLAPIENTRYP WindowPos4ivMESA)(const GLint * v); /* 708 */ + void (GLAPIENTRYP WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w); /* 709 */ + void (GLAPIENTRYP WindowPos4svMESA)(const GLshort * v); /* 710 */ + void (GLAPIENTRYP MultiModeDrawArraysIBM)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); /* 711 */ + void (GLAPIENTRYP MultiModeDrawElementsIBM)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); /* 712 */ + void (GLAPIENTRYP DeleteFencesNV)(GLsizei n, const GLuint * fences); /* 713 */ + void (GLAPIENTRYP FinishFenceNV)(GLuint fence); /* 714 */ + void (GLAPIENTRYP GenFencesNV)(GLsizei n, GLuint * fences); /* 715 */ + void (GLAPIENTRYP GetFenceivNV)(GLuint fence, GLenum pname, GLint * params); /* 716 */ + GLboolean (GLAPIENTRYP IsFenceNV)(GLuint fence); /* 717 */ + void (GLAPIENTRYP SetFenceNV)(GLuint fence, GLenum condition); /* 718 */ + GLboolean (GLAPIENTRYP TestFenceNV)(GLuint fence); /* 719 */ + GLboolean (GLAPIENTRYP AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences); /* 720 */ + void (GLAPIENTRYP BindProgramNV)(GLenum target, GLuint program); /* 721 */ + void (GLAPIENTRYP DeleteProgramsNV)(GLsizei n, const GLuint * programs); /* 722 */ + void (GLAPIENTRYP ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params); /* 723 */ + void (GLAPIENTRYP GenProgramsNV)(GLsizei n, GLuint * programs); /* 724 */ + void (GLAPIENTRYP GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params); /* 725 */ + void (GLAPIENTRYP GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params); /* 726 */ + void (GLAPIENTRYP GetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program); /* 727 */ + void (GLAPIENTRYP GetProgramivNV)(GLuint id, GLenum pname, GLint * params); /* 728 */ + void (GLAPIENTRYP GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params); /* 729 */ + void (GLAPIENTRYP GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid ** pointer); /* 730 */ + void (GLAPIENTRYP GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params); /* 731 */ + void (GLAPIENTRYP GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params); /* 732 */ + void (GLAPIENTRYP GetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params); /* 733 */ + GLboolean (GLAPIENTRYP IsProgramNV)(GLuint program); /* 734 */ + void (GLAPIENTRYP LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program); /* 735 */ + void (GLAPIENTRYP ProgramParameters4dvNV)(GLenum target, GLuint index, GLsizei num, const GLdouble * params); /* 736 */ + void (GLAPIENTRYP ProgramParameters4fvNV)(GLenum target, GLuint index, GLsizei num, const GLfloat * params); /* 737 */ + void (GLAPIENTRYP RequestResidentProgramsNV)(GLsizei n, const GLuint * ids); /* 738 */ + void (GLAPIENTRYP TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform); /* 739 */ + void (GLAPIENTRYP VertexAttrib1dNV)(GLuint index, GLdouble x); /* 740 */ + void (GLAPIENTRYP VertexAttrib1dvNV)(GLuint index, const GLdouble * v); /* 741 */ + void (GLAPIENTRYP VertexAttrib1fNV)(GLuint index, GLfloat x); /* 742 */ + void (GLAPIENTRYP VertexAttrib1fvNV)(GLuint index, const GLfloat * v); /* 743 */ + void (GLAPIENTRYP VertexAttrib1sNV)(GLuint index, GLshort x); /* 744 */ + void (GLAPIENTRYP VertexAttrib1svNV)(GLuint index, const GLshort * v); /* 745 */ + void (GLAPIENTRYP VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y); /* 746 */ + void (GLAPIENTRYP VertexAttrib2dvNV)(GLuint index, const GLdouble * v); /* 747 */ + void (GLAPIENTRYP VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y); /* 748 */ + void (GLAPIENTRYP VertexAttrib2fvNV)(GLuint index, const GLfloat * v); /* 749 */ + void (GLAPIENTRYP VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y); /* 750 */ + void (GLAPIENTRYP VertexAttrib2svNV)(GLuint index, const GLshort * v); /* 751 */ + void (GLAPIENTRYP VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 752 */ + void (GLAPIENTRYP VertexAttrib3dvNV)(GLuint index, const GLdouble * v); /* 753 */ + void (GLAPIENTRYP VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 754 */ + void (GLAPIENTRYP VertexAttrib3fvNV)(GLuint index, const GLfloat * v); /* 755 */ + void (GLAPIENTRYP VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z); /* 756 */ + void (GLAPIENTRYP VertexAttrib3svNV)(GLuint index, const GLshort * v); /* 757 */ + void (GLAPIENTRYP VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 758 */ + void (GLAPIENTRYP VertexAttrib4dvNV)(GLuint index, const GLdouble * v); /* 759 */ + void (GLAPIENTRYP VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 760 */ + void (GLAPIENTRYP VertexAttrib4fvNV)(GLuint index, const GLfloat * v); /* 761 */ + void (GLAPIENTRYP VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); /* 762 */ + void (GLAPIENTRYP VertexAttrib4svNV)(GLuint index, const GLshort * v); /* 763 */ + void (GLAPIENTRYP VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); /* 764 */ + void (GLAPIENTRYP VertexAttrib4ubvNV)(GLuint index, const GLubyte * v); /* 765 */ + void (GLAPIENTRYP VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 766 */ + void (GLAPIENTRYP VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 767 */ + void (GLAPIENTRYP VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 768 */ + void (GLAPIENTRYP VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort * v); /* 769 */ + void (GLAPIENTRYP VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 770 */ + void (GLAPIENTRYP VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 771 */ + void (GLAPIENTRYP VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort * v); /* 772 */ + void (GLAPIENTRYP VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 773 */ + void (GLAPIENTRYP VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 774 */ + void (GLAPIENTRYP VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort * v); /* 775 */ + void (GLAPIENTRYP VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 776 */ + void (GLAPIENTRYP VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 777 */ + void (GLAPIENTRYP VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v); /* 778 */ + void (GLAPIENTRYP VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v); /* 779 */ + void (GLAPIENTRYP GetTexBumpParameterfvATI)(GLenum pname, GLfloat * param); /* 780 */ + void (GLAPIENTRYP GetTexBumpParameterivATI)(GLenum pname, GLint * param); /* 781 */ + void (GLAPIENTRYP TexBumpParameterfvATI)(GLenum pname, const GLfloat * param); /* 782 */ + void (GLAPIENTRYP TexBumpParameterivATI)(GLenum pname, const GLint * param); /* 783 */ + void (GLAPIENTRYP AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 784 */ + void (GLAPIENTRYP AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 785 */ + void (GLAPIENTRYP AlphaFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); /* 786 */ + void (GLAPIENTRYP BeginFragmentShaderATI)(void); /* 787 */ + void (GLAPIENTRYP BindFragmentShaderATI)(GLuint id); /* 788 */ + void (GLAPIENTRYP ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 789 */ + void (GLAPIENTRYP ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 790 */ + void (GLAPIENTRYP ColorFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); /* 791 */ + void (GLAPIENTRYP DeleteFragmentShaderATI)(GLuint id); /* 792 */ + void (GLAPIENTRYP EndFragmentShaderATI)(void); /* 793 */ + GLuint (GLAPIENTRYP GenFragmentShadersATI)(GLuint range); /* 794 */ + void (GLAPIENTRYP PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle); /* 795 */ + void (GLAPIENTRYP SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle); /* 796 */ + void (GLAPIENTRYP SetFragmentShaderConstantATI)(GLuint dst, const GLfloat * value); /* 797 */ + void (GLAPIENTRYP PointParameteriNV)(GLenum pname, GLint param); /* 798 */ + void (GLAPIENTRYP PointParameterivNV)(GLenum pname, const GLint * params); /* 799 */ + void (GLAPIENTRYP ActiveStencilFaceEXT)(GLenum face); /* 800 */ + void (GLAPIENTRYP BindVertexArrayAPPLE)(GLuint array); /* 801 */ + void (GLAPIENTRYP DeleteVertexArraysAPPLE)(GLsizei n, const GLuint * arrays); /* 802 */ + void (GLAPIENTRYP GenVertexArraysAPPLE)(GLsizei n, GLuint * arrays); /* 803 */ + GLboolean (GLAPIENTRYP IsVertexArrayAPPLE)(GLuint array); /* 804 */ + void (GLAPIENTRYP GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params); /* 805 */ + void (GLAPIENTRYP GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params); /* 806 */ + void (GLAPIENTRYP ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 807 */ + void (GLAPIENTRYP ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v); /* 808 */ + void (GLAPIENTRYP ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 809 */ + void (GLAPIENTRYP ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v); /* 810 */ + void (GLAPIENTRYP PrimitiveRestartIndexNV)(GLuint index); /* 811 */ + void (GLAPIENTRYP PrimitiveRestartNV)(void); /* 812 */ + void (GLAPIENTRYP DepthBoundsEXT)(GLclampd zmin, GLclampd zmax); /* 813 */ + void (GLAPIENTRYP BlendEquationSeparateEXT)(GLenum modeRGB, GLenum modeA); /* 814 */ + void (GLAPIENTRYP BindFramebufferEXT)(GLenum target, GLuint framebuffer); /* 815 */ + void (GLAPIENTRYP BindRenderbufferEXT)(GLenum target, GLuint renderbuffer); /* 816 */ + GLenum (GLAPIENTRYP CheckFramebufferStatusEXT)(GLenum target); /* 817 */ + void (GLAPIENTRYP DeleteFramebuffersEXT)(GLsizei n, const GLuint * framebuffers); /* 818 */ + void (GLAPIENTRYP DeleteRenderbuffersEXT)(GLsizei n, const GLuint * renderbuffers); /* 819 */ + void (GLAPIENTRYP FramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); /* 820 */ + void (GLAPIENTRYP FramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 821 */ + void (GLAPIENTRYP FramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 822 */ + void (GLAPIENTRYP FramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); /* 823 */ + void (GLAPIENTRYP GenFramebuffersEXT)(GLsizei n, GLuint * framebuffers); /* 824 */ + void (GLAPIENTRYP GenRenderbuffersEXT)(GLsizei n, GLuint * renderbuffers); /* 825 */ + void (GLAPIENTRYP GenerateMipmapEXT)(GLenum target); /* 826 */ + void (GLAPIENTRYP GetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint * params); /* 827 */ + void (GLAPIENTRYP GetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint * params); /* 828 */ + GLboolean (GLAPIENTRYP IsFramebufferEXT)(GLuint framebuffer); /* 829 */ + GLboolean (GLAPIENTRYP IsRenderbufferEXT)(GLuint renderbuffer); /* 830 */ + void (GLAPIENTRYP RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); /* 831 */ + void (GLAPIENTRYP BlitFramebufferEXT)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); /* 832 */ + void (GLAPIENTRYP BufferParameteriAPPLE)(GLenum target, GLenum pname, GLint param); /* 833 */ + void (GLAPIENTRYP FlushMappedBufferRangeAPPLE)(GLenum target, GLintptr offset, GLsizeiptr size); /* 834 */ + void (GLAPIENTRYP BindFragDataLocationEXT)(GLuint program, GLuint colorNumber, const GLchar * name); /* 835 */ + GLint (GLAPIENTRYP GetFragDataLocationEXT)(GLuint program, const GLchar * name); /* 836 */ + void (GLAPIENTRYP GetUniformuivEXT)(GLuint program, GLint location, GLuint * params); /* 837 */ + void (GLAPIENTRYP GetVertexAttribIivEXT)(GLuint index, GLenum pname, GLint * params); /* 838 */ + void (GLAPIENTRYP GetVertexAttribIuivEXT)(GLuint index, GLenum pname, GLuint * params); /* 839 */ + void (GLAPIENTRYP Uniform1uiEXT)(GLint location, GLuint x); /* 840 */ + void (GLAPIENTRYP Uniform1uivEXT)(GLint location, GLsizei count, const GLuint * value); /* 841 */ + void (GLAPIENTRYP Uniform2uiEXT)(GLint location, GLuint x, GLuint y); /* 842 */ + void (GLAPIENTRYP Uniform2uivEXT)(GLint location, GLsizei count, const GLuint * value); /* 843 */ + void (GLAPIENTRYP Uniform3uiEXT)(GLint location, GLuint x, GLuint y, GLuint z); /* 844 */ + void (GLAPIENTRYP Uniform3uivEXT)(GLint location, GLsizei count, const GLuint * value); /* 845 */ + void (GLAPIENTRYP Uniform4uiEXT)(GLint location, GLuint x, GLuint y, GLuint z, GLuint w); /* 846 */ + void (GLAPIENTRYP Uniform4uivEXT)(GLint location, GLsizei count, const GLuint * value); /* 847 */ + void (GLAPIENTRYP VertexAttribI1iEXT)(GLuint index, GLint x); /* 848 */ + void (GLAPIENTRYP VertexAttribI1ivEXT)(GLuint index, const GLint * v); /* 849 */ + void (GLAPIENTRYP VertexAttribI1uiEXT)(GLuint index, GLuint x); /* 850 */ + void (GLAPIENTRYP VertexAttribI1uivEXT)(GLuint index, const GLuint * v); /* 851 */ + void (GLAPIENTRYP VertexAttribI2iEXT)(GLuint index, GLint x, GLint y); /* 852 */ + void (GLAPIENTRYP VertexAttribI2ivEXT)(GLuint index, const GLint * v); /* 853 */ + void (GLAPIENTRYP VertexAttribI2uiEXT)(GLuint index, GLuint x, GLuint y); /* 854 */ + void (GLAPIENTRYP VertexAttribI2uivEXT)(GLuint index, const GLuint * v); /* 855 */ + void (GLAPIENTRYP VertexAttribI3iEXT)(GLuint index, GLint x, GLint y, GLint z); /* 856 */ + void (GLAPIENTRYP VertexAttribI3ivEXT)(GLuint index, const GLint * v); /* 857 */ + void (GLAPIENTRYP VertexAttribI3uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z); /* 858 */ + void (GLAPIENTRYP VertexAttribI3uivEXT)(GLuint index, const GLuint * v); /* 859 */ + void (GLAPIENTRYP VertexAttribI4bvEXT)(GLuint index, const GLbyte * v); /* 860 */ + void (GLAPIENTRYP VertexAttribI4iEXT)(GLuint index, GLint x, GLint y, GLint z, GLint w); /* 861 */ + void (GLAPIENTRYP VertexAttribI4ivEXT)(GLuint index, const GLint * v); /* 862 */ + void (GLAPIENTRYP VertexAttribI4svEXT)(GLuint index, const GLshort * v); /* 863 */ + void (GLAPIENTRYP VertexAttribI4ubvEXT)(GLuint index, const GLubyte * v); /* 864 */ + void (GLAPIENTRYP VertexAttribI4uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); /* 865 */ + void (GLAPIENTRYP VertexAttribI4uivEXT)(GLuint index, const GLuint * v); /* 866 */ + void (GLAPIENTRYP VertexAttribI4usvEXT)(GLuint index, const GLushort * v); /* 867 */ + void (GLAPIENTRYP VertexAttribIPointerEXT)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 868 */ + void (GLAPIENTRYP FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); /* 869 */ + void (GLAPIENTRYP ColorMaskIndexedEXT)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a); /* 870 */ + void (GLAPIENTRYP DisableIndexedEXT)(GLenum target, GLuint index); /* 871 */ + void (GLAPIENTRYP EnableIndexedEXT)(GLenum target, GLuint index); /* 872 */ + void (GLAPIENTRYP GetBooleanIndexedvEXT)(GLenum value, GLuint index, GLboolean * data); /* 873 */ + void (GLAPIENTRYP GetIntegerIndexedvEXT)(GLenum value, GLuint index, GLint * data); /* 874 */ + GLboolean (GLAPIENTRYP IsEnabledIndexedEXT)(GLenum target, GLuint index); /* 875 */ + void (GLAPIENTRYP ClearColorIiEXT)(GLint r, GLint g, GLint b, GLint a); /* 876 */ + void (GLAPIENTRYP ClearColorIuiEXT)(GLuint r, GLuint g, GLuint b, GLuint a); /* 877 */ + void (GLAPIENTRYP GetTexParameterIivEXT)(GLenum target, GLenum pname, GLint * params); /* 878 */ + void (GLAPIENTRYP GetTexParameterIuivEXT)(GLenum target, GLenum pname, GLuint * params); /* 879 */ + void (GLAPIENTRYP TexParameterIivEXT)(GLenum target, GLenum pname, const GLint * params); /* 880 */ + void (GLAPIENTRYP TexParameterIuivEXT)(GLenum target, GLenum pname, const GLuint * params); /* 881 */ + void (GLAPIENTRYP BeginConditionalRenderNV)(GLuint query, GLenum mode); /* 882 */ + void (GLAPIENTRYP EndConditionalRenderNV)(void); /* 883 */ + void (GLAPIENTRYP BeginTransformFeedbackEXT)(GLenum mode); /* 884 */ + void (GLAPIENTRYP BindBufferBaseEXT)(GLenum target, GLuint index, GLuint buffer); /* 885 */ + void (GLAPIENTRYP BindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); /* 886 */ + void (GLAPIENTRYP BindBufferRangeEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 887 */ + void (GLAPIENTRYP EndTransformFeedbackEXT)(void); /* 888 */ + void (GLAPIENTRYP GetTransformFeedbackVaryingEXT)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name); /* 889 */ + void (GLAPIENTRYP TransformFeedbackVaryingsEXT)(GLuint program, GLsizei count, const char ** varyings, GLenum bufferMode); /* 890 */ + void (GLAPIENTRYP ProvokingVertexEXT)(GLenum mode); /* 891 */ + void (GLAPIENTRYP GetTexParameterPointervAPPLE)(GLenum target, GLenum pname, GLvoid ** params); /* 892 */ + void (GLAPIENTRYP TextureRangeAPPLE)(GLenum target, GLsizei length, GLvoid * pointer); /* 893 */ + void (GLAPIENTRYP GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint * value); /* 894 */ + GLenum (GLAPIENTRYP ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 895 */ + GLenum (GLAPIENTRYP ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 896 */ + void (GLAPIENTRYP ActiveProgramEXT)(GLuint program); /* 897 */ + GLuint (GLAPIENTRYP CreateShaderProgramEXT)(GLenum type, const GLchar * string); /* 898 */ + void (GLAPIENTRYP UseShaderProgramEXT)(GLenum type, GLuint program); /* 899 */ + void (GLAPIENTRYP TextureBarrierNV)(void); /* 900 */ + void (GLAPIENTRYP StencilFuncSeparateATI)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); /* 901 */ + void (GLAPIENTRYP ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 902 */ + void (GLAPIENTRYP ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 903 */ + void (GLAPIENTRYP GetQueryObjecti64vEXT)(GLuint id, GLenum pname, GLint64EXT * params); /* 904 */ + void (GLAPIENTRYP GetQueryObjectui64vEXT)(GLuint id, GLenum pname, GLuint64EXT * params); /* 905 */ + void (GLAPIENTRYP EGLImageTargetRenderbufferStorageOES)(GLenum target, GLvoid * writeOffset); /* 906 */ + void (GLAPIENTRYP EGLImageTargetTexture2DOES)(GLenum target, GLvoid * writeOffset); /* 907 */ }; #endif /* !defined( _GLAPI_TABLE_H_ ) */ diff --git a/src/mapi/glapi/glapitemp.h b/src/mapi/glapi/glapitemp.h index 941532046e0..0f49b334aa8 100644 --- a/src/mapi/glapi/glapitemp.h +++ b/src/mapi/glapi/glapitemp.h @@ -27,7 +27,7 @@ */ -# if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) && defined(__ELF__) +# if (defined(__GNUC__) && !defined(__CYGWIN__) && !defined(__MINGW32__)) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) && defined(__ELF__)) # define HIDDEN __attribute__((visibility("hidden"))) # else # define HIDDEN @@ -2637,7 +2637,7 @@ KEYWORD1 void KEYWORD2 NAME(ClampColor)(GLenum target, GLenum clamp) DISPATCH(ClampColor, (target, clamp), (F, "glClampColor(0x%x, 0x%x);\n", target, clamp)); } -KEYWORD1 void KEYWORD2 NAME(ClearBufferfi)(GLenum buffer, GLint drawbuffer, const GLfloat depth, const GLint stencil) +KEYWORD1 void KEYWORD2 NAME(ClearBufferfi)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil) { DISPATCH(ClearBufferfi, (buffer, drawbuffer, depth, stencil), (F, "glClearBufferfi(0x%x, %d, %f, %d);\n", buffer, drawbuffer, depth, stencil)); } @@ -3897,6 +3897,11 @@ KEYWORD1 void KEYWORD2 NAME(DrawBuffersATI)(GLsizei n, const GLenum * bufs) DISPATCH(DrawBuffersARB, (n, bufs), (F, "glDrawBuffersATI(%d, %p);\n", n, (const void *) bufs)); } +KEYWORD1 void KEYWORD2 NAME(ClampColorARB)(GLenum target, GLenum clamp) +{ + DISPATCH(ClampColorARB, (target, clamp), (F, "glClampColorARB(0x%x, 0x%x);\n", target, clamp)); +} + KEYWORD1 void KEYWORD2 NAME(DrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount) { DISPATCH(DrawArraysInstancedARB, (mode, first, count, primcount), (F, "glDrawArraysInstancedARB(0x%x, %d, %d, %d);\n", mode, first, count, primcount)); @@ -3967,6 +3972,11 @@ KEYWORD1 GLvoid * KEYWORD2 NAME(MapBufferRange)(GLenum target, GLintptr offset, RETURN_DISPATCH(MapBufferRange, (target, offset, length, access), (F, "glMapBufferRange(0x%x, %d, %d, %d);\n", target, offset, length, access)); } +KEYWORD1 void KEYWORD2 NAME(TexBufferARB)(GLenum target, GLenum internalFormat, GLuint buffer) +{ + DISPATCH(TexBufferARB, (target, internalFormat, buffer), (F, "glTexBufferARB(0x%x, 0x%x, %d);\n", target, internalFormat, buffer)); +} + KEYWORD1 void KEYWORD2 NAME(BindVertexArray)(GLuint array) { DISPATCH(BindVertexArray, (array), (F, "glBindVertexArray(%d);\n", array)); @@ -4052,6 +4062,76 @@ KEYWORD1 void KEYWORD2 NAME(BlendFunciARB)(GLuint buf, GLenum src, GLenum dst) DISPATCH(BlendFunciARB, (buf, src, dst), (F, "glBlendFunciARB(%d, 0x%x, 0x%x);\n", buf, src, dst)); } +KEYWORD1 void KEYWORD2 NAME(BindSampler)(GLuint unit, GLuint sampler) +{ + DISPATCH(BindSampler, (unit, sampler), (F, "glBindSampler(%d, %d);\n", unit, sampler)); +} + +KEYWORD1 void KEYWORD2 NAME(DeleteSamplers)(GLsizei count, const GLuint * samplers) +{ + DISPATCH(DeleteSamplers, (count, samplers), (F, "glDeleteSamplers(%d, %p);\n", count, (const void *) samplers)); +} + +KEYWORD1 void KEYWORD2 NAME(GenSamplers)(GLsizei count, GLuint * samplers) +{ + DISPATCH(GenSamplers, (count, samplers), (F, "glGenSamplers(%d, %p);\n", count, (const void *) samplers)); +} + +KEYWORD1 void KEYWORD2 NAME(GetSamplerParameterIiv)(GLuint sampler, GLenum pname, GLint * params) +{ + DISPATCH(GetSamplerParameterIiv, (sampler, pname, params), (F, "glGetSamplerParameterIiv(%d, 0x%x, %p);\n", sampler, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(GetSamplerParameterIuiv)(GLuint sampler, GLenum pname, GLuint * params) +{ + DISPATCH(GetSamplerParameterIuiv, (sampler, pname, params), (F, "glGetSamplerParameterIuiv(%d, 0x%x, %p);\n", sampler, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(GetSamplerParameterfv)(GLuint sampler, GLenum pname, GLfloat * params) +{ + DISPATCH(GetSamplerParameterfv, (sampler, pname, params), (F, "glGetSamplerParameterfv(%d, 0x%x, %p);\n", sampler, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(GetSamplerParameteriv)(GLuint sampler, GLenum pname, GLint * params) +{ + DISPATCH(GetSamplerParameteriv, (sampler, pname, params), (F, "glGetSamplerParameteriv(%d, 0x%x, %p);\n", sampler, pname, (const void *) params)); +} + +KEYWORD1 GLboolean KEYWORD2 NAME(IsSampler)(GLuint sampler) +{ + RETURN_DISPATCH(IsSampler, (sampler), (F, "glIsSampler(%d);\n", sampler)); +} + +KEYWORD1 void KEYWORD2 NAME(SamplerParameterIiv)(GLuint sampler, GLenum pname, const GLint * params) +{ + DISPATCH(SamplerParameterIiv, (sampler, pname, params), (F, "glSamplerParameterIiv(%d, 0x%x, %p);\n", sampler, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(SamplerParameterIuiv)(GLuint sampler, GLenum pname, const GLuint * params) +{ + DISPATCH(SamplerParameterIuiv, (sampler, pname, params), (F, "glSamplerParameterIuiv(%d, 0x%x, %p);\n", sampler, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(SamplerParameterf)(GLuint sampler, GLenum pname, GLfloat param) +{ + DISPATCH(SamplerParameterf, (sampler, pname, param), (F, "glSamplerParameterf(%d, 0x%x, %f);\n", sampler, pname, param)); +} + +KEYWORD1 void KEYWORD2 NAME(SamplerParameterfv)(GLuint sampler, GLenum pname, const GLfloat * params) +{ + DISPATCH(SamplerParameterfv, (sampler, pname, params), (F, "glSamplerParameterfv(%d, 0x%x, %p);\n", sampler, pname, (const void *) params)); +} + +KEYWORD1 void KEYWORD2 NAME(SamplerParameteri)(GLuint sampler, GLenum pname, GLint param) +{ + DISPATCH(SamplerParameteri, (sampler, pname, param), (F, "glSamplerParameteri(%d, 0x%x, %d);\n", sampler, pname, param)); +} + +KEYWORD1 void KEYWORD2 NAME(SamplerParameteriv)(GLuint sampler, GLenum pname, const GLint * params) +{ + DISPATCH(SamplerParameteriv, (sampler, pname, params), (F, "glSamplerParameteriv(%d, 0x%x, %p);\n", sampler, pname, (const void *) params)); +} + KEYWORD1 void KEYWORD2 NAME(BindTransformFeedback)(GLenum target, GLuint id) { DISPATCH(BindTransformFeedback, (target, id), (F, "glBindTransformFeedback(0x%x, %d);\n", target, id)); @@ -4117,58 +4197,58 @@ KEYWORD1 void KEYWORD2 NAME(PolygonOffsetEXT)(GLfloat factor, GLfloat bias) DISPATCH(PolygonOffsetEXT, (factor, bias), (F, "glPolygonOffsetEXT(%f, %f);\n", factor, bias)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_611)(GLenum pname, GLfloat * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_627)(GLenum pname, GLfloat * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_611)(GLenum pname, GLfloat * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_627)(GLenum pname, GLfloat * params) { DISPATCH(GetPixelTexGenParameterfvSGIS, (pname, params), (F, "glGetPixelTexGenParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_612)(GLenum pname, GLint * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_628)(GLenum pname, GLint * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_612)(GLenum pname, GLint * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_628)(GLenum pname, GLint * params) { DISPATCH(GetPixelTexGenParameterivSGIS, (pname, params), (F, "glGetPixelTexGenParameterivSGIS(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_613)(GLenum pname, GLfloat param); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_629)(GLenum pname, GLfloat param); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_613)(GLenum pname, GLfloat param) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_629)(GLenum pname, GLfloat param) { DISPATCH(PixelTexGenParameterfSGIS, (pname, param), (F, "glPixelTexGenParameterfSGIS(0x%x, %f);\n", pname, param)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_614)(GLenum pname, const GLfloat * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_630)(GLenum pname, const GLfloat * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_614)(GLenum pname, const GLfloat * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_630)(GLenum pname, const GLfloat * params) { DISPATCH(PixelTexGenParameterfvSGIS, (pname, params), (F, "glPixelTexGenParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_615)(GLenum pname, GLint param); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_631)(GLenum pname, GLint param); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_615)(GLenum pname, GLint param) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_631)(GLenum pname, GLint param) { DISPATCH(PixelTexGenParameteriSGIS, (pname, param), (F, "glPixelTexGenParameteriSGIS(0x%x, %d);\n", pname, param)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_616)(GLenum pname, const GLint * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_632)(GLenum pname, const GLint * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_616)(GLenum pname, const GLint * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_632)(GLenum pname, const GLint * params) { DISPATCH(PixelTexGenParameterivSGIS, (pname, params), (F, "glPixelTexGenParameterivSGIS(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_617)(GLclampf value, GLboolean invert); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_633)(GLclampf value, GLboolean invert); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_617)(GLclampf value, GLboolean invert) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_633)(GLclampf value, GLboolean invert) { DISPATCH(SampleMaskSGIS, (value, invert), (F, "glSampleMaskSGIS(%f, %d);\n", value, invert)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_618)(GLenum pattern); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_634)(GLenum pattern); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_618)(GLenum pattern) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_634)(GLenum pattern) { DISPATCH(SamplePatternSGIS, (pattern), (F, "glSamplePatternSGIS(0x%x);\n", pattern)); } @@ -4218,9 +4298,9 @@ KEYWORD1 void KEYWORD2 NAME(PointParameterfEXT)(GLenum pname, GLfloat param) DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfEXT(0x%x, %f);\n", pname, param)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_625)(GLenum pname, GLfloat param); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_641)(GLenum pname, GLfloat param); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_625)(GLenum pname, GLfloat param) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_641)(GLenum pname, GLfloat param) { DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfSGIS(0x%x, %f);\n", pname, param)); } @@ -4240,9 +4320,9 @@ KEYWORD1 void KEYWORD2 NAME(PointParameterfvEXT)(GLenum pname, const GLfloat * p DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvEXT(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_626)(GLenum pname, const GLfloat * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_642)(GLenum pname, const GLfloat * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_626)(GLenum pname, const GLfloat * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_642)(GLenum pname, const GLfloat * params) { DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params)); } @@ -4497,9 +4577,9 @@ KEYWORD1 void KEYWORD2 NAME(FogCoordfvEXT)(const GLfloat * coord) DISPATCH(FogCoordfvEXT, (coord), (F, "glFogCoordfvEXT(%p);\n", (const void *) coord)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_653)(GLenum mode); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_669)(GLenum mode); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_653)(GLenum mode) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_669)(GLenum mode) { DISPATCH(PixelTexGenSGIX, (mode), (F, "glPixelTexGenSGIX(0x%x);\n", mode)); } @@ -4514,9 +4594,9 @@ KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfac DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateEXT(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_654)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_670)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_654)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_670)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha) { DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateINGR(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)); } @@ -4881,65 +4961,65 @@ KEYWORD1 void KEYWORD2 NAME(WindowPos4svMESA)(const GLshort * v) DISPATCH(WindowPos4svMESA, (v), (F, "glWindowPos4svMESA(%p);\n", (const void *) v)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_695)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_711)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_695)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_711)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride) { DISPATCH(MultiModeDrawArraysIBM, (mode, first, count, primcount, modestride), (F, "glMultiModeDrawArraysIBM(%p, %p, %p, %d, %d);\n", (const void *) mode, (const void *) first, (const void *) count, primcount, modestride)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_696)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_712)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_696)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_712)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride) { DISPATCH(MultiModeDrawElementsIBM, (mode, count, type, indices, primcount, modestride), (F, "glMultiModeDrawElementsIBM(%p, %p, 0x%x, %p, %d, %d);\n", (const void *) mode, (const void *) count, type, (const void *) indices, primcount, modestride)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_697)(GLsizei n, const GLuint * fences); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_713)(GLsizei n, const GLuint * fences); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_697)(GLsizei n, const GLuint * fences) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_713)(GLsizei n, const GLuint * fences) { DISPATCH(DeleteFencesNV, (n, fences), (F, "glDeleteFencesNV(%d, %p);\n", n, (const void *) fences)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_698)(GLuint fence); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_714)(GLuint fence); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_698)(GLuint fence) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_714)(GLuint fence) { DISPATCH(FinishFenceNV, (fence), (F, "glFinishFenceNV(%d);\n", fence)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_699)(GLsizei n, GLuint * fences); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_715)(GLsizei n, GLuint * fences); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_699)(GLsizei n, GLuint * fences) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_715)(GLsizei n, GLuint * fences) { DISPATCH(GenFencesNV, (n, fences), (F, "glGenFencesNV(%d, %p);\n", n, (const void *) fences)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_700)(GLuint fence, GLenum pname, GLint * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_716)(GLuint fence, GLenum pname, GLint * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_700)(GLuint fence, GLenum pname, GLint * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_716)(GLuint fence, GLenum pname, GLint * params) { DISPATCH(GetFenceivNV, (fence, pname, params), (F, "glGetFenceivNV(%d, 0x%x, %p);\n", fence, pname, (const void *) params)); } -KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_701)(GLuint fence); +KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_717)(GLuint fence); -KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_701)(GLuint fence) +KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_717)(GLuint fence) { RETURN_DISPATCH(IsFenceNV, (fence), (F, "glIsFenceNV(%d);\n", fence)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_702)(GLuint fence, GLenum condition); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_718)(GLuint fence, GLenum condition); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_702)(GLuint fence, GLenum condition) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_718)(GLuint fence, GLenum condition) { DISPATCH(SetFenceNV, (fence, condition), (F, "glSetFenceNV(%d, 0x%x);\n", fence, condition)); } -KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_703)(GLuint fence); +KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_719)(GLuint fence); -KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_703)(GLuint fence) +KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_719)(GLuint fence) { RETURN_DISPATCH(TestFenceNV, (fence), (F, "glTestFenceNV(%d);\n", fence)); } @@ -5384,16 +5464,16 @@ KEYWORD1 void KEYWORD2 NAME(PointParameterivNV)(GLenum pname, const GLint * para DISPATCH(PointParameterivNV, (pname, params), (F, "glPointParameterivNV(0x%x, %p);\n", pname, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_784)(GLenum face); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_800)(GLenum face); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_784)(GLenum face) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_800)(GLenum face) { DISPATCH(ActiveStencilFaceEXT, (face), (F, "glActiveStencilFaceEXT(0x%x);\n", face)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_785)(GLuint array); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_801)(GLuint array); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_785)(GLuint array) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_801)(GLuint array) { DISPATCH(BindVertexArrayAPPLE, (array), (F, "glBindVertexArrayAPPLE(%d);\n", array)); } @@ -5403,16 +5483,16 @@ KEYWORD1 void KEYWORD2 NAME(DeleteVertexArrays)(GLsizei n, const GLuint * arrays DISPATCH(DeleteVertexArraysAPPLE, (n, arrays), (F, "glDeleteVertexArrays(%d, %p);\n", n, (const void *) arrays)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_786)(GLsizei n, const GLuint * arrays); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_802)(GLsizei n, const GLuint * arrays); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_786)(GLsizei n, const GLuint * arrays) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_802)(GLsizei n, const GLuint * arrays) { DISPATCH(DeleteVertexArraysAPPLE, (n, arrays), (F, "glDeleteVertexArraysAPPLE(%d, %p);\n", n, (const void *) arrays)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_787)(GLsizei n, GLuint * arrays); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_803)(GLsizei n, GLuint * arrays); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_787)(GLsizei n, GLuint * arrays) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_803)(GLsizei n, GLuint * arrays) { DISPATCH(GenVertexArraysAPPLE, (n, arrays), (F, "glGenVertexArraysAPPLE(%d, %p);\n", n, (const void *) arrays)); } @@ -5422,9 +5502,9 @@ KEYWORD1 GLboolean KEYWORD2 NAME(IsVertexArray)(GLuint array) RETURN_DISPATCH(IsVertexArrayAPPLE, (array), (F, "glIsVertexArray(%d);\n", array)); } -KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_788)(GLuint array); +KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_804)(GLuint array); -KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_788)(GLuint array) +KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_804)(GLuint array) { RETURN_DISPATCH(IsVertexArrayAPPLE, (array), (F, "glIsVertexArrayAPPLE(%d);\n", array)); } @@ -5474,9 +5554,9 @@ KEYWORD1 void KEYWORD2 NAME(PrimitiveRestartNV)(void) DISPATCH(PrimitiveRestartNV, (), (F, "glPrimitiveRestartNV();\n")); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_797)(GLclampd zmin, GLclampd zmax); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_813)(GLclampd zmin, GLclampd zmax); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_797)(GLclampd zmin, GLclampd zmax) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_813)(GLclampd zmin, GLclampd zmax) { DISPATCH(DepthBoundsEXT, (zmin, zmax), (F, "glDepthBoundsEXT(%f, %f);\n", zmin, zmax)); } @@ -5486,9 +5566,9 @@ KEYWORD1 void KEYWORD2 NAME(BlendEquationSeparate)(GLenum modeRGB, GLenum modeA) DISPATCH(BlendEquationSeparateEXT, (modeRGB, modeA), (F, "glBlendEquationSeparate(0x%x, 0x%x);\n", modeRGB, modeA)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_798)(GLenum modeRGB, GLenum modeA); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_814)(GLenum modeRGB, GLenum modeA); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_798)(GLenum modeRGB, GLenum modeA) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_814)(GLenum modeRGB, GLenum modeA) { DISPATCH(BlendEquationSeparateEXT, (modeRGB, modeA), (F, "glBlendEquationSeparateEXT(0x%x, 0x%x);\n", modeRGB, modeA)); } @@ -5668,23 +5748,23 @@ KEYWORD1 void KEYWORD2 NAME(BlitFramebuffer)(GLint srcX0, GLint srcY0, GLint src DISPATCH(BlitFramebufferEXT, (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), (F, "glBlitFramebuffer(%d, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x);\n", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_816)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_832)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_816)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_832)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) { DISPATCH(BlitFramebufferEXT, (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), (F, "glBlitFramebufferEXT(%d, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x);\n", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_817)(GLenum target, GLenum pname, GLint param); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_833)(GLenum target, GLenum pname, GLint param); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_817)(GLenum target, GLenum pname, GLint param) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_833)(GLenum target, GLenum pname, GLint param) { DISPATCH(BufferParameteriAPPLE, (target, pname, param), (F, "glBufferParameteriAPPLE(0x%x, 0x%x, %d);\n", target, pname, param)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_818)(GLenum target, GLintptr offset, GLsizeiptr size); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_834)(GLenum target, GLintptr offset, GLsizeiptr size); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_818)(GLenum target, GLintptr offset, GLsizeiptr size) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_834)(GLenum target, GLintptr offset, GLsizeiptr size) { DISPATCH(FlushMappedBufferRangeAPPLE, (target, offset, size), (F, "glFlushMappedBufferRangeAPPLE(0x%x, %d, %d);\n", target, offset, size)); } @@ -6244,16 +6324,16 @@ KEYWORD1 void KEYWORD2 NAME(ProvokingVertex)(GLenum mode) DISPATCH(ProvokingVertexEXT, (mode), (F, "glProvokingVertex(0x%x);\n", mode)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_876)(GLenum target, GLenum pname, GLvoid ** params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_892)(GLenum target, GLenum pname, GLvoid ** params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_876)(GLenum target, GLenum pname, GLvoid ** params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_892)(GLenum target, GLenum pname, GLvoid ** params) { DISPATCH(GetTexParameterPointervAPPLE, (target, pname, params), (F, "glGetTexParameterPointervAPPLE(0x%x, 0x%x, %p);\n", target, pname, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_877)(GLenum target, GLsizei length, GLvoid * pointer); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_893)(GLenum target, GLsizei length, GLvoid * pointer); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_877)(GLenum target, GLsizei length, GLvoid * pointer) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_893)(GLenum target, GLsizei length, GLvoid * pointer) { DISPATCH(TextureRangeAPPLE, (target, length, pointer), (F, "glTextureRangeAPPLE(0x%x, %d, %p);\n", target, length, (const void *) pointer)); } @@ -6293,37 +6373,37 @@ KEYWORD1 void KEYWORD2 NAME(TextureBarrierNV)(void) DISPATCH(TextureBarrierNV, (), (F, "glTextureBarrierNV();\n")); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_885)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_901)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_885)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_901)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask) { DISPATCH(StencilFuncSeparateATI, (frontfunc, backfunc, ref, mask), (F, "glStencilFuncSeparateATI(0x%x, 0x%x, %d, %d);\n", frontfunc, backfunc, ref, mask)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_886)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_902)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_886)(GLenum target, GLuint index, GLsizei count, const GLfloat * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_902)(GLenum target, GLuint index, GLsizei count, const GLfloat * params) { DISPATCH(ProgramEnvParameters4fvEXT, (target, index, count, params), (F, "glProgramEnvParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_887)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_903)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_887)(GLenum target, GLuint index, GLsizei count, const GLfloat * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_903)(GLenum target, GLuint index, GLsizei count, const GLfloat * params) { DISPATCH(ProgramLocalParameters4fvEXT, (target, index, count, params), (F, "glProgramLocalParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_888)(GLuint id, GLenum pname, GLint64EXT * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_904)(GLuint id, GLenum pname, GLint64EXT * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_888)(GLuint id, GLenum pname, GLint64EXT * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_904)(GLuint id, GLenum pname, GLint64EXT * params) { DISPATCH(GetQueryObjecti64vEXT, (id, pname, params), (F, "glGetQueryObjecti64vEXT(%d, 0x%x, %p);\n", id, pname, (const void *) params)); } -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_889)(GLuint id, GLenum pname, GLuint64EXT * params); +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_905)(GLuint id, GLenum pname, GLuint64EXT * params); -KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_889)(GLuint id, GLenum pname, GLuint64EXT * params) +KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_905)(GLuint id, GLenum pname, GLuint64EXT * params) { DISPATCH(GetQueryObjectui64vEXT, (id, pname, params), (F, "glGetQueryObjectui64vEXT(%d, 0x%x, %p);\n", id, pname, (const void *) params)); } @@ -7063,6 +7143,7 @@ _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(GetActiveAttribARB), TABLE_ENTRY(GetAttribLocationARB), TABLE_ENTRY(DrawBuffersARB), + TABLE_ENTRY(ClampColorARB), TABLE_ENTRY(DrawArraysInstancedARB), TABLE_ENTRY(DrawElementsInstancedARB), TABLE_ENTRY(RenderbufferStorageMultisample), @@ -7072,6 +7153,7 @@ _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(VertexAttribDivisorARB), TABLE_ENTRY(FlushMappedBufferRange), TABLE_ENTRY(MapBufferRange), + TABLE_ENTRY(TexBufferARB), TABLE_ENTRY(BindVertexArray), TABLE_ENTRY(GenVertexArrays), TABLE_ENTRY(CopyBufferSubData), @@ -7089,6 +7171,20 @@ _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(BlendEquationiARB), TABLE_ENTRY(BlendFuncSeparateiARB), TABLE_ENTRY(BlendFunciARB), + TABLE_ENTRY(BindSampler), + TABLE_ENTRY(DeleteSamplers), + TABLE_ENTRY(GenSamplers), + TABLE_ENTRY(GetSamplerParameterIiv), + TABLE_ENTRY(GetSamplerParameterIuiv), + TABLE_ENTRY(GetSamplerParameterfv), + TABLE_ENTRY(GetSamplerParameteriv), + TABLE_ENTRY(IsSampler), + TABLE_ENTRY(SamplerParameterIiv), + TABLE_ENTRY(SamplerParameterIuiv), + TABLE_ENTRY(SamplerParameterf), + TABLE_ENTRY(SamplerParameterfv), + TABLE_ENTRY(SamplerParameteri), + TABLE_ENTRY(SamplerParameteriv), TABLE_ENTRY(BindTransformFeedback), TABLE_ENTRY(DeleteTransformFeedbacks), TABLE_ENTRY(DrawTransformFeedback), @@ -7102,14 +7198,14 @@ _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(ReleaseShaderCompiler), TABLE_ENTRY(ShaderBinary), TABLE_ENTRY(PolygonOffsetEXT), - TABLE_ENTRY(_dispatch_stub_611), - TABLE_ENTRY(_dispatch_stub_612), - TABLE_ENTRY(_dispatch_stub_613), - TABLE_ENTRY(_dispatch_stub_614), - TABLE_ENTRY(_dispatch_stub_615), - TABLE_ENTRY(_dispatch_stub_616), - TABLE_ENTRY(_dispatch_stub_617), - TABLE_ENTRY(_dispatch_stub_618), + TABLE_ENTRY(_dispatch_stub_627), + TABLE_ENTRY(_dispatch_stub_628), + TABLE_ENTRY(_dispatch_stub_629), + TABLE_ENTRY(_dispatch_stub_630), + TABLE_ENTRY(_dispatch_stub_631), + TABLE_ENTRY(_dispatch_stub_632), + TABLE_ENTRY(_dispatch_stub_633), + TABLE_ENTRY(_dispatch_stub_634), TABLE_ENTRY(ColorPointerEXT), TABLE_ENTRY(EdgeFlagPointerEXT), TABLE_ENTRY(IndexPointerEXT), @@ -7144,7 +7240,7 @@ _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(FogCoorddvEXT), TABLE_ENTRY(FogCoordfEXT), TABLE_ENTRY(FogCoordfvEXT), - TABLE_ENTRY(_dispatch_stub_653), + TABLE_ENTRY(_dispatch_stub_669), TABLE_ENTRY(BlendFuncSeparateEXT), TABLE_ENTRY(FlushVertexArrayRangeNV), TABLE_ENTRY(VertexArrayRangeNV), @@ -7186,15 +7282,15 @@ _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(WindowPos4ivMESA), TABLE_ENTRY(WindowPos4sMESA), TABLE_ENTRY(WindowPos4svMESA), - TABLE_ENTRY(_dispatch_stub_695), - TABLE_ENTRY(_dispatch_stub_696), - TABLE_ENTRY(_dispatch_stub_697), - TABLE_ENTRY(_dispatch_stub_698), - TABLE_ENTRY(_dispatch_stub_699), - TABLE_ENTRY(_dispatch_stub_700), - TABLE_ENTRY(_dispatch_stub_701), - TABLE_ENTRY(_dispatch_stub_702), - TABLE_ENTRY(_dispatch_stub_703), + TABLE_ENTRY(_dispatch_stub_711), + TABLE_ENTRY(_dispatch_stub_712), + TABLE_ENTRY(_dispatch_stub_713), + TABLE_ENTRY(_dispatch_stub_714), + TABLE_ENTRY(_dispatch_stub_715), + TABLE_ENTRY(_dispatch_stub_716), + TABLE_ENTRY(_dispatch_stub_717), + TABLE_ENTRY(_dispatch_stub_718), + TABLE_ENTRY(_dispatch_stub_719), TABLE_ENTRY(AreProgramsResidentNV), TABLE_ENTRY(BindProgramNV), TABLE_ENTRY(DeleteProgramsNV), @@ -7275,11 +7371,11 @@ _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(SetFragmentShaderConstantATI), TABLE_ENTRY(PointParameteriNV), TABLE_ENTRY(PointParameterivNV), - TABLE_ENTRY(_dispatch_stub_784), - TABLE_ENTRY(_dispatch_stub_785), - TABLE_ENTRY(_dispatch_stub_786), - TABLE_ENTRY(_dispatch_stub_787), - TABLE_ENTRY(_dispatch_stub_788), + TABLE_ENTRY(_dispatch_stub_800), + TABLE_ENTRY(_dispatch_stub_801), + TABLE_ENTRY(_dispatch_stub_802), + TABLE_ENTRY(_dispatch_stub_803), + TABLE_ENTRY(_dispatch_stub_804), TABLE_ENTRY(GetProgramNamedParameterdvNV), TABLE_ENTRY(GetProgramNamedParameterfvNV), TABLE_ENTRY(ProgramNamedParameter4dNV), @@ -7288,8 +7384,8 @@ _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(ProgramNamedParameter4fvNV), TABLE_ENTRY(PrimitiveRestartIndexNV), TABLE_ENTRY(PrimitiveRestartNV), - TABLE_ENTRY(_dispatch_stub_797), - TABLE_ENTRY(_dispatch_stub_798), + TABLE_ENTRY(_dispatch_stub_813), + TABLE_ENTRY(_dispatch_stub_814), TABLE_ENTRY(BindFramebufferEXT), TABLE_ENTRY(BindRenderbufferEXT), TABLE_ENTRY(CheckFramebufferStatusEXT), @@ -7307,9 +7403,9 @@ _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(IsFramebufferEXT), TABLE_ENTRY(IsRenderbufferEXT), TABLE_ENTRY(RenderbufferStorageEXT), - TABLE_ENTRY(_dispatch_stub_816), - TABLE_ENTRY(_dispatch_stub_817), - TABLE_ENTRY(_dispatch_stub_818), + TABLE_ENTRY(_dispatch_stub_832), + TABLE_ENTRY(_dispatch_stub_833), + TABLE_ENTRY(_dispatch_stub_834), TABLE_ENTRY(BindFragDataLocationEXT), TABLE_ENTRY(GetFragDataLocationEXT), TABLE_ENTRY(GetUniformuivEXT), @@ -7367,8 +7463,8 @@ _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(GetTransformFeedbackVaryingEXT), TABLE_ENTRY(TransformFeedbackVaryingsEXT), TABLE_ENTRY(ProvokingVertexEXT), - TABLE_ENTRY(_dispatch_stub_876), - TABLE_ENTRY(_dispatch_stub_877), + TABLE_ENTRY(_dispatch_stub_892), + TABLE_ENTRY(_dispatch_stub_893), TABLE_ENTRY(GetObjectParameterivAPPLE), TABLE_ENTRY(ObjectPurgeableAPPLE), TABLE_ENTRY(ObjectUnpurgeableAPPLE), @@ -7376,11 +7472,11 @@ _glapi_proc DISPATCH_TABLE_NAME[] = { TABLE_ENTRY(CreateShaderProgramEXT), TABLE_ENTRY(UseShaderProgramEXT), TABLE_ENTRY(TextureBarrierNV), - TABLE_ENTRY(_dispatch_stub_885), - TABLE_ENTRY(_dispatch_stub_886), - TABLE_ENTRY(_dispatch_stub_887), - TABLE_ENTRY(_dispatch_stub_888), - TABLE_ENTRY(_dispatch_stub_889), + TABLE_ENTRY(_dispatch_stub_901), + TABLE_ENTRY(_dispatch_stub_902), + TABLE_ENTRY(_dispatch_stub_903), + TABLE_ENTRY(_dispatch_stub_904), + TABLE_ENTRY(_dispatch_stub_905), TABLE_ENTRY(EGLImageTargetRenderbufferStorageOES), TABLE_ENTRY(EGLImageTargetTexture2DOES), /* A whole bunch of no-op functions. These might be called @@ -7687,10 +7783,10 @@ _glapi_proc UNUSED_TABLE_NAME[] = { TABLE_ENTRY(RenderbufferStorageMultisampleEXT), TABLE_ENTRY(PointParameterf), TABLE_ENTRY(PointParameterfARB), - TABLE_ENTRY(_dispatch_stub_625), + TABLE_ENTRY(_dispatch_stub_641), TABLE_ENTRY(PointParameterfv), TABLE_ENTRY(PointParameterfvARB), - TABLE_ENTRY(_dispatch_stub_626), + TABLE_ENTRY(_dispatch_stub_642), TABLE_ENTRY(SecondaryColor3b), TABLE_ENTRY(SecondaryColor3bv), TABLE_ENTRY(SecondaryColor3d), @@ -7716,7 +7812,7 @@ _glapi_proc UNUSED_TABLE_NAME[] = { TABLE_ENTRY(FogCoordf), TABLE_ENTRY(FogCoordfv), TABLE_ENTRY(BlendFuncSeparate), - TABLE_ENTRY(_dispatch_stub_654), + TABLE_ENTRY(_dispatch_stub_670), TABLE_ENTRY(WindowPos2d), TABLE_ENTRY(WindowPos2dARB), TABLE_ENTRY(WindowPos2dv), diff --git a/src/mapi/glapi/glprocs.h b/src/mapi/glapi/glprocs.h index b66ae381218..b11bca21cc5 100644 --- a/src/mapi/glapi/glprocs.h +++ b/src/mapi/glapi/glprocs.h @@ -624,6 +624,7 @@ static const char gl_string_table[] = "glGetActiveAttribARB\0" "glGetAttribLocationARB\0" "glDrawBuffersARB\0" + "glClampColorARB\0" "glDrawArraysInstancedARB\0" "glDrawElementsInstancedARB\0" "glRenderbufferStorageMultisample\0" @@ -633,6 +634,7 @@ static const char gl_string_table[] = "glVertexAttribDivisorARB\0" "glFlushMappedBufferRange\0" "glMapBufferRange\0" + "glTexBufferARB\0" "glBindVertexArray\0" "glGenVertexArrays\0" "glCopyBufferSubData\0" @@ -650,6 +652,20 @@ static const char gl_string_table[] = "glBlendEquationiARB\0" "glBlendFuncSeparateiARB\0" "glBlendFunciARB\0" + "glBindSampler\0" + "glDeleteSamplers\0" + "glGenSamplers\0" + "glGetSamplerParameterIiv\0" + "glGetSamplerParameterIuiv\0" + "glGetSamplerParameterfv\0" + "glGetSamplerParameteriv\0" + "glIsSampler\0" + "glSamplerParameterIiv\0" + "glSamplerParameterIuiv\0" + "glSamplerParameterf\0" + "glSamplerParameterfv\0" + "glSamplerParameteri\0" + "glSamplerParameteriv\0" "glBindTransformFeedback\0" "glDeleteTransformFeedbacks\0" "glDrawTransformFeedback\0" @@ -1320,41 +1336,41 @@ static const char gl_string_table[] = #define gl_dispatch_stub_364 mgl_dispatch_stub_364 #define gl_dispatch_stub_365 mgl_dispatch_stub_365 #define gl_dispatch_stub_366 mgl_dispatch_stub_366 -#define gl_dispatch_stub_611 mgl_dispatch_stub_611 -#define gl_dispatch_stub_612 mgl_dispatch_stub_612 -#define gl_dispatch_stub_613 mgl_dispatch_stub_613 -#define gl_dispatch_stub_614 mgl_dispatch_stub_614 -#define gl_dispatch_stub_615 mgl_dispatch_stub_615 -#define gl_dispatch_stub_616 mgl_dispatch_stub_616 -#define gl_dispatch_stub_617 mgl_dispatch_stub_617 -#define gl_dispatch_stub_618 mgl_dispatch_stub_618 -#define gl_dispatch_stub_653 mgl_dispatch_stub_653 -#define gl_dispatch_stub_695 mgl_dispatch_stub_695 -#define gl_dispatch_stub_696 mgl_dispatch_stub_696 -#define gl_dispatch_stub_697 mgl_dispatch_stub_697 -#define gl_dispatch_stub_698 mgl_dispatch_stub_698 -#define gl_dispatch_stub_699 mgl_dispatch_stub_699 -#define gl_dispatch_stub_700 mgl_dispatch_stub_700 -#define gl_dispatch_stub_701 mgl_dispatch_stub_701 -#define gl_dispatch_stub_702 mgl_dispatch_stub_702 -#define gl_dispatch_stub_703 mgl_dispatch_stub_703 -#define gl_dispatch_stub_784 mgl_dispatch_stub_784 -#define gl_dispatch_stub_785 mgl_dispatch_stub_785 -#define gl_dispatch_stub_786 mgl_dispatch_stub_786 -#define gl_dispatch_stub_787 mgl_dispatch_stub_787 -#define gl_dispatch_stub_788 mgl_dispatch_stub_788 -#define gl_dispatch_stub_797 mgl_dispatch_stub_797 -#define gl_dispatch_stub_798 mgl_dispatch_stub_798 -#define gl_dispatch_stub_816 mgl_dispatch_stub_816 -#define gl_dispatch_stub_817 mgl_dispatch_stub_817 -#define gl_dispatch_stub_818 mgl_dispatch_stub_818 -#define gl_dispatch_stub_876 mgl_dispatch_stub_876 -#define gl_dispatch_stub_877 mgl_dispatch_stub_877 -#define gl_dispatch_stub_885 mgl_dispatch_stub_885 -#define gl_dispatch_stub_886 mgl_dispatch_stub_886 -#define gl_dispatch_stub_887 mgl_dispatch_stub_887 -#define gl_dispatch_stub_888 mgl_dispatch_stub_888 -#define gl_dispatch_stub_889 mgl_dispatch_stub_889 +#define gl_dispatch_stub_627 mgl_dispatch_stub_627 +#define gl_dispatch_stub_628 mgl_dispatch_stub_628 +#define gl_dispatch_stub_629 mgl_dispatch_stub_629 +#define gl_dispatch_stub_630 mgl_dispatch_stub_630 +#define gl_dispatch_stub_631 mgl_dispatch_stub_631 +#define gl_dispatch_stub_632 mgl_dispatch_stub_632 +#define gl_dispatch_stub_633 mgl_dispatch_stub_633 +#define gl_dispatch_stub_634 mgl_dispatch_stub_634 +#define gl_dispatch_stub_669 mgl_dispatch_stub_669 +#define gl_dispatch_stub_711 mgl_dispatch_stub_711 +#define gl_dispatch_stub_712 mgl_dispatch_stub_712 +#define gl_dispatch_stub_713 mgl_dispatch_stub_713 +#define gl_dispatch_stub_714 mgl_dispatch_stub_714 +#define gl_dispatch_stub_715 mgl_dispatch_stub_715 +#define gl_dispatch_stub_716 mgl_dispatch_stub_716 +#define gl_dispatch_stub_717 mgl_dispatch_stub_717 +#define gl_dispatch_stub_718 mgl_dispatch_stub_718 +#define gl_dispatch_stub_719 mgl_dispatch_stub_719 +#define gl_dispatch_stub_800 mgl_dispatch_stub_800 +#define gl_dispatch_stub_801 mgl_dispatch_stub_801 +#define gl_dispatch_stub_802 mgl_dispatch_stub_802 +#define gl_dispatch_stub_803 mgl_dispatch_stub_803 +#define gl_dispatch_stub_804 mgl_dispatch_stub_804 +#define gl_dispatch_stub_813 mgl_dispatch_stub_813 +#define gl_dispatch_stub_814 mgl_dispatch_stub_814 +#define gl_dispatch_stub_832 mgl_dispatch_stub_832 +#define gl_dispatch_stub_833 mgl_dispatch_stub_833 +#define gl_dispatch_stub_834 mgl_dispatch_stub_834 +#define gl_dispatch_stub_892 mgl_dispatch_stub_892 +#define gl_dispatch_stub_893 mgl_dispatch_stub_893 +#define gl_dispatch_stub_901 mgl_dispatch_stub_901 +#define gl_dispatch_stub_902 mgl_dispatch_stub_902 +#define gl_dispatch_stub_903 mgl_dispatch_stub_903 +#define gl_dispatch_stub_904 mgl_dispatch_stub_904 +#define gl_dispatch_stub_905 mgl_dispatch_stub_905 #endif /* USE_MGL_NAMESPACE */ @@ -1372,41 +1388,41 @@ void GLAPIENTRY gl_dispatch_stub_363(GLenum target, GLenum pname, GLint * params void GLAPIENTRY gl_dispatch_stub_364(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values); void GLAPIENTRY gl_dispatch_stub_365(GLenum target, GLenum pname, GLfloat * params); void GLAPIENTRY gl_dispatch_stub_366(GLenum target, GLenum pname, GLint * params); -void GLAPIENTRY gl_dispatch_stub_611(GLenum pname, GLfloat * params); -void GLAPIENTRY gl_dispatch_stub_612(GLenum pname, GLint * params); -void GLAPIENTRY gl_dispatch_stub_613(GLenum pname, GLfloat param); -void GLAPIENTRY gl_dispatch_stub_614(GLenum pname, const GLfloat * params); -void GLAPIENTRY gl_dispatch_stub_615(GLenum pname, GLint param); -void GLAPIENTRY gl_dispatch_stub_616(GLenum pname, const GLint * params); -void GLAPIENTRY gl_dispatch_stub_617(GLclampf value, GLboolean invert); -void GLAPIENTRY gl_dispatch_stub_618(GLenum pattern); -void GLAPIENTRY gl_dispatch_stub_653(GLenum mode); -void GLAPIENTRY gl_dispatch_stub_695(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); -void GLAPIENTRY gl_dispatch_stub_696(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); -void GLAPIENTRY gl_dispatch_stub_697(GLsizei n, const GLuint * fences); -void GLAPIENTRY gl_dispatch_stub_698(GLuint fence); -void GLAPIENTRY gl_dispatch_stub_699(GLsizei n, GLuint * fences); -void GLAPIENTRY gl_dispatch_stub_700(GLuint fence, GLenum pname, GLint * params); -GLboolean GLAPIENTRY gl_dispatch_stub_701(GLuint fence); -void GLAPIENTRY gl_dispatch_stub_702(GLuint fence, GLenum condition); -GLboolean GLAPIENTRY gl_dispatch_stub_703(GLuint fence); -void GLAPIENTRY gl_dispatch_stub_784(GLenum face); -void GLAPIENTRY gl_dispatch_stub_785(GLuint array); -void GLAPIENTRY gl_dispatch_stub_786(GLsizei n, const GLuint * arrays); -void GLAPIENTRY gl_dispatch_stub_787(GLsizei n, GLuint * arrays); -GLboolean GLAPIENTRY gl_dispatch_stub_788(GLuint array); -void GLAPIENTRY gl_dispatch_stub_797(GLclampd zmin, GLclampd zmax); -void GLAPIENTRY gl_dispatch_stub_798(GLenum modeRGB, GLenum modeA); -void GLAPIENTRY gl_dispatch_stub_816(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); -void GLAPIENTRY gl_dispatch_stub_817(GLenum target, GLenum pname, GLint param); -void GLAPIENTRY gl_dispatch_stub_818(GLenum target, GLintptr offset, GLsizeiptr size); -void GLAPIENTRY gl_dispatch_stub_876(GLenum target, GLenum pname, GLvoid ** params); -void GLAPIENTRY gl_dispatch_stub_877(GLenum target, GLsizei length, GLvoid * pointer); -void GLAPIENTRY gl_dispatch_stub_885(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); -void GLAPIENTRY gl_dispatch_stub_886(GLenum target, GLuint index, GLsizei count, const GLfloat * params); -void GLAPIENTRY gl_dispatch_stub_887(GLenum target, GLuint index, GLsizei count, const GLfloat * params); -void GLAPIENTRY gl_dispatch_stub_888(GLuint id, GLenum pname, GLint64EXT * params); -void GLAPIENTRY gl_dispatch_stub_889(GLuint id, GLenum pname, GLuint64EXT * params); +void GLAPIENTRY gl_dispatch_stub_627(GLenum pname, GLfloat * params); +void GLAPIENTRY gl_dispatch_stub_628(GLenum pname, GLint * params); +void GLAPIENTRY gl_dispatch_stub_629(GLenum pname, GLfloat param); +void GLAPIENTRY gl_dispatch_stub_630(GLenum pname, const GLfloat * params); +void GLAPIENTRY gl_dispatch_stub_631(GLenum pname, GLint param); +void GLAPIENTRY gl_dispatch_stub_632(GLenum pname, const GLint * params); +void GLAPIENTRY gl_dispatch_stub_633(GLclampf value, GLboolean invert); +void GLAPIENTRY gl_dispatch_stub_634(GLenum pattern); +void GLAPIENTRY gl_dispatch_stub_669(GLenum mode); +void GLAPIENTRY gl_dispatch_stub_711(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); +void GLAPIENTRY gl_dispatch_stub_712(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); +void GLAPIENTRY gl_dispatch_stub_713(GLsizei n, const GLuint * fences); +void GLAPIENTRY gl_dispatch_stub_714(GLuint fence); +void GLAPIENTRY gl_dispatch_stub_715(GLsizei n, GLuint * fences); +void GLAPIENTRY gl_dispatch_stub_716(GLuint fence, GLenum pname, GLint * params); +GLboolean GLAPIENTRY gl_dispatch_stub_717(GLuint fence); +void GLAPIENTRY gl_dispatch_stub_718(GLuint fence, GLenum condition); +GLboolean GLAPIENTRY gl_dispatch_stub_719(GLuint fence); +void GLAPIENTRY gl_dispatch_stub_800(GLenum face); +void GLAPIENTRY gl_dispatch_stub_801(GLuint array); +void GLAPIENTRY gl_dispatch_stub_802(GLsizei n, const GLuint * arrays); +void GLAPIENTRY gl_dispatch_stub_803(GLsizei n, GLuint * arrays); +GLboolean GLAPIENTRY gl_dispatch_stub_804(GLuint array); +void GLAPIENTRY gl_dispatch_stub_813(GLclampd zmin, GLclampd zmax); +void GLAPIENTRY gl_dispatch_stub_814(GLenum modeRGB, GLenum modeA); +void GLAPIENTRY gl_dispatch_stub_832(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +void GLAPIENTRY gl_dispatch_stub_833(GLenum target, GLenum pname, GLint param); +void GLAPIENTRY gl_dispatch_stub_834(GLenum target, GLintptr offset, GLsizeiptr size); +void GLAPIENTRY gl_dispatch_stub_892(GLenum target, GLenum pname, GLvoid ** params); +void GLAPIENTRY gl_dispatch_stub_893(GLenum target, GLsizei length, GLvoid * pointer); +void GLAPIENTRY gl_dispatch_stub_901(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +void GLAPIENTRY gl_dispatch_stub_902(GLenum target, GLuint index, GLsizei count, const GLfloat * params); +void GLAPIENTRY gl_dispatch_stub_903(GLenum target, GLuint index, GLsizei count, const GLfloat * params); +void GLAPIENTRY gl_dispatch_stub_904(GLuint id, GLenum pname, GLint64EXT * params); +void GLAPIENTRY gl_dispatch_stub_905(GLuint id, GLenum pname, GLuint64EXT * params); #endif /* defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING) */ static const glprocs_table_t static_functions[] = { @@ -1982,685 +1998,701 @@ static const glprocs_table_t static_functions[] = { NAME_FUNC_OFFSET( 9079, glGetActiveAttribARB, glGetActiveAttribARB, NULL, 569), NAME_FUNC_OFFSET( 9100, glGetAttribLocationARB, glGetAttribLocationARB, NULL, 570), NAME_FUNC_OFFSET( 9123, glDrawBuffersARB, glDrawBuffersARB, NULL, 571), - NAME_FUNC_OFFSET( 9140, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 572), - NAME_FUNC_OFFSET( 9165, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 573), - NAME_FUNC_OFFSET( 9192, glRenderbufferStorageMultisample, glRenderbufferStorageMultisample, NULL, 574), - NAME_FUNC_OFFSET( 9225, glFramebufferTextureARB, glFramebufferTextureARB, NULL, 575), - NAME_FUNC_OFFSET( 9249, glFramebufferTextureFaceARB, glFramebufferTextureFaceARB, NULL, 576), - NAME_FUNC_OFFSET( 9277, glProgramParameteriARB, glProgramParameteriARB, NULL, 577), - NAME_FUNC_OFFSET( 9300, glVertexAttribDivisorARB, glVertexAttribDivisorARB, NULL, 578), - NAME_FUNC_OFFSET( 9325, glFlushMappedBufferRange, glFlushMappedBufferRange, NULL, 579), - NAME_FUNC_OFFSET( 9350, glMapBufferRange, glMapBufferRange, NULL, 580), - NAME_FUNC_OFFSET( 9367, glBindVertexArray, glBindVertexArray, NULL, 581), - NAME_FUNC_OFFSET( 9385, glGenVertexArrays, glGenVertexArrays, NULL, 582), - NAME_FUNC_OFFSET( 9403, glCopyBufferSubData, glCopyBufferSubData, NULL, 583), - NAME_FUNC_OFFSET( 9423, glClientWaitSync, glClientWaitSync, NULL, 584), - NAME_FUNC_OFFSET( 9440, glDeleteSync, glDeleteSync, NULL, 585), - NAME_FUNC_OFFSET( 9453, glFenceSync, glFenceSync, NULL, 586), - NAME_FUNC_OFFSET( 9465, glGetInteger64v, glGetInteger64v, NULL, 587), - NAME_FUNC_OFFSET( 9481, glGetSynciv, glGetSynciv, NULL, 588), - NAME_FUNC_OFFSET( 9493, glIsSync, glIsSync, NULL, 589), - NAME_FUNC_OFFSET( 9502, glWaitSync, glWaitSync, NULL, 590), - NAME_FUNC_OFFSET( 9513, glDrawElementsBaseVertex, glDrawElementsBaseVertex, NULL, 591), - NAME_FUNC_OFFSET( 9538, glDrawRangeElementsBaseVertex, glDrawRangeElementsBaseVertex, NULL, 592), - NAME_FUNC_OFFSET( 9568, glMultiDrawElementsBaseVertex, glMultiDrawElementsBaseVertex, NULL, 593), - NAME_FUNC_OFFSET( 9598, glBlendEquationSeparateiARB, glBlendEquationSeparateiARB, NULL, 594), - NAME_FUNC_OFFSET( 9626, glBlendEquationiARB, glBlendEquationiARB, NULL, 595), - NAME_FUNC_OFFSET( 9646, glBlendFuncSeparateiARB, glBlendFuncSeparateiARB, NULL, 596), - NAME_FUNC_OFFSET( 9670, glBlendFunciARB, glBlendFunciARB, NULL, 597), - NAME_FUNC_OFFSET( 9686, glBindTransformFeedback, glBindTransformFeedback, NULL, 598), - NAME_FUNC_OFFSET( 9710, glDeleteTransformFeedbacks, glDeleteTransformFeedbacks, NULL, 599), - NAME_FUNC_OFFSET( 9737, glDrawTransformFeedback, glDrawTransformFeedback, NULL, 600), - NAME_FUNC_OFFSET( 9761, glGenTransformFeedbacks, glGenTransformFeedbacks, NULL, 601), - NAME_FUNC_OFFSET( 9785, glIsTransformFeedback, glIsTransformFeedback, NULL, 602), - NAME_FUNC_OFFSET( 9807, glPauseTransformFeedback, glPauseTransformFeedback, NULL, 603), - NAME_FUNC_OFFSET( 9832, glResumeTransformFeedback, glResumeTransformFeedback, NULL, 604), - NAME_FUNC_OFFSET( 9858, glClearDepthf, glClearDepthf, NULL, 605), - NAME_FUNC_OFFSET( 9872, glDepthRangef, glDepthRangef, NULL, 606), - NAME_FUNC_OFFSET( 9886, glGetShaderPrecisionFormat, glGetShaderPrecisionFormat, NULL, 607), - NAME_FUNC_OFFSET( 9913, glReleaseShaderCompiler, glReleaseShaderCompiler, NULL, 608), - NAME_FUNC_OFFSET( 9937, glShaderBinary, glShaderBinary, NULL, 609), - NAME_FUNC_OFFSET( 9952, glPolygonOffsetEXT, glPolygonOffsetEXT, NULL, 610), - NAME_FUNC_OFFSET( 9971, gl_dispatch_stub_611, gl_dispatch_stub_611, NULL, 611), - NAME_FUNC_OFFSET(10003, gl_dispatch_stub_612, gl_dispatch_stub_612, NULL, 612), - NAME_FUNC_OFFSET(10035, gl_dispatch_stub_613, gl_dispatch_stub_613, NULL, 613), - NAME_FUNC_OFFSET(10063, gl_dispatch_stub_614, gl_dispatch_stub_614, NULL, 614), - NAME_FUNC_OFFSET(10092, gl_dispatch_stub_615, gl_dispatch_stub_615, NULL, 615), - NAME_FUNC_OFFSET(10120, gl_dispatch_stub_616, gl_dispatch_stub_616, NULL, 616), - NAME_FUNC_OFFSET(10149, gl_dispatch_stub_617, gl_dispatch_stub_617, NULL, 617), - NAME_FUNC_OFFSET(10166, gl_dispatch_stub_618, gl_dispatch_stub_618, NULL, 618), - NAME_FUNC_OFFSET(10186, glColorPointerEXT, glColorPointerEXT, NULL, 619), - NAME_FUNC_OFFSET(10204, glEdgeFlagPointerEXT, glEdgeFlagPointerEXT, NULL, 620), - NAME_FUNC_OFFSET(10225, glIndexPointerEXT, glIndexPointerEXT, NULL, 621), - NAME_FUNC_OFFSET(10243, glNormalPointerEXT, glNormalPointerEXT, NULL, 622), - NAME_FUNC_OFFSET(10262, glTexCoordPointerEXT, glTexCoordPointerEXT, NULL, 623), - NAME_FUNC_OFFSET(10283, glVertexPointerEXT, glVertexPointerEXT, NULL, 624), - NAME_FUNC_OFFSET(10302, glPointParameterfEXT, glPointParameterfEXT, NULL, 625), - NAME_FUNC_OFFSET(10323, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 626), - NAME_FUNC_OFFSET(10345, glLockArraysEXT, glLockArraysEXT, NULL, 627), - NAME_FUNC_OFFSET(10361, glUnlockArraysEXT, glUnlockArraysEXT, NULL, 628), - NAME_FUNC_OFFSET(10379, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, 629), - NAME_FUNC_OFFSET(10401, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, 630), - NAME_FUNC_OFFSET(10424, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, 631), - NAME_FUNC_OFFSET(10446, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, 632), - NAME_FUNC_OFFSET(10469, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, 633), - NAME_FUNC_OFFSET(10491, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, 634), - NAME_FUNC_OFFSET(10514, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, 635), - NAME_FUNC_OFFSET(10536, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, 636), - NAME_FUNC_OFFSET(10559, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, 637), - NAME_FUNC_OFFSET(10581, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, 638), - NAME_FUNC_OFFSET(10604, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, 639), - NAME_FUNC_OFFSET(10627, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, 640), - NAME_FUNC_OFFSET(10651, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, 641), - NAME_FUNC_OFFSET(10674, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, 642), - NAME_FUNC_OFFSET(10698, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, 643), - NAME_FUNC_OFFSET(10721, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, 644), - NAME_FUNC_OFFSET(10745, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, 645), - NAME_FUNC_OFFSET(10772, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, 646), - NAME_FUNC_OFFSET(10793, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, 647), - NAME_FUNC_OFFSET(10816, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, 648), - NAME_FUNC_OFFSET(10837, glFogCoorddEXT, glFogCoorddEXT, NULL, 649), - NAME_FUNC_OFFSET(10852, glFogCoorddvEXT, glFogCoorddvEXT, NULL, 650), - NAME_FUNC_OFFSET(10868, glFogCoordfEXT, glFogCoordfEXT, NULL, 651), - NAME_FUNC_OFFSET(10883, glFogCoordfvEXT, glFogCoordfvEXT, NULL, 652), - NAME_FUNC_OFFSET(10899, gl_dispatch_stub_653, gl_dispatch_stub_653, NULL, 653), - NAME_FUNC_OFFSET(10917, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, 654), - NAME_FUNC_OFFSET(10940, glFlushVertexArrayRangeNV, glFlushVertexArrayRangeNV, NULL, 655), - NAME_FUNC_OFFSET(10966, glVertexArrayRangeNV, glVertexArrayRangeNV, NULL, 656), - NAME_FUNC_OFFSET(10987, glCombinerInputNV, glCombinerInputNV, NULL, 657), - NAME_FUNC_OFFSET(11005, glCombinerOutputNV, glCombinerOutputNV, NULL, 658), - NAME_FUNC_OFFSET(11024, glCombinerParameterfNV, glCombinerParameterfNV, NULL, 659), - NAME_FUNC_OFFSET(11047, glCombinerParameterfvNV, glCombinerParameterfvNV, NULL, 660), - NAME_FUNC_OFFSET(11071, glCombinerParameteriNV, glCombinerParameteriNV, NULL, 661), - NAME_FUNC_OFFSET(11094, glCombinerParameterivNV, glCombinerParameterivNV, NULL, 662), - NAME_FUNC_OFFSET(11118, glFinalCombinerInputNV, glFinalCombinerInputNV, NULL, 663), - NAME_FUNC_OFFSET(11141, glGetCombinerInputParameterfvNV, glGetCombinerInputParameterfvNV, NULL, 664), - NAME_FUNC_OFFSET(11173, glGetCombinerInputParameterivNV, glGetCombinerInputParameterivNV, NULL, 665), - NAME_FUNC_OFFSET(11205, glGetCombinerOutputParameterfvNV, glGetCombinerOutputParameterfvNV, NULL, 666), - NAME_FUNC_OFFSET(11238, glGetCombinerOutputParameterivNV, glGetCombinerOutputParameterivNV, NULL, 667), - NAME_FUNC_OFFSET(11271, glGetFinalCombinerInputParameterfvNV, glGetFinalCombinerInputParameterfvNV, NULL, 668), - NAME_FUNC_OFFSET(11308, glGetFinalCombinerInputParameterivNV, glGetFinalCombinerInputParameterivNV, NULL, 669), - NAME_FUNC_OFFSET(11345, glResizeBuffersMESA, glResizeBuffersMESA, NULL, 670), - NAME_FUNC_OFFSET(11365, glWindowPos2dMESA, glWindowPos2dMESA, NULL, 671), - NAME_FUNC_OFFSET(11383, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, 672), - NAME_FUNC_OFFSET(11402, glWindowPos2fMESA, glWindowPos2fMESA, NULL, 673), - NAME_FUNC_OFFSET(11420, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, 674), - NAME_FUNC_OFFSET(11439, glWindowPos2iMESA, glWindowPos2iMESA, NULL, 675), - NAME_FUNC_OFFSET(11457, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, 676), - NAME_FUNC_OFFSET(11476, glWindowPos2sMESA, glWindowPos2sMESA, NULL, 677), - NAME_FUNC_OFFSET(11494, glWindowPos2svMESA, glWindowPos2svMESA, NULL, 678), - NAME_FUNC_OFFSET(11513, glWindowPos3dMESA, glWindowPos3dMESA, NULL, 679), - NAME_FUNC_OFFSET(11531, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, 680), - NAME_FUNC_OFFSET(11550, glWindowPos3fMESA, glWindowPos3fMESA, NULL, 681), - NAME_FUNC_OFFSET(11568, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, 682), - NAME_FUNC_OFFSET(11587, glWindowPos3iMESA, glWindowPos3iMESA, NULL, 683), - NAME_FUNC_OFFSET(11605, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, 684), - NAME_FUNC_OFFSET(11624, glWindowPos3sMESA, glWindowPos3sMESA, NULL, 685), - NAME_FUNC_OFFSET(11642, glWindowPos3svMESA, glWindowPos3svMESA, NULL, 686), - NAME_FUNC_OFFSET(11661, glWindowPos4dMESA, glWindowPos4dMESA, NULL, 687), - NAME_FUNC_OFFSET(11679, glWindowPos4dvMESA, glWindowPos4dvMESA, NULL, 688), - NAME_FUNC_OFFSET(11698, glWindowPos4fMESA, glWindowPos4fMESA, NULL, 689), - NAME_FUNC_OFFSET(11716, glWindowPos4fvMESA, glWindowPos4fvMESA, NULL, 690), - NAME_FUNC_OFFSET(11735, glWindowPos4iMESA, glWindowPos4iMESA, NULL, 691), - NAME_FUNC_OFFSET(11753, glWindowPos4ivMESA, glWindowPos4ivMESA, NULL, 692), - NAME_FUNC_OFFSET(11772, glWindowPos4sMESA, glWindowPos4sMESA, NULL, 693), - NAME_FUNC_OFFSET(11790, glWindowPos4svMESA, glWindowPos4svMESA, NULL, 694), - NAME_FUNC_OFFSET(11809, gl_dispatch_stub_695, gl_dispatch_stub_695, NULL, 695), - NAME_FUNC_OFFSET(11834, gl_dispatch_stub_696, gl_dispatch_stub_696, NULL, 696), - NAME_FUNC_OFFSET(11861, gl_dispatch_stub_697, gl_dispatch_stub_697, NULL, 697), - NAME_FUNC_OFFSET(11878, gl_dispatch_stub_698, gl_dispatch_stub_698, NULL, 698), - NAME_FUNC_OFFSET(11894, gl_dispatch_stub_699, gl_dispatch_stub_699, NULL, 699), - NAME_FUNC_OFFSET(11908, gl_dispatch_stub_700, gl_dispatch_stub_700, NULL, 700), - NAME_FUNC_OFFSET(11923, gl_dispatch_stub_701, gl_dispatch_stub_701, NULL, 701), - NAME_FUNC_OFFSET(11935, gl_dispatch_stub_702, gl_dispatch_stub_702, NULL, 702), - NAME_FUNC_OFFSET(11948, gl_dispatch_stub_703, gl_dispatch_stub_703, NULL, 703), - NAME_FUNC_OFFSET(11962, glAreProgramsResidentNV, glAreProgramsResidentNV, NULL, 704), - NAME_FUNC_OFFSET(11986, glBindProgramNV, glBindProgramNV, NULL, 705), - NAME_FUNC_OFFSET(12002, glDeleteProgramsNV, glDeleteProgramsNV, NULL, 706), - NAME_FUNC_OFFSET(12021, glExecuteProgramNV, glExecuteProgramNV, NULL, 707), - NAME_FUNC_OFFSET(12040, glGenProgramsNV, glGenProgramsNV, NULL, 708), - NAME_FUNC_OFFSET(12056, glGetProgramParameterdvNV, glGetProgramParameterdvNV, NULL, 709), - NAME_FUNC_OFFSET(12082, glGetProgramParameterfvNV, glGetProgramParameterfvNV, NULL, 710), - NAME_FUNC_OFFSET(12108, glGetProgramStringNV, glGetProgramStringNV, NULL, 711), - NAME_FUNC_OFFSET(12129, glGetProgramivNV, glGetProgramivNV, NULL, 712), - NAME_FUNC_OFFSET(12146, glGetTrackMatrixivNV, glGetTrackMatrixivNV, NULL, 713), - NAME_FUNC_OFFSET(12167, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, 714), - NAME_FUNC_OFFSET(12195, glGetVertexAttribdvNV, glGetVertexAttribdvNV, NULL, 715), - NAME_FUNC_OFFSET(12217, glGetVertexAttribfvNV, glGetVertexAttribfvNV, NULL, 716), - NAME_FUNC_OFFSET(12239, glGetVertexAttribivNV, glGetVertexAttribivNV, NULL, 717), - NAME_FUNC_OFFSET(12261, glIsProgramNV, glIsProgramNV, NULL, 718), - NAME_FUNC_OFFSET(12275, glLoadProgramNV, glLoadProgramNV, NULL, 719), - NAME_FUNC_OFFSET(12291, glProgramParameters4dvNV, glProgramParameters4dvNV, NULL, 720), - NAME_FUNC_OFFSET(12316, glProgramParameters4fvNV, glProgramParameters4fvNV, NULL, 721), - NAME_FUNC_OFFSET(12341, glRequestResidentProgramsNV, glRequestResidentProgramsNV, NULL, 722), - NAME_FUNC_OFFSET(12369, glTrackMatrixNV, glTrackMatrixNV, NULL, 723), - NAME_FUNC_OFFSET(12385, glVertexAttrib1dNV, glVertexAttrib1dNV, NULL, 724), - NAME_FUNC_OFFSET(12404, glVertexAttrib1dvNV, glVertexAttrib1dvNV, NULL, 725), - NAME_FUNC_OFFSET(12424, glVertexAttrib1fNV, glVertexAttrib1fNV, NULL, 726), - NAME_FUNC_OFFSET(12443, glVertexAttrib1fvNV, glVertexAttrib1fvNV, NULL, 727), - NAME_FUNC_OFFSET(12463, glVertexAttrib1sNV, glVertexAttrib1sNV, NULL, 728), - NAME_FUNC_OFFSET(12482, glVertexAttrib1svNV, glVertexAttrib1svNV, NULL, 729), - NAME_FUNC_OFFSET(12502, glVertexAttrib2dNV, glVertexAttrib2dNV, NULL, 730), - NAME_FUNC_OFFSET(12521, glVertexAttrib2dvNV, glVertexAttrib2dvNV, NULL, 731), - NAME_FUNC_OFFSET(12541, glVertexAttrib2fNV, glVertexAttrib2fNV, NULL, 732), - NAME_FUNC_OFFSET(12560, glVertexAttrib2fvNV, glVertexAttrib2fvNV, NULL, 733), - NAME_FUNC_OFFSET(12580, glVertexAttrib2sNV, glVertexAttrib2sNV, NULL, 734), - NAME_FUNC_OFFSET(12599, glVertexAttrib2svNV, glVertexAttrib2svNV, NULL, 735), - NAME_FUNC_OFFSET(12619, glVertexAttrib3dNV, glVertexAttrib3dNV, NULL, 736), - NAME_FUNC_OFFSET(12638, glVertexAttrib3dvNV, glVertexAttrib3dvNV, NULL, 737), - NAME_FUNC_OFFSET(12658, glVertexAttrib3fNV, glVertexAttrib3fNV, NULL, 738), - NAME_FUNC_OFFSET(12677, glVertexAttrib3fvNV, glVertexAttrib3fvNV, NULL, 739), - NAME_FUNC_OFFSET(12697, glVertexAttrib3sNV, glVertexAttrib3sNV, NULL, 740), - NAME_FUNC_OFFSET(12716, glVertexAttrib3svNV, glVertexAttrib3svNV, NULL, 741), - NAME_FUNC_OFFSET(12736, glVertexAttrib4dNV, glVertexAttrib4dNV, NULL, 742), - NAME_FUNC_OFFSET(12755, glVertexAttrib4dvNV, glVertexAttrib4dvNV, NULL, 743), - NAME_FUNC_OFFSET(12775, glVertexAttrib4fNV, glVertexAttrib4fNV, NULL, 744), - NAME_FUNC_OFFSET(12794, glVertexAttrib4fvNV, glVertexAttrib4fvNV, NULL, 745), - NAME_FUNC_OFFSET(12814, glVertexAttrib4sNV, glVertexAttrib4sNV, NULL, 746), - NAME_FUNC_OFFSET(12833, glVertexAttrib4svNV, glVertexAttrib4svNV, NULL, 747), - NAME_FUNC_OFFSET(12853, glVertexAttrib4ubNV, glVertexAttrib4ubNV, NULL, 748), - NAME_FUNC_OFFSET(12873, glVertexAttrib4ubvNV, glVertexAttrib4ubvNV, NULL, 749), - NAME_FUNC_OFFSET(12894, glVertexAttribPointerNV, glVertexAttribPointerNV, NULL, 750), - NAME_FUNC_OFFSET(12918, glVertexAttribs1dvNV, glVertexAttribs1dvNV, NULL, 751), - NAME_FUNC_OFFSET(12939, glVertexAttribs1fvNV, glVertexAttribs1fvNV, NULL, 752), - NAME_FUNC_OFFSET(12960, glVertexAttribs1svNV, glVertexAttribs1svNV, NULL, 753), - NAME_FUNC_OFFSET(12981, glVertexAttribs2dvNV, glVertexAttribs2dvNV, NULL, 754), - NAME_FUNC_OFFSET(13002, glVertexAttribs2fvNV, glVertexAttribs2fvNV, NULL, 755), - NAME_FUNC_OFFSET(13023, glVertexAttribs2svNV, glVertexAttribs2svNV, NULL, 756), - NAME_FUNC_OFFSET(13044, glVertexAttribs3dvNV, glVertexAttribs3dvNV, NULL, 757), - NAME_FUNC_OFFSET(13065, glVertexAttribs3fvNV, glVertexAttribs3fvNV, NULL, 758), - NAME_FUNC_OFFSET(13086, glVertexAttribs3svNV, glVertexAttribs3svNV, NULL, 759), - NAME_FUNC_OFFSET(13107, glVertexAttribs4dvNV, glVertexAttribs4dvNV, NULL, 760), - NAME_FUNC_OFFSET(13128, glVertexAttribs4fvNV, glVertexAttribs4fvNV, NULL, 761), - NAME_FUNC_OFFSET(13149, glVertexAttribs4svNV, glVertexAttribs4svNV, NULL, 762), - NAME_FUNC_OFFSET(13170, glVertexAttribs4ubvNV, glVertexAttribs4ubvNV, NULL, 763), - NAME_FUNC_OFFSET(13192, glGetTexBumpParameterfvATI, glGetTexBumpParameterfvATI, NULL, 764), - NAME_FUNC_OFFSET(13219, glGetTexBumpParameterivATI, glGetTexBumpParameterivATI, NULL, 765), - NAME_FUNC_OFFSET(13246, glTexBumpParameterfvATI, glTexBumpParameterfvATI, NULL, 766), - NAME_FUNC_OFFSET(13270, glTexBumpParameterivATI, glTexBumpParameterivATI, NULL, 767), - NAME_FUNC_OFFSET(13294, glAlphaFragmentOp1ATI, glAlphaFragmentOp1ATI, NULL, 768), - NAME_FUNC_OFFSET(13316, glAlphaFragmentOp2ATI, glAlphaFragmentOp2ATI, NULL, 769), - NAME_FUNC_OFFSET(13338, glAlphaFragmentOp3ATI, glAlphaFragmentOp3ATI, NULL, 770), - NAME_FUNC_OFFSET(13360, glBeginFragmentShaderATI, glBeginFragmentShaderATI, NULL, 771), - NAME_FUNC_OFFSET(13385, glBindFragmentShaderATI, glBindFragmentShaderATI, NULL, 772), - NAME_FUNC_OFFSET(13409, glColorFragmentOp1ATI, glColorFragmentOp1ATI, NULL, 773), - NAME_FUNC_OFFSET(13431, glColorFragmentOp2ATI, glColorFragmentOp2ATI, NULL, 774), - NAME_FUNC_OFFSET(13453, glColorFragmentOp3ATI, glColorFragmentOp3ATI, NULL, 775), - NAME_FUNC_OFFSET(13475, glDeleteFragmentShaderATI, glDeleteFragmentShaderATI, NULL, 776), - NAME_FUNC_OFFSET(13501, glEndFragmentShaderATI, glEndFragmentShaderATI, NULL, 777), - NAME_FUNC_OFFSET(13524, glGenFragmentShadersATI, glGenFragmentShadersATI, NULL, 778), - NAME_FUNC_OFFSET(13548, glPassTexCoordATI, glPassTexCoordATI, NULL, 779), - NAME_FUNC_OFFSET(13566, glSampleMapATI, glSampleMapATI, NULL, 780), - NAME_FUNC_OFFSET(13581, glSetFragmentShaderConstantATI, glSetFragmentShaderConstantATI, NULL, 781), - NAME_FUNC_OFFSET(13612, glPointParameteriNV, glPointParameteriNV, NULL, 782), - NAME_FUNC_OFFSET(13632, glPointParameterivNV, glPointParameterivNV, NULL, 783), - NAME_FUNC_OFFSET(13653, gl_dispatch_stub_784, gl_dispatch_stub_784, NULL, 784), - NAME_FUNC_OFFSET(13676, gl_dispatch_stub_785, gl_dispatch_stub_785, NULL, 785), - NAME_FUNC_OFFSET(13699, gl_dispatch_stub_786, gl_dispatch_stub_786, NULL, 786), - NAME_FUNC_OFFSET(13725, gl_dispatch_stub_787, gl_dispatch_stub_787, NULL, 787), - NAME_FUNC_OFFSET(13748, gl_dispatch_stub_788, gl_dispatch_stub_788, NULL, 788), - NAME_FUNC_OFFSET(13769, glGetProgramNamedParameterdvNV, glGetProgramNamedParameterdvNV, NULL, 789), - NAME_FUNC_OFFSET(13800, glGetProgramNamedParameterfvNV, glGetProgramNamedParameterfvNV, NULL, 790), - NAME_FUNC_OFFSET(13831, glProgramNamedParameter4dNV, glProgramNamedParameter4dNV, NULL, 791), - NAME_FUNC_OFFSET(13859, glProgramNamedParameter4dvNV, glProgramNamedParameter4dvNV, NULL, 792), - NAME_FUNC_OFFSET(13888, glProgramNamedParameter4fNV, glProgramNamedParameter4fNV, NULL, 793), - NAME_FUNC_OFFSET(13916, glProgramNamedParameter4fvNV, glProgramNamedParameter4fvNV, NULL, 794), - NAME_FUNC_OFFSET(13945, glPrimitiveRestartIndexNV, glPrimitiveRestartIndexNV, NULL, 795), - NAME_FUNC_OFFSET(13971, glPrimitiveRestartNV, glPrimitiveRestartNV, NULL, 796), - NAME_FUNC_OFFSET(13992, gl_dispatch_stub_797, gl_dispatch_stub_797, NULL, 797), - NAME_FUNC_OFFSET(14009, gl_dispatch_stub_798, gl_dispatch_stub_798, NULL, 798), - NAME_FUNC_OFFSET(14036, glBindFramebufferEXT, glBindFramebufferEXT, NULL, 799), - NAME_FUNC_OFFSET(14057, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, 800), - NAME_FUNC_OFFSET(14079, glCheckFramebufferStatusEXT, glCheckFramebufferStatusEXT, NULL, 801), - NAME_FUNC_OFFSET(14107, glDeleteFramebuffersEXT, glDeleteFramebuffersEXT, NULL, 802), - NAME_FUNC_OFFSET(14131, glDeleteRenderbuffersEXT, glDeleteRenderbuffersEXT, NULL, 803), - NAME_FUNC_OFFSET(14156, glFramebufferRenderbufferEXT, glFramebufferRenderbufferEXT, NULL, 804), - NAME_FUNC_OFFSET(14185, glFramebufferTexture1DEXT, glFramebufferTexture1DEXT, NULL, 805), - NAME_FUNC_OFFSET(14211, glFramebufferTexture2DEXT, glFramebufferTexture2DEXT, NULL, 806), - NAME_FUNC_OFFSET(14237, glFramebufferTexture3DEXT, glFramebufferTexture3DEXT, NULL, 807), - NAME_FUNC_OFFSET(14263, glGenFramebuffersEXT, glGenFramebuffersEXT, NULL, 808), - NAME_FUNC_OFFSET(14284, glGenRenderbuffersEXT, glGenRenderbuffersEXT, NULL, 809), - NAME_FUNC_OFFSET(14306, glGenerateMipmapEXT, glGenerateMipmapEXT, NULL, 810), - NAME_FUNC_OFFSET(14326, glGetFramebufferAttachmentParameterivEXT, glGetFramebufferAttachmentParameterivEXT, NULL, 811), - NAME_FUNC_OFFSET(14367, glGetRenderbufferParameterivEXT, glGetRenderbufferParameterivEXT, NULL, 812), - NAME_FUNC_OFFSET(14399, glIsFramebufferEXT, glIsFramebufferEXT, NULL, 813), - NAME_FUNC_OFFSET(14418, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL, 814), - NAME_FUNC_OFFSET(14438, glRenderbufferStorageEXT, glRenderbufferStorageEXT, NULL, 815), - NAME_FUNC_OFFSET(14463, gl_dispatch_stub_816, gl_dispatch_stub_816, NULL, 816), - NAME_FUNC_OFFSET(14484, gl_dispatch_stub_817, gl_dispatch_stub_817, NULL, 817), - NAME_FUNC_OFFSET(14508, gl_dispatch_stub_818, gl_dispatch_stub_818, NULL, 818), - NAME_FUNC_OFFSET(14538, glBindFragDataLocationEXT, glBindFragDataLocationEXT, NULL, 819), - NAME_FUNC_OFFSET(14564, glGetFragDataLocationEXT, glGetFragDataLocationEXT, NULL, 820), - NAME_FUNC_OFFSET(14589, glGetUniformuivEXT, glGetUniformuivEXT, NULL, 821), - NAME_FUNC_OFFSET(14608, glGetVertexAttribIivEXT, glGetVertexAttribIivEXT, NULL, 822), - NAME_FUNC_OFFSET(14632, glGetVertexAttribIuivEXT, glGetVertexAttribIuivEXT, NULL, 823), - NAME_FUNC_OFFSET(14657, glUniform1uiEXT, glUniform1uiEXT, NULL, 824), - NAME_FUNC_OFFSET(14673, glUniform1uivEXT, glUniform1uivEXT, NULL, 825), - NAME_FUNC_OFFSET(14690, glUniform2uiEXT, glUniform2uiEXT, NULL, 826), - NAME_FUNC_OFFSET(14706, glUniform2uivEXT, glUniform2uivEXT, NULL, 827), - NAME_FUNC_OFFSET(14723, glUniform3uiEXT, glUniform3uiEXT, NULL, 828), - NAME_FUNC_OFFSET(14739, glUniform3uivEXT, glUniform3uivEXT, NULL, 829), - NAME_FUNC_OFFSET(14756, glUniform4uiEXT, glUniform4uiEXT, NULL, 830), - NAME_FUNC_OFFSET(14772, glUniform4uivEXT, glUniform4uivEXT, NULL, 831), - NAME_FUNC_OFFSET(14789, glVertexAttribI1iEXT, glVertexAttribI1iEXT, NULL, 832), - NAME_FUNC_OFFSET(14810, glVertexAttribI1ivEXT, glVertexAttribI1ivEXT, NULL, 833), - NAME_FUNC_OFFSET(14832, glVertexAttribI1uiEXT, glVertexAttribI1uiEXT, NULL, 834), - NAME_FUNC_OFFSET(14854, glVertexAttribI1uivEXT, glVertexAttribI1uivEXT, NULL, 835), - NAME_FUNC_OFFSET(14877, glVertexAttribI2iEXT, glVertexAttribI2iEXT, NULL, 836), - NAME_FUNC_OFFSET(14898, glVertexAttribI2ivEXT, glVertexAttribI2ivEXT, NULL, 837), - NAME_FUNC_OFFSET(14920, glVertexAttribI2uiEXT, glVertexAttribI2uiEXT, NULL, 838), - NAME_FUNC_OFFSET(14942, glVertexAttribI2uivEXT, glVertexAttribI2uivEXT, NULL, 839), - NAME_FUNC_OFFSET(14965, glVertexAttribI3iEXT, glVertexAttribI3iEXT, NULL, 840), - NAME_FUNC_OFFSET(14986, glVertexAttribI3ivEXT, glVertexAttribI3ivEXT, NULL, 841), - NAME_FUNC_OFFSET(15008, glVertexAttribI3uiEXT, glVertexAttribI3uiEXT, NULL, 842), - NAME_FUNC_OFFSET(15030, glVertexAttribI3uivEXT, glVertexAttribI3uivEXT, NULL, 843), - NAME_FUNC_OFFSET(15053, glVertexAttribI4bvEXT, glVertexAttribI4bvEXT, NULL, 844), - NAME_FUNC_OFFSET(15075, glVertexAttribI4iEXT, glVertexAttribI4iEXT, NULL, 845), - NAME_FUNC_OFFSET(15096, glVertexAttribI4ivEXT, glVertexAttribI4ivEXT, NULL, 846), - NAME_FUNC_OFFSET(15118, glVertexAttribI4svEXT, glVertexAttribI4svEXT, NULL, 847), - NAME_FUNC_OFFSET(15140, glVertexAttribI4ubvEXT, glVertexAttribI4ubvEXT, NULL, 848), - NAME_FUNC_OFFSET(15163, glVertexAttribI4uiEXT, glVertexAttribI4uiEXT, NULL, 849), - NAME_FUNC_OFFSET(15185, glVertexAttribI4uivEXT, glVertexAttribI4uivEXT, NULL, 850), - NAME_FUNC_OFFSET(15208, glVertexAttribI4usvEXT, glVertexAttribI4usvEXT, NULL, 851), - NAME_FUNC_OFFSET(15231, glVertexAttribIPointerEXT, glVertexAttribIPointerEXT, NULL, 852), - NAME_FUNC_OFFSET(15257, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, 853), - NAME_FUNC_OFFSET(15286, glColorMaskIndexedEXT, glColorMaskIndexedEXT, NULL, 854), - NAME_FUNC_OFFSET(15308, glDisableIndexedEXT, glDisableIndexedEXT, NULL, 855), - NAME_FUNC_OFFSET(15328, glEnableIndexedEXT, glEnableIndexedEXT, NULL, 856), - NAME_FUNC_OFFSET(15347, glGetBooleanIndexedvEXT, glGetBooleanIndexedvEXT, NULL, 857), - NAME_FUNC_OFFSET(15371, glGetIntegerIndexedvEXT, glGetIntegerIndexedvEXT, NULL, 858), - NAME_FUNC_OFFSET(15395, glIsEnabledIndexedEXT, glIsEnabledIndexedEXT, NULL, 859), - NAME_FUNC_OFFSET(15417, glClearColorIiEXT, glClearColorIiEXT, NULL, 860), - NAME_FUNC_OFFSET(15435, glClearColorIuiEXT, glClearColorIuiEXT, NULL, 861), - NAME_FUNC_OFFSET(15454, glGetTexParameterIivEXT, glGetTexParameterIivEXT, NULL, 862), - NAME_FUNC_OFFSET(15478, glGetTexParameterIuivEXT, glGetTexParameterIuivEXT, NULL, 863), - NAME_FUNC_OFFSET(15503, glTexParameterIivEXT, glTexParameterIivEXT, NULL, 864), - NAME_FUNC_OFFSET(15524, glTexParameterIuivEXT, glTexParameterIuivEXT, NULL, 865), - NAME_FUNC_OFFSET(15546, glBeginConditionalRenderNV, glBeginConditionalRenderNV, NULL, 866), - NAME_FUNC_OFFSET(15573, glEndConditionalRenderNV, glEndConditionalRenderNV, NULL, 867), - NAME_FUNC_OFFSET(15598, glBeginTransformFeedbackEXT, glBeginTransformFeedbackEXT, NULL, 868), - NAME_FUNC_OFFSET(15626, glBindBufferBaseEXT, glBindBufferBaseEXT, NULL, 869), - NAME_FUNC_OFFSET(15646, glBindBufferOffsetEXT, glBindBufferOffsetEXT, NULL, 870), - NAME_FUNC_OFFSET(15668, glBindBufferRangeEXT, glBindBufferRangeEXT, NULL, 871), - NAME_FUNC_OFFSET(15689, glEndTransformFeedbackEXT, glEndTransformFeedbackEXT, NULL, 872), - NAME_FUNC_OFFSET(15715, glGetTransformFeedbackVaryingEXT, glGetTransformFeedbackVaryingEXT, NULL, 873), - NAME_FUNC_OFFSET(15748, glTransformFeedbackVaryingsEXT, glTransformFeedbackVaryingsEXT, NULL, 874), - NAME_FUNC_OFFSET(15779, glProvokingVertexEXT, glProvokingVertexEXT, NULL, 875), - NAME_FUNC_OFFSET(15800, gl_dispatch_stub_876, gl_dispatch_stub_876, NULL, 876), - NAME_FUNC_OFFSET(15831, gl_dispatch_stub_877, gl_dispatch_stub_877, NULL, 877), - NAME_FUNC_OFFSET(15851, glGetObjectParameterivAPPLE, glGetObjectParameterivAPPLE, NULL, 878), - NAME_FUNC_OFFSET(15879, glObjectPurgeableAPPLE, glObjectPurgeableAPPLE, NULL, 879), - NAME_FUNC_OFFSET(15902, glObjectUnpurgeableAPPLE, glObjectUnpurgeableAPPLE, NULL, 880), - NAME_FUNC_OFFSET(15927, glActiveProgramEXT, glActiveProgramEXT, NULL, 881), - NAME_FUNC_OFFSET(15946, glCreateShaderProgramEXT, glCreateShaderProgramEXT, NULL, 882), - NAME_FUNC_OFFSET(15971, glUseShaderProgramEXT, glUseShaderProgramEXT, NULL, 883), - NAME_FUNC_OFFSET(15993, glTextureBarrierNV, glTextureBarrierNV, NULL, 884), - NAME_FUNC_OFFSET(16012, gl_dispatch_stub_885, gl_dispatch_stub_885, NULL, 885), - NAME_FUNC_OFFSET(16037, gl_dispatch_stub_886, gl_dispatch_stub_886, NULL, 886), - NAME_FUNC_OFFSET(16066, gl_dispatch_stub_887, gl_dispatch_stub_887, NULL, 887), - NAME_FUNC_OFFSET(16097, gl_dispatch_stub_888, gl_dispatch_stub_888, NULL, 888), - NAME_FUNC_OFFSET(16121, gl_dispatch_stub_889, gl_dispatch_stub_889, NULL, 889), - NAME_FUNC_OFFSET(16146, glEGLImageTargetRenderbufferStorageOES, glEGLImageTargetRenderbufferStorageOES, NULL, 890), - NAME_FUNC_OFFSET(16185, glEGLImageTargetTexture2DOES, glEGLImageTargetTexture2DOES, NULL, 891), - NAME_FUNC_OFFSET(16214, glArrayElement, glArrayElement, NULL, 306), - NAME_FUNC_OFFSET(16232, glBindTexture, glBindTexture, NULL, 307), - NAME_FUNC_OFFSET(16249, glDrawArrays, glDrawArrays, NULL, 310), - NAME_FUNC_OFFSET(16265, glAreTexturesResident, glAreTexturesResidentEXT, glAreTexturesResidentEXT, 322), - NAME_FUNC_OFFSET(16290, glCopyTexImage1D, glCopyTexImage1D, NULL, 323), - NAME_FUNC_OFFSET(16310, glCopyTexImage2D, glCopyTexImage2D, NULL, 324), - NAME_FUNC_OFFSET(16330, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, 325), - NAME_FUNC_OFFSET(16353, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, 326), - NAME_FUNC_OFFSET(16376, glDeleteTextures, glDeleteTexturesEXT, glDeleteTexturesEXT, 327), - NAME_FUNC_OFFSET(16396, glGenTextures, glGenTexturesEXT, glGenTexturesEXT, 328), - NAME_FUNC_OFFSET(16413, glGetPointerv, glGetPointerv, NULL, 329), - NAME_FUNC_OFFSET(16430, glIsTexture, glIsTextureEXT, glIsTextureEXT, 330), - NAME_FUNC_OFFSET(16445, glPrioritizeTextures, glPrioritizeTextures, NULL, 331), - NAME_FUNC_OFFSET(16469, glTexSubImage1D, glTexSubImage1D, NULL, 332), - NAME_FUNC_OFFSET(16488, glTexSubImage2D, glTexSubImage2D, NULL, 333), - NAME_FUNC_OFFSET(16507, glBlendColor, glBlendColor, NULL, 336), - NAME_FUNC_OFFSET(16523, glBlendEquation, glBlendEquation, NULL, 337), - NAME_FUNC_OFFSET(16542, glDrawRangeElements, glDrawRangeElements, NULL, 338), - NAME_FUNC_OFFSET(16565, glColorTable, glColorTable, NULL, 339), - NAME_FUNC_OFFSET(16581, glColorTable, glColorTable, NULL, 339), - NAME_FUNC_OFFSET(16597, glColorTableParameterfv, glColorTableParameterfv, NULL, 340), - NAME_FUNC_OFFSET(16624, glColorTableParameteriv, glColorTableParameteriv, NULL, 341), - NAME_FUNC_OFFSET(16651, glCopyColorTable, glCopyColorTable, NULL, 342), - NAME_FUNC_OFFSET(16671, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, 343), - NAME_FUNC_OFFSET(16690, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, 343), - NAME_FUNC_OFFSET(16709, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, 344), - NAME_FUNC_OFFSET(16739, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, 344), - NAME_FUNC_OFFSET(16769, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, 345), - NAME_FUNC_OFFSET(16799, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, 345), - NAME_FUNC_OFFSET(16829, glColorSubTable, glColorSubTable, NULL, 346), - NAME_FUNC_OFFSET(16848, glCopyColorSubTable, glCopyColorSubTable, NULL, 347), - NAME_FUNC_OFFSET(16871, glConvolutionFilter1D, glConvolutionFilter1D, NULL, 348), - NAME_FUNC_OFFSET(16896, glConvolutionFilter2D, glConvolutionFilter2D, NULL, 349), - NAME_FUNC_OFFSET(16921, glConvolutionParameterf, glConvolutionParameterf, NULL, 350), - NAME_FUNC_OFFSET(16948, glConvolutionParameterfv, glConvolutionParameterfv, NULL, 351), - NAME_FUNC_OFFSET(16976, glConvolutionParameteri, glConvolutionParameteri, NULL, 352), - NAME_FUNC_OFFSET(17003, glConvolutionParameteriv, glConvolutionParameteriv, NULL, 353), - NAME_FUNC_OFFSET(17031, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D, NULL, 354), - NAME_FUNC_OFFSET(17060, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D, NULL, 355), - NAME_FUNC_OFFSET(17089, glGetConvolutionFilter, gl_dispatch_stub_356, gl_dispatch_stub_356, 356), - NAME_FUNC_OFFSET(17115, glGetConvolutionParameterfv, gl_dispatch_stub_357, gl_dispatch_stub_357, 357), - NAME_FUNC_OFFSET(17146, glGetConvolutionParameteriv, gl_dispatch_stub_358, gl_dispatch_stub_358, 358), - NAME_FUNC_OFFSET(17177, glGetSeparableFilter, gl_dispatch_stub_359, gl_dispatch_stub_359, 359), - NAME_FUNC_OFFSET(17201, glSeparableFilter2D, glSeparableFilter2D, NULL, 360), - NAME_FUNC_OFFSET(17224, glGetHistogram, gl_dispatch_stub_361, gl_dispatch_stub_361, 361), - NAME_FUNC_OFFSET(17242, glGetHistogramParameterfv, gl_dispatch_stub_362, gl_dispatch_stub_362, 362), - NAME_FUNC_OFFSET(17271, glGetHistogramParameteriv, gl_dispatch_stub_363, gl_dispatch_stub_363, 363), - NAME_FUNC_OFFSET(17300, glGetMinmax, gl_dispatch_stub_364, gl_dispatch_stub_364, 364), - NAME_FUNC_OFFSET(17315, glGetMinmaxParameterfv, gl_dispatch_stub_365, gl_dispatch_stub_365, 365), - NAME_FUNC_OFFSET(17341, glGetMinmaxParameteriv, gl_dispatch_stub_366, gl_dispatch_stub_366, 366), - NAME_FUNC_OFFSET(17367, glHistogram, glHistogram, NULL, 367), - NAME_FUNC_OFFSET(17382, glMinmax, glMinmax, NULL, 368), - NAME_FUNC_OFFSET(17394, glResetHistogram, glResetHistogram, NULL, 369), - NAME_FUNC_OFFSET(17414, glResetMinmax, glResetMinmax, NULL, 370), - NAME_FUNC_OFFSET(17431, glTexImage3D, glTexImage3D, NULL, 371), - NAME_FUNC_OFFSET(17447, glTexSubImage3D, glTexSubImage3D, NULL, 372), - NAME_FUNC_OFFSET(17466, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, 373), - NAME_FUNC_OFFSET(17489, glActiveTextureARB, glActiveTextureARB, NULL, 374), - NAME_FUNC_OFFSET(17505, glClientActiveTextureARB, glClientActiveTextureARB, NULL, 375), - NAME_FUNC_OFFSET(17527, glMultiTexCoord1dARB, glMultiTexCoord1dARB, NULL, 376), - NAME_FUNC_OFFSET(17545, glMultiTexCoord1dvARB, glMultiTexCoord1dvARB, NULL, 377), - NAME_FUNC_OFFSET(17564, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL, 378), - NAME_FUNC_OFFSET(17582, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL, 379), - NAME_FUNC_OFFSET(17601, glMultiTexCoord1iARB, glMultiTexCoord1iARB, NULL, 380), - NAME_FUNC_OFFSET(17619, glMultiTexCoord1ivARB, glMultiTexCoord1ivARB, NULL, 381), - NAME_FUNC_OFFSET(17638, glMultiTexCoord1sARB, glMultiTexCoord1sARB, NULL, 382), - NAME_FUNC_OFFSET(17656, glMultiTexCoord1svARB, glMultiTexCoord1svARB, NULL, 383), - NAME_FUNC_OFFSET(17675, glMultiTexCoord2dARB, glMultiTexCoord2dARB, NULL, 384), - NAME_FUNC_OFFSET(17693, glMultiTexCoord2dvARB, glMultiTexCoord2dvARB, NULL, 385), - NAME_FUNC_OFFSET(17712, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL, 386), - NAME_FUNC_OFFSET(17730, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL, 387), - NAME_FUNC_OFFSET(17749, glMultiTexCoord2iARB, glMultiTexCoord2iARB, NULL, 388), - NAME_FUNC_OFFSET(17767, glMultiTexCoord2ivARB, glMultiTexCoord2ivARB, NULL, 389), - NAME_FUNC_OFFSET(17786, glMultiTexCoord2sARB, glMultiTexCoord2sARB, NULL, 390), - NAME_FUNC_OFFSET(17804, glMultiTexCoord2svARB, glMultiTexCoord2svARB, NULL, 391), - NAME_FUNC_OFFSET(17823, glMultiTexCoord3dARB, glMultiTexCoord3dARB, NULL, 392), - NAME_FUNC_OFFSET(17841, glMultiTexCoord3dvARB, glMultiTexCoord3dvARB, NULL, 393), - NAME_FUNC_OFFSET(17860, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL, 394), - NAME_FUNC_OFFSET(17878, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL, 395), - NAME_FUNC_OFFSET(17897, glMultiTexCoord3iARB, glMultiTexCoord3iARB, NULL, 396), - NAME_FUNC_OFFSET(17915, glMultiTexCoord3ivARB, glMultiTexCoord3ivARB, NULL, 397), - NAME_FUNC_OFFSET(17934, glMultiTexCoord3sARB, glMultiTexCoord3sARB, NULL, 398), - NAME_FUNC_OFFSET(17952, glMultiTexCoord3svARB, glMultiTexCoord3svARB, NULL, 399), - NAME_FUNC_OFFSET(17971, glMultiTexCoord4dARB, glMultiTexCoord4dARB, NULL, 400), - NAME_FUNC_OFFSET(17989, glMultiTexCoord4dvARB, glMultiTexCoord4dvARB, NULL, 401), - NAME_FUNC_OFFSET(18008, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL, 402), - NAME_FUNC_OFFSET(18026, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL, 403), - NAME_FUNC_OFFSET(18045, glMultiTexCoord4iARB, glMultiTexCoord4iARB, NULL, 404), - NAME_FUNC_OFFSET(18063, glMultiTexCoord4ivARB, glMultiTexCoord4ivARB, NULL, 405), - NAME_FUNC_OFFSET(18082, glMultiTexCoord4sARB, glMultiTexCoord4sARB, NULL, 406), - NAME_FUNC_OFFSET(18100, glMultiTexCoord4svARB, glMultiTexCoord4svARB, NULL, 407), - NAME_FUNC_OFFSET(18119, glStencilOpSeparate, glStencilOpSeparate, NULL, 423), - NAME_FUNC_OFFSET(18142, glLoadTransposeMatrixdARB, glLoadTransposeMatrixdARB, NULL, 441), - NAME_FUNC_OFFSET(18165, glLoadTransposeMatrixfARB, glLoadTransposeMatrixfARB, NULL, 442), - NAME_FUNC_OFFSET(18188, glMultTransposeMatrixdARB, glMultTransposeMatrixdARB, NULL, 443), - NAME_FUNC_OFFSET(18211, glMultTransposeMatrixfARB, glMultTransposeMatrixfARB, NULL, 444), - NAME_FUNC_OFFSET(18234, glSampleCoverageARB, glSampleCoverageARB, NULL, 445), - NAME_FUNC_OFFSET(18251, glCompressedTexImage1DARB, glCompressedTexImage1DARB, NULL, 446), - NAME_FUNC_OFFSET(18274, glCompressedTexImage2DARB, glCompressedTexImage2DARB, NULL, 447), - NAME_FUNC_OFFSET(18297, glCompressedTexImage3DARB, glCompressedTexImage3DARB, NULL, 448), - NAME_FUNC_OFFSET(18320, glCompressedTexSubImage1DARB, glCompressedTexSubImage1DARB, NULL, 449), - NAME_FUNC_OFFSET(18346, glCompressedTexSubImage2DARB, glCompressedTexSubImage2DARB, NULL, 450), - NAME_FUNC_OFFSET(18372, glCompressedTexSubImage3DARB, glCompressedTexSubImage3DARB, NULL, 451), - NAME_FUNC_OFFSET(18398, glGetCompressedTexImageARB, glGetCompressedTexImageARB, NULL, 452), - NAME_FUNC_OFFSET(18422, glDisableVertexAttribArrayARB, glDisableVertexAttribArrayARB, NULL, 453), - NAME_FUNC_OFFSET(18449, glEnableVertexAttribArrayARB, glEnableVertexAttribArrayARB, NULL, 454), - NAME_FUNC_OFFSET(18475, glGetVertexAttribdvARB, glGetVertexAttribdvARB, NULL, 461), - NAME_FUNC_OFFSET(18495, glGetVertexAttribfvARB, glGetVertexAttribfvARB, NULL, 462), - NAME_FUNC_OFFSET(18515, glGetVertexAttribivARB, glGetVertexAttribivARB, NULL, 463), - NAME_FUNC_OFFSET(18535, glProgramEnvParameter4dARB, glProgramEnvParameter4dARB, NULL, 464), - NAME_FUNC_OFFSET(18558, glProgramEnvParameter4dvARB, glProgramEnvParameter4dvARB, NULL, 465), - NAME_FUNC_OFFSET(18582, glProgramEnvParameter4fARB, glProgramEnvParameter4fARB, NULL, 466), - NAME_FUNC_OFFSET(18605, glProgramEnvParameter4fvARB, glProgramEnvParameter4fvARB, NULL, 467), - NAME_FUNC_OFFSET(18629, glVertexAttrib1dARB, glVertexAttrib1dARB, NULL, 473), - NAME_FUNC_OFFSET(18646, glVertexAttrib1dvARB, glVertexAttrib1dvARB, NULL, 474), - NAME_FUNC_OFFSET(18664, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, 475), - NAME_FUNC_OFFSET(18681, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL, 476), - NAME_FUNC_OFFSET(18699, glVertexAttrib1sARB, glVertexAttrib1sARB, NULL, 477), - NAME_FUNC_OFFSET(18716, glVertexAttrib1svARB, glVertexAttrib1svARB, NULL, 478), - NAME_FUNC_OFFSET(18734, glVertexAttrib2dARB, glVertexAttrib2dARB, NULL, 479), - NAME_FUNC_OFFSET(18751, glVertexAttrib2dvARB, glVertexAttrib2dvARB, NULL, 480), - NAME_FUNC_OFFSET(18769, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, 481), - NAME_FUNC_OFFSET(18786, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL, 482), - NAME_FUNC_OFFSET(18804, glVertexAttrib2sARB, glVertexAttrib2sARB, NULL, 483), - NAME_FUNC_OFFSET(18821, glVertexAttrib2svARB, glVertexAttrib2svARB, NULL, 484), - NAME_FUNC_OFFSET(18839, glVertexAttrib3dARB, glVertexAttrib3dARB, NULL, 485), - NAME_FUNC_OFFSET(18856, glVertexAttrib3dvARB, glVertexAttrib3dvARB, NULL, 486), - NAME_FUNC_OFFSET(18874, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, 487), - NAME_FUNC_OFFSET(18891, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL, 488), - NAME_FUNC_OFFSET(18909, glVertexAttrib3sARB, glVertexAttrib3sARB, NULL, 489), - NAME_FUNC_OFFSET(18926, glVertexAttrib3svARB, glVertexAttrib3svARB, NULL, 490), - NAME_FUNC_OFFSET(18944, glVertexAttrib4NbvARB, glVertexAttrib4NbvARB, NULL, 491), - NAME_FUNC_OFFSET(18963, glVertexAttrib4NivARB, glVertexAttrib4NivARB, NULL, 492), - NAME_FUNC_OFFSET(18982, glVertexAttrib4NsvARB, glVertexAttrib4NsvARB, NULL, 493), - NAME_FUNC_OFFSET(19001, glVertexAttrib4NubARB, glVertexAttrib4NubARB, NULL, 494), - NAME_FUNC_OFFSET(19020, glVertexAttrib4NubvARB, glVertexAttrib4NubvARB, NULL, 495), - NAME_FUNC_OFFSET(19040, glVertexAttrib4NuivARB, glVertexAttrib4NuivARB, NULL, 496), - NAME_FUNC_OFFSET(19060, glVertexAttrib4NusvARB, glVertexAttrib4NusvARB, NULL, 497), - NAME_FUNC_OFFSET(19080, glVertexAttrib4bvARB, glVertexAttrib4bvARB, NULL, 498), - NAME_FUNC_OFFSET(19098, glVertexAttrib4dARB, glVertexAttrib4dARB, NULL, 499), - NAME_FUNC_OFFSET(19115, glVertexAttrib4dvARB, glVertexAttrib4dvARB, NULL, 500), - NAME_FUNC_OFFSET(19133, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, 501), - NAME_FUNC_OFFSET(19150, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL, 502), - NAME_FUNC_OFFSET(19168, glVertexAttrib4ivARB, glVertexAttrib4ivARB, NULL, 503), - NAME_FUNC_OFFSET(19186, glVertexAttrib4sARB, glVertexAttrib4sARB, NULL, 504), - NAME_FUNC_OFFSET(19203, glVertexAttrib4svARB, glVertexAttrib4svARB, NULL, 505), - NAME_FUNC_OFFSET(19221, glVertexAttrib4ubvARB, glVertexAttrib4ubvARB, NULL, 506), - NAME_FUNC_OFFSET(19240, glVertexAttrib4uivARB, glVertexAttrib4uivARB, NULL, 507), - NAME_FUNC_OFFSET(19259, glVertexAttrib4usvARB, glVertexAttrib4usvARB, NULL, 508), - NAME_FUNC_OFFSET(19278, glVertexAttribPointerARB, glVertexAttribPointerARB, NULL, 509), - NAME_FUNC_OFFSET(19300, glBindBufferARB, glBindBufferARB, NULL, 510), - NAME_FUNC_OFFSET(19313, glBufferDataARB, glBufferDataARB, NULL, 511), - NAME_FUNC_OFFSET(19326, glBufferSubDataARB, glBufferSubDataARB, NULL, 512), - NAME_FUNC_OFFSET(19342, glDeleteBuffersARB, glDeleteBuffersARB, NULL, 513), - NAME_FUNC_OFFSET(19358, glGenBuffersARB, glGenBuffersARB, NULL, 514), - NAME_FUNC_OFFSET(19371, glGetBufferParameterivARB, glGetBufferParameterivARB, NULL, 515), - NAME_FUNC_OFFSET(19394, glGetBufferPointervARB, glGetBufferPointervARB, NULL, 516), - NAME_FUNC_OFFSET(19414, glGetBufferSubDataARB, glGetBufferSubDataARB, NULL, 517), - NAME_FUNC_OFFSET(19433, glIsBufferARB, glIsBufferARB, NULL, 518), - NAME_FUNC_OFFSET(19444, glMapBufferARB, glMapBufferARB, NULL, 519), - NAME_FUNC_OFFSET(19456, glUnmapBufferARB, glUnmapBufferARB, NULL, 520), - NAME_FUNC_OFFSET(19470, glBeginQueryARB, glBeginQueryARB, NULL, 521), - NAME_FUNC_OFFSET(19483, glDeleteQueriesARB, glDeleteQueriesARB, NULL, 522), - NAME_FUNC_OFFSET(19499, glEndQueryARB, glEndQueryARB, NULL, 523), - NAME_FUNC_OFFSET(19510, glGenQueriesARB, glGenQueriesARB, NULL, 524), - NAME_FUNC_OFFSET(19523, glGetQueryObjectivARB, glGetQueryObjectivARB, NULL, 525), - NAME_FUNC_OFFSET(19542, glGetQueryObjectuivARB, glGetQueryObjectuivARB, NULL, 526), - NAME_FUNC_OFFSET(19562, glGetQueryivARB, glGetQueryivARB, NULL, 527), - NAME_FUNC_OFFSET(19575, glIsQueryARB, glIsQueryARB, NULL, 528), - NAME_FUNC_OFFSET(19585, glCompileShaderARB, glCompileShaderARB, NULL, 530), - NAME_FUNC_OFFSET(19601, glGetActiveUniformARB, glGetActiveUniformARB, NULL, 535), - NAME_FUNC_OFFSET(19620, glGetShaderSourceARB, glGetShaderSourceARB, NULL, 541), - NAME_FUNC_OFFSET(19638, glGetUniformLocationARB, glGetUniformLocationARB, NULL, 542), - NAME_FUNC_OFFSET(19659, glGetUniformfvARB, glGetUniformfvARB, NULL, 543), - NAME_FUNC_OFFSET(19674, glGetUniformivARB, glGetUniformivARB, NULL, 544), - NAME_FUNC_OFFSET(19689, glLinkProgramARB, glLinkProgramARB, NULL, 545), - NAME_FUNC_OFFSET(19703, glShaderSourceARB, glShaderSourceARB, NULL, 546), - NAME_FUNC_OFFSET(19718, glUniform1fARB, glUniform1fARB, NULL, 547), - NAME_FUNC_OFFSET(19730, glUniform1fvARB, glUniform1fvARB, NULL, 548), - NAME_FUNC_OFFSET(19743, glUniform1iARB, glUniform1iARB, NULL, 549), - NAME_FUNC_OFFSET(19755, glUniform1ivARB, glUniform1ivARB, NULL, 550), - NAME_FUNC_OFFSET(19768, glUniform2fARB, glUniform2fARB, NULL, 551), - NAME_FUNC_OFFSET(19780, glUniform2fvARB, glUniform2fvARB, NULL, 552), - NAME_FUNC_OFFSET(19793, glUniform2iARB, glUniform2iARB, NULL, 553), - NAME_FUNC_OFFSET(19805, glUniform2ivARB, glUniform2ivARB, NULL, 554), - NAME_FUNC_OFFSET(19818, glUniform3fARB, glUniform3fARB, NULL, 555), - NAME_FUNC_OFFSET(19830, glUniform3fvARB, glUniform3fvARB, NULL, 556), - NAME_FUNC_OFFSET(19843, glUniform3iARB, glUniform3iARB, NULL, 557), - NAME_FUNC_OFFSET(19855, glUniform3ivARB, glUniform3ivARB, NULL, 558), - NAME_FUNC_OFFSET(19868, glUniform4fARB, glUniform4fARB, NULL, 559), - NAME_FUNC_OFFSET(19880, glUniform4fvARB, glUniform4fvARB, NULL, 560), - NAME_FUNC_OFFSET(19893, glUniform4iARB, glUniform4iARB, NULL, 561), - NAME_FUNC_OFFSET(19905, glUniform4ivARB, glUniform4ivARB, NULL, 562), - NAME_FUNC_OFFSET(19918, glUniformMatrix2fvARB, glUniformMatrix2fvARB, NULL, 563), - NAME_FUNC_OFFSET(19937, glUniformMatrix3fvARB, glUniformMatrix3fvARB, NULL, 564), - NAME_FUNC_OFFSET(19956, glUniformMatrix4fvARB, glUniformMatrix4fvARB, NULL, 565), - NAME_FUNC_OFFSET(19975, glUseProgramObjectARB, glUseProgramObjectARB, NULL, 566), - NAME_FUNC_OFFSET(19988, glValidateProgramARB, glValidateProgramARB, NULL, 567), - NAME_FUNC_OFFSET(20006, glBindAttribLocationARB, glBindAttribLocationARB, NULL, 568), - NAME_FUNC_OFFSET(20027, glGetActiveAttribARB, glGetActiveAttribARB, NULL, 569), - NAME_FUNC_OFFSET(20045, glGetAttribLocationARB, glGetAttribLocationARB, NULL, 570), - NAME_FUNC_OFFSET(20065, glDrawBuffersARB, glDrawBuffersARB, NULL, 571), - NAME_FUNC_OFFSET(20079, glDrawBuffersARB, glDrawBuffersARB, NULL, 571), - NAME_FUNC_OFFSET(20096, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 572), - NAME_FUNC_OFFSET(20121, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 572), - NAME_FUNC_OFFSET(20143, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 573), - NAME_FUNC_OFFSET(20170, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 573), - NAME_FUNC_OFFSET(20194, glRenderbufferStorageMultisample, glRenderbufferStorageMultisample, NULL, 574), - NAME_FUNC_OFFSET(20230, gl_dispatch_stub_617, gl_dispatch_stub_617, NULL, 617), - NAME_FUNC_OFFSET(20246, gl_dispatch_stub_618, gl_dispatch_stub_618, NULL, 618), - NAME_FUNC_OFFSET(20265, glPointParameterfEXT, glPointParameterfEXT, NULL, 625), - NAME_FUNC_OFFSET(20283, glPointParameterfEXT, glPointParameterfEXT, NULL, 625), - NAME_FUNC_OFFSET(20304, glPointParameterfEXT, glPointParameterfEXT, NULL, 625), - NAME_FUNC_OFFSET(20326, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 626), - NAME_FUNC_OFFSET(20345, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 626), - NAME_FUNC_OFFSET(20367, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 626), - NAME_FUNC_OFFSET(20390, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, 629), - NAME_FUNC_OFFSET(20409, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, 630), - NAME_FUNC_OFFSET(20429, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, 631), - NAME_FUNC_OFFSET(20448, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, 632), - NAME_FUNC_OFFSET(20468, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, 633), - NAME_FUNC_OFFSET(20487, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, 634), - NAME_FUNC_OFFSET(20507, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, 635), - NAME_FUNC_OFFSET(20526, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, 636), - NAME_FUNC_OFFSET(20546, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, 637), - NAME_FUNC_OFFSET(20565, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, 638), - NAME_FUNC_OFFSET(20585, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, 639), - NAME_FUNC_OFFSET(20605, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, 640), - NAME_FUNC_OFFSET(20626, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, 641), - NAME_FUNC_OFFSET(20646, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, 642), - NAME_FUNC_OFFSET(20667, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, 643), - NAME_FUNC_OFFSET(20687, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, 644), - NAME_FUNC_OFFSET(20708, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, 645), - NAME_FUNC_OFFSET(20732, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, 646), - NAME_FUNC_OFFSET(20750, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, 647), - NAME_FUNC_OFFSET(20770, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, 648), - NAME_FUNC_OFFSET(20788, glFogCoorddEXT, glFogCoorddEXT, NULL, 649), - NAME_FUNC_OFFSET(20800, glFogCoorddvEXT, glFogCoorddvEXT, NULL, 650), - NAME_FUNC_OFFSET(20813, glFogCoordfEXT, glFogCoordfEXT, NULL, 651), - NAME_FUNC_OFFSET(20825, glFogCoordfvEXT, glFogCoordfvEXT, NULL, 652), - NAME_FUNC_OFFSET(20838, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, 654), - NAME_FUNC_OFFSET(20858, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, 654), - NAME_FUNC_OFFSET(20882, glWindowPos2dMESA, glWindowPos2dMESA, NULL, 671), - NAME_FUNC_OFFSET(20896, glWindowPos2dMESA, glWindowPos2dMESA, NULL, 671), - NAME_FUNC_OFFSET(20913, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, 672), - NAME_FUNC_OFFSET(20928, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, 672), - NAME_FUNC_OFFSET(20946, glWindowPos2fMESA, glWindowPos2fMESA, NULL, 673), - NAME_FUNC_OFFSET(20960, glWindowPos2fMESA, glWindowPos2fMESA, NULL, 673), - NAME_FUNC_OFFSET(20977, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, 674), - NAME_FUNC_OFFSET(20992, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, 674), - NAME_FUNC_OFFSET(21010, glWindowPos2iMESA, glWindowPos2iMESA, NULL, 675), - NAME_FUNC_OFFSET(21024, glWindowPos2iMESA, glWindowPos2iMESA, NULL, 675), - NAME_FUNC_OFFSET(21041, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, 676), - NAME_FUNC_OFFSET(21056, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, 676), - NAME_FUNC_OFFSET(21074, glWindowPos2sMESA, glWindowPos2sMESA, NULL, 677), - NAME_FUNC_OFFSET(21088, glWindowPos2sMESA, glWindowPos2sMESA, NULL, 677), - NAME_FUNC_OFFSET(21105, glWindowPos2svMESA, glWindowPos2svMESA, NULL, 678), - NAME_FUNC_OFFSET(21120, glWindowPos2svMESA, glWindowPos2svMESA, NULL, 678), - NAME_FUNC_OFFSET(21138, glWindowPos3dMESA, glWindowPos3dMESA, NULL, 679), - NAME_FUNC_OFFSET(21152, glWindowPos3dMESA, glWindowPos3dMESA, NULL, 679), - NAME_FUNC_OFFSET(21169, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, 680), - NAME_FUNC_OFFSET(21184, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, 680), - NAME_FUNC_OFFSET(21202, glWindowPos3fMESA, glWindowPos3fMESA, NULL, 681), - NAME_FUNC_OFFSET(21216, glWindowPos3fMESA, glWindowPos3fMESA, NULL, 681), - NAME_FUNC_OFFSET(21233, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, 682), - NAME_FUNC_OFFSET(21248, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, 682), - NAME_FUNC_OFFSET(21266, glWindowPos3iMESA, glWindowPos3iMESA, NULL, 683), - NAME_FUNC_OFFSET(21280, glWindowPos3iMESA, glWindowPos3iMESA, NULL, 683), - NAME_FUNC_OFFSET(21297, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, 684), - NAME_FUNC_OFFSET(21312, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, 684), - NAME_FUNC_OFFSET(21330, glWindowPos3sMESA, glWindowPos3sMESA, NULL, 685), - NAME_FUNC_OFFSET(21344, glWindowPos3sMESA, glWindowPos3sMESA, NULL, 685), - NAME_FUNC_OFFSET(21361, glWindowPos3svMESA, glWindowPos3svMESA, NULL, 686), - NAME_FUNC_OFFSET(21376, glWindowPos3svMESA, glWindowPos3svMESA, NULL, 686), - NAME_FUNC_OFFSET(21394, glBindProgramNV, glBindProgramNV, NULL, 705), - NAME_FUNC_OFFSET(21411, glDeleteProgramsNV, glDeleteProgramsNV, NULL, 706), - NAME_FUNC_OFFSET(21431, glGenProgramsNV, glGenProgramsNV, NULL, 708), - NAME_FUNC_OFFSET(21448, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, 714), - NAME_FUNC_OFFSET(21474, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, 714), - NAME_FUNC_OFFSET(21503, glIsProgramNV, glIsProgramNV, NULL, 718), - NAME_FUNC_OFFSET(21518, glPointParameteriNV, glPointParameteriNV, NULL, 782), - NAME_FUNC_OFFSET(21536, glPointParameterivNV, glPointParameterivNV, NULL, 783), - NAME_FUNC_OFFSET(21555, gl_dispatch_stub_786, gl_dispatch_stub_786, NULL, 786), - NAME_FUNC_OFFSET(21576, gl_dispatch_stub_788, gl_dispatch_stub_788, NULL, 788), - NAME_FUNC_OFFSET(21592, glPrimitiveRestartIndexNV, glPrimitiveRestartIndexNV, NULL, 795), - NAME_FUNC_OFFSET(21616, gl_dispatch_stub_798, gl_dispatch_stub_798, NULL, 798), - NAME_FUNC_OFFSET(21640, gl_dispatch_stub_798, gl_dispatch_stub_798, NULL, 798), - NAME_FUNC_OFFSET(21667, glBindFramebufferEXT, glBindFramebufferEXT, NULL, 799), - NAME_FUNC_OFFSET(21685, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, 800), - NAME_FUNC_OFFSET(21704, glCheckFramebufferStatusEXT, glCheckFramebufferStatusEXT, NULL, 801), - NAME_FUNC_OFFSET(21729, glDeleteFramebuffersEXT, glDeleteFramebuffersEXT, NULL, 802), - NAME_FUNC_OFFSET(21750, glDeleteRenderbuffersEXT, glDeleteRenderbuffersEXT, NULL, 803), - NAME_FUNC_OFFSET(21772, glFramebufferRenderbufferEXT, glFramebufferRenderbufferEXT, NULL, 804), - NAME_FUNC_OFFSET(21798, glFramebufferTexture1DEXT, glFramebufferTexture1DEXT, NULL, 805), - NAME_FUNC_OFFSET(21821, glFramebufferTexture2DEXT, glFramebufferTexture2DEXT, NULL, 806), - NAME_FUNC_OFFSET(21844, glFramebufferTexture3DEXT, glFramebufferTexture3DEXT, NULL, 807), - NAME_FUNC_OFFSET(21867, glGenFramebuffersEXT, glGenFramebuffersEXT, NULL, 808), - NAME_FUNC_OFFSET(21885, glGenRenderbuffersEXT, glGenRenderbuffersEXT, NULL, 809), - NAME_FUNC_OFFSET(21904, glGenerateMipmapEXT, glGenerateMipmapEXT, NULL, 810), - NAME_FUNC_OFFSET(21921, glGetFramebufferAttachmentParameterivEXT, glGetFramebufferAttachmentParameterivEXT, NULL, 811), - NAME_FUNC_OFFSET(21959, glGetRenderbufferParameterivEXT, glGetRenderbufferParameterivEXT, NULL, 812), - NAME_FUNC_OFFSET(21988, glIsFramebufferEXT, glIsFramebufferEXT, NULL, 813), - NAME_FUNC_OFFSET(22004, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL, 814), - NAME_FUNC_OFFSET(22021, glRenderbufferStorageEXT, glRenderbufferStorageEXT, NULL, 815), - NAME_FUNC_OFFSET(22043, gl_dispatch_stub_816, gl_dispatch_stub_816, NULL, 816), - NAME_FUNC_OFFSET(22061, glBindFragDataLocationEXT, glBindFragDataLocationEXT, NULL, 819), - NAME_FUNC_OFFSET(22084, glGetFragDataLocationEXT, glGetFragDataLocationEXT, NULL, 820), - NAME_FUNC_OFFSET(22106, glGetUniformuivEXT, glGetUniformuivEXT, NULL, 821), - NAME_FUNC_OFFSET(22122, glGetVertexAttribIivEXT, glGetVertexAttribIivEXT, NULL, 822), - NAME_FUNC_OFFSET(22143, glGetVertexAttribIuivEXT, glGetVertexAttribIuivEXT, NULL, 823), - NAME_FUNC_OFFSET(22165, glUniform1uiEXT, glUniform1uiEXT, NULL, 824), - NAME_FUNC_OFFSET(22178, glUniform1uivEXT, glUniform1uivEXT, NULL, 825), - NAME_FUNC_OFFSET(22192, glUniform2uiEXT, glUniform2uiEXT, NULL, 826), - NAME_FUNC_OFFSET(22205, glUniform2uivEXT, glUniform2uivEXT, NULL, 827), - NAME_FUNC_OFFSET(22219, glUniform3uiEXT, glUniform3uiEXT, NULL, 828), - NAME_FUNC_OFFSET(22232, glUniform3uivEXT, glUniform3uivEXT, NULL, 829), - NAME_FUNC_OFFSET(22246, glUniform4uiEXT, glUniform4uiEXT, NULL, 830), - NAME_FUNC_OFFSET(22259, glUniform4uivEXT, glUniform4uivEXT, NULL, 831), - NAME_FUNC_OFFSET(22273, glVertexAttribI1iEXT, glVertexAttribI1iEXT, NULL, 832), - NAME_FUNC_OFFSET(22291, glVertexAttribI1ivEXT, glVertexAttribI1ivEXT, NULL, 833), - NAME_FUNC_OFFSET(22310, glVertexAttribI1uiEXT, glVertexAttribI1uiEXT, NULL, 834), - NAME_FUNC_OFFSET(22329, glVertexAttribI1uivEXT, glVertexAttribI1uivEXT, NULL, 835), - NAME_FUNC_OFFSET(22349, glVertexAttribI2iEXT, glVertexAttribI2iEXT, NULL, 836), - NAME_FUNC_OFFSET(22367, glVertexAttribI2ivEXT, glVertexAttribI2ivEXT, NULL, 837), - NAME_FUNC_OFFSET(22386, glVertexAttribI2uiEXT, glVertexAttribI2uiEXT, NULL, 838), - NAME_FUNC_OFFSET(22405, glVertexAttribI2uivEXT, glVertexAttribI2uivEXT, NULL, 839), - NAME_FUNC_OFFSET(22425, glVertexAttribI3iEXT, glVertexAttribI3iEXT, NULL, 840), - NAME_FUNC_OFFSET(22443, glVertexAttribI3ivEXT, glVertexAttribI3ivEXT, NULL, 841), - NAME_FUNC_OFFSET(22462, glVertexAttribI3uiEXT, glVertexAttribI3uiEXT, NULL, 842), - NAME_FUNC_OFFSET(22481, glVertexAttribI3uivEXT, glVertexAttribI3uivEXT, NULL, 843), - NAME_FUNC_OFFSET(22501, glVertexAttribI4bvEXT, glVertexAttribI4bvEXT, NULL, 844), - NAME_FUNC_OFFSET(22520, glVertexAttribI4iEXT, glVertexAttribI4iEXT, NULL, 845), - NAME_FUNC_OFFSET(22538, glVertexAttribI4ivEXT, glVertexAttribI4ivEXT, NULL, 846), - NAME_FUNC_OFFSET(22557, glVertexAttribI4svEXT, glVertexAttribI4svEXT, NULL, 847), - NAME_FUNC_OFFSET(22576, glVertexAttribI4ubvEXT, glVertexAttribI4ubvEXT, NULL, 848), - NAME_FUNC_OFFSET(22596, glVertexAttribI4uiEXT, glVertexAttribI4uiEXT, NULL, 849), - NAME_FUNC_OFFSET(22615, glVertexAttribI4uivEXT, glVertexAttribI4uivEXT, NULL, 850), - NAME_FUNC_OFFSET(22635, glVertexAttribI4usvEXT, glVertexAttribI4usvEXT, NULL, 851), - NAME_FUNC_OFFSET(22655, glVertexAttribIPointerEXT, glVertexAttribIPointerEXT, NULL, 852), - NAME_FUNC_OFFSET(22678, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, 853), - NAME_FUNC_OFFSET(22704, glColorMaskIndexedEXT, glColorMaskIndexedEXT, NULL, 854), - NAME_FUNC_OFFSET(22717, glDisableIndexedEXT, glDisableIndexedEXT, NULL, 855), - NAME_FUNC_OFFSET(22728, glEnableIndexedEXT, glEnableIndexedEXT, NULL, 856), - NAME_FUNC_OFFSET(22738, glGetBooleanIndexedvEXT, glGetBooleanIndexedvEXT, NULL, 857), - NAME_FUNC_OFFSET(22754, glGetIntegerIndexedvEXT, glGetIntegerIndexedvEXT, NULL, 858), - NAME_FUNC_OFFSET(22770, glIsEnabledIndexedEXT, glIsEnabledIndexedEXT, NULL, 859), - NAME_FUNC_OFFSET(22783, glGetTexParameterIivEXT, glGetTexParameterIivEXT, NULL, 862), - NAME_FUNC_OFFSET(22804, glGetTexParameterIuivEXT, glGetTexParameterIuivEXT, NULL, 863), - NAME_FUNC_OFFSET(22826, glTexParameterIivEXT, glTexParameterIivEXT, NULL, 864), - NAME_FUNC_OFFSET(22844, glTexParameterIuivEXT, glTexParameterIuivEXT, NULL, 865), - NAME_FUNC_OFFSET(22863, glBeginConditionalRenderNV, glBeginConditionalRenderNV, NULL, 866), - NAME_FUNC_OFFSET(22888, glEndConditionalRenderNV, glEndConditionalRenderNV, NULL, 867), - NAME_FUNC_OFFSET(22911, glBeginTransformFeedbackEXT, glBeginTransformFeedbackEXT, NULL, 868), - NAME_FUNC_OFFSET(22936, glBindBufferBaseEXT, glBindBufferBaseEXT, NULL, 869), - NAME_FUNC_OFFSET(22953, glBindBufferRangeEXT, glBindBufferRangeEXT, NULL, 871), - NAME_FUNC_OFFSET(22971, glEndTransformFeedbackEXT, glEndTransformFeedbackEXT, NULL, 872), - NAME_FUNC_OFFSET(22994, glGetTransformFeedbackVaryingEXT, glGetTransformFeedbackVaryingEXT, NULL, 873), - NAME_FUNC_OFFSET(23024, glTransformFeedbackVaryingsEXT, glTransformFeedbackVaryingsEXT, NULL, 874), - NAME_FUNC_OFFSET(23052, glProvokingVertexEXT, glProvokingVertexEXT, NULL, 875), + NAME_FUNC_OFFSET( 9140, glClampColorARB, glClampColorARB, NULL, 572), + NAME_FUNC_OFFSET( 9156, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 573), + NAME_FUNC_OFFSET( 9181, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 574), + NAME_FUNC_OFFSET( 9208, glRenderbufferStorageMultisample, glRenderbufferStorageMultisample, NULL, 575), + NAME_FUNC_OFFSET( 9241, glFramebufferTextureARB, glFramebufferTextureARB, NULL, 576), + NAME_FUNC_OFFSET( 9265, glFramebufferTextureFaceARB, glFramebufferTextureFaceARB, NULL, 577), + NAME_FUNC_OFFSET( 9293, glProgramParameteriARB, glProgramParameteriARB, NULL, 578), + NAME_FUNC_OFFSET( 9316, glVertexAttribDivisorARB, glVertexAttribDivisorARB, NULL, 579), + NAME_FUNC_OFFSET( 9341, glFlushMappedBufferRange, glFlushMappedBufferRange, NULL, 580), + NAME_FUNC_OFFSET( 9366, glMapBufferRange, glMapBufferRange, NULL, 581), + NAME_FUNC_OFFSET( 9383, glTexBufferARB, glTexBufferARB, NULL, 582), + NAME_FUNC_OFFSET( 9398, glBindVertexArray, glBindVertexArray, NULL, 583), + NAME_FUNC_OFFSET( 9416, glGenVertexArrays, glGenVertexArrays, NULL, 584), + NAME_FUNC_OFFSET( 9434, glCopyBufferSubData, glCopyBufferSubData, NULL, 585), + NAME_FUNC_OFFSET( 9454, glClientWaitSync, glClientWaitSync, NULL, 586), + NAME_FUNC_OFFSET( 9471, glDeleteSync, glDeleteSync, NULL, 587), + NAME_FUNC_OFFSET( 9484, glFenceSync, glFenceSync, NULL, 588), + NAME_FUNC_OFFSET( 9496, glGetInteger64v, glGetInteger64v, NULL, 589), + NAME_FUNC_OFFSET( 9512, glGetSynciv, glGetSynciv, NULL, 590), + NAME_FUNC_OFFSET( 9524, glIsSync, glIsSync, NULL, 591), + NAME_FUNC_OFFSET( 9533, glWaitSync, glWaitSync, NULL, 592), + NAME_FUNC_OFFSET( 9544, glDrawElementsBaseVertex, glDrawElementsBaseVertex, NULL, 593), + NAME_FUNC_OFFSET( 9569, glDrawRangeElementsBaseVertex, glDrawRangeElementsBaseVertex, NULL, 594), + NAME_FUNC_OFFSET( 9599, glMultiDrawElementsBaseVertex, glMultiDrawElementsBaseVertex, NULL, 595), + NAME_FUNC_OFFSET( 9629, glBlendEquationSeparateiARB, glBlendEquationSeparateiARB, NULL, 596), + NAME_FUNC_OFFSET( 9657, glBlendEquationiARB, glBlendEquationiARB, NULL, 597), + NAME_FUNC_OFFSET( 9677, glBlendFuncSeparateiARB, glBlendFuncSeparateiARB, NULL, 598), + NAME_FUNC_OFFSET( 9701, glBlendFunciARB, glBlendFunciARB, NULL, 599), + NAME_FUNC_OFFSET( 9717, glBindSampler, glBindSampler, NULL, 600), + NAME_FUNC_OFFSET( 9731, glDeleteSamplers, glDeleteSamplers, NULL, 601), + NAME_FUNC_OFFSET( 9748, glGenSamplers, glGenSamplers, NULL, 602), + NAME_FUNC_OFFSET( 9762, glGetSamplerParameterIiv, glGetSamplerParameterIiv, NULL, 603), + NAME_FUNC_OFFSET( 9787, glGetSamplerParameterIuiv, glGetSamplerParameterIuiv, NULL, 604), + NAME_FUNC_OFFSET( 9813, glGetSamplerParameterfv, glGetSamplerParameterfv, NULL, 605), + NAME_FUNC_OFFSET( 9837, glGetSamplerParameteriv, glGetSamplerParameteriv, NULL, 606), + NAME_FUNC_OFFSET( 9861, glIsSampler, glIsSampler, NULL, 607), + NAME_FUNC_OFFSET( 9873, glSamplerParameterIiv, glSamplerParameterIiv, NULL, 608), + NAME_FUNC_OFFSET( 9895, glSamplerParameterIuiv, glSamplerParameterIuiv, NULL, 609), + NAME_FUNC_OFFSET( 9918, glSamplerParameterf, glSamplerParameterf, NULL, 610), + NAME_FUNC_OFFSET( 9938, glSamplerParameterfv, glSamplerParameterfv, NULL, 611), + NAME_FUNC_OFFSET( 9959, glSamplerParameteri, glSamplerParameteri, NULL, 612), + NAME_FUNC_OFFSET( 9979, glSamplerParameteriv, glSamplerParameteriv, NULL, 613), + NAME_FUNC_OFFSET(10000, glBindTransformFeedback, glBindTransformFeedback, NULL, 614), + NAME_FUNC_OFFSET(10024, glDeleteTransformFeedbacks, glDeleteTransformFeedbacks, NULL, 615), + NAME_FUNC_OFFSET(10051, glDrawTransformFeedback, glDrawTransformFeedback, NULL, 616), + NAME_FUNC_OFFSET(10075, glGenTransformFeedbacks, glGenTransformFeedbacks, NULL, 617), + NAME_FUNC_OFFSET(10099, glIsTransformFeedback, glIsTransformFeedback, NULL, 618), + NAME_FUNC_OFFSET(10121, glPauseTransformFeedback, glPauseTransformFeedback, NULL, 619), + NAME_FUNC_OFFSET(10146, glResumeTransformFeedback, glResumeTransformFeedback, NULL, 620), + NAME_FUNC_OFFSET(10172, glClearDepthf, glClearDepthf, NULL, 621), + NAME_FUNC_OFFSET(10186, glDepthRangef, glDepthRangef, NULL, 622), + NAME_FUNC_OFFSET(10200, glGetShaderPrecisionFormat, glGetShaderPrecisionFormat, NULL, 623), + NAME_FUNC_OFFSET(10227, glReleaseShaderCompiler, glReleaseShaderCompiler, NULL, 624), + NAME_FUNC_OFFSET(10251, glShaderBinary, glShaderBinary, NULL, 625), + NAME_FUNC_OFFSET(10266, glPolygonOffsetEXT, glPolygonOffsetEXT, NULL, 626), + NAME_FUNC_OFFSET(10285, gl_dispatch_stub_627, gl_dispatch_stub_627, NULL, 627), + NAME_FUNC_OFFSET(10317, gl_dispatch_stub_628, gl_dispatch_stub_628, NULL, 628), + NAME_FUNC_OFFSET(10349, gl_dispatch_stub_629, gl_dispatch_stub_629, NULL, 629), + NAME_FUNC_OFFSET(10377, gl_dispatch_stub_630, gl_dispatch_stub_630, NULL, 630), + NAME_FUNC_OFFSET(10406, gl_dispatch_stub_631, gl_dispatch_stub_631, NULL, 631), + NAME_FUNC_OFFSET(10434, gl_dispatch_stub_632, gl_dispatch_stub_632, NULL, 632), + NAME_FUNC_OFFSET(10463, gl_dispatch_stub_633, gl_dispatch_stub_633, NULL, 633), + NAME_FUNC_OFFSET(10480, gl_dispatch_stub_634, gl_dispatch_stub_634, NULL, 634), + NAME_FUNC_OFFSET(10500, glColorPointerEXT, glColorPointerEXT, NULL, 635), + NAME_FUNC_OFFSET(10518, glEdgeFlagPointerEXT, glEdgeFlagPointerEXT, NULL, 636), + NAME_FUNC_OFFSET(10539, glIndexPointerEXT, glIndexPointerEXT, NULL, 637), + NAME_FUNC_OFFSET(10557, glNormalPointerEXT, glNormalPointerEXT, NULL, 638), + NAME_FUNC_OFFSET(10576, glTexCoordPointerEXT, glTexCoordPointerEXT, NULL, 639), + NAME_FUNC_OFFSET(10597, glVertexPointerEXT, glVertexPointerEXT, NULL, 640), + NAME_FUNC_OFFSET(10616, glPointParameterfEXT, glPointParameterfEXT, NULL, 641), + NAME_FUNC_OFFSET(10637, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 642), + NAME_FUNC_OFFSET(10659, glLockArraysEXT, glLockArraysEXT, NULL, 643), + NAME_FUNC_OFFSET(10675, glUnlockArraysEXT, glUnlockArraysEXT, NULL, 644), + NAME_FUNC_OFFSET(10693, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, 645), + NAME_FUNC_OFFSET(10715, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, 646), + NAME_FUNC_OFFSET(10738, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, 647), + NAME_FUNC_OFFSET(10760, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, 648), + NAME_FUNC_OFFSET(10783, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, 649), + NAME_FUNC_OFFSET(10805, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, 650), + NAME_FUNC_OFFSET(10828, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, 651), + NAME_FUNC_OFFSET(10850, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, 652), + NAME_FUNC_OFFSET(10873, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, 653), + NAME_FUNC_OFFSET(10895, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, 654), + NAME_FUNC_OFFSET(10918, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, 655), + NAME_FUNC_OFFSET(10941, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, 656), + NAME_FUNC_OFFSET(10965, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, 657), + NAME_FUNC_OFFSET(10988, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, 658), + NAME_FUNC_OFFSET(11012, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, 659), + NAME_FUNC_OFFSET(11035, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, 660), + NAME_FUNC_OFFSET(11059, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, 661), + NAME_FUNC_OFFSET(11086, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, 662), + NAME_FUNC_OFFSET(11107, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, 663), + NAME_FUNC_OFFSET(11130, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, 664), + NAME_FUNC_OFFSET(11151, glFogCoorddEXT, glFogCoorddEXT, NULL, 665), + NAME_FUNC_OFFSET(11166, glFogCoorddvEXT, glFogCoorddvEXT, NULL, 666), + NAME_FUNC_OFFSET(11182, glFogCoordfEXT, glFogCoordfEXT, NULL, 667), + NAME_FUNC_OFFSET(11197, glFogCoordfvEXT, glFogCoordfvEXT, NULL, 668), + NAME_FUNC_OFFSET(11213, gl_dispatch_stub_669, gl_dispatch_stub_669, NULL, 669), + NAME_FUNC_OFFSET(11231, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, 670), + NAME_FUNC_OFFSET(11254, glFlushVertexArrayRangeNV, glFlushVertexArrayRangeNV, NULL, 671), + NAME_FUNC_OFFSET(11280, glVertexArrayRangeNV, glVertexArrayRangeNV, NULL, 672), + NAME_FUNC_OFFSET(11301, glCombinerInputNV, glCombinerInputNV, NULL, 673), + NAME_FUNC_OFFSET(11319, glCombinerOutputNV, glCombinerOutputNV, NULL, 674), + NAME_FUNC_OFFSET(11338, glCombinerParameterfNV, glCombinerParameterfNV, NULL, 675), + NAME_FUNC_OFFSET(11361, glCombinerParameterfvNV, glCombinerParameterfvNV, NULL, 676), + NAME_FUNC_OFFSET(11385, glCombinerParameteriNV, glCombinerParameteriNV, NULL, 677), + NAME_FUNC_OFFSET(11408, glCombinerParameterivNV, glCombinerParameterivNV, NULL, 678), + NAME_FUNC_OFFSET(11432, glFinalCombinerInputNV, glFinalCombinerInputNV, NULL, 679), + NAME_FUNC_OFFSET(11455, glGetCombinerInputParameterfvNV, glGetCombinerInputParameterfvNV, NULL, 680), + NAME_FUNC_OFFSET(11487, glGetCombinerInputParameterivNV, glGetCombinerInputParameterivNV, NULL, 681), + NAME_FUNC_OFFSET(11519, glGetCombinerOutputParameterfvNV, glGetCombinerOutputParameterfvNV, NULL, 682), + NAME_FUNC_OFFSET(11552, glGetCombinerOutputParameterivNV, glGetCombinerOutputParameterivNV, NULL, 683), + NAME_FUNC_OFFSET(11585, glGetFinalCombinerInputParameterfvNV, glGetFinalCombinerInputParameterfvNV, NULL, 684), + NAME_FUNC_OFFSET(11622, glGetFinalCombinerInputParameterivNV, glGetFinalCombinerInputParameterivNV, NULL, 685), + NAME_FUNC_OFFSET(11659, glResizeBuffersMESA, glResizeBuffersMESA, NULL, 686), + NAME_FUNC_OFFSET(11679, glWindowPos2dMESA, glWindowPos2dMESA, NULL, 687), + NAME_FUNC_OFFSET(11697, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, 688), + NAME_FUNC_OFFSET(11716, glWindowPos2fMESA, glWindowPos2fMESA, NULL, 689), + NAME_FUNC_OFFSET(11734, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, 690), + NAME_FUNC_OFFSET(11753, glWindowPos2iMESA, glWindowPos2iMESA, NULL, 691), + NAME_FUNC_OFFSET(11771, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, 692), + NAME_FUNC_OFFSET(11790, glWindowPos2sMESA, glWindowPos2sMESA, NULL, 693), + NAME_FUNC_OFFSET(11808, glWindowPos2svMESA, glWindowPos2svMESA, NULL, 694), + NAME_FUNC_OFFSET(11827, glWindowPos3dMESA, glWindowPos3dMESA, NULL, 695), + NAME_FUNC_OFFSET(11845, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, 696), + NAME_FUNC_OFFSET(11864, glWindowPos3fMESA, glWindowPos3fMESA, NULL, 697), + NAME_FUNC_OFFSET(11882, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, 698), + NAME_FUNC_OFFSET(11901, glWindowPos3iMESA, glWindowPos3iMESA, NULL, 699), + NAME_FUNC_OFFSET(11919, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, 700), + NAME_FUNC_OFFSET(11938, glWindowPos3sMESA, glWindowPos3sMESA, NULL, 701), + NAME_FUNC_OFFSET(11956, glWindowPos3svMESA, glWindowPos3svMESA, NULL, 702), + NAME_FUNC_OFFSET(11975, glWindowPos4dMESA, glWindowPos4dMESA, NULL, 703), + NAME_FUNC_OFFSET(11993, glWindowPos4dvMESA, glWindowPos4dvMESA, NULL, 704), + NAME_FUNC_OFFSET(12012, glWindowPos4fMESA, glWindowPos4fMESA, NULL, 705), + NAME_FUNC_OFFSET(12030, glWindowPos4fvMESA, glWindowPos4fvMESA, NULL, 706), + NAME_FUNC_OFFSET(12049, glWindowPos4iMESA, glWindowPos4iMESA, NULL, 707), + NAME_FUNC_OFFSET(12067, glWindowPos4ivMESA, glWindowPos4ivMESA, NULL, 708), + NAME_FUNC_OFFSET(12086, glWindowPos4sMESA, glWindowPos4sMESA, NULL, 709), + NAME_FUNC_OFFSET(12104, glWindowPos4svMESA, glWindowPos4svMESA, NULL, 710), + NAME_FUNC_OFFSET(12123, gl_dispatch_stub_711, gl_dispatch_stub_711, NULL, 711), + NAME_FUNC_OFFSET(12148, gl_dispatch_stub_712, gl_dispatch_stub_712, NULL, 712), + NAME_FUNC_OFFSET(12175, gl_dispatch_stub_713, gl_dispatch_stub_713, NULL, 713), + NAME_FUNC_OFFSET(12192, gl_dispatch_stub_714, gl_dispatch_stub_714, NULL, 714), + NAME_FUNC_OFFSET(12208, gl_dispatch_stub_715, gl_dispatch_stub_715, NULL, 715), + NAME_FUNC_OFFSET(12222, gl_dispatch_stub_716, gl_dispatch_stub_716, NULL, 716), + NAME_FUNC_OFFSET(12237, gl_dispatch_stub_717, gl_dispatch_stub_717, NULL, 717), + NAME_FUNC_OFFSET(12249, gl_dispatch_stub_718, gl_dispatch_stub_718, NULL, 718), + NAME_FUNC_OFFSET(12262, gl_dispatch_stub_719, gl_dispatch_stub_719, NULL, 719), + NAME_FUNC_OFFSET(12276, glAreProgramsResidentNV, glAreProgramsResidentNV, NULL, 720), + NAME_FUNC_OFFSET(12300, glBindProgramNV, glBindProgramNV, NULL, 721), + NAME_FUNC_OFFSET(12316, glDeleteProgramsNV, glDeleteProgramsNV, NULL, 722), + NAME_FUNC_OFFSET(12335, glExecuteProgramNV, glExecuteProgramNV, NULL, 723), + NAME_FUNC_OFFSET(12354, glGenProgramsNV, glGenProgramsNV, NULL, 724), + NAME_FUNC_OFFSET(12370, glGetProgramParameterdvNV, glGetProgramParameterdvNV, NULL, 725), + NAME_FUNC_OFFSET(12396, glGetProgramParameterfvNV, glGetProgramParameterfvNV, NULL, 726), + NAME_FUNC_OFFSET(12422, glGetProgramStringNV, glGetProgramStringNV, NULL, 727), + NAME_FUNC_OFFSET(12443, glGetProgramivNV, glGetProgramivNV, NULL, 728), + NAME_FUNC_OFFSET(12460, glGetTrackMatrixivNV, glGetTrackMatrixivNV, NULL, 729), + NAME_FUNC_OFFSET(12481, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, 730), + NAME_FUNC_OFFSET(12509, glGetVertexAttribdvNV, glGetVertexAttribdvNV, NULL, 731), + NAME_FUNC_OFFSET(12531, glGetVertexAttribfvNV, glGetVertexAttribfvNV, NULL, 732), + NAME_FUNC_OFFSET(12553, glGetVertexAttribivNV, glGetVertexAttribivNV, NULL, 733), + NAME_FUNC_OFFSET(12575, glIsProgramNV, glIsProgramNV, NULL, 734), + NAME_FUNC_OFFSET(12589, glLoadProgramNV, glLoadProgramNV, NULL, 735), + NAME_FUNC_OFFSET(12605, glProgramParameters4dvNV, glProgramParameters4dvNV, NULL, 736), + NAME_FUNC_OFFSET(12630, glProgramParameters4fvNV, glProgramParameters4fvNV, NULL, 737), + NAME_FUNC_OFFSET(12655, glRequestResidentProgramsNV, glRequestResidentProgramsNV, NULL, 738), + NAME_FUNC_OFFSET(12683, glTrackMatrixNV, glTrackMatrixNV, NULL, 739), + NAME_FUNC_OFFSET(12699, glVertexAttrib1dNV, glVertexAttrib1dNV, NULL, 740), + NAME_FUNC_OFFSET(12718, glVertexAttrib1dvNV, glVertexAttrib1dvNV, NULL, 741), + NAME_FUNC_OFFSET(12738, glVertexAttrib1fNV, glVertexAttrib1fNV, NULL, 742), + NAME_FUNC_OFFSET(12757, glVertexAttrib1fvNV, glVertexAttrib1fvNV, NULL, 743), + NAME_FUNC_OFFSET(12777, glVertexAttrib1sNV, glVertexAttrib1sNV, NULL, 744), + NAME_FUNC_OFFSET(12796, glVertexAttrib1svNV, glVertexAttrib1svNV, NULL, 745), + NAME_FUNC_OFFSET(12816, glVertexAttrib2dNV, glVertexAttrib2dNV, NULL, 746), + NAME_FUNC_OFFSET(12835, glVertexAttrib2dvNV, glVertexAttrib2dvNV, NULL, 747), + NAME_FUNC_OFFSET(12855, glVertexAttrib2fNV, glVertexAttrib2fNV, NULL, 748), + NAME_FUNC_OFFSET(12874, glVertexAttrib2fvNV, glVertexAttrib2fvNV, NULL, 749), + NAME_FUNC_OFFSET(12894, glVertexAttrib2sNV, glVertexAttrib2sNV, NULL, 750), + NAME_FUNC_OFFSET(12913, glVertexAttrib2svNV, glVertexAttrib2svNV, NULL, 751), + NAME_FUNC_OFFSET(12933, glVertexAttrib3dNV, glVertexAttrib3dNV, NULL, 752), + NAME_FUNC_OFFSET(12952, glVertexAttrib3dvNV, glVertexAttrib3dvNV, NULL, 753), + NAME_FUNC_OFFSET(12972, glVertexAttrib3fNV, glVertexAttrib3fNV, NULL, 754), + NAME_FUNC_OFFSET(12991, glVertexAttrib3fvNV, glVertexAttrib3fvNV, NULL, 755), + NAME_FUNC_OFFSET(13011, glVertexAttrib3sNV, glVertexAttrib3sNV, NULL, 756), + NAME_FUNC_OFFSET(13030, glVertexAttrib3svNV, glVertexAttrib3svNV, NULL, 757), + NAME_FUNC_OFFSET(13050, glVertexAttrib4dNV, glVertexAttrib4dNV, NULL, 758), + NAME_FUNC_OFFSET(13069, glVertexAttrib4dvNV, glVertexAttrib4dvNV, NULL, 759), + NAME_FUNC_OFFSET(13089, glVertexAttrib4fNV, glVertexAttrib4fNV, NULL, 760), + NAME_FUNC_OFFSET(13108, glVertexAttrib4fvNV, glVertexAttrib4fvNV, NULL, 761), + NAME_FUNC_OFFSET(13128, glVertexAttrib4sNV, glVertexAttrib4sNV, NULL, 762), + NAME_FUNC_OFFSET(13147, glVertexAttrib4svNV, glVertexAttrib4svNV, NULL, 763), + NAME_FUNC_OFFSET(13167, glVertexAttrib4ubNV, glVertexAttrib4ubNV, NULL, 764), + NAME_FUNC_OFFSET(13187, glVertexAttrib4ubvNV, glVertexAttrib4ubvNV, NULL, 765), + NAME_FUNC_OFFSET(13208, glVertexAttribPointerNV, glVertexAttribPointerNV, NULL, 766), + NAME_FUNC_OFFSET(13232, glVertexAttribs1dvNV, glVertexAttribs1dvNV, NULL, 767), + NAME_FUNC_OFFSET(13253, glVertexAttribs1fvNV, glVertexAttribs1fvNV, NULL, 768), + NAME_FUNC_OFFSET(13274, glVertexAttribs1svNV, glVertexAttribs1svNV, NULL, 769), + NAME_FUNC_OFFSET(13295, glVertexAttribs2dvNV, glVertexAttribs2dvNV, NULL, 770), + NAME_FUNC_OFFSET(13316, glVertexAttribs2fvNV, glVertexAttribs2fvNV, NULL, 771), + NAME_FUNC_OFFSET(13337, glVertexAttribs2svNV, glVertexAttribs2svNV, NULL, 772), + NAME_FUNC_OFFSET(13358, glVertexAttribs3dvNV, glVertexAttribs3dvNV, NULL, 773), + NAME_FUNC_OFFSET(13379, glVertexAttribs3fvNV, glVertexAttribs3fvNV, NULL, 774), + NAME_FUNC_OFFSET(13400, glVertexAttribs3svNV, glVertexAttribs3svNV, NULL, 775), + NAME_FUNC_OFFSET(13421, glVertexAttribs4dvNV, glVertexAttribs4dvNV, NULL, 776), + NAME_FUNC_OFFSET(13442, glVertexAttribs4fvNV, glVertexAttribs4fvNV, NULL, 777), + NAME_FUNC_OFFSET(13463, glVertexAttribs4svNV, glVertexAttribs4svNV, NULL, 778), + NAME_FUNC_OFFSET(13484, glVertexAttribs4ubvNV, glVertexAttribs4ubvNV, NULL, 779), + NAME_FUNC_OFFSET(13506, glGetTexBumpParameterfvATI, glGetTexBumpParameterfvATI, NULL, 780), + NAME_FUNC_OFFSET(13533, glGetTexBumpParameterivATI, glGetTexBumpParameterivATI, NULL, 781), + NAME_FUNC_OFFSET(13560, glTexBumpParameterfvATI, glTexBumpParameterfvATI, NULL, 782), + NAME_FUNC_OFFSET(13584, glTexBumpParameterivATI, glTexBumpParameterivATI, NULL, 783), + NAME_FUNC_OFFSET(13608, glAlphaFragmentOp1ATI, glAlphaFragmentOp1ATI, NULL, 784), + NAME_FUNC_OFFSET(13630, glAlphaFragmentOp2ATI, glAlphaFragmentOp2ATI, NULL, 785), + NAME_FUNC_OFFSET(13652, glAlphaFragmentOp3ATI, glAlphaFragmentOp3ATI, NULL, 786), + NAME_FUNC_OFFSET(13674, glBeginFragmentShaderATI, glBeginFragmentShaderATI, NULL, 787), + NAME_FUNC_OFFSET(13699, glBindFragmentShaderATI, glBindFragmentShaderATI, NULL, 788), + NAME_FUNC_OFFSET(13723, glColorFragmentOp1ATI, glColorFragmentOp1ATI, NULL, 789), + NAME_FUNC_OFFSET(13745, glColorFragmentOp2ATI, glColorFragmentOp2ATI, NULL, 790), + NAME_FUNC_OFFSET(13767, glColorFragmentOp3ATI, glColorFragmentOp3ATI, NULL, 791), + NAME_FUNC_OFFSET(13789, glDeleteFragmentShaderATI, glDeleteFragmentShaderATI, NULL, 792), + NAME_FUNC_OFFSET(13815, glEndFragmentShaderATI, glEndFragmentShaderATI, NULL, 793), + NAME_FUNC_OFFSET(13838, glGenFragmentShadersATI, glGenFragmentShadersATI, NULL, 794), + NAME_FUNC_OFFSET(13862, glPassTexCoordATI, glPassTexCoordATI, NULL, 795), + NAME_FUNC_OFFSET(13880, glSampleMapATI, glSampleMapATI, NULL, 796), + NAME_FUNC_OFFSET(13895, glSetFragmentShaderConstantATI, glSetFragmentShaderConstantATI, NULL, 797), + NAME_FUNC_OFFSET(13926, glPointParameteriNV, glPointParameteriNV, NULL, 798), + NAME_FUNC_OFFSET(13946, glPointParameterivNV, glPointParameterivNV, NULL, 799), + NAME_FUNC_OFFSET(13967, gl_dispatch_stub_800, gl_dispatch_stub_800, NULL, 800), + NAME_FUNC_OFFSET(13990, gl_dispatch_stub_801, gl_dispatch_stub_801, NULL, 801), + NAME_FUNC_OFFSET(14013, gl_dispatch_stub_802, gl_dispatch_stub_802, NULL, 802), + NAME_FUNC_OFFSET(14039, gl_dispatch_stub_803, gl_dispatch_stub_803, NULL, 803), + NAME_FUNC_OFFSET(14062, gl_dispatch_stub_804, gl_dispatch_stub_804, NULL, 804), + NAME_FUNC_OFFSET(14083, glGetProgramNamedParameterdvNV, glGetProgramNamedParameterdvNV, NULL, 805), + NAME_FUNC_OFFSET(14114, glGetProgramNamedParameterfvNV, glGetProgramNamedParameterfvNV, NULL, 806), + NAME_FUNC_OFFSET(14145, glProgramNamedParameter4dNV, glProgramNamedParameter4dNV, NULL, 807), + NAME_FUNC_OFFSET(14173, glProgramNamedParameter4dvNV, glProgramNamedParameter4dvNV, NULL, 808), + NAME_FUNC_OFFSET(14202, glProgramNamedParameter4fNV, glProgramNamedParameter4fNV, NULL, 809), + NAME_FUNC_OFFSET(14230, glProgramNamedParameter4fvNV, glProgramNamedParameter4fvNV, NULL, 810), + NAME_FUNC_OFFSET(14259, glPrimitiveRestartIndexNV, glPrimitiveRestartIndexNV, NULL, 811), + NAME_FUNC_OFFSET(14285, glPrimitiveRestartNV, glPrimitiveRestartNV, NULL, 812), + NAME_FUNC_OFFSET(14306, gl_dispatch_stub_813, gl_dispatch_stub_813, NULL, 813), + NAME_FUNC_OFFSET(14323, gl_dispatch_stub_814, gl_dispatch_stub_814, NULL, 814), + NAME_FUNC_OFFSET(14350, glBindFramebufferEXT, glBindFramebufferEXT, NULL, 815), + NAME_FUNC_OFFSET(14371, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, 816), + NAME_FUNC_OFFSET(14393, glCheckFramebufferStatusEXT, glCheckFramebufferStatusEXT, NULL, 817), + NAME_FUNC_OFFSET(14421, glDeleteFramebuffersEXT, glDeleteFramebuffersEXT, NULL, 818), + NAME_FUNC_OFFSET(14445, glDeleteRenderbuffersEXT, glDeleteRenderbuffersEXT, NULL, 819), + NAME_FUNC_OFFSET(14470, glFramebufferRenderbufferEXT, glFramebufferRenderbufferEXT, NULL, 820), + NAME_FUNC_OFFSET(14499, glFramebufferTexture1DEXT, glFramebufferTexture1DEXT, NULL, 821), + NAME_FUNC_OFFSET(14525, glFramebufferTexture2DEXT, glFramebufferTexture2DEXT, NULL, 822), + NAME_FUNC_OFFSET(14551, glFramebufferTexture3DEXT, glFramebufferTexture3DEXT, NULL, 823), + NAME_FUNC_OFFSET(14577, glGenFramebuffersEXT, glGenFramebuffersEXT, NULL, 824), + NAME_FUNC_OFFSET(14598, glGenRenderbuffersEXT, glGenRenderbuffersEXT, NULL, 825), + NAME_FUNC_OFFSET(14620, glGenerateMipmapEXT, glGenerateMipmapEXT, NULL, 826), + NAME_FUNC_OFFSET(14640, glGetFramebufferAttachmentParameterivEXT, glGetFramebufferAttachmentParameterivEXT, NULL, 827), + NAME_FUNC_OFFSET(14681, glGetRenderbufferParameterivEXT, glGetRenderbufferParameterivEXT, NULL, 828), + NAME_FUNC_OFFSET(14713, glIsFramebufferEXT, glIsFramebufferEXT, NULL, 829), + NAME_FUNC_OFFSET(14732, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL, 830), + NAME_FUNC_OFFSET(14752, glRenderbufferStorageEXT, glRenderbufferStorageEXT, NULL, 831), + NAME_FUNC_OFFSET(14777, gl_dispatch_stub_832, gl_dispatch_stub_832, NULL, 832), + NAME_FUNC_OFFSET(14798, gl_dispatch_stub_833, gl_dispatch_stub_833, NULL, 833), + NAME_FUNC_OFFSET(14822, gl_dispatch_stub_834, gl_dispatch_stub_834, NULL, 834), + NAME_FUNC_OFFSET(14852, glBindFragDataLocationEXT, glBindFragDataLocationEXT, NULL, 835), + NAME_FUNC_OFFSET(14878, glGetFragDataLocationEXT, glGetFragDataLocationEXT, NULL, 836), + NAME_FUNC_OFFSET(14903, glGetUniformuivEXT, glGetUniformuivEXT, NULL, 837), + NAME_FUNC_OFFSET(14922, glGetVertexAttribIivEXT, glGetVertexAttribIivEXT, NULL, 838), + NAME_FUNC_OFFSET(14946, glGetVertexAttribIuivEXT, glGetVertexAttribIuivEXT, NULL, 839), + NAME_FUNC_OFFSET(14971, glUniform1uiEXT, glUniform1uiEXT, NULL, 840), + NAME_FUNC_OFFSET(14987, glUniform1uivEXT, glUniform1uivEXT, NULL, 841), + NAME_FUNC_OFFSET(15004, glUniform2uiEXT, glUniform2uiEXT, NULL, 842), + NAME_FUNC_OFFSET(15020, glUniform2uivEXT, glUniform2uivEXT, NULL, 843), + NAME_FUNC_OFFSET(15037, glUniform3uiEXT, glUniform3uiEXT, NULL, 844), + NAME_FUNC_OFFSET(15053, glUniform3uivEXT, glUniform3uivEXT, NULL, 845), + NAME_FUNC_OFFSET(15070, glUniform4uiEXT, glUniform4uiEXT, NULL, 846), + NAME_FUNC_OFFSET(15086, glUniform4uivEXT, glUniform4uivEXT, NULL, 847), + NAME_FUNC_OFFSET(15103, glVertexAttribI1iEXT, glVertexAttribI1iEXT, NULL, 848), + NAME_FUNC_OFFSET(15124, glVertexAttribI1ivEXT, glVertexAttribI1ivEXT, NULL, 849), + NAME_FUNC_OFFSET(15146, glVertexAttribI1uiEXT, glVertexAttribI1uiEXT, NULL, 850), + NAME_FUNC_OFFSET(15168, glVertexAttribI1uivEXT, glVertexAttribI1uivEXT, NULL, 851), + NAME_FUNC_OFFSET(15191, glVertexAttribI2iEXT, glVertexAttribI2iEXT, NULL, 852), + NAME_FUNC_OFFSET(15212, glVertexAttribI2ivEXT, glVertexAttribI2ivEXT, NULL, 853), + NAME_FUNC_OFFSET(15234, glVertexAttribI2uiEXT, glVertexAttribI2uiEXT, NULL, 854), + NAME_FUNC_OFFSET(15256, glVertexAttribI2uivEXT, glVertexAttribI2uivEXT, NULL, 855), + NAME_FUNC_OFFSET(15279, glVertexAttribI3iEXT, glVertexAttribI3iEXT, NULL, 856), + NAME_FUNC_OFFSET(15300, glVertexAttribI3ivEXT, glVertexAttribI3ivEXT, NULL, 857), + NAME_FUNC_OFFSET(15322, glVertexAttribI3uiEXT, glVertexAttribI3uiEXT, NULL, 858), + NAME_FUNC_OFFSET(15344, glVertexAttribI3uivEXT, glVertexAttribI3uivEXT, NULL, 859), + NAME_FUNC_OFFSET(15367, glVertexAttribI4bvEXT, glVertexAttribI4bvEXT, NULL, 860), + NAME_FUNC_OFFSET(15389, glVertexAttribI4iEXT, glVertexAttribI4iEXT, NULL, 861), + NAME_FUNC_OFFSET(15410, glVertexAttribI4ivEXT, glVertexAttribI4ivEXT, NULL, 862), + NAME_FUNC_OFFSET(15432, glVertexAttribI4svEXT, glVertexAttribI4svEXT, NULL, 863), + NAME_FUNC_OFFSET(15454, glVertexAttribI4ubvEXT, glVertexAttribI4ubvEXT, NULL, 864), + NAME_FUNC_OFFSET(15477, glVertexAttribI4uiEXT, glVertexAttribI4uiEXT, NULL, 865), + NAME_FUNC_OFFSET(15499, glVertexAttribI4uivEXT, glVertexAttribI4uivEXT, NULL, 866), + NAME_FUNC_OFFSET(15522, glVertexAttribI4usvEXT, glVertexAttribI4usvEXT, NULL, 867), + NAME_FUNC_OFFSET(15545, glVertexAttribIPointerEXT, glVertexAttribIPointerEXT, NULL, 868), + NAME_FUNC_OFFSET(15571, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, 869), + NAME_FUNC_OFFSET(15600, glColorMaskIndexedEXT, glColorMaskIndexedEXT, NULL, 870), + NAME_FUNC_OFFSET(15622, glDisableIndexedEXT, glDisableIndexedEXT, NULL, 871), + NAME_FUNC_OFFSET(15642, glEnableIndexedEXT, glEnableIndexedEXT, NULL, 872), + NAME_FUNC_OFFSET(15661, glGetBooleanIndexedvEXT, glGetBooleanIndexedvEXT, NULL, 873), + NAME_FUNC_OFFSET(15685, glGetIntegerIndexedvEXT, glGetIntegerIndexedvEXT, NULL, 874), + NAME_FUNC_OFFSET(15709, glIsEnabledIndexedEXT, glIsEnabledIndexedEXT, NULL, 875), + NAME_FUNC_OFFSET(15731, glClearColorIiEXT, glClearColorIiEXT, NULL, 876), + NAME_FUNC_OFFSET(15749, glClearColorIuiEXT, glClearColorIuiEXT, NULL, 877), + NAME_FUNC_OFFSET(15768, glGetTexParameterIivEXT, glGetTexParameterIivEXT, NULL, 878), + NAME_FUNC_OFFSET(15792, glGetTexParameterIuivEXT, glGetTexParameterIuivEXT, NULL, 879), + NAME_FUNC_OFFSET(15817, glTexParameterIivEXT, glTexParameterIivEXT, NULL, 880), + NAME_FUNC_OFFSET(15838, glTexParameterIuivEXT, glTexParameterIuivEXT, NULL, 881), + NAME_FUNC_OFFSET(15860, glBeginConditionalRenderNV, glBeginConditionalRenderNV, NULL, 882), + NAME_FUNC_OFFSET(15887, glEndConditionalRenderNV, glEndConditionalRenderNV, NULL, 883), + NAME_FUNC_OFFSET(15912, glBeginTransformFeedbackEXT, glBeginTransformFeedbackEXT, NULL, 884), + NAME_FUNC_OFFSET(15940, glBindBufferBaseEXT, glBindBufferBaseEXT, NULL, 885), + NAME_FUNC_OFFSET(15960, glBindBufferOffsetEXT, glBindBufferOffsetEXT, NULL, 886), + NAME_FUNC_OFFSET(15982, glBindBufferRangeEXT, glBindBufferRangeEXT, NULL, 887), + NAME_FUNC_OFFSET(16003, glEndTransformFeedbackEXT, glEndTransformFeedbackEXT, NULL, 888), + NAME_FUNC_OFFSET(16029, glGetTransformFeedbackVaryingEXT, glGetTransformFeedbackVaryingEXT, NULL, 889), + NAME_FUNC_OFFSET(16062, glTransformFeedbackVaryingsEXT, glTransformFeedbackVaryingsEXT, NULL, 890), + NAME_FUNC_OFFSET(16093, glProvokingVertexEXT, glProvokingVertexEXT, NULL, 891), + NAME_FUNC_OFFSET(16114, gl_dispatch_stub_892, gl_dispatch_stub_892, NULL, 892), + NAME_FUNC_OFFSET(16145, gl_dispatch_stub_893, gl_dispatch_stub_893, NULL, 893), + NAME_FUNC_OFFSET(16165, glGetObjectParameterivAPPLE, glGetObjectParameterivAPPLE, NULL, 894), + NAME_FUNC_OFFSET(16193, glObjectPurgeableAPPLE, glObjectPurgeableAPPLE, NULL, 895), + NAME_FUNC_OFFSET(16216, glObjectUnpurgeableAPPLE, glObjectUnpurgeableAPPLE, NULL, 896), + NAME_FUNC_OFFSET(16241, glActiveProgramEXT, glActiveProgramEXT, NULL, 897), + NAME_FUNC_OFFSET(16260, glCreateShaderProgramEXT, glCreateShaderProgramEXT, NULL, 898), + NAME_FUNC_OFFSET(16285, glUseShaderProgramEXT, glUseShaderProgramEXT, NULL, 899), + NAME_FUNC_OFFSET(16307, glTextureBarrierNV, glTextureBarrierNV, NULL, 900), + NAME_FUNC_OFFSET(16326, gl_dispatch_stub_901, gl_dispatch_stub_901, NULL, 901), + NAME_FUNC_OFFSET(16351, gl_dispatch_stub_902, gl_dispatch_stub_902, NULL, 902), + NAME_FUNC_OFFSET(16380, gl_dispatch_stub_903, gl_dispatch_stub_903, NULL, 903), + NAME_FUNC_OFFSET(16411, gl_dispatch_stub_904, gl_dispatch_stub_904, NULL, 904), + NAME_FUNC_OFFSET(16435, gl_dispatch_stub_905, gl_dispatch_stub_905, NULL, 905), + NAME_FUNC_OFFSET(16460, glEGLImageTargetRenderbufferStorageOES, glEGLImageTargetRenderbufferStorageOES, NULL, 906), + NAME_FUNC_OFFSET(16499, glEGLImageTargetTexture2DOES, glEGLImageTargetTexture2DOES, NULL, 907), + NAME_FUNC_OFFSET(16528, glArrayElement, glArrayElement, NULL, 306), + NAME_FUNC_OFFSET(16546, glBindTexture, glBindTexture, NULL, 307), + NAME_FUNC_OFFSET(16563, glDrawArrays, glDrawArrays, NULL, 310), + NAME_FUNC_OFFSET(16579, glAreTexturesResident, glAreTexturesResidentEXT, glAreTexturesResidentEXT, 322), + NAME_FUNC_OFFSET(16604, glCopyTexImage1D, glCopyTexImage1D, NULL, 323), + NAME_FUNC_OFFSET(16624, glCopyTexImage2D, glCopyTexImage2D, NULL, 324), + NAME_FUNC_OFFSET(16644, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, 325), + NAME_FUNC_OFFSET(16667, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, 326), + NAME_FUNC_OFFSET(16690, glDeleteTextures, glDeleteTexturesEXT, glDeleteTexturesEXT, 327), + NAME_FUNC_OFFSET(16710, glGenTextures, glGenTexturesEXT, glGenTexturesEXT, 328), + NAME_FUNC_OFFSET(16727, glGetPointerv, glGetPointerv, NULL, 329), + NAME_FUNC_OFFSET(16744, glIsTexture, glIsTextureEXT, glIsTextureEXT, 330), + NAME_FUNC_OFFSET(16759, glPrioritizeTextures, glPrioritizeTextures, NULL, 331), + NAME_FUNC_OFFSET(16783, glTexSubImage1D, glTexSubImage1D, NULL, 332), + NAME_FUNC_OFFSET(16802, glTexSubImage2D, glTexSubImage2D, NULL, 333), + NAME_FUNC_OFFSET(16821, glBlendColor, glBlendColor, NULL, 336), + NAME_FUNC_OFFSET(16837, glBlendEquation, glBlendEquation, NULL, 337), + NAME_FUNC_OFFSET(16856, glDrawRangeElements, glDrawRangeElements, NULL, 338), + NAME_FUNC_OFFSET(16879, glColorTable, glColorTable, NULL, 339), + NAME_FUNC_OFFSET(16895, glColorTable, glColorTable, NULL, 339), + NAME_FUNC_OFFSET(16911, glColorTableParameterfv, glColorTableParameterfv, NULL, 340), + NAME_FUNC_OFFSET(16938, glColorTableParameteriv, glColorTableParameteriv, NULL, 341), + NAME_FUNC_OFFSET(16965, glCopyColorTable, glCopyColorTable, NULL, 342), + NAME_FUNC_OFFSET(16985, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, 343), + NAME_FUNC_OFFSET(17004, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, 343), + NAME_FUNC_OFFSET(17023, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, 344), + NAME_FUNC_OFFSET(17053, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, 344), + NAME_FUNC_OFFSET(17083, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, 345), + NAME_FUNC_OFFSET(17113, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, 345), + NAME_FUNC_OFFSET(17143, glColorSubTable, glColorSubTable, NULL, 346), + NAME_FUNC_OFFSET(17162, glCopyColorSubTable, glCopyColorSubTable, NULL, 347), + NAME_FUNC_OFFSET(17185, glConvolutionFilter1D, glConvolutionFilter1D, NULL, 348), + NAME_FUNC_OFFSET(17210, glConvolutionFilter2D, glConvolutionFilter2D, NULL, 349), + NAME_FUNC_OFFSET(17235, glConvolutionParameterf, glConvolutionParameterf, NULL, 350), + NAME_FUNC_OFFSET(17262, glConvolutionParameterfv, glConvolutionParameterfv, NULL, 351), + NAME_FUNC_OFFSET(17290, glConvolutionParameteri, glConvolutionParameteri, NULL, 352), + NAME_FUNC_OFFSET(17317, glConvolutionParameteriv, glConvolutionParameteriv, NULL, 353), + NAME_FUNC_OFFSET(17345, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D, NULL, 354), + NAME_FUNC_OFFSET(17374, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D, NULL, 355), + NAME_FUNC_OFFSET(17403, glGetConvolutionFilter, gl_dispatch_stub_356, gl_dispatch_stub_356, 356), + NAME_FUNC_OFFSET(17429, glGetConvolutionParameterfv, gl_dispatch_stub_357, gl_dispatch_stub_357, 357), + NAME_FUNC_OFFSET(17460, glGetConvolutionParameteriv, gl_dispatch_stub_358, gl_dispatch_stub_358, 358), + NAME_FUNC_OFFSET(17491, glGetSeparableFilter, gl_dispatch_stub_359, gl_dispatch_stub_359, 359), + NAME_FUNC_OFFSET(17515, glSeparableFilter2D, glSeparableFilter2D, NULL, 360), + NAME_FUNC_OFFSET(17538, glGetHistogram, gl_dispatch_stub_361, gl_dispatch_stub_361, 361), + NAME_FUNC_OFFSET(17556, glGetHistogramParameterfv, gl_dispatch_stub_362, gl_dispatch_stub_362, 362), + NAME_FUNC_OFFSET(17585, glGetHistogramParameteriv, gl_dispatch_stub_363, gl_dispatch_stub_363, 363), + NAME_FUNC_OFFSET(17614, glGetMinmax, gl_dispatch_stub_364, gl_dispatch_stub_364, 364), + NAME_FUNC_OFFSET(17629, glGetMinmaxParameterfv, gl_dispatch_stub_365, gl_dispatch_stub_365, 365), + NAME_FUNC_OFFSET(17655, glGetMinmaxParameteriv, gl_dispatch_stub_366, gl_dispatch_stub_366, 366), + NAME_FUNC_OFFSET(17681, glHistogram, glHistogram, NULL, 367), + NAME_FUNC_OFFSET(17696, glMinmax, glMinmax, NULL, 368), + NAME_FUNC_OFFSET(17708, glResetHistogram, glResetHistogram, NULL, 369), + NAME_FUNC_OFFSET(17728, glResetMinmax, glResetMinmax, NULL, 370), + NAME_FUNC_OFFSET(17745, glTexImage3D, glTexImage3D, NULL, 371), + NAME_FUNC_OFFSET(17761, glTexSubImage3D, glTexSubImage3D, NULL, 372), + NAME_FUNC_OFFSET(17780, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, 373), + NAME_FUNC_OFFSET(17803, glActiveTextureARB, glActiveTextureARB, NULL, 374), + NAME_FUNC_OFFSET(17819, glClientActiveTextureARB, glClientActiveTextureARB, NULL, 375), + NAME_FUNC_OFFSET(17841, glMultiTexCoord1dARB, glMultiTexCoord1dARB, NULL, 376), + NAME_FUNC_OFFSET(17859, glMultiTexCoord1dvARB, glMultiTexCoord1dvARB, NULL, 377), + NAME_FUNC_OFFSET(17878, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL, 378), + NAME_FUNC_OFFSET(17896, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL, 379), + NAME_FUNC_OFFSET(17915, glMultiTexCoord1iARB, glMultiTexCoord1iARB, NULL, 380), + NAME_FUNC_OFFSET(17933, glMultiTexCoord1ivARB, glMultiTexCoord1ivARB, NULL, 381), + NAME_FUNC_OFFSET(17952, glMultiTexCoord1sARB, glMultiTexCoord1sARB, NULL, 382), + NAME_FUNC_OFFSET(17970, glMultiTexCoord1svARB, glMultiTexCoord1svARB, NULL, 383), + NAME_FUNC_OFFSET(17989, glMultiTexCoord2dARB, glMultiTexCoord2dARB, NULL, 384), + NAME_FUNC_OFFSET(18007, glMultiTexCoord2dvARB, glMultiTexCoord2dvARB, NULL, 385), + NAME_FUNC_OFFSET(18026, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL, 386), + NAME_FUNC_OFFSET(18044, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL, 387), + NAME_FUNC_OFFSET(18063, glMultiTexCoord2iARB, glMultiTexCoord2iARB, NULL, 388), + NAME_FUNC_OFFSET(18081, glMultiTexCoord2ivARB, glMultiTexCoord2ivARB, NULL, 389), + NAME_FUNC_OFFSET(18100, glMultiTexCoord2sARB, glMultiTexCoord2sARB, NULL, 390), + NAME_FUNC_OFFSET(18118, glMultiTexCoord2svARB, glMultiTexCoord2svARB, NULL, 391), + NAME_FUNC_OFFSET(18137, glMultiTexCoord3dARB, glMultiTexCoord3dARB, NULL, 392), + NAME_FUNC_OFFSET(18155, glMultiTexCoord3dvARB, glMultiTexCoord3dvARB, NULL, 393), + NAME_FUNC_OFFSET(18174, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL, 394), + NAME_FUNC_OFFSET(18192, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL, 395), + NAME_FUNC_OFFSET(18211, glMultiTexCoord3iARB, glMultiTexCoord3iARB, NULL, 396), + NAME_FUNC_OFFSET(18229, glMultiTexCoord3ivARB, glMultiTexCoord3ivARB, NULL, 397), + NAME_FUNC_OFFSET(18248, glMultiTexCoord3sARB, glMultiTexCoord3sARB, NULL, 398), + NAME_FUNC_OFFSET(18266, glMultiTexCoord3svARB, glMultiTexCoord3svARB, NULL, 399), + NAME_FUNC_OFFSET(18285, glMultiTexCoord4dARB, glMultiTexCoord4dARB, NULL, 400), + NAME_FUNC_OFFSET(18303, glMultiTexCoord4dvARB, glMultiTexCoord4dvARB, NULL, 401), + NAME_FUNC_OFFSET(18322, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL, 402), + NAME_FUNC_OFFSET(18340, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL, 403), + NAME_FUNC_OFFSET(18359, glMultiTexCoord4iARB, glMultiTexCoord4iARB, NULL, 404), + NAME_FUNC_OFFSET(18377, glMultiTexCoord4ivARB, glMultiTexCoord4ivARB, NULL, 405), + NAME_FUNC_OFFSET(18396, glMultiTexCoord4sARB, glMultiTexCoord4sARB, NULL, 406), + NAME_FUNC_OFFSET(18414, glMultiTexCoord4svARB, glMultiTexCoord4svARB, NULL, 407), + NAME_FUNC_OFFSET(18433, glStencilOpSeparate, glStencilOpSeparate, NULL, 423), + NAME_FUNC_OFFSET(18456, glLoadTransposeMatrixdARB, glLoadTransposeMatrixdARB, NULL, 441), + NAME_FUNC_OFFSET(18479, glLoadTransposeMatrixfARB, glLoadTransposeMatrixfARB, NULL, 442), + NAME_FUNC_OFFSET(18502, glMultTransposeMatrixdARB, glMultTransposeMatrixdARB, NULL, 443), + NAME_FUNC_OFFSET(18525, glMultTransposeMatrixfARB, glMultTransposeMatrixfARB, NULL, 444), + NAME_FUNC_OFFSET(18548, glSampleCoverageARB, glSampleCoverageARB, NULL, 445), + NAME_FUNC_OFFSET(18565, glCompressedTexImage1DARB, glCompressedTexImage1DARB, NULL, 446), + NAME_FUNC_OFFSET(18588, glCompressedTexImage2DARB, glCompressedTexImage2DARB, NULL, 447), + NAME_FUNC_OFFSET(18611, glCompressedTexImage3DARB, glCompressedTexImage3DARB, NULL, 448), + NAME_FUNC_OFFSET(18634, glCompressedTexSubImage1DARB, glCompressedTexSubImage1DARB, NULL, 449), + NAME_FUNC_OFFSET(18660, glCompressedTexSubImage2DARB, glCompressedTexSubImage2DARB, NULL, 450), + NAME_FUNC_OFFSET(18686, glCompressedTexSubImage3DARB, glCompressedTexSubImage3DARB, NULL, 451), + NAME_FUNC_OFFSET(18712, glGetCompressedTexImageARB, glGetCompressedTexImageARB, NULL, 452), + NAME_FUNC_OFFSET(18736, glDisableVertexAttribArrayARB, glDisableVertexAttribArrayARB, NULL, 453), + NAME_FUNC_OFFSET(18763, glEnableVertexAttribArrayARB, glEnableVertexAttribArrayARB, NULL, 454), + NAME_FUNC_OFFSET(18789, glGetVertexAttribdvARB, glGetVertexAttribdvARB, NULL, 461), + NAME_FUNC_OFFSET(18809, glGetVertexAttribfvARB, glGetVertexAttribfvARB, NULL, 462), + NAME_FUNC_OFFSET(18829, glGetVertexAttribivARB, glGetVertexAttribivARB, NULL, 463), + NAME_FUNC_OFFSET(18849, glProgramEnvParameter4dARB, glProgramEnvParameter4dARB, NULL, 464), + NAME_FUNC_OFFSET(18872, glProgramEnvParameter4dvARB, glProgramEnvParameter4dvARB, NULL, 465), + NAME_FUNC_OFFSET(18896, glProgramEnvParameter4fARB, glProgramEnvParameter4fARB, NULL, 466), + NAME_FUNC_OFFSET(18919, glProgramEnvParameter4fvARB, glProgramEnvParameter4fvARB, NULL, 467), + NAME_FUNC_OFFSET(18943, glVertexAttrib1dARB, glVertexAttrib1dARB, NULL, 473), + NAME_FUNC_OFFSET(18960, glVertexAttrib1dvARB, glVertexAttrib1dvARB, NULL, 474), + NAME_FUNC_OFFSET(18978, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, 475), + NAME_FUNC_OFFSET(18995, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL, 476), + NAME_FUNC_OFFSET(19013, glVertexAttrib1sARB, glVertexAttrib1sARB, NULL, 477), + NAME_FUNC_OFFSET(19030, glVertexAttrib1svARB, glVertexAttrib1svARB, NULL, 478), + NAME_FUNC_OFFSET(19048, glVertexAttrib2dARB, glVertexAttrib2dARB, NULL, 479), + NAME_FUNC_OFFSET(19065, glVertexAttrib2dvARB, glVertexAttrib2dvARB, NULL, 480), + NAME_FUNC_OFFSET(19083, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, 481), + NAME_FUNC_OFFSET(19100, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL, 482), + NAME_FUNC_OFFSET(19118, glVertexAttrib2sARB, glVertexAttrib2sARB, NULL, 483), + NAME_FUNC_OFFSET(19135, glVertexAttrib2svARB, glVertexAttrib2svARB, NULL, 484), + NAME_FUNC_OFFSET(19153, glVertexAttrib3dARB, glVertexAttrib3dARB, NULL, 485), + NAME_FUNC_OFFSET(19170, glVertexAttrib3dvARB, glVertexAttrib3dvARB, NULL, 486), + NAME_FUNC_OFFSET(19188, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, 487), + NAME_FUNC_OFFSET(19205, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL, 488), + NAME_FUNC_OFFSET(19223, glVertexAttrib3sARB, glVertexAttrib3sARB, NULL, 489), + NAME_FUNC_OFFSET(19240, glVertexAttrib3svARB, glVertexAttrib3svARB, NULL, 490), + NAME_FUNC_OFFSET(19258, glVertexAttrib4NbvARB, glVertexAttrib4NbvARB, NULL, 491), + NAME_FUNC_OFFSET(19277, glVertexAttrib4NivARB, glVertexAttrib4NivARB, NULL, 492), + NAME_FUNC_OFFSET(19296, glVertexAttrib4NsvARB, glVertexAttrib4NsvARB, NULL, 493), + NAME_FUNC_OFFSET(19315, glVertexAttrib4NubARB, glVertexAttrib4NubARB, NULL, 494), + NAME_FUNC_OFFSET(19334, glVertexAttrib4NubvARB, glVertexAttrib4NubvARB, NULL, 495), + NAME_FUNC_OFFSET(19354, glVertexAttrib4NuivARB, glVertexAttrib4NuivARB, NULL, 496), + NAME_FUNC_OFFSET(19374, glVertexAttrib4NusvARB, glVertexAttrib4NusvARB, NULL, 497), + NAME_FUNC_OFFSET(19394, glVertexAttrib4bvARB, glVertexAttrib4bvARB, NULL, 498), + NAME_FUNC_OFFSET(19412, glVertexAttrib4dARB, glVertexAttrib4dARB, NULL, 499), + NAME_FUNC_OFFSET(19429, glVertexAttrib4dvARB, glVertexAttrib4dvARB, NULL, 500), + NAME_FUNC_OFFSET(19447, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, 501), + NAME_FUNC_OFFSET(19464, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL, 502), + NAME_FUNC_OFFSET(19482, glVertexAttrib4ivARB, glVertexAttrib4ivARB, NULL, 503), + NAME_FUNC_OFFSET(19500, glVertexAttrib4sARB, glVertexAttrib4sARB, NULL, 504), + NAME_FUNC_OFFSET(19517, glVertexAttrib4svARB, glVertexAttrib4svARB, NULL, 505), + NAME_FUNC_OFFSET(19535, glVertexAttrib4ubvARB, glVertexAttrib4ubvARB, NULL, 506), + NAME_FUNC_OFFSET(19554, glVertexAttrib4uivARB, glVertexAttrib4uivARB, NULL, 507), + NAME_FUNC_OFFSET(19573, glVertexAttrib4usvARB, glVertexAttrib4usvARB, NULL, 508), + NAME_FUNC_OFFSET(19592, glVertexAttribPointerARB, glVertexAttribPointerARB, NULL, 509), + NAME_FUNC_OFFSET(19614, glBindBufferARB, glBindBufferARB, NULL, 510), + NAME_FUNC_OFFSET(19627, glBufferDataARB, glBufferDataARB, NULL, 511), + NAME_FUNC_OFFSET(19640, glBufferSubDataARB, glBufferSubDataARB, NULL, 512), + NAME_FUNC_OFFSET(19656, glDeleteBuffersARB, glDeleteBuffersARB, NULL, 513), + NAME_FUNC_OFFSET(19672, glGenBuffersARB, glGenBuffersARB, NULL, 514), + NAME_FUNC_OFFSET(19685, glGetBufferParameterivARB, glGetBufferParameterivARB, NULL, 515), + NAME_FUNC_OFFSET(19708, glGetBufferPointervARB, glGetBufferPointervARB, NULL, 516), + NAME_FUNC_OFFSET(19728, glGetBufferSubDataARB, glGetBufferSubDataARB, NULL, 517), + NAME_FUNC_OFFSET(19747, glIsBufferARB, glIsBufferARB, NULL, 518), + NAME_FUNC_OFFSET(19758, glMapBufferARB, glMapBufferARB, NULL, 519), + NAME_FUNC_OFFSET(19770, glUnmapBufferARB, glUnmapBufferARB, NULL, 520), + NAME_FUNC_OFFSET(19784, glBeginQueryARB, glBeginQueryARB, NULL, 521), + NAME_FUNC_OFFSET(19797, glDeleteQueriesARB, glDeleteQueriesARB, NULL, 522), + NAME_FUNC_OFFSET(19813, glEndQueryARB, glEndQueryARB, NULL, 523), + NAME_FUNC_OFFSET(19824, glGenQueriesARB, glGenQueriesARB, NULL, 524), + NAME_FUNC_OFFSET(19837, glGetQueryObjectivARB, glGetQueryObjectivARB, NULL, 525), + NAME_FUNC_OFFSET(19856, glGetQueryObjectuivARB, glGetQueryObjectuivARB, NULL, 526), + NAME_FUNC_OFFSET(19876, glGetQueryivARB, glGetQueryivARB, NULL, 527), + NAME_FUNC_OFFSET(19889, glIsQueryARB, glIsQueryARB, NULL, 528), + NAME_FUNC_OFFSET(19899, glCompileShaderARB, glCompileShaderARB, NULL, 530), + NAME_FUNC_OFFSET(19915, glGetActiveUniformARB, glGetActiveUniformARB, NULL, 535), + NAME_FUNC_OFFSET(19934, glGetShaderSourceARB, glGetShaderSourceARB, NULL, 541), + NAME_FUNC_OFFSET(19952, glGetUniformLocationARB, glGetUniformLocationARB, NULL, 542), + NAME_FUNC_OFFSET(19973, glGetUniformfvARB, glGetUniformfvARB, NULL, 543), + NAME_FUNC_OFFSET(19988, glGetUniformivARB, glGetUniformivARB, NULL, 544), + NAME_FUNC_OFFSET(20003, glLinkProgramARB, glLinkProgramARB, NULL, 545), + NAME_FUNC_OFFSET(20017, glShaderSourceARB, glShaderSourceARB, NULL, 546), + NAME_FUNC_OFFSET(20032, glUniform1fARB, glUniform1fARB, NULL, 547), + NAME_FUNC_OFFSET(20044, glUniform1fvARB, glUniform1fvARB, NULL, 548), + NAME_FUNC_OFFSET(20057, glUniform1iARB, glUniform1iARB, NULL, 549), + NAME_FUNC_OFFSET(20069, glUniform1ivARB, glUniform1ivARB, NULL, 550), + NAME_FUNC_OFFSET(20082, glUniform2fARB, glUniform2fARB, NULL, 551), + NAME_FUNC_OFFSET(20094, glUniform2fvARB, glUniform2fvARB, NULL, 552), + NAME_FUNC_OFFSET(20107, glUniform2iARB, glUniform2iARB, NULL, 553), + NAME_FUNC_OFFSET(20119, glUniform2ivARB, glUniform2ivARB, NULL, 554), + NAME_FUNC_OFFSET(20132, glUniform3fARB, glUniform3fARB, NULL, 555), + NAME_FUNC_OFFSET(20144, glUniform3fvARB, glUniform3fvARB, NULL, 556), + NAME_FUNC_OFFSET(20157, glUniform3iARB, glUniform3iARB, NULL, 557), + NAME_FUNC_OFFSET(20169, glUniform3ivARB, glUniform3ivARB, NULL, 558), + NAME_FUNC_OFFSET(20182, glUniform4fARB, glUniform4fARB, NULL, 559), + NAME_FUNC_OFFSET(20194, glUniform4fvARB, glUniform4fvARB, NULL, 560), + NAME_FUNC_OFFSET(20207, glUniform4iARB, glUniform4iARB, NULL, 561), + NAME_FUNC_OFFSET(20219, glUniform4ivARB, glUniform4ivARB, NULL, 562), + NAME_FUNC_OFFSET(20232, glUniformMatrix2fvARB, glUniformMatrix2fvARB, NULL, 563), + NAME_FUNC_OFFSET(20251, glUniformMatrix3fvARB, glUniformMatrix3fvARB, NULL, 564), + NAME_FUNC_OFFSET(20270, glUniformMatrix4fvARB, glUniformMatrix4fvARB, NULL, 565), + NAME_FUNC_OFFSET(20289, glUseProgramObjectARB, glUseProgramObjectARB, NULL, 566), + NAME_FUNC_OFFSET(20302, glValidateProgramARB, glValidateProgramARB, NULL, 567), + NAME_FUNC_OFFSET(20320, glBindAttribLocationARB, glBindAttribLocationARB, NULL, 568), + NAME_FUNC_OFFSET(20341, glGetActiveAttribARB, glGetActiveAttribARB, NULL, 569), + NAME_FUNC_OFFSET(20359, glGetAttribLocationARB, glGetAttribLocationARB, NULL, 570), + NAME_FUNC_OFFSET(20379, glDrawBuffersARB, glDrawBuffersARB, NULL, 571), + NAME_FUNC_OFFSET(20393, glDrawBuffersARB, glDrawBuffersARB, NULL, 571), + NAME_FUNC_OFFSET(20410, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 573), + NAME_FUNC_OFFSET(20435, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 573), + NAME_FUNC_OFFSET(20457, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 574), + NAME_FUNC_OFFSET(20484, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 574), + NAME_FUNC_OFFSET(20508, glRenderbufferStorageMultisample, glRenderbufferStorageMultisample, NULL, 575), + NAME_FUNC_OFFSET(20544, gl_dispatch_stub_633, gl_dispatch_stub_633, NULL, 633), + NAME_FUNC_OFFSET(20560, gl_dispatch_stub_634, gl_dispatch_stub_634, NULL, 634), + NAME_FUNC_OFFSET(20579, glPointParameterfEXT, glPointParameterfEXT, NULL, 641), + NAME_FUNC_OFFSET(20597, glPointParameterfEXT, glPointParameterfEXT, NULL, 641), + NAME_FUNC_OFFSET(20618, glPointParameterfEXT, glPointParameterfEXT, NULL, 641), + NAME_FUNC_OFFSET(20640, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 642), + NAME_FUNC_OFFSET(20659, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 642), + NAME_FUNC_OFFSET(20681, glPointParameterfvEXT, glPointParameterfvEXT, NULL, 642), + NAME_FUNC_OFFSET(20704, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, 645), + NAME_FUNC_OFFSET(20723, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, 646), + NAME_FUNC_OFFSET(20743, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, 647), + NAME_FUNC_OFFSET(20762, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, 648), + NAME_FUNC_OFFSET(20782, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, 649), + NAME_FUNC_OFFSET(20801, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, 650), + NAME_FUNC_OFFSET(20821, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, 651), + NAME_FUNC_OFFSET(20840, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, 652), + NAME_FUNC_OFFSET(20860, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, 653), + NAME_FUNC_OFFSET(20879, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, 654), + NAME_FUNC_OFFSET(20899, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, 655), + NAME_FUNC_OFFSET(20919, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, 656), + NAME_FUNC_OFFSET(20940, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, 657), + NAME_FUNC_OFFSET(20960, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, 658), + NAME_FUNC_OFFSET(20981, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, 659), + NAME_FUNC_OFFSET(21001, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, 660), + NAME_FUNC_OFFSET(21022, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, 661), + NAME_FUNC_OFFSET(21046, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, 662), + NAME_FUNC_OFFSET(21064, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, 663), + NAME_FUNC_OFFSET(21084, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, 664), + NAME_FUNC_OFFSET(21102, glFogCoorddEXT, glFogCoorddEXT, NULL, 665), + NAME_FUNC_OFFSET(21114, glFogCoorddvEXT, glFogCoorddvEXT, NULL, 666), + NAME_FUNC_OFFSET(21127, glFogCoordfEXT, glFogCoordfEXT, NULL, 667), + NAME_FUNC_OFFSET(21139, glFogCoordfvEXT, glFogCoordfvEXT, NULL, 668), + NAME_FUNC_OFFSET(21152, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, 670), + NAME_FUNC_OFFSET(21172, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, 670), + NAME_FUNC_OFFSET(21196, glWindowPos2dMESA, glWindowPos2dMESA, NULL, 687), + NAME_FUNC_OFFSET(21210, glWindowPos2dMESA, glWindowPos2dMESA, NULL, 687), + NAME_FUNC_OFFSET(21227, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, 688), + NAME_FUNC_OFFSET(21242, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, 688), + NAME_FUNC_OFFSET(21260, glWindowPos2fMESA, glWindowPos2fMESA, NULL, 689), + NAME_FUNC_OFFSET(21274, glWindowPos2fMESA, glWindowPos2fMESA, NULL, 689), + NAME_FUNC_OFFSET(21291, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, 690), + NAME_FUNC_OFFSET(21306, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, 690), + NAME_FUNC_OFFSET(21324, glWindowPos2iMESA, glWindowPos2iMESA, NULL, 691), + NAME_FUNC_OFFSET(21338, glWindowPos2iMESA, glWindowPos2iMESA, NULL, 691), + NAME_FUNC_OFFSET(21355, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, 692), + NAME_FUNC_OFFSET(21370, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, 692), + NAME_FUNC_OFFSET(21388, glWindowPos2sMESA, glWindowPos2sMESA, NULL, 693), + NAME_FUNC_OFFSET(21402, glWindowPos2sMESA, glWindowPos2sMESA, NULL, 693), + NAME_FUNC_OFFSET(21419, glWindowPos2svMESA, glWindowPos2svMESA, NULL, 694), + NAME_FUNC_OFFSET(21434, glWindowPos2svMESA, glWindowPos2svMESA, NULL, 694), + NAME_FUNC_OFFSET(21452, glWindowPos3dMESA, glWindowPos3dMESA, NULL, 695), + NAME_FUNC_OFFSET(21466, glWindowPos3dMESA, glWindowPos3dMESA, NULL, 695), + NAME_FUNC_OFFSET(21483, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, 696), + NAME_FUNC_OFFSET(21498, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, 696), + NAME_FUNC_OFFSET(21516, glWindowPos3fMESA, glWindowPos3fMESA, NULL, 697), + NAME_FUNC_OFFSET(21530, glWindowPos3fMESA, glWindowPos3fMESA, NULL, 697), + NAME_FUNC_OFFSET(21547, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, 698), + NAME_FUNC_OFFSET(21562, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, 698), + NAME_FUNC_OFFSET(21580, glWindowPos3iMESA, glWindowPos3iMESA, NULL, 699), + NAME_FUNC_OFFSET(21594, glWindowPos3iMESA, glWindowPos3iMESA, NULL, 699), + NAME_FUNC_OFFSET(21611, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, 700), + NAME_FUNC_OFFSET(21626, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, 700), + NAME_FUNC_OFFSET(21644, glWindowPos3sMESA, glWindowPos3sMESA, NULL, 701), + NAME_FUNC_OFFSET(21658, glWindowPos3sMESA, glWindowPos3sMESA, NULL, 701), + NAME_FUNC_OFFSET(21675, glWindowPos3svMESA, glWindowPos3svMESA, NULL, 702), + NAME_FUNC_OFFSET(21690, glWindowPos3svMESA, glWindowPos3svMESA, NULL, 702), + NAME_FUNC_OFFSET(21708, glBindProgramNV, glBindProgramNV, NULL, 721), + NAME_FUNC_OFFSET(21725, glDeleteProgramsNV, glDeleteProgramsNV, NULL, 722), + NAME_FUNC_OFFSET(21745, glGenProgramsNV, glGenProgramsNV, NULL, 724), + NAME_FUNC_OFFSET(21762, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, 730), + NAME_FUNC_OFFSET(21788, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, 730), + NAME_FUNC_OFFSET(21817, glIsProgramNV, glIsProgramNV, NULL, 734), + NAME_FUNC_OFFSET(21832, glPointParameteriNV, glPointParameteriNV, NULL, 798), + NAME_FUNC_OFFSET(21850, glPointParameterivNV, glPointParameterivNV, NULL, 799), + NAME_FUNC_OFFSET(21869, gl_dispatch_stub_802, gl_dispatch_stub_802, NULL, 802), + NAME_FUNC_OFFSET(21890, gl_dispatch_stub_804, gl_dispatch_stub_804, NULL, 804), + NAME_FUNC_OFFSET(21906, glPrimitiveRestartIndexNV, glPrimitiveRestartIndexNV, NULL, 811), + NAME_FUNC_OFFSET(21930, gl_dispatch_stub_814, gl_dispatch_stub_814, NULL, 814), + NAME_FUNC_OFFSET(21954, gl_dispatch_stub_814, gl_dispatch_stub_814, NULL, 814), + NAME_FUNC_OFFSET(21981, glBindFramebufferEXT, glBindFramebufferEXT, NULL, 815), + NAME_FUNC_OFFSET(21999, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, 816), + NAME_FUNC_OFFSET(22018, glCheckFramebufferStatusEXT, glCheckFramebufferStatusEXT, NULL, 817), + NAME_FUNC_OFFSET(22043, glDeleteFramebuffersEXT, glDeleteFramebuffersEXT, NULL, 818), + NAME_FUNC_OFFSET(22064, glDeleteRenderbuffersEXT, glDeleteRenderbuffersEXT, NULL, 819), + NAME_FUNC_OFFSET(22086, glFramebufferRenderbufferEXT, glFramebufferRenderbufferEXT, NULL, 820), + NAME_FUNC_OFFSET(22112, glFramebufferTexture1DEXT, glFramebufferTexture1DEXT, NULL, 821), + NAME_FUNC_OFFSET(22135, glFramebufferTexture2DEXT, glFramebufferTexture2DEXT, NULL, 822), + NAME_FUNC_OFFSET(22158, glFramebufferTexture3DEXT, glFramebufferTexture3DEXT, NULL, 823), + NAME_FUNC_OFFSET(22181, glGenFramebuffersEXT, glGenFramebuffersEXT, NULL, 824), + NAME_FUNC_OFFSET(22199, glGenRenderbuffersEXT, glGenRenderbuffersEXT, NULL, 825), + NAME_FUNC_OFFSET(22218, glGenerateMipmapEXT, glGenerateMipmapEXT, NULL, 826), + NAME_FUNC_OFFSET(22235, glGetFramebufferAttachmentParameterivEXT, glGetFramebufferAttachmentParameterivEXT, NULL, 827), + NAME_FUNC_OFFSET(22273, glGetRenderbufferParameterivEXT, glGetRenderbufferParameterivEXT, NULL, 828), + NAME_FUNC_OFFSET(22302, glIsFramebufferEXT, glIsFramebufferEXT, NULL, 829), + NAME_FUNC_OFFSET(22318, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL, 830), + NAME_FUNC_OFFSET(22335, glRenderbufferStorageEXT, glRenderbufferStorageEXT, NULL, 831), + NAME_FUNC_OFFSET(22357, gl_dispatch_stub_832, gl_dispatch_stub_832, NULL, 832), + NAME_FUNC_OFFSET(22375, glBindFragDataLocationEXT, glBindFragDataLocationEXT, NULL, 835), + NAME_FUNC_OFFSET(22398, glGetFragDataLocationEXT, glGetFragDataLocationEXT, NULL, 836), + NAME_FUNC_OFFSET(22420, glGetUniformuivEXT, glGetUniformuivEXT, NULL, 837), + NAME_FUNC_OFFSET(22436, glGetVertexAttribIivEXT, glGetVertexAttribIivEXT, NULL, 838), + NAME_FUNC_OFFSET(22457, glGetVertexAttribIuivEXT, glGetVertexAttribIuivEXT, NULL, 839), + NAME_FUNC_OFFSET(22479, glUniform1uiEXT, glUniform1uiEXT, NULL, 840), + NAME_FUNC_OFFSET(22492, glUniform1uivEXT, glUniform1uivEXT, NULL, 841), + NAME_FUNC_OFFSET(22506, glUniform2uiEXT, glUniform2uiEXT, NULL, 842), + NAME_FUNC_OFFSET(22519, glUniform2uivEXT, glUniform2uivEXT, NULL, 843), + NAME_FUNC_OFFSET(22533, glUniform3uiEXT, glUniform3uiEXT, NULL, 844), + NAME_FUNC_OFFSET(22546, glUniform3uivEXT, glUniform3uivEXT, NULL, 845), + NAME_FUNC_OFFSET(22560, glUniform4uiEXT, glUniform4uiEXT, NULL, 846), + NAME_FUNC_OFFSET(22573, glUniform4uivEXT, glUniform4uivEXT, NULL, 847), + NAME_FUNC_OFFSET(22587, glVertexAttribI1iEXT, glVertexAttribI1iEXT, NULL, 848), + NAME_FUNC_OFFSET(22605, glVertexAttribI1ivEXT, glVertexAttribI1ivEXT, NULL, 849), + NAME_FUNC_OFFSET(22624, glVertexAttribI1uiEXT, glVertexAttribI1uiEXT, NULL, 850), + NAME_FUNC_OFFSET(22643, glVertexAttribI1uivEXT, glVertexAttribI1uivEXT, NULL, 851), + NAME_FUNC_OFFSET(22663, glVertexAttribI2iEXT, glVertexAttribI2iEXT, NULL, 852), + NAME_FUNC_OFFSET(22681, glVertexAttribI2ivEXT, glVertexAttribI2ivEXT, NULL, 853), + NAME_FUNC_OFFSET(22700, glVertexAttribI2uiEXT, glVertexAttribI2uiEXT, NULL, 854), + NAME_FUNC_OFFSET(22719, glVertexAttribI2uivEXT, glVertexAttribI2uivEXT, NULL, 855), + NAME_FUNC_OFFSET(22739, glVertexAttribI3iEXT, glVertexAttribI3iEXT, NULL, 856), + NAME_FUNC_OFFSET(22757, glVertexAttribI3ivEXT, glVertexAttribI3ivEXT, NULL, 857), + NAME_FUNC_OFFSET(22776, glVertexAttribI3uiEXT, glVertexAttribI3uiEXT, NULL, 858), + NAME_FUNC_OFFSET(22795, glVertexAttribI3uivEXT, glVertexAttribI3uivEXT, NULL, 859), + NAME_FUNC_OFFSET(22815, glVertexAttribI4bvEXT, glVertexAttribI4bvEXT, NULL, 860), + NAME_FUNC_OFFSET(22834, glVertexAttribI4iEXT, glVertexAttribI4iEXT, NULL, 861), + NAME_FUNC_OFFSET(22852, glVertexAttribI4ivEXT, glVertexAttribI4ivEXT, NULL, 862), + NAME_FUNC_OFFSET(22871, glVertexAttribI4svEXT, glVertexAttribI4svEXT, NULL, 863), + NAME_FUNC_OFFSET(22890, glVertexAttribI4ubvEXT, glVertexAttribI4ubvEXT, NULL, 864), + NAME_FUNC_OFFSET(22910, glVertexAttribI4uiEXT, glVertexAttribI4uiEXT, NULL, 865), + NAME_FUNC_OFFSET(22929, glVertexAttribI4uivEXT, glVertexAttribI4uivEXT, NULL, 866), + NAME_FUNC_OFFSET(22949, glVertexAttribI4usvEXT, glVertexAttribI4usvEXT, NULL, 867), + NAME_FUNC_OFFSET(22969, glVertexAttribIPointerEXT, glVertexAttribIPointerEXT, NULL, 868), + NAME_FUNC_OFFSET(22992, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, 869), + NAME_FUNC_OFFSET(23018, glColorMaskIndexedEXT, glColorMaskIndexedEXT, NULL, 870), + NAME_FUNC_OFFSET(23031, glDisableIndexedEXT, glDisableIndexedEXT, NULL, 871), + NAME_FUNC_OFFSET(23042, glEnableIndexedEXT, glEnableIndexedEXT, NULL, 872), + NAME_FUNC_OFFSET(23052, glGetBooleanIndexedvEXT, glGetBooleanIndexedvEXT, NULL, 873), + NAME_FUNC_OFFSET(23068, glGetIntegerIndexedvEXT, glGetIntegerIndexedvEXT, NULL, 874), + NAME_FUNC_OFFSET(23084, glIsEnabledIndexedEXT, glIsEnabledIndexedEXT, NULL, 875), + NAME_FUNC_OFFSET(23097, glGetTexParameterIivEXT, glGetTexParameterIivEXT, NULL, 878), + NAME_FUNC_OFFSET(23118, glGetTexParameterIuivEXT, glGetTexParameterIuivEXT, NULL, 879), + NAME_FUNC_OFFSET(23140, glTexParameterIivEXT, glTexParameterIivEXT, NULL, 880), + NAME_FUNC_OFFSET(23158, glTexParameterIuivEXT, glTexParameterIuivEXT, NULL, 881), + NAME_FUNC_OFFSET(23177, glBeginConditionalRenderNV, glBeginConditionalRenderNV, NULL, 882), + NAME_FUNC_OFFSET(23202, glEndConditionalRenderNV, glEndConditionalRenderNV, NULL, 883), + NAME_FUNC_OFFSET(23225, glBeginTransformFeedbackEXT, glBeginTransformFeedbackEXT, NULL, 884), + NAME_FUNC_OFFSET(23250, glBindBufferBaseEXT, glBindBufferBaseEXT, NULL, 885), + NAME_FUNC_OFFSET(23267, glBindBufferRangeEXT, glBindBufferRangeEXT, NULL, 887), + NAME_FUNC_OFFSET(23285, glEndTransformFeedbackEXT, glEndTransformFeedbackEXT, NULL, 888), + NAME_FUNC_OFFSET(23308, glGetTransformFeedbackVaryingEXT, glGetTransformFeedbackVaryingEXT, NULL, 889), + NAME_FUNC_OFFSET(23338, glTransformFeedbackVaryingsEXT, glTransformFeedbackVaryingsEXT, NULL, 890), + NAME_FUNC_OFFSET(23366, glProvokingVertexEXT, glProvokingVertexEXT, NULL, 891), NAME_FUNC_OFFSET(-1, NULL, NULL, NULL, 0) }; diff --git a/src/mesa/SConscript b/src/mesa/SConscript index 261242f6fc9..2d8a17727c5 100644 --- a/src/mesa/SConscript +++ b/src/mesa/SConscript @@ -100,6 +100,7 @@ main_sources = [ 'main/readpix.c', 'main/remap.c', 'main/renderbuffer.c', + 'main/samplerobj.c', 'main/scissor.c', 'main/shaderapi.c', 'main/shaderobj.c', @@ -143,6 +144,65 @@ math_sources = [ 'math/m_xform.c', ] +math_xform_sources = [ + 'math/m_xform.c' +] + +swrast_sources = [ + 'swrast/s_aaline.c', + 'swrast/s_aatriangle.c', + 'swrast/s_accum.c', + 'swrast/s_alpha.c', + 'swrast/s_atifragshader.c', + 'swrast/s_bitmap.c', + 'swrast/s_blend.c', + 'swrast/s_blit.c', + 'swrast/s_clear.c', + 'swrast/s_copypix.c', + 'swrast/s_context.c', + 'swrast/s_depth.c', + 'swrast/s_drawpix.c', + 'swrast/s_feedback.c', + 'swrast/s_fog.c', + 'swrast/s_fragprog.c', + 'swrast/s_lines.c', + 'swrast/s_logic.c', + 'swrast/s_masking.c', + 'swrast/s_points.c', + 'swrast/s_readpix.c', + 'swrast/s_span.c', + 'swrast/s_stencil.c', + 'swrast/s_texcombine.c', + 'swrast/s_texfilter.c', + 'swrast/s_triangle.c', + 'swrast/s_zoom.c', +] + +swrast_setup_sources = [ + 'swrast_setup/ss_context.c', + 'swrast_setup/ss_triangle.c', +] + +tnl_sources = [ + 'tnl/t_context.c', + 'tnl/t_pipeline.c', + 'tnl/t_draw.c', + 'tnl/t_rasterpos.c', + 'tnl/t_vb_program.c', + 'tnl/t_vb_render.c', + 'tnl/t_vb_texgen.c', + 'tnl/t_vb_texmat.c', + 'tnl/t_vb_vertex.c', + 'tnl/t_vb_fog.c', + 'tnl/t_vb_light.c', + 'tnl/t_vb_normals.c', + 'tnl/t_vb_points.c', + 'tnl/t_vp_build.c', + 'tnl/t_vertex.c', + 'tnl/t_vertex_sse.c', + 'tnl/t_vertex_generic.c', +] + vbo_sources = [ 'vbo/vbo_context.c', 'vbo/vbo_exec.c', @@ -160,12 +220,6 @@ vbo_sources = [ 'vbo/vbo_save_loopback.c', ] -vf_sources = [ - 'vf/vf.c', - 'vf/vf_generic.c', - 'vf/vf_sse.c', -] - statetracker_sources = [ 'state_tracker/st_atom.c', 'state_tracker/st_atom_blend.c', @@ -250,12 +304,21 @@ program_sources = [ program_parse[0], ] +common_driver_sources = [ + 'drivers/common/driverfuncs.c', + 'drivers/common/meta.c', +] + mesa_sources = ( main_sources + math_sources + + math_xform_sources + program_sources + vbo_sources + - vf_sources + + tnl_sources + + swrast_sources + + swrast_setup_sources + + common_driver_sources + statetracker_sources ) @@ -390,6 +453,18 @@ if env['gcc'] and env['platform'] != 'windows': # build dir) to the include path env.Append(CPPPATH = [matypes[0].dir]) + +# Create the git_sha1.h file if it doesn't exist already +try: + f = open('main/git_sha1.h', 'r') + f.close() +except IOError: + f = open('main/git_sha1.h', 'w') + f.close() +# and update CPPPATH so the git_sha1.h header can be found +env.Append(CPPPATH = ["#" + env['build_dir'] + "/mesa/main"]) + + # # Libraries # @@ -402,3 +477,5 @@ mesa = env.ConvenienceLibrary( env.Alias('mesa', mesa) Export('mesa') + +SConscript('drivers/SConscript') diff --git a/src/mesa/drivers/SConscript b/src/mesa/drivers/SConscript new file mode 100644 index 00000000000..ab0f8943290 --- /dev/null +++ b/src/mesa/drivers/SConscript @@ -0,0 +1,6 @@ +Import('*') + +SConscript('osmesa/SConscript') + +if env['platform'] == 'windows': + SConscript('windows/gdi/SConscript') diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c index 2b00e8979d2..6c35fa10d8a 100644 --- a/src/mesa/drivers/common/meta.c +++ b/src/mesa/drivers/common/meta.c @@ -92,6 +92,8 @@ #define META_TEXTURE 0x1000 #define META_VERTEX 0x2000 #define META_VIEWPORT 0x4000 +#define META_CLAMP_FRAGMENT_COLOR 0x8000 +#define META_CLAMP_VERTEX_COLOR 0x10000 /*@}*/ @@ -180,6 +182,12 @@ struct save_state GLint ViewportX, ViewportY, ViewportW, ViewportH; GLclampd DepthNear, DepthFar; + /** META_CLAMP_FRAGMENT_COLOR */ + GLenum ClampFragmentColor; + + /** META_CLAMP_VERTEX_COLOR */ + GLenum ClampVertexColor; + /** Miscellaneous (always disabled) */ GLboolean Lighting; }; @@ -569,6 +577,26 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state) _mesa_DepthRange(0.0, 1.0); } + if (state & META_CLAMP_FRAGMENT_COLOR) { + save->ClampFragmentColor = ctx->Color.ClampFragmentColor; + + /* Generally in here we want to do clamping according to whether + * it's for the pixel path (ClampFragmentColor is GL_TRUE), + * regardless of the internal implementation of the metaops. + */ + if (ctx->Color.ClampFragmentColor != GL_TRUE) + _mesa_ClampColorARB(GL_CLAMP_FRAGMENT_COLOR, GL_FALSE); + } + + if (state & META_CLAMP_VERTEX_COLOR) { + save->ClampVertexColor = ctx->Light.ClampVertexColor; + + /* Generally in here we never want vertex color clamping -- + * result clamping is only dependent on fragment clamping. + */ + _mesa_ClampColorARB(GL_CLAMP_VERTEX_COLOR, GL_FALSE); + } + /* misc */ { save->Lighting = ctx->Light.Enabled; @@ -833,6 +861,14 @@ _mesa_meta_end(struct gl_context *ctx) _mesa_DepthRange(save->DepthNear, save->DepthFar); } + if (state & META_CLAMP_FRAGMENT_COLOR) { + _mesa_ClampColorARB(GL_CLAMP_FRAGMENT_COLOR, save->ClampFragmentColor); + } + + if (state & META_CLAMP_VERTEX_COLOR) { + _mesa_ClampColorARB(GL_CLAMP_VERTEX_COLOR, save->ClampVertexColor); + } + /* misc */ if (save->Lighting) { _mesa_set_enable(ctx, GL_LIGHTING, GL_TRUE); @@ -1124,12 +1160,12 @@ blitframebuffer_texture(struct gl_context *ctx, if (readAtt && readAtt->Texture) { const struct gl_texture_object *texObj = readAtt->Texture; const GLuint srcLevel = readAtt->TextureLevel; - const GLenum minFilterSave = texObj->MinFilter; - const GLenum magFilterSave = texObj->MagFilter; + const GLenum minFilterSave = texObj->Sampler.MinFilter; + const GLenum magFilterSave = texObj->Sampler.MagFilter; const GLint baseLevelSave = texObj->BaseLevel; const GLint maxLevelSave = texObj->MaxLevel; - const GLenum wrapSSave = texObj->WrapS; - const GLenum wrapTSave = texObj->WrapT; + const GLenum wrapSSave = texObj->Sampler.WrapS; + const GLenum wrapTSave = texObj->Sampler.WrapT; const GLenum target = texObj->Target; if (drawAtt->Texture == readAtt->Texture) { @@ -1441,6 +1477,9 @@ _mesa_meta_Clear(struct gl_context *ctx, GLbitfield buffers) /* GL_COLOR_BUFFER_BIT */ if (buffers & BUFFER_BITS_COLOR) { /* leave colormask, glDrawBuffer state as-is */ + + /* Clears never have the color clamped. */ + _mesa_ClampColorARB(GL_CLAMP_FRAGMENT_COLOR, GL_FALSE); } else { ASSERT(metaSave & META_COLOR_MASK); @@ -1494,10 +1533,10 @@ _mesa_meta_Clear(struct gl_context *ctx, GLbitfield buffers) /* vertex colors */ for (i = 0; i < 4; i++) { - verts[i].r = ctx->Color.ClearColor[0]; - verts[i].g = ctx->Color.ClearColor[1]; - verts[i].b = ctx->Color.ClearColor[2]; - verts[i].a = ctx->Color.ClearColor[3]; + verts[i].r = ctx->Color.ClearColorUnclamped[0]; + verts[i].g = ctx->Color.ClearColorUnclamped[1]; + verts[i].b = ctx->Color.ClearColorUnclamped[2]; + verts[i].a = ctx->Color.ClearColorUnclamped[3]; } /* upload new vertex data */ @@ -1803,6 +1842,14 @@ _mesa_meta_DrawPixels(struct gl_context *ctx, texIntFormat = format; else texIntFormat = GL_RGBA; + + /* If we're not supposed to clamp the resulting color, then just + * promote our texture to fully float. We could do better by + * just going for the matching set of channels, in floating + * point. + */ + if (ctx->Color.ClampFragmentColor != GL_TRUE) + texIntFormat = GL_RGBA32F; } else if (_mesa_is_stencil_format(format)) { if (ctx->Extensions.ARB_fragment_program && @@ -1861,6 +1908,7 @@ _mesa_meta_DrawPixels(struct gl_context *ctx, META_TRANSFORM | META_VERTEX | META_VIEWPORT | + META_CLAMP_FRAGMENT_COLOR | metaExtraSave)); newTex = alloc_texture(tex, width, height, texIntFormat); @@ -2259,13 +2307,13 @@ _mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target, struct vertex verts[4]; const GLuint baseLevel = texObj->BaseLevel; const GLuint maxLevel = texObj->MaxLevel; - const GLenum minFilterSave = texObj->MinFilter; - const GLenum magFilterSave = texObj->MagFilter; + const GLenum minFilterSave = texObj->Sampler.MinFilter; + const GLenum magFilterSave = texObj->Sampler.MagFilter; const GLint maxLevelSave = texObj->MaxLevel; const GLboolean genMipmapSave = texObj->GenerateMipmap; - const GLenum wrapSSave = texObj->WrapS; - const GLenum wrapTSave = texObj->WrapT; - const GLenum wrapRSave = texObj->WrapR; + const GLenum wrapSSave = texObj->Sampler.WrapS; + const GLenum wrapTSave = texObj->Sampler.WrapT; + const GLenum wrapRSave = texObj->Sampler.WrapR; const GLuint fboSave = ctx->DrawBuffer->Name; const GLuint original_active_unit = ctx->Texture.CurrentUnit; GLenum faceTarget; diff --git a/src/mesa/drivers/dri/common/spantmp2.h b/src/mesa/drivers/dri/common/spantmp2.h index f436d1398c2..abd79562f98 100644 --- a/src/mesa/drivers/dri/common/spantmp2.h +++ b/src/mesa/drivers/dri/common/spantmp2.h @@ -48,15 +48,6 @@ #define HW_WRITE_CLIPLOOP() HW_CLIPLOOP() #endif -#ifdef SPANTMP_MESA_FMT -#define SPANTMP_PIXEL_FMT GL_NONE -#define SPANTMP_PIXEL_TYPE GL_NONE -#endif - -#ifndef SPANTMP_MESA_FMT -#define SPANTMP_MESA_FMT MESA_FORMAT_COUNT -#endif - #if (SPANTMP_PIXEL_FMT == GL_RGB) && (SPANTMP_PIXEL_TYPE == GL_UNSIGNED_SHORT_5_6_5) /** @@ -454,118 +445,6 @@ rgba[3] = p; \ } while (0) -#elif (SPANTMP_MESA_FMT == MESA_FORMAT_R8) - -#ifndef GET_VALUE -#ifndef GET_PTR -#define GET_PTR(_x, _y) ( buf + (_x) + (_y) * pitch) -#endif - -#define GET_VALUE(_x, _y) *(volatile GLubyte *)(GET_PTR(_x, _y)) -#define PUT_VALUE(_x, _y, _v) *(volatile GLubyte *)(GET_PTR(_x, _y)) = (_v) -#endif /* GET_VALUE */ - -# define INIT_MONO_PIXEL(p, color) \ - p = color[0] - -# define WRITE_RGBA(_x, _y, r, g, b, a) \ - PUT_VALUE(_x, _y, r) - -#define WRITE_PIXEL(_x, _y, p) PUT_VALUE(_x, _y, p) - -#define READ_RGBA( rgba, _x, _y ) \ - do { \ - GLubyte p = GET_VALUE(_x, _y); \ - rgba[0] = p; \ - rgba[1] = 0; \ - rgba[2] = 0; \ - rgba[3] = 0; \ - } while (0) - -#elif (SPANTMP_MESA_FMT == MESA_FORMAT_RG88) - -#ifndef GET_VALUE -#ifndef GET_PTR -#define GET_PTR(_x, _y) ( buf + (_x) * 2 + (_y) * pitch) -#endif - -#define GET_VALUE(_x, _y) *(volatile GLushort *)(GET_PTR(_x, _y)) -#define PUT_VALUE(_x, _y, _v) *(volatile GLushort *)(GET_PTR(_x, _y)) = (_v) -#endif /* GET_VALUE */ - -# define INIT_MONO_PIXEL(p, color) \ - PACK_COLOR_8888(color[0], color[1], 0, 0) - -# define WRITE_RGBA(_x, _y, r, g, b, a) \ - PUT_VALUE(_x, _y, r) - -#define WRITE_PIXEL(_x, _y, p) PUT_VALUE(_x, _y, p) - -#define READ_RGBA( rgba, _x, _y ) \ - do { \ - GLushort p = GET_VALUE(_x, _y); \ - rgba[0] = p & 0xff; \ - rgba[1] = (p >> 8) & 0xff; \ - rgba[2] = 0; \ - rgba[3] = 0; \ - } while (0) - -#elif (SPANTMP_MESA_FMT == MESA_FORMAT_R16) - -#ifndef GET_VALUE -#ifndef GET_PTR -#define GET_PTR(_x, _y) ( buf + (_x) * 2 + (_y) * pitch) -#endif - -#define GET_VALUE(_x, _y) *(volatile GLushort *)(GET_PTR(_x, _y)) -#define PUT_VALUE(_x, _y, _v) *(volatile GLushort *)(GET_PTR(_x, _y)) = (_v) -#endif /* GET_VALUE */ - -# define INIT_MONO_PIXEL(p, color) \ - p = color[0] - -# define WRITE_RGBA(_x, _y, r, g, b, a) \ - PUT_VALUE(_x, _y, r) - -#define WRITE_PIXEL(_x, _y, p) PUT_VALUE(_x, _y, p) - -#define READ_RGBA( rgba, _x, _y ) \ - do { \ - GLushort p = GET_VALUE(_x, _y); \ - rgba[0] = p; \ - rgba[1] = 0; \ - rgba[2] = 0; \ - rgba[3] = 0; \ - } while (0) - -#elif (SPANTMP_MESA_FMT == MESA_FORMAT_RG1616) - -#ifndef GET_VALUE -#ifndef GET_PTR -#define GET_PTR(_x, _y) ( buf + (_x) * 4 + (_y) * pitch) -#endif - -#define GET_VALUE(_x, _y) *(volatile GLuint *)(GET_PTR(_x, _y)) -#define PUT_VALUE(_x, _y, _v) *(volatile GLuint *)(GET_PTR(_x, _y)) = (_v) -#endif /* GET_VALUE */ - -# define INIT_MONO_PIXEL(p, color) \ - ((color[1] << 16) | (color[0])) - -# define WRITE_RGBA(_x, _y, r, g, b, a) \ - PUT_VALUE(_x, _y, r) - -#define WRITE_PIXEL(_x, _y, p) PUT_VALUE(_x, _y, p) - -#define READ_RGBA( rgba, _x, _y ) \ - do { \ - GLuint p = GET_VALUE(_x, _y); \ - rgba[0] = p & 0xffff; \ - rgba[1] = (p >> 16) & 0xffff; \ - rgba[2] = 0; \ - rgba[3] = 0; \ - } while (0) - #else #error SPANTMP_PIXEL_FMT must be set to a valid value! #endif @@ -1035,4 +914,3 @@ static void TAG(InitPointers)(struct gl_renderbuffer *rb) #undef GET_PTR #undef SPANTMP_PIXEL_FMT #undef SPANTMP_PIXEL_TYPE -#undef SPANTMP_MESA_FMT diff --git a/src/mesa/drivers/dri/common/texmem.c b/src/mesa/drivers/dri/common/texmem.c index 8eec07d5bcc..e927cf0addd 100644 --- a/src/mesa/drivers/dri/common/texmem.c +++ b/src/mesa/drivers/dri/common/texmem.c @@ -1264,17 +1264,18 @@ driCalculateTextureFirstLastLevel( driTextureObject * t ) case GL_TEXTURE_2D: case GL_TEXTURE_3D: case GL_TEXTURE_CUBE_MAP: - if (tObj->MinFilter == GL_NEAREST || tObj->MinFilter == GL_LINEAR) { + if (tObj->Sampler.MinFilter == GL_NEAREST || + tObj->Sampler.MinFilter == GL_LINEAR) { /* GL_NEAREST and GL_LINEAR only care about GL_TEXTURE_BASE_LEVEL. */ firstLevel = lastLevel = tObj->BaseLevel; } else { - firstLevel = tObj->BaseLevel + (GLint)(tObj->MinLod + 0.5); + firstLevel = tObj->BaseLevel + (GLint)(tObj->Sampler.MinLod + 0.5); firstLevel = MAX2(firstLevel, tObj->BaseLevel); firstLevel = MIN2(firstLevel, tObj->BaseLevel + baseImage->MaxLog2); - lastLevel = tObj->BaseLevel + (GLint)(tObj->MaxLod + 0.5); + lastLevel = tObj->BaseLevel + (GLint)(tObj->Sampler.MaxLod + 0.5); lastLevel = MAX2(lastLevel, t->tObj->BaseLevel); lastLevel = MIN2(lastLevel, t->tObj->BaseLevel + baseImage->MaxLog2); lastLevel = MIN2(lastLevel, t->tObj->MaxLevel); diff --git a/src/mesa/drivers/dri/common/utils.c b/src/mesa/drivers/dri/common/utils.c index 083edfaa9b4..d8281838233 100644 --- a/src/mesa/drivers/dri/common/utils.c +++ b/src/mesa/drivers/dri/common/utils.c @@ -96,7 +96,6 @@ driParseDebugString( const char * debug, * * \param buffer Buffer to hold the \c GL_RENDERER string. * \param hardware_name Name of the hardware. - * \param driver_date Driver date. * \param agp_mode AGP mode (speed). * * \returns @@ -105,12 +104,12 @@ driParseDebugString( const char * debug, */ unsigned driGetRendererString( char * buffer, const char * hardware_name, - const char * driver_date, GLuint agp_mode ) + GLuint agp_mode ) { unsigned offset; char *cpu; - offset = sprintf( buffer, "Mesa DRI %s %s", hardware_name, driver_date ); + offset = sprintf( buffer, "Mesa DRI %s", hardware_name ); /* Append any AGP-specific information. */ diff --git a/src/mesa/drivers/dri/common/utils.h b/src/mesa/drivers/dri/common/utils.h index 6349fb4b95c..a1c9ea604ee 100644 --- a/src/mesa/drivers/dri/common/utils.h +++ b/src/mesa/drivers/dri/common/utils.h @@ -76,7 +76,7 @@ extern unsigned driParseDebugString( const char * debug, const struct dri_debug_control * control ); extern unsigned driGetRendererString( char * buffer, - const char * hardware_name, const char * driver_date, GLuint agp_mode ); + const char * hardware_name, GLuint agp_mode ); extern void driInitExtensions( struct gl_context * ctx, const struct dri_extension * card_extensions, GLboolean enable_imaging ); diff --git a/src/mesa/drivers/dri/common/xmlconfig.c b/src/mesa/drivers/dri/common/xmlconfig.c index 0312c072437..0226b38c4fc 100644 --- a/src/mesa/drivers/dri/common/xmlconfig.c +++ b/src/mesa/drivers/dri/common/xmlconfig.c @@ -64,7 +64,25 @@ extern char *program_invocation_name, *program_invocation_short_name; the basename to match BSD getprogname() */ # include <stdlib.h> # include <libgen.h> -# define GET_PROGRAM_NAME() basename(getexecname()) + +static const char *__getProgramName () { + static const char *progname; + + if (progname == NULL) { + const char *e = getexecname(); + if (e != NULL) { + /* Have to make a copy since getexecname can return a readonly + string, but basename expects to be able to modify its arg. */ + char *n = strdup(e); + if (n != NULL) { + progname = basename(n); + } + } + } + return progname; +} + +# define GET_PROGRAM_NAME() __getProgramName() #endif #if !defined(GET_PROGRAM_NAME) diff --git a/src/mesa/drivers/dri/i810/i810context.c b/src/mesa/drivers/dri/i810/i810context.c index 90dbb6bbe80..604b1e36f97 100644 --- a/src/mesa/drivers/dri/i810/i810context.c +++ b/src/mesa/drivers/dri/i810/i810context.c @@ -67,8 +67,6 @@ int I810_DEBUG = (0); PUBLIC const char __driConfigOptions[] = { 0 }; const GLuint __driNConfigOptions = 0; -#define DRIVER_DATE "20050821" - static const GLubyte *i810GetString( struct gl_context *ctx, GLenum name ) { static char buffer[128]; @@ -88,7 +86,7 @@ static const GLubyte *i810GetString( struct gl_context *ctx, GLenum name ) default: chipset = "Unknown i810-class Chipset"; break; } - (void) driGetRendererString( buffer, chipset, DRIVER_DATE, 0 ); + (void) driGetRendererString( buffer, chipset, 0 ); return (GLubyte *) buffer; } default: diff --git a/src/mesa/drivers/dri/i810/i810tex.c b/src/mesa/drivers/dri/i810/i810tex.c index 49364aeb225..dba4ebaa5c7 100644 --- a/src/mesa/drivers/dri/i810/i810tex.c +++ b/src/mesa/drivers/dri/i810/i810tex.c @@ -204,10 +204,10 @@ i810AllocTexObj( struct gl_context *ctx, struct gl_texture_object *texObj ) make_empty_list( & t->base ); - i810SetTexWrapping( t, texObj->WrapS, texObj->WrapT ); + i810SetTexWrapping( t, texObj->Sampler.WrapS, texObj->Sampler.WrapT ); /*i830SetTexMaxAnisotropy( t, texObj->MaxAnisotropy );*/ - i810SetTexFilter( imesa, t, texObj->MinFilter, texObj->MagFilter, bias ); - i810SetTexBorderColor( t, texObj->BorderColor.f ); + i810SetTexFilter( imesa, t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter, bias ); + i810SetTexBorderColor( t, texObj->Sampler.BorderColor.f ); } return t; @@ -238,17 +238,17 @@ static void i810TexParameter( struct gl_context *ctx, GLenum target, case GL_TEXTURE_MAG_FILTER: { GLfloat bias = ctx->Texture.Unit[ctx->Texture.CurrentUnit].LodBias; - i810SetTexFilter( imesa, t, tObj->MinFilter, tObj->MagFilter, bias ); + i810SetTexFilter( imesa, t, tObj->Sampler.MinFilter, tObj->Sampler.MagFilter, bias ); } break; case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: - i810SetTexWrapping( t, tObj->WrapS, tObj->WrapT ); + i810SetTexWrapping( t, tObj->Sampler.WrapS, tObj->Sampler.WrapT ); break; case GL_TEXTURE_BORDER_COLOR: - i810SetTexBorderColor( t, tObj->BorderColor.f ); + i810SetTexBorderColor( t, tObj->Sampler.BorderColor.f ); break; case GL_TEXTURE_BASE_LEVEL: diff --git a/src/mesa/drivers/dri/i915/i830_texstate.c b/src/mesa/drivers/dri/i915/i830_texstate.c index c35b4b5ed06..7554bd5e7b9 100644 --- a/src/mesa/drivers/dri/i915/i830_texstate.c +++ b/src/mesa/drivers/dri/i915/i830_texstate.c @@ -193,7 +193,7 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) float maxlod; uint32_t minlod_fixed, maxlod_fixed; - switch (tObj->MinFilter) { + switch (tObj->Sampler.MinFilter) { case GL_NEAREST: minFilt = FILTER_NEAREST; mipFilt = MIPFILTER_NONE; @@ -222,12 +222,12 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) return GL_FALSE; } - if (tObj->MaxAnisotropy > 1.0) { + if (tObj->Sampler.MaxAnisotropy > 1.0) { minFilt = FILTER_ANISOTROPIC; magFilt = FILTER_ANISOTROPIC; } else { - switch (tObj->MagFilter) { + switch (tObj->Sampler.MagFilter) { case GL_NEAREST: magFilt = FILTER_NEAREST; break; @@ -239,7 +239,7 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) } } - lodbias = (int) ((tUnit->LodBias + tObj->LodBias) * 16.0); + lodbias = (int) ((tUnit->LodBias + tObj->Sampler.LodBias) * 16.0); if (lodbias < -64) lodbias = -64; if (lodbias > 63) @@ -259,8 +259,8 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) * addressable (smallest resolution) LOD. Use it to cover both * MAX_LEVEL and MAX_LOD. */ - minlod_fixed = U_FIXED(CLAMP(tObj->MinLod, 0.0, 11), 4); - maxlod = MIN2(tObj->MaxLod, tObj->_MaxLevel - tObj->BaseLevel); + minlod_fixed = U_FIXED(CLAMP(tObj->Sampler.MinLod, 0.0, 11), 4); + maxlod = MIN2(tObj->Sampler.MaxLod, tObj->_MaxLevel - tObj->BaseLevel); if (intel->intelScreen->deviceID == PCI_CHIP_I855_GM || intel->intelScreen->deviceID == PCI_CHIP_I865_G) { maxlod_fixed = U_FIXED(CLAMP(maxlod, 0.0, 11.75), 2); @@ -279,8 +279,8 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) } { - GLenum ws = tObj->WrapS; - GLenum wt = tObj->WrapT; + GLenum ws = tObj->Sampler.WrapS; + GLenum wt = tObj->Sampler.WrapT; /* 3D textures not available on i830 @@ -300,10 +300,10 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) } /* convert border color from float to ubyte */ - CLAMPED_FLOAT_TO_UBYTE(border[0], tObj->BorderColor.f[0]); - CLAMPED_FLOAT_TO_UBYTE(border[1], tObj->BorderColor.f[1]); - CLAMPED_FLOAT_TO_UBYTE(border[2], tObj->BorderColor.f[2]); - CLAMPED_FLOAT_TO_UBYTE(border[3], tObj->BorderColor.f[3]); + CLAMPED_FLOAT_TO_UBYTE(border[0], tObj->Sampler.BorderColor.f[0]); + CLAMPED_FLOAT_TO_UBYTE(border[1], tObj->Sampler.BorderColor.f[1]); + CLAMPED_FLOAT_TO_UBYTE(border[2], tObj->Sampler.BorderColor.f[2]); + CLAMPED_FLOAT_TO_UBYTE(border[3], tObj->Sampler.BorderColor.f[3]); state[I830_TEXREG_TM0S4] = PACK_COLOR_8888(border[3], border[0], diff --git a/src/mesa/drivers/dri/i915/i915_context.c b/src/mesa/drivers/dri/i915/i915_context.c index 7389a1d57a9..f02f2d78267 100644 --- a/src/mesa/drivers/dri/i915/i915_context.c +++ b/src/mesa/drivers/dri/i915/i915_context.c @@ -69,8 +69,6 @@ i915InvalidateState(struct gl_context * ctx, GLuint new_state) p->params_uptodate = 0; } - if (new_state & (_NEW_FOG | _NEW_HINT | _NEW_PROGRAM | _NEW_PROGRAM_CONSTANTS)) - i915_update_fog(ctx); if (new_state & (_NEW_STENCIL | _NEW_BUFFERS | _NEW_POLYGON)) i915_update_stencil(ctx); if (new_state & (_NEW_LIGHT)) @@ -209,5 +207,11 @@ i915CreateContext(int api, i915InitState(i915); + /* Always enable pixel fog. Vertex fog using fog coord will conflict + * with fog code appended onto fragment program. + */ + _tnl_allow_vertex_fog(ctx, 0); + _tnl_allow_pixel_fog(ctx, 1); + return GL_TRUE; } diff --git a/src/mesa/drivers/dri/i915/i915_context.h b/src/mesa/drivers/dri/i915/i915_context.h index 601620275f4..577a01e290c 100644 --- a/src/mesa/drivers/dri/i915/i915_context.h +++ b/src/mesa/drivers/dri/i915/i915_context.h @@ -46,7 +46,6 @@ #define I915_UPLOAD_STIPPLE 0x4 #define I915_UPLOAD_PROGRAM 0x8 #define I915_UPLOAD_CONSTANTS 0x10 -#define I915_UPLOAD_FOG 0x20 #define I915_UPLOAD_INVARIENT 0x40 #define I915_UPLOAD_DEFAULTS 0x80 #define I915_UPLOAD_RASTER_RULES 0x100 @@ -91,13 +90,6 @@ #define I915_BLENDREG_BLENDCOLOR1 2 #define I915_BLEND_SETUP_SIZE 3 -#define I915_FOGREG_COLOR 0 -#define I915_FOGREG_MODE0 1 -#define I915_FOGREG_MODE1 2 -#define I915_FOGREG_MODE2 3 -#define I915_FOGREG_MODE3 4 -#define I915_FOG_SETUP_SIZE 5 - #define I915_STPREG_ST0 0 #define I915_STPREG_ST1 1 #define I915_STP_SETUP_SIZE 2 @@ -227,7 +219,6 @@ struct i915_hw_state GLuint Blend[I915_BLEND_SETUP_SIZE]; GLuint Buffer[I915_DEST_SETUP_SIZE]; GLuint Stipple[I915_STP_SETUP_SIZE]; - GLuint Fog[I915_FOG_SETUP_SIZE]; GLuint Defaults[I915_DEF_SETUP_SIZE]; GLuint RasterRules[I915_RASTER_RULES_SETUP_SIZE]; GLuint Tex[I915_TEX_UNITS][I915_TEX_SETUP_SIZE]; @@ -254,16 +245,11 @@ struct i915_hw_state GLuint emitted; /* I915_UPLOAD_* */ }; -#define I915_FOG_PIXEL 2 -#define I915_FOG_VERTEX 1 -#define I915_FOG_NONE 0 - struct i915_context { struct intel_context intel; GLuint last_ReallyEnabled; - GLuint vertex_fog; GLuint lodbias_ss2[MAX_TEXTURE_UNITS]; @@ -350,7 +336,6 @@ extern void i915_print_ureg(const char *msg, GLuint ureg); */ extern void i915InitStateFunctions(struct dd_function_table *functions); extern void i915InitState(struct i915_context *i915); -extern void i915_update_fog(struct gl_context * ctx); extern void i915_update_stencil(struct gl_context * ctx); extern void i915_update_provoking_vertex(struct gl_context *ctx); diff --git a/src/mesa/drivers/dri/i915/i915_fragprog.c b/src/mesa/drivers/dri/i915/i915_fragprog.c index 2bfe665cb65..b67ebb9a1ec 100644 --- a/src/mesa/drivers/dri/i915/i915_fragprog.c +++ b/src/mesa/drivers/dri/i915/i915_fragprog.c @@ -1285,15 +1285,6 @@ i915ProgramStringNotify(struct gl_context * ctx, if (target == GL_FRAGMENT_PROGRAM_ARB) { struct i915_fragment_program *p = (struct i915_fragment_program *) prog; p->translated = 0; - - /* Hack: make sure fog is correctly enabled according to this - * fragment program's fog options. - */ - if (p->FragProg.FogOption) { - /* add extra instructions to do fog, then turn off FogOption field */ - _mesa_append_fog_code(ctx, &p->FragProg); - p->FragProg.FogOption = GL_NONE; - } } (void) _tnl_program_string(ctx, target, prog); @@ -1371,7 +1362,7 @@ i915ValidateFragmentProgram(struct i915_context *i915) EMIT_ATTR(_TNL_ATTRIB_COLOR1, EMIT_4UB_4F_BGRA, S4_VFMT_SPEC_FOG, 4); } - if ((inputsRead & FRAG_BIT_FOGC) || i915->vertex_fog != I915_FOG_NONE) { + if ((inputsRead & FRAG_BIT_FOGC)) { EMIT_ATTR(_TNL_ATTRIB_FOG, EMIT_1F, S4_VFMT_FOG_PARAM, 4); } diff --git a/src/mesa/drivers/dri/i915/i915_state.c b/src/mesa/drivers/dri/i915/i915_state.c index 3b1af4c455e..99212ad4fd1 100644 --- a/src/mesa/drivers/dri/i915/i915_state.c +++ b/src/mesa/drivers/dri/i915/i915_state.c @@ -724,157 +724,17 @@ i915ShadeModel(struct gl_context * ctx, GLenum mode) /* ============================================================= * Fog + * + * This empty function remains because _mesa_init_driver_state calls + * dd_function_table::Fogfv unconditionally. We have to have some function + * there so that it doesn't try to call a NULL pointer. */ -void -i915_update_fog(struct gl_context * ctx) -{ - struct i915_context *i915 = I915_CONTEXT(ctx); - GLenum mode; - GLboolean enabled; - GLboolean try_pixel_fog; - GLuint dw; - - if (ctx->FragmentProgram._Current) { - /* Pull in static fog state from program */ - mode = ctx->FragmentProgram._Current->FogOption; - enabled = (mode != GL_NONE); - try_pixel_fog = 0; - } - else { - enabled = ctx->Fog.Enabled; - mode = ctx->Fog.Mode; -#if 0 - /* XXX - DISABLED -- Need ortho fallback */ - try_pixel_fog = (ctx->Fog.FogCoordinateSource == GL_FRAGMENT_DEPTH_EXT - && ctx->Hint.Fog == GL_NICEST); -#else - try_pixel_fog = 0; -#endif - } - - if (!enabled) { - i915->vertex_fog = I915_FOG_NONE; - } - else if (try_pixel_fog) { - I915_STATECHANGE(i915, I915_UPLOAD_FOG); - i915->state.Fog[I915_FOGREG_MODE1] &= ~FMC1_FOGFUNC_MASK; - i915->vertex_fog = I915_FOG_PIXEL; - - switch (mode) { - case GL_LINEAR: - if (ctx->Fog.End <= ctx->Fog.Start) { - /* XXX - this won't work with fragment programs. Need to - * either fallback or append fog instructions to end of - * program in the case of linear fog. - */ - printf("vertex fog!\n"); - i915->state.Fog[I915_FOGREG_MODE1] |= FMC1_FOGFUNC_VERTEX; - i915->vertex_fog = I915_FOG_VERTEX; - } - else { - GLfloat c2 = 1.0 / (ctx->Fog.End - ctx->Fog.Start); - GLfloat c1 = ctx->Fog.End * c2; - - i915->state.Fog[I915_FOGREG_MODE1] &= ~FMC1_C1_MASK; - i915->state.Fog[I915_FOGREG_MODE1] |= FMC1_FOGFUNC_PIXEL_LINEAR; - i915->state.Fog[I915_FOGREG_MODE1] |= - ((GLuint) (c1 * FMC1_C1_ONE)) & FMC1_C1_MASK; - - if (i915->state.Fog[I915_FOGREG_MODE1] & FMC1_FOGINDEX_Z) { - i915->state.Fog[I915_FOGREG_MODE2] - = (GLuint) (c2 * FMC2_C2_ONE); - } - else { - fi_type fi; - fi.f = c2; - i915->state.Fog[I915_FOGREG_MODE2] = fi.i; - } - } - break; - case GL_EXP: - i915->state.Fog[I915_FOGREG_MODE1] |= FMC1_FOGFUNC_PIXEL_EXP; - break; - case GL_EXP2: - i915->state.Fog[I915_FOGREG_MODE1] |= FMC1_FOGFUNC_PIXEL_EXP2; - break; - default: - break; - } - } - else { /* if (i915->vertex_fog != I915_FOG_VERTEX) */ - I915_STATECHANGE(i915, I915_UPLOAD_FOG); - i915->state.Fog[I915_FOGREG_MODE1] &= ~FMC1_FOGFUNC_MASK; - i915->state.Fog[I915_FOGREG_MODE1] |= FMC1_FOGFUNC_VERTEX; - i915->vertex_fog = I915_FOG_VERTEX; - } - - I915_ACTIVESTATE(i915, I915_UPLOAD_FOG, enabled); - dw = i915->state.Ctx[I915_CTXREG_LIS5]; - if (enabled) - dw |= S5_FOG_ENABLE; - else - dw &= ~S5_FOG_ENABLE; - if (dw != i915->state.Ctx[I915_CTXREG_LIS5]) { - i915->state.Ctx[I915_CTXREG_LIS5] = dw; - I915_STATECHANGE(i915, I915_UPLOAD_CTX); - } - - /* Always enable pixel fog. Vertex fog using fog coord will conflict - * with fog code appended onto fragment program. - */ - _tnl_allow_vertex_fog( ctx, 0 ); - _tnl_allow_pixel_fog( ctx, 1 ); -} - static void i915Fogfv(struct gl_context * ctx, GLenum pname, const GLfloat * param) { - struct i915_context *i915 = I915_CONTEXT(ctx); - - switch (pname) { - case GL_FOG_COORDINATE_SOURCE_EXT: - case GL_FOG_MODE: - case GL_FOG_START: - case GL_FOG_END: - break; - - case GL_FOG_DENSITY: - I915_STATECHANGE(i915, I915_UPLOAD_FOG); - - if (i915->state.Fog[I915_FOGREG_MODE1] & FMC1_FOGINDEX_Z) { - i915->state.Fog[I915_FOGREG_MODE3] = - (GLuint) (ctx->Fog.Density * FMC3_D_ONE); - } - else { - fi_type fi; - fi.f = ctx->Fog.Density; - i915->state.Fog[I915_FOGREG_MODE3] = fi.i; - } - break; - - case GL_FOG_COLOR: - I915_STATECHANGE(i915, I915_UPLOAD_FOG); - i915->state.Fog[I915_FOGREG_COLOR] = - (_3DSTATE_FOG_COLOR_CMD | - ((GLubyte) (ctx->Fog.Color[0] * 255.0F) << 16) | - ((GLubyte) (ctx->Fog.Color[1] * 255.0F) << 8) | - ((GLubyte) (ctx->Fog.Color[2] * 255.0F) << 0)); - break; - - default: - break; - } -} - -static void -i915Hint(struct gl_context * ctx, GLenum target, GLenum state) -{ - switch (target) { - case GL_FOG_HINT: - break; - default: - break; - } + (void) ctx; + (void) pname; + (void) param; } /* ============================================================= @@ -971,9 +831,6 @@ i915Enable(struct gl_context * ctx, GLenum cap, GLboolean state) } break; - case GL_FOG: - break; - case GL_CULL_FACE: i915CullFaceFrontFace(ctx, 0); break; @@ -1107,19 +964,6 @@ i915_init_packets(struct i915_context *i915) i915->state.Stipple[I915_STPREG_ST0] = _3DSTATE_STIPPLE; } - - { - I915_STATECHANGE(i915, I915_UPLOAD_FOG); - i915->state.Fog[I915_FOGREG_MODE0] = _3DSTATE_FOG_MODE_CMD; - i915->state.Fog[I915_FOGREG_MODE1] = (FMC1_FOGFUNC_MODIFY_ENABLE | - FMC1_FOGFUNC_VERTEX | - FMC1_FOGINDEX_MODIFY_ENABLE | - FMC1_FOGINDEX_W | - FMC1_C1_C2_MODIFY_ENABLE | - FMC1_DENSITY_MODIFY_ENABLE); - i915->state.Fog[I915_FOGREG_COLOR] = _3DSTATE_FOG_COLOR_CMD; - } - { i915->state.Buffer[I915_DESTREG_DV0] = _3DSTATE_DST_BUF_VARS_CMD; @@ -1202,7 +1046,6 @@ i915InitStateFunctions(struct dd_function_table *functions) functions->Enable = i915Enable; functions->Fogfv = i915Fogfv; functions->FrontFace = i915CullFaceFrontFace; - functions->Hint = i915Hint; functions->LightModelfv = i915LightModelfv; functions->LineWidth = i915LineWidth; functions->LogicOpcode = i915LogicOp; diff --git a/src/mesa/drivers/dri/i915/i915_texstate.c b/src/mesa/drivers/dri/i915/i915_texstate.c index af140c85f50..742bb994adb 100644 --- a/src/mesa/drivers/dri/i915/i915_texstate.c +++ b/src/mesa/drivers/dri/i915/i915_texstate.c @@ -164,7 +164,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) format = translate_texture_format(firstImage->TexFormat, firstImage->InternalFormat, - tObj->DepthMode); + tObj->Sampler.DepthMode); pitch = intelObj->mt->region->pitch * intelObj->mt->cpp; state[I915_TEXREG_MS3] = @@ -181,7 +181,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) * (lowest resolution) LOD. Use it to cover both MAX_LEVEL and * MAX_LOD. */ - maxlod = MIN2(tObj->MaxLod, tObj->_MaxLevel - tObj->BaseLevel); + maxlod = MIN2(tObj->Sampler.MaxLod, tObj->_MaxLevel - tObj->BaseLevel); state[I915_TEXREG_MS4] = ((((pitch / 4) - 1) << MS4_PITCH_SHIFT) | MS4_CUBE_FACE_ENA_MASK | @@ -192,7 +192,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) { GLuint minFilt, mipFilt, magFilt; - switch (tObj->MinFilter) { + switch (tObj->Sampler.MinFilter) { case GL_NEAREST: minFilt = FILTER_NEAREST; mipFilt = MIPFILTER_NONE; @@ -221,16 +221,16 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) return GL_FALSE; } - if (tObj->MaxAnisotropy > 1.0) { + if (tObj->Sampler.MaxAnisotropy > 1.0) { minFilt = FILTER_ANISOTROPIC; magFilt = FILTER_ANISOTROPIC; - if (tObj->MaxAnisotropy > 2.0) + if (tObj->Sampler.MaxAnisotropy > 2.0) aniso = SS2_MAX_ANISO_4; else aniso = SS2_MAX_ANISO_2; } else { - switch (tObj->MagFilter) { + switch (tObj->Sampler.MagFilter) { case GL_NEAREST: magFilt = FILTER_NEAREST; break; @@ -242,7 +242,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) } } - lodbias = (int) ((tUnit->LodBias + tObj->LodBias) * 16.0); + lodbias = (int) ((tUnit->LodBias + tObj->Sampler.LodBias) * 16.0); if (lodbias < -256) lodbias = -256; if (lodbias > 255) @@ -258,14 +258,14 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) /* Shadow: */ - if (tObj->CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB && + if (tObj->Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB && tObj->Target != GL_TEXTURE_3D) { if (tObj->Target == GL_TEXTURE_1D) return GL_FALSE; state[I915_TEXREG_SS2] |= (SS2_SHADOW_ENABLE | - intel_translate_shadow_compare_func(tObj->CompareFunc)); + intel_translate_shadow_compare_func(tObj->Sampler.CompareFunc)); minFilt = FILTER_4X4_FLAT; magFilt = FILTER_4X4_FLAT; @@ -278,9 +278,9 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) } { - GLenum ws = tObj->WrapS; - GLenum wt = tObj->WrapT; - GLenum wr = tObj->WrapR; + GLenum ws = tObj->Sampler.WrapS; + GLenum wt = tObj->Sampler.WrapT; + GLenum wr = tObj->Sampler.WrapR; float minlod; /* We program 1D textures as 2D textures, so the 2D texcoord could @@ -298,8 +298,8 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) * clamp_to_border. */ if (tObj->Target == GL_TEXTURE_3D && - (tObj->MinFilter != GL_NEAREST || - tObj->MagFilter != GL_NEAREST) && + (tObj->Sampler.MinFilter != GL_NEAREST || + tObj->Sampler.MagFilter != GL_NEAREST) && (ws == GL_CLAMP || wt == GL_CLAMP || wr == GL_CLAMP || @@ -322,7 +322,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) (translate_wrap_mode(wt) << SS3_TCY_ADDR_MODE_SHIFT) | (translate_wrap_mode(wr) << SS3_TCZ_ADDR_MODE_SHIFT)); - minlod = MIN2(tObj->MinLod, tObj->_MaxLevel - tObj->BaseLevel); + minlod = MIN2(tObj->Sampler.MinLod, tObj->_MaxLevel - tObj->BaseLevel); state[I915_TEXREG_SS3] |= (unit << SS3_TEXTUREMAP_INDEX_SHIFT); state[I915_TEXREG_SS3] |= (U_FIXED(CLAMP(minlod, 0.0, 11.0), 4) << SS3_MIN_LOD_SHIFT); @@ -330,10 +330,10 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) } /* convert border color from float to ubyte */ - CLAMPED_FLOAT_TO_UBYTE(border[0], tObj->BorderColor.f[0]); - CLAMPED_FLOAT_TO_UBYTE(border[1], tObj->BorderColor.f[1]); - CLAMPED_FLOAT_TO_UBYTE(border[2], tObj->BorderColor.f[2]); - CLAMPED_FLOAT_TO_UBYTE(border[3], tObj->BorderColor.f[3]); + CLAMPED_FLOAT_TO_UBYTE(border[0], tObj->Sampler.BorderColor.f[0]); + CLAMPED_FLOAT_TO_UBYTE(border[1], tObj->Sampler.BorderColor.f[1]); + CLAMPED_FLOAT_TO_UBYTE(border[2], tObj->Sampler.BorderColor.f[2]); + CLAMPED_FLOAT_TO_UBYTE(border[3], tObj->Sampler.BorderColor.f[3]); if (firstImage->_BaseFormat == GL_DEPTH_COMPONENT) { /* GL specs that border color for depth textures is taken from the diff --git a/src/mesa/drivers/dri/i915/i915_vtbl.c b/src/mesa/drivers/dri/i915/i915_vtbl.c index 921183b81df..89650b618e4 100644 --- a/src/mesa/drivers/dri/i915/i915_vtbl.c +++ b/src/mesa/drivers/dri/i915/i915_vtbl.c @@ -260,9 +260,6 @@ get_state_size(struct i915_hw_state *state) if (dirty & I915_UPLOAD_STIPPLE) sz += sizeof(state->Stipple); - if (dirty & I915_UPLOAD_FOG) - sz += sizeof(state->Fog); - if (dirty & I915_UPLOAD_TEX_ALL) { int nr = 0; for (i = 0; i < I915_TEX_UNITS; i++) @@ -307,6 +304,10 @@ i915_emit_state(struct intel_context *intel) false); count = 0; again: + if (intel->batch.bo == NULL) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "i915 emit state"); + assert(0); + } aper_count = 0; dirty = get_dirty(state); @@ -425,12 +426,6 @@ i915_emit_state(struct intel_context *intel) emit(intel, state->Stipple, sizeof(state->Stipple)); } - if (dirty & I915_UPLOAD_FOG) { - if (INTEL_DEBUG & DEBUG_STATE) - fprintf(stderr, "I915_UPLOAD_FOG:\n"); - emit(intel, state->Fog, sizeof(state->Fog)); - } - /* Combine all the dirty texture state into a single command to * avoid lockups on I915 hardware. */ diff --git a/src/mesa/drivers/dri/i965/brw_cc.c b/src/mesa/drivers/dri/i965/brw_cc.c index 412d82ab3ca..74a66af31a5 100644 --- a/src/mesa/drivers/dri/i965/brw_cc.c +++ b/src/mesa/drivers/dri/i965/brw_cc.c @@ -238,10 +238,10 @@ static void upload_blend_constant_color(struct brw_context *brw) BEGIN_BATCH(5); OUT_BATCH(_3DSTATE_BLEND_CONSTANT_COLOR << 16 | (5-2)); - OUT_BATCH_F(ctx->Color.BlendColor[0]); - OUT_BATCH_F(ctx->Color.BlendColor[1]); - OUT_BATCH_F(ctx->Color.BlendColor[2]); - OUT_BATCH_F(ctx->Color.BlendColor[3]); + OUT_BATCH_F(ctx->Color.BlendColorUnclamped[0]); + OUT_BATCH_F(ctx->Color.BlendColorUnclamped[1]); + OUT_BATCH_F(ctx->Color.BlendColorUnclamped[2]); + OUT_BATCH_F(ctx->Color.BlendColorUnclamped[3]); CACHED_BATCH(); } diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index 9483ec69d96..230d326fa12 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -182,9 +182,21 @@ GLboolean brwCreateContext( int api, /* WM maximum threads is number of EUs times number of threads per EU. */ if (intel->gen >= 6) { - brw->urb.size = 1024; - brw->vs_max_threads = 60; - brw->wm_max_threads = 80; + if (IS_GT2(intel->intelScreen->deviceID)) { + /* This could possibly be 80, but is supposed to require + * disabling of WIZ hashing (bit 6 of GT_MODE, 0x20d0) and a + * GPU reset to change. + */ + brw->wm_max_threads = 40; + brw->vs_max_threads = 60; + brw->urb.size = 64; /* volume 5c.5 section 5.1 */ + brw->urb.max_vs_handles = 128; /* volume 2a (see 3DSTATE_URB) */ + } else { + brw->wm_max_threads = 40; + brw->vs_max_threads = 24; + brw->urb.size = 32; /* volume 5c.5 section 5.1 */ + brw->urb.max_vs_handles = 256; /* volume 2a (see 3DSTATE_URB) */ + } } else if (intel->gen == 5) { brw->urb.size = 1024; brw->vs_max_threads = 72; diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h index 7b0551a92bc..1daa49abfb3 100644 --- a/src/mesa/drivers/dri/i965/brw_context.h +++ b/src/mesa/drivers/dri/i965/brw_context.h @@ -139,7 +139,7 @@ struct brw_context; * by any 3D rendering. */ #define BRW_NEW_BATCH 0x10000 -/** brw->depth_region updated */ +/** \see brw.state.depth_region */ #define BRW_NEW_DEPTH_BUFFER 0x20000 #define BRW_NEW_NR_WM_SURFACES 0x40000 #define BRW_NEW_NR_VS_SURFACES 0x80000 @@ -464,8 +464,27 @@ struct brw_context struct { struct brw_state_flags dirty; + /** + * \name Cached region pointers + * + * When the draw buffer is updated, often the depth buffer is not + * changed. Caching the pointer to the buffer's region allows us to + * detect when the buffer has in fact changed, and allows us to avoid + * updating the buffer's GPU state when it has not. + * + * The original of each cached pointer is an instance of + * \c intel_renderbuffer.region. + * + * \see brw_set_draw_region() + * + * \{ + */ + + /** \see struct brw_tracked_state brw_depthbuffer */ struct intel_region *depth_region; + /** \} */ + /** * List of buffers accumulated in brw_validate_state to receive * drm_intel_bo_check_aperture treatment before exec, so we can @@ -549,18 +568,21 @@ struct brw_context GLboolean constrained; + GLuint max_vs_handles; /* Maximum number of VS handles */ + GLuint max_gs_handles; /* Maximum number of GS handles */ + GLuint nr_vs_entries; GLuint nr_gs_entries; GLuint nr_clip_entries; GLuint nr_sf_entries; GLuint nr_cs_entries; - /* gen6 */ + /* gen6: + * The length of each URB entry owned by the VS (or GS), as + * a number of 1024-bit (128-byte) rows. Should be >= 1. + */ GLuint vs_size; -/* GLuint gs_size; */ -/* GLuint clip_size; */ -/* GLuint sf_size; */ -/* GLuint cs_size; */ + GLuint gs_size; GLuint vs_start; GLuint gs_start; @@ -639,7 +661,9 @@ struct brw_context drm_intel_bo *prog_bo; drm_intel_bo *state_bo; + uint32_t state_offset; drm_intel_bo *vp_bo; + uint32_t vp_offset; } sf; struct { diff --git a/src/mesa/drivers/dri/i965/brw_defines.h b/src/mesa/drivers/dri/i965/brw_defines.h index 6c61aefd7d3..effcb6c1c4a 100644 --- a/src/mesa/drivers/dri/i965/brw_defines.h +++ b/src/mesa/drivers/dri/i965/brw_defines.h @@ -43,6 +43,12 @@ #define PIPE_CONTROL_GTTWRITE_PROCESS_LOCAL 0x00 #define PIPE_CONTROL_GTTWRITE_GLOBAL 0x01 +#define CMD_3D_PRIM 0x7b00 /* 3DPRIMITIVE */ +/* DW0 */ +# define GEN4_3DPRIM_TOPOLOGY_TYPE_SHIFT 10 +# define GEN4_3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL (0 << 15) +# define GEN4_3DPRIM_VERTEXBUFFER_ACCESS_RANDOM (1 << 15) + #define _3DPRIM_POINTLIST 0x01 #define _3DPRIM_LINELIST 0x02 #define _3DPRIM_LINESTRIP 0x03 @@ -65,9 +71,6 @@ #define _3DPRIM_LINESTRIP_CONT_BF 0x14 #define _3DPRIM_TRIFAN_NOSTIPPLE 0x15 -#define _3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL 0 -#define _3DPRIM_VERTEXBUFFER_ACCESS_RANDOM 1 - #define BRW_ANISORATIO_2 0 #define BRW_ANISORATIO_4 1 #define BRW_ANISORATIO_6 2 @@ -147,6 +150,7 @@ #define BRW_DEPTHFORMAT_D32_FLOAT_S8X24_UINT 0 #define BRW_DEPTHFORMAT_D32_FLOAT 1 #define BRW_DEPTHFORMAT_D24_UNORM_S8_UINT 2 +#define BRW_DEPTHFORMAT_D24_UNORM_X8_UINT 3 /* GEN5 */ #define BRW_DEPTHFORMAT_D16_UNORM 5 #define BRW_FLOATING_POINT_IEEE_754 0 @@ -1131,8 +1135,6 @@ #define CMD_PIPE_CONTROL 0x7a00 -#define CMD_3D_PRIM 0x7b00 - #define CMD_MI_FLUSH 0x0200 diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c index f5abe021c43..2db70c543ea 100644 --- a/src/mesa/drivers/dri/i965/brw_draw.c +++ b/src/mesa/drivers/dri/i965/brw_draw.c @@ -129,30 +129,31 @@ static void brw_emit_prim(struct brw_context *brw, const struct _mesa_prim *prim, uint32_t hw_prim) { - struct brw_3d_primitive prim_packet; struct intel_context *intel = &brw->intel; + int verts_per_instance; + int vertex_access_type; + int start_vertex_location; + int base_vertex_location; DBG("PRIM: %s %d %d\n", _mesa_lookup_enum_by_nr(prim->mode), prim->start, prim->count); - prim_packet.header.opcode = CMD_3D_PRIM; - prim_packet.header.length = sizeof(prim_packet)/4 - 2; - prim_packet.header.pad = 0; - prim_packet.header.topology = hw_prim; - prim_packet.header.indexed = prim->indexed; - - prim_packet.verts_per_instance = trim(prim->mode, prim->count); - prim_packet.start_vert_location = prim->start; - if (prim->indexed) - prim_packet.start_vert_location += brw->ib.start_vertex_offset; - else - prim_packet.start_vert_location += brw->vb.start_vertex_bias; - prim_packet.instance_count = 1; - prim_packet.start_instance_location = 0; - prim_packet.base_vert_location = prim->basevertex; - if (prim->indexed) - prim_packet.base_vert_location += brw->vb.start_vertex_bias; + start_vertex_location = prim->start; + base_vertex_location = prim->basevertex; + if (prim->indexed) { + vertex_access_type = GEN4_3DPRIM_VERTEXBUFFER_ACCESS_RANDOM; + start_vertex_location += brw->ib.start_vertex_offset; + base_vertex_location += brw->vb.start_vertex_bias; + } else { + vertex_access_type = GEN4_3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL; + start_vertex_location += brw->vb.start_vertex_bias; + } + + verts_per_instance = trim(prim->mode, prim->count); + /* If nothing to emit, just return. */ + if (verts_per_instance == 0) + return; /* If we're set to always flush, do it before and after the primitive emit. * We want to catch both missed flushes that hurt instruction/state cache @@ -162,10 +163,18 @@ static void brw_emit_prim(struct brw_context *brw, if (intel->always_flush_cache) { intel_batchbuffer_emit_mi_flush(intel); } - if (prim_packet.verts_per_instance) { - intel_batchbuffer_data(&brw->intel, &prim_packet, - sizeof(prim_packet), false); - } + + BEGIN_BATCH(6); + OUT_BATCH(CMD_3D_PRIM << 16 | (6 - 2) | + hw_prim << GEN4_3DPRIM_TOPOLOGY_TYPE_SHIFT | + vertex_access_type); + OUT_BATCH(verts_per_instance); + OUT_BATCH(start_vertex_location); + OUT_BATCH(1); // instance count + OUT_BATCH(0); // start instance location + OUT_BATCH(base_vertex_location); + ADVANCE_BATCH(); + if (intel->always_flush_cache) { intel_batchbuffer_emit_mi_flush(intel); } @@ -271,20 +280,20 @@ static GLboolean check_fallbacks( struct brw_context *brw, struct gl_texture_unit *texUnit = &ctx->Texture.Unit[u]; if (texUnit->Enabled) { if (texUnit->Enabled & TEXTURE_1D_BIT) { - if (texUnit->CurrentTex[TEXTURE_1D_INDEX]->WrapS == GL_CLAMP) { + if (texUnit->CurrentTex[TEXTURE_1D_INDEX]->Sampler.WrapS == GL_CLAMP) { return GL_TRUE; } } if (texUnit->Enabled & TEXTURE_2D_BIT) { - if (texUnit->CurrentTex[TEXTURE_2D_INDEX]->WrapS == GL_CLAMP || - texUnit->CurrentTex[TEXTURE_2D_INDEX]->WrapT == GL_CLAMP) { + if (texUnit->CurrentTex[TEXTURE_2D_INDEX]->Sampler.WrapS == GL_CLAMP || + texUnit->CurrentTex[TEXTURE_2D_INDEX]->Sampler.WrapT == GL_CLAMP) { return GL_TRUE; } } if (texUnit->Enabled & TEXTURE_3D_BIT) { - if (texUnit->CurrentTex[TEXTURE_3D_INDEX]->WrapS == GL_CLAMP || - texUnit->CurrentTex[TEXTURE_3D_INDEX]->WrapT == GL_CLAMP || - texUnit->CurrentTex[TEXTURE_3D_INDEX]->WrapR == GL_CLAMP) { + if (texUnit->CurrentTex[TEXTURE_3D_INDEX]->Sampler.WrapS == GL_CLAMP || + texUnit->CurrentTex[TEXTURE_3D_INDEX]->Sampler.WrapT == GL_CLAMP || + texUnit->CurrentTex[TEXTURE_3D_INDEX]->Sampler.WrapR == GL_CLAMP) { return GL_TRUE; } } diff --git a/src/mesa/drivers/dri/i965/brw_draw_upload.c b/src/mesa/drivers/dri/i965/brw_draw_upload.c index f1d00693168..9389eb6733f 100644 --- a/src/mesa/drivers/dri/i965/brw_draw_upload.c +++ b/src/mesa/drivers/dri/i965/brw_draw_upload.c @@ -575,7 +575,7 @@ static void brw_emit_vertices(struct brw_context *brw) if (intel->gen >= 5) { OUT_RELOC(buffer->bo, I915_GEM_DOMAIN_VERTEX, 0, buffer->bo->size - 1); } else - OUT_BATCH(buffer->bo->size / buffer->stride); + OUT_BATCH(0); OUT_BATCH(0); /* Instance data step rate */ brw->vb.current_buffers[i].handle = buffer->bo->handle; diff --git a/src/mesa/drivers/dri/i965/brw_eu.c b/src/mesa/drivers/dri/i965/brw_eu.c index 3b5c4c071e3..7e63482d8fa 100644 --- a/src/mesa/drivers/dri/i965/brw_eu.c +++ b/src/mesa/drivers/dri/i965/brw_eu.c @@ -34,6 +34,28 @@ #include "brw_defines.h" #include "brw_eu.h" +/* Returns the corresponding conditional mod for swapping src0 and + * src1 in e.g. CMP. + */ +uint32_t +brw_swap_cmod(uint32_t cmod) +{ + switch (cmod) { + case BRW_CONDITIONAL_Z: + case BRW_CONDITIONAL_NZ: + return cmod; + case BRW_CONDITIONAL_G: + return BRW_CONDITIONAL_LE; + case BRW_CONDITIONAL_GE: + return BRW_CONDITIONAL_L; + case BRW_CONDITIONAL_L: + return BRW_CONDITIONAL_GE; + case BRW_CONDITIONAL_LE: + return BRW_CONDITIONAL_G; + default: + return ~0; + } +} /* How does predicate control work when execution_size != 8? Do I @@ -60,6 +82,11 @@ void brw_set_predicate_control( struct brw_compile *p, GLuint pc ) p->current->header.predicate_control = pc; } +void brw_set_predicate_inverse(struct brw_compile *p, bool predicate_inverse) +{ + p->current->header.predicate_inverse = predicate_inverse; +} + void brw_set_conditionalmod( struct brw_compile *p, GLuint conditional ) { p->current->header.destreg__conditionalmod = conditional; diff --git a/src/mesa/drivers/dri/i965/brw_eu.h b/src/mesa/drivers/dri/i965/brw_eu.h index 2d2ed9de985..718b3800423 100644 --- a/src/mesa/drivers/dri/i965/brw_eu.h +++ b/src/mesa/drivers/dri/i965/brw_eu.h @@ -772,6 +772,7 @@ void brw_set_access_mode( struct brw_compile *p, GLuint access_mode ); void brw_set_compression_control( struct brw_compile *p, GLboolean control ); void brw_set_predicate_control_flag_value( struct brw_compile *p, GLuint value ); void brw_set_predicate_control( struct brw_compile *p, GLuint pc ); +void brw_set_predicate_inverse(struct brw_compile *p, bool predicate_inverse); void brw_set_conditionalmod( struct brw_compile *p, GLuint conditional ); void brw_set_acc_write_control(struct brw_compile *p, GLuint value); @@ -1017,6 +1018,8 @@ void brw_set_src1( struct brw_instruction *insn, void brw_set_uip_jip(struct brw_compile *p); +uint32_t brw_swap_cmod(uint32_t cmod); + /* brw_optimize.c */ void brw_optimize(struct brw_compile *p); void brw_remove_duplicate_mrf_moves(struct brw_compile *p); diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c b/src/mesa/drivers/dri/i965/brw_eu_emit.c index 21ce92c9173..71485cd1f71 100644 --- a/src/mesa/drivers/dri/i965/brw_eu_emit.c +++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c @@ -52,6 +52,34 @@ static void guess_execution_size(struct brw_compile *p, } +/** + * Prior to Sandybridge, the SEND instruction accepted non-MRF source + * registers, implicitly moving the operand to a message register. + * + * On Sandybridge, this is no longer the case. This function performs the + * explicit move; it should be called before emitting a SEND instruction. + */ +static void +gen6_resolve_implied_move(struct brw_compile *p, + struct brw_reg *src, + GLuint msg_reg_nr) +{ + struct intel_context *intel = &p->brw->intel; + if (intel->gen != 6) + return; + + if (src->file != BRW_ARCHITECTURE_REGISTER_FILE || src->nr != BRW_ARF_NULL) { + brw_push_insn_state(p); + brw_set_mask_control(p, BRW_MASK_DISABLE); + brw_set_compression_control(p, BRW_COMPRESSION_NONE); + brw_MOV(p, retype(brw_message_reg(msg_reg_nr), BRW_REGISTER_TYPE_UD), + retype(*src, BRW_REGISTER_TYPE_UD)); + brw_pop_insn_state(p); + } + *src = brw_message_reg(msg_reg_nr); +} + + static void brw_set_dest(struct brw_compile *p, struct brw_instruction *insn, struct brw_reg dest) @@ -468,10 +496,9 @@ static void brw_set_dp_write_message( struct brw_context *brw, insn->bits3.dp_render_cache.response_length = response_length; insn->bits3.dp_render_cache.msg_length = msg_length; insn->bits3.dp_render_cache.end_of_thread = end_of_thread; + + /* We always use the render cache for write messages */ insn->header.destreg__conditionalmod = BRW_MESSAGE_TARGET_DATAPORT_WRITE; - /* XXX really need below? */ - insn->bits2.send_gen5.sfid = BRW_MESSAGE_TARGET_DATAPORT_WRITE; - insn->bits2.send_gen5.end_of_thread = end_of_thread; } else if (intel->gen == 5) { insn->bits3.dp_write_gen5.binding_table_index = binding_table_index; insn->bits3.dp_write_gen5.msg_control = msg_control; @@ -511,6 +538,13 @@ brw_set_dp_read_message(struct brw_context *brw, brw_set_src1(insn, brw_imm_d(0)); if (intel->gen >= 6) { + uint32_t target_function; + + if (target_cache == BRW_DATAPORT_READ_TARGET_DATA_CACHE) + target_function = BRW_MESSAGE_TARGET_DATAPORT_READ; /* data cache */ + else + target_function = BRW_MESSAGE_TARGET_DATAPORT_WRITE; /* render cache */ + insn->bits3.dp_render_cache.binding_table_index = binding_table_index; insn->bits3.dp_render_cache.msg_control = msg_control; insn->bits3.dp_render_cache.pixel_scoreboard_clear = 0; @@ -520,10 +554,7 @@ brw_set_dp_read_message(struct brw_context *brw, insn->bits3.dp_render_cache.response_length = response_length; insn->bits3.dp_render_cache.msg_length = msg_length; insn->bits3.dp_render_cache.end_of_thread = 0; - insn->header.destreg__conditionalmod = BRW_MESSAGE_TARGET_DATAPORT_READ; - /* XXX really need below? */ - insn->bits2.send_gen5.sfid = BRW_MESSAGE_TARGET_DATAPORT_READ; - insn->bits2.send_gen5.end_of_thread = 0; + insn->header.destreg__conditionalmod = target_function; } else if (intel->gen == 5) { insn->bits3.dp_read_gen5.binding_table_index = binding_table_index; insn->bits3.dp_read_gen5.msg_control = msg_control; @@ -1458,9 +1489,12 @@ void brw_oword_block_write_scratch(struct brw_compile *p, GLuint offset) { struct intel_context *intel = &p->brw->intel; - uint32_t msg_control; + uint32_t msg_control, msg_type; int mlen; + if (intel->gen >= 6) + offset /= 16; + mrf = retype(mrf, BRW_REGISTER_TYPE_UD); if (num_regs == 1) { @@ -1526,13 +1560,22 @@ void brw_oword_block_write_scratch(struct brw_compile *p, } brw_set_dest(p, insn, dest); - brw_set_src0(insn, brw_null_reg()); + if (intel->gen >= 6) { + brw_set_src0(insn, mrf); + } else { + brw_set_src0(insn, brw_null_reg()); + } + + if (intel->gen >= 6) + msg_type = GEN6_DATAPORT_WRITE_MESSAGE_OWORD_BLOCK_WRITE; + else + msg_type = BRW_DATAPORT_WRITE_MESSAGE_OWORD_BLOCK_WRITE; brw_set_dp_write_message(p->brw, insn, 255, /* binding table index (255=stateless) */ msg_control, - BRW_DATAPORT_WRITE_MESSAGE_OWORD_BLOCK_WRITE, /* msg_type */ + msg_type, mlen, GL_TRUE, /* header_present */ 0, /* pixel scoreboard */ @@ -1557,9 +1600,13 @@ brw_oword_block_read_scratch(struct brw_compile *p, int num_regs, GLuint offset) { + struct intel_context *intel = &p->brw->intel; uint32_t msg_control; int rlen; + if (intel->gen >= 6) + offset /= 16; + mrf = retype(mrf, BRW_REGISTER_TYPE_UD); dest = retype(dest, BRW_REGISTER_TYPE_UW); @@ -1596,14 +1643,18 @@ brw_oword_block_read_scratch(struct brw_compile *p, insn->header.destreg__conditionalmod = mrf.nr; brw_set_dest(p, insn, dest); /* UW? */ - brw_set_src0(insn, brw_null_reg()); + if (intel->gen >= 6) { + brw_set_src0(insn, mrf); + } else { + brw_set_src0(insn, brw_null_reg()); + } brw_set_dp_read_message(p->brw, insn, 255, /* binding table index (255=stateless) */ msg_control, BRW_DATAPORT_READ_MESSAGE_OWORD_BLOCK_READ, /* msg_type */ - 1, /* target cache (render/scratch) */ + BRW_DATAPORT_READ_TARGET_RENDER_CACHE, 1, /* msg_length */ rlen); } @@ -1771,6 +1822,7 @@ void brw_dp_READ_4_vs_relative(struct brw_compile *p, GLuint bind_table_index) { struct intel_context *intel = &p->brw->intel; + struct brw_reg src = brw_vec8_grf(0, 0); int msg_type; /* Setup MRF[1] with offset into const buffer */ @@ -1787,6 +1839,7 @@ void brw_dp_READ_4_vs_relative(struct brw_compile *p, addr_reg, brw_imm_d(offset)); brw_pop_insn_state(p); + gen6_resolve_implied_move(p, &src, 0); struct brw_instruction *insn = next_insn(p, BRW_OPCODE_SEND); insn->header.predicate_control = BRW_PREDICATE_NONE; @@ -1795,7 +1848,7 @@ void brw_dp_READ_4_vs_relative(struct brw_compile *p, insn->header.mask_control = BRW_MASK_DISABLE; brw_set_dest(p, insn, dest); - brw_set_src0(insn, brw_vec8_grf(0, 0)); + brw_set_src0(insn, src); if (intel->gen == 6) msg_type = GEN6_DATAPORT_READ_MESSAGE_OWORD_DUAL_BLOCK_READ; @@ -1809,7 +1862,7 @@ void brw_dp_READ_4_vs_relative(struct brw_compile *p, bind_table_index, BRW_DATAPORT_OWORD_DUAL_BLOCK_1OWORD, msg_type, - 0, /* source cache = data cache */ + BRW_DATAPORT_READ_TARGET_DATA_CACHE, 2, /* msg_length */ 1); /* response_length */ } @@ -1966,20 +2019,7 @@ void brw_SAMPLE(struct brw_compile *p, { struct brw_instruction *insn; - /* Sandybridge doesn't have the implied move for SENDs, - * and the first message register index comes from src0. - */ - if (intel->gen >= 6) { - if (src0.file != BRW_ARCHITECTURE_REGISTER_FILE || - src0.nr != BRW_ARF_NULL) { - brw_push_insn_state(p); - brw_set_mask_control( p, BRW_MASK_DISABLE ); - brw_set_compression_control(p, BRW_COMPRESSION_NONE); - brw_MOV(p, retype(brw_message_reg(msg_reg_nr), src0.type), src0); - brw_pop_insn_state(p); - } - src0 = brw_message_reg(msg_reg_nr); - } + gen6_resolve_implied_move(p, &src0, msg_reg_nr); insn = next_insn(p, BRW_OPCODE_SEND); insn->header.predicate_control = 0; /* XXX */ @@ -2034,17 +2074,7 @@ void brw_urb_WRITE(struct brw_compile *p, struct intel_context *intel = &p->brw->intel; struct brw_instruction *insn; - /* Sandybridge doesn't have the implied move for SENDs, - * and the first message register index comes from src0. - */ - if (intel->gen >= 6) { - brw_push_insn_state(p); - brw_set_mask_control( p, BRW_MASK_DISABLE ); - brw_MOV(p, retype(brw_message_reg(msg_reg_nr), BRW_REGISTER_TYPE_UD), - retype(src0, BRW_REGISTER_TYPE_UD)); - brw_pop_insn_state(p); - src0 = brw_message_reg(msg_reg_nr); - } + gen6_resolve_implied_move(p, &src0, msg_reg_nr); insn = next_insn(p, BRW_OPCODE_SEND); @@ -2154,17 +2184,7 @@ void brw_ff_sync(struct brw_compile *p, struct intel_context *intel = &p->brw->intel; struct brw_instruction *insn; - /* Sandybridge doesn't have the implied move for SENDs, - * and the first message register index comes from src0. - */ - if (intel->gen >= 6) { - brw_push_insn_state(p); - brw_set_mask_control( p, BRW_MASK_DISABLE ); - brw_MOV(p, retype(brw_message_reg(msg_reg_nr), BRW_REGISTER_TYPE_UD), - retype(src0, BRW_REGISTER_TYPE_UD)); - brw_pop_insn_state(p); - src0 = brw_message_reg(msg_reg_nr); - } + gen6_resolve_implied_move(p, &src0, msg_reg_nr); insn = next_insn(p, BRW_OPCODE_SEND); brw_set_dest(p, insn, dest); diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 8b3f5adb9f9..5426925e372 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -177,6 +177,23 @@ type_size(const struct glsl_type *type) } } +void +fs_visitor::fail(const char *format, ...) +{ + if (!failed) { + failed = true; + + if (INTEL_DEBUG & DEBUG_WM) { + fprintf(stderr, "FS compile failed: "); + + va_list va; + va_start(va, format); + vfprintf(stderr, format, va); + va_end(va); + } + } +} + /** * Returns how many MRFs an FS opcode will write over. * @@ -382,60 +399,32 @@ fs_visitor::setup_uniform_values(int loc, const glsl_type *type) void fs_visitor::setup_builtin_uniform_values(ir_variable *ir) { - const struct gl_builtin_uniform_desc *statevar = NULL; - - for (unsigned int i = 0; _mesa_builtin_uniform_desc[i].name; i++) { - statevar = &_mesa_builtin_uniform_desc[i]; - if (strcmp(ir->name, _mesa_builtin_uniform_desc[i].name) == 0) - break; - } - - if (!statevar->name) { - this->fail = true; - printf("Failed to find builtin uniform `%s'\n", ir->name); - return; - } - - int array_count; - if (ir->type->is_array()) { - array_count = ir->type->length; - } else { - array_count = 1; - } + const ir_state_slot *const slots = ir->state_slots; + assert(ir->state_slots != NULL); - for (int a = 0; a < array_count; a++) { - for (unsigned int i = 0; i < statevar->num_elements; i++) { - struct gl_builtin_uniform_element *element = &statevar->elements[i]; - int tokens[STATE_LENGTH]; - - memcpy(tokens, element->tokens, sizeof(element->tokens)); - if (ir->type->is_array()) { - tokens[1] = a; - } - - /* This state reference has already been setup by ir_to_mesa, - * but we'll get the same index back here. - */ - int index = _mesa_add_state_reference(this->fp->Base.Parameters, - (gl_state_index *)tokens); + for (unsigned int i = 0; i < ir->num_state_slots; i++) { + /* This state reference has already been setup by ir_to_mesa, but we'll + * get the same index back here. + */ + int index = _mesa_add_state_reference(this->fp->Base.Parameters, + (gl_state_index *)slots[i].tokens); - /* Add each of the unique swizzles of the element as a - * parameter. This'll end up matching the expected layout of - * the array/matrix/structure we're trying to fill in. - */ - int last_swiz = -1; - for (unsigned int i = 0; i < 4; i++) { - int swiz = GET_SWZ(element->swizzle, i); - if (swiz == last_swiz) - break; - last_swiz = swiz; + /* Add each of the unique swizzles of the element as a parameter. + * This'll end up matching the expected layout of the + * array/matrix/structure we're trying to fill in. + */ + int last_swiz = -1; + for (unsigned int j = 0; j < 4; j++) { + int swiz = GET_SWZ(slots[i].swizzle, j); + if (swiz == last_swiz) + break; + last_swiz = swiz; - c->prog_data.param_convert[c->prog_data.nr_params] = - PARAM_NO_CONVERT; - this->param_index[c->prog_data.nr_params] = index; - this->param_offset[c->prog_data.nr_params] = swiz; - c->prog_data.nr_params++; - } + c->prog_data.param_convert[c->prog_data.nr_params] = + PARAM_NO_CONVERT; + this->param_index[c->prog_data.nr_params] = index; + this->param_offset[c->prog_data.nr_params] = swiz; + c->prog_data.nr_params++; } } } @@ -451,15 +440,15 @@ fs_visitor::emit_fragcoord_interpolation(ir_variable *ir) /* gl_FragCoord.x */ if (ir->pixel_center_integer) { - emit(fs_inst(BRW_OPCODE_MOV, wpos, this->pixel_x)); + emit(BRW_OPCODE_MOV, wpos, this->pixel_x); } else { - emit(fs_inst(BRW_OPCODE_ADD, wpos, this->pixel_x, fs_reg(0.5f))); + emit(BRW_OPCODE_ADD, wpos, this->pixel_x, fs_reg(0.5f)); } wpos.reg_offset++; /* gl_FragCoord.y */ if (!flip && ir->pixel_center_integer) { - emit(fs_inst(BRW_OPCODE_MOV, wpos, this->pixel_y)); + emit(BRW_OPCODE_MOV, wpos, this->pixel_y); } else { fs_reg pixel_y = this->pixel_y; float offset = (ir->pixel_center_integer ? 0.0 : 0.5); @@ -469,22 +458,22 @@ fs_visitor::emit_fragcoord_interpolation(ir_variable *ir) offset += c->key.drawable_height - 1.0; } - emit(fs_inst(BRW_OPCODE_ADD, wpos, pixel_y, fs_reg(offset))); + emit(BRW_OPCODE_ADD, wpos, pixel_y, fs_reg(offset)); } wpos.reg_offset++; /* gl_FragCoord.z */ if (intel->gen >= 6) { - emit(fs_inst(BRW_OPCODE_MOV, wpos, - fs_reg(brw_vec8_grf(c->source_depth_reg, 0)))); + emit(BRW_OPCODE_MOV, wpos, + fs_reg(brw_vec8_grf(c->source_depth_reg, 0))); } else { - emit(fs_inst(FS_OPCODE_LINTERP, wpos, this->delta_x, this->delta_y, - interp_reg(FRAG_ATTRIB_WPOS, 2))); + emit(FS_OPCODE_LINTERP, wpos, this->delta_x, this->delta_y, + interp_reg(FRAG_ATTRIB_WPOS, 2)); } wpos.reg_offset++; /* gl_FragCoord.w: Already set up in emit_interpolation */ - emit(fs_inst(BRW_OPCODE_MOV, wpos, this->wpos_w)); + emit(BRW_OPCODE_MOV, wpos, this->wpos_w); return reg; } @@ -503,7 +492,7 @@ fs_visitor::emit_general_interpolation(ir_variable *ir) if (ir->type->is_array()) { array_elements = ir->type->length; if (array_elements == 0) { - this->fail = true; + fail("dereferenced array '%s' has length 0\n", ir->name); } type = ir->type->fields.array; } else { @@ -523,37 +512,33 @@ fs_visitor::emit_general_interpolation(ir_variable *ir) continue; } - if (c->key.flat_shade && (location == FRAG_ATTRIB_COL0 || - location == FRAG_ATTRIB_COL1)) { + bool is_gl_Color = + location == FRAG_ATTRIB_COL0 || location == FRAG_ATTRIB_COL1; + + if (c->key.flat_shade && is_gl_Color) { /* Constant interpolation (flat shading) case. The SF has * handed us defined values in only the constant offset * field of the setup reg. */ - for (unsigned int c = 0; c < type->vector_elements; c++) { - struct brw_reg interp = interp_reg(location, c); + for (unsigned int k = 0; k < type->vector_elements; k++) { + struct brw_reg interp = interp_reg(location, k); interp = suboffset(interp, 3); - emit(fs_inst(FS_OPCODE_CINTERP, attr, fs_reg(interp))); + emit(FS_OPCODE_CINTERP, attr, fs_reg(interp)); attr.reg_offset++; } } else { /* Perspective interpolation case. */ - for (unsigned int c = 0; c < type->vector_elements; c++) { - struct brw_reg interp = interp_reg(location, c); - emit(fs_inst(FS_OPCODE_LINTERP, - attr, - this->delta_x, - this->delta_y, - fs_reg(interp))); + for (unsigned int k = 0; k < type->vector_elements; k++) { + struct brw_reg interp = interp_reg(location, k); + emit(FS_OPCODE_LINTERP, attr, + this->delta_x, this->delta_y, fs_reg(interp)); attr.reg_offset++; } - if (intel->gen < 6) { + if (intel->gen < 6 && !(is_gl_Color && c->key.linear_color)) { attr.reg_offset -= type->vector_elements; - for (unsigned int c = 0; c < type->vector_elements; c++) { - emit(fs_inst(BRW_OPCODE_MUL, - attr, - attr, - this->pixel_w)); + for (unsigned int k = 0; k < type->vector_elements; k++) { + emit(BRW_OPCODE_MUL, attr, attr, this->pixel_w); attr.reg_offset++; } } @@ -572,28 +557,21 @@ fs_visitor::emit_frontfacing_interpolation(ir_variable *ir) /* The frontfacing comes in as a bit in the thread payload. */ if (intel->gen >= 6) { - emit(fs_inst(BRW_OPCODE_ASR, - *reg, - fs_reg(retype(brw_vec1_grf(0, 0), BRW_REGISTER_TYPE_D)), - fs_reg(15))); - emit(fs_inst(BRW_OPCODE_NOT, - *reg, - *reg)); - emit(fs_inst(BRW_OPCODE_AND, - *reg, - *reg, - fs_reg(1))); + emit(BRW_OPCODE_ASR, *reg, + fs_reg(retype(brw_vec1_grf(0, 0), BRW_REGISTER_TYPE_D)), + fs_reg(15)); + emit(BRW_OPCODE_NOT, *reg, *reg); + emit(BRW_OPCODE_AND, *reg, *reg, fs_reg(1)); } else { struct brw_reg r1_6ud = retype(brw_vec1_grf(1, 6), BRW_REGISTER_TYPE_UD); /* bit 31 is "primitive is back face", so checking < (1 << 31) gives * us front face */ - fs_inst *inst = emit(fs_inst(BRW_OPCODE_CMP, - *reg, - fs_reg(r1_6ud), - fs_reg(1u << 31))); + fs_inst *inst = emit(BRW_OPCODE_CMP, *reg, + fs_reg(r1_6ud), + fs_reg(1u << 31)); inst->conditional_mod = BRW_CONDITIONAL_L; - emit(fs_inst(BRW_OPCODE_AND, *reg, *reg, fs_reg(1u))); + emit(BRW_OPCODE_AND, *reg, *reg, fs_reg(1u)); } return reg; @@ -628,11 +606,11 @@ fs_visitor::emit_math(fs_opcodes opcode, fs_reg dst, fs_reg src) src.abs || src.negate)) { fs_reg expanded = fs_reg(this, glsl_type::float_type); - emit(fs_inst(BRW_OPCODE_MOV, expanded, src)); + emit(BRW_OPCODE_MOV, expanded, src); src = expanded; } - fs_inst *inst = emit(fs_inst(opcode, dst, src)); + fs_inst *inst = emit(opcode, dst, src); if (intel->gen < 6) { inst->base_mrf = 2; @@ -658,20 +636,20 @@ fs_visitor::emit_math(fs_opcodes opcode, fs_reg dst, fs_reg src0, fs_reg src1) */ if (src0.file == UNIFORM || src0.abs || src0.negate) { fs_reg expanded = fs_reg(this, glsl_type::float_type); - emit(fs_inst(BRW_OPCODE_MOV, expanded, src0)); + emit(BRW_OPCODE_MOV, expanded, src0); src0 = expanded; } if (src1.file == UNIFORM || src1.abs || src1.negate) { fs_reg expanded = fs_reg(this, glsl_type::float_type); - emit(fs_inst(BRW_OPCODE_MOV, expanded, src1)); + emit(BRW_OPCODE_MOV, expanded, src1); src1 = expanded; } - inst = emit(fs_inst(opcode, dst, src0, src1)); + inst = emit(opcode, dst, src0, src1); } else { - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + 1), src1)); - inst = emit(fs_inst(opcode, dst, src0, reg_null_f)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + 1), src1); + inst = emit(opcode, dst, src0, reg_null_f); inst->base_mrf = base_mrf; inst->mlen = 2; @@ -788,7 +766,7 @@ fs_visitor::try_emit_saturate(ir_expression *ir) fs_reg src = this->result; this->result = fs_reg(this, ir->type); - fs_inst *inst = emit(fs_inst(BRW_OPCODE_MOV, this->result, src)); + fs_inst *inst = emit(BRW_OPCODE_MOV, this->result, src); inst->saturate = true; return true; @@ -834,9 +812,8 @@ fs_visitor::visit(ir_expression *ir) ir->operands[operand]->accept(this); if (this->result.file == BAD_FILE) { ir_print_visitor v; - printf("Failed to get tree for expression operand:\n"); + fail("Failed to get tree for expression operand:\n"); ir->operands[operand]->accept(&v); - this->fail = true; } op[operand] = this->result; @@ -859,7 +836,7 @@ fs_visitor::visit(ir_expression *ir) /* Note that BRW_OPCODE_NOT is not appropriate here, since it is * ones complement of the whole register, not just bit 0. */ - emit(fs_inst(BRW_OPCODE_XOR, this->result, op[0], fs_reg(1))); + emit(BRW_OPCODE_XOR, this->result, op[0], fs_reg(1)); break; case ir_unop_neg: op[0].negate = !op[0].negate; @@ -873,16 +850,16 @@ fs_visitor::visit(ir_expression *ir) case ir_unop_sign: temp = fs_reg(this, ir->type); - emit(fs_inst(BRW_OPCODE_MOV, this->result, fs_reg(0.0f))); + emit(BRW_OPCODE_MOV, this->result, fs_reg(0.0f)); - inst = emit(fs_inst(BRW_OPCODE_CMP, reg_null_f, op[0], fs_reg(0.0f))); + inst = emit(BRW_OPCODE_CMP, reg_null_f, op[0], fs_reg(0.0f)); inst->conditional_mod = BRW_CONDITIONAL_G; - inst = emit(fs_inst(BRW_OPCODE_MOV, this->result, fs_reg(1.0f))); + inst = emit(BRW_OPCODE_MOV, this->result, fs_reg(1.0f)); inst->predicated = true; - inst = emit(fs_inst(BRW_OPCODE_CMP, reg_null_f, op[0], fs_reg(0.0f))); + inst = emit(BRW_OPCODE_CMP, reg_null_f, op[0], fs_reg(0.0f)); inst->conditional_mod = BRW_CONDITIONAL_L; - inst = emit(fs_inst(BRW_OPCODE_MOV, this->result, fs_reg(-1.0f))); + inst = emit(BRW_OPCODE_MOV, this->result, fs_reg(-1.0f)); inst->predicated = true; break; @@ -910,21 +887,21 @@ fs_visitor::visit(ir_expression *ir) break; case ir_unop_dFdx: - emit(fs_inst(FS_OPCODE_DDX, this->result, op[0])); + emit(FS_OPCODE_DDX, this->result, op[0]); break; case ir_unop_dFdy: - emit(fs_inst(FS_OPCODE_DDY, this->result, op[0])); + emit(FS_OPCODE_DDY, this->result, op[0]); break; case ir_binop_add: - emit(fs_inst(BRW_OPCODE_ADD, this->result, op[0], op[1])); + emit(BRW_OPCODE_ADD, this->result, op[0], op[1]); break; case ir_binop_sub: assert(!"not reached: should be handled by ir_sub_to_add_neg"); break; case ir_binop_mul: - emit(fs_inst(BRW_OPCODE_MUL, this->result, op[0], op[1])); + emit(BRW_OPCODE_MUL, this->result, op[0], op[1]); break; case ir_binop_div: assert(!"not reached: should be handled by ir_div_to_mul_rcp"); @@ -946,21 +923,21 @@ fs_visitor::visit(ir_expression *ir) if (intel->gen < 5) temp.type = op[0].type; - inst = emit(fs_inst(BRW_OPCODE_CMP, temp, op[0], op[1])); + inst = emit(BRW_OPCODE_CMP, temp, op[0], op[1]); inst->conditional_mod = brw_conditional_for_comparison(ir->operation); - emit(fs_inst(BRW_OPCODE_AND, this->result, this->result, fs_reg(0x1))); + emit(BRW_OPCODE_AND, this->result, this->result, fs_reg(0x1)); break; case ir_binop_logic_xor: - emit(fs_inst(BRW_OPCODE_XOR, this->result, op[0], op[1])); + emit(BRW_OPCODE_XOR, this->result, op[0], op[1]); break; case ir_binop_logic_or: - emit(fs_inst(BRW_OPCODE_OR, this->result, op[0], op[1])); + emit(BRW_OPCODE_OR, this->result, op[0], op[1]); break; case ir_binop_logic_and: - emit(fs_inst(BRW_OPCODE_AND, this->result, op[0], op[1])); + emit(BRW_OPCODE_AND, this->result, op[0], op[1]); break; case ir_binop_dot: @@ -988,7 +965,7 @@ fs_visitor::visit(ir_expression *ir) case ir_unop_b2f: case ir_unop_b2i: case ir_unop_f2i: - emit(fs_inst(BRW_OPCODE_MOV, this->result, op[0])); + emit(BRW_OPCODE_MOV, this->result, op[0]); break; case ir_unop_f2b: case ir_unop_i2b: @@ -997,42 +974,41 @@ fs_visitor::visit(ir_expression *ir) if (intel->gen < 5) temp.type = op[0].type; - inst = emit(fs_inst(BRW_OPCODE_CMP, temp, op[0], fs_reg(0.0f))); + inst = emit(BRW_OPCODE_CMP, temp, op[0], fs_reg(0.0f)); inst->conditional_mod = BRW_CONDITIONAL_NZ; - inst = emit(fs_inst(BRW_OPCODE_AND, this->result, - this->result, fs_reg(1))); + inst = emit(BRW_OPCODE_AND, this->result, this->result, fs_reg(1)); break; case ir_unop_trunc: - emit(fs_inst(BRW_OPCODE_RNDZ, this->result, op[0])); + emit(BRW_OPCODE_RNDZ, this->result, op[0]); break; case ir_unop_ceil: op[0].negate = !op[0].negate; - inst = emit(fs_inst(BRW_OPCODE_RNDD, this->result, op[0])); + inst = emit(BRW_OPCODE_RNDD, this->result, op[0]); this->result.negate = true; break; case ir_unop_floor: - inst = emit(fs_inst(BRW_OPCODE_RNDD, this->result, op[0])); + inst = emit(BRW_OPCODE_RNDD, this->result, op[0]); break; case ir_unop_fract: - inst = emit(fs_inst(BRW_OPCODE_FRC, this->result, op[0])); + inst = emit(BRW_OPCODE_FRC, this->result, op[0]); break; case ir_unop_round_even: - emit(fs_inst(BRW_OPCODE_RNDE, this->result, op[0])); + emit(BRW_OPCODE_RNDE, this->result, op[0]); break; case ir_binop_min: - inst = emit(fs_inst(BRW_OPCODE_CMP, this->result, op[0], op[1])); + inst = emit(BRW_OPCODE_CMP, this->result, op[0], op[1]); inst->conditional_mod = BRW_CONDITIONAL_L; - inst = emit(fs_inst(BRW_OPCODE_SEL, this->result, op[0], op[1])); + inst = emit(BRW_OPCODE_SEL, this->result, op[0], op[1]); inst->predicated = true; break; case ir_binop_max: - inst = emit(fs_inst(BRW_OPCODE_CMP, this->result, op[0], op[1])); + inst = emit(BRW_OPCODE_CMP, this->result, op[0], op[1]); inst->conditional_mod = BRW_CONDITIONAL_G; - inst = emit(fs_inst(BRW_OPCODE_SEL, this->result, op[0], op[1])); + inst = emit(BRW_OPCODE_SEL, this->result, op[0], op[1]); inst->predicated = true; break; @@ -1041,16 +1017,16 @@ fs_visitor::visit(ir_expression *ir) break; case ir_unop_bit_not: - inst = emit(fs_inst(BRW_OPCODE_NOT, this->result, op[0])); + inst = emit(BRW_OPCODE_NOT, this->result, op[0]); break; case ir_binop_bit_and: - inst = emit(fs_inst(BRW_OPCODE_AND, this->result, op[0], op[1])); + inst = emit(BRW_OPCODE_AND, this->result, op[0], op[1]); break; case ir_binop_bit_xor: - inst = emit(fs_inst(BRW_OPCODE_XOR, this->result, op[0], op[1])); + inst = emit(BRW_OPCODE_XOR, this->result, op[0], op[1]); break; case ir_binop_bit_or: - inst = emit(fs_inst(BRW_OPCODE_OR, this->result, op[0], op[1])); + inst = emit(BRW_OPCODE_OR, this->result, op[0], op[1]); break; case ir_unop_u2f: @@ -1074,7 +1050,7 @@ fs_visitor::emit_assignment_writes(fs_reg &l, fs_reg &r, l.type = brw_type_for_base_type(type); r.type = brw_type_for_base_type(type); - fs_inst *inst = emit(fs_inst(BRW_OPCODE_MOV, l, r)); + fs_inst *inst = emit(BRW_OPCODE_MOV, l, r); inst->predicated = predicated; l.reg_offset++; @@ -1127,7 +1103,7 @@ fs_visitor::visit(ir_assignment *ir) ir->lhs->type->is_vector()) { for (int i = 0; i < ir->lhs->type->vector_elements; i++) { if (ir->write_mask & (1 << i)) { - inst = emit(fs_inst(BRW_OPCODE_MOV, l, r)); + inst = emit(BRW_OPCODE_MOV, l, r); if (ir->condition) inst->predicated = true; r.reg_offset++; @@ -1152,8 +1128,7 @@ fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate) if (ir->shadow_comparitor) { for (int i = 0; i < ir->coordinate->type->vector_elements; i++) { - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i), - coordinate)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i), coordinate); coordinate.reg_offset++; } /* gen4's SIMD8 sampler always has the slots for u,v,r present. */ @@ -1163,29 +1138,25 @@ fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate) /* There's no plain shadow compare message, so we use shadow * compare with a bias of 0.0. */ - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), - fs_reg(0.0f))); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), fs_reg(0.0f)); mlen++; } else if (ir->op == ir_txb) { ir->lod_info.bias->accept(this); - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), - this->result)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result); mlen++; } else { assert(ir->op == ir_txl); ir->lod_info.lod->accept(this); - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), - this->result)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result); mlen++; } ir->shadow_comparitor->accept(this); - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result); mlen++; } else if (ir->op == ir_tex) { for (int i = 0; i < ir->coordinate->type->vector_elements; i++) { - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i), - coordinate)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i), coordinate); coordinate.reg_offset++; } /* gen4's SIMD8 sampler always has the slots for u,v,r present. */ @@ -1199,8 +1170,7 @@ fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate) assert(ir->op == ir_txb || ir->op == ir_txl); for (int i = 0; i < ir->coordinate->type->vector_elements; i++) { - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i * 2), - coordinate)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i * 2), coordinate); coordinate.reg_offset++; } @@ -1209,13 +1179,11 @@ fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate) if (ir->op == ir_txb) { ir->lod_info.bias->accept(this); - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), - this->result)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result); mlen++; } else { ir->lod_info.lod->accept(this); - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), - this->result)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result); mlen++; } @@ -1236,16 +1204,16 @@ fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate) fs_inst *inst = NULL; switch (ir->op) { case ir_tex: - inst = emit(fs_inst(FS_OPCODE_TEX, dst)); + inst = emit(FS_OPCODE_TEX, dst); break; case ir_txb: - inst = emit(fs_inst(FS_OPCODE_TXB, dst)); + inst = emit(FS_OPCODE_TXB, dst); break; case ir_txl: - inst = emit(fs_inst(FS_OPCODE_TXL, dst)); + inst = emit(FS_OPCODE_TXL, dst); break; case ir_txd: - inst = emit(fs_inst(FS_OPCODE_TXD, dst)); + inst = emit(FS_OPCODE_TXD, dst); break; case ir_txf: assert(!"GLSL 1.30 features unsupported"); @@ -1256,7 +1224,7 @@ fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate) if (simd16) { for (int i = 0; i < 4; i++) { - emit(fs_inst(BRW_OPCODE_MOV, orig_dst, dst)); + emit(BRW_OPCODE_MOV, orig_dst, dst); orig_dst.reg_offset++; dst.reg_offset += 2; } @@ -1280,8 +1248,7 @@ fs_visitor::emit_texture_gen5(ir_texture *ir, fs_reg dst, fs_reg coordinate) int base_mrf = 1; for (int i = 0; i < ir->coordinate->type->vector_elements; i++) { - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i), - coordinate)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i), coordinate); coordinate.reg_offset++; } mlen += ir->coordinate->type->vector_elements; @@ -1290,30 +1257,30 @@ fs_visitor::emit_texture_gen5(ir_texture *ir, fs_reg dst, fs_reg coordinate) mlen = MAX2(mlen, 5); ir->shadow_comparitor->accept(this); - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result); mlen++; } fs_inst *inst = NULL; switch (ir->op) { case ir_tex: - inst = emit(fs_inst(FS_OPCODE_TEX, dst)); + inst = emit(FS_OPCODE_TEX, dst); break; case ir_txb: ir->lod_info.bias->accept(this); mlen = MAX2(mlen, 5); - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result); mlen++; - inst = emit(fs_inst(FS_OPCODE_TXB, dst)); + inst = emit(FS_OPCODE_TXB, dst); break; case ir_txl: ir->lod_info.lod->accept(this); mlen = MAX2(mlen, 5); - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result); mlen++; - inst = emit(fs_inst(FS_OPCODE_TXL, dst)); + inst = emit(FS_OPCODE_TXL, dst); break; case ir_txd: case ir_txf: @@ -1356,14 +1323,14 @@ fs_visitor::visit(ir_texture *ir) } /* Explicitly set up the message header by copying g0 to msg reg m1. */ - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, 1, BRW_REGISTER_TYPE_UD), - fs_reg(GRF, 0, BRW_REGISTER_TYPE_UD))); + emit(BRW_OPCODE_MOV, fs_reg(MRF, 1, BRW_REGISTER_TYPE_UD), + fs_reg(GRF, 0, BRW_REGISTER_TYPE_UD)); /* Then set the offset bits in DWord 2 of the message header. */ - emit(fs_inst(BRW_OPCODE_MOV, - fs_reg(retype(brw_vec1_reg(BRW_MESSAGE_REGISTER_FILE, 1, 2), - BRW_REGISTER_TYPE_UD)), - fs_reg(brw_imm_uw(offset_bits)))); + emit(BRW_OPCODE_MOV, + fs_reg(retype(brw_vec1_reg(BRW_MESSAGE_REGISTER_FILE, 1, 2), + BRW_REGISTER_TYPE_UD)), + fs_reg(brw_imm_uw(offset_bits))); } /* Should be lowered by do_lower_texture_projection */ @@ -1409,10 +1376,10 @@ fs_visitor::visit(ir_texture *ir) fs_reg src = coordinate; coordinate = dst; - emit(fs_inst(BRW_OPCODE_MUL, dst, src, scale_x)); + emit(BRW_OPCODE_MUL, dst, src, scale_x); dst.reg_offset++; src.reg_offset++; - emit(fs_inst(BRW_OPCODE_MUL, dst, src, scale_y)); + emit(BRW_OPCODE_MUL, dst, src, scale_y); } /* Writemasking doesn't eliminate channels on SIMD8 texture @@ -1453,13 +1420,13 @@ fs_visitor::visit(ir_texture *ir) l.reg_offset += i; if (swiz == SWIZZLE_ZERO) { - emit(fs_inst(BRW_OPCODE_MOV, l, fs_reg(0.0f))); + emit(BRW_OPCODE_MOV, l, fs_reg(0.0f)); } else if (swiz == SWIZZLE_ONE) { - emit(fs_inst(BRW_OPCODE_MOV, l, fs_reg(1.0f))); + emit(BRW_OPCODE_MOV, l, fs_reg(1.0f)); } else { fs_reg r = dst; r.reg_offset += GET_SWZ(c->key.tex_swizzles[inst->sampler], i); - emit(fs_inst(BRW_OPCODE_MOV, l, r)); + emit(BRW_OPCODE_MOV, l, r); } } this->result = swizzle_dst; @@ -1500,7 +1467,7 @@ fs_visitor::visit(ir_swizzle *ir) } channel.reg_offset += swiz; - emit(fs_inst(BRW_OPCODE_MOV, result, channel)); + emit(BRW_OPCODE_MOV, result, channel); result.reg_offset++; } } @@ -1512,8 +1479,8 @@ fs_visitor::visit(ir_discard *ir) assert(ir->condition == NULL); /* FINISHME */ - emit(fs_inst(FS_OPCODE_DISCARD_NOT, temp, reg_null_d)); - emit(fs_inst(FS_OPCODE_DISCARD_AND, reg_null_d, temp)); + emit(FS_OPCODE_DISCARD_NOT, temp, reg_null_d); + emit(FS_OPCODE_DISCARD_AND, reg_null_d, temp); kill_emitted = true; } @@ -1539,7 +1506,7 @@ fs_visitor::visit(ir_constant *ir) dst_reg.type = src_reg.type; for (unsigned j = 0; j < size; j++) { - emit(fs_inst(BRW_OPCODE_MOV, dst_reg, src_reg)); + emit(BRW_OPCODE_MOV, dst_reg, src_reg); src_reg.reg_offset++; dst_reg.reg_offset++; } @@ -1554,7 +1521,7 @@ fs_visitor::visit(ir_constant *ir) dst_reg.type = src_reg.type; for (unsigned j = 0; j < size; j++) { - emit(fs_inst(BRW_OPCODE_MOV, dst_reg, src_reg)); + emit(BRW_OPCODE_MOV, dst_reg, src_reg); src_reg.reg_offset++; dst_reg.reg_offset++; } @@ -1565,16 +1532,16 @@ fs_visitor::visit(ir_constant *ir) for (unsigned i = 0; i < size; i++) { switch (ir->type->base_type) { case GLSL_TYPE_FLOAT: - emit(fs_inst(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.f[i]))); + emit(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.f[i])); break; case GLSL_TYPE_UINT: - emit(fs_inst(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.u[i]))); + emit(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.u[i])); break; case GLSL_TYPE_INT: - emit(fs_inst(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.i[i]))); + emit(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.i[i])); break; case GLSL_TYPE_BOOL: - emit(fs_inst(BRW_OPCODE_MOV, dst_reg, fs_reg((int)ir->value.b[i]))); + emit(BRW_OPCODE_MOV, dst_reg, fs_reg((int)ir->value.b[i])); break; default: assert(!"Non-float/uint/int/bool constant"); @@ -1605,40 +1572,39 @@ fs_visitor::emit_bool_to_cond_code(ir_rvalue *ir) switch (expr->operation) { case ir_unop_logic_not: - inst = emit(fs_inst(BRW_OPCODE_AND, reg_null_d, op[0], fs_reg(1))); + inst = emit(BRW_OPCODE_AND, reg_null_d, op[0], fs_reg(1)); inst->conditional_mod = BRW_CONDITIONAL_Z; break; case ir_binop_logic_xor: - inst = emit(fs_inst(BRW_OPCODE_XOR, reg_null_d, op[0], op[1])); + inst = emit(BRW_OPCODE_XOR, reg_null_d, op[0], op[1]); inst->conditional_mod = BRW_CONDITIONAL_NZ; break; case ir_binop_logic_or: - inst = emit(fs_inst(BRW_OPCODE_OR, reg_null_d, op[0], op[1])); + inst = emit(BRW_OPCODE_OR, reg_null_d, op[0], op[1]); inst->conditional_mod = BRW_CONDITIONAL_NZ; break; case ir_binop_logic_and: - inst = emit(fs_inst(BRW_OPCODE_AND, reg_null_d, op[0], op[1])); + inst = emit(BRW_OPCODE_AND, reg_null_d, op[0], op[1]); inst->conditional_mod = BRW_CONDITIONAL_NZ; break; case ir_unop_f2b: if (intel->gen >= 6) { - inst = emit(fs_inst(BRW_OPCODE_CMP, reg_null_d, - op[0], fs_reg(0.0f))); + inst = emit(BRW_OPCODE_CMP, reg_null_d, op[0], fs_reg(0.0f)); } else { - inst = emit(fs_inst(BRW_OPCODE_MOV, reg_null_f, op[0])); + inst = emit(BRW_OPCODE_MOV, reg_null_f, op[0]); } inst->conditional_mod = BRW_CONDITIONAL_NZ; break; case ir_unop_i2b: if (intel->gen >= 6) { - inst = emit(fs_inst(BRW_OPCODE_CMP, reg_null_d, op[0], fs_reg(0))); + inst = emit(BRW_OPCODE_CMP, reg_null_d, op[0], fs_reg(0)); } else { - inst = emit(fs_inst(BRW_OPCODE_MOV, reg_null_d, op[0])); + inst = emit(BRW_OPCODE_MOV, reg_null_d, op[0]); } inst->conditional_mod = BRW_CONDITIONAL_NZ; break; @@ -1651,14 +1617,14 @@ fs_visitor::emit_bool_to_cond_code(ir_rvalue *ir) case ir_binop_all_equal: case ir_binop_nequal: case ir_binop_any_nequal: - inst = emit(fs_inst(BRW_OPCODE_CMP, reg_null_cmp, op[0], op[1])); + inst = emit(BRW_OPCODE_CMP, reg_null_cmp, op[0], op[1]); inst->conditional_mod = brw_conditional_for_comparison(expr->operation); break; default: assert(!"not reached"); - this->fail = true; + fail("bad cond code\n"); break; } return; @@ -1667,11 +1633,10 @@ fs_visitor::emit_bool_to_cond_code(ir_rvalue *ir) ir->accept(this); if (intel->gen >= 6) { - fs_inst *inst = emit(fs_inst(BRW_OPCODE_AND, reg_null_d, - this->result, fs_reg(1))); + fs_inst *inst = emit(BRW_OPCODE_AND, reg_null_d, this->result, fs_reg(1)); inst->conditional_mod = BRW_CONDITIONAL_NZ; } else { - fs_inst *inst = emit(fs_inst(BRW_OPCODE_MOV, reg_null_d, this->result)); + fs_inst *inst = emit(BRW_OPCODE_MOV, reg_null_d, this->result); inst->conditional_mod = BRW_CONDITIONAL_NZ; } } @@ -1700,36 +1665,36 @@ fs_visitor::emit_if_gen6(ir_if *ir) switch (expr->operation) { case ir_unop_logic_not: - inst = emit(fs_inst(BRW_OPCODE_IF, temp, op[0], fs_reg(0))); + inst = emit(BRW_OPCODE_IF, temp, op[0], fs_reg(0)); inst->conditional_mod = BRW_CONDITIONAL_Z; return; case ir_binop_logic_xor: - inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_d, op[0], op[1])); + inst = emit(BRW_OPCODE_IF, reg_null_d, op[0], op[1]); inst->conditional_mod = BRW_CONDITIONAL_NZ; return; case ir_binop_logic_or: temp = fs_reg(this, glsl_type::bool_type); - emit(fs_inst(BRW_OPCODE_OR, temp, op[0], op[1])); - inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_d, temp, fs_reg(0))); + emit(BRW_OPCODE_OR, temp, op[0], op[1]); + inst = emit(BRW_OPCODE_IF, reg_null_d, temp, fs_reg(0)); inst->conditional_mod = BRW_CONDITIONAL_NZ; return; case ir_binop_logic_and: temp = fs_reg(this, glsl_type::bool_type); - emit(fs_inst(BRW_OPCODE_AND, temp, op[0], op[1])); - inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_d, temp, fs_reg(0))); + emit(BRW_OPCODE_AND, temp, op[0], op[1]); + inst = emit(BRW_OPCODE_IF, reg_null_d, temp, fs_reg(0)); inst->conditional_mod = BRW_CONDITIONAL_NZ; return; case ir_unop_f2b: - inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_f, op[0], fs_reg(0))); + inst = emit(BRW_OPCODE_IF, reg_null_f, op[0], fs_reg(0)); inst->conditional_mod = BRW_CONDITIONAL_NZ; return; case ir_unop_i2b: - inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_d, op[0], fs_reg(0))); + inst = emit(BRW_OPCODE_IF, reg_null_d, op[0], fs_reg(0)); inst->conditional_mod = BRW_CONDITIONAL_NZ; return; @@ -1741,15 +1706,15 @@ fs_visitor::emit_if_gen6(ir_if *ir) case ir_binop_all_equal: case ir_binop_nequal: case ir_binop_any_nequal: - inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_d, op[0], op[1])); + inst = emit(BRW_OPCODE_IF, reg_null_d, op[0], op[1]); inst->conditional_mod = brw_conditional_for_comparison(expr->operation); return; default: assert(!"not reached"); - inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_d, op[0], fs_reg(0))); + inst = emit(BRW_OPCODE_IF, reg_null_d, op[0], fs_reg(0)); inst->conditional_mod = BRW_CONDITIONAL_NZ; - this->fail = true; + fail("bad condition\n"); return; } return; @@ -1757,7 +1722,7 @@ fs_visitor::emit_if_gen6(ir_if *ir) ir->condition->accept(this); - fs_inst *inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_d, this->result, fs_reg(0))); + fs_inst *inst = emit(BRW_OPCODE_IF, reg_null_d, this->result, fs_reg(0)); inst->conditional_mod = BRW_CONDITIONAL_NZ; } @@ -1776,7 +1741,7 @@ fs_visitor::visit(ir_if *ir) } else { emit_bool_to_cond_code(ir->condition); - inst = emit(fs_inst(BRW_OPCODE_IF)); + inst = emit(BRW_OPCODE_IF); inst->predicated = true; } @@ -1788,7 +1753,7 @@ fs_visitor::visit(ir_if *ir) } if (!ir->else_instructions.is_empty()) { - emit(fs_inst(BRW_OPCODE_ELSE)); + emit(BRW_OPCODE_ELSE); foreach_iter(exec_list_iterator, iter, ir->else_instructions) { ir_instruction *ir = (ir_instruction *)iter.get(); @@ -1798,7 +1763,7 @@ fs_visitor::visit(ir_if *ir) } } - emit(fs_inst(BRW_OPCODE_ENDIF)); + emit(BRW_OPCODE_ENDIF); } void @@ -1815,21 +1780,20 @@ fs_visitor::visit(ir_loop *ir) this->base_ir = ir->from; ir->from->accept(this); - emit(fs_inst(BRW_OPCODE_MOV, counter, this->result)); + emit(BRW_OPCODE_MOV, counter, this->result); } } - emit(fs_inst(BRW_OPCODE_DO)); + emit(BRW_OPCODE_DO); if (ir->to) { this->base_ir = ir->to; ir->to->accept(this); - fs_inst *inst = emit(fs_inst(BRW_OPCODE_CMP, reg_null_cmp, - counter, this->result)); + fs_inst *inst = emit(BRW_OPCODE_CMP, reg_null_cmp, counter, this->result); inst->conditional_mod = brw_conditional_for_comparison(ir->cmp); - inst = emit(fs_inst(BRW_OPCODE_BREAK)); + inst = emit(BRW_OPCODE_BREAK); inst->predicated = true; } @@ -1843,10 +1807,10 @@ fs_visitor::visit(ir_loop *ir) if (ir->increment) { this->base_ir = ir->increment; ir->increment->accept(this); - emit(fs_inst(BRW_OPCODE_ADD, counter, counter, this->result)); + emit(BRW_OPCODE_ADD, counter, counter, this->result); } - emit(fs_inst(BRW_OPCODE_WHILE)); + emit(BRW_OPCODE_WHILE); } void @@ -1854,10 +1818,10 @@ fs_visitor::visit(ir_loop_jump *ir) { switch (ir->mode) { case ir_loop_jump::jump_break: - emit(fs_inst(BRW_OPCODE_BREAK)); + emit(BRW_OPCODE_BREAK); break; case ir_loop_jump::jump_continue: - emit(fs_inst(BRW_OPCODE_CONTINUE)); + emit(BRW_OPCODE_CONTINUE); break; } } @@ -1923,23 +1887,13 @@ void fs_visitor::emit_dummy_fs() { /* Everyone's favorite color. */ - emit(fs_inst(BRW_OPCODE_MOV, - fs_reg(MRF, 2), - fs_reg(1.0f))); - emit(fs_inst(BRW_OPCODE_MOV, - fs_reg(MRF, 3), - fs_reg(0.0f))); - emit(fs_inst(BRW_OPCODE_MOV, - fs_reg(MRF, 4), - fs_reg(1.0f))); - emit(fs_inst(BRW_OPCODE_MOV, - fs_reg(MRF, 5), - fs_reg(0.0f))); + emit(BRW_OPCODE_MOV, fs_reg(MRF, 2), fs_reg(1.0f)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, 3), fs_reg(0.0f)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, 4), fs_reg(1.0f)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, 5), fs_reg(0.0f)); fs_inst *write; - write = emit(fs_inst(FS_OPCODE_FB_WRITE, - fs_reg(0), - fs_reg(0))); + write = emit(FS_OPCODE_FB_WRITE, fs_reg(0), fs_reg(0)); write->base_mrf = 0; } @@ -1969,14 +1923,14 @@ fs_visitor::emit_interpolation_setup_gen4() this->pixel_y = fs_reg(this, glsl_type::uint_type); this->pixel_x.type = BRW_REGISTER_TYPE_UW; this->pixel_y.type = BRW_REGISTER_TYPE_UW; - emit(fs_inst(BRW_OPCODE_ADD, - this->pixel_x, - fs_reg(stride(suboffset(g1_uw, 4), 2, 4, 0)), - fs_reg(brw_imm_v(0x10101010)))); - emit(fs_inst(BRW_OPCODE_ADD, - this->pixel_y, - fs_reg(stride(suboffset(g1_uw, 5), 2, 4, 0)), - fs_reg(brw_imm_v(0x11001100)))); + emit(BRW_OPCODE_ADD, + this->pixel_x, + fs_reg(stride(suboffset(g1_uw, 4), 2, 4, 0)), + fs_reg(brw_imm_v(0x10101010))); + emit(BRW_OPCODE_ADD, + this->pixel_y, + fs_reg(stride(suboffset(g1_uw, 5), 2, 4, 0)), + fs_reg(brw_imm_v(0x11001100))); this->current_annotation = "compute pixel deltas from v0"; if (brw->has_pln) { @@ -1987,22 +1941,18 @@ fs_visitor::emit_interpolation_setup_gen4() this->delta_x = fs_reg(this, glsl_type::float_type); this->delta_y = fs_reg(this, glsl_type::float_type); } - emit(fs_inst(BRW_OPCODE_ADD, - this->delta_x, - this->pixel_x, - fs_reg(negate(brw_vec1_grf(1, 0))))); - emit(fs_inst(BRW_OPCODE_ADD, - this->delta_y, - this->pixel_y, - fs_reg(negate(brw_vec1_grf(1, 1))))); + emit(BRW_OPCODE_ADD, this->delta_x, + this->pixel_x, fs_reg(negate(brw_vec1_grf(1, 0)))); + emit(BRW_OPCODE_ADD, this->delta_y, + this->pixel_y, fs_reg(negate(brw_vec1_grf(1, 1)))); this->current_annotation = "compute pos.w and 1/pos.w"; /* Compute wpos.w. It's always in our setup, since it's needed to * interpolate the other attributes. */ this->wpos_w = fs_reg(this, glsl_type::float_type); - emit(fs_inst(FS_OPCODE_LINTERP, wpos_w, this->delta_x, this->delta_y, - interp_reg(FRAG_ATTRIB_WPOS, 3))); + emit(FS_OPCODE_LINTERP, wpos_w, this->delta_x, this->delta_y, + interp_reg(FRAG_ATTRIB_WPOS, 3)); /* Compute the pixel 1/W value from wpos.w. */ this->pixel_w = fs_reg(this, glsl_type::float_type); emit_math(FS_OPCODE_RCP, this->pixel_w, wpos_w); @@ -2021,14 +1971,14 @@ fs_visitor::emit_interpolation_setup_gen6() fs_reg int_pixel_y = fs_reg(this, glsl_type::uint_type); int_pixel_x.type = BRW_REGISTER_TYPE_UW; int_pixel_y.type = BRW_REGISTER_TYPE_UW; - emit(fs_inst(BRW_OPCODE_ADD, - int_pixel_x, - fs_reg(stride(suboffset(g1_uw, 4), 2, 4, 0)), - fs_reg(brw_imm_v(0x10101010)))); - emit(fs_inst(BRW_OPCODE_ADD, - int_pixel_y, - fs_reg(stride(suboffset(g1_uw, 5), 2, 4, 0)), - fs_reg(brw_imm_v(0x11001100)))); + emit(BRW_OPCODE_ADD, + int_pixel_x, + fs_reg(stride(suboffset(g1_uw, 4), 2, 4, 0)), + fs_reg(brw_imm_v(0x10101010))); + emit(BRW_OPCODE_ADD, + int_pixel_y, + fs_reg(stride(suboffset(g1_uw, 5), 2, 4, 0)), + fs_reg(brw_imm_v(0x11001100))); /* As of gen6, we can no longer mix float and int sources. We have * to turn the integer pixel centers into floats for their actual @@ -2036,13 +1986,13 @@ fs_visitor::emit_interpolation_setup_gen6() */ this->pixel_x = fs_reg(this, glsl_type::float_type); this->pixel_y = fs_reg(this, glsl_type::float_type); - emit(fs_inst(BRW_OPCODE_MOV, this->pixel_x, int_pixel_x)); - emit(fs_inst(BRW_OPCODE_MOV, this->pixel_y, int_pixel_y)); + emit(BRW_OPCODE_MOV, this->pixel_x, int_pixel_x); + emit(BRW_OPCODE_MOV, this->pixel_y, int_pixel_y); - this->current_annotation = "compute 1/pos.w"; - this->wpos_w = fs_reg(brw_vec8_grf(c->source_w_reg, 0)); - this->pixel_w = fs_reg(this, glsl_type::float_type); - emit_math(FS_OPCODE_RCP, this->pixel_w, wpos_w); + this->current_annotation = "compute pos.w"; + this->pixel_w = fs_reg(brw_vec8_grf(c->source_w_reg, 0)); + this->wpos_w = fs_reg(this, glsl_type::float_type); + emit_math(FS_OPCODE_RCP, this->wpos_w, this->pixel_w); this->delta_x = fs_reg(brw_vec8_grf(2, 0)); this->delta_y = fs_reg(brw_vec8_grf(3, 0)); @@ -2069,8 +2019,8 @@ fs_visitor::emit_fb_writes() } if (c->aa_dest_stencil_reg) { - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, nr++), - fs_reg(brw_vec8_grf(c->aa_dest_stencil_reg, 0)))); + emit(BRW_OPCODE_MOV, fs_reg(MRF, nr++), + fs_reg(brw_vec8_grf(c->aa_dest_stencil_reg, 0))); } /* Reserve space for color. It'll be filled in per MRT below. */ @@ -2083,17 +2033,17 @@ fs_visitor::emit_fb_writes() assert(this->frag_depth); fs_reg depth = *(variable_storage(this->frag_depth)); - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, nr++), depth)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, nr++), depth); } else { /* Pass through the payload depth. */ - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, nr++), - fs_reg(brw_vec8_grf(c->source_depth_reg, 0)))); + emit(BRW_OPCODE_MOV, fs_reg(MRF, nr++), + fs_reg(brw_vec8_grf(c->source_depth_reg, 0))); } } if (c->dest_depth_reg) { - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, nr++), - fs_reg(brw_vec8_grf(c->dest_depth_reg, 0)))); + emit(BRW_OPCODE_MOV, fs_reg(MRF, nr++), + fs_reg(brw_vec8_grf(c->dest_depth_reg, 0))); } fs_reg color = reg_undef; @@ -2110,9 +2060,7 @@ fs_visitor::emit_fb_writes() target); if (this->frag_color || this->frag_data) { for (int i = 0; i < 4; i++) { - emit(fs_inst(BRW_OPCODE_MOV, - fs_reg(MRF, color_mrf + i), - color)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, color_mrf + i), color); color.reg_offset++; } } @@ -2120,8 +2068,7 @@ fs_visitor::emit_fb_writes() if (this->frag_color) color.reg_offset -= 4; - fs_inst *inst = emit(fs_inst(FS_OPCODE_FB_WRITE, - reg_undef, reg_undef)); + fs_inst *inst = emit(FS_OPCODE_FB_WRITE); inst->target = target; inst->base_mrf = 0; inst->mlen = nr; @@ -2137,13 +2084,10 @@ fs_visitor::emit_fb_writes() * renderbuffer. */ color.reg_offset += 3; - emit(fs_inst(BRW_OPCODE_MOV, - fs_reg(MRF, color_mrf + 3), - color)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, color_mrf + 3), color); } - fs_inst *inst = emit(fs_inst(FS_OPCODE_FB_WRITE, - reg_undef, reg_undef)); + fs_inst *inst = emit(FS_OPCODE_FB_WRITE); inst->base_mrf = 0; inst->mlen = nr; inst->eot = true; @@ -2868,8 +2812,7 @@ fs_visitor::calculate_live_intervals() if (inst->src[i].file == GRF && inst->src[i].reg != 0) { int reg = inst->src[i].reg; - if (!loop_depth || (this->virtual_grf_sizes[reg] == 1 && - def[reg] >= bb_header_ip)) { + if (!loop_depth) { use[reg] = ip; } else { def[reg] = MIN2(loop_start, def[reg]); @@ -2885,8 +2828,7 @@ fs_visitor::calculate_live_intervals() if (inst->dst.file == GRF && inst->dst.reg != 0) { int reg = inst->dst.reg; - if (!loop_depth || (this->virtual_grf_sizes[reg] == 1 && - !inst->predicated)) { + if (!loop_depth) { def[reg] = MIN2(def[reg], ip); } else { def[reg] = MIN2(def[reg], loop_start); @@ -2996,12 +2938,41 @@ fs_visitor::propagate_constants() progress = true; } break; + case BRW_OPCODE_CMP: + if (i == 1) { + scan_inst->src[i] = inst->src[0]; + progress = true; + } else if (i == 0 && scan_inst->src[1].file != IMM) { + uint32_t new_cmod; + + new_cmod = brw_swap_cmod(scan_inst->conditional_mod); + if (new_cmod != ~0u) { + /* Fit this constant in by swapping the operands and + * flipping the test + */ + scan_inst->src[0] = scan_inst->src[1]; + scan_inst->src[1] = inst->src[0]; + scan_inst->conditional_mod = new_cmod; + progress = true; + } + } + break; + case BRW_OPCODE_SEL: if (i == 1) { scan_inst->src[i] = inst->src[0]; progress = true; + } else if (i == 0 && scan_inst->src[1].file != IMM) { + /* Fit this constant in by swapping the operands and + * flipping the predicate + */ + scan_inst->src[0] = scan_inst->src[1]; + scan_inst->src[1] = inst->src[0]; + scan_inst->predicate_inverse = !scan_inst->predicate_inverse; + progress = true; } + break; } } @@ -3487,6 +3458,7 @@ fs_visitor::generate_code() brw_set_conditionalmod(p, inst->conditional_mod); brw_set_predicate_control(p, inst->predicated); + brw_set_predicate_inverse(p, inst->predicate_inverse); brw_set_saturate(p, inst->saturate); switch (inst->opcode) { @@ -3677,7 +3649,7 @@ fs_visitor::generate_code() } else { _mesa_problem(ctx, "Unsupported opcode %d in FS", inst->opcode); } - this->fail = true; + fail("unsupported opcode in FS\n"); } if (unlikely(INTEL_DEBUG & DEBUG_WM)) { @@ -3808,18 +3780,18 @@ brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c) v.assign_regs_trivial(); else { while (!v.assign_regs()) { - if (v.fail) + if (v.failed) break; } } } - if (!v.fail) + if (!v.failed) v.generate_code(); - assert(!v.fail); /* FINISHME: Cleanly fail, tested at link time, etc. */ + assert(!v.failed); /* FINISHME: Cleanly fail, tested at link time, etc. */ - if (v.fail) + if (v.failed) return GL_FALSE; c->prog_data.total_grf = v.grf_used; diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h index dc030ae5b50..f792906cfe7 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.h +++ b/src/mesa/drivers/dri/i965/brw_fs.h @@ -331,6 +331,7 @@ public: fs_reg src[3]; bool saturate; bool predicated; + bool predicate_inverse; int conditional_mod; /**< BRW_CONDITIONAL_* */ int mlen; /**< SEND message length */ @@ -364,7 +365,7 @@ public: this->ctx = &intel->ctx; this->mem_ctx = ralloc_context(NULL); this->shader = shader; - this->fail = false; + this->failed = false; this->variable_ht = hash_table_ctor(0, hash_table_pointer_hash, hash_table_pointer_compare); @@ -432,6 +433,32 @@ public: void visit(ir_function_signature *ir); fs_inst *emit(fs_inst inst); + + fs_inst *emit(int opcode) + { + return emit(fs_inst(opcode)); + } + + fs_inst *emit(int opcode, fs_reg dst) + { + return emit(fs_inst(opcode, dst)); + } + + fs_inst *emit(int opcode, fs_reg dst, fs_reg src0) + { + return emit(fs_inst(opcode, dst, src0)); + } + + fs_inst *emit(int opcode, fs_reg dst, fs_reg src0, fs_reg src1) + { + return emit(fs_inst(opcode, dst, src0, src1)); + } + + fs_inst *emit(int opcode, fs_reg dst, fs_reg src0, fs_reg src1, fs_reg src2) + { + return emit(fs_inst(opcode, dst, src0, src1, src2)); + } + void setup_paramvalues_refs(); void assign_curb_setup(); void calculate_urb_setup(); @@ -450,6 +477,7 @@ public: bool remove_duplicate_mrf_writes(); bool virtual_grf_interferes(int a, int b); void schedule_instructions(); + void fail(const char *msg, ...); void generate_code(); void generate_fb_write(fs_inst *inst); @@ -523,7 +551,7 @@ public: ir_instruction *base_ir; /** @} */ - bool fail; + bool failed; /* Result of last visit() method. */ fs_reg result; diff --git a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp index f0277423170..67f29ce1816 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp @@ -119,8 +119,7 @@ fs_visitor::assign_regs() } if (i == class_count) { if (this->virtual_grf_sizes[r] >= base_reg_count) { - fprintf(stderr, "Object too large to register allocate.\n"); - this->fail = true; + fail("Object too large to register allocate.\n"); } class_sizes[class_count++] = this->virtual_grf_sizes[r]; @@ -226,8 +225,9 @@ fs_visitor::assign_regs() * loop back into here to try again. */ int reg = choose_spill_reg(g); - if (reg == -1 || intel->gen >= 6) { - this->fail = true; + + if (reg == -1) { + fail("no register to spill\n"); } else { spill_reg(reg); } diff --git a/src/mesa/drivers/dri/i965/brw_gs.c b/src/mesa/drivers/dri/i965/brw_gs.c index 70c451d071d..14ee6767cd5 100644 --- a/src/mesa/drivers/dri/i965/brw_gs.c +++ b/src/mesa/drivers/dri/i965/brw_gs.c @@ -83,45 +83,23 @@ static void compile_gs_prog( struct brw_context *brw, /* Note that primitives which don't require a GS program have * already been weeded out by this stage: */ + + /* Gen6: VF has already converted into polygon, and LINELOOP is + * converted to LINESTRIP at the beginning of the 3D pipeline. + */ + if (intel->gen == 6) + return; + switch (key->primitive) { case GL_QUADS: - /* Gen6: VF has already converted into polygon. */ - if (intel->gen == 6) - return; brw_gs_quads( &c, key ); break; case GL_QUAD_STRIP: - if (intel->gen == 6) - return; brw_gs_quad_strip( &c, key ); break; case GL_LINE_LOOP: - /* Gen6: LINELOOP is converted to LINESTRIP at the beginning of the 3D pipeline */ - if (intel->gen == 6) - return; brw_gs_lines( &c ); break; - case GL_LINES: - if (key->hint_gs_always) - brw_gs_lines( &c ); - else { - return; - } - break; - case GL_TRIANGLES: - if (key->hint_gs_always) - brw_gs_tris( &c ); - else { - return; - } - break; - case GL_POINTS: - if (key->hint_gs_always) - brw_gs_points( &c ); - else { - return; - } - break; default: return; } @@ -170,7 +148,6 @@ static void populate_key( struct brw_context *brw, { struct gl_context *ctx = &brw->intel.ctx; struct intel_context *intel = &brw->intel; - int prim_gs_always; memset(key, 0, sizeof(*key)); @@ -180,8 +157,6 @@ static void populate_key( struct brw_context *brw, /* BRW_NEW_PRIMITIVE */ key->primitive = gs_prim[brw->primitive]; - key->hint_gs_always = 0; /* debug code? */ - /* _NEW_LIGHT */ key->pv_first = (ctx->Light.ProvokingVertex == GL_FIRST_VERTEX_CONVENTION); if (key->primitive == GL_QUADS && ctx->Light.ShadeModel != GL_FLAT) { @@ -191,14 +166,11 @@ static void populate_key( struct brw_context *brw, key->pv_first = GL_TRUE; } - if (intel->gen == 6) - prim_gs_always = 0; - else - prim_gs_always = brw->primitive == GL_QUADS || - brw->primitive == GL_QUAD_STRIP || - brw->primitive == GL_LINE_LOOP; - - key->need_gs_prog = (key->hint_gs_always || prim_gs_always); + key->need_gs_prog = (intel->gen == 6) + ? 0 + : (brw->primitive == GL_QUADS || + brw->primitive == GL_QUAD_STRIP || + brw->primitive == GL_LINE_LOOP); } /* Calculate interpolants for triangle and line rasterization. diff --git a/src/mesa/drivers/dri/i965/brw_gs.h b/src/mesa/drivers/dri/i965/brw_gs.h index 7e3531086f9..c33528e4577 100644 --- a/src/mesa/drivers/dri/i965/brw_gs.h +++ b/src/mesa/drivers/dri/i965/brw_gs.h @@ -42,10 +42,9 @@ struct brw_gs_prog_key { GLbitfield64 attrs; GLuint primitive:4; - GLuint hint_gs_always:1; GLuint pv_first:1; GLuint need_gs_prog:1; - GLuint pad:25; + GLuint pad:26; }; struct brw_gs_compile { @@ -70,8 +69,6 @@ struct brw_gs_compile { void brw_gs_quads( struct brw_gs_compile *c, struct brw_gs_prog_key *key ); void brw_gs_quad_strip( struct brw_gs_compile *c, struct brw_gs_prog_key *key ); -void brw_gs_tris( struct brw_gs_compile *c ); void brw_gs_lines( struct brw_gs_compile *c ); -void brw_gs_points( struct brw_gs_compile *c ); #endif diff --git a/src/mesa/drivers/dri/i965/brw_gs_emit.c b/src/mesa/drivers/dri/i965/brw_gs_emit.c index e1f751fdaa4..3bb526b63af 100644 --- a/src/mesa/drivers/dri/i965/brw_gs_emit.c +++ b/src/mesa/drivers/dri/i965/brw_gs_emit.c @@ -193,19 +193,6 @@ void brw_gs_quad_strip( struct brw_gs_compile *c, struct brw_gs_prog_key *key ) } } -void brw_gs_tris( struct brw_gs_compile *c ) -{ - struct intel_context *intel = &c->func.brw->intel; - - brw_gs_alloc_regs(c, 3); - - if (intel->needs_ff_sync) - brw_gs_ff_sync(c, 1); - brw_gs_emit_vue(c, c->reg.vertex[0], 0, ((_3DPRIM_TRILIST << 2) | R02_PRIM_START)); - brw_gs_emit_vue(c, c->reg.vertex[1], 0, (_3DPRIM_TRILIST << 2)); - brw_gs_emit_vue(c, c->reg.vertex[2], 1, ((_3DPRIM_TRILIST << 2) | R02_PRIM_END)); -} - void brw_gs_lines( struct brw_gs_compile *c ) { struct intel_context *intel = &c->func.brw->intel; @@ -217,22 +204,3 @@ void brw_gs_lines( struct brw_gs_compile *c ) brw_gs_emit_vue(c, c->reg.vertex[0], 0, ((_3DPRIM_LINESTRIP << 2) | R02_PRIM_START)); brw_gs_emit_vue(c, c->reg.vertex[1], 1, ((_3DPRIM_LINESTRIP << 2) | R02_PRIM_END)); } - -void brw_gs_points( struct brw_gs_compile *c ) -{ - struct intel_context *intel = &c->func.brw->intel; - - brw_gs_alloc_regs(c, 1); - - if (intel->needs_ff_sync) - brw_gs_ff_sync(c, 1); - brw_gs_emit_vue(c, c->reg.vertex[0], 1, ((_3DPRIM_POINTLIST << 2) | R02_PRIM_START | R02_PRIM_END)); -} - - - - - - - - diff --git a/src/mesa/drivers/dri/i965/brw_misc_state.c b/src/mesa/drivers/dri/i965/brw_misc_state.c index c768be23fa7..19eea07ebc6 100644 --- a/src/mesa/drivers/dri/i965/brw_misc_state.c +++ b/src/mesa/drivers/dri/i965/brw_misc_state.c @@ -149,7 +149,8 @@ static void upload_pipelined_state_pointers(struct brw_context *brw ) else OUT_BATCH(0); OUT_RELOC(brw->clip.state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 1); - OUT_RELOC(brw->sf.state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); + OUT_RELOC(brw->intel.batch.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, + brw->sf.state_offset); OUT_RELOC(brw->wm.state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); OUT_RELOC(brw->intel.batch.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, brw->cc.state_offset); @@ -247,8 +248,7 @@ static void emit_depthbuffer(struct brw_context *brw) } assert(region->tiling != I915_TILING_X); - if (intel->gen >= 6) - assert(region->tiling != I915_TILING_NONE); + assert(intel->gen < 6 || region->tiling == I915_TILING_Y); BEGIN_BATCH(len); OUT_BATCH(_3DSTATE_DEPTH_BUFFER << 16 | (len - 2)); @@ -283,6 +283,9 @@ static void emit_depthbuffer(struct brw_context *brw) } } +/** + * \see brw_context.state.depth_region + */ const struct brw_tracked_state brw_depthbuffer = { .dirty = { .mesa = 0, diff --git a/src/mesa/drivers/dri/i965/brw_program.c b/src/mesa/drivers/dri/i965/brw_program.c index ee68095fceb..6674f1640c8 100644 --- a/src/mesa/drivers/dri/i965/brw_program.c +++ b/src/mesa/drivers/dri/i965/brw_program.c @@ -134,11 +134,6 @@ static GLboolean brwProgramStringNotify( struct gl_context *ctx, brw_fragment_program_const(brw->fragment_program); struct gl_shader_program *shader_program; - if (fprog->FogOption) { - _mesa_append_fog_code(ctx, fprog); - fprog->FogOption = GL_NONE; - } - if (newFP == curFP) brw->state.dirty.brw |= BRW_NEW_FRAGMENT_PROGRAM; newFP->id = brw->program_id++; diff --git a/src/mesa/drivers/dri/i965/brw_sf_state.c b/src/mesa/drivers/dri/i965/brw_sf_state.c index bd3a21ed9e2..66d91a0bde7 100644 --- a/src/mesa/drivers/dri/i965/brw_sf_state.c +++ b/src/mesa/drivers/dri/i965/brw_sf_state.c @@ -38,14 +38,16 @@ static void upload_sf_vp(struct brw_context *brw) { + struct intel_context *intel = &brw->intel; struct gl_context *ctx = &brw->intel.ctx; const GLfloat depth_scale = 1.0F / ctx->DrawBuffer->_DepthMaxF; - struct brw_sf_viewport sfv; + struct brw_sf_viewport *sfv; GLfloat y_scale, y_bias; const GLboolean render_to_fbo = (ctx->DrawBuffer->Name != 0); const GLfloat *v = ctx->Viewport._WindowMap.m; - memset(&sfv, 0, sizeof(sfv)); + sfv = brw_state_batch(brw, sizeof(*sfv), 32, &brw->sf.vp_offset); + memset(sfv, 0, sizeof(*sfv)); if (render_to_fbo) { y_scale = 1.0; @@ -58,12 +60,12 @@ static void upload_sf_vp(struct brw_context *brw) /* _NEW_VIEWPORT */ - sfv.viewport.m00 = v[MAT_SX]; - sfv.viewport.m11 = v[MAT_SY] * y_scale; - sfv.viewport.m22 = v[MAT_SZ] * depth_scale; - sfv.viewport.m30 = v[MAT_TX]; - sfv.viewport.m31 = v[MAT_TY] * y_scale + y_bias; - sfv.viewport.m32 = v[MAT_TZ] * depth_scale; + sfv->viewport.m00 = v[MAT_SX]; + sfv->viewport.m11 = v[MAT_SY] * y_scale; + sfv->viewport.m22 = v[MAT_SZ] * depth_scale; + sfv->viewport.m30 = v[MAT_TX]; + sfv->viewport.m31 = v[MAT_TY] * y_scale + y_bias; + sfv->viewport.m32 = v[MAT_TZ] * depth_scale; /* _NEW_SCISSOR | _NEW_BUFFERS | _NEW_VIEWPORT * for DrawBuffer->_[XY]{min,max} @@ -85,27 +87,31 @@ static void upload_sf_vp(struct brw_context *brw) * anything. Instead, just provide a min > max scissor inside * the bounds, which produces the expected no rendering. */ - sfv.scissor.xmin = 1; - sfv.scissor.xmax = 0; - sfv.scissor.ymin = 1; - sfv.scissor.ymax = 0; + sfv->scissor.xmin = 1; + sfv->scissor.xmax = 0; + sfv->scissor.ymin = 1; + sfv->scissor.ymax = 0; } else if (render_to_fbo) { /* texmemory: Y=0=bottom */ - sfv.scissor.xmin = ctx->DrawBuffer->_Xmin; - sfv.scissor.xmax = ctx->DrawBuffer->_Xmax - 1; - sfv.scissor.ymin = ctx->DrawBuffer->_Ymin; - sfv.scissor.ymax = ctx->DrawBuffer->_Ymax - 1; + sfv->scissor.xmin = ctx->DrawBuffer->_Xmin; + sfv->scissor.xmax = ctx->DrawBuffer->_Xmax - 1; + sfv->scissor.ymin = ctx->DrawBuffer->_Ymin; + sfv->scissor.ymax = ctx->DrawBuffer->_Ymax - 1; } else { /* memory: Y=0=top */ - sfv.scissor.xmin = ctx->DrawBuffer->_Xmin; - sfv.scissor.xmax = ctx->DrawBuffer->_Xmax - 1; - sfv.scissor.ymin = ctx->DrawBuffer->Height - ctx->DrawBuffer->_Ymax; - sfv.scissor.ymax = ctx->DrawBuffer->Height - ctx->DrawBuffer->_Ymin - 1; + sfv->scissor.xmin = ctx->DrawBuffer->_Xmin; + sfv->scissor.xmax = ctx->DrawBuffer->_Xmax - 1; + sfv->scissor.ymin = ctx->DrawBuffer->Height - ctx->DrawBuffer->_Ymax; + sfv->scissor.ymax = ctx->DrawBuffer->Height - ctx->DrawBuffer->_Ymin - 1; } + /* Keep a pointer to it for brw_state_dump.c */ drm_intel_bo_unreference(brw->sf.vp_bo); - brw->sf.vp_bo = brw_cache_data(&brw->cache, BRW_SF_VP, &sfv, sizeof(sfv)); + drm_intel_bo_reference(intel->batch.bo); + brw->sf.vp_bo = intel->batch.bo; + + brw->state.dirty.cache |= CACHE_NEW_SF_VP; } const struct brw_tracked_state brw_sf_vp = { @@ -113,92 +119,44 @@ const struct brw_tracked_state brw_sf_vp = { .mesa = (_NEW_VIEWPORT | _NEW_SCISSOR | _NEW_BUFFERS), - .brw = 0, + .brw = BRW_NEW_BATCH, .cache = 0 }, .prepare = upload_sf_vp }; -struct brw_sf_unit_key { - unsigned int total_grf; - unsigned int urb_entry_read_length; - - unsigned int nr_urb_entries, urb_size, sfsize; - - GLenum front_face, cull_face; - unsigned pv_first:1; - unsigned scissor:1; - unsigned line_smooth:1; - unsigned point_sprite:1; - unsigned use_vs_point_size:1; - unsigned render_to_fbo:1; - float line_width; - float point_size; -}; - -static void -sf_unit_populate_key(struct brw_context *brw, struct brw_sf_unit_key *key) -{ - struct gl_context *ctx = &brw->intel.ctx; - memset(key, 0, sizeof(*key)); - - /* CACHE_NEW_SF_PROG */ - key->total_grf = brw->sf.prog_data->total_grf; - key->urb_entry_read_length = brw->sf.prog_data->urb_read_length; - - /* BRW_NEW_URB_FENCE */ - key->nr_urb_entries = brw->urb.nr_sf_entries; - key->urb_size = brw->urb.vsize; - key->sfsize = brw->urb.sfsize; - - key->scissor = ctx->Scissor.Enabled; - key->front_face = ctx->Polygon.FrontFace; - - if (ctx->Polygon.CullFlag) - key->cull_face = ctx->Polygon.CullFaceMode; - else - key->cull_face = GL_NONE; - - key->line_width = ctx->Line.Width; - key->line_smooth = ctx->Line.SmoothFlag; - - key->point_sprite = ctx->Point.PointSprite; - key->point_size = CLAMP(ctx->Point.Size, ctx->Point.MinSize, ctx->Point.MaxSize); - key->use_vs_point_size = (ctx->VertexProgram.PointSizeEnabled || - ctx->Point._Attenuated); - - /* _NEW_LIGHT */ - key->pv_first = (ctx->Light.ProvokingVertex == GL_FIRST_VERTEX_CONVENTION); - - key->render_to_fbo = brw->intel.ctx.DrawBuffer->Name != 0; -} - -static drm_intel_bo * -sf_unit_create_from_key(struct brw_context *brw, struct brw_sf_unit_key *key, - drm_intel_bo **reloc_bufs) +static void upload_sf_unit( struct brw_context *brw ) { struct intel_context *intel = &brw->intel; - struct brw_sf_unit_state sf; - drm_intel_bo *bo; + struct gl_context *ctx = &intel->ctx; + struct brw_sf_unit_state *sf; + drm_intel_bo *bo = intel->batch.bo; int chipset_max_threads; - memset(&sf, 0, sizeof(sf)); + bool render_to_fbo = brw->intel.ctx.DrawBuffer->Name != 0; + + sf = brw_state_batch(brw, sizeof(*sf), 64, &brw->sf.state_offset); - sf.thread0.grf_reg_count = ALIGN(key->total_grf, 16) / 16 - 1; - sf.thread0.kernel_start_pointer = brw->sf.prog_bo->offset >> 6; /* reloc */ + memset(sf, 0, sizeof(*sf)); + + /* CACHE_NEW_SF_PROG */ + sf->thread0.grf_reg_count = ALIGN(brw->sf.prog_data->total_grf, 16) / 16 - 1; + sf->thread0.kernel_start_pointer = brw->sf.prog_bo->offset >> 6; /* reloc */ - sf.thread1.floating_point_mode = BRW_FLOATING_POINT_NON_IEEE_754; + sf->thread1.floating_point_mode = BRW_FLOATING_POINT_NON_IEEE_754; - sf.thread3.dispatch_grf_start_reg = 3; + sf->thread3.dispatch_grf_start_reg = 3; if (intel->gen == 5) - sf.thread3.urb_entry_read_offset = 3; + sf->thread3.urb_entry_read_offset = 3; else - sf.thread3.urb_entry_read_offset = 1; + sf->thread3.urb_entry_read_offset = 1; - sf.thread3.urb_entry_read_length = key->urb_entry_read_length; + /* CACHE_NEW_SF_PROG */ + sf->thread3.urb_entry_read_length = brw->sf.prog_data->urb_read_length; - sf.thread4.nr_urb_entries = key->nr_urb_entries; - sf.thread4.urb_entry_allocation_size = key->sfsize - 1; + /* BRW_NEW_URB_FENCE */ + sf->thread4.nr_urb_entries = brw->urb.nr_sf_entries; + sf->thread4.urb_entry_allocation_size = brw->urb.sfsize - 1; /* Each SF thread produces 1 PUE, and there can be up to 24 (Pre-Ironlake) or * 48 (Ironlake) threads. @@ -208,46 +166,51 @@ sf_unit_create_from_key(struct brw_context *brw, struct brw_sf_unit_key *key, else chipset_max_threads = 24; - sf.thread4.max_threads = MIN2(chipset_max_threads, key->nr_urb_entries) - 1; + /* BRW_NEW_URB_FENCE */ + sf->thread4.max_threads = MIN2(chipset_max_threads, + brw->urb.nr_sf_entries) - 1; if (unlikely(INTEL_DEBUG & DEBUG_SINGLE_THREAD)) - sf.thread4.max_threads = 0; + sf->thread4.max_threads = 0; if (unlikely(INTEL_DEBUG & DEBUG_STATS)) - sf.thread4.stats_enable = 1; + sf->thread4.stats_enable = 1; /* CACHE_NEW_SF_VP */ - sf.sf5.sf_viewport_state_offset = brw->sf.vp_bo->offset >> 5; /* reloc */ + sf->sf5.sf_viewport_state_offset = (brw->sf.vp_bo->offset + + brw->sf.vp_offset) >> 5; /* reloc */ - sf.sf5.viewport_transform = 1; + sf->sf5.viewport_transform = 1; /* _NEW_SCISSOR */ - if (key->scissor) - sf.sf6.scissor = 1; + if (ctx->Scissor.Enabled) + sf->sf6.scissor = 1; /* _NEW_POLYGON */ - if (key->front_face == GL_CCW) - sf.sf5.front_winding = BRW_FRONTWINDING_CCW; + if (ctx->Polygon.FrontFace == GL_CCW) + sf->sf5.front_winding = BRW_FRONTWINDING_CCW; else - sf.sf5.front_winding = BRW_FRONTWINDING_CW; + sf->sf5.front_winding = BRW_FRONTWINDING_CW; - /* The viewport is inverted for rendering to a FBO, and that inverts + /* _NEW_BUFFERS + * The viewport is inverted for rendering to a FBO, and that inverts * polygon front/back orientation. */ - sf.sf5.front_winding ^= key->render_to_fbo; + sf->sf5.front_winding ^= render_to_fbo; - switch (key->cull_face) { + /* _NEW_POLYGON */ + switch (ctx->Polygon.CullFlag ? ctx->Polygon.CullFaceMode : GL_NONE) { case GL_FRONT: - sf.sf6.cull_mode = BRW_CULLMODE_FRONT; + sf->sf6.cull_mode = BRW_CULLMODE_FRONT; break; case GL_BACK: - sf.sf6.cull_mode = BRW_CULLMODE_BACK; + sf->sf6.cull_mode = BRW_CULLMODE_BACK; break; case GL_FRONT_AND_BACK: - sf.sf6.cull_mode = BRW_CULLMODE_BOTH; + sf->sf6.cull_mode = BRW_CULLMODE_BOTH; break; case GL_NONE: - sf.sf6.cull_mode = BRW_CULLMODE_NONE; + sf->sf6.cull_mode = BRW_CULLMODE_NONE; break; default: assert(0); @@ -256,19 +219,18 @@ sf_unit_create_from_key(struct brw_context *brw, struct brw_sf_unit_key *key, /* _NEW_LINE */ /* XXX use ctx->Const.Min/MaxLineWidth here */ - sf.sf6.line_width = CLAMP(key->line_width, 1.0, 5.0) * (1<<1); + sf->sf6.line_width = CLAMP(ctx->Line.Width, 1.0, 5.0) * (1<<1); - sf.sf6.line_endcap_aa_region_width = 1; - if (key->line_smooth) - sf.sf6.aa_enable = 1; - else if (sf.sf6.line_width <= 0x2) - sf.sf6.line_width = 0; + sf->sf6.line_endcap_aa_region_width = 1; + if (ctx->Line.SmoothFlag) + sf->sf6.aa_enable = 1; + else if (sf->sf6.line_width <= 0x2) + sf->sf6.line_width = 0; /* _NEW_BUFFERS */ - key->render_to_fbo = brw->intel.ctx.DrawBuffer->Name != 0; - if (!key->render_to_fbo) { + if (!render_to_fbo) { /* Rendering to an OpenGL window */ - sf.sf6.point_rast_rule = BRW_RASTRULE_UPPER_RIGHT; + sf->sf6.point_rast_rule = BRW_RASTRULE_UPPER_RIGHT; } else { /* If rendering to an FBO, the pixel coordinate system is @@ -290,74 +252,56 @@ sf_unit_create_from_key(struct brw_context *brw, struct brw_sf_unit_key *key, * incorrectly, which is no worse than occurs without * the value, so we're using it here. */ - sf.sf6.point_rast_rule = BRW_RASTRULE_LOWER_RIGHT; + sf->sf6.point_rast_rule = BRW_RASTRULE_LOWER_RIGHT; } /* XXX clamp max depends on AA vs. non-AA */ /* _NEW_POINT */ - sf.sf7.sprite_point = key->point_sprite; - sf.sf7.point_size = CLAMP(rint(key->point_size), 1, 255) * (1<<3); - sf.sf7.use_point_size_state = !key->use_vs_point_size; - sf.sf7.aa_line_distance_mode = 0; + sf->sf7.sprite_point = ctx->Point.PointSprite; + sf->sf7.point_size = CLAMP(rint(CLAMP(ctx->Point.Size, + ctx->Point.MinSize, + ctx->Point.MaxSize)), 1, 255) * (1<<3); + sf->sf7.use_point_size_state = !(ctx->VertexProgram.PointSizeEnabled || + ctx->Point._Attenuated); + sf->sf7.aa_line_distance_mode = 0; /* might be BRW_NEW_PRIMITIVE if we have to adjust pv for polygons: + * _NEW_LIGHT */ - if (!key->pv_first) { - sf.sf7.trifan_pv = 2; - sf.sf7.linestrip_pv = 1; - sf.sf7.tristrip_pv = 2; + if (ctx->Light.ProvokingVertex != GL_FIRST_VERTEX_CONVENTION) { + sf->sf7.trifan_pv = 2; + sf->sf7.linestrip_pv = 1; + sf->sf7.tristrip_pv = 2; } else { - sf.sf7.trifan_pv = 1; - sf.sf7.linestrip_pv = 0; - sf.sf7.tristrip_pv = 0; + sf->sf7.trifan_pv = 1; + sf->sf7.linestrip_pv = 0; + sf->sf7.tristrip_pv = 0; } - sf.sf7.line_last_pixel_enable = 0; + sf->sf7.line_last_pixel_enable = 0; /* Set bias for OpenGL rasterization rules: */ - sf.sf6.dest_org_vbias = 0x8; - sf.sf6.dest_org_hbias = 0x8; - - bo = brw_upload_cache(&brw->cache, BRW_SF_UNIT, - key, sizeof(*key), - reloc_bufs, 2, - &sf, sizeof(sf)); + sf->sf6.dest_org_vbias = 0x8; + sf->sf6.dest_org_hbias = 0x8; /* STATE_PREFETCH command description describes this state as being * something loaded through the GPE (L2 ISC), so it's INSTRUCTION domain. */ /* Emit SF program relocation */ - drm_intel_bo_emit_reloc(bo, offsetof(struct brw_sf_unit_state, thread0), - brw->sf.prog_bo, sf.thread0.grf_reg_count << 1, + drm_intel_bo_emit_reloc(bo, (brw->sf.state_offset + + offsetof(struct brw_sf_unit_state, thread0)), + brw->sf.prog_bo, sf->thread0.grf_reg_count << 1, I915_GEM_DOMAIN_INSTRUCTION, 0); /* Emit SF viewport relocation */ - drm_intel_bo_emit_reloc(bo, offsetof(struct brw_sf_unit_state, sf5), - brw->sf.vp_bo, (sf.sf5.front_winding | - (sf.sf5.viewport_transform << 1)), + drm_intel_bo_emit_reloc(bo, (brw->sf.state_offset + + offsetof(struct brw_sf_unit_state, sf5)), + intel->batch.bo, (brw->sf.vp_offset | + sf->sf5.front_winding | + (sf->sf5.viewport_transform << 1)), I915_GEM_DOMAIN_INSTRUCTION, 0); - return bo; -} - -static void upload_sf_unit( struct brw_context *brw ) -{ - struct brw_sf_unit_key key; - drm_intel_bo *reloc_bufs[2]; - - sf_unit_populate_key(brw, &key); - - reloc_bufs[0] = brw->sf.prog_bo; - reloc_bufs[1] = brw->sf.vp_bo; - - drm_intel_bo_unreference(brw->sf.state_bo); - brw->sf.state_bo = brw_search_cache(&brw->cache, BRW_SF_UNIT, - &key, sizeof(key), - reloc_bufs, 2, - NULL); - if (brw->sf.state_bo == NULL) { - brw->sf.state_bo = sf_unit_create_from_key(brw, &key, reloc_bufs); - } + brw->state.dirty.cache |= CACHE_NEW_SF_UNIT; } const struct brw_tracked_state brw_sf_unit = { @@ -368,7 +312,8 @@ const struct brw_tracked_state brw_sf_unit = { _NEW_POINT | _NEW_SCISSOR | _NEW_BUFFERS), - .brw = BRW_NEW_URB_FENCE, + .brw = (BRW_NEW_BATCH | + BRW_NEW_URB_FENCE), .cache = (CACHE_NEW_SF_VP | CACHE_NEW_SF_PROG) }, diff --git a/src/mesa/drivers/dri/i965/brw_state_dump.c b/src/mesa/drivers/dri/i965/brw_state_dump.c index fdce79da2f4..b393259c915 100644 --- a/src/mesa/drivers/dri/i965/brw_state_dump.c +++ b/src/mesa/drivers/dri/i965/brw_state_dump.c @@ -195,8 +195,8 @@ static void dump_sf_viewport_state(struct brw_context *brw) drm_intel_bo_map(brw->sf.vp_bo, GL_FALSE); - vp = brw->sf.vp_bo->virtual; - vp_off = brw->sf.vp_bo->offset; + vp = brw->sf.vp_bo->virtual + brw->sf.vp_offset; + vp_off = brw->sf.vp_bo->offset + brw->sf.vp_offset; state_out(name, vp, vp_off, 0, "m00 = %f\n", vp->viewport.m00); state_out(name, vp, vp_off, 1, "m11 = %f\n", vp->viewport.m11); diff --git a/src/mesa/drivers/dri/i965/brw_structs.h b/src/mesa/drivers/dri/i965/brw_structs.h index 6687a89e80a..8d4797fb675 100644 --- a/src/mesa/drivers/dri/i965/brw_structs.h +++ b/src/mesa/drivers/dri/i965/brw_structs.h @@ -80,25 +80,6 @@ struct brw_3d_control GLuint dword3; }; - -struct brw_3d_primitive -{ - struct - { - GLuint length:8; - GLuint pad:2; - GLuint topology:5; - GLuint indexed:1; - GLuint opcode:16; - } header; - - GLuint verts_per_instance; - GLuint start_vert_location; - GLuint instance_count; - GLuint start_instance_location; - GLuint base_vert_location; -}; - /* These seem to be passed around as function args, so it works out * better to keep them as #defines: */ @@ -1247,31 +1228,6 @@ struct brw_surface_state }; - -struct brw_vertex_buffer_state -{ - struct { - GLuint pitch:11; - GLuint pad:15; - GLuint access_type:1; - GLuint vb_index:5; - } vb0; - - GLuint start_addr; - GLuint max_index; -#if 1 - GLuint instance_data_step_rate; /* not included for sequential/random vertices? */ -#endif -}; - -#define BRW_VBP_MAX 17 - -struct brw_vb_array_state { - struct header header; - struct brw_vertex_buffer_state vb[BRW_VBP_MAX]; -}; - - struct brw_vertex_element_state { struct diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c index 6ae75d22c14..63ae13191f9 100644 --- a/src/mesa/drivers/dri/i965/brw_vs.c +++ b/src/mesa/drivers/dri/i965/brw_vs.c @@ -132,6 +132,9 @@ static void brw_upload_vs_prog(struct brw_context *brw) ctx->Polygon.BackMode != GL_FILL); key.two_side_color = (ctx->Light.Enabled && ctx->Light.Model.TwoSide); + /* _NEW_LIGHT | _NEW_BUFFERS */ + key.clamp_vertex_color = ctx->Light._ClampVertexColor; + /* _NEW_POINT */ if (ctx->Point.PointSprite) { for (i = 0; i < 8; i++) { @@ -158,7 +161,8 @@ static void brw_upload_vs_prog(struct brw_context *brw) */ const struct brw_tracked_state brw_vs_prog = { .dirty = { - .mesa = _NEW_TRANSFORM | _NEW_POLYGON | _NEW_POINT | _NEW_LIGHT, + .mesa = (_NEW_TRANSFORM | _NEW_POLYGON | _NEW_POINT | _NEW_LIGHT | + _NEW_BUFFERS), .brw = BRW_NEW_VERTEX_PROGRAM, .cache = 0 }, diff --git a/src/mesa/drivers/dri/i965/brw_vs.h b/src/mesa/drivers/dri/i965/brw_vs.h index 0b88cc1ec76..7ca84a54b01 100644 --- a/src/mesa/drivers/dri/i965/brw_vs.h +++ b/src/mesa/drivers/dri/i965/brw_vs.h @@ -45,6 +45,7 @@ struct brw_vs_prog_key { GLuint copy_edgeflag:1; GLuint point_coord_replace:8; GLuint two_side_color: 1; + GLuint clamp_vertex_color:1; }; diff --git a/src/mesa/drivers/dri/i965/brw_vs_emit.c b/src/mesa/drivers/dri/i965/brw_vs_emit.c index acacf374b75..dd4e1e6c6ad 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_emit.c +++ b/src/mesa/drivers/dri/i965/brw_vs_emit.c @@ -437,8 +437,14 @@ static void brw_vs_alloc_regs( struct brw_vs_compile *c ) if (c->key.nr_userclip) header_regs += 2; + /* Each attribute is 16 bytes (1 vec4), so dividing by 8 gives us the + * number of 128-byte (1024-bit) units. + */ c->prog_data.urb_entry_size = (attributes_in_vue + header_regs + 7) / 8; } else if (intel->gen == 5) + /* Each attribute is 16 bytes (1 vec4), so dividing by 4 gives us the + * number of 64-byte (512-bit) units. + */ c->prog_data.urb_entry_size = (attributes_in_vue + 6 + 3) / 4; else c->prog_data.urb_entry_size = (attributes_in_vue + 2 + 3) / 4; @@ -2215,7 +2221,8 @@ void brw_vs_emit(struct brw_vs_compile *c ) * instructions. Instead, we directly modify the header * of the last (already stored) instruction. */ - if (inst->DstReg.File == PROGRAM_OUTPUT) { + if (inst->DstReg.File == PROGRAM_OUTPUT && + c->key.clamp_vertex_color) { if ((inst->DstReg.Index == VERT_RESULT_COL0) || (inst->DstReg.Index == VERT_RESULT_COL1) || (inst->DstReg.Index == VERT_RESULT_BFC0) diff --git a/src/mesa/drivers/dri/i965/brw_vtbl.c b/src/mesa/drivers/dri/i965/brw_vtbl.c index 152ee141568..ce8712a260f 100644 --- a/src/mesa/drivers/dri/i965/brw_vtbl.c +++ b/src/mesa/drivers/dri/i965/brw_vtbl.c @@ -115,13 +115,11 @@ static void brw_set_draw_region( struct intel_context *intel, { struct brw_context *brw = brw_context(&intel->ctx); - /* release old color/depth regions */ - if (brw->state.depth_region != depth_region) + if (brw->state.depth_region != depth_region) { brw->state.dirty.brw |= BRW_NEW_DEPTH_BUFFER; - intel_region_release(&brw->state.depth_region); - - /* reference new color/depth regions */ - intel_region_reference(&brw->state.depth_region, depth_region); + intel_region_release(&brw->state.depth_region); + intel_region_reference(&brw->state.depth_region, depth_region); + } } diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c index ca51d1599a4..65af227d831 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.c +++ b/src/mesa/drivers/dri/i965/brw_wm.c @@ -185,6 +185,7 @@ static void do_wm_prog( struct brw_context *brw, struct brw_fragment_program *fp, struct brw_wm_prog_key *key) { + struct intel_context *intel = &brw->intel; struct brw_wm_compile *c; const GLuint *program; GLuint program_size; @@ -238,12 +239,26 @@ static void do_wm_prog( struct brw_context *brw, /* Scratch space is used for register spilling */ if (c->last_scratch) { + uint32_t total_scratch; + /* Per-thread scratch space is power-of-two sized. */ for (c->prog_data.total_scratch = 1024; c->prog_data.total_scratch <= c->last_scratch; c->prog_data.total_scratch *= 2) { /* empty */ } + total_scratch = c->prog_data.total_scratch * brw->wm_max_threads; + + if (brw->wm.scratch_bo && total_scratch > brw->wm.scratch_bo->size) { + drm_intel_bo_unreference(brw->wm.scratch_bo); + brw->wm.scratch_bo = NULL; + } + if (brw->wm.scratch_bo == NULL) { + brw->wm.scratch_bo = drm_intel_bo_alloc(intel->bufmgr, + "wm scratch", + total_scratch, + 4096); + } } else { c->prog_data.total_scratch = 0; @@ -348,6 +363,9 @@ static void brw_wm_populate_key( struct brw_context *brw, /* _NEW_HINT */ key->linear_color = (ctx->Hint.PerspectiveCorrection == GL_FASTEST); + /* _NEW_FRAG_CLAMP | _NEW_BUFFERS */ + key->clamp_fragment_color = ctx->Color._ClampFragmentColor; + /* _NEW_TEXTURE */ for (i = 0; i < BRW_MAX_TEX_UNIT; i++) { const struct gl_texture_unit *unit = &ctx->Texture.Unit[i]; @@ -370,14 +388,14 @@ static void brw_wm_populate_key( struct brw_context *brw, * well and our shadow compares always return the result in * all 4 channels. */ - if (t->CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) { - if (t->DepthMode == GL_ALPHA) { + if (t->Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) { + if (t->Sampler.DepthMode == GL_ALPHA) { swizzles[0] = SWIZZLE_ZERO; swizzles[1] = SWIZZLE_ZERO; swizzles[2] = SWIZZLE_ZERO; - } else if (t->DepthMode == GL_LUMINANCE) { + } else if (t->Sampler.DepthMode == GL_LUMINANCE) { swizzles[3] = SWIZZLE_ONE; - } else if (t->DepthMode == GL_RED) { + } else if (t->Sampler.DepthMode == GL_RED) { /* See table 3.23 of the GL 3.0 spec. */ swizzles[1] = SWIZZLE_ZERO; swizzles[2] = SWIZZLE_ZERO; @@ -471,6 +489,7 @@ const struct brw_tracked_state brw_wm_prog = { _NEW_POLYGON | _NEW_LINE | _NEW_LIGHT | + _NEW_FRAG_CLAMP | _NEW_BUFFERS | _NEW_TEXTURE), .brw = (BRW_NEW_FRAGMENT_PROGRAM | diff --git a/src/mesa/drivers/dri/i965/brw_wm.h b/src/mesa/drivers/dri/i965/brw_wm.h index c40d7bfae0a..40659f26025 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.h +++ b/src/mesa/drivers/dri/i965/brw_wm.h @@ -65,6 +65,7 @@ struct brw_wm_prog_key { GLuint nr_color_regions:5; GLuint render_to_fbo:1; GLuint alpha_test:1; + GLuint clamp_fragment_color:1; GLbitfield proj_attrib_mask; /**< one bit per fragment program attribute */ GLuint shadowtex_mask:16; diff --git a/src/mesa/drivers/dri/i965/brw_wm_emit.c b/src/mesa/drivers/dri/i965/brw_wm_emit.c index ecfd21d4399..cdc1f367e5c 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_emit.c +++ b/src/mesa/drivers/dri/i965/brw_wm_emit.c @@ -1408,6 +1408,9 @@ void emit_fb_write(struct brw_wm_compile *c, */ brw_push_insn_state(p); + if (c->key.clamp_fragment_color) + brw_set_saturate(p, 1); + for (channel = 0; channel < 4; channel++) { if (intel->gen >= 6) { /* gen6 SIMD16 single source DP write looks like: @@ -1459,6 +1462,9 @@ void emit_fb_write(struct brw_wm_compile *c, } } } + + brw_set_saturate(p, 0); + /* skip over the regs populated above: */ if (c->dispatch_width == 16) diff --git a/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c b/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c index 30672b4251b..cfc30d8613f 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c @@ -288,26 +288,26 @@ brw_wm_sampler_populate_key(struct brw_context *brw, entry->seamless_cube_map = (texObj->Target == GL_TEXTURE_CUBE_MAP) ? ctx->Texture.CubeMapSeamless : GL_FALSE; - entry->wrap_r = texObj->WrapR; - entry->wrap_s = texObj->WrapS; - entry->wrap_t = texObj->WrapT; - - entry->maxlod = texObj->MaxLod; - entry->minlod = texObj->MinLod; - entry->lod_bias = texUnit->LodBias + texObj->LodBias; - entry->max_aniso = texObj->MaxAnisotropy; - entry->minfilter = texObj->MinFilter; - entry->magfilter = texObj->MagFilter; - entry->comparemode = texObj->CompareMode; - entry->comparefunc = texObj->CompareFunc; + entry->wrap_r = texObj->Sampler.WrapR; + entry->wrap_s = texObj->Sampler.WrapS; + entry->wrap_t = texObj->Sampler.WrapT; + + entry->maxlod = texObj->Sampler.MaxLod; + entry->minlod = texObj->Sampler.MinLod; + entry->lod_bias = texUnit->LodBias + texObj->Sampler.LodBias; + entry->max_aniso = texObj->Sampler.MaxAnisotropy; + entry->minfilter = texObj->Sampler.MinFilter; + entry->magfilter = texObj->Sampler.MagFilter; + entry->comparemode = texObj->Sampler.CompareMode; + entry->comparefunc = texObj->Sampler.CompareFunc; drm_intel_bo_unreference(brw->wm.sdc_bo[unit]); if (firstImage->_BaseFormat == GL_DEPTH_COMPONENT) { float bordercolor[4] = { - texObj->BorderColor.f[0], - texObj->BorderColor.f[0], - texObj->BorderColor.f[0], - texObj->BorderColor.f[0] + texObj->Sampler.BorderColor.f[0], + texObj->Sampler.BorderColor.f[0], + texObj->Sampler.BorderColor.f[0], + texObj->Sampler.BorderColor.f[0] }; /* GL specs that border color for depth textures is taken from the * R channel, while the hardware uses A. Spam R into all the @@ -316,7 +316,7 @@ brw_wm_sampler_populate_key(struct brw_context *brw, brw->wm.sdc_bo[unit] = upload_default_color(brw, bordercolor); } else { brw->wm.sdc_bo[unit] = upload_default_color(brw, - texObj->BorderColor.f); + texObj->Sampler.BorderColor.f); } key->sampler_count = unit + 1; } diff --git a/src/mesa/drivers/dri/i965/brw_wm_state.c b/src/mesa/drivers/dri/i965/brw_wm_state.c index 5b5afc4626b..be4b260a5ff 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_state.c @@ -278,30 +278,10 @@ wm_unit_create_from_key(struct brw_context *brw, struct brw_wm_unit_key *key, static void upload_wm_unit( struct brw_context *brw ) { - struct intel_context *intel = &brw->intel; struct brw_wm_unit_key key; drm_intel_bo *reloc_bufs[3]; wm_unit_populate_key(brw, &key); - /* Allocate the necessary scratch space if we haven't already. Don't - * bother reducing the allocation later, since we use scratch so - * rarely. - */ - if (key.total_scratch) { - GLuint total = key.total_scratch * brw->wm_max_threads; - - if (brw->wm.scratch_bo && total > brw->wm.scratch_bo->size) { - drm_intel_bo_unreference(brw->wm.scratch_bo); - brw->wm.scratch_bo = NULL; - } - if (brw->wm.scratch_bo == NULL) { - brw->wm.scratch_bo = drm_intel_bo_alloc(intel->bufmgr, - "wm scratch", - total, - 4096); - } - } - reloc_bufs[0] = brw->wm.prog_bo; reloc_bufs[1] = brw->wm.scratch_bo; reloc_bufs[2] = brw->wm.sampler_bo; diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c index 1010d9f6f9c..e3396a3cbd4 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c @@ -100,18 +100,37 @@ static uint32_t brw_format_for_mesa_format[MESA_FORMAT_COUNT] = [MESA_FORMAT_SLA8] = BRW_SURFACEFORMAT_L8A8_UNORM_SRGB, [MESA_FORMAT_SL8] = BRW_SURFACEFORMAT_L8_UNORM_SRGB, [MESA_FORMAT_DUDV8] = BRW_SURFACEFORMAT_R8G8_SNORM, + [MESA_FORMAT_SIGNED_R8] = BRW_SURFACEFORMAT_R8_SNORM, + [MESA_FORMAT_SIGNED_RG88_REV] = BRW_SURFACEFORMAT_R8G8_SNORM, [MESA_FORMAT_SIGNED_RGBA8888_REV] = BRW_SURFACEFORMAT_R8G8B8A8_SNORM, + [MESA_FORMAT_SIGNED_R16] = BRW_SURFACEFORMAT_R16_SNORM, + [MESA_FORMAT_SIGNED_GR1616] = BRW_SURFACEFORMAT_R16G16_SNORM, + [MESA_FORMAT_RGBA_FLOAT32] = BRW_SURFACEFORMAT_R32G32B32A32_FLOAT, + [MESA_FORMAT_RG_FLOAT32] = BRW_SURFACEFORMAT_R32G32_FLOAT, + [MESA_FORMAT_R_FLOAT32] = BRW_SURFACEFORMAT_R32_FLOAT, + [MESA_FORMAT_INTENSITY_FLOAT32] = BRW_SURFACEFORMAT_I32_FLOAT, + [MESA_FORMAT_LUMINANCE_FLOAT32] = BRW_SURFACEFORMAT_L32_FLOAT, + [MESA_FORMAT_ALPHA_FLOAT32] = BRW_SURFACEFORMAT_A32_FLOAT, + [MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32] = BRW_SURFACEFORMAT_L32A32_FLOAT, }; bool brw_render_target_supported(gl_format format) { + /* These are not color render targets like the table holds, but we + * ask the question for FBO completeness. + */ if (format == MESA_FORMAT_S8_Z24 || format == MESA_FORMAT_X8_Z24 || format == MESA_FORMAT_Z16) { return true; } + /* The value of this BRW_SURFACEFORMAT is 0, so hardcode it. + */ + if (format == MESA_FORMAT_RGBA_FLOAT32) + return true; + /* Not exactly true, as some of those formats are not renderable. * But at least we know how to translate them. */ @@ -155,6 +174,13 @@ static GLuint translate_tex_format( gl_format mesa_format, return brw_format_for_mesa_format[mesa_format]; else if (srgb_decode == GL_SKIP_DECODE_EXT) return brw_format_for_mesa_format[_mesa_get_srgb_format_linear(mesa_format)]; + + case MESA_FORMAT_RGBA_FLOAT32: + /* The value of this BRW_SURFACEFORMAT is 0, which tricks the + * assertion below. + */ + return BRW_SURFACEFORMAT_R32G32B32A32_FLOAT; + default: assert(brw_format_for_mesa_format[mesa_format] != 0); return brw_format_for_mesa_format[mesa_format]; @@ -197,8 +223,9 @@ brw_update_texture_surface( struct gl_context *ctx, GLuint unit ) surf->ss0.mipmap_layout_mode = BRW_SURFACE_MIPMAPLAYOUT_BELOW; surf->ss0.surface_type = translate_tex_target(tObj->Target); surf->ss0.surface_format = translate_tex_format(firstImage->TexFormat, - firstImage->InternalFormat, - tObj->DepthMode, tObj->sRGBDecode); + firstImage->InternalFormat, + tObj->Sampler.DepthMode, + tObj->Sampler.sRGBDecode); /* This is ok for all textures with channel width 8bit or less: */ @@ -425,6 +452,14 @@ brw_update_renderbuffer_surface(struct brw_context *brw, */ surf->ss0.surface_format = BRW_SURFACEFORMAT_B8G8R8A8_UNORM; break; + case MESA_FORMAT_INTENSITY_FLOAT32: + case MESA_FORMAT_LUMINANCE_FLOAT32: + /* For these formats, we just need to read/write the first + * channel into R, which is to say that we just treat them as + * GL_RED. + */ + surf->ss0.surface_format = BRW_SURFACEFORMAT_R32_FLOAT; + break; case MESA_FORMAT_SARGB8: /* without GL_EXT_framebuffer_sRGB we shouldn't bind sRGB surfaces to the blend/update as sRGB */ @@ -434,8 +469,8 @@ brw_update_renderbuffer_surface(struct brw_context *brw, surf->ss0.surface_format = BRW_SURFACEFORMAT_B8G8R8A8_UNORM; break; default: + assert(brw_render_target_supported(irb->Base.Format)); surf->ss0.surface_format = brw_format_for_mesa_format[irb->Base.Format]; - assert(surf->ss0.surface_format != 0); } surf->ss0.surface_type = BRW_SURFACE_2D; diff --git a/src/mesa/drivers/dri/i965/gen6_cc.c b/src/mesa/drivers/dri/i965/gen6_cc.c index d1648a102d4..1b935fb5e70 100644 --- a/src/mesa/drivers/dri/i965/gen6_cc.c +++ b/src/mesa/drivers/dri/i965/gen6_cc.c @@ -210,10 +210,10 @@ color_calc_state_populate_key(struct brw_context *brw, if (ctx->Color.AlphaEnabled) key->alpha_ref = ctx->Color.AlphaRef; - key->blend_constant_color[0] = ctx->Color.BlendColor[0]; - key->blend_constant_color[1] = ctx->Color.BlendColor[1]; - key->blend_constant_color[2] = ctx->Color.BlendColor[2]; - key->blend_constant_color[3] = ctx->Color.BlendColor[3]; + key->blend_constant_color[0] = ctx->Color.BlendColorUnclamped[0]; + key->blend_constant_color[1] = ctx->Color.BlendColorUnclamped[1]; + key->blend_constant_color[2] = ctx->Color.BlendColorUnclamped[2]; + key->blend_constant_color[3] = ctx->Color.BlendColorUnclamped[3]; } /** diff --git a/src/mesa/drivers/dri/i965/gen6_gs_state.c b/src/mesa/drivers/dri/i965/gen6_gs_state.c index 7296c7cd1b0..c1d0a739394 100644 --- a/src/mesa/drivers/dri/i965/gen6_gs_state.c +++ b/src/mesa/drivers/dri/i965/gen6_gs_state.c @@ -44,38 +44,22 @@ upload_gs_state(struct brw_context *brw) OUT_BATCH(0); ADVANCE_BATCH(); - if (brw->gs.prog_bo) { - BEGIN_BATCH(7); - OUT_BATCH(_3DSTATE_GS << 16 | (7 - 2)); - OUT_RELOC(brw->gs.prog_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); - OUT_BATCH(GEN6_GS_SPF_MODE | - (0 << GEN6_GS_SAMPLER_COUNT_SHIFT) | - (0 << GEN6_GS_BINDING_TABLE_ENTRY_COUNT_SHIFT)); - OUT_BATCH(0); /* scratch space base offset */ - OUT_BATCH((1 << GEN6_GS_DISPATCH_START_GRF_SHIFT) | - (brw->gs.prog_data->urb_read_length << GEN6_GS_URB_READ_LENGTH_SHIFT) | - (0 << GEN6_GS_URB_ENTRY_READ_OFFSET_SHIFT)); - OUT_BATCH((0 << GEN6_GS_MAX_THREADS_SHIFT) | - GEN6_GS_STATISTICS_ENABLE | - GEN6_GS_RENDERING_ENABLE); - OUT_BATCH(GEN6_GS_ENABLE); - ADVANCE_BATCH(); - } else { - BEGIN_BATCH(7); - OUT_BATCH(_3DSTATE_GS << 16 | (7 - 2)); - OUT_BATCH(0); /* prog_bo */ - OUT_BATCH((0 << GEN6_GS_SAMPLER_COUNT_SHIFT) | - (0 << GEN6_GS_BINDING_TABLE_ENTRY_COUNT_SHIFT)); - OUT_BATCH(0); /* scratch space base offset */ - OUT_BATCH((1 << GEN6_GS_DISPATCH_START_GRF_SHIFT) | - (0 << GEN6_GS_URB_READ_LENGTH_SHIFT) | - (0 << GEN6_GS_URB_ENTRY_READ_OFFSET_SHIFT)); - OUT_BATCH((0 << GEN6_GS_MAX_THREADS_SHIFT) | - GEN6_GS_STATISTICS_ENABLE | - GEN6_GS_RENDERING_ENABLE); - OUT_BATCH(0); - ADVANCE_BATCH(); - } + // GS should never be used on Gen6. Disable it. + assert(brw->gs.prog_bo == NULL); + BEGIN_BATCH(7); + OUT_BATCH(_3DSTATE_GS << 16 | (7 - 2)); + OUT_BATCH(0); /* prog_bo */ + OUT_BATCH((0 << GEN6_GS_SAMPLER_COUNT_SHIFT) | + (0 << GEN6_GS_BINDING_TABLE_ENTRY_COUNT_SHIFT)); + OUT_BATCH(0); /* scratch space base offset */ + OUT_BATCH((1 << GEN6_GS_DISPATCH_START_GRF_SHIFT) | + (0 << GEN6_GS_URB_READ_LENGTH_SHIFT) | + (0 << GEN6_GS_URB_ENTRY_READ_OFFSET_SHIFT)); + OUT_BATCH((0 << GEN6_GS_MAX_THREADS_SHIFT) | + GEN6_GS_STATISTICS_ENABLE | + GEN6_GS_RENDERING_ENABLE); + OUT_BATCH(0); + ADVANCE_BATCH(); } const struct brw_tracked_state gen6_gs_state = { diff --git a/src/mesa/drivers/dri/i965/gen6_urb.c b/src/mesa/drivers/dri/i965/gen6_urb.c index c3819f9b360..909e1bbe9ba 100644 --- a/src/mesa/drivers/dri/i965/gen6_urb.c +++ b/src/mesa/drivers/dri/i965/gen6_urb.c @@ -34,26 +34,25 @@ static void prepare_urb( struct brw_context *brw ) { - int urb_size, max_urb_entry; - struct intel_context *intel = &brw->intel; - - if (IS_GT1(intel->intelScreen->deviceID)) { - urb_size = 32 * 1024; - max_urb_entry = 128; - } else { - urb_size = 64 * 1024; - max_urb_entry = 256; - } - - brw->urb.nr_vs_entries = max_urb_entry; - brw->urb.nr_gs_entries = max_urb_entry; + int nr_vs_entries; /* CACHE_NEW_VS_PROG */ brw->urb.vs_size = MAX2(brw->vs.prog_data->urb_entry_size, 1); - if (2 * brw->urb.vs_size > urb_size) - brw->urb.nr_vs_entries = brw->urb.nr_gs_entries = - (urb_size ) / (2 * brw->urb.vs_size); + /* Calculate how many VS URB entries fit in the total URB size */ + nr_vs_entries = (brw->urb.size * 1024) / (brw->urb.vs_size * 128); + + if (nr_vs_entries > brw->urb.max_vs_handles) + nr_vs_entries = brw->urb.max_vs_handles; + + /* According to volume 2a, nr_vs_entries must be a multiple of 4. */ + brw->urb.nr_vs_entries = ROUND_DOWN_TO(nr_vs_entries, 4); + + /* Since we currently don't support Geometry Shaders, we always put the + * GS unit in passthrough mode and don't allocate it any URB space. + */ + brw->urb.nr_gs_entries = 0; + brw->urb.gs_size = 1; /* Incorrect, but with 0 GS entries it doesn't matter. */ } static void @@ -61,6 +60,7 @@ upload_urb(struct brw_context *brw) { struct intel_context *intel = &brw->intel; + assert(brw->urb.nr_vs_entries >= 24); assert(brw->urb.nr_vs_entries % 4 == 0); assert(brw->urb.nr_gs_entries % 4 == 0); /* GS requirement */ @@ -70,7 +70,7 @@ upload_urb(struct brw_context *brw) OUT_BATCH(_3DSTATE_URB << 16 | (3 - 2)); OUT_BATCH(((brw->urb.vs_size - 1) << GEN6_URB_VS_SIZE_SHIFT) | ((brw->urb.nr_vs_entries) << GEN6_URB_VS_ENTRIES_SHIFT)); - OUT_BATCH(((brw->urb.vs_size - 1) << GEN6_URB_GS_SIZE_SHIFT) | + OUT_BATCH(((brw->urb.gs_size - 1) << GEN6_URB_GS_SIZE_SHIFT) | ((brw->urb.nr_gs_entries) << GEN6_URB_GS_ENTRIES_SHIFT)); ADVANCE_BATCH(); } diff --git a/src/mesa/drivers/dri/i965/gen6_vs_state.c b/src/mesa/drivers/dri/i965/gen6_vs_state.c index ce0b8ea7eaa..a10cec318d6 100644 --- a/src/mesa/drivers/dri/i965/gen6_vs_state.c +++ b/src/mesa/drivers/dri/i965/gen6_vs_state.c @@ -137,7 +137,7 @@ upload_vs_state(struct brw_context *brw) (brw->vs.prog_data->urb_read_length << GEN6_VS_URB_READ_LENGTH_SHIFT) | (0 << GEN6_VS_URB_ENTRY_READ_OFFSET_SHIFT)); - OUT_BATCH(((60 - 1) << GEN6_VS_MAX_THREADS_SHIFT) | /* max 60 threads for gen6 */ + OUT_BATCH(((brw->vs_max_threads - 1) << GEN6_VS_MAX_THREADS_SHIFT) | GEN6_VS_STATISTICS_ENABLE | GEN6_VS_ENABLE); ADVANCE_BATCH(); diff --git a/src/mesa/drivers/dri/i965/gen6_wm_state.c b/src/mesa/drivers/dri/i965/gen6_wm_state.c index 78901ecac57..8215cb15a9c 100644 --- a/src/mesa/drivers/dri/i965/gen6_wm_state.c +++ b/src/mesa/drivers/dri/i965/gen6_wm_state.c @@ -144,7 +144,7 @@ upload_wm_state(struct brw_context *brw) dw4 |= (brw->wm.prog_data->first_curbe_grf << GEN6_WM_DISPATCH_START_GRF_SHIFT_0); - dw5 |= (40 - 1) << GEN6_WM_MAX_THREADS_SHIFT; + dw5 |= (brw->wm_max_threads - 1) << GEN6_WM_MAX_THREADS_SHIFT; /* CACHE_NEW_WM_PROG */ if (brw->wm.prog_data->dispatch_width == 8) @@ -184,7 +184,12 @@ upload_wm_state(struct brw_context *brw) OUT_BATCH(_3DSTATE_WM << 16 | (9 - 2)); OUT_RELOC(brw->wm.prog_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); OUT_BATCH(dw2); - OUT_BATCH(0); /* scratch space base offset */ + if (brw->wm.prog_data->total_scratch) { + OUT_RELOC(brw->wm.scratch_bo, I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + ffs(brw->wm.prog_data->total_scratch) - 11); + } else { + OUT_BATCH(0); + } OUT_BATCH(dw4); OUT_BATCH(dw5); OUT_BATCH(dw6); diff --git a/src/mesa/drivers/dri/intel/intel_batchbuffer.c b/src/mesa/drivers/dri/intel/intel_batchbuffer.c index 42b4f923e0c..53d6e7c6acc 100644 --- a/src/mesa/drivers/dri/intel/intel_batchbuffer.c +++ b/src/mesa/drivers/dri/intel/intel_batchbuffer.c @@ -176,8 +176,6 @@ intel_batchbuffer_emit_reloc(struct intel_context *intel, { int ret; - assert(delta < buffer->size); - ret = drm_intel_bo_emit_reloc(intel->batch.bo, 4*intel->batch.used, buffer, delta, read_domains, write_domain); @@ -203,8 +201,6 @@ intel_batchbuffer_emit_reloc_fenced(struct intel_context *intel, { int ret; - assert(delta < buffer->size); - ret = drm_intel_bo_emit_reloc_fence(intel->batch.bo, 4*intel->batch.used, buffer, delta, read_domains, write_domain); diff --git a/src/mesa/drivers/dri/intel/intel_blit.c b/src/mesa/drivers/dri/intel/intel_blit.c index e1ab7f16371..5aac1f6fa24 100644 --- a/src/mesa/drivers/dri/intel/intel_blit.c +++ b/src/mesa/drivers/dri/intel/intel_blit.c @@ -146,6 +146,17 @@ intelEmitCopyBlit(struct intel_context *intel, src_pitch *= cpp; dst_pitch *= cpp; + /* For big formats (such as floating point), do the copy using 32bpp and + * multiply the coordinates. + */ + if (cpp > 4) { + assert(cpp % 4 == 0); + dst_x *= cpp / 4; + dst_x2 *= cpp / 4; + src_x *= cpp / 4; + cpp = 4; + } + BR13 = br13_for_cpp(cpp) | translate_raster_op(logic_op) << 16; switch (cpp) { @@ -211,7 +222,7 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask) { struct intel_context *intel = intel_context(ctx); struct gl_framebuffer *fb = ctx->DrawBuffer; - GLuint clear_depth; + GLuint clear_depth_value, clear_depth_mask; GLboolean all; GLint cx, cy, cw, ch; GLbitfield fail_mask = 0; @@ -220,12 +231,15 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask) /* * Compute values for clearing the buffers. */ - clear_depth = 0; + clear_depth_value = 0; + clear_depth_mask = 0; if (mask & BUFFER_BIT_DEPTH) { - clear_depth = (GLuint) (fb->_DepthMax * ctx->Depth.Clear); + clear_depth_value = (GLuint) (fb->_DepthMax * ctx->Depth.Clear); + clear_depth_mask = XY_BLT_WRITE_RGB; } if (mask & BUFFER_BIT_STENCIL) { - clear_depth |= (ctx->Stencil.Clear & 0xff) << 24; + clear_depth_value |= (ctx->Stencil.Clear & 0xff) << 24; + clear_depth_mask |= XY_BLT_WRITE_ALPHA; } cx = fb->_Xmin; @@ -239,12 +253,13 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask) if (cw == 0 || ch == 0) return 0; - GLuint buf; all = (cw == fb->Width && ch == fb->Height); /* Loop over all renderbuffers */ - for (buf = 0; buf < BUFFER_COUNT && mask; buf++) { - const GLbitfield bufBit = 1 << buf; + mask &= (1 << BUFFER_COUNT) - 1; + while (mask) { + GLuint buf = _mesa_ffs(mask) - 1; + GLboolean is_depth_stencil = buf == BUFFER_DEPTH || buf == BUFFER_STENCIL; struct intel_renderbuffer *irb; drm_intel_bo *write_buffer; int x1, y1, x2, y2; @@ -253,11 +268,15 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask) int pitch, cpp; drm_intel_bo *aper_array[2]; - if (!(mask & bufBit)) - continue; + mask &= ~(1 << buf); - /* OK, clear this renderbuffer */ irb = intel_get_renderbuffer(fb, buf); + if (irb == NULL || irb->region == NULL || irb->region->buffer == NULL) { + fail_mask |= 1 << buf; + continue; + } + + /* OK, clear this renderbuffer */ write_buffer = intel_region_buffer(intel, irb->region, all ? INTEL_WRITE_FULL : INTEL_WRITE_PART); @@ -274,16 +293,13 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask) irb->region->buffer, (pitch * cpp), x1, y1, x2 - x1, y2 - y1); - BR13 = br13_for_cpp(cpp) | 0xf0 << 16; + BR13 = 0xf0 << 16; CMD = XY_COLOR_BLT_CMD; /* Setup the blit command */ if (cpp == 4) { - if (buf == BUFFER_DEPTH || buf == BUFFER_STENCIL) { - if (mask & BUFFER_BIT_DEPTH) - CMD |= XY_BLT_WRITE_RGB; - if (mask & BUFFER_BIT_STENCIL) - CMD |= XY_BLT_WRITE_ALPHA; + if (is_depth_stencil) { + CMD |= clear_depth_mask; } else { /* clearing RGBA */ CMD |= XY_BLT_WRITE_ALPHA | XY_BLT_WRITE_RGB; @@ -300,8 +316,8 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask) #endif BR13 |= (pitch * cpp); - if (buf == BUFFER_DEPTH || buf == BUFFER_STENCIL) { - clear_val = clear_depth; + if (is_depth_stencil) { + clear_val = clear_depth_value; } else { uint8_t clear[4]; GLclampf *color = ctx->Color.ClearColor; @@ -333,12 +349,13 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask) clear[3], clear[3]); break; default: - fail_mask |= bufBit; - mask &= ~bufBit; + fail_mask |= 1 << buf; continue; } } + BR13 |= br13_for_cpp(cpp); + assert(x1 < x2); assert(y1 < y2); @@ -367,8 +384,6 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask) if (buf == BUFFER_DEPTH || buf == BUFFER_STENCIL) mask &= ~(BUFFER_BIT_DEPTH | BUFFER_BIT_STENCIL); - else - mask &= ~bufBit; /* turn off bit, for faster loop exit */ } return fail_mask; diff --git a/src/mesa/drivers/dri/intel/intel_chipset.h b/src/mesa/drivers/dri/intel/intel_chipset.h index 4ff9140d56e..a3f40effc35 100644 --- a/src/mesa/drivers/dri/intel/intel_chipset.h +++ b/src/mesa/drivers/dri/intel/intel_chipset.h @@ -125,18 +125,17 @@ /* Compat macro for intel_decode.c */ #define IS_IRONLAKE(devid) IS_GEN5(devid) -#define IS_GEN6(devid) (devid == PCI_CHIP_SANDYBRIDGE_GT1 || \ - devid == PCI_CHIP_SANDYBRIDGE_GT2 || \ - devid == PCI_CHIP_SANDYBRIDGE_GT2_PLUS || \ - devid == PCI_CHIP_SANDYBRIDGE_M_GT1 || \ - devid == PCI_CHIP_SANDYBRIDGE_M_GT2 || \ - devid == PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS || \ - devid == PCI_CHIP_SANDYBRIDGE_S) - #define IS_GT1(devid) (devid == PCI_CHIP_SANDYBRIDGE_GT1 || \ devid == PCI_CHIP_SANDYBRIDGE_M_GT1 || \ devid == PCI_CHIP_SANDYBRIDGE_S) +#define IS_GT2(devid) (devid == PCI_CHIP_SANDYBRIDGE_GT2 || \ + devid == PCI_CHIP_SANDYBRIDGE_GT2_PLUS || \ + devid == PCI_CHIP_SANDYBRIDGE_M_GT2 || \ + devid == PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS) + +#define IS_GEN6(devid) (IS_GT1(devid) || IS_GT2(devid)) + #define IS_965(devid) (IS_GEN4(devid) || \ IS_G4X(devid) || \ IS_GEN5(devid) || \ diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c index c2e2a98af5e..02e7f7717fc 100644 --- a/src/mesa/drivers/dri/intel/intel_context.c +++ b/src/mesa/drivers/dri/intel/intel_context.c @@ -62,10 +62,6 @@ int INTEL_DEBUG = (0); #endif -#define DRIVER_DATE "20100330 DEVELOPMENT" -#define DRIVER_DATE_GEM "GEM " DRIVER_DATE - - static const GLubyte * intelGetString(struct gl_context * ctx, GLenum name) { @@ -182,7 +178,7 @@ intelGetString(struct gl_context * ctx, GLenum name) break; } - (void) driGetRendererString(buffer, chipset, DRIVER_DATE_GEM, 0); + (void) driGetRendererString(buffer, chipset, 0); return (GLubyte *) buffer; default: @@ -728,8 +724,13 @@ intelInitContext(struct intel_context *intel, ctx->TextureFormatSupported[MESA_FORMAT_RG88] = GL_TRUE; ctx->TextureFormatSupported[MESA_FORMAT_RG1616] = GL_TRUE; + /* GL_MESA_texture_signed_rgba / GL_EXT_texture_snorm */ ctx->TextureFormatSupported[MESA_FORMAT_DUDV8] = GL_TRUE; ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_RGBA8888_REV] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_R8] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_RG88_REV] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_R16] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_GR1616] = GL_TRUE; /* GL_EXT_texture_sRGB */ ctx->TextureFormatSupported[MESA_FORMAT_SARGB8] = GL_TRUE; @@ -742,8 +743,19 @@ intelInitContext(struct intel_context *intel, ctx->TextureFormatSupported[MESA_FORMAT_SL8] = GL_TRUE; ctx->TextureFormatSupported[MESA_FORMAT_SLA8] = GL_TRUE; } + +#ifdef TEXTURE_FLOAT_ENABLED + ctx->TextureFormatSupported[MESA_FORMAT_RGBA_FLOAT32] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_RG_FLOAT32] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_R_FLOAT32] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_INTENSITY_FLOAT32] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_LUMINANCE_FLOAT32] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_ALPHA_FLOAT32] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32] = GL_TRUE; #endif +#endif /* !I915 */ + driParseConfigFiles(&intel->optionCache, &intelScreen->optionCache, sPriv->myNum, (intel->gen >= 4) ? "i965" : "i915"); if (intel->gen < 4) diff --git a/src/mesa/drivers/dri/intel/intel_context.h b/src/mesa/drivers/dri/intel/intel_context.h index 772b2fba5a8..c59119373da 100644 --- a/src/mesa/drivers/dri/intel/intel_context.h +++ b/src/mesa/drivers/dri/intel/intel_context.h @@ -295,9 +295,33 @@ extern char *__progname; #define SUBPIXEL_Y 0.125 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) -#define ALIGN(value, alignment) ((value + alignment - 1) & ~(alignment - 1)) -#define ROUND_DOWN_TO(value, alignment) (ALIGN(value - alignment - 1, \ - alignment)) + +/** + * Align a value up to an alignment value + * + * If \c value is not already aligned to the requested alignment value, it + * will be rounded up. + * + * \param value Value to be rounded + * \param alignment Alignment value to be used. This must be a power of two. + * + * \sa ROUND_DOWN_TO() + */ +#define ALIGN(value, alignment) (((value) + alignment - 1) & ~(alignment - 1)) + +/** + * Align a value down to an alignment value + * + * If \c value is not already aligned to the requested alignment value, it + * will be rounded down. + * + * \param value Value to be rounded + * \param alignment Alignment value to be used. This must be a power of two. + * + * \sa ALIGN() + */ +#define ROUND_DOWN_TO(value, alignment) ((value) & ~(alignment - 1)) + #define IS_POWER_OF_TWO(val) (((val) & (val - 1)) == 0) static INLINE uint32_t diff --git a/src/mesa/drivers/dri/intel/intel_extensions.c b/src/mesa/drivers/dri/intel/intel_extensions.c index febc1d4f859..e107534a4da 100644 --- a/src/mesa/drivers/dri/intel/intel_extensions.c +++ b/src/mesa/drivers/dri/intel/intel_extensions.c @@ -160,6 +160,7 @@ static const struct dri_extension i915_extensions[] = { /** i965-only extensions */ static const struct dri_extension brw_extensions[] = { + { "GL_ARB_color_buffer_float", NULL }, { "GL_ARB_depth_clamp", NULL }, { "GL_ARB_depth_texture", NULL }, { "GL_ARB_fragment_coord_conventions", NULL }, @@ -171,6 +172,9 @@ static const struct dri_extension brw_extensions[] = { { "GL_ARB_point_sprite", NULL }, { "GL_ARB_seamless_cube_map", NULL }, { "GL_ARB_shadow", NULL }, +#ifdef TEXTURE_FLOAT_ENABLED + { "GL_ARB_texture_float", NULL }, +#endif { "GL_MESA_texture_signed_rgba", NULL }, { "GL_ARB_texture_non_power_of_two", NULL }, { "GL_ARB_texture_rg", NULL }, diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c b/src/mesa/drivers/dri/intel/intel_fbo.c index 8b57eb19f56..ad2468a3237 100644 --- a/src/mesa/drivers/dri/intel/intel_fbo.c +++ b/src/mesa/drivers/dri/intel/intel_fbo.c @@ -385,7 +385,7 @@ intel_update_wrapper(struct gl_context *ctx, struct intel_renderbuffer *irb, irb->Base.Format = texImage->TexFormat; irb->Base.DataType = intel_mesa_format_to_rb_datatype(texImage->TexFormat); irb->Base.InternalFormat = texImage->InternalFormat; - irb->Base._BaseFormat = _mesa_base_fbo_format(ctx, irb->Base.InternalFormat); + irb->Base._BaseFormat = _mesa_base_tex_format(ctx, irb->Base.InternalFormat); irb->Base.Width = texImage->Width; irb->Base.Height = texImage->Height; diff --git a/src/mesa/drivers/dri/intel/intel_span.c b/src/mesa/drivers/dri/intel/intel_span.c index 1f41518535c..16bce20317e 100644 --- a/src/mesa/drivers/dri/intel/intel_span.c +++ b/src/mesa/drivers/dri/intel/intel_span.c @@ -30,6 +30,7 @@ #include "main/macros.h" #include "main/mtypes.h" #include "main/colormac.h" +#include "main/renderbuffer.h" #include "intel_buffers.h" #include "intel_fbo.h" @@ -114,57 +115,6 @@ intel_set_span_functions(struct intel_context *intel, #define TAG2(x,y) intel_##x##y##_A8 #include "spantmp2.h" -#define SPANTMP_MESA_FMT MESA_FORMAT_R8 -#define TAG(x) intel_##x##_R8 -#define TAG2(x,y) intel_##x##y##_R8 -#include "spantmp2.h" - -#define SPANTMP_MESA_FMT MESA_FORMAT_RG88 -#define TAG(x) intel_##x##_RG88 -#define TAG2(x,y) intel_##x##y##_RG88 -#include "spantmp2.h" - -#define SPANTMP_MESA_FMT MESA_FORMAT_R16 -#define TAG(x) intel_##x##_R16 -#define TAG2(x,y) intel_##x##y##_R16 -#include "spantmp2.h" - -#define SPANTMP_MESA_FMT MESA_FORMAT_RG1616 -#define TAG(x) intel_##x##_RG1616 -#define TAG2(x,y) intel_##x##y##_RG1616 -#include "spantmp2.h" - -#define LOCAL_DEPTH_VARS \ - struct intel_renderbuffer *irb = intel_renderbuffer(rb); \ - const GLint yScale = rb->Name ? 1 : -1; \ - const GLint yBias = rb->Name ? 0 : rb->Height - 1; \ - int minx = 0, miny = 0; \ - int maxx = rb->Width; \ - int maxy = rb->Height; \ - int pitch = irb->region->pitch * irb->region->cpp; \ - void *buf = irb->region->buffer->virtual; \ - (void)buf; (void)pitch; /* unused for non-gttmap. */ \ - -#define LOCAL_STENCIL_VARS LOCAL_DEPTH_VARS - -/* z16 depthbuffer functions. */ -#define VALUE_TYPE GLushort -#define WRITE_DEPTH(_x, _y, d) \ - (*(uint16_t *)(irb->region->buffer->virtual + NO_TILE(_x, _y)) = d) -#define READ_DEPTH(d, _x, _y) \ - d = *(uint16_t *)(irb->region->buffer->virtual + NO_TILE(_x, _y)) -#define TAG(x) intel_##x##_z16 -#include "depthtmp.h" - -/* z24_s8 and z24_x8 depthbuffer functions. */ -#define VALUE_TYPE GLuint -#define WRITE_DEPTH(_x, _y, d) \ - (*(uint32_t *)(irb->region->buffer->virtual + NO_TILE(_x, _y)) = d) -#define READ_DEPTH(d, _x, _y) \ - d = *(uint32_t *)(irb->region->buffer->virtual + NO_TILE(_x, _y)) -#define TAG(x) intel_##x##_z24_s8 -#include "depthtmp.h" - void intel_renderbuffer_map(struct intel_context *intel, struct gl_renderbuffer *rb) { @@ -175,6 +125,15 @@ intel_renderbuffer_map(struct intel_context *intel, struct gl_renderbuffer *rb) drm_intel_gem_bo_map_gtt(irb->region->buffer); + rb->Data = irb->region->buffer->virtual; + rb->RowStride = irb->region->pitch; + + /* Flip orientation if it's the window system buffer */ + if (!rb->Name) { + rb->Data += rb->RowStride * (irb->region->height - 1) * irb->region->cpp; + rb->RowStride = -rb->RowStride; + } + intel_set_span_functions(intel, rb); } @@ -191,6 +150,8 @@ intel_renderbuffer_unmap(struct intel_context *intel, rb->GetRow = NULL; rb->PutRow = NULL; + rb->Data = NULL; + rb->RowStride = 0; } /** @@ -371,13 +332,18 @@ static span_init_func intel_span_init_funcs[MESA_FORMAT_COUNT] = [MESA_FORMAT_XRGB8888] = intel_InitPointers_xRGB8888, [MESA_FORMAT_ARGB8888] = intel_InitPointers_ARGB8888, [MESA_FORMAT_SARGB8] = intel_InitPointers_ARGB8888, - [MESA_FORMAT_Z16] = intel_InitDepthPointers_z16, - [MESA_FORMAT_X8_Z24] = intel_InitDepthPointers_z24_s8, - [MESA_FORMAT_S8_Z24] = intel_InitDepthPointers_z24_s8, - [MESA_FORMAT_R8] = intel_InitPointers_R8, - [MESA_FORMAT_RG88] = intel_InitPointers_RG88, - [MESA_FORMAT_R16] = intel_InitPointers_R16, - [MESA_FORMAT_RG1616] = intel_InitPointers_RG1616, + [MESA_FORMAT_Z16] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_X8_Z24] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_S8_Z24] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_R8] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_RG88] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_R16] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_RG1616] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_RGBA_FLOAT32] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_RG_FLOAT32] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_R_FLOAT32] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_INTENSITY_FLOAT32] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_LUMINANCE_FLOAT32] = _mesa_set_renderbuffer_accessors, }; bool diff --git a/src/mesa/drivers/dri/intel/intel_tex_format.c b/src/mesa/drivers/dri/intel/intel_tex_format.c index 87745bc66d4..befa615d1e6 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_format.c +++ b/src/mesa/drivers/dri/intel/intel_tex_format.c @@ -16,6 +16,8 @@ intel_mesa_format_to_rb_datatype(gl_format format) case MESA_FORMAT_R8: case MESA_FORMAT_RG88: case MESA_FORMAT_A8: + case MESA_FORMAT_I8: + case MESA_FORMAT_L8: case MESA_FORMAT_AL88: case MESA_FORMAT_RGB565: case MESA_FORMAT_ARGB1555: @@ -29,6 +31,15 @@ intel_mesa_format_to_rb_datatype(gl_format format) return GL_UNSIGNED_INT; case MESA_FORMAT_S8_Z24: return GL_UNSIGNED_INT_24_8_EXT; + case MESA_FORMAT_RGBA_FLOAT32: + case MESA_FORMAT_RG_FLOAT32: + case MESA_FORMAT_R_FLOAT32: + case MESA_FORMAT_INTENSITY_FLOAT32: + case MESA_FORMAT_LUMINANCE_FLOAT32: + case MESA_FORMAT_ALPHA_FLOAT32: + case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32: + return GL_FLOAT; + default: _mesa_problem(NULL, "unexpected MESA_FORMAT for renderbuffer"); return GL_UNSIGNED_BYTE; diff --git a/src/mesa/drivers/dri/intel/intel_tex_image.c b/src/mesa/drivers/dri/intel/intel_tex_image.c index 906f8a62710..775fd1008f9 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_image.c +++ b/src/mesa/drivers/dri/intel/intel_tex_image.c @@ -112,8 +112,8 @@ intel_miptree_create_for_teximage(struct intel_context *intel, * resizable buffers, or require that buffers implement lazy * pagetable arrangements. */ - if ((intelObj->base.MinFilter == GL_NEAREST || - intelObj->base.MinFilter == GL_LINEAR) && + if ((intelObj->base.Sampler.MinFilter == GL_NEAREST || + intelObj->base.Sampler.MinFilter == GL_LINEAR) && intelImage->level == firstLevel && (intel->gen < 4 || firstLevel == 0)) { lastLevel = firstLevel; @@ -370,8 +370,10 @@ intelTexImage(struct gl_context * ctx, * whole object since our level didn't fit what was there * before, and any lower levels would fit into our miptree. */ - if (intelImage->mt) + if (intelImage->mt) { + intel_miptree_release(intel, &intelObj->mt); intel_miptree_reference(&intelObj->mt, intelImage->mt); + } } /* PBO fastpaths: diff --git a/src/mesa/drivers/dri/intel/intel_tex_subimage.c b/src/mesa/drivers/dri/intel/intel_tex_subimage.c index d0f8294113a..8b43c406cf9 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_subimage.c +++ b/src/mesa/drivers/dri/intel/intel_tex_subimage.c @@ -90,10 +90,17 @@ intelTexSubimage(struct gl_context * ctx, intel->gen < 6 && target == GL_TEXTURE_2D && drm_intel_bo_busy(dst_bo)) { - dstRowStride = width * intelImage->mt->cpp; - temp_bo = drm_intel_bo_alloc(intel->bufmgr, "subimage blit bo", - dstRowStride * height, 0); - if (!temp_bo) + unsigned long pitch; + uint32_t tiling_mode = I915_TILING_NONE; + + temp_bo = drm_intel_bo_alloc_tiled(intel->bufmgr, + "subimage blit bo", + width, height, + intelImage->mt->cpp, + &tiling_mode, + &pitch, + 0); + if (temp_bo == NULL) return; if (drm_intel_gem_bo_map_gtt(temp_bo)) { @@ -103,6 +110,7 @@ intelTexSubimage(struct gl_context * ctx, texImage->Data = temp_bo->virtual; texImage->ImageOffsets[0] = 0; + dstRowStride = pitch; intel_miptree_get_image_offset(intelImage->mt, level, intelImage->face, 0, diff --git a/src/mesa/drivers/dri/intel/intel_tex_validate.c b/src/mesa/drivers/dri/intel/intel_tex_validate.c index a11b07ed09d..5e705c93619 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_validate.c +++ b/src/mesa/drivers/dri/intel/intel_tex_validate.c @@ -18,7 +18,7 @@ intel_update_max_level(struct intel_context *intel, { struct gl_texture_object *tObj = &intelObj->base; - if (tObj->MinFilter == GL_NEAREST || tObj->MinFilter == GL_LINEAR) { + if (tObj->Sampler.MinFilter == GL_NEAREST || tObj->Sampler.MinFilter == GL_LINEAR) { intelObj->_MaxLevel = tObj->BaseLevel; } else { intelObj->_MaxLevel = tObj->_MaxLevel; diff --git a/src/mesa/drivers/dri/mach64/mach64_dd.c b/src/mesa/drivers/dri/mach64/mach64_dd.c index 9cb2c107597..2b557a70202 100644 --- a/src/mesa/drivers/dri/mach64/mach64_dd.c +++ b/src/mesa/drivers/dri/mach64/mach64_dd.c @@ -37,8 +37,6 @@ #include "utils.h" -#define DRIVER_DATE "20051019" - /* Return the current color buffer size. */ static void mach64DDGetBufferSize( struct gl_framebuffer *buffer, @@ -70,8 +68,7 @@ static const GLubyte *mach64DDGetString( struct gl_context *ctx, GLenum name ) case GL_RENDERER: - offset = driGetRendererString( buffer, card_name, DRIVER_DATE, - agp_mode ); + offset = driGetRendererString( buffer, card_name, agp_mode ); return (GLubyte *)buffer; default: diff --git a/src/mesa/drivers/dri/mach64/mach64_tex.c b/src/mesa/drivers/dri/mach64/mach64_tex.c index 68d273a3e75..8e10b314b64 100644 --- a/src/mesa/drivers/dri/mach64/mach64_tex.c +++ b/src/mesa/drivers/dri/mach64/mach64_tex.c @@ -123,9 +123,9 @@ mach64AllocTexObj( struct gl_texture_object *texObj ) make_empty_list( (driTextureObject *) t ); - mach64SetTexWrap( t, texObj->WrapS, texObj->WrapT ); - mach64SetTexFilter( t, texObj->MinFilter, texObj->MagFilter ); - mach64SetTexBorderColor( t, texObj->BorderColor.f ); + mach64SetTexWrap( t, texObj->Sampler.WrapS, texObj->Sampler.WrapT ); + mach64SetTexFilter( t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter ); + mach64SetTexBorderColor( t, texObj->Sampler.BorderColor.f ); return t; } @@ -454,18 +454,18 @@ static void mach64DDTexParameter( struct gl_context *ctx, GLenum target, case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MAG_FILTER: if ( t->base.bound ) FLUSH_BATCH( mmesa ); - mach64SetTexFilter( t, tObj->MinFilter, tObj->MagFilter ); + mach64SetTexFilter( t, tObj->Sampler.MinFilter, tObj->Sampler.MagFilter ); break; case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: if ( t->base.bound ) FLUSH_BATCH( mmesa ); - mach64SetTexWrap( t, tObj->WrapS, tObj->WrapT ); + mach64SetTexWrap( t, tObj->Sampler.WrapS, tObj->Sampler.WrapT ); break; case GL_TEXTURE_BORDER_COLOR: if ( t->base.bound ) FLUSH_BATCH( mmesa ); - mach64SetTexBorderColor( t, tObj->BorderColor.f ); + mach64SetTexBorderColor( t, tObj->Sampler.BorderColor.f ); break; case GL_TEXTURE_BASE_LEVEL: diff --git a/src/mesa/drivers/dri/mga/mgadd.c b/src/mesa/drivers/dri/mga/mgadd.c index 1b39813e379..2e3e9f2c43c 100644 --- a/src/mesa/drivers/dri/mga/mgadd.c +++ b/src/mesa/drivers/dri/mga/mgadd.c @@ -35,9 +35,6 @@ #include "mga_xmesa.h" #include "utils.h" -#define DRIVER_DATE "20071017" - - /*************************************** * Mesa's Driver Functions ***************************************/ @@ -57,7 +54,6 @@ static const GLubyte *mgaGetString( struct gl_context *ctx, GLenum name ) offset = driGetRendererString( buffer, MGA_IS_G400(mmesa) ? "G400" : MGA_IS_G200(mmesa) ? "G200" : "MGA", - DRIVER_DATE, mmesa->mgaScreen->agpMode ); return (GLubyte *)buffer; diff --git a/src/mesa/drivers/dri/mga/mgatex.c b/src/mesa/drivers/dri/mga/mgatex.c index 11ab9b6117d..ebbfec36556 100644 --- a/src/mesa/drivers/dri/mga/mgatex.c +++ b/src/mesa/drivers/dri/mga/mgatex.c @@ -327,9 +327,9 @@ mgaAllocTexObj( struct gl_texture_object *tObj ) make_empty_list( & t->base ); - mgaSetTexWrapping( t, tObj->WrapS, tObj->WrapT ); - mgaSetTexFilter( t, tObj->MinFilter, tObj->MagFilter ); - mgaSetTexBorderColor( t, tObj->BorderColor.f ); + mgaSetTexWrapping( t, tObj->Sampler.WrapS, tObj->Sampler.WrapT ); + mgaSetTexFilter( t, tObj->Sampler.MinFilter, tObj->Sampler.MagFilter ); + mgaSetTexBorderColor( t, tObj->Sampler.BorderColor.f ); } return( t ); @@ -447,18 +447,18 @@ mgaTexParameter( struct gl_context *ctx, GLenum target, /* FALLTHROUGH */ case GL_TEXTURE_MAG_FILTER: FLUSH_BATCH(mmesa); - mgaSetTexFilter( t, tObj->MinFilter, tObj->MagFilter ); + mgaSetTexFilter( t, tObj->Sampler.MinFilter, tObj->Sampler.MagFilter ); break; case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: FLUSH_BATCH(mmesa); - mgaSetTexWrapping(t,tObj->WrapS,tObj->WrapT); + mgaSetTexWrapping(t,tObj->Sampler.WrapS,tObj->Sampler.WrapT); break; case GL_TEXTURE_BORDER_COLOR: FLUSH_BATCH(mmesa); - mgaSetTexBorderColor(t, tObj->BorderColor.f); + mgaSetTexBorderColor(t, tObj->Sampler.BorderColor.f); break; case GL_TEXTURE_BASE_LEVEL: diff --git a/src/mesa/drivers/dri/nouveau/nouveau_driver.c b/src/mesa/drivers/dri/nouveau/nouveau_driver.c index 45630be7f6e..8b6aa820434 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_driver.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_driver.c @@ -45,7 +45,7 @@ nouveau_get_string(struct gl_context *ctx, GLenum name) case GL_RENDERER: sprintf(hardware_name, "nv%02X", context_chipset(ctx)); - driGetRendererString(buffer, hardware_name, DRIVER_DATE, 0); + driGetRendererString(buffer, hardware_name, 0); return (GLubyte *)buffer; default: diff --git a/src/mesa/drivers/dri/nouveau/nouveau_driver.h b/src/mesa/drivers/dri/nouveau/nouveau_driver.h index 158aec820aa..0018eec021f 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_driver.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_driver.h @@ -48,7 +48,6 @@ #include "nouveau_surface.h" #include "nv04_pushbuf.h" -#define DRIVER_DATE "20091015" #define DRIVER_AUTHOR "Nouveau" struct nouveau_driver { diff --git a/src/mesa/drivers/dri/nouveau/nouveau_texture.c b/src/mesa/drivers/dri/nouveau/nouveau_texture.c index 1a1e10e0b3a..36e68c99181 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_texture.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_texture.c @@ -270,8 +270,8 @@ get_last_level(struct gl_texture_object *t) { struct gl_texture_image *base = t->Image[0][t->BaseLevel]; - if (t->MinFilter == GL_NEAREST || - t->MinFilter == GL_LINEAR || !base) + if (t->Sampler.MinFilter == GL_NEAREST || + t->Sampler.MinFilter == GL_LINEAR || !base) return t->BaseLevel; else return MIN2(t->BaseLevel + base->MaxLog2, t->MaxLevel); diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_tex.c b/src/mesa/drivers/dri/nouveau/nv04_state_tex.c index 5ed8b147559..648d6b18cf5 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_state_tex.c +++ b/src/mesa/drivers/dri/nouveau/nv04_state_tex.c @@ -80,26 +80,26 @@ nv04_emit_tex_obj(struct gl_context *ctx, int emit) s = &to_nouveau_texture(t)->surfaces[t->BaseLevel]; - if (t->MinFilter != GL_NEAREST && - t->MinFilter != GL_LINEAR) { - lod_max = CLAMP(MIN2(t->MaxLod, t->_MaxLambda), + if (t->Sampler.MinFilter != GL_NEAREST && + t->Sampler.MinFilter != GL_LINEAR) { + lod_max = CLAMP(MIN2(t->Sampler.MaxLod, t->_MaxLambda), 0, 15) + 1; lod_bias = CLAMP(ctx->Texture.Unit[i].LodBias + - t->LodBias, -16, 15) * 8; + t->Sampler.LodBias, -16, 15) * 8; } - format |= nvgl_wrap_mode(t->WrapT) << 28 | - nvgl_wrap_mode(t->WrapS) << 24 | + format |= nvgl_wrap_mode(t->Sampler.WrapT) << 28 | + nvgl_wrap_mode(t->Sampler.WrapS) << 24 | ti->HeightLog2 << 20 | ti->WidthLog2 << 16 | lod_max << 12 | get_tex_format(ti); - filter |= log2i(t->MaxAnisotropy) << 31 | - nvgl_filter_mode(t->MagFilter) << 28 | - log2i(t->MaxAnisotropy) << 27 | - nvgl_filter_mode(t->MinFilter) << 24 | + filter |= log2i(t->Sampler.MaxAnisotropy) << 31 | + nvgl_filter_mode(t->Sampler.MagFilter) << 28 | + log2i(t->Sampler.MaxAnisotropy) << 27 | + nvgl_filter_mode(t->Sampler.MinFilter) << 24 | (lod_bias & 0xff) << 16; } else { diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c index fda67b15073..620a686aea0 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c @@ -173,17 +173,17 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit) return; /* Recompute the texturing registers. */ - tx_format = nvgl_wrap_mode(t->WrapT) << 28 - | nvgl_wrap_mode(t->WrapS) << 24 + tx_format = nvgl_wrap_mode(t->Sampler.WrapT) << 28 + | nvgl_wrap_mode(t->Sampler.WrapS) << 24 | ti->HeightLog2 << 20 | ti->WidthLog2 << 16 | 5 << 4 | 1 << 12; - tx_filter = nvgl_filter_mode(t->MagFilter) << 28 - | nvgl_filter_mode(t->MinFilter) << 24; + tx_filter = nvgl_filter_mode(t->Sampler.MagFilter) << 28 + | nvgl_filter_mode(t->Sampler.MinFilter) << 24; tx_enable = NV10_3D_TEX_ENABLE_ENABLE - | log2i(t->MaxAnisotropy) << 4; + | log2i(t->Sampler.MaxAnisotropy) << 4; if (t->Target == GL_TEXTURE_RECTANGLE) { BEGIN_RING(chan, celsius, NV10_3D_TEX_NPOT_PITCH(i), 1); @@ -196,11 +196,11 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit) tx_format |= get_tex_format_pot(ti); } - if (t->MinFilter != GL_NEAREST && - t->MinFilter != GL_LINEAR) { - int lod_min = t->MinLod; - int lod_max = MIN2(t->MaxLod, t->_MaxLambda); - int lod_bias = t->LodBias + if (t->Sampler.MinFilter != GL_NEAREST && + t->Sampler.MinFilter != GL_LINEAR) { + int lod_min = t->Sampler.MinLod; + int lod_max = MIN2(t->Sampler.MaxLod, t->_MaxLambda); + int lod_bias = t->Sampler.LodBias + ctx->Texture.Unit[i].LodBias; lod_max = CLAMP(lod_max, 0, 15); diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_tex.c b/src/mesa/drivers/dri/nouveau/nv20_state_tex.c index c362aca0fdb..eab74aed5c2 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_tex.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_tex.c @@ -186,16 +186,16 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit) | NV20_3D_TEX_FORMAT_NO_BORDER | 1 << 16; - tx_wrap = nvgl_wrap_mode(t->WrapR) << 16 - | nvgl_wrap_mode(t->WrapT) << 8 - | nvgl_wrap_mode(t->WrapS) << 0; + tx_wrap = nvgl_wrap_mode(t->Sampler.WrapR) << 16 + | nvgl_wrap_mode(t->Sampler.WrapT) << 8 + | nvgl_wrap_mode(t->Sampler.WrapS) << 0; - tx_filter = nvgl_filter_mode(t->MagFilter) << 24 - | nvgl_filter_mode(t->MinFilter) << 16 + tx_filter = nvgl_filter_mode(t->Sampler.MagFilter) << 24 + | nvgl_filter_mode(t->Sampler.MinFilter) << 16 | 2 << 12; tx_enable = NV20_3D_TEX_ENABLE_ENABLE - | log2i(t->MaxAnisotropy) << 4; + | log2i(t->Sampler.MaxAnisotropy) << 4; if (t->Target == GL_TEXTURE_RECTANGLE) { BEGIN_RING(chan, kelvin, NV20_3D_TEX_NPOT_PITCH(i), 1); @@ -208,11 +208,11 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit) tx_format |= get_tex_format_pot(ti); } - if (t->MinFilter != GL_NEAREST && - t->MinFilter != GL_LINEAR) { - int lod_min = t->MinLod; - int lod_max = MIN2(t->MaxLod, t->_MaxLambda); - int lod_bias = t->LodBias + if (t->Sampler.MinFilter != GL_NEAREST && + t->Sampler.MinFilter != GL_LINEAR) { + int lod_min = t->Sampler.MinLod; + int lod_max = MIN2(t->Sampler.MaxLod, t->_MaxLambda); + int lod_bias = t->Sampler.LodBias + ctx->Texture.Unit[i].LodBias; lod_max = CLAMP(lod_max, 0, 15); diff --git a/src/mesa/drivers/dri/r128/r128_dd.c b/src/mesa/drivers/dri/r128/r128_dd.c index 0b7005eba69..cfe2387948d 100644 --- a/src/mesa/drivers/dri/r128/r128_dd.c +++ b/src/mesa/drivers/dri/r128/r128_dd.c @@ -40,9 +40,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "utils.h" -#define DRIVER_DATE "20051027" - - /* Return the width and height of the current color buffer. */ static void r128GetBufferSize( struct gl_framebuffer *buffer, @@ -82,8 +79,7 @@ static const GLubyte *r128GetString( struct gl_context *ctx, GLenum name ) card_name = "Rage 128 Mobility"; } - offset = driGetRendererString( buffer, card_name, DRIVER_DATE, - agp_mode ); + offset = driGetRendererString( buffer, card_name, agp_mode ); return (GLubyte *)buffer; diff --git a/src/mesa/drivers/dri/r128/r128_span.c b/src/mesa/drivers/dri/r128/r128_span.c index 307de56ee13..04bdbe612e5 100644 --- a/src/mesa/drivers/dri/r128/r128_span.c +++ b/src/mesa/drivers/dri/r128/r128_span.c @@ -135,7 +135,7 @@ do { \ r128WriteDepthSpanLocked( rmesa, n, \ x + dPriv->x, \ y + dPriv->y, \ - depth, mask ); \ + (const GLuint *) depth, mask ); \ } while (0) #define WRITE_DEPTH_PIXELS() \ @@ -146,7 +146,7 @@ do { \ ox[i] = x[i] + dPriv->x; \ oy[i] = Y_FLIP( y[i] ) + dPriv->y; \ } \ - r128WriteDepthPixelsLocked( rmesa, n, ox, oy, depth, mask ); \ + r128WriteDepthPixelsLocked( rmesa, n, ox, oy, (const GLuint *) depth, mask ); \ } while (0) #define READ_DEPTH_SPAN() \ diff --git a/src/mesa/drivers/dri/r128/r128_tex.c b/src/mesa/drivers/dri/r128/r128_tex.c index ba3305e076e..a3f6ce8edeb 100644 --- a/src/mesa/drivers/dri/r128/r128_tex.c +++ b/src/mesa/drivers/dri/r128/r128_tex.c @@ -162,9 +162,9 @@ static r128TexObjPtr r128AllocTexObj( struct gl_texture_object *texObj ) make_empty_list( (driTextureObject *) t ); - r128SetTexWrap( t, texObj->WrapS, texObj->WrapT ); - r128SetTexFilter( t, texObj->MinFilter, texObj->MagFilter ); - r128SetTexBorderColor( t, texObj->BorderColor.f ); + r128SetTexWrap( t, texObj->Sampler.WrapS, texObj->Sampler.WrapT ); + r128SetTexFilter( t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter ); + r128SetTexBorderColor( t, texObj->Sampler.BorderColor.f ); } return t; @@ -519,18 +519,18 @@ static void r128TexParameter( struct gl_context *ctx, GLenum target, case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MAG_FILTER: if ( t->base.bound ) FLUSH_BATCH( rmesa ); - r128SetTexFilter( t, tObj->MinFilter, tObj->MagFilter ); + r128SetTexFilter( t, tObj->Sampler.MinFilter, tObj->Sampler.MagFilter ); break; case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: if ( t->base.bound ) FLUSH_BATCH( rmesa ); - r128SetTexWrap( t, tObj->WrapS, tObj->WrapT ); + r128SetTexWrap( t, tObj->Sampler.WrapS, tObj->Sampler.WrapT ); break; case GL_TEXTURE_BORDER_COLOR: if ( t->base.bound ) FLUSH_BATCH( rmesa ); - r128SetTexBorderColor( t, tObj->BorderColor.f ); + r128SetTexBorderColor( t, tObj->Sampler.BorderColor.f ); break; case GL_TEXTURE_BASE_LEVEL: diff --git a/src/mesa/drivers/dri/r200/r200_context.c b/src/mesa/drivers/dri/r200/r200_context.c index 9c045b73acc..4e08d3431bf 100644 --- a/src/mesa/drivers/dri/r200/r200_context.c +++ b/src/mesa/drivers/dri/r200/r200_context.c @@ -62,13 +62,16 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "radeon_span.h" #define need_GL_ARB_occlusion_query +#define need_GL_ARB_vertex_array_object #define need_GL_ARB_vertex_program +#define need_GL_APPLE_vertex_array_object #define need_GL_ATI_fragment_shader #define need_GL_EXT_blend_minmax #define need_GL_EXT_fog_coord #define need_GL_EXT_secondary_color #define need_GL_EXT_blend_equation_separate #define need_GL_EXT_blend_func_separate +#define need_GL_EXT_gpu_program_parameters #define need_GL_NV_vertex_program #define need_GL_ARB_point_parameters #define need_GL_EXT_framebuffer_object @@ -76,8 +79,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "main/remap_helper.h" -#define DRIVER_DATE "20060602" - #include "utils.h" #include "xmlpool.h" /* for symbolic values of enum-type options */ @@ -96,8 +97,7 @@ static const GLubyte *r200GetString( struct gl_context *ctx, GLenum name ) return (GLubyte *)"Tungsten Graphics, Inc."; case GL_RENDERER: - offset = driGetRendererString( buffer, "R200", DRIVER_DATE, - agp_mode ); + offset = driGetRendererString( buffer, "R200", agp_mode ); sprintf( & buffer[ offset ], " %sTCL", !(rmesa->radeon.TclFallback & R200_TCL_FALLBACK_TCL_DISABLE) @@ -115,6 +115,7 @@ static const GLubyte *r200GetString( struct gl_context *ctx, GLenum name ) */ static const struct dri_extension card_extensions[] = { + { "GL_ARB_half_float_pixel", NULL }, { "GL_ARB_multitexture", NULL }, { "GL_ARB_occlusion_query", GL_ARB_occlusion_query_functions}, { "GL_ARB_texture_border_clamp", NULL }, @@ -123,6 +124,7 @@ static const struct dri_extension card_extensions[] = { "GL_ARB_texture_env_dot3", NULL }, { "GL_ARB_texture_env_crossbar", NULL }, { "GL_ARB_texture_mirrored_repeat", NULL }, + { "GL_ARB_vertex_array_object", GL_ARB_vertex_array_object_functions}, { "GL_EXT_blend_minmax", GL_EXT_blend_minmax_functions }, { "GL_EXT_blend_subtract", NULL }, { "GL_EXT_fog_coord", GL_EXT_fog_coord_functions }, @@ -136,6 +138,7 @@ static const struct dri_extension card_extensions[] = { "GL_EXT_texture_lod_bias", NULL }, { "GL_EXT_texture_mirror_clamp", NULL }, { "GL_EXT_texture_rectangle", NULL }, + { "GL_APPLE_vertex_array_object", GL_APPLE_vertex_array_object_functions }, { "GL_ATI_texture_env_combine3", NULL }, { "GL_ATI_texture_mirror_once", NULL }, { "GL_MESA_pack_invert", NULL }, @@ -153,7 +156,9 @@ static const struct dri_extension blend_extensions[] = { }; static const struct dri_extension ARB_vp_extension[] = { - { "GL_ARB_vertex_program", GL_ARB_vertex_program_functions } + { "GL_ARB_vertex_program", GL_ARB_vertex_program_functions }, + { "GL_EXT_gpu_program_parameters", GL_EXT_gpu_program_parameters_functions}, + { NULL, NULL } }; static const struct dri_extension NV_vp_extension[] = { @@ -458,7 +463,7 @@ GLboolean r200CreateContext( gl_api api, driInitExtensions( ctx, blend_extensions, GL_FALSE ); } if(rmesa->radeon.radeonScreen->drmSupportsVertexProgram) - driInitSingleExtension( ctx, ARB_vp_extension ); + driInitExtensions( ctx, ARB_vp_extension, GL_FALSE ); if(driQueryOptionb(&rmesa->radeon.optionCache, "nv_vertex_program")) driInitSingleExtension( ctx, NV_vp_extension ); diff --git a/src/mesa/drivers/dri/r200/r200_tex.c b/src/mesa/drivers/dri/r200/r200_tex.c index 092b7575831..d42e8f12041 100644 --- a/src/mesa/drivers/dri/r200/r200_tex.c +++ b/src/mesa/drivers/dri/r200/r200_tex.c @@ -383,18 +383,18 @@ static void r200TexParameter( struct gl_context *ctx, GLenum target, case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MAG_FILTER: case GL_TEXTURE_MAX_ANISOTROPY_EXT: - r200SetTexMaxAnisotropy( t, texObj->MaxAnisotropy ); - r200SetTexFilter( t, texObj->MinFilter, texObj->MagFilter ); + r200SetTexMaxAnisotropy( t, texObj->Sampler.MaxAnisotropy ); + r200SetTexFilter( t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter ); break; case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: case GL_TEXTURE_WRAP_R: - r200SetTexWrap( t, texObj->WrapS, texObj->WrapT, texObj->WrapR ); + r200SetTexWrap( t, texObj->Sampler.WrapS, texObj->Sampler.WrapT, texObj->Sampler.WrapR ); break; case GL_TEXTURE_BORDER_COLOR: - r200SetTexBorderColor( t, texObj->BorderColor.f ); + r200SetTexBorderColor( t, texObj->Sampler.BorderColor.f ); break; case GL_TEXTURE_BASE_LEVEL: @@ -479,13 +479,13 @@ static struct gl_texture_object *r200NewTextureObject(struct gl_context * ctx, _mesa_lookup_enum_by_nr(target), t); _mesa_initialize_texture_object(&t->base, name, target); - t->base.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy; + t->base.Sampler.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy; /* Initialize hardware state */ - r200SetTexWrap( t, t->base.WrapS, t->base.WrapT, t->base.WrapR ); - r200SetTexMaxAnisotropy( t, t->base.MaxAnisotropy ); - r200SetTexFilter(t, t->base.MinFilter, t->base.MagFilter); - r200SetTexBorderColor(t, t->base.BorderColor.f); + r200SetTexWrap( t, t->base.Sampler.WrapS, t->base.Sampler.WrapT, t->base.Sampler.WrapR ); + r200SetTexMaxAnisotropy( t, t->base.Sampler.MaxAnisotropy ); + r200SetTexFilter(t, t->base.Sampler.MinFilter, t->base.Sampler.MagFilter); + r200SetTexBorderColor(t, t->base.Sampler.BorderColor.f); return &t->base; } diff --git a/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c b/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c index 28d132a5fe3..8b73409136f 100644 --- a/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c +++ b/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c @@ -34,8 +34,6 @@ * \author Ben Skeggs <[email protected]> * * \author Jerome Glisse <[email protected]> - * - * \todo FogOption */ #include "r300_fragprog.h" @@ -108,6 +106,7 @@ static unsigned int translate_rgb_opcode(struct r300_fragment_program_compiler * { switch(opcode) { case RC_OPCODE_CMP: return R300_ALU_OUTC_CMP; + case RC_OPCODE_CND: return R300_ALU_OUTC_CND; case RC_OPCODE_DP3: return R300_ALU_OUTC_DP3; case RC_OPCODE_DP4: return R300_ALU_OUTC_DP4; case RC_OPCODE_FRC: return R300_ALU_OUTC_FRC; @@ -127,6 +126,7 @@ static unsigned int translate_alpha_opcode(struct r300_fragment_program_compiler { switch(opcode) { case RC_OPCODE_CMP: return R300_ALU_OUTA_CMP; + case RC_OPCODE_CND: return R300_ALU_OUTA_CND; case RC_OPCODE_DP3: return R300_ALU_OUTA_DP4; case RC_OPCODE_DP4: return R300_ALU_OUTA_DP4; case RC_OPCODE_EX2: return R300_ALU_OUTA_EX2; diff --git a/src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c b/src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c index 8ad2175eadf..654f9a070d5 100644 --- a/src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c +++ b/src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c @@ -273,6 +273,7 @@ static void ei_mad(struct r300_vertex_program_code *vp, struct rc_sub_instruction *vpi, unsigned int * inst) { + unsigned int i; /* Remarks about hardware limitations of MAD * (please preserve this comment, as this information is _NOT_ * in the documentation provided by AMD). @@ -318,6 +319,23 @@ static void ei_mad(struct r300_vertex_program_code *vp, t_dst_index(vp, &vpi->DstReg), t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); + + /* Arguments with constant swizzles still count as a unique + * temporary, so we should make sure these arguments share a + * register index with one of the other arguments. */ + for (i = 0; i < 3; i++) { + unsigned int j; + if (vpi->SrcReg[i].File != RC_FILE_NONE) + continue; + + for (j = 0; j < 3; j++) { + if (i != j) { + vpi->SrcReg[i].Index = + vpi->SrcReg[j].Index; + break; + } + } + } } inst[1] = t_src(vp, &vpi->SrcReg[0]); inst[2] = t_src(vp, &vpi->SrcReg[1]); diff --git a/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c b/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c index 301b4446693..c7f79bc53c7 100644 --- a/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c +++ b/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c @@ -93,6 +93,7 @@ static unsigned int translate_rgb_op(struct r300_fragment_program_compiler *c, r { switch(opcode) { case RC_OPCODE_CMP: return R500_ALU_RGBA_OP_CMP; + case RC_OPCODE_CND: return R500_ALU_RGBA_OP_CND; case RC_OPCODE_DDX: return R500_ALU_RGBA_OP_MDH; case RC_OPCODE_DDY: return R500_ALU_RGBA_OP_MDV; case RC_OPCODE_DP3: return R500_ALU_RGBA_OP_DP3; @@ -114,6 +115,7 @@ static unsigned int translate_alpha_op(struct r300_fragment_program_compiler *c, { switch(opcode) { case RC_OPCODE_CMP: return R500_ALPHA_OP_CMP; + case RC_OPCODE_CND: return R500_ALPHA_OP_CND; case RC_OPCODE_COS: return R500_ALPHA_OP_COS; case RC_OPCODE_DDX: return R500_ALPHA_OP_MDH; case RC_OPCODE_DDY: return R500_ALPHA_OP_MDV; @@ -197,11 +199,14 @@ static void use_temporary(struct r500_fragment_program_code* code, unsigned int static unsigned int use_source(struct r500_fragment_program_code* code, struct rc_pair_instruction_source src) { + /* From docs: + * Note that inline constants set the MSB of ADDR0 and clear ADDR0_CONST. + * MSB = 1 << 7 */ if (!src.Used) - return 0; + return 1 << 7; if (src.File == RC_FILE_CONSTANT) { - return src.Index | 0x100; + return src.Index | R500_RGB_ADDR0_CONST; } else if (src.File == RC_FILE_TEMPORARY) { use_temporary(code, src.Index); return src.Index; @@ -259,7 +264,8 @@ static void emit_paired(struct r300_fragment_program_compiler *c, struct rc_pair } code->inst[ip].inst0 |= R500_INST_TEX_SEM_WAIT; - code->inst[ip].inst0 |= (inst->RGB.WriteMask << 11) | (inst->Alpha.WriteMask << 14); + code->inst[ip].inst0 |= (inst->RGB.WriteMask << 11); + code->inst[ip].inst0 |= inst->Alpha.WriteMask ? 1 << 14 : 0; code->inst[ip].inst0 |= (inst->RGB.OutputWriteMask << 15) | (inst->Alpha.OutputWriteMask << 18); if (inst->Nop) { code->inst[ip].inst0 |= R500_INST_NOP; diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_code.h b/src/mesa/drivers/dri/r300/compiler/radeon_code.h index 35360aa70f0..67e6acf8b10 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_code.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_code.h @@ -132,10 +132,10 @@ typedef enum { struct r300_fragment_program_external_state { struct { /** - * If the sampler is used as a shadow sampler, - * this field contains swizzle depending on the depth texture mode. + * This field contains swizzle for some lowering passes + * (shadow comparison, unorm->snorm conversion) */ - unsigned depth_texture_swizzle:12; + unsigned texture_swizzle:12; /** * If the sampler is used as a shadow sampler, @@ -172,6 +172,12 @@ struct r300_fragment_program_external_state { * and right before texture fetch. The scaling factor is given by * RC_STATE_R300_TEXSCALE_FACTOR. */ unsigned clamp_and_scale_before_fetch : 1; + + /** + * Fetch RGTC1_SNORM or LATC1_SNORM as UNORM and convert UNORM -> SNORM + * in the shader. + */ + unsigned convert_unorm_to_snorm:1; } unit[16]; unsigned frag_clamp:1; diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_compiler.c b/src/mesa/drivers/dri/r300/compiler/radeon_compiler.c index 79cd7996f78..b7936725d85 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_compiler.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_compiler.c @@ -483,7 +483,7 @@ void rc_validate_final_shader(struct radeon_compiler *c, void *user) { /* Check the number of constants. */ if (c->Program.Constants.Count > c->max_constants) { - rc_error(c, "Too many constants. Max: 256, Got: %i\n", - c->Program.Constants.Count); + rc_error(c, "Too many constants. Max: %i, Got: %i\n", + c->max_constants, c->Program.Constants.Count); } } diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c index c080d5aecc6..d1a7eab50f7 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c @@ -704,9 +704,16 @@ static void get_readers_for_single_write( &d->BranchMasks[branch_depth]; if (masks->HasElse) { + /* Abort on read for components that + * were written in the IF block. */ d->ReaderData->AbortOnRead |= masks->IfWriteMask & ~masks->ElseWriteMask; + /* Abort on read for components that + * were written in the ELSE block. */ + d->ReaderData->AbortOnRead |= + masks->ElseWriteMask + & ~d->AliveWriteMask; d->AliveWriteMask = masks->IfWriteMask ^ ((masks->IfWriteMask ^ masks->ElseWriteMask) diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c b/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c index 25afd272bee..e3e498e8fb4 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c @@ -81,6 +81,13 @@ struct rc_opcode_info rc_opcodes[MAX_RC_OPCODE] = { .IsComponentwise = 1 }, { + .Opcode = RC_OPCODE_CND, + .Name = "CND", + .NumSrcRegs = 3, + .HasDstReg = 1, + .IsComponentwise = 1 + }, + { .Opcode = RC_OPCODE_COS, .Name = "COS", .NumSrcRegs = 1, diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.h b/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.h index 7e666101276..b5868820611 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.h @@ -56,6 +56,9 @@ typedef enum { /** vec4 instruction: dst.c = src0.c < 0.0 ? src1.c : src2.c */ RC_OPCODE_CMP, + /** vec4 instruction: dst.c = src2.c > 0.5 ? src0.c : src1.c */ + RC_OPCODE_CND, + /** scalar instruction: dst = cos(src0.x) */ RC_OPCODE_COS, diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c b/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c index c4e6a5e0a1f..79898e1047e 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c @@ -509,10 +509,34 @@ static int is_presub_candidate( { const struct rc_opcode_info * info = rc_get_opcode_info(inst->U.I.Opcode); unsigned int i; + unsigned int is_constant[2] = {0, 0}; + + assert(inst->U.I.Opcode == RC_OPCODE_ADD); if (inst->U.I.PreSub.Opcode != RC_PRESUB_NONE || inst->U.I.SaturateMode) return 0; + /* If both sources use a constant swizzle, then we can't convert it to + * a presubtract operation. In fact for the ADD and SUB presubtract + * operations neither source can contain a constant swizzle. This + * specific case is checked in peephole_add_presub_add() when + * we make sure the swizzles for both sources are equal, so we + * don't need to worry about it here. */ + for (i = 0; i < 2; i++) { + int chan; + for (chan = 0; chan < 4; chan++) { + rc_swizzle swz = + get_swz(inst->U.I.SrcReg[i].Swizzle, chan); + if (swz == RC_SWIZZLE_ONE + || swz == RC_SWIZZLE_ZERO + || swz == RC_SWIZZLE_HALF) { + is_constant[i] = 1; + } + } + } + if (is_constant[0] && is_constant[1]) + return 0; + for(i = 0; i < info->NumSrcRegs; i++) { struct rc_src_register src = inst->U.I.SrcReg[i]; if (src_reads_dst_mask(src, inst->U.I.DstReg)) diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c b/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c index 9e03eb1aca8..2dae56a2428 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c @@ -99,6 +99,7 @@ static void classify_instruction(struct rc_sub_instruction * inst, switch(inst->Opcode) { case RC_OPCODE_ADD: case RC_OPCODE_CMP: + case RC_OPCODE_CND: case RC_OPCODE_DDX: case RC_OPCODE_DDY: case RC_OPCODE_FRC: @@ -289,7 +290,7 @@ static void set_pair_instruction(struct r300_fragment_program_compiler *c, } if (needalpha) { - pair->Alpha.WriteMask |= GET_BIT(inst->DstReg.WriteMask, 3); + pair->Alpha.WriteMask |= (GET_BIT(inst->DstReg.WriteMask, 3) << 3); if (pair->Alpha.WriteMask) { pair->Alpha.DestIndex = inst->DstReg.Index; } diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h index 6708b16d29a..d1a435fc530 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h @@ -71,7 +71,7 @@ struct rc_pair_instruction_arg { struct rc_pair_sub_instruction { unsigned int Opcode:8; unsigned int DestIndex:RC_REGISTER_INDEX_BITS; - unsigned int WriteMask:3; + unsigned int WriteMask:4; unsigned int Target:2; unsigned int OutputWriteMask:3; unsigned int DepthWriteMask:1; diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c b/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c index 1cf77d9cf73..cef448ee4e1 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c @@ -32,8 +32,8 @@ /* Series of transformations to be done on textures. */ -static struct rc_src_register shadow_ambient(struct r300_fragment_program_compiler *compiler, - int tmu) +static struct rc_src_register shadow_fail_value(struct r300_fragment_program_compiler *compiler, + int tmu) { struct rc_src_register reg = { 0, }; @@ -46,6 +46,20 @@ static struct rc_src_register shadow_ambient(struct r300_fragment_program_compil reg.File = RC_FILE_NONE; reg.Swizzle = RC_SWIZZLE_0000; } + + reg.Swizzle = combine_swizzles(reg.Swizzle, + compiler->state.unit[tmu].texture_swizzle); + return reg; +} + +static struct rc_src_register shadow_pass_value(struct r300_fragment_program_compiler *compiler, + int tmu) +{ + struct rc_src_register reg = { 0, }; + + reg.File = RC_FILE_NONE; + reg.Swizzle = combine_swizzles(RC_SWIZZLE_1111, + compiler->state.unit[tmu].texture_swizzle); return reg; } @@ -141,10 +155,9 @@ int radeonTransformTEX( inst->U.I.Opcode = RC_OPCODE_MOV; if (comparefunc == RC_COMPARE_FUNC_ALWAYS) { - inst->U.I.SrcReg[0].File = RC_FILE_NONE; - inst->U.I.SrcReg[0].Swizzle = RC_SWIZZLE_1111; + inst->U.I.SrcReg[0] = shadow_pass_value(compiler, inst->U.I.TexSrcUnit); } else { - inst->U.I.SrcReg[0] = shadow_ambient(compiler, inst->U.I.TexSrcUnit); + inst->U.I.SrcReg[0] = shadow_fail_value(compiler, inst->U.I.TexSrcUnit); } return 1; @@ -157,9 +170,11 @@ int radeonTransformTEX( /* Save the output register. */ struct rc_dst_register output_reg = inst->U.I.DstReg; + unsigned saturate_mode = inst->U.I.SaturateMode; /* Redirect TEX to a new temp. */ tmp_texsample = rc_find_free_temporary(c); + inst->U.I.SaturateMode = 0; inst->U.I.DstReg.File = RC_FILE_TEMPORARY; inst->U.I.DstReg.Index = tmp_texsample; inst->U.I.DstReg.WriteMask = RC_MASK_XYZW; @@ -235,15 +250,15 @@ int radeonTransformTEX( inst_cmp = rc_insert_new_instruction(c, inst_add); inst_cmp->U.I.Opcode = RC_OPCODE_CMP; + inst_cmp->U.I.SaturateMode = saturate_mode; inst_cmp->U.I.DstReg = output_reg; inst_cmp->U.I.SrcReg[0].File = RC_FILE_TEMPORARY; inst_cmp->U.I.SrcReg[0].Index = tmp_sum; inst_cmp->U.I.SrcReg[0].Swizzle = combine_swizzles(RC_SWIZZLE_WWWW, - compiler->state.unit[inst->U.I.TexSrcUnit].depth_texture_swizzle); - inst_cmp->U.I.SrcReg[pass].File = RC_FILE_NONE; - inst_cmp->U.I.SrcReg[pass].Swizzle = RC_SWIZZLE_1111; - inst_cmp->U.I.SrcReg[fail] = shadow_ambient(compiler, inst->U.I.TexSrcUnit); + compiler->state.unit[inst->U.I.TexSrcUnit].texture_swizzle); + inst_cmp->U.I.SrcReg[pass] = shadow_pass_value(compiler, inst->U.I.TexSrcUnit); + inst_cmp->U.I.SrcReg[fail] = shadow_fail_value(compiler, inst->U.I.TexSrcUnit); assert(tmp_texsample != tmp_sum); } @@ -396,6 +411,7 @@ int radeonTransformTEX( inst->U.I.SrcReg[0].Index = temp; } + /* NPOT -> POT conversion for 3D textures. */ if (inst->U.I.Opcode != RC_OPCODE_KIL && compiler->state.unit[inst->U.I.TexSrcUnit].clamp_and_scale_before_fetch) { struct rc_instruction *inst_mov; @@ -425,6 +441,53 @@ int radeonTransformTEX( scale_texcoords(compiler, inst, RC_STATE_R300_TEXSCALE_FACTOR); } + /* Convert SNORM-encoded ATI1N sampled as UNORM to SNORM. + * Formula: dst = tex > 0.5 ? tex*2-2 : tex*2 + */ + if (inst->U.I.Opcode != RC_OPCODE_KIL && + compiler->state.unit[inst->U.I.TexSrcUnit].convert_unorm_to_snorm) { + unsigned two, two_swizzle; + struct rc_instruction *inst_mul, *inst_mad, *inst_cnd; + + two = rc_constants_add_immediate_scalar(&c->Program.Constants, 2.35, &two_swizzle); + + inst_mul = rc_insert_new_instruction(c, inst); + inst_mul->U.I.Opcode = RC_OPCODE_MUL; + inst_mul->U.I.DstReg.File = RC_FILE_TEMPORARY; + inst_mul->U.I.DstReg.Index = rc_find_free_temporary(c); + inst_mul->U.I.SrcReg[0].File = RC_FILE_TEMPORARY; + inst_mul->U.I.SrcReg[0].Index = rc_find_free_temporary(c); /* redirected TEX output */ + inst_mul->U.I.SrcReg[1].File = RC_FILE_CONSTANT; /* 2 */ + inst_mul->U.I.SrcReg[1].Index = two; + inst_mul->U.I.SrcReg[1].Swizzle = two_swizzle; + + inst_mad = rc_insert_new_instruction(c, inst_mul); + inst_mad->U.I.Opcode = RC_OPCODE_MAD; + inst_mad->U.I.DstReg.File = RC_FILE_TEMPORARY; + inst_mad->U.I.DstReg.Index = rc_find_free_temporary(c); + inst_mad->U.I.SrcReg[0] = inst_mul->U.I.SrcReg[0]; /* redirected TEX output */ + inst_mad->U.I.SrcReg[1] = inst_mul->U.I.SrcReg[1]; /* 2 */ + inst_mad->U.I.SrcReg[2] = inst_mul->U.I.SrcReg[1]; /* 2 */ + inst_mad->U.I.SrcReg[2].Negate = RC_MASK_XYZW; + + inst_cnd = rc_insert_new_instruction(c, inst_mad); + inst_cnd->U.I.Opcode = RC_OPCODE_CND; + inst_cnd->U.I.SaturateMode = inst->U.I.SaturateMode; + inst_cnd->U.I.DstReg = inst->U.I.DstReg; + inst_cnd->U.I.SrcReg[0].File = RC_FILE_TEMPORARY; + inst_cnd->U.I.SrcReg[0].Index = inst_mad->U.I.DstReg.Index; + inst_cnd->U.I.SrcReg[0].Swizzle = compiler->state.unit[inst->U.I.TexSrcUnit].texture_swizzle; + inst_cnd->U.I.SrcReg[1].File = RC_FILE_TEMPORARY; + inst_cnd->U.I.SrcReg[1].Index = inst_mul->U.I.DstReg.Index; + inst_cnd->U.I.SrcReg[1].Swizzle = compiler->state.unit[inst->U.I.TexSrcUnit].texture_swizzle; + inst_cnd->U.I.SrcReg[2] = inst_mul->U.I.SrcReg[0]; /* redirected TEX output */ + + inst->U.I.SaturateMode = 0; + inst->U.I.DstReg.File = RC_FILE_TEMPORARY; + inst->U.I.DstReg.Index = inst_mul->U.I.SrcReg[0].Index; + inst->U.I.DstReg.WriteMask = RC_MASK_XYZW; + } + /* Cannot write texture to output registers or with saturate (all chips), * or with masks (non-r500). */ if (inst->U.I.Opcode != RC_OPCODE_KIL && diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index 0d8bd4fc706..213d3c060a6 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -133,7 +133,6 @@ static const struct dri_extension card_extensions[] = { {"GL_ATI_texture_mirror_once", NULL}, {"GL_MESA_pack_invert", NULL}, {"GL_MESA_ycbcr_texture", NULL}, - {"GL_MESAX_texture_float", NULL}, {"GL_NV_blend_square", NULL}, {"GL_NV_vertex_program", GL_NV_vertex_program_functions}, #if FEATURE_OES_EGL_image diff --git a/src/mesa/drivers/dri/r300/r300_fragprog_common.c b/src/mesa/drivers/dri/r300/r300_fragprog_common.c index a0a26f1b38d..f0d960dca54 100644 --- a/src/mesa/drivers/dri/r300/r300_fragprog_common.c +++ b/src/mesa/drivers/dri/r300/r300_fragprog_common.c @@ -77,8 +77,8 @@ static void build_state( if (fp->Base.ShadowSamplers & (1 << unit)) { struct gl_texture_object* tex = r300->radeon.glCtx->Texture.Unit[unit]._Current; - state->unit[unit].depth_texture_swizzle = build_dts(tex->DepthMode); - state->unit[unit].texture_compare_func = build_func(tex->CompareFunc); + state->unit[unit].texture_swizzle = build_dts(tex->Sampler.DepthMode); + state->unit[unit].texture_compare_func = build_func(tex->Sampler.CompareFunc); } } } diff --git a/src/mesa/drivers/dri/r300/r300_reg.h b/src/mesa/drivers/dri/r300/r300_reg.h index 2b9d85fae8b..8980bd3dde1 100644 --- a/src/mesa/drivers/dri/r300/r300_reg.h +++ b/src/mesa/drivers/dri/r300/r300_reg.h @@ -1906,7 +1906,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. # define R300_ALU_OUTC_D2A (3 << 23) # define R300_ALU_OUTC_MIN (4 << 23) # define R300_ALU_OUTC_MAX (5 << 23) -# define R300_ALU_OUTC_CMPH (7 << 23) +# define R300_ALU_OUTC_CND (7 << 23) # define R300_ALU_OUTC_CMP (8 << 23) # define R300_ALU_OUTC_FRC (9 << 23) # define R300_ALU_OUTC_REPL_ALPHA (10 << 23) diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index 51989c6b224..da6c8b602e1 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -1343,7 +1343,7 @@ static void r300SetupTextures(struct gl_context * ctx) */ r300->hw.tex.filter_1.cmd[R300_TEX_VALUE_0 + hw_tmu] = t->pp_txfilter_1 | - translate_lod_bias(ctx->Texture.Unit[i].LodBias + t->base.LodBias); + translate_lod_bias(ctx->Texture.Unit[i].LodBias + t->base.Sampler.LodBias); r300->hw.tex.size.cmd[R300_TEX_VALUE_0 + hw_tmu] = t->pp_txsize; r300->hw.tex.format.cmd[R300_TEX_VALUE_0 + @@ -2014,7 +2014,7 @@ static const GLfloat *get_fragmentprogram_constant(struct gl_context *ctx, GLuin buffer[0] = buffer[1] = buffer[2] = - buffer[3] = texObj->CompareFailValue; + buffer[3] = texObj->Sampler.CompareFailValue; } return buffer; } diff --git a/src/mesa/drivers/dri/r300/r300_tex.c b/src/mesa/drivers/dri/r300/r300_tex.c index f930b4d06bf..590d9afe14a 100644 --- a/src/mesa/drivers/dri/r300/r300_tex.c +++ b/src/mesa/drivers/dri/r300/r300_tex.c @@ -81,13 +81,13 @@ static void r300UpdateTexWrap(radeonTexObjPtr t) t->pp_txfilter &= ~(R300_TX_WRAP_S_MASK | R300_TX_WRAP_T_MASK | R300_TX_WRAP_R_MASK); - t->pp_txfilter |= translate_wrap_mode(tObj->WrapS) << R300_TX_WRAP_S_SHIFT; + t->pp_txfilter |= translate_wrap_mode(tObj->Sampler.WrapS) << R300_TX_WRAP_S_SHIFT; if (tObj->Target != GL_TEXTURE_1D) { - t->pp_txfilter |= translate_wrap_mode(tObj->WrapT) << R300_TX_WRAP_T_SHIFT; + t->pp_txfilter |= translate_wrap_mode(tObj->Sampler.WrapT) << R300_TX_WRAP_T_SHIFT; if (tObj->Target == GL_TEXTURE_3D) - t->pp_txfilter |= translate_wrap_mode(tObj->WrapR) << R300_TX_WRAP_R_SHIFT; + t->pp_txfilter |= translate_wrap_mode(tObj->Sampler.WrapR) << R300_TX_WRAP_R_SHIFT; } } @@ -202,7 +202,7 @@ static void r300TexParameter(struct gl_context * ctx, GLenum target, case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MAG_FILTER: case GL_TEXTURE_MAX_ANISOTROPY_EXT: - r300SetTexFilter(t, texObj->MinFilter, texObj->MagFilter, texObj->MaxAnisotropy); + r300SetTexFilter(t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter, texObj->Sampler.MaxAnisotropy); break; case GL_TEXTURE_WRAP_S: @@ -212,7 +212,7 @@ static void r300TexParameter(struct gl_context * ctx, GLenum target, break; case GL_TEXTURE_BORDER_COLOR: - r300SetTexBorderColor(t, texObj->BorderColor.f); + r300SetTexBorderColor(t, texObj->Sampler.BorderColor.f); break; case GL_TEXTURE_BASE_LEVEL: @@ -299,12 +299,14 @@ static struct gl_texture_object *r300NewTextureObject(struct gl_context * ctx, } _mesa_initialize_texture_object(&t->base, name, target); - t->base.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy; + t->base.Sampler.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy; /* Initialize hardware state */ r300UpdateTexWrap(t); - r300SetTexFilter(t, t->base.MinFilter, t->base.MagFilter, t->base.MaxAnisotropy); - r300SetTexBorderColor(t, t->base.BorderColor.f); + r300SetTexFilter(t, t->base.Sampler.MinFilter, + t->base.Sampler.MagFilter, + t->base.Sampler.MaxAnisotropy); + r300SetTexBorderColor(t, t->base.Sampler.BorderColor.f); return &t->base; } diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c index ed9955b05d8..e24ad6f088d 100644 --- a/src/mesa/drivers/dri/r300/r300_texstate.c +++ b/src/mesa/drivers/dri/r300/r300_texstate.c @@ -216,7 +216,7 @@ void r300SetDepthTexMode(struct gl_texture_object *tObj) return; } - switch (tObj->DepthMode) { + switch (tObj->Sampler.DepthMode) { case GL_LUMINANCE: t->pp_txformat = format[0]; break; diff --git a/src/mesa/drivers/dri/r600/defaultendian.h b/src/mesa/drivers/dri/r600/defaultendian.h index 32caf32cd2e..75bd61c3cd4 100644 --- a/src/mesa/drivers/dri/r600/defaultendian.h +++ b/src/mesa/drivers/dri/r600/defaultendian.h @@ -29,8 +29,8 @@ #define _DEFINEENDIAN_H_ //We have to choose a reg bits orientation if there is no compile flag for it. -#if defined(LITTLEENDIAN_CPU) -#elif defined(BIGENDIAN_CPU) +#ifdef MESA_BIG_ENDIAN +#define BIGENDIAN_CPU #else #define LITTLEENDIAN_CPU #endif diff --git a/src/mesa/drivers/dri/r600/evergreen_blit.c b/src/mesa/drivers/dri/r600/evergreen_blit.c index e07da8c15b4..0e4da5499ba 100644 --- a/src/mesa/drivers/dri/r600/evergreen_blit.c +++ b/src/mesa/drivers/dri/r600/evergreen_blit.c @@ -98,10 +98,11 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo uint32_t cb_color0_base, cb_color0_info = 0; uint32_t cb_color0_pitch = 0, cb_color0_slice = 0, cb_color0_attrib = 0; int id = 0; - uint32_t comp_swap, format, source_format, number_type; + uint32_t endian, comp_swap, format, source_format, number_type; BATCH_LOCALS(&context->radeon); cb_color0_base = dst_offset / 256; + endian = ENDIAN_NONE; /* pitch */ SETfield(cb_color0_pitch, (nPitchInPixel / 8) - 1, @@ -119,10 +120,6 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo EG_CB_COLOR0_ATTRIB__NON_DISP_TILING_ORDER_bit); SETfield(cb_color0_info, - ENDIAN_NONE, - EG_CB_COLOR0_INFO__ENDIAN_shift, - EG_CB_COLOR0_INFO__ENDIAN_mask); - SETfield(cb_color0_info, ARRAY_LINEAR_GENERAL, EG_CB_COLOR0_INFO__ARRAY_MODE_shift, EG_CB_COLOR0_INFO__ARRAY_MODE_mask); @@ -131,24 +128,36 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo switch(mesa_format) { case MESA_FORMAT_RGBA8888: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_STD_REV; number_type = NUMBER_UNORM; source_format = 1; break; case MESA_FORMAT_SIGNED_RGBA8888: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_STD_REV; number_type = NUMBER_SNORM; source_format = 1; break; case MESA_FORMAT_RGBA8888_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_STD; number_type = NUMBER_UNORM; source_format = 1; break; case MESA_FORMAT_SIGNED_RGBA8888_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_STD; number_type = NUMBER_SNORM; @@ -156,6 +165,9 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo break; case MESA_FORMAT_ARGB8888: case MESA_FORMAT_XRGB8888: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_ALT; number_type = NUMBER_UNORM; @@ -163,54 +175,81 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo break; case MESA_FORMAT_ARGB8888_REV: case MESA_FORMAT_XRGB8888_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_ALT_REV; number_type = NUMBER_UNORM; source_format = 1; break; case MESA_FORMAT_RGB565: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_5_6_5; comp_swap = SWAP_STD_REV; number_type = NUMBER_UNORM; source_format = 1; break; case MESA_FORMAT_RGB565_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_5_6_5; comp_swap = SWAP_STD; number_type = NUMBER_UNORM; source_format = 1; break; case MESA_FORMAT_ARGB4444: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_4_4_4_4; comp_swap = SWAP_ALT; number_type = NUMBER_UNORM; source_format = 1; break; case MESA_FORMAT_ARGB4444_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_4_4_4_4; comp_swap = SWAP_ALT_REV; number_type = NUMBER_UNORM; source_format = 1; break; case MESA_FORMAT_ARGB1555: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_1_5_5_5; comp_swap = SWAP_ALT; number_type = NUMBER_UNORM; source_format = 1; break; case MESA_FORMAT_ARGB1555_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_1_5_5_5; comp_swap = SWAP_ALT_REV; number_type = NUMBER_UNORM; source_format = 1; break; case MESA_FORMAT_AL88: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_8_8; comp_swap = SWAP_STD; number_type = NUMBER_UNORM; source_format = 1; break; case MESA_FORMAT_AL88_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_8_8; comp_swap = SWAP_STD_REV; number_type = NUMBER_UNORM; @@ -242,60 +281,90 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo source_format = 1; break; case MESA_FORMAT_RGBA_FLOAT32: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32_32_32_32_FLOAT; comp_swap = SWAP_STD; number_type = NUMBER_FLOAT; source_format = 0; break; case MESA_FORMAT_RGBA_FLOAT16: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16_16_16_16_FLOAT; comp_swap = SWAP_STD; number_type = NUMBER_FLOAT; source_format = 0; break; case MESA_FORMAT_ALPHA_FLOAT32: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32_FLOAT; comp_swap = SWAP_ALT_REV; number_type = NUMBER_FLOAT; source_format = 0; break; case MESA_FORMAT_ALPHA_FLOAT16: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16_FLOAT; comp_swap = SWAP_ALT_REV; number_type = NUMBER_FLOAT; source_format = 0; break; case MESA_FORMAT_LUMINANCE_FLOAT32: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32_FLOAT; comp_swap = SWAP_ALT; number_type = NUMBER_FLOAT; source_format = 0; break; case MESA_FORMAT_LUMINANCE_FLOAT16: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16_FLOAT; comp_swap = SWAP_ALT; number_type = NUMBER_FLOAT; source_format = 0; break; case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32_32_FLOAT; comp_swap = SWAP_ALT_REV; number_type = NUMBER_FLOAT; source_format = 0; break; case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16_16_FLOAT; comp_swap = SWAP_ALT_REV; number_type = NUMBER_FLOAT; source_format = 0; break; case MESA_FORMAT_INTENSITY_FLOAT32: /* X, X, X, X */ +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32_FLOAT; comp_swap = SWAP_STD; number_type = NUMBER_FLOAT; source_format = 0; break; case MESA_FORMAT_INTENSITY_FLOAT16: /* X, X, X, X */ +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16_FLOAT; comp_swap = SWAP_STD; number_type = NUMBER_UNORM; @@ -303,6 +372,9 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo break; case MESA_FORMAT_X8_Z24: case MESA_FORMAT_S8_Z24: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_24; comp_swap = SWAP_STD; number_type = NUMBER_UNORM; @@ -313,6 +385,9 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo source_format = 0; break; case MESA_FORMAT_Z24_S8: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_24_8; comp_swap = SWAP_STD; number_type = NUMBER_UNORM; @@ -323,6 +398,9 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo source_format = 0; break; case MESA_FORMAT_Z16: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16; comp_swap = SWAP_STD; number_type = NUMBER_UNORM; @@ -333,6 +411,9 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo source_format = 0; break; case MESA_FORMAT_Z32: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32; comp_swap = SWAP_STD; number_type = NUMBER_UNORM; @@ -343,12 +424,18 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo source_format = 0; break; case MESA_FORMAT_SARGB8: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_ALT; number_type = NUMBER_SRGB; source_format = 1; break; case MESA_FORMAT_SLA8: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_8_8; comp_swap = SWAP_ALT_REV; number_type = NUMBER_SRGB; @@ -367,6 +454,10 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo } SETfield(cb_color0_info, + endian, + EG_CB_COLOR0_INFO__ENDIAN_shift, + EG_CB_COLOR0_INFO__ENDIAN_mask); + SETfield(cb_color0_info, format, EG_CB_COLOR0_INFO__FORMAT_shift, EG_CB_COLOR0_INFO__FORMAT_mask); @@ -441,10 +532,10 @@ static inline void eg_load_shaders(struct gl_context * ctx) shader = context->blit_bo->ptr; for(i=0; i<sizeof(evergreen_vs)/4; i++) { - shader[128+i] = evergreen_vs[i]; + shader[128+i] = CPU_TO_LE32(evergreen_vs[i]); } for(i=0; i<sizeof(evergreen_ps)/4; i++) { - shader[256+i] = evergreen_ps[i]; + shader[256+i] = CPU_TO_LE32(evergreen_ps[i]); } radeon_bo_unmap(context->blit_bo); @@ -525,6 +616,7 @@ eg_set_vtx_resource(context_t *context) { struct radeon_bo *bo = context->blit_bo; uint32_t sq_vtx_constant_word3 = 0; + uint32_t sq_vtx_constant_word2 = 0; BATCH_LOCALS(&context->radeon); BEGIN_BATCH_NO_AUTOSTATE(6); @@ -555,13 +647,19 @@ eg_set_vtx_resource(context_t *context) EG_SQ_VTX_CONSTANT_WORD3_0__DST_SEL_W_shift, EG_SQ_VTX_CONSTANT_WORD3_0__DST_SEL_W_mask); + sq_vtx_constant_word2 = 0 +#ifdef MESA_BIG_ENDIAN + | (SQ_ENDIAN_8IN32 << SQ_VTX_CONSTANT_WORD2_0__ENDIAN_SWAP_shift) +#endif + | (16 << SQ_VTX_CONSTANT_WORD2_0__STRIDE_shift); + BEGIN_BATCH_NO_AUTOSTATE(10 + 2); R600_OUT_BATCH(CP_PACKET3(R600_IT_SET_RESOURCE, 8)); R600_OUT_BATCH(EG_SQ_FETCH_RESOURCE_VS_OFFSET * EG_FETCH_RESOURCE_STRIDE); R600_OUT_BATCH(0); R600_OUT_BATCH(48 - 1); - R600_OUT_BATCH(16 << SQ_VTX_CONSTANT_WORD2_0__STRIDE_shift); + R600_OUT_BATCH(sq_vtx_constant_word2); R600_OUT_BATCH(sq_vtx_constant_word3); R600_OUT_BATCH(0); R600_OUT_BATCH(0); diff --git a/src/mesa/drivers/dri/r600/evergreen_blit_shaders.h b/src/mesa/drivers/dri/r600/evergreen_blit_shaders.h index eb025280739..84f20f8cafb 100644 --- a/src/mesa/drivers/dri/r600/evergreen_blit_shaders.h +++ b/src/mesa/drivers/dri/r600/evergreen_blit_shaders.h @@ -37,11 +37,19 @@ const uint32_t evergreen_vs[] = 0x00000000, 0x3c000000, 0x67961001, +#ifdef MESA_BIG_ENDIAN + 0x000a0000, +#else 0x00080000, +#endif 0x00000000, 0x1c000000, 0x67961000, +#ifdef MESA_BIG_ENDIAN + 0x00020008, +#else 0x00000008, +#endif 0x00000000, }; diff --git a/src/mesa/drivers/dri/r600/evergreen_chip.c b/src/mesa/drivers/dri/r600/evergreen_chip.c index 53dacbfdf39..42566e537a5 100644 --- a/src/mesa/drivers/dri/r600/evergreen_chip.c +++ b/src/mesa/drivers/dri/r600/evergreen_chip.c @@ -124,7 +124,7 @@ static void evergreenSendTexState(struct gl_context *ctx, struct radeon_state_at context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); - struct evergreen_vertex_program *vp = context->selected_vp; + struct evergreen_vertex_program *vp = (struct evergreen_vertex_program *) context->selected_vp; struct radeon_bo *bo = NULL; unsigned int i; @@ -307,6 +307,16 @@ static void evergreenSetupVTXConstants(struct gl_context * ctx, SQ_VTX_CONSTANT_WORD2_0__DATA_FORMAT_shift, SQ_VTX_CONSTANT_WORD2_0__DATA_FORMAT_mask); // TODO : trace back api for initial data type, not only GL_FLOAT SETfield(uSQ_VTX_CONSTANT_WORD2_0, 0, BASE_ADDRESS_HI_shift, BASE_ADDRESS_HI_mask); // TODO + + SETfield(uSQ_VTX_CONSTANT_WORD2_0, +#ifdef MESA_BIG_ENDIAN + SQ_ENDIAN_8IN32, +#else + SQ_ENDIAN_NONE, +#endif + SQ_VTX_CONSTANT_WORD2_0__ENDIAN_SWAP_shift, + SQ_VTX_CONSTANT_WORD2_0__ENDIAN_SWAP_mask); + if(GL_TRUE == pStreamDesc->normalize) { SETfield(uSQ_VTX_CONSTANT_WORD2_0, SQ_NUM_FORMAT_NORM, @@ -379,6 +389,8 @@ static void evergreenSendVTX(struct gl_context *ctx, struct radeon_state_atom *a struct evergreen_vertex_program *vp = (struct evergreen_vertex_program *)(context->selected_vp); unsigned int i, j = 0; BATCH_LOCALS(&context->radeon); + (void) b_l_rmesa; /* silence unused var warning */ + radeon_print(RADEON_STATE, RADEON_VERBOSE, "%s\n", __func__); if (context->radeon.tcl.aos_count == 0) diff --git a/src/mesa/drivers/dri/r600/evergreen_oglprog.c b/src/mesa/drivers/dri/r600/evergreen_oglprog.c index a2a361f32e6..1fd655e85f8 100644 --- a/src/mesa/drivers/dri/r600/evergreen_oglprog.c +++ b/src/mesa/drivers/dri/r600/evergreen_oglprog.c @@ -42,7 +42,7 @@ static void evergreen_freeVertProgCache(struct gl_context *ctx, struct r700_vertex_program_cont *cache) { - struct evergreen_vertex_program *tmp, *vp = cache->progs; + struct evergreen_vertex_program *tmp, *vp = (struct evergreen_vertex_program *) cache->progs; while (vp) { tmp = vp->next; @@ -121,7 +121,7 @@ static void evergreenDeleteProgram(struct gl_context * ctx, struct gl_program *p { case GL_VERTEX_STATE_PROGRAM_NV: case GL_VERTEX_PROGRAM_ARB: - evergreen_freeVertProgCache(ctx, vpc); + evergreen_freeVertProgCache(ctx, (struct r700_vertex_program_cont *) vpc); break; case GL_FRAGMENT_PROGRAM_NV: case GL_FRAGMENT_PROGRAM_ARB: @@ -154,7 +154,7 @@ evergreenProgramStringNotify(struct gl_context * ctx, GLenum target, struct gl_p switch (target) { case GL_VERTEX_PROGRAM_ARB: - evergreen_freeVertProgCache(ctx, vpc); + evergreen_freeVertProgCache(ctx, (struct r700_vertex_program_cont *) vpc); vpc->progs = NULL; break; case GL_FRAGMENT_PROGRAM_ARB: diff --git a/src/mesa/drivers/dri/r600/evergreen_render.c b/src/mesa/drivers/dri/r600/evergreen_render.c index 6e51832c878..4507be29d86 100644 --- a/src/mesa/drivers/dri/r600/evergreen_render.c +++ b/src/mesa/drivers/dri/r600/evergreen_render.c @@ -180,6 +180,15 @@ static void evergreenRunRenderPrimitive(struct gl_context * ctx, int start, int SETfield(vgt_index_type, DI_INDEX_SIZE_16_BIT, INDEX_TYPE_shift, INDEX_TYPE_mask); } + /* 16-bit indexes are packed in a 32-bit value */ + SETfield(vgt_index_type, +#if MESA_BIG_ENDIAN + VGT_DMA_SWAP_32_BIT, +#else + VGT_DMA_SWAP_NONE, +#endif + SWAP_MODE_shift, SWAP_MODE_mask); + vgt_num_indices = num_indices; SETfield(vgt_draw_initiator, DI_SRC_SEL_DMA, SOURCE_SELECT_shift, SOURCE_SELECT_mask); SETfield(vgt_draw_initiator, DI_MAJOR_MODE_0, MAJOR_MODE_shift, MAJOR_MODE_mask); @@ -252,6 +261,15 @@ static void evergreenRunRenderPrimitiveImmediate(struct gl_context * ctx, int st SETfield(vgt_index_type, DI_INDEX_SIZE_16_BIT, INDEX_TYPE_shift, INDEX_TYPE_mask); } + /* 16-bit indexes are packed in a 32-bit value */ + SETfield(vgt_index_type, +#if MESA_BIG_ENDIAN + VGT_DMA_SWAP_32_BIT, +#else + VGT_DMA_SWAP_NONE, +#endif + SWAP_MODE_shift, SWAP_MODE_mask); + vgt_num_indices = num_indices; SETfield(vgt_draw_initiator, DI_MAJOR_MODE_0, MAJOR_MODE_shift, MAJOR_MODE_mask); @@ -620,6 +638,7 @@ static void evergreenSetupIndexBuffer(struct gl_context *ctx, const struct _mesa } } +#if 0 /* unused */ static void evergreenAlignDataToDword(struct gl_context *ctx, const struct gl_client_array *input, int count, @@ -661,6 +680,7 @@ static void evergreenAlignDataToDword(struct gl_context *ctx, attr->stride = dst_stride; } +#endif static void evergreenSetupStreams(struct gl_context *ctx, const struct gl_client_array *input[], int count) { diff --git a/src/mesa/drivers/dri/r600/evergreen_tex.c b/src/mesa/drivers/dri/r600/evergreen_tex.c index 3b5448a0e4e..33a5f277683 100644 --- a/src/mesa/drivers/dri/r600/evergreen_tex.c +++ b/src/mesa/drivers/dri/r600/evergreen_tex.c @@ -97,6 +97,16 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, @@ -105,6 +115,7 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif if (mesa_format == MESA_FORMAT_SIGNED_RGBA8888) { SETfield(t->SQ_TEX_RESOURCE4, SQ_FORMAT_COMP_SIGNED, FORMAT_COMP_X_shift, FORMAT_COMP_X_mask); @@ -122,6 +133,16 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -130,6 +151,7 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif if (mesa_format == MESA_FORMAT_SIGNED_RGBA8888_REV) { SETfield(t->SQ_TEX_RESOURCE4, SQ_FORMAT_COMP_SIGNED, FORMAT_COMP_X_shift, FORMAT_COMP_X_mask); @@ -146,6 +168,16 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -154,12 +186,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_XRGB8888: SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8_8, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -168,26 +211,48 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_XRGB8888_REV: SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8_8, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); - SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_ARGB8888_REV: SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8_8, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, @@ -196,12 +261,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_RGB888: SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -210,12 +286,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_RGB565: SETfield(t->SQ_TEX_RESOURCE7, FMT_5_6_5, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -224,12 +311,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_RGB565_REV: SETfield(t->SQ_TEX_RESOURCE7, FMT_5_6_5, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -238,12 +336,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_ARGB4444: SETfield(t->SQ_TEX_RESOURCE7, FMT_4_4_4_4, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -252,12 +361,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_ARGB4444_REV: SETfield(t->SQ_TEX_RESOURCE7, FMT_4_4_4_4, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, @@ -266,12 +386,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_ARGB1555: SETfield(t->SQ_TEX_RESOURCE7, FMT_1_5_5_5, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -280,12 +411,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_ARGB1555_REV: SETfield(t->SQ_TEX_RESOURCE7, FMT_1_5_5_5, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, @@ -294,6 +436,7 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_AL88: case MESA_FORMAT_AL88_REV: /* TODO : Check this. */ @@ -581,7 +724,7 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format default: break; }; - switch (tObj->DepthMode) { + switch (tObj->Sampler.DepthMode) { case GL_LUMINANCE: /* X, X, X, ONE */ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); @@ -699,18 +842,18 @@ static void evergreenUpdateTexWrap(radeonTexObjPtr t) { struct gl_texture_object *tObj = &t->base; - SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_wrap_mode(tObj->WrapS), + SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_wrap_mode(tObj->Sampler.WrapS), EG_SQ_TEX_SAMPLER_WORD0_0__CLAMP_X_shift, EG_SQ_TEX_SAMPLER_WORD0_0__CLAMP_X_mask); if (tObj->Target != GL_TEXTURE_1D) { - SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_wrap_mode(tObj->WrapT), + SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_wrap_mode(tObj->Sampler.WrapT), EG_SQ_TEX_SAMPLER_WORD0_0__CLAMP_Y_shift, EG_SQ_TEX_SAMPLER_WORD0_0__CLAMP_Y_mask); if (tObj->Target == GL_TEXTURE_3D) - SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_wrap_mode(tObj->WrapR), + SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_wrap_mode(tObj->Sampler.WrapR), EG_SQ_TEX_SAMPLER_WORD0_0__CLAMP_Z_shift, EG_SQ_TEX_SAMPLER_WORD0_0__CLAMP_Z_mask); } @@ -1022,21 +1165,21 @@ static GLboolean evergreen_setup_hardware_state(struct gl_context * ctx, struct SETfield(t->SQ_TEX_RESOURCE5, t->maxLod - t->minLod, LAST_LEVEL_shift, LAST_LEVEL_mask); SETfield(t->SQ_TEX_SAMPLER1, - EG_S_FIXED(CLAMP(t->base.MinLod - t->minLod, 0, 15), 8), + EG_S_FIXED(CLAMP(t->base.Sampler.MinLod - t->minLod, 0, 15), 8), EG_SQ_TEX_SAMPLER_WORD1_0__MIN_LOD_shift, EG_SQ_TEX_SAMPLER_WORD1_0__MIN_LOD_mask); SETfield(t->SQ_TEX_SAMPLER1, - EG_S_FIXED(CLAMP(t->base.MaxLod - t->minLod, 0, 15), 8), + EG_S_FIXED(CLAMP(t->base.Sampler.MaxLod - t->minLod, 0, 15), 8), EG_SQ_TEX_SAMPLER_WORD1_0__MAX_LOD_shift, EG_SQ_TEX_SAMPLER_WORD1_0__MAX_LOD_mask); SETfield(t->SQ_TEX_SAMPLER2, - EG_S_FIXED(CLAMP(ctx->Texture.Unit[unit].LodBias + t->base.LodBias, -16, 16), 8), + EG_S_FIXED(CLAMP(ctx->Texture.Unit[unit].LodBias + t->base.Sampler.LodBias, -16, 16), 8), EG_SQ_TEX_SAMPLER_WORD2_0__LOD_BIAS_shift, EG_SQ_TEX_SAMPLER_WORD2_0__LOD_BIAS_mask); - if(texObj->CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) + if(texObj->Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) { - SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_shadow_func(texObj->CompareFunc), + SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_shadow_func(texObj->Sampler.CompareFunc), EG_SQ_TEX_SAMPLER_WORD0_0__DCF_shift, EG_SQ_TEX_SAMPLER_WORD0_0__DCF_mask); } @@ -1420,12 +1563,12 @@ static struct gl_texture_object *evergreenNewTextureObject(struct gl_context * c t, _mesa_lookup_enum_by_nr(target)); _mesa_initialize_texture_object(&t->base, name, target); - t->base.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy; + t->base.Sampler.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy; evergreenSetTexDefaultState(t); evergreenUpdateTexWrap(t); - evergreenSetTexFilter(t, t->base.MinFilter, t->base.MagFilter, t->base.MaxAnisotropy); - evergreenSetTexBorderColor(t, t->base.BorderColor.f); + evergreenSetTexFilter(t, t->base.Sampler.MinFilter, t->base.Sampler.MagFilter, t->base.Sampler.MaxAnisotropy); + evergreenSetTexBorderColor(t, t->base.Sampler.BorderColor.f); return &t->base; } @@ -1475,7 +1618,7 @@ static void evergreenTexParameter(struct gl_context * ctx, GLenum target, case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MAG_FILTER: case GL_TEXTURE_MAX_ANISOTROPY_EXT: - evergreenSetTexFilter(t, texObj->MinFilter, texObj->MagFilter, texObj->MaxAnisotropy); + evergreenSetTexFilter(t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter, texObj->Sampler.MaxAnisotropy); break; case GL_TEXTURE_WRAP_S: @@ -1485,7 +1628,7 @@ static void evergreenTexParameter(struct gl_context * ctx, GLenum target, break; case GL_TEXTURE_BORDER_COLOR: - evergreenSetTexBorderColor(t, texObj->BorderColor.f); + evergreenSetTexBorderColor(t, texObj->Sampler.BorderColor.f); break; case GL_TEXTURE_BASE_LEVEL: diff --git a/src/mesa/drivers/dri/r600/evergreen_vertprog.c b/src/mesa/drivers/dri/r600/evergreen_vertprog.c index b3371f20b19..018869b9996 100644 --- a/src/mesa/drivers/dri/r600/evergreen_vertprog.c +++ b/src/mesa/drivers/dri/r600/evergreen_vertprog.c @@ -405,7 +405,7 @@ void evergreenSelectVertexShader(struct gl_context *ctx) } if (match) { - context->selected_vp = vp; + context->selected_vp = (struct r700_vertex_program *) vp; return; } } @@ -418,7 +418,7 @@ void evergreenSelectVertexShader(struct gl_context *ctx) } vp->next = vpc->progs; vpc->progs = vp; - context->selected_vp = vp; + context->selected_vp = (struct r700_vertex_program *) vp; return; } @@ -566,7 +566,7 @@ void evergreenSetVertexFormat(struct gl_context *ctx, const struct gl_client_arr void * evergreenGetActiveVpShaderBo(struct gl_context * ctx) { context_t *context = EVERGREEN_CONTEXT(ctx); - struct evergreen_vertex_program *vp = context->selected_vp;; + struct evergreen_vertex_program *vp = (struct evergreen_vertex_program *) context->selected_vp; if (vp) return vp->shaderbo; @@ -577,7 +577,7 @@ void * evergreenGetActiveVpShaderBo(struct gl_context * ctx) void * evergreenGetActiveVpShaderConstBo(struct gl_context * ctx) { context_t *context = EVERGREEN_CONTEXT(ctx); - struct evergreen_vertex_program *vp = context->selected_vp;; + struct evergreen_vertex_program *vp = (struct evergreen_vertex_program *) context->selected_vp; if (vp) return vp->constbo0; @@ -589,7 +589,7 @@ GLboolean evergreenSetupVertexProgram(struct gl_context * ctx) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); - struct evergreen_vertex_program *vp = context->selected_vp; + struct evergreen_vertex_program *vp = (struct evergreen_vertex_program *) context->selected_vp; if(GL_FALSE == vp->loaded) { @@ -650,7 +650,7 @@ GLboolean evergreenSetupVPconstants(struct gl_context * ctx) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); - struct evergreen_vertex_program *vp = context->selected_vp; + struct evergreen_vertex_program *vp = (struct evergreen_vertex_program *) context->selected_vp; struct gl_program_parameter_list *paramList; unsigned int unNumParamData; diff --git a/src/mesa/drivers/dri/r600/r600_blit.c b/src/mesa/drivers/dri/r600/r600_blit.c index 31c32d62f9a..2d47afdcbbf 100644 --- a/src/mesa/drivers/dri/r600/r600_blit.c +++ b/src/mesa/drivers/dri/r600/r600_blit.c @@ -94,17 +94,17 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma { uint32_t cb_color0_base, cb_color0_size = 0, cb_color0_info = 0, cb_color0_view = 0; int id = 0; - uint32_t comp_swap, format; + uint32_t endian, comp_swap, format; BATCH_LOCALS(&context->radeon); cb_color0_base = dst_offset / 256; + endian = ENDIAN_NONE; SETfield(cb_color0_size, (nPitchInPixel / 8) - 1, PITCH_TILE_MAX_shift, PITCH_TILE_MAX_mask); SETfield(cb_color0_size, ((nPitchInPixel * h) / 64) - 1, SLICE_TILE_MAX_shift, SLICE_TILE_MAX_mask); - SETfield(cb_color0_info, ENDIAN_NONE, ENDIAN_shift, ENDIAN_mask); SETfield(cb_color0_info, ARRAY_LINEAR_GENERAL, CB_COLOR0_INFO__ARRAY_MODE_shift, CB_COLOR0_INFO__ARRAY_MODE_mask); @@ -112,24 +112,36 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma switch(mesa_format) { case MESA_FORMAT_RGBA8888: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_STD_REV; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_SIGNED_RGBA8888: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_STD_REV; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_SNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_RGBA8888_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_STD; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_SIGNED_RGBA8888_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_STD; SETbit(cb_color0_info, SOURCE_FORMAT_bit); @@ -137,6 +149,9 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma break; case MESA_FORMAT_ARGB8888: case MESA_FORMAT_XRGB8888: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_ALT; SETbit(cb_color0_info, SOURCE_FORMAT_bit); @@ -144,54 +159,81 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma break; case MESA_FORMAT_ARGB8888_REV: case MESA_FORMAT_XRGB8888_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_ALT_REV; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_RGB565: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif + comp_swap = SWAP_STD_REV; format = COLOR_5_6_5; - comp_swap = SWAP_STD_REV; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_RGB565_REV: - format = COLOR_5_6_5; +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif comp_swap = SWAP_STD; + format = COLOR_5_6_5; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_ARGB4444: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_4_4_4_4; comp_swap = SWAP_ALT; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_ARGB4444_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_4_4_4_4; comp_swap = SWAP_ALT_REV; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_ARGB1555: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_1_5_5_5; comp_swap = SWAP_ALT; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_ARGB1555_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_1_5_5_5; comp_swap = SWAP_ALT_REV; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_AL88: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_8_8; comp_swap = SWAP_STD; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_AL88_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_8_8; comp_swap = SWAP_STD_REV; SETbit(cb_color0_info, SOURCE_FORMAT_bit); @@ -223,6 +265,9 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_RGBA_FLOAT32: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32_32_32_32_FLOAT; comp_swap = SWAP_STD; SETbit(cb_color0_info, BLEND_FLOAT32_bit); @@ -230,12 +275,18 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_RGBA_FLOAT16: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16_16_16_16_FLOAT; comp_swap = SWAP_STD; CLEARbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_ALPHA_FLOAT32: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32_FLOAT; comp_swap = SWAP_ALT_REV; SETbit(cb_color0_info, BLEND_FLOAT32_bit); @@ -243,12 +294,18 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_ALPHA_FLOAT16: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16_FLOAT; comp_swap = SWAP_ALT_REV; CLEARbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_LUMINANCE_FLOAT32: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32_FLOAT; comp_swap = SWAP_ALT; SETbit(cb_color0_info, BLEND_FLOAT32_bit); @@ -256,12 +313,18 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_LUMINANCE_FLOAT16: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16_FLOAT; comp_swap = SWAP_ALT; CLEARbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32_32_FLOAT; comp_swap = SWAP_ALT_REV; SETbit(cb_color0_info, BLEND_FLOAT32_bit); @@ -269,12 +332,18 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16_16_FLOAT; comp_swap = SWAP_ALT_REV; CLEARbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_INTENSITY_FLOAT32: /* X, X, X, X */ +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32_FLOAT; comp_swap = SWAP_STD; SETbit(cb_color0_info, BLEND_FLOAT32_bit); @@ -282,6 +351,9 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_INTENSITY_FLOAT16: /* X, X, X, X */ +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16_FLOAT; comp_swap = SWAP_STD; CLEARbit(cb_color0_info, SOURCE_FORMAT_bit); @@ -289,6 +361,9 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma break; case MESA_FORMAT_X8_Z24: case MESA_FORMAT_S8_Z24: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_24; comp_swap = SWAP_STD; SETfield(cb_color0_info, ARRAY_1D_TILED_THIN1, @@ -297,6 +372,9 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_Z24_S8: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_24_8; comp_swap = SWAP_STD; SETfield(cb_color0_info, ARRAY_1D_TILED_THIN1, @@ -305,6 +383,9 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_Z16: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16; comp_swap = SWAP_STD; SETfield(cb_color0_info, ARRAY_1D_TILED_THIN1, @@ -313,6 +394,9 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_Z32: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32; comp_swap = SWAP_STD; SETfield(cb_color0_info, ARRAY_1D_TILED_THIN1, @@ -321,12 +405,18 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_SARGB8: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_ALT; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_SRGB, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_SLA8: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_8_8; comp_swap = SWAP_ALT_REV; SETbit(cb_color0_info, SOURCE_FORMAT_bit); @@ -348,6 +438,7 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma if (context->radeon.radeonScreen->chip_family >= CHIP_FAMILY_RV770) CLEARbit(cb_color0_info, BLEND_FLOAT32_bit); + SETfield(cb_color0_info, endian, ENDIAN_shift, ENDIAN_mask); SETfield(cb_color0_info, format, CB_COLOR0_INFO__FORMAT_shift, CB_COLOR0_INFO__FORMAT_mask); SETfield(cb_color0_info, comp_swap, COMP_SWAP_shift, COMP_SWAP_mask); @@ -426,10 +517,10 @@ static inline void load_shaders(struct gl_context * ctx) shader = context->blit_bo->ptr; for(i=0; i<sizeof(r6xx_vs)/4; i++) { - shader[128+i] = r6xx_vs[i]; + shader[128+i] = CPU_TO_LE32(r6xx_vs[i]); } for(i=0; i<sizeof(r6xx_ps)/4; i++) { - shader[256+i] = r6xx_ps[i]; + shader[256+i] = CPU_TO_LE32(r6xx_ps[i]); } radeon_bo_unmap(context->blit_bo); @@ -521,6 +612,8 @@ static inline void set_vtx_resource(context_t *context) { struct radeon_bo *bo = context->blit_bo; + uint32_t sq_vtx_constant_word2 = 0; + BATCH_LOCALS(&context->radeon); BEGIN_BATCH_NO_AUTOSTATE(6); @@ -543,13 +636,19 @@ set_vtx_resource(context_t *context) else r700SyncSurf(context, bo, RADEON_GEM_DOMAIN_GTT, 0, VC_ACTION_ENA_bit); + sq_vtx_constant_word2 = 0 +#ifdef MESA_BIG_ENDIAN + | (SQ_ENDIAN_8IN32 << SQ_VTX_CONSTANT_WORD2_0__ENDIAN_SWAP_shift) +#endif + | (16 << SQ_VTX_CONSTANT_WORD2_0__STRIDE_shift); + BEGIN_BATCH_NO_AUTOSTATE(9 + 2); R600_OUT_BATCH(CP_PACKET3(R600_IT_SET_RESOURCE, 7)); R600_OUT_BATCH(SQ_FETCH_RESOURCE_VS_OFFSET * FETCH_RESOURCE_STRIDE); R600_OUT_BATCH(0); R600_OUT_BATCH(48 - 1); - R600_OUT_BATCH(16 << SQ_VTX_CONSTANT_WORD2_0__STRIDE_shift); + R600_OUT_BATCH(sq_vtx_constant_word2); R600_OUT_BATCH(1 << MEM_REQUEST_SIZE_shift); R600_OUT_BATCH(0); R600_OUT_BATCH(0); @@ -670,11 +769,11 @@ set_tex_resource(context_t * context, SETfield(sq_tex_resource1, FMT_8_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); - SETfield(sq_tex_resource4, SQ_SEL_1, + SETfield(sq_tex_resource4, SQ_SEL_Y, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(sq_tex_resource4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); - SETfield(sq_tex_resource4, SQ_SEL_W, + SETfield(sq_tex_resource4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(sq_tex_resource4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); diff --git a/src/mesa/drivers/dri/r600/r600_blit_shaders.h b/src/mesa/drivers/dri/r600/r600_blit_shaders.h index 492dde96368..2124f7673d7 100644 --- a/src/mesa/drivers/dri/r600/r600_blit_shaders.h +++ b/src/mesa/drivers/dri/r600/r600_blit_shaders.h @@ -10,7 +10,11 @@ const uint32_t r6xx_vs[] = 0x00000000, 0x3c000000, // SQ_VTX_INST_FETCH BUFFER_ID(0) MEGA_FETCH_COUNT(16) 0x68cd1000, // DST_GPR(0) DST_SWZ: XYZW DATA_FORMAT(35) SQ_NUM_FORMAT_SCALED SQ_FORMAT_COMP_SIGNED +#ifdef MESA_BIG_ENDIAN + 0x000a0000, // ENDIAN_SWAP(SQ_ENDIAN_8IN32) MEGA_FETCH(1) +#else 0x00080000, // ENDIAN_SWAP(SQ_ENDIAN_NONE) MEGA_FETCH(1) +#endif 0x00000000, // VTX_DWORD_PAD }; diff --git a/src/mesa/drivers/dri/r600/r600_context.c b/src/mesa/drivers/dri/r600/r600_context.c index 00708be1993..1b9676147ee 100644 --- a/src/mesa/drivers/dri/r600/r600_context.c +++ b/src/mesa/drivers/dri/r600/r600_context.c @@ -145,7 +145,6 @@ static const struct dri_extension card_extensions[] = { {"GL_ATI_texture_mirror_once", NULL}, {"GL_MESA_pack_invert", NULL}, {"GL_MESA_ycbcr_texture", NULL}, - {"GL_MESAX_texture_float", NULL}, {"GL_NV_blend_square", NULL}, {"GL_NV_vertex_program", GL_NV_vertex_program_functions}, {"GL_ARB_pixel_buffer_object", NULL}, diff --git a/src/mesa/drivers/dri/r600/r600_emit.c b/src/mesa/drivers/dri/r600/r600_emit.c index 53ece9a3505..c6916ed98a3 100644 --- a/src/mesa/drivers/dri/r600/r600_emit.c +++ b/src/mesa/drivers/dri/r600/r600_emit.c @@ -100,14 +100,17 @@ GLboolean r600EmitShaderConsts(struct gl_context * ctx, int sizeinBYTE) { struct radeon_bo * pbo = (struct radeon_bo *)constbo; - uint8_t *out; + uint32_t *out; + int i; radeon_bo_map(pbo, 1); - out = (uint8_t*)(pbo->ptr); - out = (uint8_t*)ADD_POINTERS(pbo->ptr, bo_offset); + out = (uint32_t*)(pbo->ptr); + out = (uint32_t*)ADD_POINTERS(pbo->ptr, bo_offset); - memcpy(out, data, sizeinBYTE); + for(i = 0; i < sizeinBYTE / 4; i++) { + out[i] = CPU_TO_LE32(*((uint32_t *)data + i)); + } radeon_bo_unmap(pbo); @@ -123,6 +126,7 @@ GLboolean r600EmitShader(struct gl_context * ctx, radeonContextPtr radeonctx = RADEON_CONTEXT(ctx); struct radeon_bo * pbo; uint32_t *out; + int i; shader_again_alloc: pbo = radeon_bo_open(radeonctx->radeonScreen->bom, 0, @@ -154,7 +158,9 @@ shader_again_alloc: out = (uint32_t*)(pbo->ptr); - memcpy(out, data, sizeinDWORD * 4); + for(i = 0; i < sizeinDWORD; i++) { + out[i] = CPU_TO_LE32(*((uint32_t *)data + i)); + } radeon_bo_unmap(pbo); diff --git a/src/mesa/drivers/dri/r600/r600_tex.c b/src/mesa/drivers/dri/r600/r600_tex.c index fe4f0e48661..eb7ed30c7a3 100644 --- a/src/mesa/drivers/dri/r600/r600_tex.c +++ b/src/mesa/drivers/dri/r600/r600_tex.c @@ -78,15 +78,15 @@ static void r600UpdateTexWrap(radeonTexObjPtr t) { struct gl_texture_object *tObj = &t->base; - SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->WrapS), + SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->Sampler.WrapS), SQ_TEX_SAMPLER_WORD0_0__CLAMP_X_shift, SQ_TEX_SAMPLER_WORD0_0__CLAMP_X_mask); if (tObj->Target != GL_TEXTURE_1D) { - SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->WrapT), + SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->Sampler.WrapT), CLAMP_Y_shift, CLAMP_Y_mask); if (tObj->Target == GL_TEXTURE_3D) - SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->WrapR), + SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->Sampler.WrapR), CLAMP_Z_shift, CLAMP_Z_mask); } } @@ -292,7 +292,7 @@ static void r600TexParameter(struct gl_context * ctx, GLenum target, case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MAG_FILTER: case GL_TEXTURE_MAX_ANISOTROPY_EXT: - r600SetTexFilter(t, texObj->MinFilter, texObj->MagFilter, texObj->MaxAnisotropy); + r600SetTexFilter(t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter, texObj->Sampler.MaxAnisotropy); break; case GL_TEXTURE_WRAP_S: @@ -302,7 +302,7 @@ static void r600TexParameter(struct gl_context * ctx, GLenum target, break; case GL_TEXTURE_BORDER_COLOR: - r600SetTexBorderColor(t, texObj->BorderColor.f); + r600SetTexBorderColor(t, texObj->Sampler.BorderColor.f); break; case GL_TEXTURE_BASE_LEVEL: @@ -382,13 +382,13 @@ static struct gl_texture_object *r600NewTextureObject(struct gl_context * ctx, t, _mesa_lookup_enum_by_nr(target)); _mesa_initialize_texture_object(&t->base, name, target); - t->base.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy; + t->base.Sampler.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy; /* Initialize hardware state */ r600SetTexDefaultState(t); r600UpdateTexWrap(t); - r600SetTexFilter(t, t->base.MinFilter, t->base.MagFilter, t->base.MaxAnisotropy); - r600SetTexBorderColor(t, t->base.BorderColor.f); + r600SetTexFilter(t, t->base.Sampler.MinFilter, t->base.Sampler.MagFilter, t->base.Sampler.MaxAnisotropy); + r600SetTexBorderColor(t, t->base.Sampler.BorderColor.f); return &t->base; } diff --git a/src/mesa/drivers/dri/r600/r600_texstate.c b/src/mesa/drivers/dri/r600/r600_texstate.c index aafa6875774..949db29c189 100644 --- a/src/mesa/drivers/dri/r600/r600_texstate.c +++ b/src/mesa/drivers/dri/r600/r600_texstate.c @@ -109,6 +109,16 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, @@ -117,6 +127,7 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif if (mesa_format == MESA_FORMAT_SIGNED_RGBA8888) { SETfield(t->SQ_TEX_RESOURCE4, SQ_FORMAT_COMP_SIGNED, FORMAT_COMP_X_shift, FORMAT_COMP_X_mask); @@ -133,6 +144,16 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -141,6 +162,7 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif if (mesa_format == MESA_FORMAT_SIGNED_RGBA8888_REV) { SETfield(t->SQ_TEX_RESOURCE4, SQ_FORMAT_COMP_SIGNED, FORMAT_COMP_X_shift, FORMAT_COMP_X_mask); @@ -156,6 +178,16 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -164,11 +196,22 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_XRGB8888: SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -177,24 +220,46 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_XRGB8888_REV: SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); - SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_ARGB8888_REV: SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, @@ -203,11 +268,22 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_RGB888: SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -216,11 +292,22 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_RGB565: SETfield(t->SQ_TEX_RESOURCE1, FMT_5_6_5, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -229,11 +316,23 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif + break; case MESA_FORMAT_RGB565_REV: SETfield(t->SQ_TEX_RESOURCE1, FMT_5_6_5, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -242,11 +341,22 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_ARGB4444: SETfield(t->SQ_TEX_RESOURCE1, FMT_4_4_4_4, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -255,11 +365,21 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_ARGB4444_REV: SETfield(t->SQ_TEX_RESOURCE1, FMT_4_4_4_4, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); - +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, @@ -268,11 +388,21 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_ARGB1555: SETfield(t->SQ_TEX_RESOURCE1, FMT_1_5_5_5, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); - +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -281,11 +411,21 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_ARGB1555_REV: SETfield(t->SQ_TEX_RESOURCE1, FMT_1_5_5_5, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); - +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, @@ -294,6 +434,7 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_AL88: case MESA_FORMAT_AL88_REV: /* TODO : Check this. */ @@ -571,7 +712,7 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa default: break; }; - switch (tObj->DepthMode) { + switch (tObj->Sampler.DepthMode) { case GL_LUMINANCE: /* X, X, X, ONE */ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); @@ -777,18 +918,18 @@ static GLboolean setup_hardware_state(struct gl_context * ctx, struct gl_texture SETfield(t->SQ_TEX_RESOURCE5, t->maxLod - t->minLod, LAST_LEVEL_shift, LAST_LEVEL_mask); SETfield(t->SQ_TEX_SAMPLER1, - S_FIXED(CLAMP(t->base.MinLod - t->minLod, 0, 15), 6), + S_FIXED(CLAMP(t->base.Sampler.MinLod - t->minLod, 0, 15), 6), MIN_LOD_shift, MIN_LOD_mask); SETfield(t->SQ_TEX_SAMPLER1, - S_FIXED(CLAMP(t->base.MaxLod - t->minLod, 0, 15), 6), + S_FIXED(CLAMP(t->base.Sampler.MaxLod - t->minLod, 0, 15), 6), MAX_LOD_shift, MAX_LOD_mask); SETfield(t->SQ_TEX_SAMPLER1, - S_FIXED(CLAMP(ctx->Texture.Unit[unit].LodBias + t->base.LodBias, -16, 16), 6), + S_FIXED(CLAMP(ctx->Texture.Unit[unit].LodBias + t->base.Sampler.LodBias, -16, 16), 6), SQ_TEX_SAMPLER_WORD1_0__LOD_BIAS_shift, SQ_TEX_SAMPLER_WORD1_0__LOD_BIAS_mask); - if(texObj->CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) + if(texObj->Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) { - SETfield(t->SQ_TEX_SAMPLER0, r600_translate_shadow_func(texObj->CompareFunc), DEPTH_COMPARE_FUNCTION_shift, DEPTH_COMPARE_FUNCTION_mask); + SETfield(t->SQ_TEX_SAMPLER0, r600_translate_shadow_func(texObj->Sampler.CompareFunc), DEPTH_COMPARE_FUNCTION_shift, DEPTH_COMPARE_FUNCTION_mask); } else { diff --git a/src/mesa/drivers/dri/r600/r700_assembler.c b/src/mesa/drivers/dri/r600/r700_assembler.c index 024853c1beb..216ff0b941c 100644 --- a/src/mesa/drivers/dri/r600/r700_assembler.c +++ b/src/mesa/drivers/dri/r600/r700_assembler.c @@ -259,6 +259,7 @@ GLboolean is_reduction_opcode(PVSDWORD* dest) return GL_FALSE; } +#if 0 /* unused */ GLboolean EG_is_reduction_opcode(PVSDWORD* dest) { if (dest->dst.op3 == 0) @@ -270,6 +271,7 @@ GLboolean EG_is_reduction_opcode(PVSDWORD* dest) } return GL_FALSE; } +#endif GLuint GetSurfaceFormat(GLenum eType, GLuint nChannels, GLuint * pClient_size) { @@ -1186,7 +1188,12 @@ GLboolean EG_assemble_vfetch_instruction(r700_AssemblerBase* pAsm, SETfield(vfetch_instruction_ptr->m_Word2.val, 0, EG_VTX_WORD2__OFFSET_shift, EG_VTX_WORD2__OFFSET_mask); - SETfield(vfetch_instruction_ptr->m_Word2.val, SQ_ENDIAN_NONE, + SETfield(vfetch_instruction_ptr->m_Word2.val, +#ifdef MESA_BIG_ENDIAN + SQ_ENDIAN_8IN32, +#else + SQ_ENDIAN_NONE, +#endif EG_VTX_WORD2__ENDIAN_SWAP_shift, EG_VTX_WORD2__ENDIAN_SWAP_mask); SETfield(vfetch_instruction_ptr->m_Word2.val, 0, @@ -1292,7 +1299,11 @@ GLboolean assemble_vfetch_instruction2(r700_AssemblerBase* pAsm, vfetch_instruction_ptr->m_Word1.f.use_const_fields = 1; vfetch_instruction_ptr->m_Word1.f.data_format = data_format; +#ifdef MESA_BIG_ENDIAN + vfetch_instruction_ptr->m_Word2.f.endian_swap = SQ_ENDIAN_8IN32; +#else vfetch_instruction_ptr->m_Word2.f.endian_swap = SQ_ENDIAN_NONE; +#endif if(1 == _signed) { diff --git a/src/mesa/drivers/dri/r600/r700_assembler.h b/src/mesa/drivers/dri/r600/r700_assembler.h index c7c7ab2d4ff..8a9ccd1c4ec 100644 --- a/src/mesa/drivers/dri/r600/r700_assembler.h +++ b/src/mesa/drivers/dri/r600/r700_assembler.h @@ -130,6 +130,27 @@ typedef unsigned int BITS; typedef struct PVSDSTtag { +#ifdef MESA_BIG_ENDIAN + BITS addrmode1:1; //32 + BITS addrmode0:1; //31 //29 + + BITS dualop:1; // 30 //26 + + BITS op3:1; // 29 Represents *_OP3_* ALU opcode + + BITS writew:1; //28 + BITS writez:1; + BITS writey:1; + BITS writex:1; + + BITS reg:10; //24 //20 + BITS rtype:3; + + BITS pred_inv :1; //11 //8 + BITS predicated:1; //10 //8 + BITS math:1; + BITS opcode:8; //(:6) //@@@ really should be 10 bits for OP2 +#else BITS opcode:8; //(:6) //@@@ really should be 10 bits for OP2 BITS math:1; BITS predicated:1; //10 //8 @@ -149,17 +170,41 @@ typedef struct PVSDSTtag BITS addrmode0:1; //31 //29 BITS addrmode1:1; //32 +#endif } PVSDST; typedef struct PVSINSTtag { +#ifdef MESA_BIG_ENDIAN + BITS index_mode :3; + BITS SaturateMode :2; + BITS literal_slots :2; +#else BITS literal_slots :2; BITS SaturateMode :2; BITS index_mode :3; +#endif } PVSINST; typedef struct PVSSRCtag { +#ifdef MESA_BIG_ENDIAN + BITS addrmode1:1; //32 + //BITS addrsel:2; + BITS negw:1; //31 + BITS negz:1; + BITS negy:1; + BITS negx:1; + BITS abs:1; + + BITS swizzlew:3; //26 + BITS swizzlez:3; + BITS swizzley:3; + BITS swizzlex:3; + BITS reg:10; //14 (8) + BITS addrmode0:1; + BITS rtype:3; +#else BITS rtype:3; BITS addrmode0:1; BITS reg:10; //14 (8) @@ -175,10 +220,24 @@ typedef struct PVSSRCtag BITS negw:1; //31 //BITS addrsel:2; BITS addrmode1:1; //32 +#endif } PVSSRC; typedef struct PVSMATHtag { +#ifdef MESA_BIG_ENDIAN + BITS spare2:3; + BITS dstcomp:2; // select dest component + BITS negy:1; + BITS negx:1; + BITS opcode:4; + BITS dstoff:2; // 2 bits of dest offset into alt ram + BITS swizzley:3; + BITS swizzlex:3; + BITS reg:8; + BITS spare:1; + BITS rtype:4; +#else BITS rtype:4; BITS spare:1; BITS reg:8; @@ -190,6 +249,7 @@ typedef struct PVSMATHtag BITS negy:1; BITS dstcomp:2; // select dest component BITS spare2:3; +#endif } PVSMATH; typedef union PVSDWORDtag @@ -204,6 +264,34 @@ typedef union PVSDWORDtag typedef struct VAP_OUT_VTX_FMT_0tag { +#ifdef MESA_BIG_ENDIAN + BITS resvd1:12; // 20 + + BITS viewport_index:1; // 19 + BITS kill_flag:1; + BITS rta_index:1; // shares same channel as kill_flag + BITS edge_flag:1; + BITS point_size:1; // 15 + + BITS depth:1; // 14 + + BITS normal:1; + + BITS color7:1; + BITS color6:1; + BITS color5:1; + BITS color4:1; + BITS color3:1; + BITS color2:1; + BITS color1:1; + BITS color0:1; + + BITS pos_param:1; // 4 + BITS clip_dist1:1; + BITS clip_dist0:1; + BITS misc:1; + BITS pos:1; // 0 +#else BITS pos:1; // 0 BITS misc:1; BITS clip_dist0:1; @@ -230,10 +318,23 @@ typedef struct VAP_OUT_VTX_FMT_0tag BITS viewport_index:1; // 19 BITS resvd1:12; // 20 +#endif } VAP_OUT_VTX_FMT_0; typedef struct VAP_OUT_VTX_FMT_1tag { +#ifdef MESA_BIG_ENDIAN + BITS resvd:8; + + BITS tex7comp:3; + BITS tex6comp:3; + BITS tex5comp:3; + BITS tex4comp:3; + BITS tex3comp:3; + BITS tex2comp:3; + BITS tex1comp:3; + BITS tex0comp:3; +#else BITS tex0comp:3; BITS tex1comp:3; BITS tex2comp:3; @@ -244,10 +345,23 @@ typedef struct VAP_OUT_VTX_FMT_1tag BITS tex7comp:3; BITS resvd:8; +#endif } VAP_OUT_VTX_FMT_1; typedef struct VAP_OUT_VTX_FMT_2tag { +#ifdef MESA_BIG_ENDIAN + BITS resvd:8; + + BITS tex15comp:3; + BITS tex14comp:3; + BITS tex13comp:3; + BITS tex12comp:3; + BITS tex11comp:3; + BITS tex10comp:3; + BITS tex9comp:3; + BITS tex8comp:3; +#else BITS tex8comp :3; BITS tex9comp :3; BITS tex10comp:3; @@ -258,10 +372,28 @@ typedef struct VAP_OUT_VTX_FMT_2tag BITS tex15comp:3; BITS resvd:8; +#endif } VAP_OUT_VTX_FMT_2; typedef struct OUT_FRAGMENT_FMT_0tag { +#ifdef MESA_BIG_ENDIAN + BITS resvd1:20; + + BITS mask:1; + BITS coverage_to_mask:1; + BITS stencil_ref:1; + BITS depth:1; + + BITS color7:1; + BITS color6:1; + BITS color5:1; + BITS color4:1; + BITS color3:1; + BITS color2:1; + BITS color1:1; + BITS color0:1; +#else BITS color0:1; BITS color1:1; BITS color2:1; @@ -277,6 +409,7 @@ typedef struct OUT_FRAGMENT_FMT_0tag BITS mask:1; BITS resvd1:20; +#endif } OUT_FRAGMENT_FMT_0; typedef enum CF_CLAUSE_TYPE diff --git a/src/mesa/drivers/dri/r600/r700_chip.c b/src/mesa/drivers/dri/r600/r700_chip.c index 4ec2845ab44..10fa3f9762b 100644 --- a/src/mesa/drivers/dri/r600/r700_chip.c +++ b/src/mesa/drivers/dri/r600/r700_chip.c @@ -202,7 +202,15 @@ static void r700SetupVTXConstants(struct gl_context * ctx, SETfield(uSQ_VTX_CONSTANT_WORD2_0, GetSurfaceFormat(pStreamDesc->type, pStreamDesc->size, NULL), SQ_VTX_CONSTANT_WORD2_0__DATA_FORMAT_shift, SQ_VTX_CONSTANT_WORD2_0__DATA_FORMAT_mask); /* TODO : trace back api for initial data type, not only GL_FLOAT */ - + SETfield(uSQ_VTX_CONSTANT_WORD2_0, +#ifdef MESA_BIG_ENDIAN + SQ_ENDIAN_8IN32, +#else + SQ_ENDIAN_NONE, +#endif + SQ_VTX_CONSTANT_WORD2_0__ENDIAN_SWAP_shift, + SQ_VTX_CONSTANT_WORD2_0__ENDIAN_SWAP_mask); + if(GL_TRUE == pStreamDesc->normalize) { SETfield(uSQ_VTX_CONSTANT_WORD2_0, SQ_NUM_FORMAT_NORM, @@ -249,6 +257,7 @@ static void r700SendVTXState(struct gl_context *ctx, struct radeon_state_atom *a struct r700_vertex_program *vp = context->selected_vp; unsigned int i, j = 0; BATCH_LOCALS(&context->radeon); + (void) b_l_rmesa; /* silence unused var warning */ radeon_print(RADEON_STATE, RADEON_VERBOSE, "%s\n", __func__); if (context->radeon.tcl.aos_count == 0) diff --git a/src/mesa/drivers/dri/r600/r700_render.c b/src/mesa/drivers/dri/r600/r700_render.c index bb14a239b77..2bd3b62bfdb 100644 --- a/src/mesa/drivers/dri/r600/r700_render.c +++ b/src/mesa/drivers/dri/r600/r700_render.c @@ -276,6 +276,16 @@ static void r700RunRenderPrimitive(struct gl_context * ctx, int start, int end, SETfield(vgt_index_type, DI_INDEX_SIZE_16_BIT, INDEX_TYPE_shift, INDEX_TYPE_mask); } + /* 16-bit indexes are packed in a 32-bit value */ + SETfield(vgt_index_type, +#if MESA_BIG_ENDIAN + VGT_DMA_SWAP_32_BIT, +#else + VGT_DMA_SWAP_NONE, +#endif + SWAP_MODE_shift, SWAP_MODE_mask); + + vgt_num_indices = num_indices; SETfield(vgt_draw_initiator, DI_SRC_SEL_DMA, SOURCE_SELECT_shift, SOURCE_SELECT_mask); SETfield(vgt_draw_initiator, DI_MAJOR_MODE_0, MAJOR_MODE_shift, MAJOR_MODE_mask); @@ -348,6 +358,15 @@ static void r700RunRenderPrimitiveImmediate(struct gl_context * ctx, int start, SETfield(vgt_index_type, DI_INDEX_SIZE_16_BIT, INDEX_TYPE_shift, INDEX_TYPE_mask); } + /* 16-bit indexes are packed in a 32-bit value */ + SETfield(vgt_index_type, +#if MESA_BIG_ENDIAN + VGT_DMA_SWAP_32_BIT, +#else + VGT_DMA_SWAP_NONE, +#endif + SWAP_MODE_shift, SWAP_MODE_mask); + vgt_num_indices = num_indices; SETfield(vgt_draw_initiator, DI_MAJOR_MODE_0, MAJOR_MODE_shift, MAJOR_MODE_mask); @@ -580,6 +599,7 @@ static void r700ConvertAttrib(struct gl_context *ctx, int count, } } +#if 0 /* unused */ static void r700AlignDataToDword(struct gl_context *ctx, const struct gl_client_array *input, int count, @@ -621,6 +641,7 @@ static void r700AlignDataToDword(struct gl_context *ctx, attr->stride = dst_stride; } +#endif static void r700SetupStreams(struct gl_context *ctx, const struct gl_client_array *input[], int count) { diff --git a/src/mesa/drivers/dri/radeon/radeon_bocs_wrapper.h b/src/mesa/drivers/dri/radeon/radeon_bocs_wrapper.h index 60f10496026..607b7470d4b 100644 --- a/src/mesa/drivers/dri/radeon/radeon_bocs_wrapper.h +++ b/src/mesa/drivers/dri/radeon/radeon_bocs_wrapper.h @@ -1,6 +1,10 @@ #ifndef RADEON_CS_WRAPPER_H #define RADEON_CS_WRAPPER_H +/* to be used to build locally in mesa with no libdrm bits */ +#include "../radeon/radeon_bo_drm.h" +#include "../radeon/radeon_cs_drm.h" + #ifdef HAVE_LIBDRM_RADEON #include "radeon_bo.h" @@ -24,10 +28,6 @@ * when mapped - i.e. front buffer */ #endif -/* to be used to build locally in mesa with no libdrm bits */ -#include "../radeon/radeon_bo_drm.h" -#include "../radeon/radeon_cs_drm.h" - #ifndef DRM_RADEON_GEM_INFO #define DRM_RADEON_GEM_INFO 0x1c diff --git a/src/mesa/drivers/dri/radeon/radeon_chipset.h b/src/mesa/drivers/dri/radeon/radeon_chipset.h index bd6f1c79504..88b68e3d191 100644 --- a/src/mesa/drivers/dri/radeon/radeon_chipset.h +++ b/src/mesa/drivers/dri/radeon/radeon_chipset.h @@ -443,6 +443,8 @@ #define PCI_CHIP_PALM_9803 0x9803 #define PCI_CHIP_PALM_9804 0x9804 #define PCI_CHIP_PALM_9805 0x9805 +#define PCI_CHIP_PALM_9806 0x9806 +#define PCI_CHIP_PALM_9807 0x9807 #define PCI_CHIP_BARTS_6720 0x6720 #define PCI_CHIP_BARTS_6721 0x6721 diff --git a/src/mesa/drivers/dri/radeon/radeon_common.c b/src/mesa/drivers/dri/radeon/radeon_common.c index 0d73c0e3b1b..bfc307ca987 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common.c +++ b/src/mesa/drivers/dri/radeon/radeon_common.c @@ -966,7 +966,7 @@ static void radeon_print_state_atom(radeonContextPtr radeon, struct radeon_state fprintf(stderr, " emit %s %d/%d\n", state->name, dwords, state->cmd_size); - if (radeon_is_debug_enabled(RADEON_STATE, RADEON_TRACE)) { + if (state->cmd && radeon_is_debug_enabled(RADEON_STATE, RADEON_TRACE)) { if (dwords > state->cmd_size) dwords = state->cmd_size; for (i = 0; i < dwords;) { diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.c b/src/mesa/drivers/dri/radeon/radeon_common_context.c index 405aecb19ec..5d7b3973d57 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common_context.c +++ b/src/mesa/drivers/dri/radeon/radeon_common_context.c @@ -47,8 +47,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "swrast_setup/swrast_setup.h" #include "tnl/tnl.h" -#define DRIVER_DATE "20090101" - #ifndef RADEON_DEBUG int RADEON_DEBUG = (0); #endif @@ -146,8 +144,7 @@ static const GLubyte *radeonGetString(struct gl_context * ctx, GLenum name) get_chip_family_name(radeon->radeonScreen->chip_family), radeon->radeonScreen->device_id); - offset = driGetRendererString(buffer, hardwarename, DRIVER_DATE, - agp_mode); + offset = driGetRendererString(buffer, hardwarename, agp_mode); if (IS_R600_CLASS(radeon->radeonScreen)) { sprintf(&buffer[offset], " TCL"); diff --git a/src/mesa/drivers/dri/radeon/radeon_context.c b/src/mesa/drivers/dri/radeon/radeon_context.c index 154a8815e4a..4d41e99df5d 100644 --- a/src/mesa/drivers/dri/radeon/radeon_context.c +++ b/src/mesa/drivers/dri/radeon/radeon_context.c @@ -70,8 +70,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define need_GL_OES_EGL_image #include "main/remap_helper.h" -#define DRIVER_DATE "20061018" - #include "utils.h" #include "xmlpool.h" /* for symbolic values of enum-type options */ diff --git a/src/mesa/drivers/dri/radeon/radeon_debug.h b/src/mesa/drivers/dri/radeon/radeon_debug.h index ef8b9671ac9..449c27a3fe1 100644 --- a/src/mesa/drivers/dri/radeon/radeon_debug.h +++ b/src/mesa/drivers/dri/radeon/radeon_debug.h @@ -110,30 +110,30 @@ extern void _radeon_print(const radeon_debug_type_t type, * Print out debug message if channel specified by type is enabled * and compile time debugging level is at least as high as level parameter */ -#define radeon_print(type, level, message, ...) do { \ +#define radeon_print(type, level, ...) do { \ const radeon_debug_level_t _debug_level = (level); \ const radeon_debug_type_t _debug_type = (type); \ /* Compile out if level of message is too high */ \ if (radeon_is_debug_enabled(type, level)) { \ _radeon_print(_debug_type, _debug_level, \ - (message), ## __VA_ARGS__); \ + __VA_ARGS__); \ } \ } while(0) /** * printf style function for writing error messages. */ -#define radeon_error(message, ...) do { \ +#define radeon_error(...) do { \ radeon_print(RADEON_GENERAL, RADEON_CRITICAL, \ - (message), ## __VA_ARGS__); \ + __VA_ARGS__); \ } while(0) /** * printf style function for writing warnings. */ -#define radeon_warning(message, ...) do { \ +#define radeon_warning(...) do { \ radeon_print(RADEON_GENERAL, RADEON_IMPORTANT, \ - (message), ## __VA_ARGS__); \ + __VA_ARGS__); \ } while(0) extern void radeon_init_debug(void); @@ -158,13 +158,13 @@ static inline void radeon_debug_remove_indent(void) I suppose we could inline this and use macro to fetch out __LINE__ and stuff in case we run into trouble with other compilers ... GLUE! */ -#define WARN_ONCE(a, ...) do { \ +#define WARN_ONCE(...) do { \ static int __warn_once=1; \ if(__warn_once){ \ radeon_warning("*********************************WARN_ONCE*********************************\n"); \ radeon_warning("File %s function %s line %d\n", \ __FILE__, __FUNCTION__, __LINE__); \ - radeon_warning( (a), ## __VA_ARGS__);\ + radeon_warning(__VA_ARGS__);\ radeon_warning("***************************************************************************\n"); \ __warn_once=0;\ } \ diff --git a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c index 1fadad2756b..03d9b264367 100644 --- a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c +++ b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c @@ -296,15 +296,15 @@ static void calculate_min_max_lod(struct gl_texture_object *tObj, case GL_TEXTURE_2D: case GL_TEXTURE_3D: case GL_TEXTURE_CUBE_MAP: - if (tObj->MinFilter == GL_NEAREST || tObj->MinFilter == GL_LINEAR) { + if (tObj->Sampler.MinFilter == GL_NEAREST || tObj->Sampler.MinFilter == GL_LINEAR) { /* GL_NEAREST and GL_LINEAR only care about GL_TEXTURE_BASE_LEVEL. */ minLod = maxLod = tObj->BaseLevel; } else { - minLod = tObj->BaseLevel + (GLint)(tObj->MinLod); + minLod = tObj->BaseLevel + (GLint)(tObj->Sampler.MinLod); minLod = MAX2(minLod, tObj->BaseLevel); minLod = MIN2(minLod, tObj->MaxLevel); - maxLod = tObj->BaseLevel + (GLint)(tObj->MaxLod + 0.5); + maxLod = tObj->BaseLevel + (GLint)(tObj->Sampler.MaxLod + 0.5); maxLod = MIN2(maxLod, tObj->MaxLevel); maxLod = MIN2(maxLod, tObj->Image[0][minLod]->MaxLog2 + minLod); maxLod = MAX2(maxLod, minLod); /* need at least one level */ diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c index 56c5959b0aa..732efe8bd85 100644 --- a/src/mesa/drivers/dri/radeon/radeon_screen.c +++ b/src/mesa/drivers/dri/radeon/radeon_screen.c @@ -401,12 +401,12 @@ static const struct __DRI2flushExtensionRec radeonFlushExtension = { }; static __DRIimage * -radeon_create_image_from_name(__DRIcontext *context, +radeon_create_image_from_name(__DRIscreen *screen, int width, int height, int format, int name, int pitch, void *loaderPrivate) { __DRIimage *image; - radeonContextPtr radeon = context->driverPrivate; + radeonScreenPtr radeonScreen = screen->private; if (name == 0) return NULL; @@ -442,7 +442,7 @@ radeon_create_image_from_name(__DRIcontext *context, image->pitch = pitch; image->height = height; - image->bo = radeon_bo_open(radeon->radeonScreen->bom, + image->bo = radeon_bo_open(radeonScreen->bom, (uint32_t)name, image->pitch * image->height * image->cpp, 0, @@ -1158,6 +1158,8 @@ static int radeon_set_screen_flags(radeonScreenPtr screen, int device_id) case PCI_CHIP_PALM_9803: case PCI_CHIP_PALM_9804: case PCI_CHIP_PALM_9805: + case PCI_CHIP_PALM_9806: + case PCI_CHIP_PALM_9807: screen->chip_family = CHIP_FAMILY_PALM; screen->chip_flags = RADEON_CHIPSET_TCL; break; diff --git a/src/mesa/drivers/dri/radeon/radeon_span.c b/src/mesa/drivers/dri/radeon/radeon_span.c index caf3f253d2a..8c6f2e49a5c 100644 --- a/src/mesa/drivers/dri/radeon/radeon_span.c +++ b/src/mesa/drivers/dri/radeon/radeon_span.c @@ -50,6 +50,17 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define DBG 0 +#if defined(BYTE_ORDER) && defined(BIG_ENDIAN) && BYTE_ORDER == BIG_ENDIAN +#if defined(__linux__) +#include <byteswap.h> +#define CPU_TO_LE16( x ) bswap_16( x ) +#define LE16_TO_CPU( x ) bswap_16( x ) +#endif /* __linux__ */ +#else +#define CPU_TO_LE16( x ) ( x ) +#define LE16_TO_CPU( x ) ( x ) +#endif + static void radeonSetSpanFunctions(struct radeon_renderbuffer *rrb); @@ -579,7 +590,11 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, #define TAG(x) radeon##x##_RGB565 #define TAG2(x,y) radeon##x##_RGB565##y #if defined(RADEON_R600) -#define GET_PTR(X,Y) r600_ptr_color(rrb, (X) + x_off, (Y) + y_off) +#define GET_VALUE(_x, _y) (LE16_TO_CPU(*(GLushort*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)))) +#define PUT_VALUE(_x, _y, d) { \ + GLushort *_ptr = (GLushort*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \ + *_ptr = CPU_TO_LE16(d); \ +} while (0) #else #define GET_PTR(X,Y) radeon_ptr_2byte_8x2(rrb, (X) + x_off, (Y) + y_off) #endif @@ -591,7 +606,11 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, #define TAG(x) radeon##x##_RGB565_REV #define TAG2(x,y) radeon##x##_RGB565_REV##y #if defined(RADEON_R600) -#define GET_PTR(X,Y) r600_ptr_color(rrb, (X) + x_off, (Y) + y_off) +#define GET_VALUE(_x, _y) (LE16_TO_CPU(*(GLushort*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)))) +#define PUT_VALUE(_x, _y, d) { \ + GLushort *_ptr = (GLushort*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \ + *_ptr = CPU_TO_LE16(d); \ +} while (0) #else #define GET_PTR(X,Y) radeon_ptr_2byte_8x2(rrb, (X) + x_off, (Y) + y_off) #endif @@ -605,7 +624,11 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, #define TAG(x) radeon##x##_ARGB1555 #define TAG2(x,y) radeon##x##_ARGB1555##y #if defined(RADEON_R600) -#define GET_PTR(X,Y) r600_ptr_color(rrb, (X) + x_off, (Y) + y_off) +#define GET_VALUE(_x, _y) (LE16_TO_CPU(*(GLushort*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)))) +#define PUT_VALUE(_x, _y, d) { \ + GLushort *_ptr = (GLushort*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \ + *_ptr = CPU_TO_LE16(d); \ +} while (0) #else #define GET_PTR(X,Y) radeon_ptr_2byte_8x2(rrb, (X) + x_off, (Y) + y_off) #endif @@ -617,7 +640,11 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, #define TAG(x) radeon##x##_ARGB1555_REV #define TAG2(x,y) radeon##x##_ARGB1555_REV##y #if defined(RADEON_R600) -#define GET_PTR(X,Y) r600_ptr_color(rrb, (X) + x_off, (Y) + y_off) +#define GET_VALUE(_x, _y) (LE16_TO_CPU(*(GLushort*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)))) +#define PUT_VALUE(_x, _y, d) { \ + GLushort *_ptr = (GLushort*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \ + *_ptr = CPU_TO_LE16(d); \ +} while (0) #else #define GET_PTR(X,Y) radeon_ptr_2byte_8x2(rrb, (X) + x_off, (Y) + y_off) #endif @@ -631,7 +658,11 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, #define TAG(x) radeon##x##_ARGB4444 #define TAG2(x,y) radeon##x##_ARGB4444##y #if defined(RADEON_R600) -#define GET_PTR(X,Y) r600_ptr_color(rrb, (X) + x_off, (Y) + y_off) +#define GET_VALUE(_x, _y) (LE16_TO_CPU(*(GLushort*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)))) +#define PUT_VALUE(_x, _y, d) { \ + GLushort *_ptr = (GLushort*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \ + *_ptr = CPU_TO_LE16(d); \ +} while (0) #else #define GET_PTR(X,Y) radeon_ptr_2byte_8x2(rrb, (X) + x_off, (Y) + y_off) #endif @@ -643,7 +674,11 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, #define TAG(x) radeon##x##_ARGB4444_REV #define TAG2(x,y) radeon##x##_ARGB4444_REV##y #if defined(RADEON_R600) -#define GET_PTR(X,Y) r600_ptr_color(rrb, (X) + x_off, (Y) + y_off) +#define GET_VALUE(_x, _y) (LE16_TO_CPU(*(GLushort*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)))) +#define PUT_VALUE(_x, _y, d) { \ + GLushort *_ptr = (GLushort*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \ + *_ptr = CPU_TO_LE16(d); \ +} while (0) #else #define GET_PTR(X,Y) radeon_ptr_2byte_8x2(rrb, (X) + x_off, (Y) + y_off) #endif @@ -657,10 +692,10 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, #define TAG(x) radeon##x##_xRGB8888 #define TAG2(x,y) radeon##x##_xRGB8888##y #if defined(RADEON_R600) -#define GET_VALUE(_x, _y) ((*(GLuint*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)) | 0xff000000)) +#define GET_VALUE(_x, _y) ((LE32_TO_CPU(*(GLuint*)(r600_ptr_color(rrb, _x + x_off, _y + y_off))) | 0xff000000)) #define PUT_VALUE(_x, _y, d) { \ GLuint *_ptr = (GLuint*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \ - *_ptr = d; \ + *_ptr = CPU_TO_LE32(d); \ } while (0) #else #define GET_VALUE(_x, _y) ((*(GLuint*)(radeon_ptr_4byte(rrb, _x + x_off, _y + y_off)) | 0xff000000)) @@ -679,10 +714,10 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, #define TAG(x) radeon##x##_ARGB8888 #define TAG2(x,y) radeon##x##_ARGB8888##y #if defined(RADEON_R600) -#define GET_VALUE(_x, _y) (*(GLuint*)(r600_ptr_color(rrb, _x + x_off, _y + y_off))) +#define GET_VALUE(_x, _y) (LE32_TO_CPU(*(GLuint*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)))) #define PUT_VALUE(_x, _y, d) { \ GLuint *_ptr = (GLuint*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \ - *_ptr = d; \ + *_ptr = CPU_TO_LE32(d); \ } while (0) #else #define GET_VALUE(_x, _y) (*(GLuint*)(radeon_ptr_4byte(rrb, _x + x_off, _y + y_off))) @@ -701,10 +736,10 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, #define TAG(x) radeon##x##_BGRx8888 #define TAG2(x,y) radeon##x##_BGRx8888##y #if defined(RADEON_R600) -#define GET_VALUE(_x, _y) ((*(GLuint*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)) | 0x000000ff)) +#define GET_VALUE(_x, _y) ((LE32_TO_CPU(*(GLuint*)(r600_ptr_color(rrb, _x + x_off, _y + y_off))) | 0x000000ff)) #define PUT_VALUE(_x, _y, d) { \ GLuint *_ptr = (GLuint*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \ - *_ptr = d; \ + *_ptr = CPU_TO_LE32(d); \ } while (0) #else #define GET_VALUE(_x, _y) ((*(GLuint*)(radeon_ptr_4byte(rrb, _x + x_off, _y + y_off)) | 0x000000ff)) @@ -723,7 +758,11 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, #define TAG(x) radeon##x##_BGRA8888 #define TAG2(x,y) radeon##x##_BGRA8888##y #if defined(RADEON_R600) -#define GET_PTR(X,Y) r600_ptr_color(rrb, (X) + x_off, (Y) + y_off) +#define GET_VALUE(_x, _y) (LE32_TO_CPU(*(GLuint*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)))) +#define PUT_VALUE(_x, _y, d) { \ + GLuint *_ptr = (GLuint*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \ + *_ptr = CPU_TO_LE32(d); \ +} while (0) #else #define GET_PTR(X,Y) radeon_ptr_4byte(rrb, (X) + x_off, (Y) + y_off) #endif @@ -752,7 +791,7 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, *(GLushort *)r200_depth_2byte(rrb, _x + x_off, _y + y_off) = d #elif defined(RADEON_R600) #define WRITE_DEPTH( _x, _y, d ) \ - *(GLushort *)r600_ptr_depth(rrb, _x + x_off, _y + y_off) = d + *(GLushort *)r600_ptr_depth(rrb, _x + x_off, _y + y_off) = CPU_TO_LE16(d) #else #define WRITE_DEPTH( _x, _y, d ) \ *(GLushort *)radeon_ptr_2byte_8x2(rrb, _x + x_off, _y + y_off) = d @@ -763,7 +802,7 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, d = *(GLushort *)r200_depth_2byte(rrb, _x + x_off, _y + y_off) #elif defined(RADEON_R600) #define READ_DEPTH( d, _x, _y ) \ - d = *(GLushort *)r600_ptr_depth(rrb, _x + x_off, _y + y_off) + d = LE16_TO_CPU(*(GLushort *)r600_ptr_depth(rrb, _x + x_off, _y + y_off)) #else #define READ_DEPTH( d, _x, _y ) \ d = *(GLushort *)radeon_ptr_2byte_8x2(rrb, _x + x_off, _y + y_off) @@ -792,10 +831,10 @@ do { \ #define WRITE_DEPTH( _x, _y, d ) \ do { \ GLuint *_ptr = (GLuint*)r600_ptr_depth( rrb, _x + x_off, _y + y_off ); \ - GLuint tmp = *_ptr; \ + GLuint tmp = LE32_TO_CPU(*_ptr); \ tmp &= 0xff000000; \ tmp |= ((d) & 0x00ffffff); \ - *_ptr = tmp; \ + *_ptr = CPU_TO_LE32(tmp); \ } while (0) #elif defined(RADEON_R200) #define WRITE_DEPTH( _x, _y, d ) \ @@ -825,7 +864,7 @@ do { \ #elif defined(RADEON_R600) #define READ_DEPTH( d, _x, _y ) \ do { \ - d = (*(GLuint*)(r600_ptr_depth(rrb, _x + x_off, _y + y_off)) & 0x00ffffff); \ + d = (LE32_TO_CPU(*(GLuint*)(r600_ptr_depth(rrb, _x + x_off, _y + y_off))) & 0x00ffffff); \ }while(0) #elif defined(RADEON_R200) #define READ_DEPTH( d, _x, _y ) \ @@ -858,15 +897,15 @@ do { \ #define WRITE_DEPTH( _x, _y, d ) \ do { \ GLuint *_ptr = (GLuint*)r600_ptr_depth( rrb, _x + x_off, _y + y_off ); \ - GLuint tmp = *_ptr; \ + GLuint tmp = LE32_TO_CPU(*_ptr); \ tmp &= 0xff000000; \ tmp |= ((d) & 0x00ffffff); \ - *_ptr = tmp; \ + *_ptr = CPU_TO_LE32(tmp); \ _ptr = (GLuint*)r600_ptr_stencil(rrb, _x + x_off, _y + y_off); \ - tmp = *_ptr; \ + tmp = LE32_TO_CPU(*_ptr); \ tmp &= 0xffffff00; \ tmp |= ((d) >> 24) & 0xff; \ - *_ptr = tmp; \ + *_ptr = CPU_TO_LE32(tmp); \ } while (0) #elif defined(RADEON_R200) #define WRITE_DEPTH( _x, _y, d ) \ @@ -891,8 +930,8 @@ do { \ #elif defined(RADEON_R600) #define READ_DEPTH( d, _x, _y ) \ do { \ - d = (*(GLuint*)(r600_ptr_depth(rrb, _x + x_off, _y + y_off))) & 0x00ffffff; \ - d |= ((*(GLuint*)(r600_ptr_stencil(rrb, _x + x_off, _y + y_off))) << 24) & 0xff000000; \ + d = (LE32_TO_CPU(*(GLuint*)(r600_ptr_depth(rrb, _x + x_off, _y + y_off))) & 0x00ffffff); \ + d |= ((LE32_TO_CPU(*(GLuint*)(r600_ptr_stencil(rrb, _x + x_off, _y + y_off))) << 24) & 0xff000000); \ }while(0) #elif defined(RADEON_R200) #define READ_DEPTH( d, _x, _y ) \ @@ -927,10 +966,10 @@ do { \ #define WRITE_STENCIL( _x, _y, d ) \ do { \ GLuint *_ptr = (GLuint*)r600_ptr_stencil(rrb, _x + x_off, _y + y_off); \ - GLuint tmp = *_ptr; \ + GLuint tmp = LE32_TO_CPU(*_ptr); \ tmp &= 0xffffff00; \ tmp |= (d) & 0xff; \ - *_ptr = tmp; \ + *_ptr = CPU_TO_LE32(tmp); \ } while (0) #elif defined(RADEON_R200) #define WRITE_STENCIL( _x, _y, d ) \ @@ -963,7 +1002,7 @@ do { \ #define READ_STENCIL( d, _x, _y ) \ do { \ GLuint *_ptr = (GLuint*)r600_ptr_stencil( rrb, _x + x_off, _y + y_off ); \ - GLuint tmp = *_ptr; \ + GLuint tmp = LE32_TO_CPU(*_ptr); \ d = tmp & 0x000000ff; \ } while (0) #elif defined(RADEON_R200) diff --git a/src/mesa/drivers/dri/radeon/radeon_tex.c b/src/mesa/drivers/dri/radeon/radeon_tex.c index 8a35c7d2d27..25a8ddf7b6a 100644 --- a/src/mesa/drivers/dri/radeon/radeon_tex.c +++ b/src/mesa/drivers/dri/radeon/radeon_tex.c @@ -330,17 +330,17 @@ static void radeonTexParameter( struct gl_context *ctx, GLenum target, case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MAG_FILTER: case GL_TEXTURE_MAX_ANISOTROPY_EXT: - radeonSetTexMaxAnisotropy( t, texObj->MaxAnisotropy ); - radeonSetTexFilter( t, texObj->MinFilter, texObj->MagFilter ); + radeonSetTexMaxAnisotropy( t, texObj->Sampler.MaxAnisotropy ); + radeonSetTexFilter( t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter ); break; case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: - radeonSetTexWrap( t, texObj->WrapS, texObj->WrapT ); + radeonSetTexWrap( t, texObj->Sampler.WrapS, texObj->Sampler.WrapT ); break; case GL_TEXTURE_BORDER_COLOR: - radeonSetTexBorderColor( t, texObj->BorderColor.f ); + radeonSetTexBorderColor( t, texObj->Sampler.BorderColor.f ); break; case GL_TEXTURE_BASE_LEVEL: @@ -416,7 +416,7 @@ radeonNewTextureObject( struct gl_context *ctx, GLuint name, GLenum target ) radeonTexObj* t = CALLOC_STRUCT(radeon_tex_obj); _mesa_initialize_texture_object(&t->base, name, target); - t->base.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy; + t->base.Sampler.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy; t->border_fallback = GL_FALSE; @@ -424,10 +424,10 @@ radeonNewTextureObject( struct gl_context *ctx, GLuint name, GLenum target ) t->pp_txformat = (RADEON_TXFORMAT_ENDIAN_NO_SWAP | RADEON_TXFORMAT_PERSPECTIVE_ENABLE); - radeonSetTexWrap( t, t->base.WrapS, t->base.WrapT ); - radeonSetTexMaxAnisotropy( t, t->base.MaxAnisotropy ); - radeonSetTexFilter( t, t->base.MinFilter, t->base.MagFilter ); - radeonSetTexBorderColor( t, t->base.BorderColor.f ); + radeonSetTexWrap( t, t->base.Sampler.WrapS, t->base.Sampler.WrapT ); + radeonSetTexMaxAnisotropy( t, t->base.Sampler.MaxAnisotropy ); + radeonSetTexFilter( t, t->base.Sampler.MinFilter, t->base.Sampler.MagFilter ); + radeonSetTexBorderColor( t, t->base.Sampler.BorderColor.f ); return &t->base; } diff --git a/src/mesa/drivers/dri/savage/savagedd.c b/src/mesa/drivers/dri/savage/savagedd.c index 3f8d7aafb08..c7f58835054 100644 --- a/src/mesa/drivers/dri/savage/savagedd.c +++ b/src/mesa/drivers/dri/savage/savagedd.c @@ -38,8 +38,6 @@ #include "utils.h" -#define DRIVER_DATE "20061110" - /*************************************** * Mesa's Driver Functions ***************************************/ @@ -71,7 +69,7 @@ static const GLubyte *savageDDGetString( struct gl_context *ctx, GLenum name ) case GL_VENDOR: return (GLubyte *)"S3 Graphics Inc."; case GL_RENDERER: - offset = driGetRendererString( buffer, cardNames[chipset], DRIVER_DATE, + offset = driGetRendererString( buffer, cardNames[chipset], screen->agpMode ); return (GLubyte *)buffer; default: diff --git a/src/mesa/drivers/dri/savage/savagerender.c b/src/mesa/drivers/dri/savage/savagerender.c index 8cc448ad4f7..6687dc5f466 100644 --- a/src/mesa/drivers/dri/savage/savagerender.c +++ b/src/mesa/drivers/dri/savage/savagerender.c @@ -250,9 +250,9 @@ static GLboolean run_texnorm_stage( struct gl_context *ctx, const GLbitfield reallyEnabled = ctx->Texture.Unit[i]._ReallyEnabled; if (reallyEnabled) { const struct gl_texture_object *texObj = ctx->Texture.Unit[i]._Current; - const GLboolean normalizeS = (texObj->WrapS == GL_REPEAT); + const GLboolean normalizeS = (texObj->Sampler.WrapS == GL_REPEAT); const GLboolean normalizeT = (reallyEnabled & TEXTURE_2D_BIT) && - (texObj->WrapT == GL_REPEAT); + (texObj->Sampler.WrapT == GL_REPEAT); const GLfloat *in = (GLfloat *)VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]->data; const GLint instride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]->stride; GLfloat (*out)[4] = store->texcoord[i].data; @@ -332,15 +332,15 @@ static void validate_texnorm( struct gl_context *ctx, GLuint flags = 0; if (((ctx->Texture.Unit[0]._ReallyEnabled & (TEXTURE_1D_BIT|TEXTURE_2D_BIT)) && - (ctx->Texture.Unit[0]._Current->WrapS == GL_REPEAT)) || + (ctx->Texture.Unit[0]._Current->Sampler.WrapS == GL_REPEAT)) || ((ctx->Texture.Unit[0]._ReallyEnabled & TEXTURE_2D_BIT) && - (ctx->Texture.Unit[0]._Current->WrapT == GL_REPEAT))) + (ctx->Texture.Unit[0]._Current->Sampler.WrapT == GL_REPEAT))) flags |= VERT_BIT_TEX0; if (((ctx->Texture.Unit[1]._ReallyEnabled & (TEXTURE_1D_BIT|TEXTURE_2D_BIT)) && - (ctx->Texture.Unit[1]._Current->WrapS == GL_REPEAT)) || + (ctx->Texture.Unit[1]._Current->Sampler.WrapS == GL_REPEAT)) || ((ctx->Texture.Unit[1]._ReallyEnabled & TEXTURE_2D_BIT) && - (ctx->Texture.Unit[1]._Current->WrapT == GL_REPEAT))) + (ctx->Texture.Unit[1]._Current->Sampler.WrapT == GL_REPEAT))) flags |= VERT_BIT_TEX1; store->active = (flags != 0); diff --git a/src/mesa/drivers/dri/savage/savagetex.c b/src/mesa/drivers/dri/savage/savagetex.c index 3aece732c99..9486c12c158 100644 --- a/src/mesa/drivers/dri/savage/savagetex.c +++ b/src/mesa/drivers/dri/savage/savagetex.c @@ -502,9 +502,9 @@ savageAllocTexObj( struct gl_texture_object *texObj ) make_empty_list( &t->base ); - savageSetTexWrapping(t,texObj->WrapS,texObj->WrapT); - savageSetTexFilter(t,texObj->MinFilter,texObj->MagFilter); - savageSetTexBorderColor(t,texObj->BorderColor.f); + savageSetTexWrapping(t,texObj->Sampler.WrapS,texObj->Sampler.WrapT); + savageSetTexFilter(t,texObj->Sampler.MinFilter,texObj->Sampler.MagFilter); + savageSetTexBorderColor(t,texObj->Sampler.BorderColor.f); } return t; @@ -2031,16 +2031,16 @@ static void savageTexParameter( struct gl_context *ctx, GLenum target, switch (pname) { case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MAG_FILTER: - savageSetTexFilter(t,tObj->MinFilter,tObj->MagFilter); + savageSetTexFilter(t,tObj->Sampler.MinFilter,tObj->Sampler.MagFilter); break; case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: - savageSetTexWrapping(t,tObj->WrapS,tObj->WrapT); + savageSetTexWrapping(t,tObj->Sampler.WrapS,tObj->Sampler.WrapT); break; case GL_TEXTURE_BORDER_COLOR: - savageSetTexBorderColor(t,tObj->BorderColor.f); + savageSetTexBorderColor(t,tObj->Sampler.BorderColor.f); break; default: diff --git a/src/mesa/drivers/dri/sis/sis_dd.c b/src/mesa/drivers/dri/sis/sis_dd.c index 90e894b842c..bba516f8dcd 100644 --- a/src/mesa/drivers/dri/sis/sis_dd.c +++ b/src/mesa/drivers/dri/sis/sis_dd.c @@ -45,8 +45,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "utils.h" -#define DRIVER_DATE "20060710" - /* Return the width and height of the given buffer. */ static void @@ -78,7 +76,7 @@ sisGetString( struct gl_context *ctx, GLenum name ) return (GLubyte *)"Eric Anholt"; case GL_RENDERER: - offset = driGetRendererString( buffer, "SiS", DRIVER_DATE, agp_mode ); + offset = driGetRendererString( buffer, "SiS", agp_mode ); return (GLubyte *)buffer; diff --git a/src/mesa/drivers/dri/sis/sis_texstate.c b/src/mesa/drivers/dri/sis/sis_texstate.c index daec2393211..6580f155bae 100644 --- a/src/mesa/drivers/dri/sis/sis_texstate.c +++ b/src/mesa/drivers/dri/sis/sis_texstate.c @@ -335,7 +335,7 @@ sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj, current->texture[hw_unit].hwTextureMip = 0UL; current->texture[hw_unit].hwTextureSet = t->hwformat; - if ((texObj->MinFilter == GL_NEAREST) || (texObj->MinFilter == GL_LINEAR)) { + if ((texObj->Sampler.MinFilter == GL_NEAREST) || (texObj->Sampler.MinFilter == GL_LINEAR)) { firstLevel = lastLevel = texObj->BaseLevel; } else { /* Compute which mipmap levels we really want to send to the hardware. @@ -344,9 +344,9 @@ sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj, * Yes, this looks overly complicated, but it's all needed. */ - firstLevel = texObj->BaseLevel + (GLint)(texObj->MinLod + 0.5); + firstLevel = texObj->BaseLevel + (GLint)(texObj->Sampler.MinLod + 0.5); firstLevel = MAX2(firstLevel, texObj->BaseLevel); - lastLevel = texObj->BaseLevel + (GLint)(texObj->MaxLod + 0.5); + lastLevel = texObj->BaseLevel + (GLint)(texObj->Sampler.MaxLod + 0.5); lastLevel = MAX2(lastLevel, texObj->BaseLevel); lastLevel = MIN2(lastLevel, texObj->BaseLevel + texObj->Image[0][texObj->BaseLevel]->MaxLog2); @@ -356,7 +356,7 @@ sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj, current->texture[hw_unit].hwTextureSet |= (lastLevel << 8); - switch (texObj->MagFilter) + switch (texObj->Sampler.MagFilter) { case GL_NEAREST: current->texture[hw_unit].hwTextureMip |= TEXTURE_FILTER_NEAREST; @@ -382,7 +382,7 @@ sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj, MASK_TextureMipmapLodBias); } - switch (texObj->MinFilter) + switch (texObj->Sampler.MinFilter) { case GL_NEAREST: current->texture[hw_unit].hwTextureMip |= TEXTURE_FILTER_NEAREST; @@ -408,7 +408,7 @@ sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj, break; } - switch (texObj->WrapS) + switch (texObj->Sampler.WrapS) { case GL_REPEAT: current->texture[hw_unit].hwTextureSet |= MASK_TextureWrapU; @@ -431,7 +431,7 @@ sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj, break; } - switch (texObj->WrapT) + switch (texObj->Sampler.WrapT) { case GL_REPEAT: current->texture[hw_unit].hwTextureSet |= MASK_TextureWrapV; @@ -456,10 +456,10 @@ sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj, { GLubyte c[4]; - CLAMPED_FLOAT_TO_UBYTE(c[0], texObj->BorderColor.f[0]); - CLAMPED_FLOAT_TO_UBYTE(c[1], texObj->BorderColor.f[1]); - CLAMPED_FLOAT_TO_UBYTE(c[2], texObj->BorderColor.f[2]); - CLAMPED_FLOAT_TO_UBYTE(c[3], texObj->BorderColor.f[3]); + CLAMPED_FLOAT_TO_UBYTE(c[0], texObj->Sampler.BorderColor.f[0]); + CLAMPED_FLOAT_TO_UBYTE(c[1], texObj->Sampler.BorderColor.f[1]); + CLAMPED_FLOAT_TO_UBYTE(c[2], texObj->Sampler.BorderColor.f[2]); + CLAMPED_FLOAT_TO_UBYTE(c[3], texObj->Sampler.BorderColor.f[3]); current->texture[hw_unit].hwTextureBorderColor = PACK_COLOR_8888(c[3], c[0], c[1], c[2]); diff --git a/src/mesa/drivers/dri/tdfx/tdfx_dd.c b/src/mesa/drivers/dri/tdfx/tdfx_dd.c index d60931ad7fd..e981f9abedf 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_dd.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_dd.c @@ -41,9 +41,6 @@ #include "main/context.h" -#define DRIVER_DATE "20061113" - - /* These are used in calls to FX_grColorMaskv() */ const GLboolean false4[4] = { GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE }; const GLboolean true4[4] = { GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE }; @@ -91,7 +88,7 @@ static const GLubyte *tdfxDDGetString( struct gl_context *ctx, GLenum name ) } } - (void) driGetRendererString(buffer, hardware, DRIVER_DATE, 0); + (void) driGetRendererString(buffer, hardware, 0); return (const GLubyte *) buffer; } case GL_VENDOR: diff --git a/src/mesa/drivers/dri/tdfx/tdfx_tex.c b/src/mesa/drivers/dri/tdfx/tdfx_tex.c index 4cca243d076..d74ddb24005 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_tex.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_tex.c @@ -327,7 +327,7 @@ static void RevalidateTexture(struct gl_context *ctx, struct gl_texture_object * &(ti->sScale), &(ti->tScale), NULL, NULL); } - if (tObj->Image[0][maxl] && (tObj->MinFilter != GL_NEAREST) && (tObj->MinFilter != GL_LINEAR)) { + if (tObj->Image[0][maxl] && (tObj->Sampler.MinFilter != GL_NEAREST) && (tObj->Sampler.MinFilter != GL_LINEAR)) { /* mipmapping: need to compute smallLodLog2 */ tdfxTexGetInfo(ctx, tObj->Image[0][maxl]->Width, tObj->Image[0][maxl]->Height, @@ -1786,12 +1786,12 @@ tdfxTestProxyTexImage(struct gl_context *ctx, GLenum target, #endif if (level == 0) { /* don't use mipmap levels > 0 */ - tObj->MinFilter = tObj->MagFilter = GL_NEAREST; + tObj->Sampler.MinFilter = tObj->Sampler.MagFilter = GL_NEAREST; } else { /* test with all mipmap levels */ - tObj->MinFilter = GL_LINEAR_MIPMAP_LINEAR; - tObj->MagFilter = GL_NEAREST; + tObj->Sampler.MinFilter = GL_LINEAR_MIPMAP_LINEAR; + tObj->Sampler.MagFilter = GL_NEAREST; } RevalidateTexture(ctx, tObj); diff --git a/src/mesa/drivers/dri/unichrome/via_context.c b/src/mesa/drivers/dri/unichrome/via_context.c index 77d7116611a..89c2a12a9c2 100644 --- a/src/mesa/drivers/dri/unichrome/via_context.c +++ b/src/mesa/drivers/dri/unichrome/via_context.c @@ -65,8 +65,6 @@ #define need_GL_EXT_secondary_color #include "main/remap_helper.h" -#define DRIVER_DATE "20060710" - #include "vblank.h" #include "utils.h" @@ -100,7 +98,7 @@ static const GLubyte *viaGetString(struct gl_context *ctx, GLenum name) offset = driGetRendererString( buffer, chipset_names[(id > VIA_PM800) ? 0 : id], - DRIVER_DATE, 0 ); + 0 ); return (GLubyte *)buffer; } diff --git a/src/mesa/drivers/dri/unichrome/via_state.c b/src/mesa/drivers/dri/unichrome/via_state.c index 774f439bfb6..3b270e02a97 100644 --- a/src/mesa/drivers/dri/unichrome/via_state.c +++ b/src/mesa/drivers/dri/unichrome/via_state.c @@ -877,21 +877,21 @@ static GLboolean viaChooseTextureState(struct gl_context *ctx) if (texUnit0->_ReallyEnabled) { struct gl_texture_object *texObj = texUnit0->_Current; - vmesa->regHTXnTB[0] = get_minmag_filter( texObj->MinFilter, - texObj->MagFilter ); + vmesa->regHTXnTB[0] = get_minmag_filter( texObj->Sampler.MinFilter, + texObj->Sampler.MagFilter ); vmesa->regHTXnMPMD[0] &= ~(HC_HTXnMPMD_SMASK | HC_HTXnMPMD_TMASK); - vmesa->regHTXnMPMD[0] |= get_wrap_mode( texObj->WrapS, - texObj->WrapT ); + vmesa->regHTXnMPMD[0] |= get_wrap_mode( texObj->Sampler.WrapS, + texObj->Sampler.WrapT ); vmesa->regHTXnTB[0] &= ~(HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T); if (texObj->Image[0][texObj->BaseLevel]->Border > 0) { vmesa->regHTXnTB[0] |= (HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T); vmesa->regHTXnTBC[0] = - PACK_COLOR_888(FLOAT_TO_UBYTE(texObj->BorderColor.f[0]), - FLOAT_TO_UBYTE(texObj->BorderColor.f[1]), - FLOAT_TO_UBYTE(texObj->BorderColor.f[2])); - vmesa->regHTXnTRAH[0] = FLOAT_TO_UBYTE(texObj->BorderColor.f[3]); + PACK_COLOR_888(FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[0]), + FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[1]), + FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[2])); + vmesa->regHTXnTRAH[0] = FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[3]); } if (texUnit0->LodBias != 0.0f) { @@ -911,20 +911,20 @@ static GLboolean viaChooseTextureState(struct gl_context *ctx) if (texUnit1->_ReallyEnabled) { struct gl_texture_object *texObj = texUnit1->_Current; - vmesa->regHTXnTB[1] = get_minmag_filter( texObj->MinFilter, - texObj->MagFilter ); + vmesa->regHTXnTB[1] = get_minmag_filter( texObj->Sampler.MinFilter, + texObj->Sampler.MagFilter ); vmesa->regHTXnMPMD[1] &= ~(HC_HTXnMPMD_SMASK | HC_HTXnMPMD_TMASK); - vmesa->regHTXnMPMD[1] |= get_wrap_mode( texObj->WrapS, - texObj->WrapT ); + vmesa->regHTXnMPMD[1] |= get_wrap_mode( texObj->Sampler.WrapS, + texObj->Sampler.WrapT ); vmesa->regHTXnTB[1] &= ~(HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T); if (texObj->Image[0][texObj->BaseLevel]->Border > 0) { vmesa->regHTXnTB[1] |= (HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T); vmesa->regHTXnTBC[1] = - PACK_COLOR_888(FLOAT_TO_UBYTE(texObj->BorderColor.f[0]), - FLOAT_TO_UBYTE(texObj->BorderColor.f[1]), - FLOAT_TO_UBYTE(texObj->BorderColor.f[2])); - vmesa->regHTXnTRAH[1] = FLOAT_TO_UBYTE(texObj->BorderColor.f[3]); + PACK_COLOR_888(FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[0]), + FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[1]), + FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[2])); + vmesa->regHTXnTRAH[1] = FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[3]); } diff --git a/src/mesa/drivers/dri/unichrome/via_tex.c b/src/mesa/drivers/dri/unichrome/via_tex.c index a2fb010e142..1a0d1eaf070 100644 --- a/src/mesa/drivers/dri/unichrome/via_tex.c +++ b/src/mesa/drivers/dri/unichrome/via_tex.c @@ -495,13 +495,13 @@ static GLboolean viaSetTexImages(struct gl_context *ctx, * GL_TEXTURE_MAX_LOD, GL_TEXTURE_BASE_LEVEL, and GL_TEXTURE_MAX_LEVEL. * Yes, this looks overly complicated, but it's all needed. */ - if (texObj->MinFilter == GL_LINEAR || texObj->MinFilter == GL_NEAREST) { + if (texObj->Sampler.MinFilter == GL_LINEAR || texObj->Sampler.MinFilter == GL_NEAREST) { firstLevel = lastLevel = texObj->BaseLevel; } else { - firstLevel = texObj->BaseLevel + (GLint)(texObj->MinLod + 0.5); + firstLevel = texObj->BaseLevel + (GLint)(texObj->Sampler.MinLod + 0.5); firstLevel = MAX2(firstLevel, texObj->BaseLevel); - lastLevel = texObj->BaseLevel + (GLint)(texObj->MaxLod + 0.5); + lastLevel = texObj->BaseLevel + (GLint)(texObj->Sampler.MaxLod + 0.5); lastLevel = MAX2(lastLevel, texObj->BaseLevel); lastLevel = MIN2(lastLevel, texObj->BaseLevel + baseImage->image.MaxLog2); lastLevel = MIN2(lastLevel, texObj->MaxLevel); diff --git a/src/mesa/drivers/osmesa/SConscript b/src/mesa/drivers/osmesa/SConscript new file mode 100644 index 00000000000..5ccef5f130c --- /dev/null +++ b/src/mesa/drivers/osmesa/SConscript @@ -0,0 +1,36 @@ +Import('*') + +env = env.Clone() + +env.Prepend(CPPPATH = [ + '#src/mapi', + '#src/mesa', +]) + +env.Prepend(LIBS = [ + glapi, + mesa, + glsl, +]) + +sources = [ + 'osmesa.c', +] + +if env['platform'] == 'windows': + env.AppendUnique(CPPDEFINES = [ + '_GDI32_', # prevent wgl* being declared __declspec(dllimport) + 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers + ]) + if not env['gles']: + # prevent _glapi_* from being declared __declspec(dllimport) + env.Append(CPPDEFINES = ['_GLAPI_NO_EXPORTS']) + + sources += ['osmesa.def'] + +osmesa = env.SharedLibrary( + target ='osmesa', + source = sources, +) + +env.Alias('osmesa', osmesa) diff --git a/src/mesa/drivers/osmesa/osmesa.c b/src/mesa/drivers/osmesa/osmesa.c index 98f01fe057e..68d71144642 100644 --- a/src/mesa/drivers/osmesa/osmesa.c +++ b/src/mesa/drivers/osmesa/osmesa.c @@ -515,11 +515,7 @@ do { \ PACK_RGBA(p, color[0], color[1], color[2], color[3]); \ } while (0) -#ifdef WIN32 -#include "..\swrast\s_linetemp.h" -#else #include "swrast/s_linetemp.h" -#endif @@ -544,11 +540,7 @@ do { \ } \ } while (0) -#ifdef WIN32 -#include "..\swrast\s_linetemp.h" -#else #include "swrast/s_linetemp.h" -#endif @@ -624,11 +616,7 @@ osmesa_choose_line_function( struct gl_context *ctx ) span.z += span.zStep; \ } \ } -#ifdef WIN32 -#include "..\swrast\s_tritemp.h" -#else #include "swrast/s_tritemp.h" -#endif @@ -656,11 +644,8 @@ osmesa_choose_line_function( struct gl_context *ctx ) span.z += span.zStep; \ } \ } -#ifdef WIN32 -#include "..\swrast\s_tritemp.h" -#else + #include "swrast/s_tritemp.h" -#endif diff --git a/src/mesa/drivers/windows/gdi/SConscript b/src/mesa/drivers/windows/gdi/SConscript new file mode 100644 index 00000000000..10a7eeaa19f --- /dev/null +++ b/src/mesa/drivers/windows/gdi/SConscript @@ -0,0 +1,38 @@ +Import('*') + +env = env.Clone() + +env.Prepend(CPPPATH = [ + '#src/mapi', + '#src/mesa', +]) + +env.AppendUnique(CPPDEFINES = [ + '_GDI32_', # prevent wgl* being declared __declspec(dllimport) + 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers +]) +if not env['gles']: + # prevent _glapi_* from being declared __declspec(dllimport) + env.Append(CPPDEFINES = ['_GLAPI_NO_EXPORTS']) + +env.Prepend(LIBS = [ + glapi, + mesa, + glsl, + 'gdi32', + 'user32', + 'kernel32', +]) + +sources = [ + 'mesa.def', + 'wgl.c', + 'wmesa.c', +] + +mesagdi = env.SharedLibrary( + target = 'opengl32', + source = sources, +) + +env.Alias('mesagdi', mesagdi) diff --git a/src/mesa/drivers/windows/gdi/mesa.def b/src/mesa/drivers/windows/gdi/mesa.def index b537b3460c5..d5c98801d32 100644 --- a/src/mesa/drivers/windows/gdi/mesa.def +++ b/src/mesa/drivers/windows/gdi/mesa.def @@ -26,9 +26,6 @@ VERSION 6.5 ; be needed (for the gl* functions) since the entry ; points are compiled with dllexport declspec. ; -; However, this file is still needed to export "internal" -; Mesa symbols for the benefit of the OSMESA32.DLL. -; EXPORTS glNewList glEndList @@ -857,107 +854,3 @@ EXPORTS wglUseFontOutlinesA wglUseFontOutlinesW wglGetExtensionsStringARB -; -; Mesa internals - mostly for OSMESA - _vbo_CreateContext - _vbo_DestroyContext - _vbo_InvalidateState - _glapi_check_multithread - _glapi_get_context - _glapi_get_proc_address - _mesa_add_soft_renderbuffers - _mesa_add_renderbuffer - _mesa_check_conditional_render - _mesa_choose_tex_format - _mesa_create_framebuffer - _mesa_create_visual - _mesa_delete_array_object - _mesa_delete_program - _mesa_delete_texture_object - _mesa_destroy_framebuffer - _mesa_destroy_visual - _mesa_enable_1_3_extensions - _mesa_enable_1_4_extensions - _mesa_enable_1_5_extensions - _mesa_enable_2_0_extensions - _mesa_enable_2_1_extensions - _mesa_enable_sw_extensions - _mesa_error - _mesa_finish_render_texture - _mesa_framebuffer_renderbuffer - _mesa_free_context_data - _mesa_free_texture_image_data - _mesa_generate_mipmap - _mesa_get_compressed_teximage - _mesa_get_current_context - _mesa_get_teximage - _mesa_init_driver_functions - _mesa_init_glsl_driver_functions - _mesa_init_renderbuffer - _mesa_initialize_context - _mesa_make_current - _mesa_new_array_object - _mesa_new_framebuffer - _mesa_new_program - _mesa_new_renderbuffer - _mesa_new_soft_renderbuffer - _mesa_new_texture_image - _mesa_new_texture_object - _mesa_problem - _mesa_reference_renderbuffer - _mesa_remove_renderbuffer - _mesa_render_texture - _mesa_ResizeBuffersMESA - _mesa_resize_framebuffer - _mesa_store_compressed_teximage1d - _mesa_store_compressed_teximage2d - _mesa_store_compressed_teximage3d - _mesa_store_compressed_texsubimage1d - _mesa_store_compressed_texsubimage2d - _mesa_store_compressed_texsubimage3d - _mesa_store_teximage1d - _mesa_store_teximage2d - _mesa_store_teximage3d - _mesa_store_texsubimage1d - _mesa_store_texsubimage2d - _mesa_store_texsubimage3d - _mesa_test_proxy_teximage - _mesa_reference_framebuffer - _mesa_update_framebuffer_visual - _mesa_use_program - _mesa_Viewport - _mesa_meta_init - _mesa_meta_free - _mesa_meta_CopyColorSubTable - _mesa_meta_CopyColorTable - _mesa_meta_CopyConvolutionFilter1D - _mesa_meta_CopyConvolutionFilter2D - _mesa_meta_CopyTexImage1D - _mesa_meta_CopyTexImage2D - _mesa_meta_CopyTexSubImage1D - _mesa_meta_CopyTexSubImage2D - _mesa_meta_CopyTexSubImage3D - _swrast_Accum - _swrast_Bitmap - _swrast_BlitFramebuffer - _swrast_CopyPixels - _swrast_DrawPixels - _swrast_GetDeviceDriverReference - _swrast_Clear - _swrast_choose_line - _swrast_choose_triangle - _swrast_CreateContext - _swrast_DestroyContext - _swrast_exec_fragment_program - _swrast_InvalidateState - _swrast_ReadPixels - _swsetup_Wakeup - _swsetup_CreateContext - _swsetup_DestroyContext - _swsetup_InvalidateState - _tnl_CreateContext - _tnl_DestroyContext - _tnl_InvalidateState - _tnl_run_pipeline - _tnl_program_string - _tnl_RasterPos diff --git a/src/mesa/drivers/windows/gdi/wgl.c b/src/mesa/drivers/windows/gdi/wgl.c index 8d8087067f5..1dafe6e2952 100644 --- a/src/mesa/drivers/windows/gdi/wgl.c +++ b/src/mesa/drivers/windows/gdi/wgl.c @@ -54,8 +54,8 @@ #include <windows.h> #endif -#include "config.h" -#include "glapi.h" +#include "main/config.h" +#include "glapi/glapi.h" #include "GL/wmesa.h" /* protos for wmesa* functions */ /* diff --git a/src/mesa/drivers/windows/gdi/wmesa.c b/src/mesa/drivers/windows/gdi/wmesa.c index 4a8b1b283d5..e3a37eb1ace 100644 --- a/src/mesa/drivers/windows/gdi/wmesa.c +++ b/src/mesa/drivers/windows/gdi/wmesa.c @@ -7,10 +7,11 @@ #include "colors.h" #include <GL/wmesa.h> #include <winuser.h> -#include "context.h" -#include "extensions.h" -#include "framebuffer.h" -#include "renderbuffer.h" +#include "main/context.h" +#include "main/extensions.h" +#include "main/framebuffer.h" +#include "main/renderbuffer.h" +#include "main/macros.h" #include "drivers/common/driverfuncs.h" #include "drivers/common/meta.h" #include "vbo/vbo.h" @@ -185,7 +186,7 @@ BOOL wmCreateBackingStore(WMesaFramebuffer pwfb, long lxSize, long lySize) } -static wmDeleteBackingStore(WMesaFramebuffer pwfb) +static void wmDeleteBackingStore(WMesaFramebuffer pwfb) { if (pwfb->hbmDIB) { SelectObject(pwfb->dib_hDC, pwfb->hOldBitmap); diff --git a/src/mesa/drivers/windows/gdi/wmesadef.h b/src/mesa/drivers/windows/gdi/wmesadef.h index a73609b007a..32289ebc700 100644 --- a/src/mesa/drivers/windows/gdi/wmesadef.h +++ b/src/mesa/drivers/windows/gdi/wmesadef.h @@ -3,7 +3,7 @@ #ifdef __MINGW32__ #include <windows.h> #endif -#include "context.h" +#include "main/context.h" /** diff --git a/src/mesa/main/api_arrayelt.c b/src/mesa/main/api_arrayelt.c index b429e2627e3..f88da845853 100644 --- a/src/mesa/main/api_arrayelt.c +++ b/src/mesa/main/api_arrayelt.c @@ -175,31 +175,31 @@ static int FogCoordFuncs[NUM_TYPES]; /* GL_BYTE attributes */ -static void +static void GLAPIENTRY VertexAttrib1NbvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1bvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NbvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2bvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NbvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), @@ -207,13 +207,13 @@ VertexAttrib3NbvNV(GLuint index, const GLbyte *v) BYTE_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3bvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NbvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), @@ -222,7 +222,7 @@ VertexAttrib4NbvNV(GLuint index, const GLbyte *v) BYTE_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4bvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3])); @@ -230,46 +230,46 @@ VertexAttrib4bvNV(GLuint index, const GLbyte *v) /* GL_UNSIGNED_BYTE attributes */ -static void +static void GLAPIENTRY VertexAttrib1NubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1ubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2ubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), UBYTE_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3ubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]), @@ -278,7 +278,7 @@ VertexAttrib4NubvNV(GLuint index, const GLubyte *v) UBYTE_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4ubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], @@ -288,32 +288,32 @@ VertexAttrib4ubvNV(GLuint index, const GLubyte *v) /* GL_SHORT attributes */ -static void +static void GLAPIENTRY VertexAttrib1NsvNV(GLuint index, const GLshort *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1svNV(GLuint index, const GLshort *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NsvNV(GLuint index, const GLshort *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2svNV(GLuint index, const GLshort *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NsvNV(GLuint index, const GLshort *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]), @@ -321,14 +321,14 @@ VertexAttrib3NsvNV(GLuint index, const GLshort *v) SHORT_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3svNV(GLuint index, const GLshort *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NsvNV(GLuint index, const GLshort *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]), @@ -337,7 +337,7 @@ VertexAttrib4NsvNV(GLuint index, const GLshort *v) SHORT_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4svNV(GLuint index, const GLshort *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], @@ -346,33 +346,33 @@ VertexAttrib4svNV(GLuint index, const GLshort *v) /* GL_UNSIGNED_SHORT attributes */ -static void +static void GLAPIENTRY VertexAttrib1NusvNV(GLuint index, const GLushort *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1usvNV(GLuint index, const GLushort *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NusvNV(GLuint index, const GLushort *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2usvNV(GLuint index, const GLushort *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NusvNV(GLuint index, const GLushort *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]), @@ -380,14 +380,14 @@ VertexAttrib3NusvNV(GLuint index, const GLushort *v) USHORT_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3usvNV(GLuint index, const GLushort *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NusvNV(GLuint index, const GLushort *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]), @@ -396,7 +396,7 @@ VertexAttrib4NusvNV(GLuint index, const GLushort *v) USHORT_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4usvNV(GLuint index, const GLushort *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], @@ -405,32 +405,32 @@ VertexAttrib4usvNV(GLuint index, const GLushort *v) /* GL_INT attributes */ -static void +static void GLAPIENTRY VertexAttrib1NivNV(GLuint index, const GLint *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1ivNV(GLuint index, const GLint *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NivNV(GLuint index, const GLint *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2ivNV(GLuint index, const GLint *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NivNV(GLuint index, const GLint *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]), @@ -438,14 +438,14 @@ VertexAttrib3NivNV(GLuint index, const GLint *v) INT_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3ivNV(GLuint index, const GLint *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NivNV(GLuint index, const GLint *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]), @@ -454,7 +454,7 @@ VertexAttrib4NivNV(GLuint index, const GLint *v) INT_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4ivNV(GLuint index, const GLint *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], @@ -463,33 +463,33 @@ VertexAttrib4ivNV(GLuint index, const GLint *v) /* GL_UNSIGNED_INT attributes */ -static void +static void GLAPIENTRY VertexAttrib1NuivNV(GLuint index, const GLuint *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1uivNV(GLuint index, const GLuint *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NuivNV(GLuint index, const GLuint *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2uivNV(GLuint index, const GLuint *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NuivNV(GLuint index, const GLuint *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]), @@ -497,14 +497,14 @@ VertexAttrib3NuivNV(GLuint index, const GLuint *v) UINT_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3uivNV(GLuint index, const GLuint *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NuivNV(GLuint index, const GLuint *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]), @@ -513,7 +513,7 @@ VertexAttrib4NuivNV(GLuint index, const GLuint *v) UINT_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4uivNV(GLuint index, const GLuint *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], @@ -522,25 +522,25 @@ VertexAttrib4uivNV(GLuint index, const GLuint *v) /* GL_FLOAT attributes */ -static void +static void GLAPIENTRY VertexAttrib1fvNV(GLuint index, const GLfloat *v) { CALL_VertexAttrib1fvNV(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib2fvNV(GLuint index, const GLfloat *v) { CALL_VertexAttrib2fvNV(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib3fvNV(GLuint index, const GLfloat *v) { CALL_VertexAttrib3fvNV(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib4fvNV(GLuint index, const GLfloat *v) { CALL_VertexAttrib4fvNV(GET_DISPATCH(), (index, v)); @@ -548,25 +548,25 @@ VertexAttrib4fvNV(GLuint index, const GLfloat *v) /* GL_DOUBLE attributes */ -static void +static void GLAPIENTRY VertexAttrib1dvNV(GLuint index, const GLdouble *v) { CALL_VertexAttrib1dvNV(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib2dvNV(GLuint index, const GLdouble *v) { CALL_VertexAttrib2dvNV(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib3dvNV(GLuint index, const GLdouble *v) { CALL_VertexAttrib3dvNV(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib4dvNV(GLuint index, const GLdouble *v) { CALL_VertexAttrib4dvNV(GET_DISPATCH(), (index, v)); @@ -680,31 +680,31 @@ static attrib_func AttribFuncsNV[2][4][NUM_TYPES] = { /* GL_BYTE attributes */ -static void +static void GLAPIENTRY VertexAttrib1NbvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1bvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NbvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2bvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NbvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), @@ -712,13 +712,13 @@ VertexAttrib3NbvARB(GLuint index, const GLbyte *v) BYTE_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3bvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NbvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), @@ -727,7 +727,7 @@ VertexAttrib4NbvARB(GLuint index, const GLbyte *v) BYTE_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4bvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3])); @@ -735,19 +735,19 @@ VertexAttrib4bvARB(GLuint index, const GLbyte *v) /* GL_UNSIGNED_BYTE attributes */ -static void +static void GLAPIENTRY VertexAttrib1NubvARB(GLuint index, const GLubyte *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1ubvARB(GLuint index, const GLubyte *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NubvARB(GLuint index, const GLubyte *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, @@ -755,14 +755,14 @@ VertexAttrib2NubvARB(GLuint index, const GLubyte *v) UBYTE_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2ubvARB(GLuint index, const GLubyte *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NubvARB(GLuint index, const GLubyte *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, @@ -770,7 +770,7 @@ VertexAttrib3NubvARB(GLuint index, const GLubyte *v) UBYTE_TO_FLOAT(v[1]), UBYTE_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3ubvARB(GLuint index, const GLubyte *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, @@ -779,7 +779,7 @@ VertexAttrib3ubvARB(GLuint index, const GLubyte *v) (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NubvARB(GLuint index, const GLubyte *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), @@ -790,7 +790,7 @@ VertexAttrib4NubvARB(GLuint index, const GLubyte *v) UBYTE_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4ubvARB(GLuint index, const GLubyte *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), @@ -801,19 +801,19 @@ VertexAttrib4ubvARB(GLuint index, const GLubyte *v) /* GL_SHORT attributes */ -static void +static void GLAPIENTRY VertexAttrib1NsvARB(GLuint index, const GLshort *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1svARB(GLuint index, const GLshort *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NsvARB(GLuint index, const GLshort *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), @@ -821,14 +821,14 @@ VertexAttrib2NsvARB(GLuint index, const GLshort *v) SHORT_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2svARB(GLuint index, const GLshort *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NsvARB(GLuint index, const GLshort *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), @@ -838,7 +838,7 @@ VertexAttrib3NsvARB(GLuint index, const GLshort *v) SHORT_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3svARB(GLuint index, const GLshort *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), @@ -846,7 +846,7 @@ VertexAttrib3svARB(GLuint index, const GLshort *v) (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NsvARB(GLuint index, const GLshort *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), @@ -857,7 +857,7 @@ VertexAttrib4NsvARB(GLuint index, const GLshort *v) SHORT_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4svARB(GLuint index, const GLshort *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], @@ -866,33 +866,33 @@ VertexAttrib4svARB(GLuint index, const GLshort *v) /* GL_UNSIGNED_SHORT attributes */ -static void +static void GLAPIENTRY VertexAttrib1NusvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1usvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NusvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2usvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NusvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]), @@ -900,14 +900,14 @@ VertexAttrib3NusvARB(GLuint index, const GLushort *v) USHORT_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3usvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NusvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]), @@ -916,7 +916,7 @@ VertexAttrib4NusvARB(GLuint index, const GLushort *v) USHORT_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4usvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3])); @@ -924,33 +924,33 @@ VertexAttrib4usvARB(GLuint index, const GLushort *v) /* GL_INT attributes */ -static void +static void GLAPIENTRY VertexAttrib1NivARB(GLuint index, const GLint *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1ivARB(GLuint index, const GLint *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NivARB(GLuint index, const GLint *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2ivARB(GLuint index, const GLint *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NivARB(GLuint index, const GLint *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]), @@ -958,14 +958,14 @@ VertexAttrib3NivARB(GLuint index, const GLint *v) INT_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3ivARB(GLuint index, const GLint *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NivARB(GLuint index, const GLint *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]), @@ -974,7 +974,7 @@ VertexAttrib4NivARB(GLuint index, const GLint *v) INT_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4ivARB(GLuint index, const GLint *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], @@ -983,33 +983,33 @@ VertexAttrib4ivARB(GLuint index, const GLint *v) /* GL_UNSIGNED_INT attributes */ -static void +static void GLAPIENTRY VertexAttrib1NuivARB(GLuint index, const GLuint *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1uivARB(GLuint index, const GLuint *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NuivARB(GLuint index, const GLuint *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2uivARB(GLuint index, const GLuint *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NuivARB(GLuint index, const GLuint *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]), @@ -1017,14 +1017,14 @@ VertexAttrib3NuivARB(GLuint index, const GLuint *v) UINT_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3uivARB(GLuint index, const GLuint *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NuivARB(GLuint index, const GLuint *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]), @@ -1033,7 +1033,7 @@ VertexAttrib4NuivARB(GLuint index, const GLuint *v) UINT_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4uivARB(GLuint index, const GLuint *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], @@ -1042,25 +1042,25 @@ VertexAttrib4uivARB(GLuint index, const GLuint *v) /* GL_FLOAT attributes */ -static void +static void GLAPIENTRY VertexAttrib1fvARB(GLuint index, const GLfloat *v) { CALL_VertexAttrib1fvARB(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib2fvARB(GLuint index, const GLfloat *v) { CALL_VertexAttrib2fvARB(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib3fvARB(GLuint index, const GLfloat *v) { CALL_VertexAttrib3fvARB(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib4fvARB(GLuint index, const GLfloat *v) { CALL_VertexAttrib4fvARB(GET_DISPATCH(), (index, v)); @@ -1068,25 +1068,25 @@ VertexAttrib4fvARB(GLuint index, const GLfloat *v) /* GL_DOUBLE attributes */ -static void +static void GLAPIENTRY VertexAttrib1dvARB(GLuint index, const GLdouble *v) { CALL_VertexAttrib1dvARB(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib2dvARB(GLuint index, const GLdouble *v) { CALL_VertexAttrib2dvARB(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib3dvARB(GLuint index, const GLdouble *v) { CALL_VertexAttrib3dvARB(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib4dvARB(GLuint index, const GLdouble *v) { CALL_VertexAttrib4dvARB(GET_DISPATCH(), (index, v)); @@ -1096,50 +1096,50 @@ VertexAttrib4dvARB(GLuint index, const GLdouble *v) /** * Integer-valued attributes */ -static void +static void GLAPIENTRY VertexAttribI1bv(GLuint index, const GLbyte *v) { CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index, v[0])); } -static void +static void GLAPIENTRY VertexAttribI2bv(GLuint index, const GLbyte *v) { CALL_VertexAttribI2iEXT(GET_DISPATCH(), (index, v[0], v[1])); } -static void +static void GLAPIENTRY VertexAttribI3bv(GLuint index, const GLbyte *v) { CALL_VertexAttribI3iEXT(GET_DISPATCH(), (index, v[0], v[1], v[2])); } -static void +static void GLAPIENTRY VertexAttribI4bv(GLuint index, const GLbyte *v) { CALL_VertexAttribI4bvEXT(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttribI1ubv(GLuint index, const GLubyte *v) { CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index, v[0])); } -static void +static void GLAPIENTRY VertexAttribI2ubv(GLuint index, const GLubyte *v) { CALL_VertexAttribI2uiEXT(GET_DISPATCH(), (index, v[0], v[1])); } -static void +static void GLAPIENTRY VertexAttribI3ubv(GLuint index, const GLubyte *v) { CALL_VertexAttribI3uiEXT(GET_DISPATCH(), (index, v[0], v[1], v[2])); } -static void +static void GLAPIENTRY VertexAttribI4ubv(GLuint index, const GLubyte *v) { CALL_VertexAttribI4ubvEXT(GET_DISPATCH(), (index, v)); @@ -1147,50 +1147,50 @@ VertexAttribI4ubv(GLuint index, const GLubyte *v) -static void +static void GLAPIENTRY VertexAttribI1sv(GLuint index, const GLshort *v) { CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index, v[0])); } -static void +static void GLAPIENTRY VertexAttribI2sv(GLuint index, const GLshort *v) { CALL_VertexAttribI2iEXT(GET_DISPATCH(), (index, v[0], v[1])); } -static void +static void GLAPIENTRY VertexAttribI3sv(GLuint index, const GLshort *v) { CALL_VertexAttribI3iEXT(GET_DISPATCH(), (index, v[0], v[1], v[2])); } -static void +static void GLAPIENTRY VertexAttribI4sv(GLuint index, const GLshort *v) { CALL_VertexAttribI4svEXT(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttribI1usv(GLuint index, const GLushort *v) { CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index, v[0])); } -static void +static void GLAPIENTRY VertexAttribI2usv(GLuint index, const GLushort *v) { CALL_VertexAttribI2uiEXT(GET_DISPATCH(), (index, v[0], v[1])); } -static void +static void GLAPIENTRY VertexAttribI3usv(GLuint index, const GLushort *v) { CALL_VertexAttribI3uiEXT(GET_DISPATCH(), (index, v[0], v[1], v[2])); } -static void +static void GLAPIENTRY VertexAttribI4usv(GLuint index, const GLushort *v) { CALL_VertexAttribI4usvEXT(GET_DISPATCH(), (index, v)); @@ -1198,50 +1198,50 @@ VertexAttribI4usv(GLuint index, const GLushort *v) -static void +static void GLAPIENTRY VertexAttribI1iv(GLuint index, const GLint *v) { CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index, v[0])); } -static void +static void GLAPIENTRY VertexAttribI2iv(GLuint index, const GLint *v) { CALL_VertexAttribI2iEXT(GET_DISPATCH(), (index, v[0], v[1])); } -static void +static void GLAPIENTRY VertexAttribI3iv(GLuint index, const GLint *v) { CALL_VertexAttribI3iEXT(GET_DISPATCH(), (index, v[0], v[1], v[2])); } -static void +static void GLAPIENTRY VertexAttribI4iv(GLuint index, const GLint *v) { CALL_VertexAttribI4ivEXT(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttribI1uiv(GLuint index, const GLuint *v) { CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index, v[0])); } -static void +static void GLAPIENTRY VertexAttribI2uiv(GLuint index, const GLuint *v) { CALL_VertexAttribI2uiEXT(GET_DISPATCH(), (index, v[0], v[1])); } -static void +static void GLAPIENTRY VertexAttribI3uiv(GLuint index, const GLuint *v) { CALL_VertexAttribI3uiEXT(GET_DISPATCH(), (index, v[0], v[1], v[2])); } -static void +static void GLAPIENTRY VertexAttribI4uiv(GLuint index, const GLuint *v) { CALL_VertexAttribI4uivEXT(GET_DISPATCH(), (index, v)); diff --git a/src/mesa/main/api_exec.c b/src/mesa/main/api_exec.c index 4da48936484..d0298df20cb 100644 --- a/src/mesa/main/api_exec.c +++ b/src/mesa/main/api_exec.c @@ -78,6 +78,9 @@ #include "polygon.h" #include "queryobj.h" #include "readpix.h" +#if FEATURE_ARB_sampler_objects +#include "samplerobj.h" +#endif #include "scissor.h" #include "stencil.h" #include "texenv.h" @@ -691,6 +694,8 @@ _mesa_create_exec_table(void) SET_FramebufferTextureFaceARB(exec, _mesa_FramebufferTextureFaceARB); #endif + SET_ClampColorARB(exec, _mesa_ClampColorARB); + /* GL_EXT_texture_integer */ SET_ClearColorIiEXT(exec, _mesa_ClearColorIiEXT); SET_ClearColorIuiEXT(exec, _mesa_ClearColorIuiEXT); @@ -724,6 +729,13 @@ _mesa_create_exec_table(void) /* GL_NV_texture_barrier */ SET_TextureBarrierNV(exec, _mesa_TextureBarrierNV); + /* GL_ARB_texture_buffer_object */ + SET_TexBufferARB(exec, _mesa_TexBuffer); + +#if FEATURE_ARB_sampler_objects + _mesa_init_sampler_object_dispatch(exec); +#endif + return exec; } diff --git a/src/mesa/main/arrayobj.c b/src/mesa/main/arrayobj.c index 46010223370..4bfb2424004 100644 --- a/src/mesa/main/arrayobj.c +++ b/src/mesa/main/arrayobj.c @@ -41,6 +41,7 @@ #include "glheader.h" #include "hash.h" +#include "image.h" #include "imports.h" #include "context.h" #include "mfeatures.h" @@ -50,6 +51,7 @@ #include "arrayobj.h" #include "macros.h" #include "mtypes.h" +#include "varray.h" #include "main/dispatch.h" @@ -206,6 +208,7 @@ init_array(struct gl_context *ctx, array->Ptr = NULL; array->Enabled = GL_FALSE; array->Normalized = GL_FALSE; + array->_ElementSize = size * _mesa_sizeof_type(type); #if FEATURE_ARB_vertex_buffer_object /* Vertex array buffers */ _mesa_reference_buffer_object(ctx, &array->BufferObj, @@ -280,44 +283,13 @@ remove_array_object( struct gl_context *ctx, struct gl_array_object *obj ) /** - * Compute the index of the last array element that can be safely accessed - * in a vertex array. We can really only do this when the array lives in - * a VBO. - * The array->_MaxElement field will be updated. - * Later in glDrawArrays/Elements/etc we can do some bounds checking. - */ -static void -compute_max_element(struct gl_client_array *array) -{ - if (array->BufferObj->Name) { - /* Compute the max element we can access in the VBO without going - * out of bounds. - */ - array->_MaxElement = ((GLsizeiptrARB) array->BufferObj->Size - - (GLsizeiptrARB) array->Ptr + array->StrideB - - array->_ElementSize) / array->StrideB; - if (0) - printf("%s Object %u Size %u MaxElement %u\n", - __FUNCTION__, - array->BufferObj->Name, - (GLuint) array->BufferObj->Size, - array->_MaxElement); - } - else { - /* user-space array, no idea how big it is */ - array->_MaxElement = 2 * 1000 * 1000 * 1000; /* just a big number */ - } -} - - -/** * Helper for update_arrays(). * \return min(current min, array->_MaxElement). */ static GLuint update_min(GLuint min, struct gl_client_array *array) { - compute_max_element(array); + _mesa_update_array_max_element(array); if (array->Enabled) return MIN2(min, array->_MaxElement); else @@ -497,7 +469,8 @@ _mesa_DeleteVertexArraysAPPLE(GLsizei n, const GLuint *ids) * \param vboOnly Will arrays have to reside in VBOs? */ static void -gen_vertex_arrays(struct gl_context *ctx, GLsizei n, GLuint *arrays, GLboolean vboOnly) +gen_vertex_arrays(struct gl_context *ctx, GLsizei n, GLuint *arrays, + GLboolean vboOnly) { GLuint first; GLint i; diff --git a/src/mesa/main/atifragshader.c b/src/mesa/main/atifragshader.c index 44097e1a266..c74c999f808 100644 --- a/src/mesa/main/atifragshader.c +++ b/src/mesa/main/atifragshader.c @@ -494,7 +494,7 @@ _mesa_PassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle) } } - curProg->regsAssigned[curProg->cur_pass >> 1] |= 1 << (dst - GL_REG_0_ATI); + curProg->regsAssigned[curProg->cur_pass >> 1] |= 1 << (dst - GL_REG_0_ATI); new_tex_inst(curProg); /* add the instructions */ @@ -567,7 +567,7 @@ _mesa_SampleMapATI(GLuint dst, GLuint interp, GLenum swizzle) } } - curProg->regsAssigned[curProg->cur_pass >> 1] |= 1 << (dst - GL_REG_0_ATI); + curProg->regsAssigned[curProg->cur_pass >> 1] |= 1 << (dst - GL_REG_0_ATI); new_tex_inst(curProg); /* add the instructions */ diff --git a/src/mesa/main/attrib.c b/src/mesa/main/attrib.c index ae7f633b8d8..57310040235 100644 --- a/src/mesa/main/attrib.c +++ b/src/mesa/main/attrib.c @@ -770,6 +770,7 @@ pop_texture_group(struct gl_context *ctx, struct texture_state *texstate) /* Restore texture object state for each target */ for (tgt = 0; tgt < NUM_TEXTURE_TARGETS; tgt++) { const struct gl_texture_object *obj = NULL; + const struct gl_sampler_object *samp; GLenum target; obj = &texstate->SavedObj[u][tgt]; @@ -790,31 +791,35 @@ pop_texture_group(struct gl_context *ctx, struct texture_state *texstate) !ctx->Extensions.MESA_texture_array) { continue; } + else if (obj->Target == GL_TEXTURE_BUFFER) + continue; target = obj->Target; _mesa_BindTexture(target, obj->Name); - _mesa_TexParameterfv(target, GL_TEXTURE_BORDER_COLOR, obj->BorderColor.f); + samp = &obj->Sampler; + + _mesa_TexParameterfv(target, GL_TEXTURE_BORDER_COLOR, samp->BorderColor.f); + _mesa_TexParameteri(target, GL_TEXTURE_WRAP_S, samp->WrapS); + _mesa_TexParameteri(target, GL_TEXTURE_WRAP_T, samp->WrapT); + _mesa_TexParameteri(target, GL_TEXTURE_WRAP_R, samp->WrapR); + _mesa_TexParameteri(target, GL_TEXTURE_MIN_FILTER, samp->MinFilter); + _mesa_TexParameteri(target, GL_TEXTURE_MAG_FILTER, samp->MagFilter); + _mesa_TexParameterf(target, GL_TEXTURE_MIN_LOD, samp->MinLod); + _mesa_TexParameterf(target, GL_TEXTURE_MAX_LOD, samp->MaxLod); + _mesa_TexParameterf(target, GL_TEXTURE_LOD_BIAS, samp->LodBias); _mesa_TexParameterf(target, GL_TEXTURE_PRIORITY, obj->Priority); - _mesa_TexParameteri(target, GL_TEXTURE_WRAP_S, obj->WrapS); - _mesa_TexParameteri(target, GL_TEXTURE_WRAP_T, obj->WrapT); - _mesa_TexParameteri(target, GL_TEXTURE_WRAP_R, obj->WrapR); - _mesa_TexParameteri(target, GL_TEXTURE_MIN_FILTER, obj->MinFilter); - _mesa_TexParameteri(target, GL_TEXTURE_MAG_FILTER, obj->MagFilter); - _mesa_TexParameterf(target, GL_TEXTURE_MIN_LOD, obj->MinLod); - _mesa_TexParameterf(target, GL_TEXTURE_MAX_LOD, obj->MaxLod); - _mesa_TexParameterf(target, GL_TEXTURE_LOD_BIAS, obj->LodBias); _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, obj->BaseLevel); if (target != GL_TEXTURE_RECTANGLE_ARB) _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, obj->MaxLevel); if (ctx->Extensions.EXT_texture_filter_anisotropic) { _mesa_TexParameterf(target, GL_TEXTURE_MAX_ANISOTROPY_EXT, - obj->MaxAnisotropy); + samp->MaxAnisotropy); } if (ctx->Extensions.ARB_shadow_ambient) { _mesa_TexParameterf(target, GL_TEXTURE_COMPARE_FAIL_VALUE_ARB, - obj->CompareFailValue); + samp->CompareFailValue); } } @@ -879,10 +884,10 @@ _mesa_PopAttrib(void) color = (const struct gl_colorbuffer_attrib *) attr->data; _mesa_ClearIndex((GLfloat) color->ClearIndex); - _mesa_ClearColor(color->ClearColor[0], - color->ClearColor[1], - color->ClearColor[2], - color->ClearColor[3]); + _mesa_ClearColor(color->ClearColorUnclamped[0], + color->ClearColorUnclamped[1], + color->ClearColorUnclamped[2], + color->ClearColorUnclamped[3]); _mesa_IndexMask(color->IndexMask); if (!ctx->Extensions.EXT_draw_buffers2) { _mesa_ColorMask((GLboolean) (color->ColorMask[0][0] != 0), @@ -930,7 +935,7 @@ _mesa_PopAttrib(void) _mesa_DrawBuffer(color->DrawBuffer[0]); } _mesa_set_enable(ctx, GL_ALPHA_TEST, color->AlphaEnabled); - _mesa_AlphaFunc(color->AlphaFunc, color->AlphaRef); + _mesa_AlphaFunc(color->AlphaFunc, color->AlphaRefUnclamped); if (ctx->Color.BlendEnabled != color->BlendEnabled) { if (ctx->Extensions.EXT_draw_buffers2) { GLuint i; @@ -976,16 +981,18 @@ _mesa_PopAttrib(void) color->Blend[0].EquationA); } } - _mesa_BlendColor(color->BlendColor[0], - color->BlendColor[1], - color->BlendColor[2], - color->BlendColor[3]); + _mesa_BlendColor(color->BlendColorUnclamped[0], + color->BlendColorUnclamped[1], + color->BlendColorUnclamped[2], + color->BlendColorUnclamped[3]); _mesa_LogicOp(color->LogicOp); _mesa_set_enable(ctx, GL_COLOR_LOGIC_OP, color->ColorLogicOpEnabled); _mesa_set_enable(ctx, GL_INDEX_LOGIC_OP, color->IndexLogicOpEnabled); _mesa_set_enable(ctx, GL_DITHER, color->DitherFlag); + _mesa_ClampColorARB(GL_CLAMP_FRAGMENT_COLOR_ARB, color->ClampFragmentColor); + _mesa_ClampColorARB(GL_CLAMP_READ_COLOR_ARB, color->ClampReadColor); } break; case GL_CURRENT_BIT: @@ -1108,6 +1115,7 @@ _mesa_PopAttrib(void) /* materials */ memcpy(&ctx->Light.Material, &light->Material, sizeof(struct gl_material)); + _mesa_ClampColorARB(GL_CLAMP_VERTEX_COLOR_ARB, light->ClampVertexColor); } break; case GL_LINE_BIT: diff --git a/src/mesa/main/blend.c b/src/mesa/main/blend.c index c74a168036a..95c101c34ae 100644 --- a/src/mesa/main/blend.c +++ b/src/mesa/main/blend.c @@ -513,19 +513,24 @@ _mesa_BlendColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); - tmp[0] = CLAMP( red, 0.0F, 1.0F ); - tmp[1] = CLAMP( green, 0.0F, 1.0F ); - tmp[2] = CLAMP( blue, 0.0F, 1.0F ); - tmp[3] = CLAMP( alpha, 0.0F, 1.0F ); + tmp[0] = red; + tmp[1] = green; + tmp[2] = blue; + tmp[3] = alpha; - if (TEST_EQ_4V(tmp, ctx->Color.BlendColor)) + if (TEST_EQ_4V(tmp, ctx->Color.BlendColorUnclamped)) return; FLUSH_VERTICES(ctx, _NEW_COLOR); - COPY_4FV( ctx->Color.BlendColor, tmp ); + COPY_4FV( ctx->Color.BlendColorUnclamped, tmp ); + + ctx->Color.BlendColor[0] = CLAMP(tmp[0], 0.0F, 1.0F); + ctx->Color.BlendColor[1] = CLAMP(tmp[1], 0.0F, 1.0F); + ctx->Color.BlendColor[2] = CLAMP(tmp[2], 0.0F, 1.0F); + ctx->Color.BlendColor[3] = CLAMP(tmp[3], 0.0F, 1.0F); if (ctx->Driver.BlendColor) - (*ctx->Driver.BlendColor)(ctx, tmp); + (*ctx->Driver.BlendColor)(ctx, ctx->Color.BlendColor); } @@ -558,17 +563,16 @@ _mesa_AlphaFunc( GLenum func, GLclampf ref ) case GL_NOTEQUAL: case GL_GEQUAL: case GL_ALWAYS: - ref = CLAMP(ref, 0.0F, 1.0F); - - if (ctx->Color.AlphaFunc == func && ctx->Color.AlphaRef == ref) + if (ctx->Color.AlphaFunc == func && ctx->Color.AlphaRefUnclamped == ref) return; /* no change */ FLUSH_VERTICES(ctx, _NEW_COLOR); ctx->Color.AlphaFunc = func; - ctx->Color.AlphaRef = ref; + ctx->Color.AlphaRefUnclamped = ref; + ctx->Color.AlphaRef = CLAMP(ref, 0.0F, 1.0F); if (ctx->Driver.AlphaFunc) - ctx->Driver.AlphaFunc(ctx, func, ref); + ctx->Driver.AlphaFunc(ctx, func, ctx->Color.AlphaRef); return; default: @@ -737,7 +741,7 @@ _mesa_ColorMaskIndexed( GLuint buf, GLboolean red, GLboolean green, } -extern void GLAPIENTRY +void GLAPIENTRY _mesa_ClampColorARB(GLenum target, GLenum clamp) { GET_CURRENT_CONTEXT(ctx); @@ -751,12 +755,15 @@ _mesa_ClampColorARB(GLenum target, GLenum clamp) switch (target) { case GL_CLAMP_VERTEX_COLOR_ARB: + FLUSH_VERTICES(ctx, _NEW_LIGHT); ctx->Light.ClampVertexColor = clamp; break; case GL_CLAMP_FRAGMENT_COLOR_ARB: + FLUSH_VERTICES(ctx, _NEW_FRAG_CLAMP); ctx->Color.ClampFragmentColor = clamp; break; case GL_CLAMP_READ_COLOR_ARB: + FLUSH_VERTICES(ctx, _NEW_COLOR); ctx->Color.ClampReadColor = clamp; break; default: @@ -789,6 +796,7 @@ void _mesa_init_color( struct gl_context * ctx ) memset(ctx->Color.ColorMask, 0xff, sizeof(ctx->Color.ColorMask)); ctx->Color.ClearIndex = 0; ASSIGN_4V( ctx->Color.ClearColor, 0, 0, 0, 0 ); + ASSIGN_4V( ctx->Color.ClearColorUnclamped, 0, 0, 0, 0 ); ctx->Color.AlphaEnabled = GL_FALSE; ctx->Color.AlphaFunc = GL_ALWAYS; ctx->Color.AlphaRef = 0; @@ -802,6 +810,7 @@ void _mesa_init_color( struct gl_context * ctx ) ctx->Color.Blend[i].EquationA = GL_FUNC_ADD; } ASSIGN_4V( ctx->Color.BlendColor, 0.0, 0.0, 0.0, 0.0 ); + ASSIGN_4V( ctx->Color.BlendColorUnclamped, 0.0, 0.0, 0.0, 0.0 ); ctx->Color.IndexLogicOpEnabled = GL_FALSE; ctx->Color.ColorLogicOpEnabled = GL_FALSE; ctx->Color._LogicOpEnabled = GL_FALSE; @@ -816,7 +825,9 @@ void _mesa_init_color( struct gl_context * ctx ) } ctx->Color.ClampFragmentColor = GL_FIXED_ONLY_ARB; + ctx->Color._ClampFragmentColor = GL_TRUE; ctx->Color.ClampReadColor = GL_FIXED_ONLY_ARB; + ctx->Color._ClampReadColor = GL_TRUE; } /*@}*/ diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c index 3343bb2f40e..78105883c97 100644 --- a/src/mesa/main/bufferobj.c +++ b/src/mesa/main/bufferobj.c @@ -93,6 +93,11 @@ get_buffer_target(struct gl_context *ctx, GLenum target) } break; #endif + case GL_TEXTURE_BUFFER: + if (ctx->Extensions.ARB_texture_buffer_object) { + return &ctx->Texture.BufferObject; + } + break; default: return NULL; } @@ -216,7 +221,8 @@ _mesa_new_buffer_object( struct gl_context *ctx, GLuint name, GLenum target ) * Default callback for the \c dd_function_table::DeleteBuffer() hook. */ static void -_mesa_delete_buffer_object( struct gl_context *ctx, struct gl_buffer_object *bufObj ) +_mesa_delete_buffer_object(struct gl_context *ctx, + struct gl_buffer_object *bufObj) { (void) ctx; @@ -414,7 +420,8 @@ _mesa_buffer_subdata( struct gl_context *ctx, GLenum target, GLintptrARB offset, * \sa glBufferGetSubDataARB, dd_function_table::GetBufferSubData. */ static void -_mesa_buffer_get_subdata( struct gl_context *ctx, GLenum target, GLintptrARB offset, +_mesa_buffer_get_subdata( struct gl_context *ctx, + GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data, struct gl_buffer_object * bufObj ) { @@ -1536,7 +1543,7 @@ _mesa_FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) #if FEATURE_APPLE_object_purgeable static GLenum -_mesa_BufferObjectPurgeable(struct gl_context *ctx, GLuint name, GLenum option) +buffer_object_purgeable(struct gl_context *ctx, GLuint name, GLenum option) { struct gl_buffer_object *bufObj; GLenum retval; @@ -1569,7 +1576,7 @@ _mesa_BufferObjectPurgeable(struct gl_context *ctx, GLuint name, GLenum option) static GLenum -_mesa_RenderObjectPurgeable(struct gl_context *ctx, GLuint name, GLenum option) +renderbuffer_purgeable(struct gl_context *ctx, GLuint name, GLenum option) { struct gl_renderbuffer *bufObj; GLenum retval; @@ -1598,7 +1605,7 @@ _mesa_RenderObjectPurgeable(struct gl_context *ctx, GLuint name, GLenum option) static GLenum -_mesa_TextureObjectPurgeable(struct gl_context *ctx, GLuint name, GLenum option) +texture_object_purgeable(struct gl_context *ctx, GLuint name, GLenum option) { struct gl_texture_object *bufObj; GLenum retval; @@ -1654,13 +1661,13 @@ _mesa_ObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option) switch (objectType) { case GL_TEXTURE: - retval = _mesa_TextureObjectPurgeable (ctx, name, option); + retval = texture_object_purgeable(ctx, name, option); break; case GL_RENDERBUFFER_EXT: - retval = _mesa_RenderObjectPurgeable (ctx, name, option); + retval = renderbuffer_purgeable(ctx, name, option); break; case GL_BUFFER_OBJECT_APPLE: - retval = _mesa_BufferObjectPurgeable (ctx, name, option); + retval = buffer_object_purgeable(ctx, name, option); break; default: _mesa_error(ctx, GL_INVALID_ENUM, @@ -1679,7 +1686,7 @@ _mesa_ObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option) static GLenum -_mesa_BufferObjectUnpurgeable(struct gl_context *ctx, GLuint name, GLenum option) +buffer_object_unpurgeable(struct gl_context *ctx, GLuint name, GLenum option) { struct gl_buffer_object *bufObj; GLenum retval; @@ -1709,7 +1716,7 @@ _mesa_BufferObjectUnpurgeable(struct gl_context *ctx, GLuint name, GLenum option static GLenum -_mesa_RenderObjectUnpurgeable(struct gl_context *ctx, GLuint name, GLenum option) +renderbuffer_unpurgeable(struct gl_context *ctx, GLuint name, GLenum option) { struct gl_renderbuffer *bufObj; GLenum retval; @@ -1739,7 +1746,7 @@ _mesa_RenderObjectUnpurgeable(struct gl_context *ctx, GLuint name, GLenum option static GLenum -_mesa_TextureObjectUnpurgeable(struct gl_context *ctx, GLuint name, GLenum option) +texture_object_unpurgeable(struct gl_context *ctx, GLuint name, GLenum option) { struct gl_texture_object *bufObj; GLenum retval; @@ -1794,11 +1801,11 @@ _mesa_ObjectUnpurgeableAPPLE(GLenum objectType, GLuint name, GLenum option) switch (objectType) { case GL_BUFFER_OBJECT_APPLE: - return _mesa_BufferObjectUnpurgeable(ctx, name, option); + return buffer_object_unpurgeable(ctx, name, option); case GL_TEXTURE: - return _mesa_TextureObjectUnpurgeable(ctx, name, option); + return texture_object_unpurgeable(ctx, name, option); case GL_RENDERBUFFER_EXT: - return _mesa_RenderObjectUnpurgeable(ctx, name, option); + return renderbuffer_unpurgeable(ctx, name, option); default: _mesa_error(ctx, GL_INVALID_ENUM, "glObjectUnpurgeable(name = 0x%x) invalid type: %d", @@ -1809,12 +1816,10 @@ _mesa_ObjectUnpurgeableAPPLE(GLenum objectType, GLuint name, GLenum option) static void -_mesa_GetBufferObjectParameterivAPPLE(struct gl_context *ctx, GLuint name, - GLenum pname, GLint* params) +get_buffer_object_parameteriv(struct gl_context *ctx, GLuint name, + GLenum pname, GLint *params) { - struct gl_buffer_object *bufObj; - - bufObj = _mesa_lookup_bufferobj(ctx, name); + struct gl_buffer_object *bufObj = _mesa_lookup_bufferobj(ctx, name); if (!bufObj) { _mesa_error(ctx, GL_INVALID_VALUE, "glGetObjectParameteriv(name = 0x%x) invalid object", name); @@ -1835,13 +1840,11 @@ _mesa_GetBufferObjectParameterivAPPLE(struct gl_context *ctx, GLuint name, static void -_mesa_GetRenderObjectParameterivAPPLE(struct gl_context *ctx, GLuint name, - GLenum pname, GLint* params) +get_renderbuffer_parameteriv(struct gl_context *ctx, GLuint name, + GLenum pname, GLint *params) { - struct gl_renderbuffer *bufObj; - - bufObj = _mesa_lookup_renderbuffer(ctx, name); - if (!bufObj) { + struct gl_renderbuffer *rb = _mesa_lookup_renderbuffer(ctx, name); + if (!rb) { _mesa_error(ctx, GL_INVALID_VALUE, "glObjectUnpurgeable(name = 0x%x)", name); return; @@ -1849,7 +1852,7 @@ _mesa_GetRenderObjectParameterivAPPLE(struct gl_context *ctx, GLuint name, switch (pname) { case GL_PURGEABLE_APPLE: - *params = bufObj->Purgeable; + *params = rb->Purgeable; break; default: _mesa_error(ctx, GL_INVALID_ENUM, @@ -1861,13 +1864,11 @@ _mesa_GetRenderObjectParameterivAPPLE(struct gl_context *ctx, GLuint name, static void -_mesa_GetTextureObjectParameterivAPPLE(struct gl_context *ctx, GLuint name, - GLenum pname, GLint* params) +get_texture_object_parameteriv(struct gl_context *ctx, GLuint name, + GLenum pname, GLint *params) { - struct gl_texture_object *bufObj; - - bufObj = _mesa_lookup_texture(ctx, name); - if (!bufObj) { + struct gl_texture_object *texObj = _mesa_lookup_texture(ctx, name); + if (!texObj) { _mesa_error(ctx, GL_INVALID_VALUE, "glObjectUnpurgeable(name = 0x%x)", name); return; @@ -1875,7 +1876,7 @@ _mesa_GetTextureObjectParameterivAPPLE(struct gl_context *ctx, GLuint name, switch (pname) { case GL_PURGEABLE_APPLE: - *params = bufObj->Purgeable; + *params = texObj->Purgeable; break; default: _mesa_error(ctx, GL_INVALID_ENUM, @@ -1888,7 +1889,7 @@ _mesa_GetTextureObjectParameterivAPPLE(struct gl_context *ctx, GLuint name, void GLAPIENTRY _mesa_GetObjectParameterivAPPLE(GLenum objectType, GLuint name, GLenum pname, - GLint* params) + GLint *params) { GET_CURRENT_CONTEXT(ctx); @@ -1900,13 +1901,13 @@ _mesa_GetObjectParameterivAPPLE(GLenum objectType, GLuint name, GLenum pname, switch (objectType) { case GL_TEXTURE: - _mesa_GetTextureObjectParameterivAPPLE (ctx, name, pname, params); + get_texture_object_parameteriv(ctx, name, pname, params); break; case GL_BUFFER_OBJECT_APPLE: - _mesa_GetBufferObjectParameterivAPPLE (ctx, name, pname, params); + get_buffer_object_parameteriv(ctx, name, pname, params); break; case GL_RENDERBUFFER_EXT: - _mesa_GetRenderObjectParameterivAPPLE (ctx, name, pname, params); + get_renderbuffer_parameteriv(ctx, name, pname, params); break; default: _mesa_error(ctx, GL_INVALID_ENUM, diff --git a/src/mesa/main/buffers.c b/src/mesa/main/buffers.c index 5c37f3d1a86..96ee1ace728 100644 --- a/src/mesa/main/buffers.c +++ b/src/mesa/main/buffers.c @@ -407,7 +407,6 @@ _mesa_drawbuffers(struct gl_context *ctx, GLuint n, const GLenum *buffers, fb->_ColorDrawBufferIndexes[buf] = bufIndex; newState = GL_TRUE; } - fb->ColorDrawBuffer[buf] = buffers[buf]; count = buf + 1; } else { @@ -416,6 +415,7 @@ _mesa_drawbuffers(struct gl_context *ctx, GLuint n, const GLenum *buffers, newState = GL_TRUE; } } + fb->ColorDrawBuffer[buf] = buffers[buf]; } /* set remaining outputs to -1 (GL_NONE) */ while (buf < ctx->Const.MaxDrawBuffers) { diff --git a/src/mesa/main/clear.c b/src/mesa/main/clear.c index 43a9ccc116a..fa95e4522f2 100644 --- a/src/mesa/main/clear.c +++ b/src/mesa/main/clear.c @@ -78,19 +78,27 @@ _mesa_ClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); - tmp[0] = CLAMP(red, 0.0F, 1.0F); - tmp[1] = CLAMP(green, 0.0F, 1.0F); - tmp[2] = CLAMP(blue, 0.0F, 1.0F); - tmp[3] = CLAMP(alpha, 0.0F, 1.0F); + tmp[0] = red; + tmp[1] = green; + tmp[2] = blue; + tmp[3] = alpha; - if (TEST_EQ_4V(tmp, ctx->Color.ClearColor)) + if (TEST_EQ_4V(tmp, ctx->Color.ClearColorUnclamped)) return; /* no change */ FLUSH_VERTICES(ctx, _NEW_COLOR); - COPY_4V(ctx->Color.ClearColor, tmp); + COPY_4V(ctx->Color.ClearColorUnclamped, tmp); + + ctx->Color.ClearColor[0] = CLAMP(tmp[0], 0.0F, 1.0F); + ctx->Color.ClearColor[1] = CLAMP(tmp[1], 0.0F, 1.0F); + ctx->Color.ClearColor[2] = CLAMP(tmp[2], 0.0F, 1.0F); + ctx->Color.ClearColor[3] = CLAMP(tmp[3], 0.0F, 1.0F); if (ctx->Driver.ClearColor) { /* it's OK to call glClearColor in CI mode but it should be a NOP */ + /* we pass the clamped color, since all drivers that need this don't + * support GL_ARB_color_buffer_float + */ (*ctx->Driver.ClearColor)(ctx, ctx->Color.ClearColor); } } diff --git a/src/mesa/main/clip.c b/src/mesa/main/clip.c index be8ce4278cd..ba2028cf2e1 100644 --- a/src/mesa/main/clip.c +++ b/src/mesa/main/clip.c @@ -32,11 +32,20 @@ #include "math/m_matrix.h" +/** + * Update derived clip plane state. + */ +void +_mesa_update_clip_plane(struct gl_context *ctx, GLuint plane) +{ + if (_math_matrix_is_dirty(ctx->ProjectionMatrixStack.Top)) + _math_matrix_analyse( ctx->ProjectionMatrixStack.Top ); -/**********************************************************************/ -/* Get/Set User clip-planes. */ -/**********************************************************************/ - + /* Clip-Space Plane = Eye-Space Plane * Projection Matrix */ + _mesa_transform_vector(ctx->Transform._ClipUserPlane[plane], + ctx->Transform.EyeUserPlane[plane], + ctx->ProjectionMatrixStack.Top->inv); +} void GLAPIENTRY @@ -78,17 +87,8 @@ _mesa_ClipPlane( GLenum plane, const GLdouble *eq ) FLUSH_VERTICES(ctx, _NEW_TRANSFORM); COPY_4FV(ctx->Transform.EyeUserPlane[p], equation); - /* Update derived state. This state also depends on the projection - * matrix, and is recalculated on changes to the projection matrix by - * code in _mesa_update_state(). - */ if (ctx->Transform.ClipPlanesEnabled & (1 << p)) { - if (_math_matrix_is_dirty(ctx->ProjectionMatrixStack.Top)) - _math_matrix_analyse( ctx->ProjectionMatrixStack.Top ); - - _mesa_transform_vector( ctx->Transform._ClipUserPlane[p], - ctx->Transform.EyeUserPlane[p], - ctx->ProjectionMatrixStack.Top->inv ); + _mesa_update_clip_plane(ctx, p); } if (ctx->Driver.ClipPlane) diff --git a/src/mesa/main/clip.h b/src/mesa/main/clip.h index 11431dcfce0..a8e6d768758 100644 --- a/src/mesa/main/clip.h +++ b/src/mesa/main/clip.h @@ -33,6 +33,11 @@ #include "glheader.h" +struct gl_context; + +extern void +_mesa_update_clip_plane(struct gl_context *ctx, GLuint plane); + extern void GLAPIENTRY _mesa_ClipPlane( GLenum plane, const GLdouble *equation ); diff --git a/src/mesa/main/colortab.c b/src/mesa/main/colortab.c index d0c865735ac..35b3096f650 100644 --- a/src/mesa/main/colortab.c +++ b/src/mesa/main/colortab.c @@ -516,6 +516,7 @@ _mesa_GetColorTable( GLenum target, GLenum format, struct gl_texture_unit *texUnit = _mesa_get_current_tex_unit(ctx); struct gl_color_table *table = NULL; GLfloat rgba[MAX_COLOR_TABLE_SIZE][4]; + GLbitfield transferOps = 0; ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); if (ctx->NewState) { @@ -618,8 +619,12 @@ _mesa_GetColorTable( GLenum target, GLenum format, if (!data) return; + /* TODO: is this correct? */ + if(ctx->Color._ClampReadColor) + transferOps |= IMAGE_CLAMP_BIT; + _mesa_pack_rgba_span_float(ctx, table->Size, rgba, - format, type, data, &ctx->Pack, 0x0); + format, type, data, &ctx->Pack, transferOps); _mesa_unmap_pbo_dest(ctx, &ctx->Pack); } diff --git a/src/mesa/main/compiler.h b/src/mesa/main/compiler.h index 5557a3b5cb5..e17fd0ff6fd 100644 --- a/src/mesa/main/compiler.h +++ b/src/mesa/main/compiler.h @@ -171,12 +171,14 @@ extern "C" { * We also need to define a USED attribute, so the optimizer doesn't * inline a static function that we later use in an alias. - ajax */ -#if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) -# define PUBLIC __attribute__((visibility("default"))) -# define USED __attribute__((used)) -#else -# define PUBLIC -# define USED +#ifndef PUBLIC +# if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) +# define PUBLIC __attribute__((visibility("default"))) +# define USED __attribute__((used)) +# else +# define PUBLIC +# define USED +# endif #endif @@ -195,15 +197,17 @@ extern "C" { * __builtin_expect macros */ #if !defined(__GNUC__) -# define __builtin_expect(x, y) x +# define __builtin_expect(x, y) (x) #endif -#ifdef __GNUC__ -#define likely(x) __builtin_expect(!!(x), 1) -#define unlikely(x) __builtin_expect(!!(x), 0) -#else -#define likely(x) !!(x) -#define unlikely(x) !!(x) +#ifndef likely +# ifdef __GNUC__ +# define likely(x) __builtin_expect(!!(x), 1) +# define unlikely(x) __builtin_expect(!!(x), 0) +# else +# define likely(x) (x) +# define unlikely(x) (x) +# endif #endif /** diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index ca74284ca89..8053edc23b2 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -191,7 +191,8 @@ _mesa_notifySwapBuffers(struct gl_context *ctx) * is acceptable but the actual depth type will be GLushort or GLuint as * needed. * \param stencilBits requested minimum bits per stencil buffer value - * \param accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits number of bits per color component in accum buffer. + * \param accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits number + * of bits per color component in accum buffer. * \param indexBits number of bits per pixel if \p rgbFlag is GL_FALSE * \param redBits number of bits per color component in frame buffer for RGB(A) * mode. We always use 8 in core Mesa though. @@ -200,8 +201,8 @@ _mesa_notifySwapBuffers(struct gl_context *ctx) * \param alphaBits same as above. * \param numSamples not really used. * - * \return pointer to new struct gl_config or NULL if requested parameters can't be - * met. + * \return pointer to new struct gl_config or NULL if requested parameters + * can't be met. * * \note Need to add params for level and numAuxBuffers (at least) */ @@ -567,6 +568,7 @@ _mesa_init_constants(struct gl_context *ctx) ctx->Const.MaxTextureImageUnits); ctx->Const.MaxTextureMaxAnisotropy = MAX_TEXTURE_MAX_ANISOTROPY; ctx->Const.MaxTextureLodBias = MAX_TEXTURE_LOD_BIAS; + ctx->Const.MaxTextureBufferSize = 65536; ctx->Const.MaxArrayLockSize = MAX_ARRAY_LOCK_SIZE; ctx->Const.SubPixelBits = SUB_PIXEL_BITS; ctx->Const.MinPointSize = MIN_POINT_SIZE; @@ -1185,7 +1187,8 @@ _mesa_destroy_context( struct gl_context *ctx ) * structures. */ void -_mesa_copy_context( const struct gl_context *src, struct gl_context *dst, GLuint mask ) +_mesa_copy_context( const struct gl_context *src, struct gl_context *dst, + GLuint mask ) { if (mask & GL_ACCUM_BUFFER_BIT) { /* OK to memcpy */ diff --git a/src/mesa/main/context.h b/src/mesa/main/context.h index 33a36311c8a..a4c7ba2c54d 100644 --- a/src/mesa/main/context.h +++ b/src/mesa/main/context.h @@ -30,16 +30,16 @@ * There are three large Mesa data types/classes which are meant to be * used by device drivers: * - struct gl_context: this contains the Mesa rendering state - * - struct gl_config: this describes the color buffer (RGB vs. ci), whether or not - * there's a depth buffer, stencil buffer, etc. - * - struct gl_framebuffer: contains pointers to the depth buffer, stencil buffer, - * accum buffer and alpha buffers. + * - struct gl_config: this describes the color buffer (RGB vs. ci), whether + * or not there's a depth buffer, stencil buffer, etc. + * - struct gl_framebuffer: contains pointers to the depth buffer, stencil + * buffer, accum buffer and alpha buffers. * * These types should be encapsulated by corresponding device driver * data types. See xmesa.h and xmesaP.h for an example. * - * In OOP terms, struct gl_context, struct gl_config, and struct gl_framebuffer are base classes - * which the device driver must derive from. + * In OOP terms, struct gl_context, struct gl_config, and struct gl_framebuffer + * are base classes which the device driver must derive from. * * The following functions create and destroy these data types. */ diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h index 34d67b5bac8..d749b245e13 100644 --- a/src/mesa/main/dd.h +++ b/src/mesa/main/dd.h @@ -1021,6 +1021,14 @@ struct dd_function_table { * \name GL_NV_texture_barrier interface */ void (*TextureBarrier)(struct gl_context *ctx); + + /** + * \name GL_ARB_sampler_objects + */ + struct gl_sampler_object * (*NewSamplerObject)(struct gl_context *ctx, + GLuint name); + void (*DeleteSamplerObject)(struct gl_context *ctx, + struct gl_sampler_object *samp); }; diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c index 78881668e49..e7f6be99481 100644 --- a/src/mesa/main/debug.c +++ b/src/mesa/main/debug.c @@ -183,7 +183,7 @@ static void add_debug_flags( const char *debug ) MESA_VERBOSE = 0x0; for (i = 0; i < Elements(debug_opt); i++) { - if (strstr(debug, debug_opt[i].name)) + if (strstr(debug, debug_opt[i].name) || strcmp(debug, "all") == 0) MESA_VERBOSE |= debug_opt[i].flag; } @@ -251,6 +251,9 @@ write_ppm(const char *filename, const GLubyte *buffer, int width, int height, } fclose(f); } + else { + fprintf(stderr, "Unable to create %s in write_ppm()\n", filename); + } } @@ -549,6 +552,27 @@ _mesa_dump_stencil_buffer(const char *filename) } +void +_mesa_dump_image(const char *filename, const void *image, GLuint w, GLuint h, + GLenum format, GLenum type) +{ + GLboolean invert = GL_TRUE; + + if (format == GL_RGBA && type == GL_UNSIGNED_BYTE) { + write_ppm(filename, image, w, h, 4, 0, 1, 2, invert); + } + else if (format == GL_BGRA && type == GL_UNSIGNED_BYTE) { + write_ppm(filename, image, w, h, 4, 2, 1, 0, invert); + } + else if (format == GL_LUMINANCE_ALPHA && type == GL_UNSIGNED_BYTE) { + write_ppm(filename, image, w, h, 2, 1, 0, 0, invert); + } + else { + _mesa_problem(NULL, "Unsupported format/type in _mesa_dump_image()"); + } +} + + /** * Quick and dirty function to "print" a texture to stdout. */ diff --git a/src/mesa/main/debug.h b/src/mesa/main/debug.h index 4968a9f1979..d7c53b65504 100644 --- a/src/mesa/main/debug.h +++ b/src/mesa/main/debug.h @@ -85,6 +85,10 @@ extern void _mesa_dump_stencil_buffer(const char *filename); extern void +_mesa_dump_image(const char *filename, const void *image, GLuint w, GLuint h, + GLenum format, GLenum type); + +extern void _mesa_print_texture(struct gl_context *ctx, const struct gl_texture_image *img); #endif diff --git a/src/mesa/main/depthstencil.c b/src/mesa/main/depthstencil.c index c5466dc9fcc..ab62c97fe5a 100644 --- a/src/mesa/main/depthstencil.c +++ b/src/mesa/main/depthstencil.c @@ -91,6 +91,7 @@ alloc_wrapper_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, if (retVal) { rb->Width = width; rb->Height = height; + rb->RowStride = dsrb->RowStride; } return retVal; } @@ -371,6 +372,7 @@ _mesa_new_z24_renderbuffer_wrapper(struct gl_context *ctx, z24rb->RefCount = 0; z24rb->Width = dsrb->Width; z24rb->Height = dsrb->Height; + z24rb->RowStride = dsrb->RowStride; z24rb->InternalFormat = GL_DEPTH_COMPONENT24; z24rb->Format = MESA_FORMAT_X8_Z24; z24rb->_BaseFormat = GL_DEPTH_COMPONENT; @@ -657,6 +659,7 @@ _mesa_new_s8_renderbuffer_wrapper(struct gl_context *ctx, struct gl_renderbuffer s8rb->RefCount = 0; s8rb->Width = dsrb->Width; s8rb->Height = dsrb->Height; + s8rb->RowStride = dsrb->RowStride; s8rb->InternalFormat = GL_STENCIL_INDEX8_EXT; s8rb->Format = MESA_FORMAT_S8; s8rb->_BaseFormat = GL_STENCIL_INDEX; diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c index 0112d9dde36..f66082e7fce 100644 --- a/src/mesa/main/dlist.c +++ b/src/mesa/main/dlist.c @@ -49,6 +49,7 @@ #include "eval.h" #include "framebuffer.h" #include "glapi/glapi.h" +#include "glapidispatch.h" #include "hash.h" #include "image.h" #include "light.h" @@ -388,6 +389,9 @@ typedef enum OPCODE_UNIFORM_3UIV, OPCODE_UNIFORM_4UIV, + /* GL_ARB_color_buffer_float */ + OPCODE_CLAMP_COLOR, + /* GL_EXT_framebuffer_blit */ OPCODE_BLIT_FRAMEBUFFER, @@ -434,6 +438,9 @@ typedef enum /* GL_NV_texture_barrier */ OPCODE_TEXTURE_BARRIER_NV, + /* GL_ARB_sampler_object */ + OPCODE_BIND_SAMPLER, + /* The following three are meta instructions */ OPCODE_ERROR, /* raise compiled-in error */ OPCODE_CONTINUE, @@ -6887,6 +6894,22 @@ save_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, } static void GLAPIENTRY +save_ClampColorARB(GLenum target, GLenum clamp) +{ + GET_CURRENT_CONTEXT(ctx); + Node *n; + ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); + n = alloc_instruction(ctx, OPCODE_CLAMP_COLOR, 2); + if (n) { + n[1].e = target; + n[2].e = clamp; + } + if (ctx->ExecuteFlag) { + CALL_ClampColorARB(ctx->Exec, (target, clamp)); + } +} + +static void GLAPIENTRY save_UseShaderProgramEXT(GLenum type, GLuint program) { GET_CURRENT_CONTEXT(ctx); @@ -7036,7 +7059,7 @@ save_VertexAttribDivisor(GLuint index, GLuint divisor) /* GL_NV_texture_barrier */ static void -save_TextureBarrierNV() +save_TextureBarrierNV(void) { GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); @@ -7047,6 +7070,24 @@ save_TextureBarrierNV() } +/* GL_ARB_sampler_objects */ +static void +save_BindSampler(GLuint unit, GLuint sampler) +{ + Node *n; + GET_CURRENT_CONTEXT(ctx); + ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); + n = alloc_instruction(ctx, OPCODE_BIND_SAMPLER, 2); + if (n) { + n[1].ui = unit; + n[2].ui = sampler; + } + if (ctx->ExecuteFlag) { + CALL_BindSampler(ctx->Exec, (unit, sampler)); + } +} + + /** * Save an error-generating command into display list. * @@ -8071,6 +8112,10 @@ execute_list(struct gl_context *ctx, GLuint list) (n[1].i, n[2].i, n[3].b, n[4].data)); break; + case OPCODE_CLAMP_COLOR: + CALL_ClampColorARB(ctx->Exec, (n[1].e, n[2].e)); + break; + case OPCODE_TEX_BUMP_PARAMETER_ATI: { GLfloat values[4]; @@ -8226,6 +8271,10 @@ execute_list(struct gl_context *ctx, GLuint list) CALL_TextureBarrierNV(ctx->Exec, ()); break; + case OPCODE_BIND_SAMPLER: + CALL_BindSampler(ctx->Exec, (n[1].ui, n[2].ui)); + break; + case OPCODE_CONTINUE: n = (Node *) n[1].next; break; @@ -9868,6 +9917,10 @@ _mesa_create_save_table(void) SET_UseShaderProgramEXT(table, save_UseShaderProgramEXT); SET_ActiveProgramEXT(table, save_ActiveProgramEXT); + /* GL_ARB_color_buffer_float */ + SET_ClampColorARB(table, save_ClampColorARB); + SET_ClampColor(table, save_ClampColorARB); + /* GL 3.0 */ #if 0 SET_ClearBufferiv(table, save_ClearBufferiv); @@ -9903,6 +9956,9 @@ _mesa_create_save_table(void) /* GL_NV_texture_barrier */ SET_TextureBarrierNV(table, save_TextureBarrierNV); + /* GL_ARB_sampler_objects */ + SET_BindSampler(table, save_BindSampler); + /* GL_ARB_draw_buffer_blend */ SET_BlendFunciARB(table, save_BlendFunci); SET_BlendFuncSeparateiARB(table, save_BlendFuncSeparatei); diff --git a/src/mesa/main/drawpix.c b/src/mesa/main/drawpix.c index fb86036a188..ee379f71bf5 100644 --- a/src/mesa/main/drawpix.c +++ b/src/mesa/main/drawpix.c @@ -188,7 +188,7 @@ _mesa_CopyPixels( GLint srcx, GLint srcy, GLsizei width, GLsizei height, goto end; } - if (!ctx->Current.RasterPosValid || width ==0 || height == 0) { + if (!ctx->Current.RasterPosValid || width == 0 || height == 0) { goto end; /* no-op, not an error */ } diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c index f247092410b..2ec19c8afbd 100644 --- a/src/mesa/main/enable.c +++ b/src/mesa/main/enable.c @@ -29,6 +29,7 @@ #include "glheader.h" +#include "clip.h" #include "context.h" #include "enable.h" #include "light.h" @@ -213,8 +214,8 @@ _mesa_DisableClientState( GLenum cap ) /** * Return pointer to current texture unit for setting/getting coordinate * state. - * Note that we'll set GL_INVALID_OPERATION if the active texture unit is - * higher than the number of supported coordinate units. And we'll return NULL. + * Note that we'll set GL_INVALID_OPERATION and return NULL if the active + * texture unit is higher than the number of supported coordinate units. */ static struct gl_texture_unit * get_texcoord_unit(struct gl_context *ctx) @@ -286,7 +287,8 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state) break; case GL_BLEND: { - GLbitfield newEnabled = state * ((1 << ctx->Const.MaxDrawBuffers) - 1); + GLbitfield newEnabled = + state * ((1 << ctx->Const.MaxDrawBuffers) - 1); if (newEnabled != ctx->Color.BlendEnabled) { FLUSH_VERTICES(ctx, _NEW_COLOR); ctx->Color.BlendEnabled = newEnabled; @@ -303,24 +305,15 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state) { const GLuint p = cap - GL_CLIP_PLANE0; - if ((ctx->Transform.ClipPlanesEnabled & (1 << p)) == ((GLuint) state << p)) + if ((ctx->Transform.ClipPlanesEnabled & (1 << p)) + == ((GLuint) state << p)) return; FLUSH_VERTICES(ctx, _NEW_TRANSFORM); if (state) { ctx->Transform.ClipPlanesEnabled |= (1 << p); - - if (_math_matrix_is_dirty(ctx->ProjectionMatrixStack.Top)) - _math_matrix_analyse( ctx->ProjectionMatrixStack.Top ); - - /* This derived state also calculated in clip.c and - * from _mesa_update_state() on changes to EyeUserPlane - * and ctx->ProjectionMatrix respectively. - */ - _mesa_transform_vector( ctx->Transform._ClipUserPlane[p], - ctx->Transform.EyeUserPlane[p], - ctx->ProjectionMatrixStack.Top->inv ); + _mesa_update_clip_plane(ctx, p); } else { ctx->Transform.ClipPlanesEnabled &= ~(1 << p); @@ -612,55 +605,17 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state) return; } break; - case GL_TEXTURE_GEN_Q: - { - struct gl_texture_unit *texUnit = get_texcoord_unit(ctx); - if (texUnit) { - GLuint newenabled = texUnit->TexGenEnabled & ~Q_BIT; - if (state) - newenabled |= Q_BIT; - if (texUnit->TexGenEnabled == newenabled) - return; - FLUSH_VERTICES(ctx, _NEW_TEXTURE); - texUnit->TexGenEnabled = newenabled; - } - } - break; - case GL_TEXTURE_GEN_R: - { - struct gl_texture_unit *texUnit = get_texcoord_unit(ctx); - if (texUnit) { - GLuint newenabled = texUnit->TexGenEnabled & ~R_BIT; - if (state) - newenabled |= R_BIT; - if (texUnit->TexGenEnabled == newenabled) - return; - FLUSH_VERTICES(ctx, _NEW_TEXTURE); - texUnit->TexGenEnabled = newenabled; - } - } - break; case GL_TEXTURE_GEN_S: - { - struct gl_texture_unit *texUnit = get_texcoord_unit(ctx); - if (texUnit) { - GLuint newenabled = texUnit->TexGenEnabled & ~S_BIT; - if (state) - newenabled |= S_BIT; - if (texUnit->TexGenEnabled == newenabled) - return; - FLUSH_VERTICES(ctx, _NEW_TEXTURE); - texUnit->TexGenEnabled = newenabled; - } - } - break; case GL_TEXTURE_GEN_T: + case GL_TEXTURE_GEN_R: + case GL_TEXTURE_GEN_Q: { struct gl_texture_unit *texUnit = get_texcoord_unit(ctx); if (texUnit) { - GLuint newenabled = texUnit->TexGenEnabled & ~T_BIT; + GLbitfield coordBit = S_BIT << (cap - GL_TEXTURE_GEN_S); + GLbitfield newenabled = texUnit->TexGenEnabled & ~coordBit; if (state) - newenabled |= T_BIT; + newenabled |= coordBit; if (texUnit->TexGenEnabled == newenabled) return; FLUSH_VERTICES(ctx, _NEW_TEXTURE); @@ -1012,7 +967,8 @@ _mesa_Disable( GLenum cap ) * Enable/disable an indexed state var. */ void -_mesa_set_enablei(struct gl_context *ctx, GLenum cap, GLuint index, GLboolean state) +_mesa_set_enablei(struct gl_context *ctx, GLenum cap, + GLuint index, GLboolean state) { ASSERT(state == 0 || state == 1); switch (cap) { @@ -1231,35 +1187,15 @@ _mesa_IsEnabled( GLenum cap ) return is_texture_enabled(ctx, TEXTURE_2D_BIT); case GL_TEXTURE_3D: return is_texture_enabled(ctx, TEXTURE_3D_BIT); - case GL_TEXTURE_GEN_Q: - { - const struct gl_texture_unit *texUnit = get_texcoord_unit(ctx); - if (texUnit) { - return (texUnit->TexGenEnabled & Q_BIT) ? GL_TRUE : GL_FALSE; - } - } - return GL_FALSE; - case GL_TEXTURE_GEN_R: - { - const struct gl_texture_unit *texUnit = get_texcoord_unit(ctx); - if (texUnit) { - return (texUnit->TexGenEnabled & R_BIT) ? GL_TRUE : GL_FALSE; - } - } - return GL_FALSE; case GL_TEXTURE_GEN_S: - { - const struct gl_texture_unit *texUnit = get_texcoord_unit(ctx); - if (texUnit) { - return (texUnit->TexGenEnabled & S_BIT) ? GL_TRUE : GL_FALSE; - } - } - return GL_FALSE; case GL_TEXTURE_GEN_T: + case GL_TEXTURE_GEN_R: + case GL_TEXTURE_GEN_Q: { const struct gl_texture_unit *texUnit = get_texcoord_unit(ctx); if (texUnit) { - return (texUnit->TexGenEnabled & T_BIT) ? GL_TRUE : GL_FALSE; + GLbitfield coordBit = S_BIT << (cap - GL_TEXTURE_GEN_S); + return (texUnit->TexGenEnabled & coordBit) ? GL_TRUE : GL_FALSE; } } return GL_FALSE; @@ -1268,7 +1204,8 @@ _mesa_IsEnabled( GLenum cap ) { const struct gl_texture_unit *texUnit = get_texcoord_unit(ctx); if (texUnit) { - return (texUnit->TexGenEnabled & STR_BITS) == STR_BITS ? GL_TRUE : GL_FALSE; + return (texUnit->TexGenEnabled & STR_BITS) == STR_BITS + ? GL_TRUE : GL_FALSE; } } #endif @@ -1285,7 +1222,8 @@ _mesa_IsEnabled( GLenum cap ) case GL_INDEX_ARRAY: return (ctx->Array.ArrayObj->Index.Enabled != 0); case GL_TEXTURE_COORD_ARRAY: - return (ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled != 0); + return (ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture] + .Enabled != 0); case GL_EDGE_FLAG_ARRAY: return (ctx->Array.ArrayObj->EdgeFlag.Enabled != 0); case GL_FOG_COORDINATE_ARRAY_EXT: diff --git a/src/mesa/main/enums.c b/src/mesa/main/enums.c index e9d6b6b156c..98cbbf53b85 100644 --- a/src/mesa/main/enums.c +++ b/src/mesa/main/enums.c @@ -193,12 +193,15 @@ LONGSTRING static const char enum_string_table[] = "GL_C4UB_V3F\0" "GL_CCW\0" "GL_CLAMP\0" + "GL_CLAMP_FRAGMENT_COLOR_ARB\0" "GL_CLAMP_READ_COLOR\0" + "GL_CLAMP_READ_COLOR_ARB\0" "GL_CLAMP_TO_BORDER\0" "GL_CLAMP_TO_BORDER_ARB\0" "GL_CLAMP_TO_BORDER_SGIS\0" "GL_CLAMP_TO_EDGE\0" "GL_CLAMP_TO_EDGE_SGIS\0" + "GL_CLAMP_VERTEX_COLOR_ARB\0" "GL_CLEAR\0" "GL_CLIENT_ACTIVE_TEXTURE\0" "GL_CLIENT_ACTIVE_TEXTURE_ARB\0" @@ -584,6 +587,7 @@ LONGSTRING static const char enum_string_table[] = "GL_FIXED\0" "GL_FIXED_OES\0" "GL_FIXED_ONLY\0" + "GL_FIXED_ONLY_ARB\0" "GL_FLAT\0" "GL_FLOAT\0" "GL_FLOAT_MAT2\0" @@ -1140,6 +1144,7 @@ LONGSTRING static const char enum_string_table[] = "GL_MAX_SHININESS_NV\0" "GL_MAX_SPOT_EXPONENT_NV\0" "GL_MAX_TEXTURE_BUFFER_SIZE\0" + "GL_MAX_TEXTURE_BUFFER_SIZE_ARB\0" "GL_MAX_TEXTURE_COORDS\0" "GL_MAX_TEXTURE_COORDS_ARB\0" "GL_MAX_TEXTURE_IMAGE_UNITS\0" @@ -1708,6 +1713,7 @@ LONGSTRING static const char enum_string_table[] = "GL_RGBA8_OES\0" "GL_RGBA8_SNORM\0" "GL_RGBA_DXT5_S3TC\0" + "GL_RGBA_FLOAT_MODE_ARB\0" "GL_RGBA_INTEGER\0" "GL_RGBA_INTEGER_EXT\0" "GL_RGBA_INTEGER_MODE_EXT\0" @@ -1740,6 +1746,7 @@ LONGSTRING static const char enum_string_table[] = "GL_SAMPLER_2D_SHADOW\0" "GL_SAMPLER_3D\0" "GL_SAMPLER_3D_OES\0" + "GL_SAMPLER_BINDING\0" "GL_SAMPLER_BUFFER\0" "GL_SAMPLER_BUFFER_EXT\0" "GL_SAMPLER_CUBE\0" @@ -2007,6 +2014,7 @@ LONGSTRING static const char enum_string_table[] = "GL_TEXTURE_BINDING_3D\0" "GL_TEXTURE_BINDING_3D_OES\0" "GL_TEXTURE_BINDING_BUFFER\0" + "GL_TEXTURE_BINDING_BUFFER_ARB\0" "GL_TEXTURE_BINDING_CUBE_MAP\0" "GL_TEXTURE_BINDING_CUBE_MAP_ARB\0" "GL_TEXTURE_BINDING_CUBE_MAP_OES\0" @@ -2019,8 +2027,11 @@ LONGSTRING static const char enum_string_table[] = "GL_TEXTURE_BORDER\0" "GL_TEXTURE_BORDER_COLOR\0" "GL_TEXTURE_BUFFER\0" + "GL_TEXTURE_BUFFER_ARB\0" "GL_TEXTURE_BUFFER_DATA_STORE_BINDING\0" + "GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB\0" "GL_TEXTURE_BUFFER_FORMAT\0" + "GL_TEXTURE_BUFFER_FORMAT_ARB\0" "GL_TEXTURE_CLIPMAP_CENTER_SGIX\0" "GL_TEXTURE_CLIPMAP_DEPTH_SGIX\0" "GL_TEXTURE_CLIPMAP_FRAME_SGIX\0" @@ -2334,7 +2345,7 @@ LONGSTRING static const char enum_string_table[] = "GL_ZOOM_Y\0" ; -static const enum_elt all_enums[2295] = +static const enum_elt all_enums[2306] = { { 0, 0x00000600 }, /* GL_2D */ { 6, 0x00001407 }, /* GL_2_BYTES */ @@ -2492,3700 +2503,3715 @@ static const enum_elt all_enums[2295] = { 2689, 0x00002A23 }, /* GL_C4UB_V3F */ { 2701, 0x00000901 }, /* GL_CCW */ { 2708, 0x00002900 }, /* GL_CLAMP */ - { 2717, 0x0000891C }, /* GL_CLAMP_READ_COLOR */ - { 2737, 0x0000812D }, /* GL_CLAMP_TO_BORDER */ - { 2756, 0x0000812D }, /* GL_CLAMP_TO_BORDER_ARB */ - { 2779, 0x0000812D }, /* GL_CLAMP_TO_BORDER_SGIS */ - { 2803, 0x0000812F }, /* GL_CLAMP_TO_EDGE */ - { 2820, 0x0000812F }, /* GL_CLAMP_TO_EDGE_SGIS */ - { 2842, 0x00001500 }, /* GL_CLEAR */ - { 2851, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE */ - { 2876, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE_ARB */ - { 2905, 0xFFFFFFFF }, /* GL_CLIENT_ALL_ATTRIB_BITS */ - { 2931, 0x00000BB1 }, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ - { 2960, 0x00000001 }, /* GL_CLIENT_PIXEL_STORE_BIT */ - { 2986, 0x00000002 }, /* GL_CLIENT_VERTEX_ARRAY_BIT */ - { 3013, 0x00003000 }, /* GL_CLIP_DISTANCE0 */ - { 3031, 0x00003001 }, /* GL_CLIP_DISTANCE1 */ - { 3049, 0x00003002 }, /* GL_CLIP_DISTANCE2 */ - { 3067, 0x00003003 }, /* GL_CLIP_DISTANCE3 */ - { 3085, 0x00003004 }, /* GL_CLIP_DISTANCE4 */ - { 3103, 0x00003005 }, /* GL_CLIP_DISTANCE5 */ - { 3121, 0x00003006 }, /* GL_CLIP_DISTANCE6 */ - { 3139, 0x00003007 }, /* GL_CLIP_DISTANCE7 */ - { 3157, 0x00003000 }, /* GL_CLIP_PLANE0 */ - { 3172, 0x00003001 }, /* GL_CLIP_PLANE1 */ - { 3187, 0x00003002 }, /* GL_CLIP_PLANE2 */ - { 3202, 0x00003003 }, /* GL_CLIP_PLANE3 */ - { 3217, 0x00003004 }, /* GL_CLIP_PLANE4 */ - { 3232, 0x00003005 }, /* GL_CLIP_PLANE5 */ - { 3247, 0x000080F0 }, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ - { 3280, 0x00000A00 }, /* GL_COEFF */ - { 3289, 0x00001800 }, /* GL_COLOR */ - { 3298, 0x00008076 }, /* GL_COLOR_ARRAY */ - { 3313, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING */ - { 3343, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING_ARB */ - { 3377, 0x00008090 }, /* GL_COLOR_ARRAY_POINTER */ - { 3400, 0x00008081 }, /* GL_COLOR_ARRAY_SIZE */ - { 3420, 0x00008083 }, /* GL_COLOR_ARRAY_STRIDE */ - { 3442, 0x00008082 }, /* GL_COLOR_ARRAY_TYPE */ - { 3462, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0 */ - { 3483, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_EXT */ - { 3508, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_OES */ - { 3533, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1 */ - { 3554, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10 */ - { 3576, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10_EXT */ - { 3602, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11 */ - { 3624, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11_EXT */ - { 3650, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12 */ - { 3672, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12_EXT */ - { 3698, 0x00008CED }, /* GL_COLOR_ATTACHMENT13 */ - { 3720, 0x00008CED }, /* GL_COLOR_ATTACHMENT13_EXT */ - { 3746, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14 */ - { 3768, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14_EXT */ - { 3794, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15 */ - { 3816, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15_EXT */ - { 3842, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1_EXT */ - { 3867, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2 */ - { 3888, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2_EXT */ - { 3913, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3 */ - { 3934, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3_EXT */ - { 3959, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4 */ - { 3980, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4_EXT */ - { 4005, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5 */ - { 4026, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5_EXT */ - { 4051, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6 */ - { 4072, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6_EXT */ - { 4097, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7 */ - { 4118, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7_EXT */ - { 4143, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8 */ - { 4164, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8_EXT */ - { 4189, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9 */ - { 4210, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9_EXT */ - { 4235, 0x00004000 }, /* GL_COLOR_BUFFER_BIT */ - { 4255, 0x00000C22 }, /* GL_COLOR_CLEAR_VALUE */ - { 4276, 0x00001900 }, /* GL_COLOR_INDEX */ - { 4291, 0x00001603 }, /* GL_COLOR_INDEXES */ - { 4308, 0x00000BF2 }, /* GL_COLOR_LOGIC_OP */ - { 4326, 0x00000B57 }, /* GL_COLOR_MATERIAL */ - { 4344, 0x00000B55 }, /* GL_COLOR_MATERIAL_FACE */ - { 4367, 0x00000B56 }, /* GL_COLOR_MATERIAL_PARAMETER */ - { 4395, 0x000080B1 }, /* GL_COLOR_MATRIX */ - { 4411, 0x000080B1 }, /* GL_COLOR_MATRIX_SGI */ - { 4431, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH */ - { 4459, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH_SGI */ - { 4491, 0x00008458 }, /* GL_COLOR_SUM */ - { 4504, 0x00008458 }, /* GL_COLOR_SUM_ARB */ - { 4521, 0x000080D0 }, /* GL_COLOR_TABLE */ - { 4536, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE */ - { 4562, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_EXT */ - { 4592, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_SGI */ - { 4622, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS */ - { 4642, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS_SGI */ - { 4666, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE */ - { 4691, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_EXT */ - { 4720, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_SGI */ - { 4749, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT */ - { 4771, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_EXT */ - { 4797, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_SGI */ - { 4823, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE */ - { 4849, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_EXT */ - { 4879, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_SGI */ - { 4909, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE */ - { 4939, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_EXT */ - { 4973, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_SGI */ - { 5007, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE */ - { 5037, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_EXT */ - { 5071, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_SGI */ - { 5105, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE */ - { 5129, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_EXT */ - { 5157, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_SGI */ - { 5185, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE */ - { 5206, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE_SGI */ - { 5231, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH */ - { 5252, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_EXT */ - { 5277, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_SGI */ - { 5302, 0x00000C23 }, /* GL_COLOR_WRITEMASK */ - { 5321, 0x00008570 }, /* GL_COMBINE */ - { 5332, 0x00008503 }, /* GL_COMBINE4 */ - { 5344, 0x00008572 }, /* GL_COMBINE_ALPHA */ - { 5361, 0x00008572 }, /* GL_COMBINE_ALPHA_ARB */ - { 5382, 0x00008572 }, /* GL_COMBINE_ALPHA_EXT */ - { 5403, 0x00008570 }, /* GL_COMBINE_ARB */ - { 5418, 0x00008570 }, /* GL_COMBINE_EXT */ - { 5433, 0x00008571 }, /* GL_COMBINE_RGB */ - { 5448, 0x00008571 }, /* GL_COMBINE_RGB_ARB */ - { 5467, 0x00008571 }, /* GL_COMBINE_RGB_EXT */ - { 5486, 0x0000884E }, /* GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT */ - { 5522, 0x0000884E }, /* GL_COMPARE_REF_TO_TEXTURE */ - { 5548, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE */ - { 5572, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE_ARB */ - { 5600, 0x00001300 }, /* GL_COMPILE */ - { 5611, 0x00001301 }, /* GL_COMPILE_AND_EXECUTE */ - { 5634, 0x00008B81 }, /* GL_COMPILE_STATUS */ - { 5652, 0x000084E9 }, /* GL_COMPRESSED_ALPHA */ - { 5672, 0x000084E9 }, /* GL_COMPRESSED_ALPHA_ARB */ - { 5696, 0x000084EC }, /* GL_COMPRESSED_INTENSITY */ - { 5720, 0x000084EC }, /* GL_COMPRESSED_INTENSITY_ARB */ - { 5748, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE */ - { 5772, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA */ - { 5802, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA_ARB */ - { 5836, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE_ARB */ - { 5864, 0x00008225 }, /* GL_COMPRESSED_RED */ - { 5882, 0x00008226 }, /* GL_COMPRESSED_RG */ - { 5899, 0x000084ED }, /* GL_COMPRESSED_RGB */ - { 5917, 0x000084EE }, /* GL_COMPRESSED_RGBA */ - { 5936, 0x000084EE }, /* GL_COMPRESSED_RGBA_ARB */ - { 5959, 0x000086B1 }, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ - { 5988, 0x000083F1 }, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ - { 6021, 0x000083F2 }, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ - { 6054, 0x000083F3 }, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ - { 6087, 0x000084ED }, /* GL_COMPRESSED_RGB_ARB */ - { 6109, 0x000086B0 }, /* GL_COMPRESSED_RGB_FXT1_3DFX */ - { 6137, 0x000083F0 }, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ - { 6169, 0x00008C4A }, /* GL_COMPRESSED_SLUMINANCE */ - { 6194, 0x00008C4B }, /* GL_COMPRESSED_SLUMINANCE_ALPHA */ - { 6225, 0x00008C48 }, /* GL_COMPRESSED_SRGB */ - { 6244, 0x00008C49 }, /* GL_COMPRESSED_SRGB_ALPHA */ - { 6269, 0x000086A3 }, /* GL_COMPRESSED_TEXTURE_FORMATS */ - { 6299, 0x0000911C }, /* GL_CONDITION_SATISFIED */ - { 6322, 0x00008576 }, /* GL_CONSTANT */ - { 6334, 0x00008003 }, /* GL_CONSTANT_ALPHA */ - { 6352, 0x00008003 }, /* GL_CONSTANT_ALPHA_EXT */ - { 6374, 0x00008576 }, /* GL_CONSTANT_ARB */ - { 6390, 0x00001207 }, /* GL_CONSTANT_ATTENUATION */ - { 6414, 0x00008151 }, /* GL_CONSTANT_BORDER_HP */ - { 6436, 0x00008001 }, /* GL_CONSTANT_COLOR */ - { 6454, 0x00008001 }, /* GL_CONSTANT_COLOR_EXT */ - { 6476, 0x00008576 }, /* GL_CONSTANT_EXT */ - { 6492, 0x00000002 }, /* GL_CONTEXT_COMPATIBILITY_PROFILE_BIT */ - { 6529, 0x00000001 }, /* GL_CONTEXT_CORE_PROFILE_BIT */ - { 6557, 0x0000821E }, /* GL_CONTEXT_FLAGS */ - { 6574, 0x00000001 }, /* GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT */ - { 6613, 0x00009126 }, /* GL_CONTEXT_PROFILE_MASK */ - { 6637, 0x00008010 }, /* GL_CONVOLUTION_1D */ - { 6655, 0x00008011 }, /* GL_CONVOLUTION_2D */ - { 6673, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR */ - { 6701, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR_HP */ - { 6732, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE */ - { 6759, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE_EXT */ - { 6790, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS */ - { 6817, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS_EXT */ - { 6848, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE */ - { 6876, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE_EXT */ - { 6908, 0x00008017 }, /* GL_CONVOLUTION_FORMAT */ - { 6930, 0x00008017 }, /* GL_CONVOLUTION_FORMAT_EXT */ - { 6956, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT */ - { 6978, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT_EXT */ - { 7004, 0x00008018 }, /* GL_CONVOLUTION_WIDTH */ - { 7025, 0x00008018 }, /* GL_CONVOLUTION_WIDTH_EXT */ - { 7050, 0x00008862 }, /* GL_COORD_REPLACE */ - { 7067, 0x00008862 }, /* GL_COORD_REPLACE_ARB */ - { 7088, 0x00008862 }, /* GL_COORD_REPLACE_NV */ - { 7108, 0x00008862 }, /* GL_COORD_REPLACE_OES */ - { 7129, 0x00001503 }, /* GL_COPY */ - { 7137, 0x0000150C }, /* GL_COPY_INVERTED */ - { 7154, 0x00000706 }, /* GL_COPY_PIXEL_TOKEN */ - { 7174, 0x00008F36 }, /* GL_COPY_READ_BUFFER */ - { 7194, 0x00008F37 }, /* GL_COPY_WRITE_BUFFER */ - { 7215, 0x00000B44 }, /* GL_CULL_FACE */ - { 7228, 0x00000B45 }, /* GL_CULL_FACE_MODE */ - { 7246, 0x000081AA }, /* GL_CULL_VERTEX_EXT */ - { 7265, 0x000081AC }, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ - { 7297, 0x000081AB }, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ - { 7332, 0x00008626 }, /* GL_CURRENT_ATTRIB_NV */ - { 7353, 0x00000001 }, /* GL_CURRENT_BIT */ - { 7368, 0x00000B00 }, /* GL_CURRENT_COLOR */ - { 7385, 0x00008453 }, /* GL_CURRENT_FOG_COORD */ - { 7406, 0x00008453 }, /* GL_CURRENT_FOG_COORDINATE */ - { 7432, 0x00000B01 }, /* GL_CURRENT_INDEX */ - { 7449, 0x00008641 }, /* GL_CURRENT_MATRIX_ARB */ - { 7471, 0x00008845 }, /* GL_CURRENT_MATRIX_INDEX_ARB */ - { 7499, 0x00008641 }, /* GL_CURRENT_MATRIX_NV */ - { 7520, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ - { 7554, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_NV */ - { 7587, 0x00000B02 }, /* GL_CURRENT_NORMAL */ - { 7605, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_ARB */ - { 7635, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_OES */ - { 7665, 0x00008B8D }, /* GL_CURRENT_PROGRAM */ - { 7684, 0x00008865 }, /* GL_CURRENT_QUERY */ - { 7701, 0x00008865 }, /* GL_CURRENT_QUERY_ARB */ - { 7722, 0x00000B04 }, /* GL_CURRENT_RASTER_COLOR */ - { 7746, 0x00000B09 }, /* GL_CURRENT_RASTER_DISTANCE */ - { 7773, 0x00000B05 }, /* GL_CURRENT_RASTER_INDEX */ - { 7797, 0x00000B07 }, /* GL_CURRENT_RASTER_POSITION */ - { 7824, 0x00000B08 }, /* GL_CURRENT_RASTER_POSITION_VALID */ - { 7857, 0x0000845F }, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ - { 7891, 0x00000B06 }, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ - { 7924, 0x00008459 }, /* GL_CURRENT_SECONDARY_COLOR */ - { 7951, 0x00000B03 }, /* GL_CURRENT_TEXTURE_COORDS */ - { 7977, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB */ - { 8002, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB_ARB */ - { 8031, 0x000086A8 }, /* GL_CURRENT_WEIGHT_ARB */ - { 8053, 0x00000900 }, /* GL_CW */ - { 8059, 0x0000875B }, /* GL_DEBUG_ASSERT_MESA */ - { 8080, 0x00008759 }, /* GL_DEBUG_OBJECT_MESA */ - { 8101, 0x0000875A }, /* GL_DEBUG_PRINT_MESA */ - { 8121, 0x00002101 }, /* GL_DECAL */ - { 8130, 0x00001E03 }, /* GL_DECR */ - { 8138, 0x00008508 }, /* GL_DECR_WRAP */ - { 8151, 0x00008508 }, /* GL_DECR_WRAP_EXT */ - { 8168, 0x00008B80 }, /* GL_DELETE_STATUS */ - { 8185, 0x00001801 }, /* GL_DEPTH */ - { 8194, 0x000088F0 }, /* GL_DEPTH24_STENCIL8 */ - { 8214, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_EXT */ - { 8238, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_OES */ - { 8262, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT */ - { 8282, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_EXT */ - { 8306, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_OES */ - { 8330, 0x00000D1F }, /* GL_DEPTH_BIAS */ - { 8344, 0x00000D56 }, /* GL_DEPTH_BITS */ - { 8358, 0x00008891 }, /* GL_DEPTH_BOUNDS_EXT */ - { 8378, 0x00008890 }, /* GL_DEPTH_BOUNDS_TEST_EXT */ - { 8403, 0x00008223 }, /* GL_DEPTH_BUFFER */ - { 8419, 0x00000100 }, /* GL_DEPTH_BUFFER_BIT */ - { 8439, 0x0000864F }, /* GL_DEPTH_CLAMP */ - { 8454, 0x0000864F }, /* GL_DEPTH_CLAMP_NV */ - { 8472, 0x00000B73 }, /* GL_DEPTH_CLEAR_VALUE */ - { 8493, 0x00001902 }, /* GL_DEPTH_COMPONENT */ - { 8512, 0x000081A5 }, /* GL_DEPTH_COMPONENT16 */ - { 8533, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_ARB */ - { 8558, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_OES */ - { 8583, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_SGIX */ - { 8609, 0x000081A6 }, /* GL_DEPTH_COMPONENT24 */ - { 8630, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_ARB */ - { 8655, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_OES */ - { 8680, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_SGIX */ - { 8706, 0x000081A7 }, /* GL_DEPTH_COMPONENT32 */ - { 8727, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_ARB */ - { 8752, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_OES */ - { 8777, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_SGIX */ - { 8803, 0x00000B74 }, /* GL_DEPTH_FUNC */ - { 8817, 0x00000B70 }, /* GL_DEPTH_RANGE */ - { 8832, 0x00000D1E }, /* GL_DEPTH_SCALE */ - { 8847, 0x000084F9 }, /* GL_DEPTH_STENCIL */ - { 8864, 0x0000821A }, /* GL_DEPTH_STENCIL_ATTACHMENT */ - { 8892, 0x000084F9 }, /* GL_DEPTH_STENCIL_EXT */ - { 8913, 0x000084F9 }, /* GL_DEPTH_STENCIL_NV */ - { 8933, 0x000084F9 }, /* GL_DEPTH_STENCIL_OES */ - { 8954, 0x0000886F }, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ - { 8982, 0x0000886E }, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ - { 9010, 0x00000B71 }, /* GL_DEPTH_TEST */ - { 9024, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE */ - { 9046, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE_ARB */ - { 9072, 0x00000B72 }, /* GL_DEPTH_WRITEMASK */ - { 9091, 0x00001201 }, /* GL_DIFFUSE */ - { 9102, 0x00000BD0 }, /* GL_DITHER */ - { 9112, 0x00000A02 }, /* GL_DOMAIN */ - { 9122, 0x00001100 }, /* GL_DONT_CARE */ - { 9135, 0x000086AE }, /* GL_DOT3_RGB */ - { 9147, 0x000086AF }, /* GL_DOT3_RGBA */ - { 9160, 0x000086AF }, /* GL_DOT3_RGBA_ARB */ - { 9177, 0x00008741 }, /* GL_DOT3_RGBA_EXT */ - { 9194, 0x000086AE }, /* GL_DOT3_RGB_ARB */ - { 9210, 0x00008740 }, /* GL_DOT3_RGB_EXT */ - { 9226, 0x0000140A }, /* GL_DOUBLE */ - { 9236, 0x00000C32 }, /* GL_DOUBLEBUFFER */ - { 9252, 0x00000C01 }, /* GL_DRAW_BUFFER */ - { 9267, 0x00008825 }, /* GL_DRAW_BUFFER0 */ - { 9283, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */ - { 9303, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */ - { 9323, 0x00008826 }, /* GL_DRAW_BUFFER1 */ - { 9339, 0x0000882F }, /* GL_DRAW_BUFFER10 */ - { 9356, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */ - { 9377, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */ - { 9398, 0x00008830 }, /* GL_DRAW_BUFFER11 */ - { 9415, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */ - { 9436, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */ - { 9457, 0x00008831 }, /* GL_DRAW_BUFFER12 */ - { 9474, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */ - { 9495, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */ - { 9516, 0x00008832 }, /* GL_DRAW_BUFFER13 */ - { 9533, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */ - { 9554, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */ - { 9575, 0x00008833 }, /* GL_DRAW_BUFFER14 */ - { 9592, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */ - { 9613, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */ - { 9634, 0x00008834 }, /* GL_DRAW_BUFFER15 */ - { 9651, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */ - { 9672, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */ - { 9693, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */ - { 9713, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */ - { 9733, 0x00008827 }, /* GL_DRAW_BUFFER2 */ - { 9749, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */ - { 9769, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */ - { 9789, 0x00008828 }, /* GL_DRAW_BUFFER3 */ - { 9805, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */ - { 9825, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */ - { 9845, 0x00008829 }, /* GL_DRAW_BUFFER4 */ - { 9861, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */ - { 9881, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */ - { 9901, 0x0000882A }, /* GL_DRAW_BUFFER5 */ - { 9917, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */ - { 9937, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */ - { 9957, 0x0000882B }, /* GL_DRAW_BUFFER6 */ - { 9973, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */ - { 9993, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */ - { 10013, 0x0000882C }, /* GL_DRAW_BUFFER7 */ - { 10029, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */ - { 10049, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */ - { 10069, 0x0000882D }, /* GL_DRAW_BUFFER8 */ - { 10085, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */ - { 10105, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */ - { 10125, 0x0000882E }, /* GL_DRAW_BUFFER9 */ - { 10141, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */ - { 10161, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */ - { 10181, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER */ - { 10201, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING */ - { 10229, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */ - { 10261, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */ - { 10285, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */ - { 10305, 0x00000304 }, /* GL_DST_ALPHA */ - { 10318, 0x00000306 }, /* GL_DST_COLOR */ - { 10331, 0x0000877A }, /* GL_DU8DV8_ATI */ - { 10345, 0x00008779 }, /* GL_DUDV_ATI */ - { 10357, 0x000088EA }, /* GL_DYNAMIC_COPY */ - { 10373, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */ - { 10393, 0x000088E8 }, /* GL_DYNAMIC_DRAW */ - { 10409, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */ - { 10429, 0x000088E9 }, /* GL_DYNAMIC_READ */ - { 10445, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */ - { 10465, 0x00000B43 }, /* GL_EDGE_FLAG */ - { 10478, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */ - { 10497, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ - { 10531, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */ - { 10569, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */ - { 10596, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */ - { 10622, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */ - { 10646, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ - { 10678, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */ - { 10714, 0x00001600 }, /* GL_EMISSION */ - { 10726, 0x00002000 }, /* GL_ENABLE_BIT */ - { 10740, 0x00000202 }, /* GL_EQUAL */ - { 10749, 0x00001509 }, /* GL_EQUIV */ - { 10758, 0x00010000 }, /* GL_EVAL_BIT */ - { 10770, 0x00000800 }, /* GL_EXP */ - { 10777, 0x00000801 }, /* GL_EXP2 */ - { 10785, 0x00001F03 }, /* GL_EXTENSIONS */ - { 10799, 0x00002400 }, /* GL_EYE_LINEAR */ - { 10813, 0x00002502 }, /* GL_EYE_PLANE */ - { 10826, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */ - { 10851, 0x0000855B }, /* GL_EYE_RADIAL_NV */ - { 10868, 0x00000000 }, /* GL_FALSE */ - { 10877, 0x00001101 }, /* GL_FASTEST */ - { 10888, 0x00001C01 }, /* GL_FEEDBACK */ - { 10900, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */ - { 10927, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */ - { 10951, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */ - { 10975, 0x00001B02 }, /* GL_FILL */ - { 10983, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION */ - { 11010, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION_EXT */ - { 11041, 0x0000140C }, /* GL_FIXED */ - { 11050, 0x0000140C }, /* GL_FIXED_OES */ - { 11063, 0x0000891D }, /* GL_FIXED_ONLY */ - { 11077, 0x00001D00 }, /* GL_FLAT */ - { 11085, 0x00001406 }, /* GL_FLOAT */ - { 11094, 0x00008B5A }, /* GL_FLOAT_MAT2 */ - { 11108, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */ - { 11126, 0x00008B65 }, /* GL_FLOAT_MAT2x3 */ - { 11142, 0x00008B66 }, /* GL_FLOAT_MAT2x4 */ - { 11158, 0x00008B5B }, /* GL_FLOAT_MAT3 */ - { 11172, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */ - { 11190, 0x00008B67 }, /* GL_FLOAT_MAT3x2 */ - { 11206, 0x00008B68 }, /* GL_FLOAT_MAT3x4 */ - { 11222, 0x00008B5C }, /* GL_FLOAT_MAT4 */ - { 11236, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */ - { 11254, 0x00008B69 }, /* GL_FLOAT_MAT4x2 */ - { 11270, 0x00008B6A }, /* GL_FLOAT_MAT4x3 */ - { 11286, 0x00008B50 }, /* GL_FLOAT_VEC2 */ - { 11300, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */ - { 11318, 0x00008B51 }, /* GL_FLOAT_VEC3 */ - { 11332, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */ - { 11350, 0x00008B52 }, /* GL_FLOAT_VEC4 */ - { 11364, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */ - { 11382, 0x00000B60 }, /* GL_FOG */ - { 11389, 0x00000080 }, /* GL_FOG_BIT */ - { 11400, 0x00000B66 }, /* GL_FOG_COLOR */ - { 11413, 0x00008451 }, /* GL_FOG_COORD */ - { 11426, 0x00008451 }, /* GL_FOG_COORDINATE */ - { 11444, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */ - { 11468, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ - { 11507, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */ - { 11550, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */ - { 11582, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ - { 11613, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */ - { 11642, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */ - { 11667, 0x00008457 }, /* GL_FOG_COORD_ARRAY */ - { 11686, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */ - { 11720, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */ - { 11747, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */ - { 11773, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */ - { 11797, 0x00008450 }, /* GL_FOG_COORD_SRC */ - { 11814, 0x00000B62 }, /* GL_FOG_DENSITY */ - { 11829, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */ - { 11853, 0x00000B64 }, /* GL_FOG_END */ - { 11864, 0x00000C54 }, /* GL_FOG_HINT */ - { 11876, 0x00000B61 }, /* GL_FOG_INDEX */ - { 11889, 0x00000B65 }, /* GL_FOG_MODE */ - { 11901, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */ - { 11920, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */ - { 11945, 0x00000B63 }, /* GL_FOG_START */ - { 11958, 0x00008452 }, /* GL_FRAGMENT_DEPTH */ - { 11976, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */ - { 12000, 0x00008B30 }, /* GL_FRAGMENT_SHADER */ - { 12019, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */ - { 12042, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ - { 12077, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES */ - { 12116, 0x00008D40 }, /* GL_FRAMEBUFFER */ - { 12131, 0x00008215 }, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ - { 12168, 0x00008214 }, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ - { 12204, 0x00008210 }, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ - { 12245, 0x00008211 }, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ - { 12286, 0x00008216 }, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ - { 12323, 0x00008213 }, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ - { 12360, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */ - { 12394, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB */ - { 12432, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ - { 12470, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */ - { 12512, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES */ - { 12554, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ - { 12592, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */ - { 12634, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES */ - { 12676, 0x00008212 }, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ - { 12711, 0x00008217 }, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ - { 12750, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */ - { 12799, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES */ - { 12848, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ - { 12896, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */ - { 12948, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES */ - { 13000, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ - { 13040, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ - { 13084, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ - { 13124, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */ - { 13168, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES */ - { 13212, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING */ - { 13235, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */ - { 13262, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_OES */ - { 13289, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE */ - { 13313, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */ - { 13341, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_OES */ - { 13369, 0x00008218 }, /* GL_FRAMEBUFFER_DEFAULT */ - { 13392, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */ - { 13411, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ - { 13448, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */ - { 13489, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES */ - { 13530, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS */ - { 13567, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ - { 13608, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES */ - { 13649, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ - { 13687, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */ - { 13729, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES */ - { 13771, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ - { 13822, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ - { 13860, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES */ - { 13898, 0x00008DA9 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ - { 13940, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */ - { 13980, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB */ - { 14024, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ - { 14069, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */ - { 14118, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES */ - { 14167, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ - { 14205, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT */ - { 14247, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ - { 14285, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */ - { 14327, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES */ - { 14369, 0x00008D40 }, /* GL_FRAMEBUFFER_OES */ - { 14388, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ - { 14420, 0x00008219 }, /* GL_FRAMEBUFFER_UNDEFINED */ - { 14445, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED */ - { 14472, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */ - { 14503, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_OES */ - { 14534, 0x00000404 }, /* GL_FRONT */ - { 14543, 0x00000408 }, /* GL_FRONT_AND_BACK */ - { 14561, 0x00000B46 }, /* GL_FRONT_FACE */ - { 14575, 0x00000400 }, /* GL_FRONT_LEFT */ - { 14589, 0x00000401 }, /* GL_FRONT_RIGHT */ - { 14604, 0x00008006 }, /* GL_FUNC_ADD */ - { 14616, 0x00008006 }, /* GL_FUNC_ADD_EXT */ - { 14632, 0x00008006 }, /* GL_FUNC_ADD_OES */ - { 14648, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */ - { 14673, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */ - { 14702, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_OES */ - { 14731, 0x0000800A }, /* GL_FUNC_SUBTRACT */ - { 14748, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */ - { 14769, 0x0000800A }, /* GL_FUNC_SUBTRACT_OES */ - { 14790, 0x00008191 }, /* GL_GENERATE_MIPMAP */ - { 14809, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */ - { 14833, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */ - { 14862, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */ - { 14886, 0x00008917 }, /* GL_GEOMETRY_INPUT_TYPE */ - { 14909, 0x00008DDB }, /* GL_GEOMETRY_INPUT_TYPE_ARB */ - { 14936, 0x00008918 }, /* GL_GEOMETRY_OUTPUT_TYPE */ - { 14960, 0x00008DDC }, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ - { 14988, 0x00008DD9 }, /* GL_GEOMETRY_SHADER */ - { 15007, 0x00008DD9 }, /* GL_GEOMETRY_SHADER_ARB */ - { 15030, 0x00008916 }, /* GL_GEOMETRY_VERTICES_OUT */ - { 15055, 0x00008DDA }, /* GL_GEOMETRY_VERTICES_OUT_ARB */ - { 15084, 0x00000206 }, /* GL_GEQUAL */ - { 15094, 0x00000204 }, /* GL_GREATER */ - { 15105, 0x00001904 }, /* GL_GREEN */ - { 15114, 0x00000D19 }, /* GL_GREEN_BIAS */ - { 15128, 0x00000D53 }, /* GL_GREEN_BITS */ - { 15142, 0x00008D95 }, /* GL_GREEN_INTEGER */ - { 15159, 0x00008D95 }, /* GL_GREEN_INTEGER_EXT */ - { 15180, 0x00000D18 }, /* GL_GREEN_SCALE */ - { 15195, 0x0000140B }, /* GL_HALF_FLOAT */ - { 15209, 0x00008D61 }, /* GL_HALF_FLOAT_OES */ - { 15227, 0x00008DF2 }, /* GL_HIGH_FLOAT */ - { 15241, 0x00008DF5 }, /* GL_HIGH_INT */ - { 15253, 0x00008000 }, /* GL_HINT_BIT */ - { 15265, 0x00008024 }, /* GL_HISTOGRAM */ - { 15278, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */ - { 15302, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */ - { 15330, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */ - { 15353, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */ - { 15380, 0x00008024 }, /* GL_HISTOGRAM_EXT */ - { 15397, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */ - { 15417, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */ - { 15441, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */ - { 15465, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */ - { 15493, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */ - { 15521, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */ - { 15553, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */ - { 15575, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */ - { 15601, 0x0000802D }, /* GL_HISTOGRAM_SINK */ - { 15619, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */ - { 15641, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */ - { 15660, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */ - { 15683, 0x0000862A }, /* GL_IDENTITY_NV */ - { 15698, 0x00008150 }, /* GL_IGNORE_BORDER_HP */ - { 15718, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */ - { 15754, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ - { 15794, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */ - { 15828, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ - { 15866, 0x00001E02 }, /* GL_INCR */ - { 15874, 0x00008507 }, /* GL_INCR_WRAP */ - { 15887, 0x00008507 }, /* GL_INCR_WRAP_EXT */ - { 15904, 0x00008222 }, /* GL_INDEX */ - { 15913, 0x00008077 }, /* GL_INDEX_ARRAY */ - { 15928, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */ - { 15958, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */ - { 15992, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */ - { 16015, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */ - { 16037, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */ - { 16057, 0x00000D51 }, /* GL_INDEX_BITS */ - { 16071, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */ - { 16092, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */ - { 16110, 0x00000C30 }, /* GL_INDEX_MODE */ - { 16124, 0x00000D13 }, /* GL_INDEX_OFFSET */ - { 16140, 0x00000D12 }, /* GL_INDEX_SHIFT */ - { 16155, 0x00000C21 }, /* GL_INDEX_WRITEMASK */ - { 16174, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */ - { 16193, 0x00001404 }, /* GL_INT */ - { 16200, 0x00008049 }, /* GL_INTENSITY */ - { 16213, 0x0000804C }, /* GL_INTENSITY12 */ - { 16228, 0x0000804C }, /* GL_INTENSITY12_EXT */ - { 16247, 0x0000804D }, /* GL_INTENSITY16 */ - { 16262, 0x00008D8B }, /* GL_INTENSITY16I_EXT */ - { 16282, 0x00008D79 }, /* GL_INTENSITY16UI_EXT */ - { 16303, 0x0000804D }, /* GL_INTENSITY16_EXT */ - { 16322, 0x00008D85 }, /* GL_INTENSITY32I_EXT */ - { 16342, 0x00008D73 }, /* GL_INTENSITY32UI_EXT */ - { 16363, 0x0000804A }, /* GL_INTENSITY4 */ - { 16377, 0x0000804A }, /* GL_INTENSITY4_EXT */ - { 16395, 0x0000804B }, /* GL_INTENSITY8 */ - { 16409, 0x00008D91 }, /* GL_INTENSITY8I_EXT */ - { 16428, 0x00008D7F }, /* GL_INTENSITY8UI_EXT */ - { 16448, 0x0000804B }, /* GL_INTENSITY8_EXT */ - { 16466, 0x00008049 }, /* GL_INTENSITY_EXT */ - { 16483, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS */ - { 16506, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS_EXT */ - { 16533, 0x00008575 }, /* GL_INTERPOLATE */ - { 16548, 0x00008575 }, /* GL_INTERPOLATE_ARB */ - { 16567, 0x00008575 }, /* GL_INTERPOLATE_EXT */ - { 16586, 0x00008DF7 }, /* GL_INT_10_10_10_2_OES */ - { 16608, 0x00008DC9 }, /* GL_INT_SAMPLER_1D */ - { 16626, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY */ - { 16650, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY_EXT */ - { 16678, 0x00008DC9 }, /* GL_INT_SAMPLER_1D_EXT */ - { 16700, 0x00008DCA }, /* GL_INT_SAMPLER_2D */ - { 16718, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY */ - { 16742, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY_EXT */ - { 16770, 0x00008DCA }, /* GL_INT_SAMPLER_2D_EXT */ - { 16792, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT */ - { 16815, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT_EXT */ - { 16842, 0x00008DCB }, /* GL_INT_SAMPLER_3D */ - { 16860, 0x00008DCB }, /* GL_INT_SAMPLER_3D_EXT */ - { 16882, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER */ - { 16904, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER_EXT */ - { 16930, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE */ - { 16950, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE_EXT */ - { 16974, 0x00008B53 }, /* GL_INT_VEC2 */ - { 16986, 0x00008B53 }, /* GL_INT_VEC2_ARB */ - { 17002, 0x00008B54 }, /* GL_INT_VEC3 */ - { 17014, 0x00008B54 }, /* GL_INT_VEC3_ARB */ - { 17030, 0x00008B55 }, /* GL_INT_VEC4 */ - { 17042, 0x00008B55 }, /* GL_INT_VEC4_ARB */ - { 17058, 0x00000500 }, /* GL_INVALID_ENUM */ - { 17074, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION */ - { 17107, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */ - { 17144, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_OES */ - { 17181, 0x00000502 }, /* GL_INVALID_OPERATION */ - { 17202, 0x00000501 }, /* GL_INVALID_VALUE */ - { 17219, 0x0000862B }, /* GL_INVERSE_NV */ - { 17233, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */ - { 17257, 0x0000150A }, /* GL_INVERT */ - { 17267, 0x00001E00 }, /* GL_KEEP */ - { 17275, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION */ - { 17301, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION_EXT */ - { 17331, 0x00000406 }, /* GL_LEFT */ - { 17339, 0x00000203 }, /* GL_LEQUAL */ - { 17349, 0x00000201 }, /* GL_LESS */ - { 17357, 0x00004000 }, /* GL_LIGHT0 */ - { 17367, 0x00004001 }, /* GL_LIGHT1 */ - { 17377, 0x00004002 }, /* GL_LIGHT2 */ - { 17387, 0x00004003 }, /* GL_LIGHT3 */ - { 17397, 0x00004004 }, /* GL_LIGHT4 */ - { 17407, 0x00004005 }, /* GL_LIGHT5 */ - { 17417, 0x00004006 }, /* GL_LIGHT6 */ - { 17427, 0x00004007 }, /* GL_LIGHT7 */ - { 17437, 0x00000B50 }, /* GL_LIGHTING */ - { 17449, 0x00000040 }, /* GL_LIGHTING_BIT */ - { 17465, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */ - { 17488, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */ - { 17517, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */ - { 17550, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ - { 17578, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */ - { 17602, 0x00001B01 }, /* GL_LINE */ - { 17610, 0x00002601 }, /* GL_LINEAR */ - { 17620, 0x00001208 }, /* GL_LINEAR_ATTENUATION */ - { 17642, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ - { 17672, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ - { 17703, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */ - { 17727, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */ - { 17752, 0x00000001 }, /* GL_LINES */ - { 17761, 0x0000000A }, /* GL_LINES_ADJACENCY */ - { 17780, 0x0000000A }, /* GL_LINES_ADJACENCY_ARB */ - { 17803, 0x00000004 }, /* GL_LINE_BIT */ - { 17815, 0x00000002 }, /* GL_LINE_LOOP */ - { 17828, 0x00000707 }, /* GL_LINE_RESET_TOKEN */ - { 17848, 0x00000B20 }, /* GL_LINE_SMOOTH */ - { 17863, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */ - { 17883, 0x00000B24 }, /* GL_LINE_STIPPLE */ - { 17899, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */ - { 17923, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */ - { 17946, 0x00000003 }, /* GL_LINE_STRIP */ - { 17960, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY */ - { 17984, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY_ARB */ - { 18012, 0x00000702 }, /* GL_LINE_TOKEN */ - { 18026, 0x00000B21 }, /* GL_LINE_WIDTH */ - { 18040, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */ - { 18066, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */ - { 18086, 0x00008B82 }, /* GL_LINK_STATUS */ - { 18101, 0x00000B32 }, /* GL_LIST_BASE */ - { 18114, 0x00020000 }, /* GL_LIST_BIT */ - { 18126, 0x00000B33 }, /* GL_LIST_INDEX */ - { 18140, 0x00000B30 }, /* GL_LIST_MODE */ - { 18153, 0x00000101 }, /* GL_LOAD */ - { 18161, 0x00000BF1 }, /* GL_LOGIC_OP */ - { 18173, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */ - { 18190, 0x00008CA1 }, /* GL_LOWER_LEFT */ - { 18204, 0x00008DF0 }, /* GL_LOW_FLOAT */ - { 18217, 0x00008DF3 }, /* GL_LOW_INT */ - { 18228, 0x00001909 }, /* GL_LUMINANCE */ - { 18241, 0x00008041 }, /* GL_LUMINANCE12 */ - { 18256, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */ - { 18279, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */ - { 18306, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */ - { 18328, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */ - { 18354, 0x00008041 }, /* GL_LUMINANCE12_EXT */ - { 18373, 0x00008042 }, /* GL_LUMINANCE16 */ - { 18388, 0x00008D8C }, /* GL_LUMINANCE16I_EXT */ - { 18408, 0x00008D7A }, /* GL_LUMINANCE16UI_EXT */ - { 18429, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */ - { 18452, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */ - { 18479, 0x00008042 }, /* GL_LUMINANCE16_EXT */ - { 18498, 0x00008D86 }, /* GL_LUMINANCE32I_EXT */ - { 18518, 0x00008D74 }, /* GL_LUMINANCE32UI_EXT */ - { 18539, 0x0000803F }, /* GL_LUMINANCE4 */ - { 18553, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */ - { 18574, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */ - { 18599, 0x0000803F }, /* GL_LUMINANCE4_EXT */ - { 18617, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */ - { 18638, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */ - { 18663, 0x00008040 }, /* GL_LUMINANCE8 */ - { 18677, 0x00008D92 }, /* GL_LUMINANCE8I_EXT */ - { 18696, 0x00008D80 }, /* GL_LUMINANCE8UI_EXT */ - { 18716, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */ - { 18737, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */ - { 18762, 0x00008040 }, /* GL_LUMINANCE8_EXT */ - { 18780, 0x0000190A }, /* GL_LUMINANCE_ALPHA */ - { 18799, 0x00008D8D }, /* GL_LUMINANCE_ALPHA16I_EXT */ - { 18825, 0x00008D7B }, /* GL_LUMINANCE_ALPHA16UI_EXT */ - { 18852, 0x00008D87 }, /* GL_LUMINANCE_ALPHA32I_EXT */ - { 18878, 0x00008D75 }, /* GL_LUMINANCE_ALPHA32UI_EXT */ - { 18905, 0x00008D93 }, /* GL_LUMINANCE_ALPHA8I_EXT */ - { 18930, 0x00008D81 }, /* GL_LUMINANCE_ALPHA8UI_EXT */ - { 18956, 0x00008D9D }, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */ - { 18987, 0x00008D9C }, /* GL_LUMINANCE_INTEGER_EXT */ - { 19012, 0x0000821B }, /* GL_MAJOR_VERSION */ - { 19029, 0x00000D90 }, /* GL_MAP1_COLOR_4 */ - { 19045, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */ - { 19065, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */ - { 19087, 0x00000D91 }, /* GL_MAP1_INDEX */ - { 19101, 0x00000D92 }, /* GL_MAP1_NORMAL */ - { 19116, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */ - { 19140, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */ - { 19164, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */ - { 19188, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */ - { 19212, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */ - { 19229, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */ - { 19246, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ - { 19274, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ - { 19303, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ - { 19332, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ - { 19361, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ - { 19390, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ - { 19419, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ - { 19448, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ - { 19476, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ - { 19504, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ - { 19532, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ - { 19560, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ - { 19588, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ - { 19616, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ - { 19644, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ - { 19672, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ - { 19700, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */ - { 19716, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */ - { 19736, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */ - { 19758, 0x00000DB1 }, /* GL_MAP2_INDEX */ - { 19772, 0x00000DB2 }, /* GL_MAP2_NORMAL */ - { 19787, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */ - { 19811, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */ - { 19835, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */ - { 19859, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */ - { 19883, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */ - { 19900, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */ - { 19917, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ - { 19945, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ - { 19974, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ - { 20003, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ - { 20032, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ - { 20061, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ - { 20090, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ - { 20119, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ - { 20147, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ - { 20175, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ - { 20203, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ - { 20231, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ - { 20259, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ - { 20287, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */ - { 20315, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ - { 20343, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ - { 20371, 0x00000D10 }, /* GL_MAP_COLOR */ - { 20384, 0x00000010 }, /* GL_MAP_FLUSH_EXPLICIT_BIT */ - { 20410, 0x00000008 }, /* GL_MAP_INVALIDATE_BUFFER_BIT */ - { 20439, 0x00000004 }, /* GL_MAP_INVALIDATE_RANGE_BIT */ - { 20467, 0x00000001 }, /* GL_MAP_READ_BIT */ - { 20483, 0x00000D11 }, /* GL_MAP_STENCIL */ - { 20498, 0x00000020 }, /* GL_MAP_UNSYNCHRONIZED_BIT */ - { 20524, 0x00000002 }, /* GL_MAP_WRITE_BIT */ - { 20541, 0x000088C0 }, /* GL_MATRIX0_ARB */ - { 20556, 0x00008630 }, /* GL_MATRIX0_NV */ - { 20570, 0x000088CA }, /* GL_MATRIX10_ARB */ - { 20586, 0x000088CB }, /* GL_MATRIX11_ARB */ - { 20602, 0x000088CC }, /* GL_MATRIX12_ARB */ - { 20618, 0x000088CD }, /* GL_MATRIX13_ARB */ - { 20634, 0x000088CE }, /* GL_MATRIX14_ARB */ - { 20650, 0x000088CF }, /* GL_MATRIX15_ARB */ - { 20666, 0x000088D0 }, /* GL_MATRIX16_ARB */ - { 20682, 0x000088D1 }, /* GL_MATRIX17_ARB */ - { 20698, 0x000088D2 }, /* GL_MATRIX18_ARB */ - { 20714, 0x000088D3 }, /* GL_MATRIX19_ARB */ - { 20730, 0x000088C1 }, /* GL_MATRIX1_ARB */ - { 20745, 0x00008631 }, /* GL_MATRIX1_NV */ - { 20759, 0x000088D4 }, /* GL_MATRIX20_ARB */ - { 20775, 0x000088D5 }, /* GL_MATRIX21_ARB */ - { 20791, 0x000088D6 }, /* GL_MATRIX22_ARB */ - { 20807, 0x000088D7 }, /* GL_MATRIX23_ARB */ - { 20823, 0x000088D8 }, /* GL_MATRIX24_ARB */ - { 20839, 0x000088D9 }, /* GL_MATRIX25_ARB */ - { 20855, 0x000088DA }, /* GL_MATRIX26_ARB */ - { 20871, 0x000088DB }, /* GL_MATRIX27_ARB */ - { 20887, 0x000088DC }, /* GL_MATRIX28_ARB */ - { 20903, 0x000088DD }, /* GL_MATRIX29_ARB */ - { 20919, 0x000088C2 }, /* GL_MATRIX2_ARB */ - { 20934, 0x00008632 }, /* GL_MATRIX2_NV */ - { 20948, 0x000088DE }, /* GL_MATRIX30_ARB */ - { 20964, 0x000088DF }, /* GL_MATRIX31_ARB */ - { 20980, 0x000088C3 }, /* GL_MATRIX3_ARB */ - { 20995, 0x00008633 }, /* GL_MATRIX3_NV */ - { 21009, 0x000088C4 }, /* GL_MATRIX4_ARB */ - { 21024, 0x00008634 }, /* GL_MATRIX4_NV */ - { 21038, 0x000088C5 }, /* GL_MATRIX5_ARB */ - { 21053, 0x00008635 }, /* GL_MATRIX5_NV */ - { 21067, 0x000088C6 }, /* GL_MATRIX6_ARB */ - { 21082, 0x00008636 }, /* GL_MATRIX6_NV */ - { 21096, 0x000088C7 }, /* GL_MATRIX7_ARB */ - { 21111, 0x00008637 }, /* GL_MATRIX7_NV */ - { 21125, 0x000088C8 }, /* GL_MATRIX8_ARB */ - { 21140, 0x000088C9 }, /* GL_MATRIX9_ARB */ - { 21155, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */ - { 21181, 0x00008B9E }, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ - { 21222, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_OES */ - { 21248, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ - { 21282, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_OES */ - { 21316, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ - { 21347, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_OES */ - { 21378, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ - { 21411, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_OES */ - { 21444, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ - { 21475, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_OES */ - { 21506, 0x00000BA0 }, /* GL_MATRIX_MODE */ - { 21521, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */ - { 21543, 0x00008840 }, /* GL_MATRIX_PALETTE_OES */ - { 21565, 0x00008008 }, /* GL_MAX */ - { 21572, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */ - { 21595, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE_OES */ - { 21622, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS */ - { 21650, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */ - { 21682, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */ - { 21708, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ - { 21741, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ - { 21767, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - { 21801, 0x00000D32 }, /* GL_MAX_CLIP_DISTANCES */ - { 21823, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */ - { 21842, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS */ - { 21867, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */ - { 21896, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ - { 21928, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */ - { 21964, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ - { 22000, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */ - { 22040, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */ - { 22066, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */ - { 22096, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */ - { 22121, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */ - { 22150, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ - { 22179, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */ - { 22212, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES */ - { 22245, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */ - { 22265, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */ - { 22289, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */ - { 22313, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */ - { 22337, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */ - { 22362, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */ - { 22380, 0x00008008 }, /* GL_MAX_EXT */ - { 22391, 0x00009125 }, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */ - { 22424, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ - { 22459, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */ - { 22498, 0x00008DFD }, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ - { 22530, 0x00009123 }, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */ - { 22563, 0x00009124 }, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */ - { 22597, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */ - { 22629, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB */ - { 22665, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */ - { 22701, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB */ - { 22741, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */ - { 22781, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB */ - { 22825, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */ - { 22860, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB */ - { 22899, 0x00008DDD }, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ - { 22938, 0x00000D31 }, /* GL_MAX_LIGHTS */ - { 22952, 0x00000B31 }, /* GL_MAX_LIST_NESTING */ - { 22972, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ - { 23010, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */ - { 23039, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */ - { 23063, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */ - { 23091, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_OES */ - { 23119, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */ - { 23142, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ - { 23179, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ - { 23215, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ - { 23242, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ - { 23271, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ - { 23305, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */ - { 23341, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ - { 23368, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ - { 23400, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ - { 23436, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ - { 23465, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ - { 23494, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */ - { 23522, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ - { 23560, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - { 23604, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - { 23647, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ - { 23681, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - { 23720, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ - { 23757, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ - { 23795, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - { 23838, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - { 23881, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ - { 23911, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ - { 23942, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET */ - { 23970, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET_EXT */ - { 24002, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ - { 24038, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ - { 24074, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */ - { 24104, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */ - { 24134, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */ - { 24168, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */ - { 24201, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE */ - { 24226, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */ - { 24255, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_OES */ - { 24284, 0x00008D57 }, /* GL_MAX_SAMPLES */ - { 24299, 0x00008D57 }, /* GL_MAX_SAMPLES_EXT */ - { 24318, 0x00009111 }, /* GL_MAX_SERVER_WAIT_TIMEOUT */ - { 24345, 0x00008504 }, /* GL_MAX_SHININESS_NV */ - { 24365, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */ - { 24389, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE */ - { 24416, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */ - { 24438, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */ - { 24464, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */ - { 24491, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */ - { 24522, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */ - { 24546, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS_EXT */ - { 24574, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ - { 24608, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */ - { 24628, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */ - { 24655, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */ - { 24676, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */ - { 24701, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */ - { 24726, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */ - { 24761, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */ - { 24810, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */ - { 24863, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */ - { 24906, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */ - { 24953, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */ - { 24999, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */ - { 25049, 0x00008B4B }, /* GL_MAX_VARYING_COMPONENTS */ - { 25075, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */ - { 25097, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */ - { 25123, 0x00008DFC }, /* GL_MAX_VARYING_VECTORS */ - { 25146, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */ - { 25168, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */ - { 25194, 0x00009122 }, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */ - { 25226, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ - { 25260, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */ - { 25298, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ - { 25331, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */ - { 25368, 0x00008DFB }, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ - { 25398, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */ - { 25422, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_OES */ - { 25446, 0x00008DDE }, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ - { 25483, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */ - { 25504, 0x00008DF1 }, /* GL_MEDIUM_FLOAT */ - { 25520, 0x00008DF4 }, /* GL_MEDIUM_INT */ - { 25534, 0x00008007 }, /* GL_MIN */ - { 25541, 0x0000802E }, /* GL_MINMAX */ - { 25551, 0x0000802E }, /* GL_MINMAX_EXT */ - { 25565, 0x0000802F }, /* GL_MINMAX_FORMAT */ - { 25582, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */ - { 25603, 0x00008030 }, /* GL_MINMAX_SINK */ - { 25618, 0x00008030 }, /* GL_MINMAX_SINK_EXT */ - { 25637, 0x0000821C }, /* GL_MINOR_VERSION */ - { 25654, 0x00008007 }, /* GL_MIN_EXT */ - { 25665, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET */ - { 25693, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET_EXT */ - { 25725, 0x00008370 }, /* GL_MIRRORED_REPEAT */ - { 25744, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */ - { 25767, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */ - { 25790, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */ - { 25810, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */ - { 25830, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ - { 25860, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */ - { 25888, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ - { 25916, 0x00001700 }, /* GL_MODELVIEW */ - { 25929, 0x00001700 }, /* GL_MODELVIEW0_ARB */ - { 25947, 0x0000872A }, /* GL_MODELVIEW10_ARB */ - { 25966, 0x0000872B }, /* GL_MODELVIEW11_ARB */ - { 25985, 0x0000872C }, /* GL_MODELVIEW12_ARB */ - { 26004, 0x0000872D }, /* GL_MODELVIEW13_ARB */ - { 26023, 0x0000872E }, /* GL_MODELVIEW14_ARB */ - { 26042, 0x0000872F }, /* GL_MODELVIEW15_ARB */ - { 26061, 0x00008730 }, /* GL_MODELVIEW16_ARB */ - { 26080, 0x00008731 }, /* GL_MODELVIEW17_ARB */ - { 26099, 0x00008732 }, /* GL_MODELVIEW18_ARB */ - { 26118, 0x00008733 }, /* GL_MODELVIEW19_ARB */ - { 26137, 0x0000850A }, /* GL_MODELVIEW1_ARB */ - { 26155, 0x00008734 }, /* GL_MODELVIEW20_ARB */ - { 26174, 0x00008735 }, /* GL_MODELVIEW21_ARB */ - { 26193, 0x00008736 }, /* GL_MODELVIEW22_ARB */ - { 26212, 0x00008737 }, /* GL_MODELVIEW23_ARB */ - { 26231, 0x00008738 }, /* GL_MODELVIEW24_ARB */ - { 26250, 0x00008739 }, /* GL_MODELVIEW25_ARB */ - { 26269, 0x0000873A }, /* GL_MODELVIEW26_ARB */ - { 26288, 0x0000873B }, /* GL_MODELVIEW27_ARB */ - { 26307, 0x0000873C }, /* GL_MODELVIEW28_ARB */ - { 26326, 0x0000873D }, /* GL_MODELVIEW29_ARB */ - { 26345, 0x00008722 }, /* GL_MODELVIEW2_ARB */ - { 26363, 0x0000873E }, /* GL_MODELVIEW30_ARB */ - { 26382, 0x0000873F }, /* GL_MODELVIEW31_ARB */ - { 26401, 0x00008723 }, /* GL_MODELVIEW3_ARB */ - { 26419, 0x00008724 }, /* GL_MODELVIEW4_ARB */ - { 26437, 0x00008725 }, /* GL_MODELVIEW5_ARB */ - { 26455, 0x00008726 }, /* GL_MODELVIEW6_ARB */ - { 26473, 0x00008727 }, /* GL_MODELVIEW7_ARB */ - { 26491, 0x00008728 }, /* GL_MODELVIEW8_ARB */ - { 26509, 0x00008729 }, /* GL_MODELVIEW9_ARB */ - { 26527, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */ - { 26547, 0x0000898D }, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ - { 26589, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */ - { 26616, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */ - { 26641, 0x00002100 }, /* GL_MODULATE */ - { 26653, 0x00008744 }, /* GL_MODULATE_ADD_ATI */ - { 26673, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */ - { 26700, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */ - { 26725, 0x00000103 }, /* GL_MULT */ - { 26733, 0x0000809D }, /* GL_MULTISAMPLE */ - { 26748, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */ - { 26768, 0x0000809D }, /* GL_MULTISAMPLE_ARB */ - { 26787, 0x20000000 }, /* GL_MULTISAMPLE_BIT */ - { 26806, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */ - { 26830, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */ - { 26853, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */ - { 26883, 0x00002A25 }, /* GL_N3F_V3F */ - { 26894, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */ - { 26914, 0x0000150E }, /* GL_NAND */ - { 26922, 0x00002600 }, /* GL_NEAREST */ - { 26933, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ - { 26964, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ - { 26996, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */ - { 27021, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */ - { 27047, 0x00000200 }, /* GL_NEVER */ - { 27056, 0x00001102 }, /* GL_NICEST */ - { 27066, 0x00000000 }, /* GL_NONE */ - { 27074, 0x00000000 }, /* GL_NONE_OES */ - { 27086, 0x00001505 }, /* GL_NOOP */ - { 27094, 0x00001508 }, /* GL_NOR */ - { 27101, 0x00000BA1 }, /* GL_NORMALIZE */ - { 27114, 0x00008075 }, /* GL_NORMAL_ARRAY */ - { 27130, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ - { 27161, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */ - { 27196, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */ - { 27220, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */ - { 27243, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */ - { 27264, 0x00008511 }, /* GL_NORMAL_MAP */ - { 27278, 0x00008511 }, /* GL_NORMAL_MAP_ARB */ - { 27296, 0x00008511 }, /* GL_NORMAL_MAP_NV */ - { 27313, 0x00008511 }, /* GL_NORMAL_MAP_OES */ - { 27331, 0x00000205 }, /* GL_NOTEQUAL */ - { 27343, 0x00000000 }, /* GL_NO_ERROR */ - { 27355, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ - { 27389, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */ - { 27427, 0x0000821D }, /* GL_NUM_EXTENSIONS */ - { 27445, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ - { 27479, 0x00008DF9 }, /* GL_NUM_SHADER_BINARY_FORMATS */ - { 27508, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */ - { 27540, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */ - { 27582, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */ - { 27612, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */ - { 27652, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */ - { 27683, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */ - { 27712, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */ - { 27740, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */ - { 27770, 0x00002401 }, /* GL_OBJECT_LINEAR */ - { 27787, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */ - { 27813, 0x00002501 }, /* GL_OBJECT_PLANE */ - { 27829, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */ - { 27864, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */ - { 27886, 0x00009112 }, /* GL_OBJECT_TYPE */ - { 27901, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */ - { 27920, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */ - { 27950, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */ - { 27971, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */ - { 27999, 0x00000001 }, /* GL_ONE */ - { 28006, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */ - { 28034, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */ - { 28066, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */ - { 28094, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */ - { 28126, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */ - { 28149, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */ - { 28172, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */ - { 28195, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */ - { 28218, 0x00008598 }, /* GL_OPERAND0_ALPHA */ - { 28236, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */ - { 28258, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */ - { 28280, 0x00008590 }, /* GL_OPERAND0_RGB */ - { 28296, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */ - { 28316, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */ - { 28336, 0x00008599 }, /* GL_OPERAND1_ALPHA */ - { 28354, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */ - { 28376, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */ - { 28398, 0x00008591 }, /* GL_OPERAND1_RGB */ - { 28414, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */ - { 28434, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */ - { 28454, 0x0000859A }, /* GL_OPERAND2_ALPHA */ - { 28472, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */ - { 28494, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */ - { 28516, 0x00008592 }, /* GL_OPERAND2_RGB */ - { 28532, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */ - { 28552, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */ - { 28572, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */ - { 28593, 0x00008593 }, /* GL_OPERAND3_RGB_NV */ - { 28612, 0x00001507 }, /* GL_OR */ - { 28618, 0x00000A01 }, /* GL_ORDER */ - { 28627, 0x0000150D }, /* GL_OR_INVERTED */ - { 28642, 0x0000150B }, /* GL_OR_REVERSE */ - { 28656, 0x00000505 }, /* GL_OUT_OF_MEMORY */ - { 28673, 0x00000D05 }, /* GL_PACK_ALIGNMENT */ - { 28691, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */ - { 28712, 0x00008758 }, /* GL_PACK_INVERT_MESA */ - { 28732, 0x00000D01 }, /* GL_PACK_LSB_FIRST */ - { 28750, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */ - { 28769, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */ - { 28789, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */ - { 28809, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */ - { 28827, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */ - { 28846, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */ - { 28871, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */ - { 28895, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */ - { 28916, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */ - { 28938, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */ - { 28960, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */ - { 28985, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */ - { 29009, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */ - { 29030, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */ - { 29052, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */ - { 29074, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */ - { 29096, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */ - { 29127, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */ - { 29147, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */ - { 29172, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */ - { 29192, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */ - { 29217, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */ - { 29237, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */ - { 29262, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */ - { 29282, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */ - { 29307, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */ - { 29327, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */ - { 29352, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */ - { 29372, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */ - { 29397, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */ - { 29417, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */ - { 29442, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */ - { 29462, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */ - { 29487, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */ - { 29507, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */ - { 29532, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */ - { 29552, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */ - { 29577, 0x00000020 }, /* GL_PIXEL_MODE_BIT */ - { 29595, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */ - { 29616, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */ - { 29645, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */ - { 29678, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */ - { 29703, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */ - { 29726, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ - { 29757, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */ - { 29792, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */ - { 29819, 0x00001B00 }, /* GL_POINT */ - { 29828, 0x00000000 }, /* GL_POINTS */ - { 29838, 0x00000002 }, /* GL_POINT_BIT */ - { 29851, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */ - { 29881, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */ - { 29915, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */ - { 29949, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */ - { 29984, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */ - { 30013, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */ - { 30046, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */ - { 30079, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */ - { 30113, 0x00000B11 }, /* GL_POINT_SIZE */ - { 30127, 0x00008B9F }, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ - { 30166, 0x00008B9C }, /* GL_POINT_SIZE_ARRAY_OES */ - { 30190, 0x0000898C }, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ - { 30222, 0x0000898B }, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ - { 30253, 0x0000898A }, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ - { 30282, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */ - { 30308, 0x00008127 }, /* GL_POINT_SIZE_MAX */ - { 30326, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */ - { 30348, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */ - { 30370, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */ - { 30393, 0x00008126 }, /* GL_POINT_SIZE_MIN */ - { 30411, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */ - { 30433, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */ - { 30455, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */ - { 30478, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */ - { 30498, 0x00000B10 }, /* GL_POINT_SMOOTH */ - { 30514, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */ - { 30535, 0x00008861 }, /* GL_POINT_SPRITE */ - { 30551, 0x00008861 }, /* GL_POINT_SPRITE_ARB */ - { 30571, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */ - { 30600, 0x00008861 }, /* GL_POINT_SPRITE_NV */ - { 30619, 0x00008861 }, /* GL_POINT_SPRITE_OES */ - { 30639, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */ - { 30665, 0x00000701 }, /* GL_POINT_TOKEN */ - { 30680, 0x00000009 }, /* GL_POLYGON */ - { 30691, 0x00000008 }, /* GL_POLYGON_BIT */ - { 30706, 0x00000B40 }, /* GL_POLYGON_MODE */ - { 30722, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */ - { 30745, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */ - { 30770, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */ - { 30793, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */ - { 30816, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */ - { 30840, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */ - { 30864, 0x00000B41 }, /* GL_POLYGON_SMOOTH */ - { 30882, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */ - { 30905, 0x00000B42 }, /* GL_POLYGON_STIPPLE */ - { 30924, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */ - { 30947, 0x00000703 }, /* GL_POLYGON_TOKEN */ - { 30964, 0x00001203 }, /* GL_POSITION */ - { 30976, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ - { 31008, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */ - { 31044, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ - { 31077, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */ - { 31114, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ - { 31145, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */ - { 31180, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ - { 31212, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */ - { 31248, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ - { 31281, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ - { 31313, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */ - { 31349, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ - { 31382, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */ - { 31419, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */ - { 31449, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */ - { 31483, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */ - { 31514, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */ - { 31549, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ - { 31580, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */ - { 31615, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ - { 31647, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */ - { 31683, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */ - { 31713, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */ - { 31747, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */ - { 31778, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */ - { 31813, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */ - { 31845, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */ - { 31876, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */ - { 31911, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */ - { 31943, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */ - { 31979, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */ - { 32008, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */ - { 32041, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */ - { 32071, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */ - { 32105, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ - { 32144, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ - { 32177, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ - { 32217, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ - { 32251, 0x00008578 }, /* GL_PREVIOUS */ - { 32263, 0x00008578 }, /* GL_PREVIOUS_ARB */ - { 32279, 0x00008578 }, /* GL_PREVIOUS_EXT */ - { 32295, 0x00008577 }, /* GL_PRIMARY_COLOR */ - { 32312, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */ - { 32333, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */ - { 32354, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED */ - { 32378, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */ - { 32406, 0x00008F9D }, /* GL_PRIMITIVE_RESTART */ - { 32427, 0x00008F9E }, /* GL_PRIMITIVE_RESTART_INDEX */ - { 32454, 0x00008559 }, /* GL_PRIMITIVE_RESTART_INDEX_NV */ - { 32484, 0x00008558 }, /* GL_PRIMITIVE_RESTART_NV */ - { 32508, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ - { 32541, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ - { 32573, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */ - { 32596, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS_OES */ - { 32626, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH_OES */ - { 32655, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */ - { 32678, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */ - { 32708, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */ - { 32737, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */ - { 32765, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */ - { 32787, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */ - { 32815, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */ - { 32843, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */ - { 32865, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */ - { 32886, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - { 32926, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - { 32965, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ - { 32995, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - { 33030, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ - { 33063, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ - { 33097, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - { 33136, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - { 33175, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */ - { 33197, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */ - { 33223, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */ - { 33247, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE */ - { 33269, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE_ARB */ - { 33295, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */ - { 33318, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */ - { 33340, 0x00008628 }, /* GL_PROGRAM_STRING_NV */ - { 33361, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */ - { 33382, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */ - { 33409, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ - { 33441, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ - { 33473, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ - { 33508, 0x00001701 }, /* GL_PROJECTION */ - { 33522, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */ - { 33543, 0x0000898E }, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ - { 33586, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */ - { 33612, 0x00008E4F }, /* GL_PROVOKING_VERTEX */ - { 33632, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */ - { 33656, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */ - { 33677, 0x00008025 }, /* GL_PROXY_HISTOGRAM */ - { 33696, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */ - { 33719, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ - { 33758, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ - { 33796, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */ - { 33816, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY */ - { 33842, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */ - { 33872, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */ - { 33896, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */ - { 33916, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY */ - { 33942, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */ - { 33972, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */ - { 33996, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */ - { 34016, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ - { 34049, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */ - { 34075, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */ - { 34105, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE */ - { 34132, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */ - { 34163, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */ - { 34193, 0x00008A1D }, /* GL_PURGEABLE_APPLE */ - { 34212, 0x00002003 }, /* GL_Q */ - { 34217, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */ - { 34242, 0x00000007 }, /* GL_QUADS */ - { 34251, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ - { 34295, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */ - { 34343, 0x00008614 }, /* GL_QUAD_MESH_SUN */ - { 34360, 0x00000008 }, /* GL_QUAD_STRIP */ - { 34374, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT */ - { 34401, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */ - { 34431, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT */ - { 34455, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */ - { 34482, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */ - { 34504, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */ - { 34530, 0x00008E14 }, /* GL_QUERY_NO_WAIT */ - { 34547, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */ - { 34567, 0x00008866 }, /* GL_QUERY_RESULT */ - { 34583, 0x00008866 }, /* GL_QUERY_RESULT_ARB */ - { 34603, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */ - { 34629, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */ - { 34659, 0x00008E13 }, /* GL_QUERY_WAIT */ - { 34673, 0x00008E13 }, /* GL_QUERY_WAIT_NV */ - { 34690, 0x00002002 }, /* GL_R */ - { 34695, 0x00008C3A }, /* GL_R11F_G11F_B10F */ - { 34713, 0x00008F98 }, /* GL_R16_SNORM */ - { 34726, 0x00002A10 }, /* GL_R3_G3_B2 */ - { 34738, 0x00008F94 }, /* GL_R8_SNORM */ - { 34750, 0x00008C89 }, /* GL_RASTERIZER_DISCARD */ - { 34772, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */ - { 34798, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ - { 34831, 0x00000C02 }, /* GL_READ_BUFFER */ - { 34846, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */ - { 34866, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */ - { 34894, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */ - { 34926, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */ - { 34950, 0x000088B8 }, /* GL_READ_ONLY */ - { 34963, 0x000088B8 }, /* GL_READ_ONLY_ARB */ - { 34980, 0x000088BA }, /* GL_READ_WRITE */ - { 34994, 0x000088BA }, /* GL_READ_WRITE_ARB */ - { 35012, 0x00001903 }, /* GL_RED */ - { 35019, 0x00008016 }, /* GL_REDUCE */ - { 35029, 0x00008016 }, /* GL_REDUCE_EXT */ - { 35043, 0x00000D15 }, /* GL_RED_BIAS */ - { 35055, 0x00000D52 }, /* GL_RED_BITS */ - { 35067, 0x00008D94 }, /* GL_RED_INTEGER */ - { 35082, 0x00008D94 }, /* GL_RED_INTEGER_EXT */ - { 35101, 0x00000D14 }, /* GL_RED_SCALE */ - { 35114, 0x00008F90 }, /* GL_RED_SNORM */ - { 35127, 0x00008512 }, /* GL_REFLECTION_MAP */ - { 35145, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */ - { 35167, 0x00008512 }, /* GL_REFLECTION_MAP_NV */ - { 35188, 0x00008512 }, /* GL_REFLECTION_MAP_OES */ - { 35210, 0x00008A19 }, /* GL_RELEASED_APPLE */ - { 35228, 0x00001C00 }, /* GL_RENDER */ - { 35238, 0x00008D41 }, /* GL_RENDERBUFFER */ - { 35254, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */ - { 35281, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE_OES */ - { 35312, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */ - { 35336, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */ - { 35364, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_OES */ - { 35392, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */ - { 35418, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE_OES */ - { 35448, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */ - { 35475, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE_OES */ - { 35506, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */ - { 35526, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */ - { 35553, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE_OES */ - { 35584, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */ - { 35607, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */ - { 35634, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_OES */ - { 35661, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ - { 35693, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */ - { 35729, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_OES */ - { 35765, 0x00008D41 }, /* GL_RENDERBUFFER_OES */ - { 35785, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */ - { 35810, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE_OES */ - { 35839, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */ - { 35863, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */ - { 35891, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */ - { 35920, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE_OES */ - { 35953, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */ - { 35975, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */ - { 36001, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_OES */ - { 36027, 0x00001F01 }, /* GL_RENDERER */ - { 36039, 0x00000C40 }, /* GL_RENDER_MODE */ - { 36054, 0x00002901 }, /* GL_REPEAT */ - { 36064, 0x00001E01 }, /* GL_REPLACE */ - { 36075, 0x00008062 }, /* GL_REPLACE_EXT */ - { 36090, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */ - { 36113, 0x0000803A }, /* GL_RESCALE_NORMAL */ - { 36131, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */ - { 36153, 0x00008A1B }, /* GL_RETAINED_APPLE */ - { 36171, 0x00000102 }, /* GL_RETURN */ - { 36181, 0x00008F99 }, /* GL_RG16_SNORM */ - { 36195, 0x00008F95 }, /* GL_RG8_SNORM */ - { 36208, 0x00001907 }, /* GL_RGB */ - { 36215, 0x00008052 }, /* GL_RGB10 */ - { 36224, 0x00008059 }, /* GL_RGB10_A2 */ - { 36236, 0x00008059 }, /* GL_RGB10_A2_EXT */ - { 36252, 0x00008052 }, /* GL_RGB10_EXT */ - { 36265, 0x00008053 }, /* GL_RGB12 */ - { 36274, 0x00008053 }, /* GL_RGB12_EXT */ - { 36287, 0x00008054 }, /* GL_RGB16 */ - { 36296, 0x0000881B }, /* GL_RGB16F */ - { 36306, 0x00008D89 }, /* GL_RGB16I */ - { 36316, 0x00008D89 }, /* GL_RGB16I_EXT */ - { 36330, 0x00008D77 }, /* GL_RGB16UI */ - { 36341, 0x00008D77 }, /* GL_RGB16UI_EXT */ - { 36356, 0x00008054 }, /* GL_RGB16_EXT */ - { 36369, 0x00008F9A }, /* GL_RGB16_SNORM */ - { 36384, 0x0000804E }, /* GL_RGB2_EXT */ - { 36396, 0x00008815 }, /* GL_RGB32F */ - { 36406, 0x00008D83 }, /* GL_RGB32I */ - { 36416, 0x00008D83 }, /* GL_RGB32I_EXT */ - { 36430, 0x00008D71 }, /* GL_RGB32UI */ - { 36441, 0x00008D71 }, /* GL_RGB32UI_EXT */ - { 36456, 0x0000804F }, /* GL_RGB4 */ - { 36464, 0x0000804F }, /* GL_RGB4_EXT */ - { 36476, 0x000083A1 }, /* GL_RGB4_S3TC */ - { 36489, 0x00008050 }, /* GL_RGB5 */ - { 36497, 0x00008D62 }, /* GL_RGB565 */ - { 36507, 0x00008D62 }, /* GL_RGB565_OES */ - { 36521, 0x00008057 }, /* GL_RGB5_A1 */ - { 36532, 0x00008057 }, /* GL_RGB5_A1_EXT */ - { 36547, 0x00008057 }, /* GL_RGB5_A1_OES */ - { 36562, 0x00008050 }, /* GL_RGB5_EXT */ - { 36574, 0x00008051 }, /* GL_RGB8 */ - { 36582, 0x00008D8F }, /* GL_RGB8I */ - { 36591, 0x00008D8F }, /* GL_RGB8I_EXT */ - { 36604, 0x00008D7D }, /* GL_RGB8UI */ - { 36614, 0x00008D7D }, /* GL_RGB8UI_EXT */ - { 36628, 0x00008051 }, /* GL_RGB8_EXT */ - { 36640, 0x00008051 }, /* GL_RGB8_OES */ - { 36652, 0x00008F96 }, /* GL_RGB8_SNORM */ - { 36666, 0x00008C3D }, /* GL_RGB9_E5 */ - { 36677, 0x00001908 }, /* GL_RGBA */ - { 36685, 0x0000805A }, /* GL_RGBA12 */ - { 36695, 0x0000805A }, /* GL_RGBA12_EXT */ - { 36709, 0x0000805B }, /* GL_RGBA16 */ - { 36719, 0x0000881A }, /* GL_RGBA16F */ - { 36730, 0x00008D88 }, /* GL_RGBA16I */ - { 36741, 0x00008D88 }, /* GL_RGBA16I_EXT */ - { 36756, 0x00008D76 }, /* GL_RGBA16UI */ - { 36768, 0x00008D76 }, /* GL_RGBA16UI_EXT */ - { 36784, 0x0000805B }, /* GL_RGBA16_EXT */ - { 36798, 0x00008F9B }, /* GL_RGBA16_SNORM */ - { 36814, 0x00008055 }, /* GL_RGBA2 */ - { 36823, 0x00008055 }, /* GL_RGBA2_EXT */ - { 36836, 0x00008814 }, /* GL_RGBA32F */ - { 36847, 0x00008D82 }, /* GL_RGBA32I */ - { 36858, 0x00008D82 }, /* GL_RGBA32I_EXT */ - { 36873, 0x00008D70 }, /* GL_RGBA32UI */ - { 36885, 0x00008D70 }, /* GL_RGBA32UI_EXT */ - { 36901, 0x00008056 }, /* GL_RGBA4 */ - { 36910, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */ - { 36929, 0x00008056 }, /* GL_RGBA4_EXT */ - { 36942, 0x00008056 }, /* GL_RGBA4_OES */ - { 36955, 0x000083A3 }, /* GL_RGBA4_S3TC */ - { 36969, 0x00008058 }, /* GL_RGBA8 */ - { 36978, 0x00008D8E }, /* GL_RGBA8I */ - { 36988, 0x00008D8E }, /* GL_RGBA8I_EXT */ - { 37002, 0x00008D7C }, /* GL_RGBA8UI */ - { 37013, 0x00008D7C }, /* GL_RGBA8UI_EXT */ - { 37028, 0x00008058 }, /* GL_RGBA8_EXT */ - { 37041, 0x00008058 }, /* GL_RGBA8_OES */ - { 37054, 0x00008F97 }, /* GL_RGBA8_SNORM */ - { 37069, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */ - { 37087, 0x00008D99 }, /* GL_RGBA_INTEGER */ - { 37103, 0x00008D99 }, /* GL_RGBA_INTEGER_EXT */ - { 37123, 0x00008D9E }, /* GL_RGBA_INTEGER_MODE_EXT */ - { 37148, 0x00000C31 }, /* GL_RGBA_MODE */ - { 37161, 0x000083A2 }, /* GL_RGBA_S3TC */ - { 37174, 0x00008F93 }, /* GL_RGBA_SNORM */ - { 37188, 0x00008D98 }, /* GL_RGB_INTEGER */ - { 37203, 0x00008D98 }, /* GL_RGB_INTEGER_EXT */ - { 37222, 0x000083A0 }, /* GL_RGB_S3TC */ - { 37234, 0x00008573 }, /* GL_RGB_SCALE */ - { 37247, 0x00008573 }, /* GL_RGB_SCALE_ARB */ - { 37264, 0x00008573 }, /* GL_RGB_SCALE_EXT */ - { 37281, 0x00008F92 }, /* GL_RGB_SNORM */ - { 37294, 0x00008F91 }, /* GL_RG_SNORM */ - { 37306, 0x00000407 }, /* GL_RIGHT */ - { 37315, 0x00002000 }, /* GL_S */ - { 37320, 0x00008B5D }, /* GL_SAMPLER_1D */ - { 37334, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY */ - { 37354, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY_EXT */ - { 37378, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW */ - { 37405, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW_EXT */ - { 37436, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */ - { 37457, 0x00008B5E }, /* GL_SAMPLER_2D */ - { 37471, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY */ - { 37491, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY_EXT */ - { 37515, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW */ - { 37542, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW_EXT */ - { 37573, 0x00008B63 }, /* GL_SAMPLER_2D_RECT */ - { 37592, 0x00008B64 }, /* GL_SAMPLER_2D_RECT_SHADOW */ - { 37618, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */ - { 37639, 0x00008B5F }, /* GL_SAMPLER_3D */ - { 37653, 0x00008B5F }, /* GL_SAMPLER_3D_OES */ - { 37671, 0x00008DC2 }, /* GL_SAMPLER_BUFFER */ - { 37689, 0x00008DC2 }, /* GL_SAMPLER_BUFFER_EXT */ - { 37711, 0x00008B60 }, /* GL_SAMPLER_CUBE */ - { 37727, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW */ - { 37750, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW_EXT */ - { 37777, 0x000080A9 }, /* GL_SAMPLES */ - { 37788, 0x000086B4 }, /* GL_SAMPLES_3DFX */ - { 37804, 0x000080A9 }, /* GL_SAMPLES_ARB */ - { 37819, 0x00008914 }, /* GL_SAMPLES_PASSED */ - { 37837, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */ - { 37859, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ - { 37887, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */ - { 37919, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */ - { 37942, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */ - { 37969, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */ - { 37987, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */ - { 38010, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */ - { 38032, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */ - { 38051, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */ - { 38074, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */ - { 38100, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */ - { 38130, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */ - { 38155, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */ - { 38184, 0x00080000 }, /* GL_SCISSOR_BIT */ - { 38199, 0x00000C10 }, /* GL_SCISSOR_BOX */ - { 38214, 0x00000C11 }, /* GL_SCISSOR_TEST */ - { 38230, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */ - { 38255, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ - { 38295, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */ - { 38339, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ - { 38372, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ - { 38402, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ - { 38434, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ - { 38464, 0x00001C02 }, /* GL_SELECT */ - { 38474, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */ - { 38502, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */ - { 38527, 0x00008012 }, /* GL_SEPARABLE_2D */ - { 38543, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS */ - { 38563, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */ - { 38587, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */ - { 38614, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */ - { 38645, 0x0000150F }, /* GL_SET */ - { 38652, 0x00008DF8 }, /* GL_SHADER_BINARY_FORMATS */ - { 38677, 0x00008DFA }, /* GL_SHADER_COMPILER */ - { 38696, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */ - { 38717, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */ - { 38741, 0x00008B4F }, /* GL_SHADER_TYPE */ - { 38756, 0x00000B54 }, /* GL_SHADE_MODEL */ - { 38771, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */ - { 38799, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */ - { 38822, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */ - { 38852, 0x00001601 }, /* GL_SHININESS */ - { 38865, 0x00001402 }, /* GL_SHORT */ - { 38874, 0x00009119 }, /* GL_SIGNALED */ - { 38886, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */ - { 38907, 0x000081F9 }, /* GL_SINGLE_COLOR */ - { 38923, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */ - { 38943, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */ - { 38962, 0x00008C46 }, /* GL_SLUMINANCE */ - { 38976, 0x00008C47 }, /* GL_SLUMINANCE8 */ - { 38991, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */ - { 39013, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */ - { 39033, 0x00001D01 }, /* GL_SMOOTH */ - { 39043, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */ - { 39076, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */ - { 39103, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */ - { 39136, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */ - { 39163, 0x00008588 }, /* GL_SOURCE0_ALPHA */ - { 39180, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */ - { 39201, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */ - { 39222, 0x00008580 }, /* GL_SOURCE0_RGB */ - { 39237, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */ - { 39256, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */ - { 39275, 0x00008589 }, /* GL_SOURCE1_ALPHA */ - { 39292, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */ - { 39313, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */ - { 39334, 0x00008581 }, /* GL_SOURCE1_RGB */ - { 39349, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */ - { 39368, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */ - { 39387, 0x0000858A }, /* GL_SOURCE2_ALPHA */ - { 39404, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */ - { 39425, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */ - { 39446, 0x00008582 }, /* GL_SOURCE2_RGB */ - { 39461, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */ - { 39480, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */ - { 39499, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */ - { 39519, 0x00008583 }, /* GL_SOURCE3_RGB_NV */ - { 39537, 0x00001202 }, /* GL_SPECULAR */ - { 39549, 0x00002402 }, /* GL_SPHERE_MAP */ - { 39563, 0x00001206 }, /* GL_SPOT_CUTOFF */ - { 39578, 0x00001204 }, /* GL_SPOT_DIRECTION */ - { 39596, 0x00001205 }, /* GL_SPOT_EXPONENT */ - { 39613, 0x00008588 }, /* GL_SRC0_ALPHA */ - { 39627, 0x00008580 }, /* GL_SRC0_RGB */ - { 39639, 0x00008589 }, /* GL_SRC1_ALPHA */ - { 39653, 0x00008581 }, /* GL_SRC1_RGB */ - { 39665, 0x0000858A }, /* GL_SRC2_ALPHA */ - { 39679, 0x00008582 }, /* GL_SRC2_RGB */ - { 39691, 0x00000302 }, /* GL_SRC_ALPHA */ - { 39704, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */ - { 39726, 0x00000300 }, /* GL_SRC_COLOR */ - { 39739, 0x00008C40 }, /* GL_SRGB */ - { 39747, 0x00008C41 }, /* GL_SRGB8 */ - { 39756, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */ - { 39772, 0x00008C42 }, /* GL_SRGB_ALPHA */ - { 39786, 0x00000503 }, /* GL_STACK_OVERFLOW */ - { 39804, 0x00000504 }, /* GL_STACK_UNDERFLOW */ - { 39823, 0x000088E6 }, /* GL_STATIC_COPY */ - { 39838, 0x000088E6 }, /* GL_STATIC_COPY_ARB */ - { 39857, 0x000088E4 }, /* GL_STATIC_DRAW */ - { 39872, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */ - { 39891, 0x000088E5 }, /* GL_STATIC_READ */ - { 39906, 0x000088E5 }, /* GL_STATIC_READ_ARB */ - { 39925, 0x00001802 }, /* GL_STENCIL */ - { 39936, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */ - { 39958, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */ - { 39984, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_OES */ - { 40010, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */ - { 40031, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */ - { 40056, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */ - { 40077, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */ - { 40102, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ - { 40134, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */ - { 40170, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ - { 40202, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */ - { 40238, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */ - { 40258, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */ - { 40285, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */ - { 40311, 0x00000D57 }, /* GL_STENCIL_BITS */ - { 40327, 0x00008224 }, /* GL_STENCIL_BUFFER */ - { 40345, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */ - { 40367, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */ - { 40390, 0x00000B94 }, /* GL_STENCIL_FAIL */ - { 40406, 0x00000B92 }, /* GL_STENCIL_FUNC */ - { 40422, 0x00001901 }, /* GL_STENCIL_INDEX */ - { 40439, 0x00008D46 }, /* GL_STENCIL_INDEX1 */ - { 40457, 0x00008D49 }, /* GL_STENCIL_INDEX16 */ - { 40476, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */ - { 40499, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */ - { 40521, 0x00008D46 }, /* GL_STENCIL_INDEX1_OES */ - { 40543, 0x00008D47 }, /* GL_STENCIL_INDEX4 */ - { 40561, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */ - { 40583, 0x00008D47 }, /* GL_STENCIL_INDEX4_OES */ - { 40605, 0x00008D48 }, /* GL_STENCIL_INDEX8 */ - { 40623, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */ - { 40645, 0x00008D48 }, /* GL_STENCIL_INDEX8_OES */ - { 40667, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */ - { 40688, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */ - { 40715, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */ - { 40742, 0x00000B97 }, /* GL_STENCIL_REF */ - { 40757, 0x00000B90 }, /* GL_STENCIL_TEST */ - { 40773, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ - { 40802, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */ - { 40824, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */ - { 40845, 0x00000C33 }, /* GL_STEREO */ - { 40855, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */ - { 40879, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */ - { 40904, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */ - { 40928, 0x000088E2 }, /* GL_STREAM_COPY */ - { 40943, 0x000088E2 }, /* GL_STREAM_COPY_ARB */ - { 40962, 0x000088E0 }, /* GL_STREAM_DRAW */ - { 40977, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */ - { 40996, 0x000088E1 }, /* GL_STREAM_READ */ - { 41011, 0x000088E1 }, /* GL_STREAM_READ_ARB */ - { 41030, 0x00000D50 }, /* GL_SUBPIXEL_BITS */ - { 41047, 0x000084E7 }, /* GL_SUBTRACT */ - { 41059, 0x000084E7 }, /* GL_SUBTRACT_ARB */ - { 41075, 0x00009113 }, /* GL_SYNC_CONDITION */ - { 41093, 0x00009116 }, /* GL_SYNC_FENCE */ - { 41107, 0x00009115 }, /* GL_SYNC_FLAGS */ - { 41121, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */ - { 41148, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ - { 41178, 0x00009114 }, /* GL_SYNC_STATUS */ - { 41193, 0x00002001 }, /* GL_T */ - { 41198, 0x00002A2A }, /* GL_T2F_C3F_V3F */ - { 41213, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */ - { 41232, 0x00002A29 }, /* GL_T2F_C4UB_V3F */ - { 41248, 0x00002A2B }, /* GL_T2F_N3F_V3F */ - { 41263, 0x00002A27 }, /* GL_T2F_V3F */ - { 41274, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */ - { 41293, 0x00002A28 }, /* GL_T4F_V4F */ - { 41304, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */ - { 41327, 0x00001702 }, /* GL_TEXTURE */ - { 41338, 0x000084C0 }, /* GL_TEXTURE0 */ - { 41350, 0x000084C0 }, /* GL_TEXTURE0_ARB */ - { 41366, 0x000084C1 }, /* GL_TEXTURE1 */ - { 41378, 0x000084CA }, /* GL_TEXTURE10 */ - { 41391, 0x000084CA }, /* GL_TEXTURE10_ARB */ - { 41408, 0x000084CB }, /* GL_TEXTURE11 */ - { 41421, 0x000084CB }, /* GL_TEXTURE11_ARB */ - { 41438, 0x000084CC }, /* GL_TEXTURE12 */ - { 41451, 0x000084CC }, /* GL_TEXTURE12_ARB */ - { 41468, 0x000084CD }, /* GL_TEXTURE13 */ - { 41481, 0x000084CD }, /* GL_TEXTURE13_ARB */ - { 41498, 0x000084CE }, /* GL_TEXTURE14 */ - { 41511, 0x000084CE }, /* GL_TEXTURE14_ARB */ - { 41528, 0x000084CF }, /* GL_TEXTURE15 */ - { 41541, 0x000084CF }, /* GL_TEXTURE15_ARB */ - { 41558, 0x000084D0 }, /* GL_TEXTURE16 */ - { 41571, 0x000084D0 }, /* GL_TEXTURE16_ARB */ - { 41588, 0x000084D1 }, /* GL_TEXTURE17 */ - { 41601, 0x000084D1 }, /* GL_TEXTURE17_ARB */ - { 41618, 0x000084D2 }, /* GL_TEXTURE18 */ - { 41631, 0x000084D2 }, /* GL_TEXTURE18_ARB */ - { 41648, 0x000084D3 }, /* GL_TEXTURE19 */ - { 41661, 0x000084D3 }, /* GL_TEXTURE19_ARB */ - { 41678, 0x000084C1 }, /* GL_TEXTURE1_ARB */ - { 41694, 0x000084C2 }, /* GL_TEXTURE2 */ - { 41706, 0x000084D4 }, /* GL_TEXTURE20 */ - { 41719, 0x000084D4 }, /* GL_TEXTURE20_ARB */ - { 41736, 0x000084D5 }, /* GL_TEXTURE21 */ - { 41749, 0x000084D5 }, /* GL_TEXTURE21_ARB */ - { 41766, 0x000084D6 }, /* GL_TEXTURE22 */ - { 41779, 0x000084D6 }, /* GL_TEXTURE22_ARB */ - { 41796, 0x000084D7 }, /* GL_TEXTURE23 */ - { 41809, 0x000084D7 }, /* GL_TEXTURE23_ARB */ - { 41826, 0x000084D8 }, /* GL_TEXTURE24 */ - { 41839, 0x000084D8 }, /* GL_TEXTURE24_ARB */ - { 41856, 0x000084D9 }, /* GL_TEXTURE25 */ - { 41869, 0x000084D9 }, /* GL_TEXTURE25_ARB */ - { 41886, 0x000084DA }, /* GL_TEXTURE26 */ - { 41899, 0x000084DA }, /* GL_TEXTURE26_ARB */ - { 41916, 0x000084DB }, /* GL_TEXTURE27 */ - { 41929, 0x000084DB }, /* GL_TEXTURE27_ARB */ - { 41946, 0x000084DC }, /* GL_TEXTURE28 */ - { 41959, 0x000084DC }, /* GL_TEXTURE28_ARB */ - { 41976, 0x000084DD }, /* GL_TEXTURE29 */ - { 41989, 0x000084DD }, /* GL_TEXTURE29_ARB */ - { 42006, 0x000084C2 }, /* GL_TEXTURE2_ARB */ - { 42022, 0x000084C3 }, /* GL_TEXTURE3 */ - { 42034, 0x000084DE }, /* GL_TEXTURE30 */ - { 42047, 0x000084DE }, /* GL_TEXTURE30_ARB */ - { 42064, 0x000084DF }, /* GL_TEXTURE31 */ - { 42077, 0x000084DF }, /* GL_TEXTURE31_ARB */ - { 42094, 0x000084C3 }, /* GL_TEXTURE3_ARB */ - { 42110, 0x000084C4 }, /* GL_TEXTURE4 */ - { 42122, 0x000084C4 }, /* GL_TEXTURE4_ARB */ - { 42138, 0x000084C5 }, /* GL_TEXTURE5 */ - { 42150, 0x000084C5 }, /* GL_TEXTURE5_ARB */ - { 42166, 0x000084C6 }, /* GL_TEXTURE6 */ - { 42178, 0x000084C6 }, /* GL_TEXTURE6_ARB */ - { 42194, 0x000084C7 }, /* GL_TEXTURE7 */ - { 42206, 0x000084C7 }, /* GL_TEXTURE7_ARB */ - { 42222, 0x000084C8 }, /* GL_TEXTURE8 */ - { 42234, 0x000084C8 }, /* GL_TEXTURE8_ARB */ - { 42250, 0x000084C9 }, /* GL_TEXTURE9 */ - { 42262, 0x000084C9 }, /* GL_TEXTURE9_ARB */ - { 42278, 0x00000DE0 }, /* GL_TEXTURE_1D */ - { 42292, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY */ - { 42312, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */ - { 42336, 0x00000DE1 }, /* GL_TEXTURE_2D */ - { 42350, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY */ - { 42370, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */ - { 42394, 0x0000806F }, /* GL_TEXTURE_3D */ - { 42408, 0x0000806F }, /* GL_TEXTURE_3D_OES */ - { 42426, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */ - { 42448, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */ - { 42474, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */ - { 42496, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */ - { 42518, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY */ - { 42546, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */ - { 42578, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */ - { 42600, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY */ - { 42628, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */ - { 42660, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */ - { 42682, 0x0000806A }, /* GL_TEXTURE_BINDING_3D_OES */ - { 42708, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER */ - { 42734, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */ - { 42762, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */ - { 42794, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_OES */ - { 42826, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE */ - { 42855, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */ - { 42888, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */ - { 42920, 0x00040000 }, /* GL_TEXTURE_BIT */ - { 42935, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */ - { 42956, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */ - { 42981, 0x00001005 }, /* GL_TEXTURE_BORDER */ - { 42999, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */ - { 43023, 0x00008C2A }, /* GL_TEXTURE_BUFFER */ - { 43041, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */ - { 43078, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT */ - { 43103, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ - { 43134, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ - { 43164, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ - { 43194, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ - { 43229, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ - { 43260, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - { 43298, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */ - { 43325, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ - { 43357, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ - { 43391, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */ - { 43415, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */ - { 43443, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */ - { 43467, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */ - { 43495, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ - { 43528, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */ - { 43552, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */ - { 43574, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */ - { 43596, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */ - { 43622, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */ - { 43656, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ - { 43689, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */ - { 43726, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */ - { 43754, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */ - { 43786, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */ - { 43809, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ - { 43847, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */ - { 43889, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */ - { 43920, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */ - { 43948, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ - { 43978, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */ - { 44006, 0x00008B9D }, /* GL_TEXTURE_CROP_RECT_OES */ - { 44031, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */ - { 44051, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */ - { 44075, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ - { 44106, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */ - { 44141, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES */ - { 44176, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ - { 44207, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */ - { 44242, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES */ - { 44277, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ - { 44308, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */ - { 44343, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES */ - { 44378, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_OES */ - { 44402, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ - { 44433, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */ - { 44468, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES */ - { 44503, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ - { 44534, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */ - { 44569, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES */ - { 44604, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ - { 44635, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */ - { 44670, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES */ - { 44705, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ - { 44734, 0x00008071 }, /* GL_TEXTURE_DEPTH */ - { 44751, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */ - { 44773, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */ - { 44799, 0x00002300 }, /* GL_TEXTURE_ENV */ - { 44814, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */ - { 44835, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */ - { 44855, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */ - { 44881, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL_EXT */ - { 44911, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */ - { 44931, 0x00002500 }, /* GL_TEXTURE_GEN_MODE_OES */ - { 44955, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */ - { 44972, 0x00000C62 }, /* GL_TEXTURE_GEN_R */ - { 44989, 0x00000C60 }, /* GL_TEXTURE_GEN_S */ - { 45006, 0x00008D60 }, /* GL_TEXTURE_GEN_STR_OES */ - { 45029, 0x00000C61 }, /* GL_TEXTURE_GEN_T */ - { 45046, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */ - { 45071, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */ - { 45093, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */ - { 45119, 0x00001001 }, /* GL_TEXTURE_HEIGHT */ - { 45137, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */ - { 45163, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */ - { 45189, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */ - { 45219, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */ - { 45246, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */ - { 45271, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */ - { 45291, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */ - { 45315, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ - { 45342, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ - { 45369, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ - { 45396, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */ - { 45422, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */ - { 45452, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */ - { 45474, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */ - { 45492, 0x0000898F }, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ - { 45532, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ - { 45562, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ - { 45590, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ - { 45618, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ - { 45646, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */ - { 45667, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */ - { 45686, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */ - { 45708, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */ - { 45727, 0x00008066 }, /* GL_TEXTURE_PRIORITY */ - { 45747, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ - { 45777, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */ - { 45808, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE */ - { 45829, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */ - { 45854, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */ - { 45878, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */ - { 45898, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */ - { 45922, 0x00008067 }, /* GL_TEXTURE_RESIDENT */ - { 45942, 0x00008C3F }, /* GL_TEXTURE_SHARED_SIZE */ - { 45965, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */ - { 45988, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */ - { 46012, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */ - { 46040, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */ - { 46070, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */ - { 46095, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ - { 46129, 0x00001000 }, /* GL_TEXTURE_WIDTH */ - { 46146, 0x00008072 }, /* GL_TEXTURE_WRAP_R */ - { 46164, 0x00008072 }, /* GL_TEXTURE_WRAP_R_OES */ - { 46186, 0x00002802 }, /* GL_TEXTURE_WRAP_S */ - { 46204, 0x00002803 }, /* GL_TEXTURE_WRAP_T */ - { 46222, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */ - { 46241, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */ - { 46261, 0x00008648 }, /* GL_TRACK_MATRIX_NV */ - { 46280, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */ - { 46309, 0x00001000 }, /* GL_TRANSFORM_BIT */ - { 46326, 0x00008E22 }, /* GL_TRANSFORM_FEEDBACK */ - { 46348, 0x00008E25 }, /* GL_TRANSFORM_FEEDBACK_BINDING */ - { 46378, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER */ - { 46407, 0x00008E24 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ - { 46443, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */ - { 46480, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */ - { 46521, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */ - { 46554, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */ - { 46588, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */ - { 46626, 0x00008E23 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ - { 46662, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */ - { 46696, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */ - { 46734, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */ - { 46769, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */ - { 46808, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */ - { 46849, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */ - { 46894, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS */ - { 46925, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */ - { 46960, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */ - { 47001, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */ - { 47046, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */ - { 47072, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */ - { 47102, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ - { 47134, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ - { 47164, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */ - { 47198, 0x0000862C }, /* GL_TRANSPOSE_NV */ - { 47214, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */ - { 47245, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */ - { 47280, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */ - { 47308, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */ - { 47340, 0x00000004 }, /* GL_TRIANGLES */ - { 47353, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY */ - { 47376, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY_ARB */ - { 47403, 0x00000006 }, /* GL_TRIANGLE_FAN */ - { 47419, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */ - { 47440, 0x00000005 }, /* GL_TRIANGLE_STRIP */ - { 47458, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY */ - { 47486, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */ - { 47518, 0x00000001 }, /* GL_TRUE */ - { 47526, 0x00008A1C }, /* GL_UNDEFINED_APPLE */ - { 47545, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */ - { 47565, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */ - { 47588, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */ - { 47608, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */ - { 47629, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */ - { 47651, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */ - { 47673, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */ - { 47693, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */ - { 47714, 0x00009118 }, /* GL_UNSIGNALED */ - { 47728, 0x00001401 }, /* GL_UNSIGNED_BYTE */ - { 47745, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */ - { 47772, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */ - { 47795, 0x00001405 }, /* GL_UNSIGNED_INT */ - { 47811, 0x00008C3B }, /* GL_UNSIGNED_INT_10F_11F_11F_REV */ - { 47843, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */ - { 47870, 0x00008DF6 }, /* GL_UNSIGNED_INT_10_10_10_2_OES */ - { 47901, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */ - { 47922, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */ - { 47947, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */ - { 47971, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_OES */ - { 47996, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */ - { 48027, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV_EXT */ - { 48062, 0x00008C3E }, /* GL_UNSIGNED_INT_5_9_9_9_REV */ - { 48090, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */ - { 48114, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */ - { 48142, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D */ - { 48169, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */ - { 48202, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT */ - { 48239, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D_EXT */ - { 48270, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D */ - { 48297, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */ - { 48330, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT */ - { 48367, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D_EXT */ - { 48398, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */ - { 48430, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT */ - { 48466, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D */ - { 48493, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D_EXT */ - { 48524, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */ - { 48555, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT */ - { 48590, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE */ - { 48619, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE_EXT */ - { 48652, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2 */ - { 48673, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2_EXT */ - { 48698, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3 */ - { 48719, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3_EXT */ - { 48744, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4 */ - { 48765, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4_EXT */ - { 48790, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */ - { 48813, 0x00001403 }, /* GL_UNSIGNED_SHORT */ - { 48831, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ - { 48861, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT */ - { 48895, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */ - { 48921, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ - { 48951, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT */ - { 48985, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */ - { 49011, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */ - { 49035, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */ - { 49063, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */ - { 49091, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */ - { 49118, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ - { 49150, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */ - { 49181, 0x00008CA2 }, /* GL_UPPER_LEFT */ - { 49195, 0x00002A20 }, /* GL_V2F */ - { 49202, 0x00002A21 }, /* GL_V3F */ - { 49209, 0x00008B83 }, /* GL_VALIDATE_STATUS */ - { 49228, 0x00001F00 }, /* GL_VENDOR */ - { 49238, 0x00001F02 }, /* GL_VERSION */ - { 49249, 0x00008074 }, /* GL_VERTEX_ARRAY */ - { 49265, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */ - { 49289, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */ - { 49319, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ - { 49350, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */ - { 49385, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */ - { 49409, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */ - { 49430, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */ - { 49453, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */ - { 49474, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ - { 49501, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ - { 49529, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ - { 49557, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ - { 49585, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ - { 49613, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ - { 49641, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ - { 49669, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ - { 49696, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ - { 49723, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ - { 49750, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ - { 49777, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ - { 49804, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ - { 49831, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ - { 49858, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ - { 49885, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ - { 49912, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ - { 49950, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */ - { 49992, 0x000088FE }, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */ - { 50027, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ - { 50058, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */ - { 50093, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */ - { 50124, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT */ - { 50159, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ - { 50193, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */ - { 50231, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ - { 50262, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */ - { 50297, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ - { 50325, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */ - { 50357, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ - { 50387, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */ - { 50421, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ - { 50449, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */ - { 50481, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */ - { 50501, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */ - { 50523, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */ - { 50552, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */ - { 50573, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */ - { 50602, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */ - { 50635, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */ - { 50667, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */ - { 50694, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */ - { 50725, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */ - { 50755, 0x00008B31 }, /* GL_VERTEX_SHADER */ - { 50772, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */ - { 50793, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */ - { 50820, 0x00000BA2 }, /* GL_VIEWPORT */ - { 50832, 0x00000800 }, /* GL_VIEWPORT_BIT */ - { 50848, 0x00008A1A }, /* GL_VOLATILE_APPLE */ - { 50866, 0x0000911D }, /* GL_WAIT_FAILED */ - { 50881, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */ - { 50901, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ - { 50932, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */ - { 50967, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_OES */ - { 51002, 0x000086AD }, /* GL_WEIGHT_ARRAY_OES */ - { 51022, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */ - { 51050, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_OES */ - { 51078, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */ - { 51103, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_OES */ - { 51128, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ - { 51155, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_OES */ - { 51182, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */ - { 51207, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_OES */ - { 51232, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */ - { 51256, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */ - { 51275, 0x000088B9 }, /* GL_WRITE_ONLY */ - { 51289, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */ - { 51307, 0x000088B9 }, /* GL_WRITE_ONLY_OES */ - { 51325, 0x00001506 }, /* GL_XOR */ - { 51332, 0x000085B9 }, /* GL_YCBCR_422_APPLE */ - { 51351, 0x00008757 }, /* GL_YCBCR_MESA */ - { 51365, 0x00000000 }, /* GL_ZERO */ - { 51373, 0x00000D16 }, /* GL_ZOOM_X */ - { 51383, 0x00000D17 }, /* GL_ZOOM_Y */ + { 2717, 0x0000891B }, /* GL_CLAMP_FRAGMENT_COLOR_ARB */ + { 2745, 0x0000891C }, /* GL_CLAMP_READ_COLOR */ + { 2765, 0x0000891C }, /* GL_CLAMP_READ_COLOR_ARB */ + { 2789, 0x0000812D }, /* GL_CLAMP_TO_BORDER */ + { 2808, 0x0000812D }, /* GL_CLAMP_TO_BORDER_ARB */ + { 2831, 0x0000812D }, /* GL_CLAMP_TO_BORDER_SGIS */ + { 2855, 0x0000812F }, /* GL_CLAMP_TO_EDGE */ + { 2872, 0x0000812F }, /* GL_CLAMP_TO_EDGE_SGIS */ + { 2894, 0x0000891A }, /* GL_CLAMP_VERTEX_COLOR_ARB */ + { 2920, 0x00001500 }, /* GL_CLEAR */ + { 2929, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE */ + { 2954, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE_ARB */ + { 2983, 0xFFFFFFFF }, /* GL_CLIENT_ALL_ATTRIB_BITS */ + { 3009, 0x00000BB1 }, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ + { 3038, 0x00000001 }, /* GL_CLIENT_PIXEL_STORE_BIT */ + { 3064, 0x00000002 }, /* GL_CLIENT_VERTEX_ARRAY_BIT */ + { 3091, 0x00003000 }, /* GL_CLIP_DISTANCE0 */ + { 3109, 0x00003001 }, /* GL_CLIP_DISTANCE1 */ + { 3127, 0x00003002 }, /* GL_CLIP_DISTANCE2 */ + { 3145, 0x00003003 }, /* GL_CLIP_DISTANCE3 */ + { 3163, 0x00003004 }, /* GL_CLIP_DISTANCE4 */ + { 3181, 0x00003005 }, /* GL_CLIP_DISTANCE5 */ + { 3199, 0x00003006 }, /* GL_CLIP_DISTANCE6 */ + { 3217, 0x00003007 }, /* GL_CLIP_DISTANCE7 */ + { 3235, 0x00003000 }, /* GL_CLIP_PLANE0 */ + { 3250, 0x00003001 }, /* GL_CLIP_PLANE1 */ + { 3265, 0x00003002 }, /* GL_CLIP_PLANE2 */ + { 3280, 0x00003003 }, /* GL_CLIP_PLANE3 */ + { 3295, 0x00003004 }, /* GL_CLIP_PLANE4 */ + { 3310, 0x00003005 }, /* GL_CLIP_PLANE5 */ + { 3325, 0x000080F0 }, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ + { 3358, 0x00000A00 }, /* GL_COEFF */ + { 3367, 0x00001800 }, /* GL_COLOR */ + { 3376, 0x00008076 }, /* GL_COLOR_ARRAY */ + { 3391, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING */ + { 3421, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING_ARB */ + { 3455, 0x00008090 }, /* GL_COLOR_ARRAY_POINTER */ + { 3478, 0x00008081 }, /* GL_COLOR_ARRAY_SIZE */ + { 3498, 0x00008083 }, /* GL_COLOR_ARRAY_STRIDE */ + { 3520, 0x00008082 }, /* GL_COLOR_ARRAY_TYPE */ + { 3540, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0 */ + { 3561, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_EXT */ + { 3586, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_OES */ + { 3611, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1 */ + { 3632, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10 */ + { 3654, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10_EXT */ + { 3680, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11 */ + { 3702, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11_EXT */ + { 3728, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12 */ + { 3750, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12_EXT */ + { 3776, 0x00008CED }, /* GL_COLOR_ATTACHMENT13 */ + { 3798, 0x00008CED }, /* GL_COLOR_ATTACHMENT13_EXT */ + { 3824, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14 */ + { 3846, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14_EXT */ + { 3872, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15 */ + { 3894, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15_EXT */ + { 3920, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1_EXT */ + { 3945, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2 */ + { 3966, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2_EXT */ + { 3991, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3 */ + { 4012, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3_EXT */ + { 4037, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4 */ + { 4058, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4_EXT */ + { 4083, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5 */ + { 4104, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5_EXT */ + { 4129, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6 */ + { 4150, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6_EXT */ + { 4175, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7 */ + { 4196, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7_EXT */ + { 4221, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8 */ + { 4242, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8_EXT */ + { 4267, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9 */ + { 4288, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9_EXT */ + { 4313, 0x00004000 }, /* GL_COLOR_BUFFER_BIT */ + { 4333, 0x00000C22 }, /* GL_COLOR_CLEAR_VALUE */ + { 4354, 0x00001900 }, /* GL_COLOR_INDEX */ + { 4369, 0x00001603 }, /* GL_COLOR_INDEXES */ + { 4386, 0x00000BF2 }, /* GL_COLOR_LOGIC_OP */ + { 4404, 0x00000B57 }, /* GL_COLOR_MATERIAL */ + { 4422, 0x00000B55 }, /* GL_COLOR_MATERIAL_FACE */ + { 4445, 0x00000B56 }, /* GL_COLOR_MATERIAL_PARAMETER */ + { 4473, 0x000080B1 }, /* GL_COLOR_MATRIX */ + { 4489, 0x000080B1 }, /* GL_COLOR_MATRIX_SGI */ + { 4509, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH */ + { 4537, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH_SGI */ + { 4569, 0x00008458 }, /* GL_COLOR_SUM */ + { 4582, 0x00008458 }, /* GL_COLOR_SUM_ARB */ + { 4599, 0x000080D0 }, /* GL_COLOR_TABLE */ + { 4614, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE */ + { 4640, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_EXT */ + { 4670, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_SGI */ + { 4700, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS */ + { 4720, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS_SGI */ + { 4744, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE */ + { 4769, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_EXT */ + { 4798, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_SGI */ + { 4827, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT */ + { 4849, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_EXT */ + { 4875, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_SGI */ + { 4901, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE */ + { 4927, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_EXT */ + { 4957, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_SGI */ + { 4987, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE */ + { 5017, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_EXT */ + { 5051, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_SGI */ + { 5085, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE */ + { 5115, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_EXT */ + { 5149, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_SGI */ + { 5183, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE */ + { 5207, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_EXT */ + { 5235, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_SGI */ + { 5263, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE */ + { 5284, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE_SGI */ + { 5309, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH */ + { 5330, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_EXT */ + { 5355, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_SGI */ + { 5380, 0x00000C23 }, /* GL_COLOR_WRITEMASK */ + { 5399, 0x00008570 }, /* GL_COMBINE */ + { 5410, 0x00008503 }, /* GL_COMBINE4 */ + { 5422, 0x00008572 }, /* GL_COMBINE_ALPHA */ + { 5439, 0x00008572 }, /* GL_COMBINE_ALPHA_ARB */ + { 5460, 0x00008572 }, /* GL_COMBINE_ALPHA_EXT */ + { 5481, 0x00008570 }, /* GL_COMBINE_ARB */ + { 5496, 0x00008570 }, /* GL_COMBINE_EXT */ + { 5511, 0x00008571 }, /* GL_COMBINE_RGB */ + { 5526, 0x00008571 }, /* GL_COMBINE_RGB_ARB */ + { 5545, 0x00008571 }, /* GL_COMBINE_RGB_EXT */ + { 5564, 0x0000884E }, /* GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT */ + { 5600, 0x0000884E }, /* GL_COMPARE_REF_TO_TEXTURE */ + { 5626, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE */ + { 5650, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE_ARB */ + { 5678, 0x00001300 }, /* GL_COMPILE */ + { 5689, 0x00001301 }, /* GL_COMPILE_AND_EXECUTE */ + { 5712, 0x00008B81 }, /* GL_COMPILE_STATUS */ + { 5730, 0x000084E9 }, /* GL_COMPRESSED_ALPHA */ + { 5750, 0x000084E9 }, /* GL_COMPRESSED_ALPHA_ARB */ + { 5774, 0x000084EC }, /* GL_COMPRESSED_INTENSITY */ + { 5798, 0x000084EC }, /* GL_COMPRESSED_INTENSITY_ARB */ + { 5826, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE */ + { 5850, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA */ + { 5880, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA_ARB */ + { 5914, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE_ARB */ + { 5942, 0x00008225 }, /* GL_COMPRESSED_RED */ + { 5960, 0x00008226 }, /* GL_COMPRESSED_RG */ + { 5977, 0x000084ED }, /* GL_COMPRESSED_RGB */ + { 5995, 0x000084EE }, /* GL_COMPRESSED_RGBA */ + { 6014, 0x000084EE }, /* GL_COMPRESSED_RGBA_ARB */ + { 6037, 0x000086B1 }, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ + { 6066, 0x000083F1 }, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ + { 6099, 0x000083F2 }, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ + { 6132, 0x000083F3 }, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ + { 6165, 0x000084ED }, /* GL_COMPRESSED_RGB_ARB */ + { 6187, 0x000086B0 }, /* GL_COMPRESSED_RGB_FXT1_3DFX */ + { 6215, 0x000083F0 }, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ + { 6247, 0x00008C4A }, /* GL_COMPRESSED_SLUMINANCE */ + { 6272, 0x00008C4B }, /* GL_COMPRESSED_SLUMINANCE_ALPHA */ + { 6303, 0x00008C48 }, /* GL_COMPRESSED_SRGB */ + { 6322, 0x00008C49 }, /* GL_COMPRESSED_SRGB_ALPHA */ + { 6347, 0x000086A3 }, /* GL_COMPRESSED_TEXTURE_FORMATS */ + { 6377, 0x0000911C }, /* GL_CONDITION_SATISFIED */ + { 6400, 0x00008576 }, /* GL_CONSTANT */ + { 6412, 0x00008003 }, /* GL_CONSTANT_ALPHA */ + { 6430, 0x00008003 }, /* GL_CONSTANT_ALPHA_EXT */ + { 6452, 0x00008576 }, /* GL_CONSTANT_ARB */ + { 6468, 0x00001207 }, /* GL_CONSTANT_ATTENUATION */ + { 6492, 0x00008151 }, /* GL_CONSTANT_BORDER_HP */ + { 6514, 0x00008001 }, /* GL_CONSTANT_COLOR */ + { 6532, 0x00008001 }, /* GL_CONSTANT_COLOR_EXT */ + { 6554, 0x00008576 }, /* GL_CONSTANT_EXT */ + { 6570, 0x00000002 }, /* GL_CONTEXT_COMPATIBILITY_PROFILE_BIT */ + { 6607, 0x00000001 }, /* GL_CONTEXT_CORE_PROFILE_BIT */ + { 6635, 0x0000821E }, /* GL_CONTEXT_FLAGS */ + { 6652, 0x00000001 }, /* GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT */ + { 6691, 0x00009126 }, /* GL_CONTEXT_PROFILE_MASK */ + { 6715, 0x00008010 }, /* GL_CONVOLUTION_1D */ + { 6733, 0x00008011 }, /* GL_CONVOLUTION_2D */ + { 6751, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR */ + { 6779, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR_HP */ + { 6810, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE */ + { 6837, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE_EXT */ + { 6868, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS */ + { 6895, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS_EXT */ + { 6926, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE */ + { 6954, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE_EXT */ + { 6986, 0x00008017 }, /* GL_CONVOLUTION_FORMAT */ + { 7008, 0x00008017 }, /* GL_CONVOLUTION_FORMAT_EXT */ + { 7034, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT */ + { 7056, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT_EXT */ + { 7082, 0x00008018 }, /* GL_CONVOLUTION_WIDTH */ + { 7103, 0x00008018 }, /* GL_CONVOLUTION_WIDTH_EXT */ + { 7128, 0x00008862 }, /* GL_COORD_REPLACE */ + { 7145, 0x00008862 }, /* GL_COORD_REPLACE_ARB */ + { 7166, 0x00008862 }, /* GL_COORD_REPLACE_NV */ + { 7186, 0x00008862 }, /* GL_COORD_REPLACE_OES */ + { 7207, 0x00001503 }, /* GL_COPY */ + { 7215, 0x0000150C }, /* GL_COPY_INVERTED */ + { 7232, 0x00000706 }, /* GL_COPY_PIXEL_TOKEN */ + { 7252, 0x00008F36 }, /* GL_COPY_READ_BUFFER */ + { 7272, 0x00008F37 }, /* GL_COPY_WRITE_BUFFER */ + { 7293, 0x00000B44 }, /* GL_CULL_FACE */ + { 7306, 0x00000B45 }, /* GL_CULL_FACE_MODE */ + { 7324, 0x000081AA }, /* GL_CULL_VERTEX_EXT */ + { 7343, 0x000081AC }, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ + { 7375, 0x000081AB }, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ + { 7410, 0x00008626 }, /* GL_CURRENT_ATTRIB_NV */ + { 7431, 0x00000001 }, /* GL_CURRENT_BIT */ + { 7446, 0x00000B00 }, /* GL_CURRENT_COLOR */ + { 7463, 0x00008453 }, /* GL_CURRENT_FOG_COORD */ + { 7484, 0x00008453 }, /* GL_CURRENT_FOG_COORDINATE */ + { 7510, 0x00000B01 }, /* GL_CURRENT_INDEX */ + { 7527, 0x00008641 }, /* GL_CURRENT_MATRIX_ARB */ + { 7549, 0x00008845 }, /* GL_CURRENT_MATRIX_INDEX_ARB */ + { 7577, 0x00008641 }, /* GL_CURRENT_MATRIX_NV */ + { 7598, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ + { 7632, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_NV */ + { 7665, 0x00000B02 }, /* GL_CURRENT_NORMAL */ + { 7683, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_ARB */ + { 7713, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_OES */ + { 7743, 0x00008B8D }, /* GL_CURRENT_PROGRAM */ + { 7762, 0x00008865 }, /* GL_CURRENT_QUERY */ + { 7779, 0x00008865 }, /* GL_CURRENT_QUERY_ARB */ + { 7800, 0x00000B04 }, /* GL_CURRENT_RASTER_COLOR */ + { 7824, 0x00000B09 }, /* GL_CURRENT_RASTER_DISTANCE */ + { 7851, 0x00000B05 }, /* GL_CURRENT_RASTER_INDEX */ + { 7875, 0x00000B07 }, /* GL_CURRENT_RASTER_POSITION */ + { 7902, 0x00000B08 }, /* GL_CURRENT_RASTER_POSITION_VALID */ + { 7935, 0x0000845F }, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ + { 7969, 0x00000B06 }, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ + { 8002, 0x00008459 }, /* GL_CURRENT_SECONDARY_COLOR */ + { 8029, 0x00000B03 }, /* GL_CURRENT_TEXTURE_COORDS */ + { 8055, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB */ + { 8080, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB_ARB */ + { 8109, 0x000086A8 }, /* GL_CURRENT_WEIGHT_ARB */ + { 8131, 0x00000900 }, /* GL_CW */ + { 8137, 0x0000875B }, /* GL_DEBUG_ASSERT_MESA */ + { 8158, 0x00008759 }, /* GL_DEBUG_OBJECT_MESA */ + { 8179, 0x0000875A }, /* GL_DEBUG_PRINT_MESA */ + { 8199, 0x00002101 }, /* GL_DECAL */ + { 8208, 0x00001E03 }, /* GL_DECR */ + { 8216, 0x00008508 }, /* GL_DECR_WRAP */ + { 8229, 0x00008508 }, /* GL_DECR_WRAP_EXT */ + { 8246, 0x00008B80 }, /* GL_DELETE_STATUS */ + { 8263, 0x00001801 }, /* GL_DEPTH */ + { 8272, 0x000088F0 }, /* GL_DEPTH24_STENCIL8 */ + { 8292, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_EXT */ + { 8316, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_OES */ + { 8340, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT */ + { 8360, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_EXT */ + { 8384, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_OES */ + { 8408, 0x00000D1F }, /* GL_DEPTH_BIAS */ + { 8422, 0x00000D56 }, /* GL_DEPTH_BITS */ + { 8436, 0x00008891 }, /* GL_DEPTH_BOUNDS_EXT */ + { 8456, 0x00008890 }, /* GL_DEPTH_BOUNDS_TEST_EXT */ + { 8481, 0x00008223 }, /* GL_DEPTH_BUFFER */ + { 8497, 0x00000100 }, /* GL_DEPTH_BUFFER_BIT */ + { 8517, 0x0000864F }, /* GL_DEPTH_CLAMP */ + { 8532, 0x0000864F }, /* GL_DEPTH_CLAMP_NV */ + { 8550, 0x00000B73 }, /* GL_DEPTH_CLEAR_VALUE */ + { 8571, 0x00001902 }, /* GL_DEPTH_COMPONENT */ + { 8590, 0x000081A5 }, /* GL_DEPTH_COMPONENT16 */ + { 8611, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_ARB */ + { 8636, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_OES */ + { 8661, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_SGIX */ + { 8687, 0x000081A6 }, /* GL_DEPTH_COMPONENT24 */ + { 8708, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_ARB */ + { 8733, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_OES */ + { 8758, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_SGIX */ + { 8784, 0x000081A7 }, /* GL_DEPTH_COMPONENT32 */ + { 8805, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_ARB */ + { 8830, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_OES */ + { 8855, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_SGIX */ + { 8881, 0x00000B74 }, /* GL_DEPTH_FUNC */ + { 8895, 0x00000B70 }, /* GL_DEPTH_RANGE */ + { 8910, 0x00000D1E }, /* GL_DEPTH_SCALE */ + { 8925, 0x000084F9 }, /* GL_DEPTH_STENCIL */ + { 8942, 0x0000821A }, /* GL_DEPTH_STENCIL_ATTACHMENT */ + { 8970, 0x000084F9 }, /* GL_DEPTH_STENCIL_EXT */ + { 8991, 0x000084F9 }, /* GL_DEPTH_STENCIL_NV */ + { 9011, 0x000084F9 }, /* GL_DEPTH_STENCIL_OES */ + { 9032, 0x0000886F }, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ + { 9060, 0x0000886E }, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ + { 9088, 0x00000B71 }, /* GL_DEPTH_TEST */ + { 9102, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE */ + { 9124, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE_ARB */ + { 9150, 0x00000B72 }, /* GL_DEPTH_WRITEMASK */ + { 9169, 0x00001201 }, /* GL_DIFFUSE */ + { 9180, 0x00000BD0 }, /* GL_DITHER */ + { 9190, 0x00000A02 }, /* GL_DOMAIN */ + { 9200, 0x00001100 }, /* GL_DONT_CARE */ + { 9213, 0x000086AE }, /* GL_DOT3_RGB */ + { 9225, 0x000086AF }, /* GL_DOT3_RGBA */ + { 9238, 0x000086AF }, /* GL_DOT3_RGBA_ARB */ + { 9255, 0x00008741 }, /* GL_DOT3_RGBA_EXT */ + { 9272, 0x000086AE }, /* GL_DOT3_RGB_ARB */ + { 9288, 0x00008740 }, /* GL_DOT3_RGB_EXT */ + { 9304, 0x0000140A }, /* GL_DOUBLE */ + { 9314, 0x00000C32 }, /* GL_DOUBLEBUFFER */ + { 9330, 0x00000C01 }, /* GL_DRAW_BUFFER */ + { 9345, 0x00008825 }, /* GL_DRAW_BUFFER0 */ + { 9361, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */ + { 9381, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */ + { 9401, 0x00008826 }, /* GL_DRAW_BUFFER1 */ + { 9417, 0x0000882F }, /* GL_DRAW_BUFFER10 */ + { 9434, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */ + { 9455, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */ + { 9476, 0x00008830 }, /* GL_DRAW_BUFFER11 */ + { 9493, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */ + { 9514, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */ + { 9535, 0x00008831 }, /* GL_DRAW_BUFFER12 */ + { 9552, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */ + { 9573, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */ + { 9594, 0x00008832 }, /* GL_DRAW_BUFFER13 */ + { 9611, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */ + { 9632, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */ + { 9653, 0x00008833 }, /* GL_DRAW_BUFFER14 */ + { 9670, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */ + { 9691, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */ + { 9712, 0x00008834 }, /* GL_DRAW_BUFFER15 */ + { 9729, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */ + { 9750, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */ + { 9771, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */ + { 9791, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */ + { 9811, 0x00008827 }, /* GL_DRAW_BUFFER2 */ + { 9827, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */ + { 9847, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */ + { 9867, 0x00008828 }, /* GL_DRAW_BUFFER3 */ + { 9883, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */ + { 9903, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */ + { 9923, 0x00008829 }, /* GL_DRAW_BUFFER4 */ + { 9939, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */ + { 9959, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */ + { 9979, 0x0000882A }, /* GL_DRAW_BUFFER5 */ + { 9995, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */ + { 10015, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */ + { 10035, 0x0000882B }, /* GL_DRAW_BUFFER6 */ + { 10051, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */ + { 10071, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */ + { 10091, 0x0000882C }, /* GL_DRAW_BUFFER7 */ + { 10107, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */ + { 10127, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */ + { 10147, 0x0000882D }, /* GL_DRAW_BUFFER8 */ + { 10163, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */ + { 10183, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */ + { 10203, 0x0000882E }, /* GL_DRAW_BUFFER9 */ + { 10219, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */ + { 10239, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */ + { 10259, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER */ + { 10279, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING */ + { 10307, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */ + { 10339, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */ + { 10363, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */ + { 10383, 0x00000304 }, /* GL_DST_ALPHA */ + { 10396, 0x00000306 }, /* GL_DST_COLOR */ + { 10409, 0x0000877A }, /* GL_DU8DV8_ATI */ + { 10423, 0x00008779 }, /* GL_DUDV_ATI */ + { 10435, 0x000088EA }, /* GL_DYNAMIC_COPY */ + { 10451, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */ + { 10471, 0x000088E8 }, /* GL_DYNAMIC_DRAW */ + { 10487, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */ + { 10507, 0x000088E9 }, /* GL_DYNAMIC_READ */ + { 10523, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */ + { 10543, 0x00000B43 }, /* GL_EDGE_FLAG */ + { 10556, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */ + { 10575, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ + { 10609, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */ + { 10647, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */ + { 10674, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */ + { 10700, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */ + { 10724, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ + { 10756, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */ + { 10792, 0x00001600 }, /* GL_EMISSION */ + { 10804, 0x00002000 }, /* GL_ENABLE_BIT */ + { 10818, 0x00000202 }, /* GL_EQUAL */ + { 10827, 0x00001509 }, /* GL_EQUIV */ + { 10836, 0x00010000 }, /* GL_EVAL_BIT */ + { 10848, 0x00000800 }, /* GL_EXP */ + { 10855, 0x00000801 }, /* GL_EXP2 */ + { 10863, 0x00001F03 }, /* GL_EXTENSIONS */ + { 10877, 0x00002400 }, /* GL_EYE_LINEAR */ + { 10891, 0x00002502 }, /* GL_EYE_PLANE */ + { 10904, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */ + { 10929, 0x0000855B }, /* GL_EYE_RADIAL_NV */ + { 10946, 0x00000000 }, /* GL_FALSE */ + { 10955, 0x00001101 }, /* GL_FASTEST */ + { 10966, 0x00001C01 }, /* GL_FEEDBACK */ + { 10978, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */ + { 11005, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */ + { 11029, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */ + { 11053, 0x00001B02 }, /* GL_FILL */ + { 11061, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION */ + { 11088, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION_EXT */ + { 11119, 0x0000140C }, /* GL_FIXED */ + { 11128, 0x0000140C }, /* GL_FIXED_OES */ + { 11141, 0x0000891D }, /* GL_FIXED_ONLY */ + { 11155, 0x0000891D }, /* GL_FIXED_ONLY_ARB */ + { 11173, 0x00001D00 }, /* GL_FLAT */ + { 11181, 0x00001406 }, /* GL_FLOAT */ + { 11190, 0x00008B5A }, /* GL_FLOAT_MAT2 */ + { 11204, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */ + { 11222, 0x00008B65 }, /* GL_FLOAT_MAT2x3 */ + { 11238, 0x00008B66 }, /* GL_FLOAT_MAT2x4 */ + { 11254, 0x00008B5B }, /* GL_FLOAT_MAT3 */ + { 11268, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */ + { 11286, 0x00008B67 }, /* GL_FLOAT_MAT3x2 */ + { 11302, 0x00008B68 }, /* GL_FLOAT_MAT3x4 */ + { 11318, 0x00008B5C }, /* GL_FLOAT_MAT4 */ + { 11332, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */ + { 11350, 0x00008B69 }, /* GL_FLOAT_MAT4x2 */ + { 11366, 0x00008B6A }, /* GL_FLOAT_MAT4x3 */ + { 11382, 0x00008B50 }, /* GL_FLOAT_VEC2 */ + { 11396, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */ + { 11414, 0x00008B51 }, /* GL_FLOAT_VEC3 */ + { 11428, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */ + { 11446, 0x00008B52 }, /* GL_FLOAT_VEC4 */ + { 11460, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */ + { 11478, 0x00000B60 }, /* GL_FOG */ + { 11485, 0x00000080 }, /* GL_FOG_BIT */ + { 11496, 0x00000B66 }, /* GL_FOG_COLOR */ + { 11509, 0x00008451 }, /* GL_FOG_COORD */ + { 11522, 0x00008451 }, /* GL_FOG_COORDINATE */ + { 11540, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */ + { 11564, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ + { 11603, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */ + { 11646, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */ + { 11678, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ + { 11709, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */ + { 11738, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */ + { 11763, 0x00008457 }, /* GL_FOG_COORD_ARRAY */ + { 11782, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */ + { 11816, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */ + { 11843, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */ + { 11869, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */ + { 11893, 0x00008450 }, /* GL_FOG_COORD_SRC */ + { 11910, 0x00000B62 }, /* GL_FOG_DENSITY */ + { 11925, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */ + { 11949, 0x00000B64 }, /* GL_FOG_END */ + { 11960, 0x00000C54 }, /* GL_FOG_HINT */ + { 11972, 0x00000B61 }, /* GL_FOG_INDEX */ + { 11985, 0x00000B65 }, /* GL_FOG_MODE */ + { 11997, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */ + { 12016, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */ + { 12041, 0x00000B63 }, /* GL_FOG_START */ + { 12054, 0x00008452 }, /* GL_FRAGMENT_DEPTH */ + { 12072, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */ + { 12096, 0x00008B30 }, /* GL_FRAGMENT_SHADER */ + { 12115, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */ + { 12138, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ + { 12173, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES */ + { 12212, 0x00008D40 }, /* GL_FRAMEBUFFER */ + { 12227, 0x00008215 }, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ + { 12264, 0x00008214 }, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ + { 12300, 0x00008210 }, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ + { 12341, 0x00008211 }, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ + { 12382, 0x00008216 }, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ + { 12419, 0x00008213 }, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ + { 12456, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */ + { 12490, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB */ + { 12528, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ + { 12566, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */ + { 12608, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES */ + { 12650, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ + { 12688, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */ + { 12730, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES */ + { 12772, 0x00008212 }, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ + { 12807, 0x00008217 }, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ + { 12846, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */ + { 12895, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES */ + { 12944, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ + { 12992, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */ + { 13044, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES */ + { 13096, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ + { 13136, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ + { 13180, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ + { 13220, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */ + { 13264, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES */ + { 13308, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING */ + { 13331, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */ + { 13358, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_OES */ + { 13385, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE */ + { 13409, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */ + { 13437, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_OES */ + { 13465, 0x00008218 }, /* GL_FRAMEBUFFER_DEFAULT */ + { 13488, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */ + { 13507, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ + { 13544, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */ + { 13585, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES */ + { 13626, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS */ + { 13663, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ + { 13704, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES */ + { 13745, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ + { 13783, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */ + { 13825, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES */ + { 13867, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ + { 13918, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ + { 13956, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES */ + { 13994, 0x00008DA9 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ + { 14036, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */ + { 14076, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB */ + { 14120, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ + { 14165, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */ + { 14214, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES */ + { 14263, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ + { 14301, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT */ + { 14343, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ + { 14381, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */ + { 14423, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES */ + { 14465, 0x00008D40 }, /* GL_FRAMEBUFFER_OES */ + { 14484, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ + { 14516, 0x00008219 }, /* GL_FRAMEBUFFER_UNDEFINED */ + { 14541, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED */ + { 14568, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */ + { 14599, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_OES */ + { 14630, 0x00000404 }, /* GL_FRONT */ + { 14639, 0x00000408 }, /* GL_FRONT_AND_BACK */ + { 14657, 0x00000B46 }, /* GL_FRONT_FACE */ + { 14671, 0x00000400 }, /* GL_FRONT_LEFT */ + { 14685, 0x00000401 }, /* GL_FRONT_RIGHT */ + { 14700, 0x00008006 }, /* GL_FUNC_ADD */ + { 14712, 0x00008006 }, /* GL_FUNC_ADD_EXT */ + { 14728, 0x00008006 }, /* GL_FUNC_ADD_OES */ + { 14744, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */ + { 14769, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */ + { 14798, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_OES */ + { 14827, 0x0000800A }, /* GL_FUNC_SUBTRACT */ + { 14844, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */ + { 14865, 0x0000800A }, /* GL_FUNC_SUBTRACT_OES */ + { 14886, 0x00008191 }, /* GL_GENERATE_MIPMAP */ + { 14905, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */ + { 14929, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */ + { 14958, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */ + { 14982, 0x00008917 }, /* GL_GEOMETRY_INPUT_TYPE */ + { 15005, 0x00008DDB }, /* GL_GEOMETRY_INPUT_TYPE_ARB */ + { 15032, 0x00008918 }, /* GL_GEOMETRY_OUTPUT_TYPE */ + { 15056, 0x00008DDC }, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ + { 15084, 0x00008DD9 }, /* GL_GEOMETRY_SHADER */ + { 15103, 0x00008DD9 }, /* GL_GEOMETRY_SHADER_ARB */ + { 15126, 0x00008916 }, /* GL_GEOMETRY_VERTICES_OUT */ + { 15151, 0x00008DDA }, /* GL_GEOMETRY_VERTICES_OUT_ARB */ + { 15180, 0x00000206 }, /* GL_GEQUAL */ + { 15190, 0x00000204 }, /* GL_GREATER */ + { 15201, 0x00001904 }, /* GL_GREEN */ + { 15210, 0x00000D19 }, /* GL_GREEN_BIAS */ + { 15224, 0x00000D53 }, /* GL_GREEN_BITS */ + { 15238, 0x00008D95 }, /* GL_GREEN_INTEGER */ + { 15255, 0x00008D95 }, /* GL_GREEN_INTEGER_EXT */ + { 15276, 0x00000D18 }, /* GL_GREEN_SCALE */ + { 15291, 0x0000140B }, /* GL_HALF_FLOAT */ + { 15305, 0x00008D61 }, /* GL_HALF_FLOAT_OES */ + { 15323, 0x00008DF2 }, /* GL_HIGH_FLOAT */ + { 15337, 0x00008DF5 }, /* GL_HIGH_INT */ + { 15349, 0x00008000 }, /* GL_HINT_BIT */ + { 15361, 0x00008024 }, /* GL_HISTOGRAM */ + { 15374, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */ + { 15398, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */ + { 15426, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */ + { 15449, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */ + { 15476, 0x00008024 }, /* GL_HISTOGRAM_EXT */ + { 15493, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */ + { 15513, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */ + { 15537, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */ + { 15561, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */ + { 15589, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */ + { 15617, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */ + { 15649, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */ + { 15671, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */ + { 15697, 0x0000802D }, /* GL_HISTOGRAM_SINK */ + { 15715, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */ + { 15737, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */ + { 15756, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */ + { 15779, 0x0000862A }, /* GL_IDENTITY_NV */ + { 15794, 0x00008150 }, /* GL_IGNORE_BORDER_HP */ + { 15814, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */ + { 15850, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ + { 15890, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */ + { 15924, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ + { 15962, 0x00001E02 }, /* GL_INCR */ + { 15970, 0x00008507 }, /* GL_INCR_WRAP */ + { 15983, 0x00008507 }, /* GL_INCR_WRAP_EXT */ + { 16000, 0x00008222 }, /* GL_INDEX */ + { 16009, 0x00008077 }, /* GL_INDEX_ARRAY */ + { 16024, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */ + { 16054, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */ + { 16088, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */ + { 16111, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */ + { 16133, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */ + { 16153, 0x00000D51 }, /* GL_INDEX_BITS */ + { 16167, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */ + { 16188, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */ + { 16206, 0x00000C30 }, /* GL_INDEX_MODE */ + { 16220, 0x00000D13 }, /* GL_INDEX_OFFSET */ + { 16236, 0x00000D12 }, /* GL_INDEX_SHIFT */ + { 16251, 0x00000C21 }, /* GL_INDEX_WRITEMASK */ + { 16270, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */ + { 16289, 0x00001404 }, /* GL_INT */ + { 16296, 0x00008049 }, /* GL_INTENSITY */ + { 16309, 0x0000804C }, /* GL_INTENSITY12 */ + { 16324, 0x0000804C }, /* GL_INTENSITY12_EXT */ + { 16343, 0x0000804D }, /* GL_INTENSITY16 */ + { 16358, 0x00008D8B }, /* GL_INTENSITY16I_EXT */ + { 16378, 0x00008D79 }, /* GL_INTENSITY16UI_EXT */ + { 16399, 0x0000804D }, /* GL_INTENSITY16_EXT */ + { 16418, 0x00008D85 }, /* GL_INTENSITY32I_EXT */ + { 16438, 0x00008D73 }, /* GL_INTENSITY32UI_EXT */ + { 16459, 0x0000804A }, /* GL_INTENSITY4 */ + { 16473, 0x0000804A }, /* GL_INTENSITY4_EXT */ + { 16491, 0x0000804B }, /* GL_INTENSITY8 */ + { 16505, 0x00008D91 }, /* GL_INTENSITY8I_EXT */ + { 16524, 0x00008D7F }, /* GL_INTENSITY8UI_EXT */ + { 16544, 0x0000804B }, /* GL_INTENSITY8_EXT */ + { 16562, 0x00008049 }, /* GL_INTENSITY_EXT */ + { 16579, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS */ + { 16602, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS_EXT */ + { 16629, 0x00008575 }, /* GL_INTERPOLATE */ + { 16644, 0x00008575 }, /* GL_INTERPOLATE_ARB */ + { 16663, 0x00008575 }, /* GL_INTERPOLATE_EXT */ + { 16682, 0x00008DF7 }, /* GL_INT_10_10_10_2_OES */ + { 16704, 0x00008DC9 }, /* GL_INT_SAMPLER_1D */ + { 16722, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY */ + { 16746, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY_EXT */ + { 16774, 0x00008DC9 }, /* GL_INT_SAMPLER_1D_EXT */ + { 16796, 0x00008DCA }, /* GL_INT_SAMPLER_2D */ + { 16814, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY */ + { 16838, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY_EXT */ + { 16866, 0x00008DCA }, /* GL_INT_SAMPLER_2D_EXT */ + { 16888, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT */ + { 16911, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT_EXT */ + { 16938, 0x00008DCB }, /* GL_INT_SAMPLER_3D */ + { 16956, 0x00008DCB }, /* GL_INT_SAMPLER_3D_EXT */ + { 16978, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER */ + { 17000, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER_EXT */ + { 17026, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE */ + { 17046, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE_EXT */ + { 17070, 0x00008B53 }, /* GL_INT_VEC2 */ + { 17082, 0x00008B53 }, /* GL_INT_VEC2_ARB */ + { 17098, 0x00008B54 }, /* GL_INT_VEC3 */ + { 17110, 0x00008B54 }, /* GL_INT_VEC3_ARB */ + { 17126, 0x00008B55 }, /* GL_INT_VEC4 */ + { 17138, 0x00008B55 }, /* GL_INT_VEC4_ARB */ + { 17154, 0x00000500 }, /* GL_INVALID_ENUM */ + { 17170, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION */ + { 17203, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */ + { 17240, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_OES */ + { 17277, 0x00000502 }, /* GL_INVALID_OPERATION */ + { 17298, 0x00000501 }, /* GL_INVALID_VALUE */ + { 17315, 0x0000862B }, /* GL_INVERSE_NV */ + { 17329, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */ + { 17353, 0x0000150A }, /* GL_INVERT */ + { 17363, 0x00001E00 }, /* GL_KEEP */ + { 17371, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION */ + { 17397, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION_EXT */ + { 17427, 0x00000406 }, /* GL_LEFT */ + { 17435, 0x00000203 }, /* GL_LEQUAL */ + { 17445, 0x00000201 }, /* GL_LESS */ + { 17453, 0x00004000 }, /* GL_LIGHT0 */ + { 17463, 0x00004001 }, /* GL_LIGHT1 */ + { 17473, 0x00004002 }, /* GL_LIGHT2 */ + { 17483, 0x00004003 }, /* GL_LIGHT3 */ + { 17493, 0x00004004 }, /* GL_LIGHT4 */ + { 17503, 0x00004005 }, /* GL_LIGHT5 */ + { 17513, 0x00004006 }, /* GL_LIGHT6 */ + { 17523, 0x00004007 }, /* GL_LIGHT7 */ + { 17533, 0x00000B50 }, /* GL_LIGHTING */ + { 17545, 0x00000040 }, /* GL_LIGHTING_BIT */ + { 17561, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */ + { 17584, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */ + { 17613, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */ + { 17646, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ + { 17674, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */ + { 17698, 0x00001B01 }, /* GL_LINE */ + { 17706, 0x00002601 }, /* GL_LINEAR */ + { 17716, 0x00001208 }, /* GL_LINEAR_ATTENUATION */ + { 17738, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ + { 17768, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ + { 17799, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */ + { 17823, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */ + { 17848, 0x00000001 }, /* GL_LINES */ + { 17857, 0x0000000A }, /* GL_LINES_ADJACENCY */ + { 17876, 0x0000000A }, /* GL_LINES_ADJACENCY_ARB */ + { 17899, 0x00000004 }, /* GL_LINE_BIT */ + { 17911, 0x00000002 }, /* GL_LINE_LOOP */ + { 17924, 0x00000707 }, /* GL_LINE_RESET_TOKEN */ + { 17944, 0x00000B20 }, /* GL_LINE_SMOOTH */ + { 17959, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */ + { 17979, 0x00000B24 }, /* GL_LINE_STIPPLE */ + { 17995, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */ + { 18019, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */ + { 18042, 0x00000003 }, /* GL_LINE_STRIP */ + { 18056, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY */ + { 18080, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY_ARB */ + { 18108, 0x00000702 }, /* GL_LINE_TOKEN */ + { 18122, 0x00000B21 }, /* GL_LINE_WIDTH */ + { 18136, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */ + { 18162, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */ + { 18182, 0x00008B82 }, /* GL_LINK_STATUS */ + { 18197, 0x00000B32 }, /* GL_LIST_BASE */ + { 18210, 0x00020000 }, /* GL_LIST_BIT */ + { 18222, 0x00000B33 }, /* GL_LIST_INDEX */ + { 18236, 0x00000B30 }, /* GL_LIST_MODE */ + { 18249, 0x00000101 }, /* GL_LOAD */ + { 18257, 0x00000BF1 }, /* GL_LOGIC_OP */ + { 18269, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */ + { 18286, 0x00008CA1 }, /* GL_LOWER_LEFT */ + { 18300, 0x00008DF0 }, /* GL_LOW_FLOAT */ + { 18313, 0x00008DF3 }, /* GL_LOW_INT */ + { 18324, 0x00001909 }, /* GL_LUMINANCE */ + { 18337, 0x00008041 }, /* GL_LUMINANCE12 */ + { 18352, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */ + { 18375, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */ + { 18402, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */ + { 18424, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */ + { 18450, 0x00008041 }, /* GL_LUMINANCE12_EXT */ + { 18469, 0x00008042 }, /* GL_LUMINANCE16 */ + { 18484, 0x00008D8C }, /* GL_LUMINANCE16I_EXT */ + { 18504, 0x00008D7A }, /* GL_LUMINANCE16UI_EXT */ + { 18525, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */ + { 18548, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */ + { 18575, 0x00008042 }, /* GL_LUMINANCE16_EXT */ + { 18594, 0x00008D86 }, /* GL_LUMINANCE32I_EXT */ + { 18614, 0x00008D74 }, /* GL_LUMINANCE32UI_EXT */ + { 18635, 0x0000803F }, /* GL_LUMINANCE4 */ + { 18649, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */ + { 18670, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */ + { 18695, 0x0000803F }, /* GL_LUMINANCE4_EXT */ + { 18713, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */ + { 18734, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */ + { 18759, 0x00008040 }, /* GL_LUMINANCE8 */ + { 18773, 0x00008D92 }, /* GL_LUMINANCE8I_EXT */ + { 18792, 0x00008D80 }, /* GL_LUMINANCE8UI_EXT */ + { 18812, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */ + { 18833, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */ + { 18858, 0x00008040 }, /* GL_LUMINANCE8_EXT */ + { 18876, 0x0000190A }, /* GL_LUMINANCE_ALPHA */ + { 18895, 0x00008D8D }, /* GL_LUMINANCE_ALPHA16I_EXT */ + { 18921, 0x00008D7B }, /* GL_LUMINANCE_ALPHA16UI_EXT */ + { 18948, 0x00008D87 }, /* GL_LUMINANCE_ALPHA32I_EXT */ + { 18974, 0x00008D75 }, /* GL_LUMINANCE_ALPHA32UI_EXT */ + { 19001, 0x00008D93 }, /* GL_LUMINANCE_ALPHA8I_EXT */ + { 19026, 0x00008D81 }, /* GL_LUMINANCE_ALPHA8UI_EXT */ + { 19052, 0x00008D9D }, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */ + { 19083, 0x00008D9C }, /* GL_LUMINANCE_INTEGER_EXT */ + { 19108, 0x0000821B }, /* GL_MAJOR_VERSION */ + { 19125, 0x00000D90 }, /* GL_MAP1_COLOR_4 */ + { 19141, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */ + { 19161, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */ + { 19183, 0x00000D91 }, /* GL_MAP1_INDEX */ + { 19197, 0x00000D92 }, /* GL_MAP1_NORMAL */ + { 19212, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */ + { 19236, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */ + { 19260, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */ + { 19284, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */ + { 19308, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */ + { 19325, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */ + { 19342, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ + { 19370, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ + { 19399, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ + { 19428, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ + { 19457, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ + { 19486, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ + { 19515, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ + { 19544, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ + { 19572, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ + { 19600, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ + { 19628, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ + { 19656, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ + { 19684, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ + { 19712, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ + { 19740, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ + { 19768, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ + { 19796, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */ + { 19812, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */ + { 19832, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */ + { 19854, 0x00000DB1 }, /* GL_MAP2_INDEX */ + { 19868, 0x00000DB2 }, /* GL_MAP2_NORMAL */ + { 19883, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */ + { 19907, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */ + { 19931, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */ + { 19955, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */ + { 19979, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */ + { 19996, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */ + { 20013, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ + { 20041, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ + { 20070, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ + { 20099, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ + { 20128, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ + { 20157, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ + { 20186, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ + { 20215, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ + { 20243, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ + { 20271, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ + { 20299, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ + { 20327, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ + { 20355, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ + { 20383, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */ + { 20411, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ + { 20439, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ + { 20467, 0x00000D10 }, /* GL_MAP_COLOR */ + { 20480, 0x00000010 }, /* GL_MAP_FLUSH_EXPLICIT_BIT */ + { 20506, 0x00000008 }, /* GL_MAP_INVALIDATE_BUFFER_BIT */ + { 20535, 0x00000004 }, /* GL_MAP_INVALIDATE_RANGE_BIT */ + { 20563, 0x00000001 }, /* GL_MAP_READ_BIT */ + { 20579, 0x00000D11 }, /* GL_MAP_STENCIL */ + { 20594, 0x00000020 }, /* GL_MAP_UNSYNCHRONIZED_BIT */ + { 20620, 0x00000002 }, /* GL_MAP_WRITE_BIT */ + { 20637, 0x000088C0 }, /* GL_MATRIX0_ARB */ + { 20652, 0x00008630 }, /* GL_MATRIX0_NV */ + { 20666, 0x000088CA }, /* GL_MATRIX10_ARB */ + { 20682, 0x000088CB }, /* GL_MATRIX11_ARB */ + { 20698, 0x000088CC }, /* GL_MATRIX12_ARB */ + { 20714, 0x000088CD }, /* GL_MATRIX13_ARB */ + { 20730, 0x000088CE }, /* GL_MATRIX14_ARB */ + { 20746, 0x000088CF }, /* GL_MATRIX15_ARB */ + { 20762, 0x000088D0 }, /* GL_MATRIX16_ARB */ + { 20778, 0x000088D1 }, /* GL_MATRIX17_ARB */ + { 20794, 0x000088D2 }, /* GL_MATRIX18_ARB */ + { 20810, 0x000088D3 }, /* GL_MATRIX19_ARB */ + { 20826, 0x000088C1 }, /* GL_MATRIX1_ARB */ + { 20841, 0x00008631 }, /* GL_MATRIX1_NV */ + { 20855, 0x000088D4 }, /* GL_MATRIX20_ARB */ + { 20871, 0x000088D5 }, /* GL_MATRIX21_ARB */ + { 20887, 0x000088D6 }, /* GL_MATRIX22_ARB */ + { 20903, 0x000088D7 }, /* GL_MATRIX23_ARB */ + { 20919, 0x000088D8 }, /* GL_MATRIX24_ARB */ + { 20935, 0x000088D9 }, /* GL_MATRIX25_ARB */ + { 20951, 0x000088DA }, /* GL_MATRIX26_ARB */ + { 20967, 0x000088DB }, /* GL_MATRIX27_ARB */ + { 20983, 0x000088DC }, /* GL_MATRIX28_ARB */ + { 20999, 0x000088DD }, /* GL_MATRIX29_ARB */ + { 21015, 0x000088C2 }, /* GL_MATRIX2_ARB */ + { 21030, 0x00008632 }, /* GL_MATRIX2_NV */ + { 21044, 0x000088DE }, /* GL_MATRIX30_ARB */ + { 21060, 0x000088DF }, /* GL_MATRIX31_ARB */ + { 21076, 0x000088C3 }, /* GL_MATRIX3_ARB */ + { 21091, 0x00008633 }, /* GL_MATRIX3_NV */ + { 21105, 0x000088C4 }, /* GL_MATRIX4_ARB */ + { 21120, 0x00008634 }, /* GL_MATRIX4_NV */ + { 21134, 0x000088C5 }, /* GL_MATRIX5_ARB */ + { 21149, 0x00008635 }, /* GL_MATRIX5_NV */ + { 21163, 0x000088C6 }, /* GL_MATRIX6_ARB */ + { 21178, 0x00008636 }, /* GL_MATRIX6_NV */ + { 21192, 0x000088C7 }, /* GL_MATRIX7_ARB */ + { 21207, 0x00008637 }, /* GL_MATRIX7_NV */ + { 21221, 0x000088C8 }, /* GL_MATRIX8_ARB */ + { 21236, 0x000088C9 }, /* GL_MATRIX9_ARB */ + { 21251, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */ + { 21277, 0x00008B9E }, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ + { 21318, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_OES */ + { 21344, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ + { 21378, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_OES */ + { 21412, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ + { 21443, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_OES */ + { 21474, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ + { 21507, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_OES */ + { 21540, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ + { 21571, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_OES */ + { 21602, 0x00000BA0 }, /* GL_MATRIX_MODE */ + { 21617, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */ + { 21639, 0x00008840 }, /* GL_MATRIX_PALETTE_OES */ + { 21661, 0x00008008 }, /* GL_MAX */ + { 21668, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */ + { 21691, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE_OES */ + { 21718, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS */ + { 21746, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */ + { 21778, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */ + { 21804, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ + { 21837, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ + { 21863, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + { 21897, 0x00000D32 }, /* GL_MAX_CLIP_DISTANCES */ + { 21919, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */ + { 21938, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS */ + { 21963, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */ + { 21992, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ + { 22024, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */ + { 22060, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ + { 22096, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */ + { 22136, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */ + { 22162, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */ + { 22192, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */ + { 22217, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */ + { 22246, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ + { 22275, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */ + { 22308, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES */ + { 22341, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */ + { 22361, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */ + { 22385, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */ + { 22409, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */ + { 22433, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */ + { 22458, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */ + { 22476, 0x00008008 }, /* GL_MAX_EXT */ + { 22487, 0x00009125 }, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */ + { 22520, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ + { 22555, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */ + { 22594, 0x00008DFD }, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ + { 22626, 0x00009123 }, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */ + { 22659, 0x00009124 }, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */ + { 22693, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */ + { 22725, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB */ + { 22761, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */ + { 22797, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB */ + { 22837, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */ + { 22877, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB */ + { 22921, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */ + { 22956, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB */ + { 22995, 0x00008DDD }, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ + { 23034, 0x00000D31 }, /* GL_MAX_LIGHTS */ + { 23048, 0x00000B31 }, /* GL_MAX_LIST_NESTING */ + { 23068, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ + { 23106, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */ + { 23135, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */ + { 23159, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */ + { 23187, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_OES */ + { 23215, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */ + { 23238, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ + { 23275, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ + { 23311, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ + { 23338, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ + { 23367, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ + { 23401, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */ + { 23437, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ + { 23464, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ + { 23496, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ + { 23532, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ + { 23561, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ + { 23590, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */ + { 23618, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ + { 23656, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + { 23700, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + { 23743, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ + { 23777, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + { 23816, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ + { 23853, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ + { 23891, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + { 23934, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + { 23977, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ + { 24007, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ + { 24038, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET */ + { 24066, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET_EXT */ + { 24098, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ + { 24134, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ + { 24170, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */ + { 24200, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */ + { 24230, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */ + { 24264, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */ + { 24297, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE */ + { 24322, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */ + { 24351, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_OES */ + { 24380, 0x00008D57 }, /* GL_MAX_SAMPLES */ + { 24395, 0x00008D57 }, /* GL_MAX_SAMPLES_EXT */ + { 24414, 0x00009111 }, /* GL_MAX_SERVER_WAIT_TIMEOUT */ + { 24441, 0x00008504 }, /* GL_MAX_SHININESS_NV */ + { 24461, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */ + { 24485, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE */ + { 24512, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE_ARB */ + { 24543, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */ + { 24565, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */ + { 24591, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */ + { 24618, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */ + { 24649, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */ + { 24673, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS_EXT */ + { 24701, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ + { 24735, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */ + { 24755, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */ + { 24782, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */ + { 24803, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */ + { 24828, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */ + { 24853, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */ + { 24888, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */ + { 24937, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */ + { 24990, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */ + { 25033, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */ + { 25080, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */ + { 25126, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */ + { 25176, 0x00008B4B }, /* GL_MAX_VARYING_COMPONENTS */ + { 25202, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */ + { 25224, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */ + { 25250, 0x00008DFC }, /* GL_MAX_VARYING_VECTORS */ + { 25273, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */ + { 25295, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */ + { 25321, 0x00009122 }, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */ + { 25353, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ + { 25387, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */ + { 25425, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ + { 25458, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */ + { 25495, 0x00008DFB }, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ + { 25525, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */ + { 25549, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_OES */ + { 25573, 0x00008DDE }, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ + { 25610, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */ + { 25631, 0x00008DF1 }, /* GL_MEDIUM_FLOAT */ + { 25647, 0x00008DF4 }, /* GL_MEDIUM_INT */ + { 25661, 0x00008007 }, /* GL_MIN */ + { 25668, 0x0000802E }, /* GL_MINMAX */ + { 25678, 0x0000802E }, /* GL_MINMAX_EXT */ + { 25692, 0x0000802F }, /* GL_MINMAX_FORMAT */ + { 25709, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */ + { 25730, 0x00008030 }, /* GL_MINMAX_SINK */ + { 25745, 0x00008030 }, /* GL_MINMAX_SINK_EXT */ + { 25764, 0x0000821C }, /* GL_MINOR_VERSION */ + { 25781, 0x00008007 }, /* GL_MIN_EXT */ + { 25792, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET */ + { 25820, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET_EXT */ + { 25852, 0x00008370 }, /* GL_MIRRORED_REPEAT */ + { 25871, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */ + { 25894, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */ + { 25917, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */ + { 25937, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */ + { 25957, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ + { 25987, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */ + { 26015, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ + { 26043, 0x00001700 }, /* GL_MODELVIEW */ + { 26056, 0x00001700 }, /* GL_MODELVIEW0_ARB */ + { 26074, 0x0000872A }, /* GL_MODELVIEW10_ARB */ + { 26093, 0x0000872B }, /* GL_MODELVIEW11_ARB */ + { 26112, 0x0000872C }, /* GL_MODELVIEW12_ARB */ + { 26131, 0x0000872D }, /* GL_MODELVIEW13_ARB */ + { 26150, 0x0000872E }, /* GL_MODELVIEW14_ARB */ + { 26169, 0x0000872F }, /* GL_MODELVIEW15_ARB */ + { 26188, 0x00008730 }, /* GL_MODELVIEW16_ARB */ + { 26207, 0x00008731 }, /* GL_MODELVIEW17_ARB */ + { 26226, 0x00008732 }, /* GL_MODELVIEW18_ARB */ + { 26245, 0x00008733 }, /* GL_MODELVIEW19_ARB */ + { 26264, 0x0000850A }, /* GL_MODELVIEW1_ARB */ + { 26282, 0x00008734 }, /* GL_MODELVIEW20_ARB */ + { 26301, 0x00008735 }, /* GL_MODELVIEW21_ARB */ + { 26320, 0x00008736 }, /* GL_MODELVIEW22_ARB */ + { 26339, 0x00008737 }, /* GL_MODELVIEW23_ARB */ + { 26358, 0x00008738 }, /* GL_MODELVIEW24_ARB */ + { 26377, 0x00008739 }, /* GL_MODELVIEW25_ARB */ + { 26396, 0x0000873A }, /* GL_MODELVIEW26_ARB */ + { 26415, 0x0000873B }, /* GL_MODELVIEW27_ARB */ + { 26434, 0x0000873C }, /* GL_MODELVIEW28_ARB */ + { 26453, 0x0000873D }, /* GL_MODELVIEW29_ARB */ + { 26472, 0x00008722 }, /* GL_MODELVIEW2_ARB */ + { 26490, 0x0000873E }, /* GL_MODELVIEW30_ARB */ + { 26509, 0x0000873F }, /* GL_MODELVIEW31_ARB */ + { 26528, 0x00008723 }, /* GL_MODELVIEW3_ARB */ + { 26546, 0x00008724 }, /* GL_MODELVIEW4_ARB */ + { 26564, 0x00008725 }, /* GL_MODELVIEW5_ARB */ + { 26582, 0x00008726 }, /* GL_MODELVIEW6_ARB */ + { 26600, 0x00008727 }, /* GL_MODELVIEW7_ARB */ + { 26618, 0x00008728 }, /* GL_MODELVIEW8_ARB */ + { 26636, 0x00008729 }, /* GL_MODELVIEW9_ARB */ + { 26654, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */ + { 26674, 0x0000898D }, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ + { 26716, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */ + { 26743, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */ + { 26768, 0x00002100 }, /* GL_MODULATE */ + { 26780, 0x00008744 }, /* GL_MODULATE_ADD_ATI */ + { 26800, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */ + { 26827, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */ + { 26852, 0x00000103 }, /* GL_MULT */ + { 26860, 0x0000809D }, /* GL_MULTISAMPLE */ + { 26875, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */ + { 26895, 0x0000809D }, /* GL_MULTISAMPLE_ARB */ + { 26914, 0x20000000 }, /* GL_MULTISAMPLE_BIT */ + { 26933, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */ + { 26957, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */ + { 26980, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */ + { 27010, 0x00002A25 }, /* GL_N3F_V3F */ + { 27021, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */ + { 27041, 0x0000150E }, /* GL_NAND */ + { 27049, 0x00002600 }, /* GL_NEAREST */ + { 27060, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ + { 27091, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ + { 27123, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */ + { 27148, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */ + { 27174, 0x00000200 }, /* GL_NEVER */ + { 27183, 0x00001102 }, /* GL_NICEST */ + { 27193, 0x00000000 }, /* GL_NONE */ + { 27201, 0x00000000 }, /* GL_NONE_OES */ + { 27213, 0x00001505 }, /* GL_NOOP */ + { 27221, 0x00001508 }, /* GL_NOR */ + { 27228, 0x00000BA1 }, /* GL_NORMALIZE */ + { 27241, 0x00008075 }, /* GL_NORMAL_ARRAY */ + { 27257, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ + { 27288, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */ + { 27323, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */ + { 27347, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */ + { 27370, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */ + { 27391, 0x00008511 }, /* GL_NORMAL_MAP */ + { 27405, 0x00008511 }, /* GL_NORMAL_MAP_ARB */ + { 27423, 0x00008511 }, /* GL_NORMAL_MAP_NV */ + { 27440, 0x00008511 }, /* GL_NORMAL_MAP_OES */ + { 27458, 0x00000205 }, /* GL_NOTEQUAL */ + { 27470, 0x00000000 }, /* GL_NO_ERROR */ + { 27482, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ + { 27516, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */ + { 27554, 0x0000821D }, /* GL_NUM_EXTENSIONS */ + { 27572, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ + { 27606, 0x00008DF9 }, /* GL_NUM_SHADER_BINARY_FORMATS */ + { 27635, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */ + { 27667, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */ + { 27709, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */ + { 27739, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */ + { 27779, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */ + { 27810, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */ + { 27839, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */ + { 27867, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */ + { 27897, 0x00002401 }, /* GL_OBJECT_LINEAR */ + { 27914, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */ + { 27940, 0x00002501 }, /* GL_OBJECT_PLANE */ + { 27956, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */ + { 27991, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */ + { 28013, 0x00009112 }, /* GL_OBJECT_TYPE */ + { 28028, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */ + { 28047, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */ + { 28077, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */ + { 28098, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */ + { 28126, 0x00000001 }, /* GL_ONE */ + { 28133, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */ + { 28161, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */ + { 28193, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */ + { 28221, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */ + { 28253, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */ + { 28276, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */ + { 28299, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */ + { 28322, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */ + { 28345, 0x00008598 }, /* GL_OPERAND0_ALPHA */ + { 28363, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */ + { 28385, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */ + { 28407, 0x00008590 }, /* GL_OPERAND0_RGB */ + { 28423, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */ + { 28443, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */ + { 28463, 0x00008599 }, /* GL_OPERAND1_ALPHA */ + { 28481, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */ + { 28503, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */ + { 28525, 0x00008591 }, /* GL_OPERAND1_RGB */ + { 28541, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */ + { 28561, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */ + { 28581, 0x0000859A }, /* GL_OPERAND2_ALPHA */ + { 28599, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */ + { 28621, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */ + { 28643, 0x00008592 }, /* GL_OPERAND2_RGB */ + { 28659, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */ + { 28679, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */ + { 28699, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */ + { 28720, 0x00008593 }, /* GL_OPERAND3_RGB_NV */ + { 28739, 0x00001507 }, /* GL_OR */ + { 28745, 0x00000A01 }, /* GL_ORDER */ + { 28754, 0x0000150D }, /* GL_OR_INVERTED */ + { 28769, 0x0000150B }, /* GL_OR_REVERSE */ + { 28783, 0x00000505 }, /* GL_OUT_OF_MEMORY */ + { 28800, 0x00000D05 }, /* GL_PACK_ALIGNMENT */ + { 28818, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */ + { 28839, 0x00008758 }, /* GL_PACK_INVERT_MESA */ + { 28859, 0x00000D01 }, /* GL_PACK_LSB_FIRST */ + { 28877, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */ + { 28896, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */ + { 28916, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */ + { 28936, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */ + { 28954, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */ + { 28973, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */ + { 28998, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */ + { 29022, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */ + { 29043, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */ + { 29065, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */ + { 29087, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */ + { 29112, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */ + { 29136, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */ + { 29157, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */ + { 29179, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */ + { 29201, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */ + { 29223, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */ + { 29254, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */ + { 29274, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */ + { 29299, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */ + { 29319, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */ + { 29344, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */ + { 29364, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */ + { 29389, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */ + { 29409, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */ + { 29434, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */ + { 29454, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */ + { 29479, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */ + { 29499, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */ + { 29524, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */ + { 29544, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */ + { 29569, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */ + { 29589, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */ + { 29614, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */ + { 29634, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */ + { 29659, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */ + { 29679, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */ + { 29704, 0x00000020 }, /* GL_PIXEL_MODE_BIT */ + { 29722, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */ + { 29743, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */ + { 29772, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */ + { 29805, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */ + { 29830, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */ + { 29853, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ + { 29884, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */ + { 29919, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */ + { 29946, 0x00001B00 }, /* GL_POINT */ + { 29955, 0x00000000 }, /* GL_POINTS */ + { 29965, 0x00000002 }, /* GL_POINT_BIT */ + { 29978, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */ + { 30008, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */ + { 30042, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */ + { 30076, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */ + { 30111, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */ + { 30140, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */ + { 30173, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */ + { 30206, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */ + { 30240, 0x00000B11 }, /* GL_POINT_SIZE */ + { 30254, 0x00008B9F }, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ + { 30293, 0x00008B9C }, /* GL_POINT_SIZE_ARRAY_OES */ + { 30317, 0x0000898C }, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ + { 30349, 0x0000898B }, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ + { 30380, 0x0000898A }, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ + { 30409, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */ + { 30435, 0x00008127 }, /* GL_POINT_SIZE_MAX */ + { 30453, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */ + { 30475, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */ + { 30497, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */ + { 30520, 0x00008126 }, /* GL_POINT_SIZE_MIN */ + { 30538, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */ + { 30560, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */ + { 30582, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */ + { 30605, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */ + { 30625, 0x00000B10 }, /* GL_POINT_SMOOTH */ + { 30641, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */ + { 30662, 0x00008861 }, /* GL_POINT_SPRITE */ + { 30678, 0x00008861 }, /* GL_POINT_SPRITE_ARB */ + { 30698, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */ + { 30727, 0x00008861 }, /* GL_POINT_SPRITE_NV */ + { 30746, 0x00008861 }, /* GL_POINT_SPRITE_OES */ + { 30766, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */ + { 30792, 0x00000701 }, /* GL_POINT_TOKEN */ + { 30807, 0x00000009 }, /* GL_POLYGON */ + { 30818, 0x00000008 }, /* GL_POLYGON_BIT */ + { 30833, 0x00000B40 }, /* GL_POLYGON_MODE */ + { 30849, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */ + { 30872, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */ + { 30897, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */ + { 30920, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */ + { 30943, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */ + { 30967, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */ + { 30991, 0x00000B41 }, /* GL_POLYGON_SMOOTH */ + { 31009, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */ + { 31032, 0x00000B42 }, /* GL_POLYGON_STIPPLE */ + { 31051, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */ + { 31074, 0x00000703 }, /* GL_POLYGON_TOKEN */ + { 31091, 0x00001203 }, /* GL_POSITION */ + { 31103, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ + { 31135, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */ + { 31171, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ + { 31204, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */ + { 31241, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ + { 31272, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */ + { 31307, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ + { 31339, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */ + { 31375, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ + { 31408, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ + { 31440, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */ + { 31476, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ + { 31509, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */ + { 31546, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */ + { 31576, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */ + { 31610, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */ + { 31641, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */ + { 31676, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ + { 31707, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */ + { 31742, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ + { 31774, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */ + { 31810, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */ + { 31840, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */ + { 31874, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */ + { 31905, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */ + { 31940, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */ + { 31972, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */ + { 32003, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */ + { 32038, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */ + { 32070, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */ + { 32106, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */ + { 32135, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */ + { 32168, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */ + { 32198, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */ + { 32232, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ + { 32271, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ + { 32304, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ + { 32344, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ + { 32378, 0x00008578 }, /* GL_PREVIOUS */ + { 32390, 0x00008578 }, /* GL_PREVIOUS_ARB */ + { 32406, 0x00008578 }, /* GL_PREVIOUS_EXT */ + { 32422, 0x00008577 }, /* GL_PRIMARY_COLOR */ + { 32439, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */ + { 32460, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */ + { 32481, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED */ + { 32505, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */ + { 32533, 0x00008F9D }, /* GL_PRIMITIVE_RESTART */ + { 32554, 0x00008F9E }, /* GL_PRIMITIVE_RESTART_INDEX */ + { 32581, 0x00008559 }, /* GL_PRIMITIVE_RESTART_INDEX_NV */ + { 32611, 0x00008558 }, /* GL_PRIMITIVE_RESTART_NV */ + { 32635, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ + { 32668, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ + { 32700, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */ + { 32723, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS_OES */ + { 32753, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH_OES */ + { 32782, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */ + { 32805, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */ + { 32835, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */ + { 32864, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */ + { 32892, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */ + { 32914, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */ + { 32942, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */ + { 32970, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */ + { 32992, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */ + { 33013, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + { 33053, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + { 33092, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ + { 33122, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + { 33157, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ + { 33190, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ + { 33224, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + { 33263, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + { 33302, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */ + { 33324, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */ + { 33350, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */ + { 33374, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE */ + { 33396, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE_ARB */ + { 33422, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */ + { 33445, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */ + { 33467, 0x00008628 }, /* GL_PROGRAM_STRING_NV */ + { 33488, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */ + { 33509, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */ + { 33536, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ + { 33568, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ + { 33600, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ + { 33635, 0x00001701 }, /* GL_PROJECTION */ + { 33649, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */ + { 33670, 0x0000898E }, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ + { 33713, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */ + { 33739, 0x00008E4F }, /* GL_PROVOKING_VERTEX */ + { 33759, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */ + { 33783, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */ + { 33804, 0x00008025 }, /* GL_PROXY_HISTOGRAM */ + { 33823, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */ + { 33846, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ + { 33885, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ + { 33923, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */ + { 33943, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY */ + { 33969, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */ + { 33999, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */ + { 34023, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */ + { 34043, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY */ + { 34069, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */ + { 34099, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */ + { 34123, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */ + { 34143, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ + { 34176, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */ + { 34202, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */ + { 34232, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE */ + { 34259, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */ + { 34290, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */ + { 34320, 0x00008A1D }, /* GL_PURGEABLE_APPLE */ + { 34339, 0x00002003 }, /* GL_Q */ + { 34344, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */ + { 34369, 0x00000007 }, /* GL_QUADS */ + { 34378, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ + { 34422, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */ + { 34470, 0x00008614 }, /* GL_QUAD_MESH_SUN */ + { 34487, 0x00000008 }, /* GL_QUAD_STRIP */ + { 34501, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT */ + { 34528, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */ + { 34558, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT */ + { 34582, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */ + { 34609, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */ + { 34631, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */ + { 34657, 0x00008E14 }, /* GL_QUERY_NO_WAIT */ + { 34674, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */ + { 34694, 0x00008866 }, /* GL_QUERY_RESULT */ + { 34710, 0x00008866 }, /* GL_QUERY_RESULT_ARB */ + { 34730, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */ + { 34756, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */ + { 34786, 0x00008E13 }, /* GL_QUERY_WAIT */ + { 34800, 0x00008E13 }, /* GL_QUERY_WAIT_NV */ + { 34817, 0x00002002 }, /* GL_R */ + { 34822, 0x00008C3A }, /* GL_R11F_G11F_B10F */ + { 34840, 0x00008F98 }, /* GL_R16_SNORM */ + { 34853, 0x00002A10 }, /* GL_R3_G3_B2 */ + { 34865, 0x00008F94 }, /* GL_R8_SNORM */ + { 34877, 0x00008C89 }, /* GL_RASTERIZER_DISCARD */ + { 34899, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */ + { 34925, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ + { 34958, 0x00000C02 }, /* GL_READ_BUFFER */ + { 34973, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */ + { 34993, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */ + { 35021, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */ + { 35053, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */ + { 35077, 0x000088B8 }, /* GL_READ_ONLY */ + { 35090, 0x000088B8 }, /* GL_READ_ONLY_ARB */ + { 35107, 0x000088BA }, /* GL_READ_WRITE */ + { 35121, 0x000088BA }, /* GL_READ_WRITE_ARB */ + { 35139, 0x00001903 }, /* GL_RED */ + { 35146, 0x00008016 }, /* GL_REDUCE */ + { 35156, 0x00008016 }, /* GL_REDUCE_EXT */ + { 35170, 0x00000D15 }, /* GL_RED_BIAS */ + { 35182, 0x00000D52 }, /* GL_RED_BITS */ + { 35194, 0x00008D94 }, /* GL_RED_INTEGER */ + { 35209, 0x00008D94 }, /* GL_RED_INTEGER_EXT */ + { 35228, 0x00000D14 }, /* GL_RED_SCALE */ + { 35241, 0x00008F90 }, /* GL_RED_SNORM */ + { 35254, 0x00008512 }, /* GL_REFLECTION_MAP */ + { 35272, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */ + { 35294, 0x00008512 }, /* GL_REFLECTION_MAP_NV */ + { 35315, 0x00008512 }, /* GL_REFLECTION_MAP_OES */ + { 35337, 0x00008A19 }, /* GL_RELEASED_APPLE */ + { 35355, 0x00001C00 }, /* GL_RENDER */ + { 35365, 0x00008D41 }, /* GL_RENDERBUFFER */ + { 35381, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */ + { 35408, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE_OES */ + { 35439, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */ + { 35463, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */ + { 35491, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_OES */ + { 35519, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */ + { 35545, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE_OES */ + { 35575, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */ + { 35602, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE_OES */ + { 35633, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */ + { 35653, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */ + { 35680, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE_OES */ + { 35711, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */ + { 35734, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */ + { 35761, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_OES */ + { 35788, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ + { 35820, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */ + { 35856, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_OES */ + { 35892, 0x00008D41 }, /* GL_RENDERBUFFER_OES */ + { 35912, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */ + { 35937, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE_OES */ + { 35966, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */ + { 35990, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */ + { 36018, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */ + { 36047, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE_OES */ + { 36080, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */ + { 36102, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */ + { 36128, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_OES */ + { 36154, 0x00001F01 }, /* GL_RENDERER */ + { 36166, 0x00000C40 }, /* GL_RENDER_MODE */ + { 36181, 0x00002901 }, /* GL_REPEAT */ + { 36191, 0x00001E01 }, /* GL_REPLACE */ + { 36202, 0x00008062 }, /* GL_REPLACE_EXT */ + { 36217, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */ + { 36240, 0x0000803A }, /* GL_RESCALE_NORMAL */ + { 36258, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */ + { 36280, 0x00008A1B }, /* GL_RETAINED_APPLE */ + { 36298, 0x00000102 }, /* GL_RETURN */ + { 36308, 0x00008F99 }, /* GL_RG16_SNORM */ + { 36322, 0x00008F95 }, /* GL_RG8_SNORM */ + { 36335, 0x00001907 }, /* GL_RGB */ + { 36342, 0x00008052 }, /* GL_RGB10 */ + { 36351, 0x00008059 }, /* GL_RGB10_A2 */ + { 36363, 0x00008059 }, /* GL_RGB10_A2_EXT */ + { 36379, 0x00008052 }, /* GL_RGB10_EXT */ + { 36392, 0x00008053 }, /* GL_RGB12 */ + { 36401, 0x00008053 }, /* GL_RGB12_EXT */ + { 36414, 0x00008054 }, /* GL_RGB16 */ + { 36423, 0x0000881B }, /* GL_RGB16F */ + { 36433, 0x00008D89 }, /* GL_RGB16I */ + { 36443, 0x00008D89 }, /* GL_RGB16I_EXT */ + { 36457, 0x00008D77 }, /* GL_RGB16UI */ + { 36468, 0x00008D77 }, /* GL_RGB16UI_EXT */ + { 36483, 0x00008054 }, /* GL_RGB16_EXT */ + { 36496, 0x00008F9A }, /* GL_RGB16_SNORM */ + { 36511, 0x0000804E }, /* GL_RGB2_EXT */ + { 36523, 0x00008815 }, /* GL_RGB32F */ + { 36533, 0x00008D83 }, /* GL_RGB32I */ + { 36543, 0x00008D83 }, /* GL_RGB32I_EXT */ + { 36557, 0x00008D71 }, /* GL_RGB32UI */ + { 36568, 0x00008D71 }, /* GL_RGB32UI_EXT */ + { 36583, 0x0000804F }, /* GL_RGB4 */ + { 36591, 0x0000804F }, /* GL_RGB4_EXT */ + { 36603, 0x000083A1 }, /* GL_RGB4_S3TC */ + { 36616, 0x00008050 }, /* GL_RGB5 */ + { 36624, 0x00008D62 }, /* GL_RGB565 */ + { 36634, 0x00008D62 }, /* GL_RGB565_OES */ + { 36648, 0x00008057 }, /* GL_RGB5_A1 */ + { 36659, 0x00008057 }, /* GL_RGB5_A1_EXT */ + { 36674, 0x00008057 }, /* GL_RGB5_A1_OES */ + { 36689, 0x00008050 }, /* GL_RGB5_EXT */ + { 36701, 0x00008051 }, /* GL_RGB8 */ + { 36709, 0x00008D8F }, /* GL_RGB8I */ + { 36718, 0x00008D8F }, /* GL_RGB8I_EXT */ + { 36731, 0x00008D7D }, /* GL_RGB8UI */ + { 36741, 0x00008D7D }, /* GL_RGB8UI_EXT */ + { 36755, 0x00008051 }, /* GL_RGB8_EXT */ + { 36767, 0x00008051 }, /* GL_RGB8_OES */ + { 36779, 0x00008F96 }, /* GL_RGB8_SNORM */ + { 36793, 0x00008C3D }, /* GL_RGB9_E5 */ + { 36804, 0x00001908 }, /* GL_RGBA */ + { 36812, 0x0000805A }, /* GL_RGBA12 */ + { 36822, 0x0000805A }, /* GL_RGBA12_EXT */ + { 36836, 0x0000805B }, /* GL_RGBA16 */ + { 36846, 0x0000881A }, /* GL_RGBA16F */ + { 36857, 0x00008D88 }, /* GL_RGBA16I */ + { 36868, 0x00008D88 }, /* GL_RGBA16I_EXT */ + { 36883, 0x00008D76 }, /* GL_RGBA16UI */ + { 36895, 0x00008D76 }, /* GL_RGBA16UI_EXT */ + { 36911, 0x0000805B }, /* GL_RGBA16_EXT */ + { 36925, 0x00008F9B }, /* GL_RGBA16_SNORM */ + { 36941, 0x00008055 }, /* GL_RGBA2 */ + { 36950, 0x00008055 }, /* GL_RGBA2_EXT */ + { 36963, 0x00008814 }, /* GL_RGBA32F */ + { 36974, 0x00008D82 }, /* GL_RGBA32I */ + { 36985, 0x00008D82 }, /* GL_RGBA32I_EXT */ + { 37000, 0x00008D70 }, /* GL_RGBA32UI */ + { 37012, 0x00008D70 }, /* GL_RGBA32UI_EXT */ + { 37028, 0x00008056 }, /* GL_RGBA4 */ + { 37037, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */ + { 37056, 0x00008056 }, /* GL_RGBA4_EXT */ + { 37069, 0x00008056 }, /* GL_RGBA4_OES */ + { 37082, 0x000083A3 }, /* GL_RGBA4_S3TC */ + { 37096, 0x00008058 }, /* GL_RGBA8 */ + { 37105, 0x00008D8E }, /* GL_RGBA8I */ + { 37115, 0x00008D8E }, /* GL_RGBA8I_EXT */ + { 37129, 0x00008D7C }, /* GL_RGBA8UI */ + { 37140, 0x00008D7C }, /* GL_RGBA8UI_EXT */ + { 37155, 0x00008058 }, /* GL_RGBA8_EXT */ + { 37168, 0x00008058 }, /* GL_RGBA8_OES */ + { 37181, 0x00008F97 }, /* GL_RGBA8_SNORM */ + { 37196, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */ + { 37214, 0x00008820 }, /* GL_RGBA_FLOAT_MODE_ARB */ + { 37237, 0x00008D99 }, /* GL_RGBA_INTEGER */ + { 37253, 0x00008D99 }, /* GL_RGBA_INTEGER_EXT */ + { 37273, 0x00008D9E }, /* GL_RGBA_INTEGER_MODE_EXT */ + { 37298, 0x00000C31 }, /* GL_RGBA_MODE */ + { 37311, 0x000083A2 }, /* GL_RGBA_S3TC */ + { 37324, 0x00008F93 }, /* GL_RGBA_SNORM */ + { 37338, 0x00008D98 }, /* GL_RGB_INTEGER */ + { 37353, 0x00008D98 }, /* GL_RGB_INTEGER_EXT */ + { 37372, 0x000083A0 }, /* GL_RGB_S3TC */ + { 37384, 0x00008573 }, /* GL_RGB_SCALE */ + { 37397, 0x00008573 }, /* GL_RGB_SCALE_ARB */ + { 37414, 0x00008573 }, /* GL_RGB_SCALE_EXT */ + { 37431, 0x00008F92 }, /* GL_RGB_SNORM */ + { 37444, 0x00008F91 }, /* GL_RG_SNORM */ + { 37456, 0x00000407 }, /* GL_RIGHT */ + { 37465, 0x00002000 }, /* GL_S */ + { 37470, 0x00008B5D }, /* GL_SAMPLER_1D */ + { 37484, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY */ + { 37504, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY_EXT */ + { 37528, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW */ + { 37555, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW_EXT */ + { 37586, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */ + { 37607, 0x00008B5E }, /* GL_SAMPLER_2D */ + { 37621, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY */ + { 37641, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY_EXT */ + { 37665, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW */ + { 37692, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW_EXT */ + { 37723, 0x00008B63 }, /* GL_SAMPLER_2D_RECT */ + { 37742, 0x00008B64 }, /* GL_SAMPLER_2D_RECT_SHADOW */ + { 37768, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */ + { 37789, 0x00008B5F }, /* GL_SAMPLER_3D */ + { 37803, 0x00008B5F }, /* GL_SAMPLER_3D_OES */ + { 37821, 0x00008919 }, /* GL_SAMPLER_BINDING */ + { 37840, 0x00008DC2 }, /* GL_SAMPLER_BUFFER */ + { 37858, 0x00008DC2 }, /* GL_SAMPLER_BUFFER_EXT */ + { 37880, 0x00008B60 }, /* GL_SAMPLER_CUBE */ + { 37896, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW */ + { 37919, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW_EXT */ + { 37946, 0x000080A9 }, /* GL_SAMPLES */ + { 37957, 0x000086B4 }, /* GL_SAMPLES_3DFX */ + { 37973, 0x000080A9 }, /* GL_SAMPLES_ARB */ + { 37988, 0x00008914 }, /* GL_SAMPLES_PASSED */ + { 38006, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */ + { 38028, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ + { 38056, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */ + { 38088, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */ + { 38111, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */ + { 38138, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */ + { 38156, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */ + { 38179, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */ + { 38201, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */ + { 38220, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */ + { 38243, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */ + { 38269, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */ + { 38299, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */ + { 38324, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */ + { 38353, 0x00080000 }, /* GL_SCISSOR_BIT */ + { 38368, 0x00000C10 }, /* GL_SCISSOR_BOX */ + { 38383, 0x00000C11 }, /* GL_SCISSOR_TEST */ + { 38399, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */ + { 38424, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ + { 38464, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */ + { 38508, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ + { 38541, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ + { 38571, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ + { 38603, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ + { 38633, 0x00001C02 }, /* GL_SELECT */ + { 38643, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */ + { 38671, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */ + { 38696, 0x00008012 }, /* GL_SEPARABLE_2D */ + { 38712, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS */ + { 38732, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */ + { 38756, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */ + { 38783, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */ + { 38814, 0x0000150F }, /* GL_SET */ + { 38821, 0x00008DF8 }, /* GL_SHADER_BINARY_FORMATS */ + { 38846, 0x00008DFA }, /* GL_SHADER_COMPILER */ + { 38865, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */ + { 38886, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */ + { 38910, 0x00008B4F }, /* GL_SHADER_TYPE */ + { 38925, 0x00000B54 }, /* GL_SHADE_MODEL */ + { 38940, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */ + { 38968, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */ + { 38991, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */ + { 39021, 0x00001601 }, /* GL_SHININESS */ + { 39034, 0x00001402 }, /* GL_SHORT */ + { 39043, 0x00009119 }, /* GL_SIGNALED */ + { 39055, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */ + { 39076, 0x000081F9 }, /* GL_SINGLE_COLOR */ + { 39092, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */ + { 39112, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */ + { 39131, 0x00008C46 }, /* GL_SLUMINANCE */ + { 39145, 0x00008C47 }, /* GL_SLUMINANCE8 */ + { 39160, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */ + { 39182, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */ + { 39202, 0x00001D01 }, /* GL_SMOOTH */ + { 39212, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */ + { 39245, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */ + { 39272, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */ + { 39305, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */ + { 39332, 0x00008588 }, /* GL_SOURCE0_ALPHA */ + { 39349, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */ + { 39370, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */ + { 39391, 0x00008580 }, /* GL_SOURCE0_RGB */ + { 39406, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */ + { 39425, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */ + { 39444, 0x00008589 }, /* GL_SOURCE1_ALPHA */ + { 39461, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */ + { 39482, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */ + { 39503, 0x00008581 }, /* GL_SOURCE1_RGB */ + { 39518, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */ + { 39537, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */ + { 39556, 0x0000858A }, /* GL_SOURCE2_ALPHA */ + { 39573, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */ + { 39594, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */ + { 39615, 0x00008582 }, /* GL_SOURCE2_RGB */ + { 39630, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */ + { 39649, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */ + { 39668, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */ + { 39688, 0x00008583 }, /* GL_SOURCE3_RGB_NV */ + { 39706, 0x00001202 }, /* GL_SPECULAR */ + { 39718, 0x00002402 }, /* GL_SPHERE_MAP */ + { 39732, 0x00001206 }, /* GL_SPOT_CUTOFF */ + { 39747, 0x00001204 }, /* GL_SPOT_DIRECTION */ + { 39765, 0x00001205 }, /* GL_SPOT_EXPONENT */ + { 39782, 0x00008588 }, /* GL_SRC0_ALPHA */ + { 39796, 0x00008580 }, /* GL_SRC0_RGB */ + { 39808, 0x00008589 }, /* GL_SRC1_ALPHA */ + { 39822, 0x00008581 }, /* GL_SRC1_RGB */ + { 39834, 0x0000858A }, /* GL_SRC2_ALPHA */ + { 39848, 0x00008582 }, /* GL_SRC2_RGB */ + { 39860, 0x00000302 }, /* GL_SRC_ALPHA */ + { 39873, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */ + { 39895, 0x00000300 }, /* GL_SRC_COLOR */ + { 39908, 0x00008C40 }, /* GL_SRGB */ + { 39916, 0x00008C41 }, /* GL_SRGB8 */ + { 39925, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */ + { 39941, 0x00008C42 }, /* GL_SRGB_ALPHA */ + { 39955, 0x00000503 }, /* GL_STACK_OVERFLOW */ + { 39973, 0x00000504 }, /* GL_STACK_UNDERFLOW */ + { 39992, 0x000088E6 }, /* GL_STATIC_COPY */ + { 40007, 0x000088E6 }, /* GL_STATIC_COPY_ARB */ + { 40026, 0x000088E4 }, /* GL_STATIC_DRAW */ + { 40041, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */ + { 40060, 0x000088E5 }, /* GL_STATIC_READ */ + { 40075, 0x000088E5 }, /* GL_STATIC_READ_ARB */ + { 40094, 0x00001802 }, /* GL_STENCIL */ + { 40105, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */ + { 40127, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */ + { 40153, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_OES */ + { 40179, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */ + { 40200, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */ + { 40225, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */ + { 40246, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */ + { 40271, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ + { 40303, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */ + { 40339, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ + { 40371, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */ + { 40407, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */ + { 40427, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */ + { 40454, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */ + { 40480, 0x00000D57 }, /* GL_STENCIL_BITS */ + { 40496, 0x00008224 }, /* GL_STENCIL_BUFFER */ + { 40514, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */ + { 40536, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */ + { 40559, 0x00000B94 }, /* GL_STENCIL_FAIL */ + { 40575, 0x00000B92 }, /* GL_STENCIL_FUNC */ + { 40591, 0x00001901 }, /* GL_STENCIL_INDEX */ + { 40608, 0x00008D46 }, /* GL_STENCIL_INDEX1 */ + { 40626, 0x00008D49 }, /* GL_STENCIL_INDEX16 */ + { 40645, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */ + { 40668, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */ + { 40690, 0x00008D46 }, /* GL_STENCIL_INDEX1_OES */ + { 40712, 0x00008D47 }, /* GL_STENCIL_INDEX4 */ + { 40730, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */ + { 40752, 0x00008D47 }, /* GL_STENCIL_INDEX4_OES */ + { 40774, 0x00008D48 }, /* GL_STENCIL_INDEX8 */ + { 40792, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */ + { 40814, 0x00008D48 }, /* GL_STENCIL_INDEX8_OES */ + { 40836, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */ + { 40857, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */ + { 40884, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */ + { 40911, 0x00000B97 }, /* GL_STENCIL_REF */ + { 40926, 0x00000B90 }, /* GL_STENCIL_TEST */ + { 40942, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ + { 40971, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */ + { 40993, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */ + { 41014, 0x00000C33 }, /* GL_STEREO */ + { 41024, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */ + { 41048, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */ + { 41073, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */ + { 41097, 0x000088E2 }, /* GL_STREAM_COPY */ + { 41112, 0x000088E2 }, /* GL_STREAM_COPY_ARB */ + { 41131, 0x000088E0 }, /* GL_STREAM_DRAW */ + { 41146, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */ + { 41165, 0x000088E1 }, /* GL_STREAM_READ */ + { 41180, 0x000088E1 }, /* GL_STREAM_READ_ARB */ + { 41199, 0x00000D50 }, /* GL_SUBPIXEL_BITS */ + { 41216, 0x000084E7 }, /* GL_SUBTRACT */ + { 41228, 0x000084E7 }, /* GL_SUBTRACT_ARB */ + { 41244, 0x00009113 }, /* GL_SYNC_CONDITION */ + { 41262, 0x00009116 }, /* GL_SYNC_FENCE */ + { 41276, 0x00009115 }, /* GL_SYNC_FLAGS */ + { 41290, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */ + { 41317, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ + { 41347, 0x00009114 }, /* GL_SYNC_STATUS */ + { 41362, 0x00002001 }, /* GL_T */ + { 41367, 0x00002A2A }, /* GL_T2F_C3F_V3F */ + { 41382, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */ + { 41401, 0x00002A29 }, /* GL_T2F_C4UB_V3F */ + { 41417, 0x00002A2B }, /* GL_T2F_N3F_V3F */ + { 41432, 0x00002A27 }, /* GL_T2F_V3F */ + { 41443, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */ + { 41462, 0x00002A28 }, /* GL_T4F_V4F */ + { 41473, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */ + { 41496, 0x00001702 }, /* GL_TEXTURE */ + { 41507, 0x000084C0 }, /* GL_TEXTURE0 */ + { 41519, 0x000084C0 }, /* GL_TEXTURE0_ARB */ + { 41535, 0x000084C1 }, /* GL_TEXTURE1 */ + { 41547, 0x000084CA }, /* GL_TEXTURE10 */ + { 41560, 0x000084CA }, /* GL_TEXTURE10_ARB */ + { 41577, 0x000084CB }, /* GL_TEXTURE11 */ + { 41590, 0x000084CB }, /* GL_TEXTURE11_ARB */ + { 41607, 0x000084CC }, /* GL_TEXTURE12 */ + { 41620, 0x000084CC }, /* GL_TEXTURE12_ARB */ + { 41637, 0x000084CD }, /* GL_TEXTURE13 */ + { 41650, 0x000084CD }, /* GL_TEXTURE13_ARB */ + { 41667, 0x000084CE }, /* GL_TEXTURE14 */ + { 41680, 0x000084CE }, /* GL_TEXTURE14_ARB */ + { 41697, 0x000084CF }, /* GL_TEXTURE15 */ + { 41710, 0x000084CF }, /* GL_TEXTURE15_ARB */ + { 41727, 0x000084D0 }, /* GL_TEXTURE16 */ + { 41740, 0x000084D0 }, /* GL_TEXTURE16_ARB */ + { 41757, 0x000084D1 }, /* GL_TEXTURE17 */ + { 41770, 0x000084D1 }, /* GL_TEXTURE17_ARB */ + { 41787, 0x000084D2 }, /* GL_TEXTURE18 */ + { 41800, 0x000084D2 }, /* GL_TEXTURE18_ARB */ + { 41817, 0x000084D3 }, /* GL_TEXTURE19 */ + { 41830, 0x000084D3 }, /* GL_TEXTURE19_ARB */ + { 41847, 0x000084C1 }, /* GL_TEXTURE1_ARB */ + { 41863, 0x000084C2 }, /* GL_TEXTURE2 */ + { 41875, 0x000084D4 }, /* GL_TEXTURE20 */ + { 41888, 0x000084D4 }, /* GL_TEXTURE20_ARB */ + { 41905, 0x000084D5 }, /* GL_TEXTURE21 */ + { 41918, 0x000084D5 }, /* GL_TEXTURE21_ARB */ + { 41935, 0x000084D6 }, /* GL_TEXTURE22 */ + { 41948, 0x000084D6 }, /* GL_TEXTURE22_ARB */ + { 41965, 0x000084D7 }, /* GL_TEXTURE23 */ + { 41978, 0x000084D7 }, /* GL_TEXTURE23_ARB */ + { 41995, 0x000084D8 }, /* GL_TEXTURE24 */ + { 42008, 0x000084D8 }, /* GL_TEXTURE24_ARB */ + { 42025, 0x000084D9 }, /* GL_TEXTURE25 */ + { 42038, 0x000084D9 }, /* GL_TEXTURE25_ARB */ + { 42055, 0x000084DA }, /* GL_TEXTURE26 */ + { 42068, 0x000084DA }, /* GL_TEXTURE26_ARB */ + { 42085, 0x000084DB }, /* GL_TEXTURE27 */ + { 42098, 0x000084DB }, /* GL_TEXTURE27_ARB */ + { 42115, 0x000084DC }, /* GL_TEXTURE28 */ + { 42128, 0x000084DC }, /* GL_TEXTURE28_ARB */ + { 42145, 0x000084DD }, /* GL_TEXTURE29 */ + { 42158, 0x000084DD }, /* GL_TEXTURE29_ARB */ + { 42175, 0x000084C2 }, /* GL_TEXTURE2_ARB */ + { 42191, 0x000084C3 }, /* GL_TEXTURE3 */ + { 42203, 0x000084DE }, /* GL_TEXTURE30 */ + { 42216, 0x000084DE }, /* GL_TEXTURE30_ARB */ + { 42233, 0x000084DF }, /* GL_TEXTURE31 */ + { 42246, 0x000084DF }, /* GL_TEXTURE31_ARB */ + { 42263, 0x000084C3 }, /* GL_TEXTURE3_ARB */ + { 42279, 0x000084C4 }, /* GL_TEXTURE4 */ + { 42291, 0x000084C4 }, /* GL_TEXTURE4_ARB */ + { 42307, 0x000084C5 }, /* GL_TEXTURE5 */ + { 42319, 0x000084C5 }, /* GL_TEXTURE5_ARB */ + { 42335, 0x000084C6 }, /* GL_TEXTURE6 */ + { 42347, 0x000084C6 }, /* GL_TEXTURE6_ARB */ + { 42363, 0x000084C7 }, /* GL_TEXTURE7 */ + { 42375, 0x000084C7 }, /* GL_TEXTURE7_ARB */ + { 42391, 0x000084C8 }, /* GL_TEXTURE8 */ + { 42403, 0x000084C8 }, /* GL_TEXTURE8_ARB */ + { 42419, 0x000084C9 }, /* GL_TEXTURE9 */ + { 42431, 0x000084C9 }, /* GL_TEXTURE9_ARB */ + { 42447, 0x00000DE0 }, /* GL_TEXTURE_1D */ + { 42461, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY */ + { 42481, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */ + { 42505, 0x00000DE1 }, /* GL_TEXTURE_2D */ + { 42519, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY */ + { 42539, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */ + { 42563, 0x0000806F }, /* GL_TEXTURE_3D */ + { 42577, 0x0000806F }, /* GL_TEXTURE_3D_OES */ + { 42595, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */ + { 42617, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */ + { 42643, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */ + { 42665, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */ + { 42687, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY */ + { 42715, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */ + { 42747, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */ + { 42769, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY */ + { 42797, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */ + { 42829, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */ + { 42851, 0x0000806A }, /* GL_TEXTURE_BINDING_3D_OES */ + { 42877, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER */ + { 42903, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER_ARB */ + { 42933, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */ + { 42961, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */ + { 42993, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_OES */ + { 43025, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE */ + { 43054, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */ + { 43087, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */ + { 43119, 0x00040000 }, /* GL_TEXTURE_BIT */ + { 43134, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */ + { 43155, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */ + { 43180, 0x00001005 }, /* GL_TEXTURE_BORDER */ + { 43198, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */ + { 43222, 0x00008C2A }, /* GL_TEXTURE_BUFFER */ + { 43240, 0x00008C2A }, /* GL_TEXTURE_BUFFER_ARB */ + { 43262, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */ + { 43299, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB */ + { 43340, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT */ + { 43365, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT_ARB */ + { 43394, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ + { 43425, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ + { 43455, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ + { 43485, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ + { 43520, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ + { 43551, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + { 43589, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */ + { 43616, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ + { 43648, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ + { 43682, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */ + { 43706, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */ + { 43734, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */ + { 43758, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */ + { 43786, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ + { 43819, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */ + { 43843, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */ + { 43865, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */ + { 43887, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */ + { 43913, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */ + { 43947, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ + { 43980, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */ + { 44017, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */ + { 44045, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */ + { 44077, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */ + { 44100, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ + { 44138, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */ + { 44180, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */ + { 44211, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */ + { 44239, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ + { 44269, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */ + { 44297, 0x00008B9D }, /* GL_TEXTURE_CROP_RECT_OES */ + { 44322, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */ + { 44342, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */ + { 44366, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ + { 44397, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */ + { 44432, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES */ + { 44467, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ + { 44498, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */ + { 44533, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES */ + { 44568, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ + { 44599, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */ + { 44634, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES */ + { 44669, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_OES */ + { 44693, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ + { 44724, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */ + { 44759, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES */ + { 44794, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ + { 44825, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */ + { 44860, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES */ + { 44895, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ + { 44926, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */ + { 44961, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES */ + { 44996, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ + { 45025, 0x00008071 }, /* GL_TEXTURE_DEPTH */ + { 45042, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */ + { 45064, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */ + { 45090, 0x00002300 }, /* GL_TEXTURE_ENV */ + { 45105, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */ + { 45126, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */ + { 45146, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */ + { 45172, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL_EXT */ + { 45202, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */ + { 45222, 0x00002500 }, /* GL_TEXTURE_GEN_MODE_OES */ + { 45246, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */ + { 45263, 0x00000C62 }, /* GL_TEXTURE_GEN_R */ + { 45280, 0x00000C60 }, /* GL_TEXTURE_GEN_S */ + { 45297, 0x00008D60 }, /* GL_TEXTURE_GEN_STR_OES */ + { 45320, 0x00000C61 }, /* GL_TEXTURE_GEN_T */ + { 45337, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */ + { 45362, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */ + { 45384, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */ + { 45410, 0x00001001 }, /* GL_TEXTURE_HEIGHT */ + { 45428, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */ + { 45454, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */ + { 45480, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */ + { 45510, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */ + { 45537, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */ + { 45562, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */ + { 45582, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */ + { 45606, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ + { 45633, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ + { 45660, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ + { 45687, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */ + { 45713, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */ + { 45743, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */ + { 45765, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */ + { 45783, 0x0000898F }, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ + { 45823, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ + { 45853, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ + { 45881, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ + { 45909, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ + { 45937, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */ + { 45958, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */ + { 45977, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */ + { 45999, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */ + { 46018, 0x00008066 }, /* GL_TEXTURE_PRIORITY */ + { 46038, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ + { 46068, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */ + { 46099, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE */ + { 46120, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */ + { 46145, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */ + { 46169, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */ + { 46189, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */ + { 46213, 0x00008067 }, /* GL_TEXTURE_RESIDENT */ + { 46233, 0x00008C3F }, /* GL_TEXTURE_SHARED_SIZE */ + { 46256, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */ + { 46279, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */ + { 46303, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */ + { 46331, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */ + { 46361, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */ + { 46386, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ + { 46420, 0x00001000 }, /* GL_TEXTURE_WIDTH */ + { 46437, 0x00008072 }, /* GL_TEXTURE_WRAP_R */ + { 46455, 0x00008072 }, /* GL_TEXTURE_WRAP_R_OES */ + { 46477, 0x00002802 }, /* GL_TEXTURE_WRAP_S */ + { 46495, 0x00002803 }, /* GL_TEXTURE_WRAP_T */ + { 46513, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */ + { 46532, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */ + { 46552, 0x00008648 }, /* GL_TRACK_MATRIX_NV */ + { 46571, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */ + { 46600, 0x00001000 }, /* GL_TRANSFORM_BIT */ + { 46617, 0x00008E22 }, /* GL_TRANSFORM_FEEDBACK */ + { 46639, 0x00008E25 }, /* GL_TRANSFORM_FEEDBACK_BINDING */ + { 46669, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER */ + { 46698, 0x00008E24 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ + { 46734, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */ + { 46771, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */ + { 46812, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */ + { 46845, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */ + { 46879, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */ + { 46917, 0x00008E23 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ + { 46953, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */ + { 46987, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */ + { 47025, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */ + { 47060, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */ + { 47099, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */ + { 47140, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */ + { 47185, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS */ + { 47216, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */ + { 47251, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */ + { 47292, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */ + { 47337, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */ + { 47363, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */ + { 47393, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ + { 47425, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ + { 47455, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */ + { 47489, 0x0000862C }, /* GL_TRANSPOSE_NV */ + { 47505, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */ + { 47536, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */ + { 47571, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */ + { 47599, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */ + { 47631, 0x00000004 }, /* GL_TRIANGLES */ + { 47644, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY */ + { 47667, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY_ARB */ + { 47694, 0x00000006 }, /* GL_TRIANGLE_FAN */ + { 47710, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */ + { 47731, 0x00000005 }, /* GL_TRIANGLE_STRIP */ + { 47749, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY */ + { 47777, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */ + { 47809, 0x00000001 }, /* GL_TRUE */ + { 47817, 0x00008A1C }, /* GL_UNDEFINED_APPLE */ + { 47836, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */ + { 47856, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */ + { 47879, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */ + { 47899, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */ + { 47920, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */ + { 47942, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */ + { 47964, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */ + { 47984, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */ + { 48005, 0x00009118 }, /* GL_UNSIGNALED */ + { 48019, 0x00001401 }, /* GL_UNSIGNED_BYTE */ + { 48036, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */ + { 48063, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */ + { 48086, 0x00001405 }, /* GL_UNSIGNED_INT */ + { 48102, 0x00008C3B }, /* GL_UNSIGNED_INT_10F_11F_11F_REV */ + { 48134, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */ + { 48161, 0x00008DF6 }, /* GL_UNSIGNED_INT_10_10_10_2_OES */ + { 48192, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */ + { 48213, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */ + { 48238, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */ + { 48262, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_OES */ + { 48287, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */ + { 48318, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV_EXT */ + { 48353, 0x00008C3E }, /* GL_UNSIGNED_INT_5_9_9_9_REV */ + { 48381, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */ + { 48405, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */ + { 48433, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D */ + { 48460, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */ + { 48493, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT */ + { 48530, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D_EXT */ + { 48561, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D */ + { 48588, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */ + { 48621, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT */ + { 48658, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D_EXT */ + { 48689, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */ + { 48721, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT */ + { 48757, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D */ + { 48784, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D_EXT */ + { 48815, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */ + { 48846, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT */ + { 48881, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE */ + { 48910, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE_EXT */ + { 48943, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2 */ + { 48964, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2_EXT */ + { 48989, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3 */ + { 49010, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3_EXT */ + { 49035, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4 */ + { 49056, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4_EXT */ + { 49081, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */ + { 49104, 0x00001403 }, /* GL_UNSIGNED_SHORT */ + { 49122, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ + { 49152, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT */ + { 49186, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */ + { 49212, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ + { 49242, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT */ + { 49276, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */ + { 49302, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */ + { 49326, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */ + { 49354, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */ + { 49382, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */ + { 49409, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ + { 49441, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */ + { 49472, 0x00008CA2 }, /* GL_UPPER_LEFT */ + { 49486, 0x00002A20 }, /* GL_V2F */ + { 49493, 0x00002A21 }, /* GL_V3F */ + { 49500, 0x00008B83 }, /* GL_VALIDATE_STATUS */ + { 49519, 0x00001F00 }, /* GL_VENDOR */ + { 49529, 0x00001F02 }, /* GL_VERSION */ + { 49540, 0x00008074 }, /* GL_VERTEX_ARRAY */ + { 49556, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */ + { 49580, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */ + { 49610, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ + { 49641, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */ + { 49676, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */ + { 49700, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */ + { 49721, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */ + { 49744, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */ + { 49765, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ + { 49792, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ + { 49820, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ + { 49848, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ + { 49876, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ + { 49904, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ + { 49932, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ + { 49960, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ + { 49987, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ + { 50014, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ + { 50041, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ + { 50068, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ + { 50095, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ + { 50122, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ + { 50149, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ + { 50176, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ + { 50203, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ + { 50241, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */ + { 50283, 0x000088FE }, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */ + { 50318, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ + { 50349, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */ + { 50384, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */ + { 50415, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT */ + { 50450, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ + { 50484, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */ + { 50522, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ + { 50553, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */ + { 50588, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ + { 50616, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */ + { 50648, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ + { 50678, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */ + { 50712, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ + { 50740, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */ + { 50772, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */ + { 50792, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */ + { 50814, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */ + { 50843, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */ + { 50864, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */ + { 50893, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */ + { 50926, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */ + { 50958, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */ + { 50985, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */ + { 51016, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */ + { 51046, 0x00008B31 }, /* GL_VERTEX_SHADER */ + { 51063, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */ + { 51084, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */ + { 51111, 0x00000BA2 }, /* GL_VIEWPORT */ + { 51123, 0x00000800 }, /* GL_VIEWPORT_BIT */ + { 51139, 0x00008A1A }, /* GL_VOLATILE_APPLE */ + { 51157, 0x0000911D }, /* GL_WAIT_FAILED */ + { 51172, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */ + { 51192, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ + { 51223, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */ + { 51258, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_OES */ + { 51293, 0x000086AD }, /* GL_WEIGHT_ARRAY_OES */ + { 51313, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */ + { 51341, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_OES */ + { 51369, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */ + { 51394, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_OES */ + { 51419, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ + { 51446, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_OES */ + { 51473, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */ + { 51498, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_OES */ + { 51523, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */ + { 51547, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */ + { 51566, 0x000088B9 }, /* GL_WRITE_ONLY */ + { 51580, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */ + { 51598, 0x000088B9 }, /* GL_WRITE_ONLY_OES */ + { 51616, 0x00001506 }, /* GL_XOR */ + { 51623, 0x000085B9 }, /* GL_YCBCR_422_APPLE */ + { 51642, 0x00008757 }, /* GL_YCBCR_MESA */ + { 51656, 0x00000000 }, /* GL_ZERO */ + { 51664, 0x00000D16 }, /* GL_ZOOM_X */ + { 51674, 0x00000D17 }, /* GL_ZOOM_Y */ }; -static const unsigned reduced_enums[1552] = +static const unsigned reduced_enums[1556] = { - 535, /* GL_FALSE */ - 827, /* GL_LINES */ - 831, /* GL_LINE_LOOP */ - 838, /* GL_LINE_STRIP */ - 2135, /* GL_TRIANGLES */ - 2140, /* GL_TRIANGLE_STRIP */ - 2138, /* GL_TRIANGLE_FAN */ - 1507, /* GL_QUADS */ - 1511, /* GL_QUAD_STRIP */ - 1378, /* GL_POLYGON */ - 828, /* GL_LINES_ADJACENCY */ - 839, /* GL_LINE_STRIP_ADJACENCY */ - 2136, /* GL_TRIANGLES_ADJACENCY */ - 2141, /* GL_TRIANGLE_STRIP_ADJACENCY */ - 1390, /* GL_POLYGON_STIPPLE_BIT */ - 1333, /* GL_PIXEL_MODE_BIT */ - 814, /* GL_LIGHTING_BIT */ - 568, /* GL_FOG_BIT */ + 538, /* GL_FALSE */ + 831, /* GL_LINES */ + 835, /* GL_LINE_LOOP */ + 842, /* GL_LINE_STRIP */ + 2146, /* GL_TRIANGLES */ + 2151, /* GL_TRIANGLE_STRIP */ + 2149, /* GL_TRIANGLE_FAN */ + 1512, /* GL_QUADS */ + 1516, /* GL_QUAD_STRIP */ + 1383, /* GL_POLYGON */ + 832, /* GL_LINES_ADJACENCY */ + 843, /* GL_LINE_STRIP_ADJACENCY */ + 2147, /* GL_TRIANGLES_ADJACENCY */ + 2152, /* GL_TRIANGLE_STRIP_ADJACENCY */ + 1395, /* GL_POLYGON_STIPPLE_BIT */ + 1338, /* GL_PIXEL_MODE_BIT */ + 818, /* GL_LIGHTING_BIT */ + 572, /* GL_FOG_BIT */ 8, /* GL_ACCUM */ - 850, /* GL_LOAD */ - 1596, /* GL_RETURN */ - 1200, /* GL_MULT */ + 854, /* GL_LOAD */ + 1601, /* GL_RETURN */ + 1205, /* GL_MULT */ 24, /* GL_ADD */ - 1216, /* GL_NEVER */ - 804, /* GL_LESS */ - 525, /* GL_EQUAL */ - 803, /* GL_LEQUAL */ - 691, /* GL_GREATER */ - 1233, /* GL_NOTEQUAL */ - 690, /* GL_GEQUAL */ + 1221, /* GL_NEVER */ + 808, /* GL_LESS */ + 528, /* GL_EQUAL */ + 807, /* GL_LEQUAL */ + 695, /* GL_GREATER */ + 1238, /* GL_NOTEQUAL */ + 694, /* GL_GEQUAL */ 55, /* GL_ALWAYS */ - 1803, /* GL_SRC_COLOR */ - 1266, /* GL_ONE_MINUS_SRC_COLOR */ - 1801, /* GL_SRC_ALPHA */ - 1265, /* GL_ONE_MINUS_SRC_ALPHA */ - 504, /* GL_DST_ALPHA */ - 1263, /* GL_ONE_MINUS_DST_ALPHA */ - 505, /* GL_DST_COLOR */ - 1264, /* GL_ONE_MINUS_DST_COLOR */ - 1802, /* GL_SRC_ALPHA_SATURATE */ - 667, /* GL_FRONT_LEFT */ - 668, /* GL_FRONT_RIGHT */ + 1810, /* GL_SRC_COLOR */ + 1271, /* GL_ONE_MINUS_SRC_COLOR */ + 1808, /* GL_SRC_ALPHA */ + 1270, /* GL_ONE_MINUS_SRC_ALPHA */ + 507, /* GL_DST_ALPHA */ + 1268, /* GL_ONE_MINUS_DST_ALPHA */ + 508, /* GL_DST_COLOR */ + 1269, /* GL_ONE_MINUS_DST_COLOR */ + 1809, /* GL_SRC_ALPHA_SATURATE */ + 671, /* GL_FRONT_LEFT */ + 672, /* GL_FRONT_RIGHT */ 77, /* GL_BACK_LEFT */ 78, /* GL_BACK_RIGHT */ - 664, /* GL_FRONT */ + 668, /* GL_FRONT */ 76, /* GL_BACK */ - 802, /* GL_LEFT */ - 1685, /* GL_RIGHT */ - 665, /* GL_FRONT_AND_BACK */ + 806, /* GL_LEFT */ + 1691, /* GL_RIGHT */ + 669, /* GL_FRONT_AND_BACK */ 71, /* GL_AUX0 */ 72, /* GL_AUX1 */ 73, /* GL_AUX2 */ 74, /* GL_AUX3 */ - 790, /* GL_INVALID_ENUM */ - 795, /* GL_INVALID_VALUE */ - 794, /* GL_INVALID_OPERATION */ - 1808, /* GL_STACK_OVERFLOW */ - 1809, /* GL_STACK_UNDERFLOW */ - 1291, /* GL_OUT_OF_MEMORY */ - 791, /* GL_INVALID_FRAMEBUFFER_OPERATION */ + 794, /* GL_INVALID_ENUM */ + 799, /* GL_INVALID_VALUE */ + 798, /* GL_INVALID_OPERATION */ + 1815, /* GL_STACK_OVERFLOW */ + 1816, /* GL_STACK_UNDERFLOW */ + 1296, /* GL_OUT_OF_MEMORY */ + 795, /* GL_INVALID_FRAMEBUFFER_OPERATION */ 0, /* GL_2D */ 2, /* GL_3D */ 3, /* GL_3D_COLOR */ 4, /* GL_3D_COLOR_TEXTURE */ 6, /* GL_4D_COLOR_TEXTURE */ - 1311, /* GL_PASS_THROUGH_TOKEN */ - 1377, /* GL_POINT_TOKEN */ - 841, /* GL_LINE_TOKEN */ - 1391, /* GL_POLYGON_TOKEN */ + 1316, /* GL_PASS_THROUGH_TOKEN */ + 1382, /* GL_POINT_TOKEN */ + 845, /* GL_LINE_TOKEN */ + 1396, /* GL_POLYGON_TOKEN */ 87, /* GL_BITMAP_TOKEN */ - 503, /* GL_DRAW_PIXEL_TOKEN */ - 349, /* GL_COPY_PIXEL_TOKEN */ - 832, /* GL_LINE_RESET_TOKEN */ - 528, /* GL_EXP */ - 529, /* GL_EXP2 */ - 386, /* GL_CW */ + 506, /* GL_DRAW_PIXEL_TOKEN */ + 352, /* GL_COPY_PIXEL_TOKEN */ + 836, /* GL_LINE_RESET_TOKEN */ + 531, /* GL_EXP */ + 532, /* GL_EXP2 */ + 389, /* GL_CW */ 154, /* GL_CCW */ - 184, /* GL_COEFF */ - 1288, /* GL_ORDER */ - 440, /* GL_DOMAIN */ - 359, /* GL_CURRENT_COLOR */ - 362, /* GL_CURRENT_INDEX */ - 368, /* GL_CURRENT_NORMAL */ - 382, /* GL_CURRENT_TEXTURE_COORDS */ - 374, /* GL_CURRENT_RASTER_COLOR */ - 376, /* GL_CURRENT_RASTER_INDEX */ - 380, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ - 377, /* GL_CURRENT_RASTER_POSITION */ - 378, /* GL_CURRENT_RASTER_POSITION_VALID */ - 375, /* GL_CURRENT_RASTER_DISTANCE */ - 1369, /* GL_POINT_SMOOTH */ - 1353, /* GL_POINT_SIZE */ - 1368, /* GL_POINT_SIZE_RANGE */ - 1359, /* GL_POINT_SIZE_GRANULARITY */ - 833, /* GL_LINE_SMOOTH */ - 842, /* GL_LINE_WIDTH */ - 844, /* GL_LINE_WIDTH_RANGE */ - 843, /* GL_LINE_WIDTH_GRANULARITY */ - 835, /* GL_LINE_STIPPLE */ - 836, /* GL_LINE_STIPPLE_PATTERN */ - 837, /* GL_LINE_STIPPLE_REPEAT */ - 849, /* GL_LIST_MODE */ - 1056, /* GL_MAX_LIST_NESTING */ - 846, /* GL_LIST_BASE */ - 848, /* GL_LIST_INDEX */ - 1380, /* GL_POLYGON_MODE */ - 1387, /* GL_POLYGON_SMOOTH */ - 1389, /* GL_POLYGON_STIPPLE */ - 514, /* GL_EDGE_FLAG */ - 352, /* GL_CULL_FACE */ - 353, /* GL_CULL_FACE_MODE */ - 666, /* GL_FRONT_FACE */ - 813, /* GL_LIGHTING */ - 818, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ - 819, /* GL_LIGHT_MODEL_TWO_SIDE */ - 815, /* GL_LIGHT_MODEL_AMBIENT */ - 1750, /* GL_SHADE_MODEL */ - 232, /* GL_COLOR_MATERIAL_FACE */ - 233, /* GL_COLOR_MATERIAL_PARAMETER */ - 231, /* GL_COLOR_MATERIAL */ - 567, /* GL_FOG */ - 589, /* GL_FOG_INDEX */ - 585, /* GL_FOG_DENSITY */ - 593, /* GL_FOG_START */ - 587, /* GL_FOG_END */ - 590, /* GL_FOG_MODE */ - 569, /* GL_FOG_COLOR */ - 425, /* GL_DEPTH_RANGE */ - 434, /* GL_DEPTH_TEST */ - 437, /* GL_DEPTH_WRITEMASK */ - 410, /* GL_DEPTH_CLEAR_VALUE */ - 424, /* GL_DEPTH_FUNC */ + 187, /* GL_COEFF */ + 1293, /* GL_ORDER */ + 443, /* GL_DOMAIN */ + 362, /* GL_CURRENT_COLOR */ + 365, /* GL_CURRENT_INDEX */ + 371, /* GL_CURRENT_NORMAL */ + 385, /* GL_CURRENT_TEXTURE_COORDS */ + 377, /* GL_CURRENT_RASTER_COLOR */ + 379, /* GL_CURRENT_RASTER_INDEX */ + 383, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ + 380, /* GL_CURRENT_RASTER_POSITION */ + 381, /* GL_CURRENT_RASTER_POSITION_VALID */ + 378, /* GL_CURRENT_RASTER_DISTANCE */ + 1374, /* GL_POINT_SMOOTH */ + 1358, /* GL_POINT_SIZE */ + 1373, /* GL_POINT_SIZE_RANGE */ + 1364, /* GL_POINT_SIZE_GRANULARITY */ + 837, /* GL_LINE_SMOOTH */ + 846, /* GL_LINE_WIDTH */ + 848, /* GL_LINE_WIDTH_RANGE */ + 847, /* GL_LINE_WIDTH_GRANULARITY */ + 839, /* GL_LINE_STIPPLE */ + 840, /* GL_LINE_STIPPLE_PATTERN */ + 841, /* GL_LINE_STIPPLE_REPEAT */ + 853, /* GL_LIST_MODE */ + 1060, /* GL_MAX_LIST_NESTING */ + 850, /* GL_LIST_BASE */ + 852, /* GL_LIST_INDEX */ + 1385, /* GL_POLYGON_MODE */ + 1392, /* GL_POLYGON_SMOOTH */ + 1394, /* GL_POLYGON_STIPPLE */ + 517, /* GL_EDGE_FLAG */ + 355, /* GL_CULL_FACE */ + 356, /* GL_CULL_FACE_MODE */ + 670, /* GL_FRONT_FACE */ + 817, /* GL_LIGHTING */ + 822, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ + 823, /* GL_LIGHT_MODEL_TWO_SIDE */ + 819, /* GL_LIGHT_MODEL_AMBIENT */ + 1757, /* GL_SHADE_MODEL */ + 235, /* GL_COLOR_MATERIAL_FACE */ + 236, /* GL_COLOR_MATERIAL_PARAMETER */ + 234, /* GL_COLOR_MATERIAL */ + 571, /* GL_FOG */ + 593, /* GL_FOG_INDEX */ + 589, /* GL_FOG_DENSITY */ + 597, /* GL_FOG_START */ + 591, /* GL_FOG_END */ + 594, /* GL_FOG_MODE */ + 573, /* GL_FOG_COLOR */ + 428, /* GL_DEPTH_RANGE */ + 437, /* GL_DEPTH_TEST */ + 440, /* GL_DEPTH_WRITEMASK */ + 413, /* GL_DEPTH_CLEAR_VALUE */ + 427, /* GL_DEPTH_FUNC */ 12, /* GL_ACCUM_CLEAR_VALUE */ - 1853, /* GL_STENCIL_TEST */ - 1834, /* GL_STENCIL_CLEAR_VALUE */ - 1836, /* GL_STENCIL_FUNC */ - 1855, /* GL_STENCIL_VALUE_MASK */ - 1835, /* GL_STENCIL_FAIL */ - 1850, /* GL_STENCIL_PASS_DEPTH_FAIL */ - 1851, /* GL_STENCIL_PASS_DEPTH_PASS */ - 1852, /* GL_STENCIL_REF */ - 1856, /* GL_STENCIL_WRITEMASK */ - 1006, /* GL_MATRIX_MODE */ - 1222, /* GL_NORMALIZE */ - 2267, /* GL_VIEWPORT */ - 1195, /* GL_MODELVIEW_STACK_DEPTH */ - 1481, /* GL_PROJECTION_STACK_DEPTH */ - 2089, /* GL_TEXTURE_STACK_DEPTH */ - 1192, /* GL_MODELVIEW_MATRIX */ - 1479, /* GL_PROJECTION_MATRIX */ - 2069, /* GL_TEXTURE_MATRIX */ + 1860, /* GL_STENCIL_TEST */ + 1841, /* GL_STENCIL_CLEAR_VALUE */ + 1843, /* GL_STENCIL_FUNC */ + 1862, /* GL_STENCIL_VALUE_MASK */ + 1842, /* GL_STENCIL_FAIL */ + 1857, /* GL_STENCIL_PASS_DEPTH_FAIL */ + 1858, /* GL_STENCIL_PASS_DEPTH_PASS */ + 1859, /* GL_STENCIL_REF */ + 1863, /* GL_STENCIL_WRITEMASK */ + 1010, /* GL_MATRIX_MODE */ + 1227, /* GL_NORMALIZE */ + 2278, /* GL_VIEWPORT */ + 1200, /* GL_MODELVIEW_STACK_DEPTH */ + 1486, /* GL_PROJECTION_STACK_DEPTH */ + 2100, /* GL_TEXTURE_STACK_DEPTH */ + 1197, /* GL_MODELVIEW_MATRIX */ + 1484, /* GL_PROJECTION_MATRIX */ + 2080, /* GL_TEXTURE_MATRIX */ 69, /* GL_ATTRIB_STACK_DEPTH */ - 166, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ + 169, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ 51, /* GL_ALPHA_TEST */ 52, /* GL_ALPHA_TEST_FUNC */ 53, /* GL_ALPHA_TEST_REF */ - 439, /* GL_DITHER */ + 442, /* GL_DITHER */ 91, /* GL_BLEND_DST */ 105, /* GL_BLEND_SRC */ 88, /* GL_BLEND */ - 852, /* GL_LOGIC_OP_MODE */ - 739, /* GL_INDEX_LOGIC_OP */ - 230, /* GL_COLOR_LOGIC_OP */ + 856, /* GL_LOGIC_OP_MODE */ + 743, /* GL_INDEX_LOGIC_OP */ + 233, /* GL_COLOR_LOGIC_OP */ 75, /* GL_AUX_BUFFERS */ - 450, /* GL_DRAW_BUFFER */ - 1534, /* GL_READ_BUFFER */ - 1727, /* GL_SCISSOR_BOX */ - 1728, /* GL_SCISSOR_TEST */ - 738, /* GL_INDEX_CLEAR_VALUE */ - 743, /* GL_INDEX_WRITEMASK */ - 227, /* GL_COLOR_CLEAR_VALUE */ - 269, /* GL_COLOR_WRITEMASK */ - 740, /* GL_INDEX_MODE */ - 1674, /* GL_RGBA_MODE */ - 449, /* GL_DOUBLEBUFFER */ - 1857, /* GL_STEREO */ - 1588, /* GL_RENDER_MODE */ - 1312, /* GL_PERSPECTIVE_CORRECTION_HINT */ - 1370, /* GL_POINT_SMOOTH_HINT */ - 834, /* GL_LINE_SMOOTH_HINT */ - 1388, /* GL_POLYGON_SMOOTH_HINT */ - 588, /* GL_FOG_HINT */ - 2049, /* GL_TEXTURE_GEN_S */ - 2051, /* GL_TEXTURE_GEN_T */ - 2048, /* GL_TEXTURE_GEN_R */ - 2047, /* GL_TEXTURE_GEN_Q */ - 1325, /* GL_PIXEL_MAP_I_TO_I */ - 1331, /* GL_PIXEL_MAP_S_TO_S */ - 1327, /* GL_PIXEL_MAP_I_TO_R */ - 1323, /* GL_PIXEL_MAP_I_TO_G */ - 1321, /* GL_PIXEL_MAP_I_TO_B */ - 1319, /* GL_PIXEL_MAP_I_TO_A */ - 1329, /* GL_PIXEL_MAP_R_TO_R */ - 1317, /* GL_PIXEL_MAP_G_TO_G */ - 1315, /* GL_PIXEL_MAP_B_TO_B */ - 1313, /* GL_PIXEL_MAP_A_TO_A */ - 1326, /* GL_PIXEL_MAP_I_TO_I_SIZE */ - 1332, /* GL_PIXEL_MAP_S_TO_S_SIZE */ - 1328, /* GL_PIXEL_MAP_I_TO_R_SIZE */ - 1324, /* GL_PIXEL_MAP_I_TO_G_SIZE */ - 1322, /* GL_PIXEL_MAP_I_TO_B_SIZE */ - 1320, /* GL_PIXEL_MAP_I_TO_A_SIZE */ - 1330, /* GL_PIXEL_MAP_R_TO_R_SIZE */ - 1318, /* GL_PIXEL_MAP_G_TO_G_SIZE */ - 1316, /* GL_PIXEL_MAP_B_TO_B_SIZE */ - 1314, /* GL_PIXEL_MAP_A_TO_A_SIZE */ - 2152, /* GL_UNPACK_SWAP_BYTES */ - 2147, /* GL_UNPACK_LSB_FIRST */ - 2148, /* GL_UNPACK_ROW_LENGTH */ - 2151, /* GL_UNPACK_SKIP_ROWS */ - 2150, /* GL_UNPACK_SKIP_PIXELS */ - 2145, /* GL_UNPACK_ALIGNMENT */ - 1300, /* GL_PACK_SWAP_BYTES */ - 1295, /* GL_PACK_LSB_FIRST */ - 1296, /* GL_PACK_ROW_LENGTH */ - 1299, /* GL_PACK_SKIP_ROWS */ - 1298, /* GL_PACK_SKIP_PIXELS */ - 1292, /* GL_PACK_ALIGNMENT */ - 947, /* GL_MAP_COLOR */ - 952, /* GL_MAP_STENCIL */ - 742, /* GL_INDEX_SHIFT */ - 741, /* GL_INDEX_OFFSET */ - 1550, /* GL_RED_SCALE */ - 1546, /* GL_RED_BIAS */ - 2293, /* GL_ZOOM_X */ - 2294, /* GL_ZOOM_Y */ - 697, /* GL_GREEN_SCALE */ - 693, /* GL_GREEN_BIAS */ + 453, /* GL_DRAW_BUFFER */ + 1539, /* GL_READ_BUFFER */ + 1734, /* GL_SCISSOR_BOX */ + 1735, /* GL_SCISSOR_TEST */ + 742, /* GL_INDEX_CLEAR_VALUE */ + 747, /* GL_INDEX_WRITEMASK */ + 230, /* GL_COLOR_CLEAR_VALUE */ + 272, /* GL_COLOR_WRITEMASK */ + 744, /* GL_INDEX_MODE */ + 1680, /* GL_RGBA_MODE */ + 452, /* GL_DOUBLEBUFFER */ + 1864, /* GL_STEREO */ + 1593, /* GL_RENDER_MODE */ + 1317, /* GL_PERSPECTIVE_CORRECTION_HINT */ + 1375, /* GL_POINT_SMOOTH_HINT */ + 838, /* GL_LINE_SMOOTH_HINT */ + 1393, /* GL_POLYGON_SMOOTH_HINT */ + 592, /* GL_FOG_HINT */ + 2060, /* GL_TEXTURE_GEN_S */ + 2062, /* GL_TEXTURE_GEN_T */ + 2059, /* GL_TEXTURE_GEN_R */ + 2058, /* GL_TEXTURE_GEN_Q */ + 1330, /* GL_PIXEL_MAP_I_TO_I */ + 1336, /* GL_PIXEL_MAP_S_TO_S */ + 1332, /* GL_PIXEL_MAP_I_TO_R */ + 1328, /* GL_PIXEL_MAP_I_TO_G */ + 1326, /* GL_PIXEL_MAP_I_TO_B */ + 1324, /* GL_PIXEL_MAP_I_TO_A */ + 1334, /* GL_PIXEL_MAP_R_TO_R */ + 1322, /* GL_PIXEL_MAP_G_TO_G */ + 1320, /* GL_PIXEL_MAP_B_TO_B */ + 1318, /* GL_PIXEL_MAP_A_TO_A */ + 1331, /* GL_PIXEL_MAP_I_TO_I_SIZE */ + 1337, /* GL_PIXEL_MAP_S_TO_S_SIZE */ + 1333, /* GL_PIXEL_MAP_I_TO_R_SIZE */ + 1329, /* GL_PIXEL_MAP_I_TO_G_SIZE */ + 1327, /* GL_PIXEL_MAP_I_TO_B_SIZE */ + 1325, /* GL_PIXEL_MAP_I_TO_A_SIZE */ + 1335, /* GL_PIXEL_MAP_R_TO_R_SIZE */ + 1323, /* GL_PIXEL_MAP_G_TO_G_SIZE */ + 1321, /* GL_PIXEL_MAP_B_TO_B_SIZE */ + 1319, /* GL_PIXEL_MAP_A_TO_A_SIZE */ + 2163, /* GL_UNPACK_SWAP_BYTES */ + 2158, /* GL_UNPACK_LSB_FIRST */ + 2159, /* GL_UNPACK_ROW_LENGTH */ + 2162, /* GL_UNPACK_SKIP_ROWS */ + 2161, /* GL_UNPACK_SKIP_PIXELS */ + 2156, /* GL_UNPACK_ALIGNMENT */ + 1305, /* GL_PACK_SWAP_BYTES */ + 1300, /* GL_PACK_LSB_FIRST */ + 1301, /* GL_PACK_ROW_LENGTH */ + 1304, /* GL_PACK_SKIP_ROWS */ + 1303, /* GL_PACK_SKIP_PIXELS */ + 1297, /* GL_PACK_ALIGNMENT */ + 951, /* GL_MAP_COLOR */ + 956, /* GL_MAP_STENCIL */ + 746, /* GL_INDEX_SHIFT */ + 745, /* GL_INDEX_OFFSET */ + 1555, /* GL_RED_SCALE */ + 1551, /* GL_RED_BIAS */ + 2304, /* GL_ZOOM_X */ + 2305, /* GL_ZOOM_Y */ + 701, /* GL_GREEN_SCALE */ + 697, /* GL_GREEN_BIAS */ 115, /* GL_BLUE_SCALE */ 111, /* GL_BLUE_BIAS */ 50, /* GL_ALPHA_SCALE */ 47, /* GL_ALPHA_BIAS */ - 426, /* GL_DEPTH_SCALE */ - 402, /* GL_DEPTH_BIAS */ - 1038, /* GL_MAX_EVAL_ORDER */ - 1055, /* GL_MAX_LIGHTS */ - 1018, /* GL_MAX_CLIP_DISTANCES */ - 1110, /* GL_MAX_TEXTURE_SIZE */ - 1062, /* GL_MAX_PIXEL_MAP_TABLE */ - 1014, /* GL_MAX_ATTRIB_STACK_DEPTH */ - 1058, /* GL_MAX_MODELVIEW_STACK_DEPTH */ - 1059, /* GL_MAX_NAME_STACK_DEPTH */ - 1090, /* GL_MAX_PROJECTION_STACK_DEPTH */ - 1111, /* GL_MAX_TEXTURE_STACK_DEPTH */ - 1137, /* GL_MAX_VIEWPORT_DIMS */ - 1015, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ - 1867, /* GL_SUBPIXEL_BITS */ - 737, /* GL_INDEX_BITS */ - 1547, /* GL_RED_BITS */ - 694, /* GL_GREEN_BITS */ + 429, /* GL_DEPTH_SCALE */ + 405, /* GL_DEPTH_BIAS */ + 1042, /* GL_MAX_EVAL_ORDER */ + 1059, /* GL_MAX_LIGHTS */ + 1022, /* GL_MAX_CLIP_DISTANCES */ + 1115, /* GL_MAX_TEXTURE_SIZE */ + 1066, /* GL_MAX_PIXEL_MAP_TABLE */ + 1018, /* GL_MAX_ATTRIB_STACK_DEPTH */ + 1062, /* GL_MAX_MODELVIEW_STACK_DEPTH */ + 1063, /* GL_MAX_NAME_STACK_DEPTH */ + 1094, /* GL_MAX_PROJECTION_STACK_DEPTH */ + 1116, /* GL_MAX_TEXTURE_STACK_DEPTH */ + 1142, /* GL_MAX_VIEWPORT_DIMS */ + 1019, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ + 1874, /* GL_SUBPIXEL_BITS */ + 741, /* GL_INDEX_BITS */ + 1552, /* GL_RED_BITS */ + 698, /* GL_GREEN_BITS */ 112, /* GL_BLUE_BITS */ 48, /* GL_ALPHA_BITS */ - 403, /* GL_DEPTH_BITS */ - 1831, /* GL_STENCIL_BITS */ + 406, /* GL_DEPTH_BITS */ + 1838, /* GL_STENCIL_BITS */ 14, /* GL_ACCUM_RED_BITS */ 13, /* GL_ACCUM_GREEN_BITS */ 10, /* GL_ACCUM_BLUE_BITS */ 9, /* GL_ACCUM_ALPHA_BITS */ - 1209, /* GL_NAME_STACK_DEPTH */ + 1214, /* GL_NAME_STACK_DEPTH */ 70, /* GL_AUTO_NORMAL */ - 893, /* GL_MAP1_COLOR_4 */ - 896, /* GL_MAP1_INDEX */ - 897, /* GL_MAP1_NORMAL */ - 898, /* GL_MAP1_TEXTURE_COORD_1 */ - 899, /* GL_MAP1_TEXTURE_COORD_2 */ - 900, /* GL_MAP1_TEXTURE_COORD_3 */ - 901, /* GL_MAP1_TEXTURE_COORD_4 */ - 902, /* GL_MAP1_VERTEX_3 */ - 903, /* GL_MAP1_VERTEX_4 */ - 920, /* GL_MAP2_COLOR_4 */ - 923, /* GL_MAP2_INDEX */ - 924, /* GL_MAP2_NORMAL */ - 925, /* GL_MAP2_TEXTURE_COORD_1 */ - 926, /* GL_MAP2_TEXTURE_COORD_2 */ - 927, /* GL_MAP2_TEXTURE_COORD_3 */ - 928, /* GL_MAP2_TEXTURE_COORD_4 */ - 929, /* GL_MAP2_VERTEX_3 */ - 930, /* GL_MAP2_VERTEX_4 */ - 894, /* GL_MAP1_GRID_DOMAIN */ - 895, /* GL_MAP1_GRID_SEGMENTS */ - 921, /* GL_MAP2_GRID_DOMAIN */ - 922, /* GL_MAP2_GRID_SEGMENTS */ - 1950, /* GL_TEXTURE_1D */ - 1953, /* GL_TEXTURE_2D */ - 538, /* GL_FEEDBACK_BUFFER_POINTER */ - 539, /* GL_FEEDBACK_BUFFER_SIZE */ - 540, /* GL_FEEDBACK_BUFFER_TYPE */ - 1737, /* GL_SELECTION_BUFFER_POINTER */ - 1738, /* GL_SELECTION_BUFFER_SIZE */ - 2095, /* GL_TEXTURE_WIDTH */ - 2055, /* GL_TEXTURE_HEIGHT */ - 1999, /* GL_TEXTURE_COMPONENTS */ - 1980, /* GL_TEXTURE_BORDER_COLOR */ - 1979, /* GL_TEXTURE_BORDER */ - 441, /* GL_DONT_CARE */ - 536, /* GL_FASTEST */ - 1217, /* GL_NICEST */ + 897, /* GL_MAP1_COLOR_4 */ + 900, /* GL_MAP1_INDEX */ + 901, /* GL_MAP1_NORMAL */ + 902, /* GL_MAP1_TEXTURE_COORD_1 */ + 903, /* GL_MAP1_TEXTURE_COORD_2 */ + 904, /* GL_MAP1_TEXTURE_COORD_3 */ + 905, /* GL_MAP1_TEXTURE_COORD_4 */ + 906, /* GL_MAP1_VERTEX_3 */ + 907, /* GL_MAP1_VERTEX_4 */ + 924, /* GL_MAP2_COLOR_4 */ + 927, /* GL_MAP2_INDEX */ + 928, /* GL_MAP2_NORMAL */ + 929, /* GL_MAP2_TEXTURE_COORD_1 */ + 930, /* GL_MAP2_TEXTURE_COORD_2 */ + 931, /* GL_MAP2_TEXTURE_COORD_3 */ + 932, /* GL_MAP2_TEXTURE_COORD_4 */ + 933, /* GL_MAP2_VERTEX_3 */ + 934, /* GL_MAP2_VERTEX_4 */ + 898, /* GL_MAP1_GRID_DOMAIN */ + 899, /* GL_MAP1_GRID_SEGMENTS */ + 925, /* GL_MAP2_GRID_DOMAIN */ + 926, /* GL_MAP2_GRID_SEGMENTS */ + 1957, /* GL_TEXTURE_1D */ + 1960, /* GL_TEXTURE_2D */ + 541, /* GL_FEEDBACK_BUFFER_POINTER */ + 542, /* GL_FEEDBACK_BUFFER_SIZE */ + 543, /* GL_FEEDBACK_BUFFER_TYPE */ + 1744, /* GL_SELECTION_BUFFER_POINTER */ + 1745, /* GL_SELECTION_BUFFER_SIZE */ + 2106, /* GL_TEXTURE_WIDTH */ + 2066, /* GL_TEXTURE_HEIGHT */ + 2010, /* GL_TEXTURE_COMPONENTS */ + 1988, /* GL_TEXTURE_BORDER_COLOR */ + 1987, /* GL_TEXTURE_BORDER */ + 444, /* GL_DONT_CARE */ + 539, /* GL_FASTEST */ + 1222, /* GL_NICEST */ 56, /* GL_AMBIENT */ - 438, /* GL_DIFFUSE */ - 1790, /* GL_SPECULAR */ - 1392, /* GL_POSITION */ - 1793, /* GL_SPOT_DIRECTION */ - 1794, /* GL_SPOT_EXPONENT */ - 1792, /* GL_SPOT_CUTOFF */ - 317, /* GL_CONSTANT_ATTENUATION */ - 822, /* GL_LINEAR_ATTENUATION */ - 1506, /* GL_QUADRATIC_ATTENUATION */ - 284, /* GL_COMPILE */ - 285, /* GL_COMPILE_AND_EXECUTE */ + 441, /* GL_DIFFUSE */ + 1797, /* GL_SPECULAR */ + 1397, /* GL_POSITION */ + 1800, /* GL_SPOT_DIRECTION */ + 1801, /* GL_SPOT_EXPONENT */ + 1799, /* GL_SPOT_CUTOFF */ + 320, /* GL_CONSTANT_ATTENUATION */ + 826, /* GL_LINEAR_ATTENUATION */ + 1511, /* GL_QUADRATIC_ATTENUATION */ + 287, /* GL_COMPILE */ + 288, /* GL_COMPILE_AND_EXECUTE */ 149, /* GL_BYTE */ - 2154, /* GL_UNSIGNED_BYTE */ - 1755, /* GL_SHORT */ - 2193, /* GL_UNSIGNED_SHORT */ - 745, /* GL_INT */ - 2157, /* GL_UNSIGNED_INT */ - 548, /* GL_FLOAT */ + 2165, /* GL_UNSIGNED_BYTE */ + 1762, /* GL_SHORT */ + 2204, /* GL_UNSIGNED_SHORT */ + 749, /* GL_INT */ + 2168, /* GL_UNSIGNED_INT */ + 552, /* GL_FLOAT */ 1, /* GL_2_BYTES */ 5, /* GL_3_BYTES */ 7, /* GL_4_BYTES */ - 448, /* GL_DOUBLE */ - 698, /* GL_HALF_FLOAT */ - 544, /* GL_FIXED */ - 162, /* GL_CLEAR */ + 451, /* GL_DOUBLE */ + 702, /* GL_HALF_FLOAT */ + 547, /* GL_FIXED */ + 165, /* GL_CLEAR */ 58, /* GL_AND */ 60, /* GL_AND_REVERSE */ - 347, /* GL_COPY */ + 350, /* GL_COPY */ 59, /* GL_AND_INVERTED */ - 1220, /* GL_NOOP */ - 2289, /* GL_XOR */ - 1287, /* GL_OR */ - 1221, /* GL_NOR */ - 526, /* GL_EQUIV */ - 798, /* GL_INVERT */ - 1290, /* GL_OR_REVERSE */ - 348, /* GL_COPY_INVERTED */ - 1289, /* GL_OR_INVERTED */ - 1210, /* GL_NAND */ - 1744, /* GL_SET */ - 523, /* GL_EMISSION */ - 1754, /* GL_SHININESS */ + 1225, /* GL_NOOP */ + 2300, /* GL_XOR */ + 1292, /* GL_OR */ + 1226, /* GL_NOR */ + 529, /* GL_EQUIV */ + 802, /* GL_INVERT */ + 1295, /* GL_OR_REVERSE */ + 351, /* GL_COPY_INVERTED */ + 1294, /* GL_OR_INVERTED */ + 1215, /* GL_NAND */ + 1751, /* GL_SET */ + 526, /* GL_EMISSION */ + 1761, /* GL_SHININESS */ 57, /* GL_AMBIENT_AND_DIFFUSE */ - 229, /* GL_COLOR_INDEXES */ - 1159, /* GL_MODELVIEW */ - 1478, /* GL_PROJECTION */ - 1885, /* GL_TEXTURE */ - 185, /* GL_COLOR */ - 395, /* GL_DEPTH */ - 1816, /* GL_STENCIL */ - 228, /* GL_COLOR_INDEX */ - 1837, /* GL_STENCIL_INDEX */ - 411, /* GL_DEPTH_COMPONENT */ - 1543, /* GL_RED */ - 692, /* GL_GREEN */ + 232, /* GL_COLOR_INDEXES */ + 1164, /* GL_MODELVIEW */ + 1483, /* GL_PROJECTION */ + 1892, /* GL_TEXTURE */ + 188, /* GL_COLOR */ + 398, /* GL_DEPTH */ + 1823, /* GL_STENCIL */ + 231, /* GL_COLOR_INDEX */ + 1844, /* GL_STENCIL_INDEX */ + 414, /* GL_DEPTH_COMPONENT */ + 1548, /* GL_RED */ + 696, /* GL_GREEN */ 110, /* GL_BLUE */ 32, /* GL_ALPHA */ - 1599, /* GL_RGB */ - 1639, /* GL_RGBA */ - 856, /* GL_LUMINANCE */ - 883, /* GL_LUMINANCE_ALPHA */ + 1604, /* GL_RGB */ + 1644, /* GL_RGBA */ + 860, /* GL_LUMINANCE */ + 887, /* GL_LUMINANCE_ALPHA */ 86, /* GL_BITMAP */ - 1342, /* GL_POINT */ - 820, /* GL_LINE */ - 541, /* GL_FILL */ - 1557, /* GL_RENDER */ - 537, /* GL_FEEDBACK */ - 1736, /* GL_SELECT */ - 547, /* GL_FLAT */ - 1765, /* GL_SMOOTH */ - 799, /* GL_KEEP */ - 1590, /* GL_REPLACE */ - 727, /* GL_INCR */ - 391, /* GL_DECR */ - 2210, /* GL_VENDOR */ - 1587, /* GL_RENDERER */ - 2211, /* GL_VERSION */ - 530, /* GL_EXTENSIONS */ - 1686, /* GL_S */ - 1876, /* GL_T */ - 1526, /* GL_R */ - 1505, /* GL_Q */ - 1196, /* GL_MODULATE */ - 390, /* GL_DECAL */ - 2042, /* GL_TEXTURE_ENV_MODE */ - 2041, /* GL_TEXTURE_ENV_COLOR */ - 2040, /* GL_TEXTURE_ENV */ - 531, /* GL_EYE_LINEAR */ - 1248, /* GL_OBJECT_LINEAR */ - 1791, /* GL_SPHERE_MAP */ - 2045, /* GL_TEXTURE_GEN_MODE */ - 1250, /* GL_OBJECT_PLANE */ - 532, /* GL_EYE_PLANE */ - 1211, /* GL_NEAREST */ - 821, /* GL_LINEAR */ - 1215, /* GL_NEAREST_MIPMAP_NEAREST */ - 826, /* GL_LINEAR_MIPMAP_NEAREST */ - 1214, /* GL_NEAREST_MIPMAP_LINEAR */ - 825, /* GL_LINEAR_MIPMAP_LINEAR */ - 2068, /* GL_TEXTURE_MAG_FILTER */ - 2077, /* GL_TEXTURE_MIN_FILTER */ - 2098, /* GL_TEXTURE_WRAP_S */ - 2099, /* GL_TEXTURE_WRAP_T */ + 1347, /* GL_POINT */ + 824, /* GL_LINE */ + 544, /* GL_FILL */ + 1562, /* GL_RENDER */ + 540, /* GL_FEEDBACK */ + 1743, /* GL_SELECT */ + 551, /* GL_FLAT */ + 1772, /* GL_SMOOTH */ + 803, /* GL_KEEP */ + 1595, /* GL_REPLACE */ + 731, /* GL_INCR */ + 394, /* GL_DECR */ + 2221, /* GL_VENDOR */ + 1592, /* GL_RENDERER */ + 2222, /* GL_VERSION */ + 533, /* GL_EXTENSIONS */ + 1692, /* GL_S */ + 1883, /* GL_T */ + 1531, /* GL_R */ + 1510, /* GL_Q */ + 1201, /* GL_MODULATE */ + 393, /* GL_DECAL */ + 2053, /* GL_TEXTURE_ENV_MODE */ + 2052, /* GL_TEXTURE_ENV_COLOR */ + 2051, /* GL_TEXTURE_ENV */ + 534, /* GL_EYE_LINEAR */ + 1253, /* GL_OBJECT_LINEAR */ + 1798, /* GL_SPHERE_MAP */ + 2056, /* GL_TEXTURE_GEN_MODE */ + 1255, /* GL_OBJECT_PLANE */ + 535, /* GL_EYE_PLANE */ + 1216, /* GL_NEAREST */ + 825, /* GL_LINEAR */ + 1220, /* GL_NEAREST_MIPMAP_NEAREST */ + 830, /* GL_LINEAR_MIPMAP_NEAREST */ + 1219, /* GL_NEAREST_MIPMAP_LINEAR */ + 829, /* GL_LINEAR_MIPMAP_LINEAR */ + 2079, /* GL_TEXTURE_MAG_FILTER */ + 2088, /* GL_TEXTURE_MIN_FILTER */ + 2109, /* GL_TEXTURE_WRAP_S */ + 2110, /* GL_TEXTURE_WRAP_T */ 155, /* GL_CLAMP */ - 1589, /* GL_REPEAT */ - 1386, /* GL_POLYGON_OFFSET_UNITS */ - 1385, /* GL_POLYGON_OFFSET_POINT */ - 1384, /* GL_POLYGON_OFFSET_LINE */ - 1529, /* GL_R3_G3_B2 */ - 2207, /* GL_V2F */ - 2208, /* GL_V3F */ + 1594, /* GL_REPEAT */ + 1391, /* GL_POLYGON_OFFSET_UNITS */ + 1390, /* GL_POLYGON_OFFSET_POINT */ + 1389, /* GL_POLYGON_OFFSET_LINE */ + 1534, /* GL_R3_G3_B2 */ + 2218, /* GL_V2F */ + 2219, /* GL_V3F */ 152, /* GL_C4UB_V2F */ 153, /* GL_C4UB_V3F */ 150, /* GL_C3F_V3F */ - 1208, /* GL_N3F_V3F */ + 1213, /* GL_N3F_V3F */ 151, /* GL_C4F_N3F_V3F */ - 1881, /* GL_T2F_V3F */ - 1883, /* GL_T4F_V4F */ - 1879, /* GL_T2F_C4UB_V3F */ - 1877, /* GL_T2F_C3F_V3F */ - 1880, /* GL_T2F_N3F_V3F */ - 1878, /* GL_T2F_C4F_N3F_V3F */ - 1882, /* GL_T4F_C4F_N3F_V4F */ - 169, /* GL_CLIP_DISTANCE0 */ - 170, /* GL_CLIP_DISTANCE1 */ - 171, /* GL_CLIP_DISTANCE2 */ - 172, /* GL_CLIP_DISTANCE3 */ - 173, /* GL_CLIP_DISTANCE4 */ - 174, /* GL_CLIP_DISTANCE5 */ - 175, /* GL_CLIP_DISTANCE6 */ - 176, /* GL_CLIP_DISTANCE7 */ - 805, /* GL_LIGHT0 */ - 806, /* GL_LIGHT1 */ - 807, /* GL_LIGHT2 */ - 808, /* GL_LIGHT3 */ - 809, /* GL_LIGHT4 */ - 810, /* GL_LIGHT5 */ - 811, /* GL_LIGHT6 */ - 812, /* GL_LIGHT7 */ - 702, /* GL_HINT_BIT */ - 319, /* GL_CONSTANT_COLOR */ - 1261, /* GL_ONE_MINUS_CONSTANT_COLOR */ - 314, /* GL_CONSTANT_ALPHA */ - 1259, /* GL_ONE_MINUS_CONSTANT_ALPHA */ + 1888, /* GL_T2F_V3F */ + 1890, /* GL_T4F_V4F */ + 1886, /* GL_T2F_C4UB_V3F */ + 1884, /* GL_T2F_C3F_V3F */ + 1887, /* GL_T2F_N3F_V3F */ + 1885, /* GL_T2F_C4F_N3F_V3F */ + 1889, /* GL_T4F_C4F_N3F_V4F */ + 172, /* GL_CLIP_DISTANCE0 */ + 173, /* GL_CLIP_DISTANCE1 */ + 174, /* GL_CLIP_DISTANCE2 */ + 175, /* GL_CLIP_DISTANCE3 */ + 176, /* GL_CLIP_DISTANCE4 */ + 177, /* GL_CLIP_DISTANCE5 */ + 178, /* GL_CLIP_DISTANCE6 */ + 179, /* GL_CLIP_DISTANCE7 */ + 809, /* GL_LIGHT0 */ + 810, /* GL_LIGHT1 */ + 811, /* GL_LIGHT2 */ + 812, /* GL_LIGHT3 */ + 813, /* GL_LIGHT4 */ + 814, /* GL_LIGHT5 */ + 815, /* GL_LIGHT6 */ + 816, /* GL_LIGHT7 */ + 706, /* GL_HINT_BIT */ + 322, /* GL_CONSTANT_COLOR */ + 1266, /* GL_ONE_MINUS_CONSTANT_COLOR */ + 317, /* GL_CONSTANT_ALPHA */ + 1264, /* GL_ONE_MINUS_CONSTANT_ALPHA */ 89, /* GL_BLEND_COLOR */ - 669, /* GL_FUNC_ADD */ - 1140, /* GL_MIN */ - 1009, /* GL_MAX */ + 673, /* GL_FUNC_ADD */ + 1145, /* GL_MIN */ + 1013, /* GL_MAX */ 96, /* GL_BLEND_EQUATION */ - 675, /* GL_FUNC_SUBTRACT */ - 672, /* GL_FUNC_REVERSE_SUBTRACT */ - 327, /* GL_CONVOLUTION_1D */ - 328, /* GL_CONVOLUTION_2D */ - 1739, /* GL_SEPARABLE_2D */ - 331, /* GL_CONVOLUTION_BORDER_MODE */ - 335, /* GL_CONVOLUTION_FILTER_SCALE */ - 333, /* GL_CONVOLUTION_FILTER_BIAS */ - 1544, /* GL_REDUCE */ - 337, /* GL_CONVOLUTION_FORMAT */ - 341, /* GL_CONVOLUTION_WIDTH */ - 339, /* GL_CONVOLUTION_HEIGHT */ - 1028, /* GL_MAX_CONVOLUTION_WIDTH */ - 1026, /* GL_MAX_CONVOLUTION_HEIGHT */ - 1425, /* GL_POST_CONVOLUTION_RED_SCALE */ - 1421, /* GL_POST_CONVOLUTION_GREEN_SCALE */ - 1416, /* GL_POST_CONVOLUTION_BLUE_SCALE */ - 1412, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ - 1423, /* GL_POST_CONVOLUTION_RED_BIAS */ - 1419, /* GL_POST_CONVOLUTION_GREEN_BIAS */ - 1414, /* GL_POST_CONVOLUTION_BLUE_BIAS */ - 1410, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ - 703, /* GL_HISTOGRAM */ - 1485, /* GL_PROXY_HISTOGRAM */ - 719, /* GL_HISTOGRAM_WIDTH */ - 709, /* GL_HISTOGRAM_FORMAT */ - 715, /* GL_HISTOGRAM_RED_SIZE */ - 711, /* GL_HISTOGRAM_GREEN_SIZE */ - 706, /* GL_HISTOGRAM_BLUE_SIZE */ - 704, /* GL_HISTOGRAM_ALPHA_SIZE */ - 713, /* GL_HISTOGRAM_LUMINANCE_SIZE */ - 717, /* GL_HISTOGRAM_SINK */ - 1141, /* GL_MINMAX */ - 1143, /* GL_MINMAX_FORMAT */ - 1145, /* GL_MINMAX_SINK */ - 1884, /* GL_TABLE_TOO_LARGE_EXT */ - 2156, /* GL_UNSIGNED_BYTE_3_3_2 */ - 2196, /* GL_UNSIGNED_SHORT_4_4_4_4 */ - 2199, /* GL_UNSIGNED_SHORT_5_5_5_1 */ - 2168, /* GL_UNSIGNED_INT_8_8_8_8 */ - 2159, /* GL_UNSIGNED_INT_10_10_10_2 */ - 1383, /* GL_POLYGON_OFFSET_FILL */ - 1382, /* GL_POLYGON_OFFSET_FACTOR */ - 1381, /* GL_POLYGON_OFFSET_BIAS */ - 1593, /* GL_RESCALE_NORMAL */ + 679, /* GL_FUNC_SUBTRACT */ + 676, /* GL_FUNC_REVERSE_SUBTRACT */ + 330, /* GL_CONVOLUTION_1D */ + 331, /* GL_CONVOLUTION_2D */ + 1746, /* GL_SEPARABLE_2D */ + 334, /* GL_CONVOLUTION_BORDER_MODE */ + 338, /* GL_CONVOLUTION_FILTER_SCALE */ + 336, /* GL_CONVOLUTION_FILTER_BIAS */ + 1549, /* GL_REDUCE */ + 340, /* GL_CONVOLUTION_FORMAT */ + 344, /* GL_CONVOLUTION_WIDTH */ + 342, /* GL_CONVOLUTION_HEIGHT */ + 1032, /* GL_MAX_CONVOLUTION_WIDTH */ + 1030, /* GL_MAX_CONVOLUTION_HEIGHT */ + 1430, /* GL_POST_CONVOLUTION_RED_SCALE */ + 1426, /* GL_POST_CONVOLUTION_GREEN_SCALE */ + 1421, /* GL_POST_CONVOLUTION_BLUE_SCALE */ + 1417, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ + 1428, /* GL_POST_CONVOLUTION_RED_BIAS */ + 1424, /* GL_POST_CONVOLUTION_GREEN_BIAS */ + 1419, /* GL_POST_CONVOLUTION_BLUE_BIAS */ + 1415, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ + 707, /* GL_HISTOGRAM */ + 1490, /* GL_PROXY_HISTOGRAM */ + 723, /* GL_HISTOGRAM_WIDTH */ + 713, /* GL_HISTOGRAM_FORMAT */ + 719, /* GL_HISTOGRAM_RED_SIZE */ + 715, /* GL_HISTOGRAM_GREEN_SIZE */ + 710, /* GL_HISTOGRAM_BLUE_SIZE */ + 708, /* GL_HISTOGRAM_ALPHA_SIZE */ + 717, /* GL_HISTOGRAM_LUMINANCE_SIZE */ + 721, /* GL_HISTOGRAM_SINK */ + 1146, /* GL_MINMAX */ + 1148, /* GL_MINMAX_FORMAT */ + 1150, /* GL_MINMAX_SINK */ + 1891, /* GL_TABLE_TOO_LARGE_EXT */ + 2167, /* GL_UNSIGNED_BYTE_3_3_2 */ + 2207, /* GL_UNSIGNED_SHORT_4_4_4_4 */ + 2210, /* GL_UNSIGNED_SHORT_5_5_5_1 */ + 2179, /* GL_UNSIGNED_INT_8_8_8_8 */ + 2170, /* GL_UNSIGNED_INT_10_10_10_2 */ + 1388, /* GL_POLYGON_OFFSET_FILL */ + 1387, /* GL_POLYGON_OFFSET_FACTOR */ + 1386, /* GL_POLYGON_OFFSET_BIAS */ + 1598, /* GL_RESCALE_NORMAL */ 41, /* GL_ALPHA4 */ 43, /* GL_ALPHA8 */ 33, /* GL_ALPHA12 */ 35, /* GL_ALPHA16 */ - 871, /* GL_LUMINANCE4 */ - 877, /* GL_LUMINANCE8 */ - 857, /* GL_LUMINANCE12 */ - 863, /* GL_LUMINANCE16 */ - 872, /* GL_LUMINANCE4_ALPHA4 */ - 875, /* GL_LUMINANCE6_ALPHA2 */ - 880, /* GL_LUMINANCE8_ALPHA8 */ - 860, /* GL_LUMINANCE12_ALPHA4 */ - 858, /* GL_LUMINANCE12_ALPHA12 */ - 866, /* GL_LUMINANCE16_ALPHA16 */ - 746, /* GL_INTENSITY */ - 755, /* GL_INTENSITY4 */ - 757, /* GL_INTENSITY8 */ - 747, /* GL_INTENSITY12 */ - 749, /* GL_INTENSITY16 */ - 1614, /* GL_RGB2_EXT */ - 1620, /* GL_RGB4 */ - 1623, /* GL_RGB5 */ - 1630, /* GL_RGB8 */ - 1600, /* GL_RGB10 */ - 1604, /* GL_RGB12 */ - 1606, /* GL_RGB16 */ - 1650, /* GL_RGBA2 */ - 1657, /* GL_RGBA4 */ - 1626, /* GL_RGB5_A1 */ - 1662, /* GL_RGBA8 */ - 1601, /* GL_RGB10_A2 */ - 1640, /* GL_RGBA12 */ - 1642, /* GL_RGBA16 */ - 2085, /* GL_TEXTURE_RED_SIZE */ - 2053, /* GL_TEXTURE_GREEN_SIZE */ - 1977, /* GL_TEXTURE_BLUE_SIZE */ - 1958, /* GL_TEXTURE_ALPHA_SIZE */ - 2066, /* GL_TEXTURE_LUMINANCE_SIZE */ - 2057, /* GL_TEXTURE_INTENSITY_SIZE */ - 1591, /* GL_REPLACE_EXT */ - 1489, /* GL_PROXY_TEXTURE_1D */ - 1493, /* GL_PROXY_TEXTURE_2D */ - 2093, /* GL_TEXTURE_TOO_LARGE_EXT */ - 2079, /* GL_TEXTURE_PRIORITY */ - 2087, /* GL_TEXTURE_RESIDENT */ - 1961, /* GL_TEXTURE_BINDING_1D */ - 1964, /* GL_TEXTURE_BINDING_2D */ - 1967, /* GL_TEXTURE_BINDING_3D */ - 1297, /* GL_PACK_SKIP_IMAGES */ - 1293, /* GL_PACK_IMAGE_HEIGHT */ - 2149, /* GL_UNPACK_SKIP_IMAGES */ - 2146, /* GL_UNPACK_IMAGE_HEIGHT */ - 1956, /* GL_TEXTURE_3D */ - 1497, /* GL_PROXY_TEXTURE_3D */ - 2037, /* GL_TEXTURE_DEPTH */ - 2096, /* GL_TEXTURE_WRAP_R */ - 1010, /* GL_MAX_3D_TEXTURE_SIZE */ - 2212, /* GL_VERTEX_ARRAY */ - 1223, /* GL_NORMAL_ARRAY */ - 186, /* GL_COLOR_ARRAY */ - 731, /* GL_INDEX_ARRAY */ - 2007, /* GL_TEXTURE_COORD_ARRAY */ - 515, /* GL_EDGE_FLAG_ARRAY */ - 2218, /* GL_VERTEX_ARRAY_SIZE */ - 2220, /* GL_VERTEX_ARRAY_TYPE */ - 2219, /* GL_VERTEX_ARRAY_STRIDE */ - 1228, /* GL_NORMAL_ARRAY_TYPE */ - 1227, /* GL_NORMAL_ARRAY_STRIDE */ - 190, /* GL_COLOR_ARRAY_SIZE */ - 192, /* GL_COLOR_ARRAY_TYPE */ - 191, /* GL_COLOR_ARRAY_STRIDE */ - 736, /* GL_INDEX_ARRAY_TYPE */ - 735, /* GL_INDEX_ARRAY_STRIDE */ - 2011, /* GL_TEXTURE_COORD_ARRAY_SIZE */ - 2013, /* GL_TEXTURE_COORD_ARRAY_TYPE */ - 2012, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ - 519, /* GL_EDGE_FLAG_ARRAY_STRIDE */ - 2217, /* GL_VERTEX_ARRAY_POINTER */ - 1226, /* GL_NORMAL_ARRAY_POINTER */ - 189, /* GL_COLOR_ARRAY_POINTER */ - 734, /* GL_INDEX_ARRAY_POINTER */ - 2010, /* GL_TEXTURE_COORD_ARRAY_POINTER */ - 518, /* GL_EDGE_FLAG_ARRAY_POINTER */ - 1201, /* GL_MULTISAMPLE */ - 1713, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ - 1715, /* GL_SAMPLE_ALPHA_TO_ONE */ - 1720, /* GL_SAMPLE_COVERAGE */ - 1717, /* GL_SAMPLE_BUFFERS */ - 1708, /* GL_SAMPLES */ - 1724, /* GL_SAMPLE_COVERAGE_VALUE */ - 1722, /* GL_SAMPLE_COVERAGE_INVERT */ - 234, /* GL_COLOR_MATRIX */ - 236, /* GL_COLOR_MATRIX_STACK_DEPTH */ - 1022, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ - 1408, /* GL_POST_COLOR_MATRIX_RED_SCALE */ - 1404, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ - 1399, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ - 1395, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ - 1406, /* GL_POST_COLOR_MATRIX_RED_BIAS */ - 1402, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ - 1397, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ - 1393, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ - 1990, /* GL_TEXTURE_COLOR_TABLE_SGI */ - 1498, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ - 1992, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ + 875, /* GL_LUMINANCE4 */ + 881, /* GL_LUMINANCE8 */ + 861, /* GL_LUMINANCE12 */ + 867, /* GL_LUMINANCE16 */ + 876, /* GL_LUMINANCE4_ALPHA4 */ + 879, /* GL_LUMINANCE6_ALPHA2 */ + 884, /* GL_LUMINANCE8_ALPHA8 */ + 864, /* GL_LUMINANCE12_ALPHA4 */ + 862, /* GL_LUMINANCE12_ALPHA12 */ + 870, /* GL_LUMINANCE16_ALPHA16 */ + 750, /* GL_INTENSITY */ + 759, /* GL_INTENSITY4 */ + 761, /* GL_INTENSITY8 */ + 751, /* GL_INTENSITY12 */ + 753, /* GL_INTENSITY16 */ + 1619, /* GL_RGB2_EXT */ + 1625, /* GL_RGB4 */ + 1628, /* GL_RGB5 */ + 1635, /* GL_RGB8 */ + 1605, /* GL_RGB10 */ + 1609, /* GL_RGB12 */ + 1611, /* GL_RGB16 */ + 1655, /* GL_RGBA2 */ + 1662, /* GL_RGBA4 */ + 1631, /* GL_RGB5_A1 */ + 1667, /* GL_RGBA8 */ + 1606, /* GL_RGB10_A2 */ + 1645, /* GL_RGBA12 */ + 1647, /* GL_RGBA16 */ + 2096, /* GL_TEXTURE_RED_SIZE */ + 2064, /* GL_TEXTURE_GREEN_SIZE */ + 1985, /* GL_TEXTURE_BLUE_SIZE */ + 1965, /* GL_TEXTURE_ALPHA_SIZE */ + 2077, /* GL_TEXTURE_LUMINANCE_SIZE */ + 2068, /* GL_TEXTURE_INTENSITY_SIZE */ + 1596, /* GL_REPLACE_EXT */ + 1494, /* GL_PROXY_TEXTURE_1D */ + 1498, /* GL_PROXY_TEXTURE_2D */ + 2104, /* GL_TEXTURE_TOO_LARGE_EXT */ + 2090, /* GL_TEXTURE_PRIORITY */ + 2098, /* GL_TEXTURE_RESIDENT */ + 1968, /* GL_TEXTURE_BINDING_1D */ + 1971, /* GL_TEXTURE_BINDING_2D */ + 1974, /* GL_TEXTURE_BINDING_3D */ + 1302, /* GL_PACK_SKIP_IMAGES */ + 1298, /* GL_PACK_IMAGE_HEIGHT */ + 2160, /* GL_UNPACK_SKIP_IMAGES */ + 2157, /* GL_UNPACK_IMAGE_HEIGHT */ + 1963, /* GL_TEXTURE_3D */ + 1502, /* GL_PROXY_TEXTURE_3D */ + 2048, /* GL_TEXTURE_DEPTH */ + 2107, /* GL_TEXTURE_WRAP_R */ + 1014, /* GL_MAX_3D_TEXTURE_SIZE */ + 2223, /* GL_VERTEX_ARRAY */ + 1228, /* GL_NORMAL_ARRAY */ + 189, /* GL_COLOR_ARRAY */ + 735, /* GL_INDEX_ARRAY */ + 2018, /* GL_TEXTURE_COORD_ARRAY */ + 518, /* GL_EDGE_FLAG_ARRAY */ + 2229, /* GL_VERTEX_ARRAY_SIZE */ + 2231, /* GL_VERTEX_ARRAY_TYPE */ + 2230, /* GL_VERTEX_ARRAY_STRIDE */ + 1233, /* GL_NORMAL_ARRAY_TYPE */ + 1232, /* GL_NORMAL_ARRAY_STRIDE */ + 193, /* GL_COLOR_ARRAY_SIZE */ + 195, /* GL_COLOR_ARRAY_TYPE */ + 194, /* GL_COLOR_ARRAY_STRIDE */ + 740, /* GL_INDEX_ARRAY_TYPE */ + 739, /* GL_INDEX_ARRAY_STRIDE */ + 2022, /* GL_TEXTURE_COORD_ARRAY_SIZE */ + 2024, /* GL_TEXTURE_COORD_ARRAY_TYPE */ + 2023, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ + 522, /* GL_EDGE_FLAG_ARRAY_STRIDE */ + 2228, /* GL_VERTEX_ARRAY_POINTER */ + 1231, /* GL_NORMAL_ARRAY_POINTER */ + 192, /* GL_COLOR_ARRAY_POINTER */ + 738, /* GL_INDEX_ARRAY_POINTER */ + 2021, /* GL_TEXTURE_COORD_ARRAY_POINTER */ + 521, /* GL_EDGE_FLAG_ARRAY_POINTER */ + 1206, /* GL_MULTISAMPLE */ + 1720, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ + 1722, /* GL_SAMPLE_ALPHA_TO_ONE */ + 1727, /* GL_SAMPLE_COVERAGE */ + 1724, /* GL_SAMPLE_BUFFERS */ + 1715, /* GL_SAMPLES */ + 1731, /* GL_SAMPLE_COVERAGE_VALUE */ + 1729, /* GL_SAMPLE_COVERAGE_INVERT */ + 237, /* GL_COLOR_MATRIX */ + 239, /* GL_COLOR_MATRIX_STACK_DEPTH */ + 1026, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ + 1413, /* GL_POST_COLOR_MATRIX_RED_SCALE */ + 1409, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ + 1404, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ + 1400, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ + 1411, /* GL_POST_COLOR_MATRIX_RED_BIAS */ + 1407, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ + 1402, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ + 1398, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ + 2001, /* GL_TEXTURE_COLOR_TABLE_SGI */ + 1503, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ + 2003, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ 94, /* GL_BLEND_DST_RGB */ 108, /* GL_BLEND_SRC_RGB */ 92, /* GL_BLEND_DST_ALPHA */ 106, /* GL_BLEND_SRC_ALPHA */ - 240, /* GL_COLOR_TABLE */ - 1418, /* GL_POST_CONVOLUTION_COLOR_TABLE */ - 1401, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ - 1484, /* GL_PROXY_COLOR_TABLE */ - 1488, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ - 1487, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ - 264, /* GL_COLOR_TABLE_SCALE */ - 244, /* GL_COLOR_TABLE_BIAS */ - 249, /* GL_COLOR_TABLE_FORMAT */ - 266, /* GL_COLOR_TABLE_WIDTH */ - 261, /* GL_COLOR_TABLE_RED_SIZE */ - 252, /* GL_COLOR_TABLE_GREEN_SIZE */ - 246, /* GL_COLOR_TABLE_BLUE_SIZE */ - 241, /* GL_COLOR_TABLE_ALPHA_SIZE */ - 258, /* GL_COLOR_TABLE_LUMINANCE_SIZE */ - 255, /* GL_COLOR_TABLE_INTENSITY_SIZE */ + 243, /* GL_COLOR_TABLE */ + 1423, /* GL_POST_CONVOLUTION_COLOR_TABLE */ + 1406, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ + 1489, /* GL_PROXY_COLOR_TABLE */ + 1493, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ + 1492, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ + 267, /* GL_COLOR_TABLE_SCALE */ + 247, /* GL_COLOR_TABLE_BIAS */ + 252, /* GL_COLOR_TABLE_FORMAT */ + 269, /* GL_COLOR_TABLE_WIDTH */ + 264, /* GL_COLOR_TABLE_RED_SIZE */ + 255, /* GL_COLOR_TABLE_GREEN_SIZE */ + 249, /* GL_COLOR_TABLE_BLUE_SIZE */ + 244, /* GL_COLOR_TABLE_ALPHA_SIZE */ + 261, /* GL_COLOR_TABLE_LUMINANCE_SIZE */ + 258, /* GL_COLOR_TABLE_INTENSITY_SIZE */ 79, /* GL_BGR */ 80, /* GL_BGRA */ - 1037, /* GL_MAX_ELEMENTS_VERTICES */ - 1036, /* GL_MAX_ELEMENTS_INDICES */ - 2056, /* GL_TEXTURE_INDEX_SIZE_EXT */ - 183, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ - 1364, /* GL_POINT_SIZE_MIN */ - 1360, /* GL_POINT_SIZE_MAX */ - 1349, /* GL_POINT_FADE_THRESHOLD_SIZE */ - 1345, /* GL_POINT_DISTANCE_ATTENUATION */ - 157, /* GL_CLAMP_TO_BORDER */ - 160, /* GL_CLAMP_TO_EDGE */ - 2078, /* GL_TEXTURE_MIN_LOD */ - 2076, /* GL_TEXTURE_MAX_LOD */ - 1960, /* GL_TEXTURE_BASE_LEVEL */ - 2075, /* GL_TEXTURE_MAX_LEVEL */ - 722, /* GL_IGNORE_BORDER_HP */ - 318, /* GL_CONSTANT_BORDER_HP */ - 1592, /* GL_REPLICATE_BORDER_HP */ - 329, /* GL_CONVOLUTION_BORDER_COLOR */ - 1256, /* GL_OCCLUSION_TEST_HP */ - 1257, /* GL_OCCLUSION_TEST_RESULT_HP */ - 823, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ - 1984, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ - 1986, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ - 1988, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ - 1989, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - 1987, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ - 1985, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ - 1016, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ - 1017, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - 1428, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ - 1430, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ - 1427, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ - 1429, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ - 2064, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ - 2065, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ - 2063, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ - 678, /* GL_GENERATE_MIPMAP */ - 679, /* GL_GENERATE_MIPMAP_HINT */ - 591, /* GL_FOG_OFFSET_SGIX */ - 592, /* GL_FOG_OFFSET_VALUE_SGIX */ - 1998, /* GL_TEXTURE_COMPARE_SGIX */ - 1997, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ - 2060, /* GL_TEXTURE_LEQUAL_R_SGIX */ - 2052, /* GL_TEXTURE_GEQUAL_R_SGIX */ - 412, /* GL_DEPTH_COMPONENT16 */ - 416, /* GL_DEPTH_COMPONENT24 */ - 420, /* GL_DEPTH_COMPONENT32 */ - 354, /* GL_CULL_VERTEX_EXT */ - 356, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ - 355, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ - 2285, /* GL_WRAP_BORDER_SUN */ - 1991, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ - 816, /* GL_LIGHT_MODEL_COLOR_CONTROL */ - 1758, /* GL_SINGLE_COLOR */ - 1742, /* GL_SEPARATE_SPECULAR_COLOR */ - 1753, /* GL_SHARED_TEXTURE_PALETTE_EXT */ - 603, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ - 604, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ - 615, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ - 606, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ - 602, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ - 601, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ - 605, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ - 616, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ - 633, /* GL_FRAMEBUFFER_DEFAULT */ - 660, /* GL_FRAMEBUFFER_UNDEFINED */ - 428, /* GL_DEPTH_STENCIL_ATTACHMENT */ - 892, /* GL_MAJOR_VERSION */ - 1147, /* GL_MINOR_VERSION */ - 1237, /* GL_NUM_EXTENSIONS */ - 324, /* GL_CONTEXT_FLAGS */ - 730, /* GL_INDEX */ - 406, /* GL_DEPTH_BUFFER */ - 1832, /* GL_STENCIL_BUFFER */ - 295, /* GL_COMPRESSED_RED */ - 296, /* GL_COMPRESSED_RG */ - 2155, /* GL_UNSIGNED_BYTE_2_3_3_REV */ - 2200, /* GL_UNSIGNED_SHORT_5_6_5 */ - 2201, /* GL_UNSIGNED_SHORT_5_6_5_REV */ - 2197, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ - 2194, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ - 2169, /* GL_UNSIGNED_INT_8_8_8_8_REV */ - 2165, /* GL_UNSIGNED_INT_2_10_10_10_REV */ - 2073, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ - 2074, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ - 2072, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ - 1151, /* GL_MIRRORED_REPEAT */ - 1679, /* GL_RGB_S3TC */ - 1622, /* GL_RGB4_S3TC */ - 1675, /* GL_RGBA_S3TC */ - 1661, /* GL_RGBA4_S3TC */ - 1670, /* GL_RGBA_DXT5_S3TC */ - 1658, /* GL_RGBA4_DXT5_S3TC */ - 306, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ - 301, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ - 302, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ - 303, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ - 1213, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ - 1212, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ - 824, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ - 578, /* GL_FOG_COORDINATE_SOURCE */ - 570, /* GL_FOG_COORD */ - 594, /* GL_FRAGMENT_DEPTH */ - 360, /* GL_CURRENT_FOG_COORD */ - 577, /* GL_FOG_COORDINATE_ARRAY_TYPE */ - 576, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ - 575, /* GL_FOG_COORDINATE_ARRAY_POINTER */ - 572, /* GL_FOG_COORDINATE_ARRAY */ - 238, /* GL_COLOR_SUM */ - 381, /* GL_CURRENT_SECONDARY_COLOR */ - 1733, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ - 1735, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ - 1734, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ - 1732, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ - 1729, /* GL_SECONDARY_COLOR_ARRAY */ - 379, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ + 1041, /* GL_MAX_ELEMENTS_VERTICES */ + 1040, /* GL_MAX_ELEMENTS_INDICES */ + 2067, /* GL_TEXTURE_INDEX_SIZE_EXT */ + 186, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ + 1369, /* GL_POINT_SIZE_MIN */ + 1365, /* GL_POINT_SIZE_MAX */ + 1354, /* GL_POINT_FADE_THRESHOLD_SIZE */ + 1350, /* GL_POINT_DISTANCE_ATTENUATION */ + 159, /* GL_CLAMP_TO_BORDER */ + 162, /* GL_CLAMP_TO_EDGE */ + 2089, /* GL_TEXTURE_MIN_LOD */ + 2087, /* GL_TEXTURE_MAX_LOD */ + 1967, /* GL_TEXTURE_BASE_LEVEL */ + 2086, /* GL_TEXTURE_MAX_LEVEL */ + 726, /* GL_IGNORE_BORDER_HP */ + 321, /* GL_CONSTANT_BORDER_HP */ + 1597, /* GL_REPLICATE_BORDER_HP */ + 332, /* GL_CONVOLUTION_BORDER_COLOR */ + 1261, /* GL_OCCLUSION_TEST_HP */ + 1262, /* GL_OCCLUSION_TEST_RESULT_HP */ + 827, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ + 1995, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ + 1997, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ + 1999, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ + 2000, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + 1998, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ + 1996, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ + 1020, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ + 1021, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + 1433, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ + 1435, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ + 1432, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ + 1434, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ + 2075, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ + 2076, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ + 2074, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ + 682, /* GL_GENERATE_MIPMAP */ + 683, /* GL_GENERATE_MIPMAP_HINT */ + 595, /* GL_FOG_OFFSET_SGIX */ + 596, /* GL_FOG_OFFSET_VALUE_SGIX */ + 2009, /* GL_TEXTURE_COMPARE_SGIX */ + 2008, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ + 2071, /* GL_TEXTURE_LEQUAL_R_SGIX */ + 2063, /* GL_TEXTURE_GEQUAL_R_SGIX */ + 415, /* GL_DEPTH_COMPONENT16 */ + 419, /* GL_DEPTH_COMPONENT24 */ + 423, /* GL_DEPTH_COMPONENT32 */ + 357, /* GL_CULL_VERTEX_EXT */ + 359, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ + 358, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ + 2296, /* GL_WRAP_BORDER_SUN */ + 2002, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ + 820, /* GL_LIGHT_MODEL_COLOR_CONTROL */ + 1765, /* GL_SINGLE_COLOR */ + 1749, /* GL_SEPARATE_SPECULAR_COLOR */ + 1760, /* GL_SHARED_TEXTURE_PALETTE_EXT */ + 607, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ + 608, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ + 619, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ + 610, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ + 606, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ + 605, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ + 609, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ + 620, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ + 637, /* GL_FRAMEBUFFER_DEFAULT */ + 664, /* GL_FRAMEBUFFER_UNDEFINED */ + 431, /* GL_DEPTH_STENCIL_ATTACHMENT */ + 896, /* GL_MAJOR_VERSION */ + 1152, /* GL_MINOR_VERSION */ + 1242, /* GL_NUM_EXTENSIONS */ + 327, /* GL_CONTEXT_FLAGS */ + 734, /* GL_INDEX */ + 409, /* GL_DEPTH_BUFFER */ + 1839, /* GL_STENCIL_BUFFER */ + 298, /* GL_COMPRESSED_RED */ + 299, /* GL_COMPRESSED_RG */ + 2166, /* GL_UNSIGNED_BYTE_2_3_3_REV */ + 2211, /* GL_UNSIGNED_SHORT_5_6_5 */ + 2212, /* GL_UNSIGNED_SHORT_5_6_5_REV */ + 2208, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ + 2205, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ + 2180, /* GL_UNSIGNED_INT_8_8_8_8_REV */ + 2176, /* GL_UNSIGNED_INT_2_10_10_10_REV */ + 2084, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ + 2085, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ + 2083, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ + 1156, /* GL_MIRRORED_REPEAT */ + 1685, /* GL_RGB_S3TC */ + 1627, /* GL_RGB4_S3TC */ + 1681, /* GL_RGBA_S3TC */ + 1666, /* GL_RGBA4_S3TC */ + 1675, /* GL_RGBA_DXT5_S3TC */ + 1663, /* GL_RGBA4_DXT5_S3TC */ + 309, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ + 304, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ + 305, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ + 306, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ + 1218, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ + 1217, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ + 828, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ + 582, /* GL_FOG_COORDINATE_SOURCE */ + 574, /* GL_FOG_COORD */ + 598, /* GL_FRAGMENT_DEPTH */ + 363, /* GL_CURRENT_FOG_COORD */ + 581, /* GL_FOG_COORDINATE_ARRAY_TYPE */ + 580, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ + 579, /* GL_FOG_COORDINATE_ARRAY_POINTER */ + 576, /* GL_FOG_COORDINATE_ARRAY */ + 241, /* GL_COLOR_SUM */ + 384, /* GL_CURRENT_SECONDARY_COLOR */ + 1740, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ + 1742, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ + 1741, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ + 1739, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ + 1736, /* GL_SECONDARY_COLOR_ARRAY */ + 382, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ 29, /* GL_ALIASED_POINT_SIZE_RANGE */ 28, /* GL_ALIASED_LINE_WIDTH_RANGE */ - 1886, /* GL_TEXTURE0 */ - 1888, /* GL_TEXTURE1 */ - 1910, /* GL_TEXTURE2 */ - 1932, /* GL_TEXTURE3 */ - 1938, /* GL_TEXTURE4 */ - 1940, /* GL_TEXTURE5 */ - 1942, /* GL_TEXTURE6 */ - 1944, /* GL_TEXTURE7 */ - 1946, /* GL_TEXTURE8 */ - 1948, /* GL_TEXTURE9 */ - 1889, /* GL_TEXTURE10 */ - 1891, /* GL_TEXTURE11 */ - 1893, /* GL_TEXTURE12 */ - 1895, /* GL_TEXTURE13 */ - 1897, /* GL_TEXTURE14 */ - 1899, /* GL_TEXTURE15 */ - 1901, /* GL_TEXTURE16 */ - 1903, /* GL_TEXTURE17 */ - 1905, /* GL_TEXTURE18 */ - 1907, /* GL_TEXTURE19 */ - 1911, /* GL_TEXTURE20 */ - 1913, /* GL_TEXTURE21 */ - 1915, /* GL_TEXTURE22 */ - 1917, /* GL_TEXTURE23 */ - 1919, /* GL_TEXTURE24 */ - 1921, /* GL_TEXTURE25 */ - 1923, /* GL_TEXTURE26 */ - 1925, /* GL_TEXTURE27 */ - 1927, /* GL_TEXTURE28 */ - 1929, /* GL_TEXTURE29 */ - 1933, /* GL_TEXTURE30 */ - 1935, /* GL_TEXTURE31 */ + 1893, /* GL_TEXTURE0 */ + 1895, /* GL_TEXTURE1 */ + 1917, /* GL_TEXTURE2 */ + 1939, /* GL_TEXTURE3 */ + 1945, /* GL_TEXTURE4 */ + 1947, /* GL_TEXTURE5 */ + 1949, /* GL_TEXTURE6 */ + 1951, /* GL_TEXTURE7 */ + 1953, /* GL_TEXTURE8 */ + 1955, /* GL_TEXTURE9 */ + 1896, /* GL_TEXTURE10 */ + 1898, /* GL_TEXTURE11 */ + 1900, /* GL_TEXTURE12 */ + 1902, /* GL_TEXTURE13 */ + 1904, /* GL_TEXTURE14 */ + 1906, /* GL_TEXTURE15 */ + 1908, /* GL_TEXTURE16 */ + 1910, /* GL_TEXTURE17 */ + 1912, /* GL_TEXTURE18 */ + 1914, /* GL_TEXTURE19 */ + 1918, /* GL_TEXTURE20 */ + 1920, /* GL_TEXTURE21 */ + 1922, /* GL_TEXTURE22 */ + 1924, /* GL_TEXTURE23 */ + 1926, /* GL_TEXTURE24 */ + 1928, /* GL_TEXTURE25 */ + 1930, /* GL_TEXTURE26 */ + 1932, /* GL_TEXTURE27 */ + 1934, /* GL_TEXTURE28 */ + 1936, /* GL_TEXTURE29 */ + 1940, /* GL_TEXTURE30 */ + 1942, /* GL_TEXTURE31 */ 19, /* GL_ACTIVE_TEXTURE */ - 163, /* GL_CLIENT_ACTIVE_TEXTURE */ - 1112, /* GL_MAX_TEXTURE_UNITS */ - 2128, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ - 2131, /* GL_TRANSPOSE_PROJECTION_MATRIX */ - 2133, /* GL_TRANSPOSE_TEXTURE_MATRIX */ - 2125, /* GL_TRANSPOSE_COLOR_MATRIX */ - 1868, /* GL_SUBTRACT */ - 1094, /* GL_MAX_RENDERBUFFER_SIZE */ - 287, /* GL_COMPRESSED_ALPHA */ - 291, /* GL_COMPRESSED_LUMINANCE */ - 292, /* GL_COMPRESSED_LUMINANCE_ALPHA */ - 289, /* GL_COMPRESSED_INTENSITY */ - 297, /* GL_COMPRESSED_RGB */ - 298, /* GL_COMPRESSED_RGBA */ - 2005, /* GL_TEXTURE_COMPRESSION_HINT */ - 2082, /* GL_TEXTURE_RECTANGLE */ - 1973, /* GL_TEXTURE_BINDING_RECTANGLE */ - 1501, /* GL_PROXY_TEXTURE_RECTANGLE */ - 1091, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */ - 427, /* GL_DEPTH_STENCIL */ - 2161, /* GL_UNSIGNED_INT_24_8 */ - 1107, /* GL_MAX_TEXTURE_LOD_BIAS */ - 2071, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ - 1109, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ - 2043, /* GL_TEXTURE_FILTER_CONTROL */ - 2061, /* GL_TEXTURE_LOD_BIAS */ - 271, /* GL_COMBINE4 */ - 1100, /* GL_MAX_SHININESS_NV */ - 1101, /* GL_MAX_SPOT_EXPONENT_NV */ - 728, /* GL_INCR_WRAP */ - 392, /* GL_DECR_WRAP */ - 1171, /* GL_MODELVIEW1_ARB */ - 1229, /* GL_NORMAL_MAP */ - 1552, /* GL_REFLECTION_MAP */ - 2015, /* GL_TEXTURE_CUBE_MAP */ - 1970, /* GL_TEXTURE_BINDING_CUBE_MAP */ - 2027, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ - 2017, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ - 2030, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ - 2020, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ - 2033, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ - 2023, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ - 1499, /* GL_PROXY_TEXTURE_CUBE_MAP */ - 1030, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ - 1207, /* GL_MULTISAMPLE_FILTER_HINT_NV */ - 1442, /* GL_PRIMITIVE_RESTART_NV */ - 1441, /* GL_PRIMITIVE_RESTART_INDEX_NV */ - 586, /* GL_FOG_DISTANCE_MODE_NV */ - 534, /* GL_EYE_RADIAL_NV */ - 533, /* GL_EYE_PLANE_ABSOLUTE_NV */ - 270, /* GL_COMBINE */ - 277, /* GL_COMBINE_RGB */ - 272, /* GL_COMBINE_ALPHA */ - 1680, /* GL_RGB_SCALE */ + 166, /* GL_CLIENT_ACTIVE_TEXTURE */ + 1117, /* GL_MAX_TEXTURE_UNITS */ + 2139, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ + 2142, /* GL_TRANSPOSE_PROJECTION_MATRIX */ + 2144, /* GL_TRANSPOSE_TEXTURE_MATRIX */ + 2136, /* GL_TRANSPOSE_COLOR_MATRIX */ + 1875, /* GL_SUBTRACT */ + 1098, /* GL_MAX_RENDERBUFFER_SIZE */ + 290, /* GL_COMPRESSED_ALPHA */ + 294, /* GL_COMPRESSED_LUMINANCE */ + 295, /* GL_COMPRESSED_LUMINANCE_ALPHA */ + 292, /* GL_COMPRESSED_INTENSITY */ + 300, /* GL_COMPRESSED_RGB */ + 301, /* GL_COMPRESSED_RGBA */ + 2016, /* GL_TEXTURE_COMPRESSION_HINT */ + 2093, /* GL_TEXTURE_RECTANGLE */ + 1981, /* GL_TEXTURE_BINDING_RECTANGLE */ + 1506, /* GL_PROXY_TEXTURE_RECTANGLE */ + 1095, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */ + 430, /* GL_DEPTH_STENCIL */ + 2172, /* GL_UNSIGNED_INT_24_8 */ + 1112, /* GL_MAX_TEXTURE_LOD_BIAS */ + 2082, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ + 1114, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ + 2054, /* GL_TEXTURE_FILTER_CONTROL */ + 2072, /* GL_TEXTURE_LOD_BIAS */ + 274, /* GL_COMBINE4 */ + 1104, /* GL_MAX_SHININESS_NV */ + 1105, /* GL_MAX_SPOT_EXPONENT_NV */ + 732, /* GL_INCR_WRAP */ + 395, /* GL_DECR_WRAP */ + 1176, /* GL_MODELVIEW1_ARB */ + 1234, /* GL_NORMAL_MAP */ + 1557, /* GL_REFLECTION_MAP */ + 2026, /* GL_TEXTURE_CUBE_MAP */ + 1978, /* GL_TEXTURE_BINDING_CUBE_MAP */ + 2038, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ + 2028, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ + 2041, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ + 2031, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ + 2044, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ + 2034, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ + 1504, /* GL_PROXY_TEXTURE_CUBE_MAP */ + 1034, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ + 1212, /* GL_MULTISAMPLE_FILTER_HINT_NV */ + 1447, /* GL_PRIMITIVE_RESTART_NV */ + 1446, /* GL_PRIMITIVE_RESTART_INDEX_NV */ + 590, /* GL_FOG_DISTANCE_MODE_NV */ + 537, /* GL_EYE_RADIAL_NV */ + 536, /* GL_EYE_PLANE_ABSOLUTE_NV */ + 273, /* GL_COMBINE */ + 280, /* GL_COMBINE_RGB */ + 275, /* GL_COMBINE_ALPHA */ + 1686, /* GL_RGB_SCALE */ 25, /* GL_ADD_SIGNED */ - 764, /* GL_INTERPOLATE */ - 313, /* GL_CONSTANT */ - 1434, /* GL_PRIMARY_COLOR */ - 1431, /* GL_PREVIOUS */ - 1773, /* GL_SOURCE0_RGB */ - 1779, /* GL_SOURCE1_RGB */ - 1785, /* GL_SOURCE2_RGB */ - 1789, /* GL_SOURCE3_RGB_NV */ - 1770, /* GL_SOURCE0_ALPHA */ - 1776, /* GL_SOURCE1_ALPHA */ - 1782, /* GL_SOURCE2_ALPHA */ - 1788, /* GL_SOURCE3_ALPHA_NV */ - 1270, /* GL_OPERAND0_RGB */ - 1276, /* GL_OPERAND1_RGB */ - 1282, /* GL_OPERAND2_RGB */ - 1286, /* GL_OPERAND3_RGB_NV */ - 1267, /* GL_OPERAND0_ALPHA */ - 1273, /* GL_OPERAND1_ALPHA */ - 1279, /* GL_OPERAND2_ALPHA */ - 1285, /* GL_OPERAND3_ALPHA_NV */ + 768, /* GL_INTERPOLATE */ + 316, /* GL_CONSTANT */ + 1439, /* GL_PRIMARY_COLOR */ + 1436, /* GL_PREVIOUS */ + 1780, /* GL_SOURCE0_RGB */ + 1786, /* GL_SOURCE1_RGB */ + 1792, /* GL_SOURCE2_RGB */ + 1796, /* GL_SOURCE3_RGB_NV */ + 1777, /* GL_SOURCE0_ALPHA */ + 1783, /* GL_SOURCE1_ALPHA */ + 1789, /* GL_SOURCE2_ALPHA */ + 1795, /* GL_SOURCE3_ALPHA_NV */ + 1275, /* GL_OPERAND0_RGB */ + 1281, /* GL_OPERAND1_RGB */ + 1287, /* GL_OPERAND2_RGB */ + 1291, /* GL_OPERAND3_RGB_NV */ + 1272, /* GL_OPERAND0_ALPHA */ + 1278, /* GL_OPERAND1_ALPHA */ + 1284, /* GL_OPERAND2_ALPHA */ + 1290, /* GL_OPERAND3_ALPHA_NV */ 137, /* GL_BUFFER_OBJECT_APPLE */ - 2213, /* GL_VERTEX_ARRAY_BINDING */ - 2080, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ - 2081, /* GL_TEXTURE_RANGE_POINTER_APPLE */ - 2290, /* GL_YCBCR_422_APPLE */ - 2202, /* GL_UNSIGNED_SHORT_8_8_APPLE */ - 2204, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ - 2092, /* GL_TEXTURE_STORAGE_HINT_APPLE */ - 1859, /* GL_STORAGE_PRIVATE_APPLE */ - 1858, /* GL_STORAGE_CACHED_APPLE */ - 1860, /* GL_STORAGE_SHARED_APPLE */ - 1760, /* GL_SLICE_ACCUM_SUN */ - 1510, /* GL_QUAD_MESH_SUN */ - 2139, /* GL_TRIANGLE_MESH_SUN */ - 2255, /* GL_VERTEX_PROGRAM_ARB */ - 2266, /* GL_VERTEX_STATE_PROGRAM_NV */ - 2240, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ - 2248, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ - 2250, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ - 2252, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ - 383, /* GL_CURRENT_VERTEX_ATTRIB */ - 1455, /* GL_PROGRAM_LENGTH_ARB */ - 1471, /* GL_PROGRAM_STRING_ARB */ - 1194, /* GL_MODELVIEW_PROJECTION_NV */ - 721, /* GL_IDENTITY_NV */ - 796, /* GL_INVERSE_NV */ - 2130, /* GL_TRANSPOSE_NV */ - 797, /* GL_INVERSE_TRANSPOSE_NV */ - 1075, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ - 1074, /* GL_MAX_PROGRAM_MATRICES_ARB */ - 956, /* GL_MATRIX0_NV */ - 968, /* GL_MATRIX1_NV */ - 980, /* GL_MATRIX2_NV */ - 984, /* GL_MATRIX3_NV */ - 986, /* GL_MATRIX4_NV */ - 988, /* GL_MATRIX5_NV */ - 990, /* GL_MATRIX6_NV */ - 992, /* GL_MATRIX7_NV */ - 366, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ - 363, /* GL_CURRENT_MATRIX_ARB */ - 1468, /* GL_PROGRAM_POINT_SIZE */ - 2261, /* GL_VERTEX_PROGRAM_TWO_SIDE */ - 1467, /* GL_PROGRAM_PARAMETER_NV */ - 2246, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ - 1473, /* GL_PROGRAM_TARGET_NV */ - 1470, /* GL_PROGRAM_RESIDENT_NV */ - 2102, /* GL_TRACK_MATRIX_NV */ - 2103, /* GL_TRACK_MATRIX_TRANSFORM_NV */ - 2256, /* GL_VERTEX_PROGRAM_BINDING_NV */ - 1449, /* GL_PROGRAM_ERROR_POSITION_ARB */ - 408, /* GL_DEPTH_CLAMP */ - 2221, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ - 2228, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ - 2229, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ - 2230, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ - 2231, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ - 2232, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ - 2233, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ - 2234, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ - 2235, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ - 2236, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ - 2222, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ - 2223, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ - 2224, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ - 2225, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ - 2226, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ - 2227, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ - 904, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ - 911, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ - 912, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ - 913, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ - 914, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ - 915, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ - 916, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ - 917, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ - 918, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ - 919, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ - 905, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ - 906, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ - 907, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ - 908, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ - 909, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ - 910, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ - 931, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ - 938, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ - 939, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ - 940, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ - 941, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ - 942, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ - 943, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ - 1448, /* GL_PROGRAM_BINDING_ARB */ - 945, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ - 946, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ - 932, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ - 933, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ - 934, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ - 935, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ - 936, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ - 937, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ - 2003, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ - 2000, /* GL_TEXTURE_COMPRESSED */ - 1235, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ - 311, /* GL_COMPRESSED_TEXTURE_FORMATS */ - 1134, /* GL_MAX_VERTEX_UNITS_ARB */ + 2224, /* GL_VERTEX_ARRAY_BINDING */ + 2091, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ + 2092, /* GL_TEXTURE_RANGE_POINTER_APPLE */ + 2301, /* GL_YCBCR_422_APPLE */ + 2213, /* GL_UNSIGNED_SHORT_8_8_APPLE */ + 2215, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ + 2103, /* GL_TEXTURE_STORAGE_HINT_APPLE */ + 1866, /* GL_STORAGE_PRIVATE_APPLE */ + 1865, /* GL_STORAGE_CACHED_APPLE */ + 1867, /* GL_STORAGE_SHARED_APPLE */ + 1767, /* GL_SLICE_ACCUM_SUN */ + 1515, /* GL_QUAD_MESH_SUN */ + 2150, /* GL_TRIANGLE_MESH_SUN */ + 2266, /* GL_VERTEX_PROGRAM_ARB */ + 2277, /* GL_VERTEX_STATE_PROGRAM_NV */ + 2251, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ + 2259, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ + 2261, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ + 2263, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ + 386, /* GL_CURRENT_VERTEX_ATTRIB */ + 1460, /* GL_PROGRAM_LENGTH_ARB */ + 1476, /* GL_PROGRAM_STRING_ARB */ + 1199, /* GL_MODELVIEW_PROJECTION_NV */ + 725, /* GL_IDENTITY_NV */ + 800, /* GL_INVERSE_NV */ + 2141, /* GL_TRANSPOSE_NV */ + 801, /* GL_INVERSE_TRANSPOSE_NV */ + 1079, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ + 1078, /* GL_MAX_PROGRAM_MATRICES_ARB */ + 960, /* GL_MATRIX0_NV */ + 972, /* GL_MATRIX1_NV */ + 984, /* GL_MATRIX2_NV */ + 988, /* GL_MATRIX3_NV */ + 990, /* GL_MATRIX4_NV */ + 992, /* GL_MATRIX5_NV */ + 994, /* GL_MATRIX6_NV */ + 996, /* GL_MATRIX7_NV */ + 369, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ + 366, /* GL_CURRENT_MATRIX_ARB */ + 1473, /* GL_PROGRAM_POINT_SIZE */ + 2272, /* GL_VERTEX_PROGRAM_TWO_SIDE */ + 1472, /* GL_PROGRAM_PARAMETER_NV */ + 2257, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ + 1478, /* GL_PROGRAM_TARGET_NV */ + 1475, /* GL_PROGRAM_RESIDENT_NV */ + 2113, /* GL_TRACK_MATRIX_NV */ + 2114, /* GL_TRACK_MATRIX_TRANSFORM_NV */ + 2267, /* GL_VERTEX_PROGRAM_BINDING_NV */ + 1454, /* GL_PROGRAM_ERROR_POSITION_ARB */ + 411, /* GL_DEPTH_CLAMP */ + 2232, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ + 2239, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ + 2240, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ + 2241, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ + 2242, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ + 2243, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ + 2244, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ + 2245, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ + 2246, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ + 2247, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ + 2233, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ + 2234, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ + 2235, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ + 2236, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ + 2237, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ + 2238, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ + 908, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ + 915, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ + 916, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ + 917, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ + 918, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ + 919, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ + 920, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ + 921, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ + 922, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ + 923, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ + 909, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ + 910, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ + 911, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ + 912, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ + 913, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ + 914, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ + 935, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ + 942, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ + 943, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ + 944, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ + 945, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ + 946, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ + 947, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ + 1453, /* GL_PROGRAM_BINDING_ARB */ + 949, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ + 950, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ + 936, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ + 937, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ + 938, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ + 939, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ + 940, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ + 941, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ + 2014, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ + 2011, /* GL_TEXTURE_COMPRESSED */ + 1240, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ + 314, /* GL_COMPRESSED_TEXTURE_FORMATS */ + 1139, /* GL_MAX_VERTEX_UNITS_ARB */ 23, /* GL_ACTIVE_VERTEX_UNITS_ARB */ - 2284, /* GL_WEIGHT_SUM_UNITY_ARB */ - 2254, /* GL_VERTEX_BLEND_ARB */ - 385, /* GL_CURRENT_WEIGHT_ARB */ - 2282, /* GL_WEIGHT_ARRAY_TYPE_ARB */ - 2280, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ - 2278, /* GL_WEIGHT_ARRAY_SIZE_ARB */ - 2276, /* GL_WEIGHT_ARRAY_POINTER_ARB */ - 2271, /* GL_WEIGHT_ARRAY_ARB */ - 442, /* GL_DOT3_RGB */ - 443, /* GL_DOT3_RGBA */ - 305, /* GL_COMPRESSED_RGB_FXT1_3DFX */ - 300, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ - 1202, /* GL_MULTISAMPLE_3DFX */ - 1718, /* GL_SAMPLE_BUFFERS_3DFX */ - 1709, /* GL_SAMPLES_3DFX */ - 1182, /* GL_MODELVIEW2_ARB */ - 1185, /* GL_MODELVIEW3_ARB */ - 1186, /* GL_MODELVIEW4_ARB */ - 1187, /* GL_MODELVIEW5_ARB */ - 1188, /* GL_MODELVIEW6_ARB */ - 1189, /* GL_MODELVIEW7_ARB */ - 1190, /* GL_MODELVIEW8_ARB */ - 1191, /* GL_MODELVIEW9_ARB */ - 1161, /* GL_MODELVIEW10_ARB */ - 1162, /* GL_MODELVIEW11_ARB */ - 1163, /* GL_MODELVIEW12_ARB */ - 1164, /* GL_MODELVIEW13_ARB */ - 1165, /* GL_MODELVIEW14_ARB */ - 1166, /* GL_MODELVIEW15_ARB */ - 1167, /* GL_MODELVIEW16_ARB */ - 1168, /* GL_MODELVIEW17_ARB */ - 1169, /* GL_MODELVIEW18_ARB */ - 1170, /* GL_MODELVIEW19_ARB */ - 1172, /* GL_MODELVIEW20_ARB */ - 1173, /* GL_MODELVIEW21_ARB */ - 1174, /* GL_MODELVIEW22_ARB */ - 1175, /* GL_MODELVIEW23_ARB */ - 1176, /* GL_MODELVIEW24_ARB */ - 1177, /* GL_MODELVIEW25_ARB */ - 1178, /* GL_MODELVIEW26_ARB */ - 1179, /* GL_MODELVIEW27_ARB */ - 1180, /* GL_MODELVIEW28_ARB */ - 1181, /* GL_MODELVIEW29_ARB */ - 1183, /* GL_MODELVIEW30_ARB */ - 1184, /* GL_MODELVIEW31_ARB */ - 447, /* GL_DOT3_RGB_EXT */ - 445, /* GL_DOT3_RGBA_EXT */ - 1155, /* GL_MIRROR_CLAMP_EXT */ - 1158, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ - 1197, /* GL_MODULATE_ADD_ATI */ - 1198, /* GL_MODULATE_SIGNED_ADD_ATI */ - 1199, /* GL_MODULATE_SUBTRACT_ATI */ - 2291, /* GL_YCBCR_MESA */ - 1294, /* GL_PACK_INVERT_MESA */ - 388, /* GL_DEBUG_OBJECT_MESA */ - 389, /* GL_DEBUG_PRINT_MESA */ - 387, /* GL_DEBUG_ASSERT_MESA */ + 2295, /* GL_WEIGHT_SUM_UNITY_ARB */ + 2265, /* GL_VERTEX_BLEND_ARB */ + 388, /* GL_CURRENT_WEIGHT_ARB */ + 2293, /* GL_WEIGHT_ARRAY_TYPE_ARB */ + 2291, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ + 2289, /* GL_WEIGHT_ARRAY_SIZE_ARB */ + 2287, /* GL_WEIGHT_ARRAY_POINTER_ARB */ + 2282, /* GL_WEIGHT_ARRAY_ARB */ + 445, /* GL_DOT3_RGB */ + 446, /* GL_DOT3_RGBA */ + 308, /* GL_COMPRESSED_RGB_FXT1_3DFX */ + 303, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ + 1207, /* GL_MULTISAMPLE_3DFX */ + 1725, /* GL_SAMPLE_BUFFERS_3DFX */ + 1716, /* GL_SAMPLES_3DFX */ + 1187, /* GL_MODELVIEW2_ARB */ + 1190, /* GL_MODELVIEW3_ARB */ + 1191, /* GL_MODELVIEW4_ARB */ + 1192, /* GL_MODELVIEW5_ARB */ + 1193, /* GL_MODELVIEW6_ARB */ + 1194, /* GL_MODELVIEW7_ARB */ + 1195, /* GL_MODELVIEW8_ARB */ + 1196, /* GL_MODELVIEW9_ARB */ + 1166, /* GL_MODELVIEW10_ARB */ + 1167, /* GL_MODELVIEW11_ARB */ + 1168, /* GL_MODELVIEW12_ARB */ + 1169, /* GL_MODELVIEW13_ARB */ + 1170, /* GL_MODELVIEW14_ARB */ + 1171, /* GL_MODELVIEW15_ARB */ + 1172, /* GL_MODELVIEW16_ARB */ + 1173, /* GL_MODELVIEW17_ARB */ + 1174, /* GL_MODELVIEW18_ARB */ + 1175, /* GL_MODELVIEW19_ARB */ + 1177, /* GL_MODELVIEW20_ARB */ + 1178, /* GL_MODELVIEW21_ARB */ + 1179, /* GL_MODELVIEW22_ARB */ + 1180, /* GL_MODELVIEW23_ARB */ + 1181, /* GL_MODELVIEW24_ARB */ + 1182, /* GL_MODELVIEW25_ARB */ + 1183, /* GL_MODELVIEW26_ARB */ + 1184, /* GL_MODELVIEW27_ARB */ + 1185, /* GL_MODELVIEW28_ARB */ + 1186, /* GL_MODELVIEW29_ARB */ + 1188, /* GL_MODELVIEW30_ARB */ + 1189, /* GL_MODELVIEW31_ARB */ + 450, /* GL_DOT3_RGB_EXT */ + 448, /* GL_DOT3_RGBA_EXT */ + 1160, /* GL_MIRROR_CLAMP_EXT */ + 1163, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ + 1202, /* GL_MODULATE_ADD_ATI */ + 1203, /* GL_MODULATE_SIGNED_ADD_ATI */ + 1204, /* GL_MODULATE_SUBTRACT_ATI */ + 2302, /* GL_YCBCR_MESA */ + 1299, /* GL_PACK_INVERT_MESA */ + 391, /* GL_DEBUG_OBJECT_MESA */ + 392, /* GL_DEBUG_PRINT_MESA */ + 390, /* GL_DEBUG_ASSERT_MESA */ 139, /* GL_BUFFER_SIZE */ 141, /* GL_BUFFER_USAGE */ 145, /* GL_BUMP_ROT_MATRIX_ATI */ 146, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */ 144, /* GL_BUMP_NUM_TEX_UNITS_ATI */ 148, /* GL_BUMP_TEX_UNITS_ATI */ - 507, /* GL_DUDV_ATI */ - 506, /* GL_DU8DV8_ATI */ + 510, /* GL_DUDV_ATI */ + 509, /* GL_DU8DV8_ATI */ 143, /* GL_BUMP_ENVMAP_ATI */ 147, /* GL_BUMP_TARGET_ATI */ - 1238, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ - 1446, /* GL_PROGRAM_BINARY_FORMATS_OES */ - 1822, /* GL_STENCIL_BACK_FUNC */ - 1820, /* GL_STENCIL_BACK_FAIL */ - 1824, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ - 1826, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ - 595, /* GL_FRAGMENT_PROGRAM_ARB */ - 1444, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ - 1476, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ - 1475, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ - 1458, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - 1464, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - 1463, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - 1064, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ - 1089, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ - 1088, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ - 1077, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - 1083, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - 1082, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - 1652, /* GL_RGBA32F */ - 1615, /* GL_RGB32F */ - 1643, /* GL_RGBA16F */ - 1607, /* GL_RGB16F */ - 1033, /* GL_MAX_DRAW_BUFFERS */ - 451, /* GL_DRAW_BUFFER0 */ - 454, /* GL_DRAW_BUFFER1 */ - 475, /* GL_DRAW_BUFFER2 */ - 478, /* GL_DRAW_BUFFER3 */ - 481, /* GL_DRAW_BUFFER4 */ - 484, /* GL_DRAW_BUFFER5 */ - 487, /* GL_DRAW_BUFFER6 */ - 490, /* GL_DRAW_BUFFER7 */ - 493, /* GL_DRAW_BUFFER8 */ - 496, /* GL_DRAW_BUFFER9 */ - 455, /* GL_DRAW_BUFFER10 */ - 458, /* GL_DRAW_BUFFER11 */ - 461, /* GL_DRAW_BUFFER12 */ - 464, /* GL_DRAW_BUFFER13 */ - 467, /* GL_DRAW_BUFFER14 */ - 470, /* GL_DRAW_BUFFER15 */ + 1243, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ + 1451, /* GL_PROGRAM_BINARY_FORMATS_OES */ + 1829, /* GL_STENCIL_BACK_FUNC */ + 1827, /* GL_STENCIL_BACK_FAIL */ + 1831, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ + 1833, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ + 599, /* GL_FRAGMENT_PROGRAM_ARB */ + 1449, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ + 1481, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ + 1480, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ + 1463, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + 1469, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + 1468, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + 1068, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ + 1093, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ + 1092, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ + 1081, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + 1087, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + 1086, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + 1657, /* GL_RGBA32F */ + 1620, /* GL_RGB32F */ + 1648, /* GL_RGBA16F */ + 1612, /* GL_RGB16F */ + 1676, /* GL_RGBA_FLOAT_MODE_ARB */ + 1037, /* GL_MAX_DRAW_BUFFERS */ + 454, /* GL_DRAW_BUFFER0 */ + 457, /* GL_DRAW_BUFFER1 */ + 478, /* GL_DRAW_BUFFER2 */ + 481, /* GL_DRAW_BUFFER3 */ + 484, /* GL_DRAW_BUFFER4 */ + 487, /* GL_DRAW_BUFFER5 */ + 490, /* GL_DRAW_BUFFER6 */ + 493, /* GL_DRAW_BUFFER7 */ + 496, /* GL_DRAW_BUFFER8 */ + 499, /* GL_DRAW_BUFFER9 */ + 458, /* GL_DRAW_BUFFER10 */ + 461, /* GL_DRAW_BUFFER11 */ + 464, /* GL_DRAW_BUFFER12 */ + 467, /* GL_DRAW_BUFFER13 */ + 470, /* GL_DRAW_BUFFER14 */ + 473, /* GL_DRAW_BUFFER15 */ 97, /* GL_BLEND_EQUATION_ALPHA */ - 1007, /* GL_MATRIX_PALETTE_ARB */ - 1057, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ - 1060, /* GL_MAX_PALETTE_MATRICES_ARB */ - 369, /* GL_CURRENT_PALETTE_MATRIX_ARB */ - 995, /* GL_MATRIX_INDEX_ARRAY_ARB */ - 364, /* GL_CURRENT_MATRIX_INDEX_ARB */ - 1000, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ - 1004, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ - 1002, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ - 998, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ - 2038, /* GL_TEXTURE_DEPTH_SIZE */ - 435, /* GL_DEPTH_TEXTURE_MODE */ - 1995, /* GL_TEXTURE_COMPARE_MODE */ - 1993, /* GL_TEXTURE_COMPARE_FUNC */ - 281, /* GL_COMPARE_REF_TO_TEXTURE */ - 1371, /* GL_POINT_SPRITE */ - 343, /* GL_COORD_REPLACE */ - 1376, /* GL_POINT_SPRITE_R_MODE_NV */ - 1516, /* GL_QUERY_COUNTER_BITS */ - 372, /* GL_CURRENT_QUERY */ - 1520, /* GL_QUERY_RESULT */ - 1522, /* GL_QUERY_RESULT_AVAILABLE */ - 1126, /* GL_MAX_VERTEX_ATTRIBS */ - 2244, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ - 433, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ - 432, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ - 1103, /* GL_MAX_TEXTURE_COORDS */ - 1105, /* GL_MAX_TEXTURE_IMAGE_UNITS */ - 1451, /* GL_PROGRAM_ERROR_STRING_ARB */ - 1453, /* GL_PROGRAM_FORMAT_ASCII_ARB */ - 1452, /* GL_PROGRAM_FORMAT_ARB */ - 2094, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ - 405, /* GL_DEPTH_BOUNDS_TEST_EXT */ - 404, /* GL_DEPTH_BOUNDS_EXT */ + 1011, /* GL_MATRIX_PALETTE_ARB */ + 1061, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ + 1064, /* GL_MAX_PALETTE_MATRICES_ARB */ + 372, /* GL_CURRENT_PALETTE_MATRIX_ARB */ + 999, /* GL_MATRIX_INDEX_ARRAY_ARB */ + 367, /* GL_CURRENT_MATRIX_INDEX_ARB */ + 1004, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ + 1008, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ + 1006, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ + 1002, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ + 2049, /* GL_TEXTURE_DEPTH_SIZE */ + 438, /* GL_DEPTH_TEXTURE_MODE */ + 2006, /* GL_TEXTURE_COMPARE_MODE */ + 2004, /* GL_TEXTURE_COMPARE_FUNC */ + 284, /* GL_COMPARE_REF_TO_TEXTURE */ + 1376, /* GL_POINT_SPRITE */ + 346, /* GL_COORD_REPLACE */ + 1381, /* GL_POINT_SPRITE_R_MODE_NV */ + 1521, /* GL_QUERY_COUNTER_BITS */ + 375, /* GL_CURRENT_QUERY */ + 1525, /* GL_QUERY_RESULT */ + 1527, /* GL_QUERY_RESULT_AVAILABLE */ + 1131, /* GL_MAX_VERTEX_ATTRIBS */ + 2255, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ + 436, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ + 435, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ + 1108, /* GL_MAX_TEXTURE_COORDS */ + 1110, /* GL_MAX_TEXTURE_IMAGE_UNITS */ + 1456, /* GL_PROGRAM_ERROR_STRING_ARB */ + 1458, /* GL_PROGRAM_FORMAT_ASCII_ARB */ + 1457, /* GL_PROGRAM_FORMAT_ARB */ + 2105, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ + 408, /* GL_DEPTH_BOUNDS_TEST_EXT */ + 407, /* GL_DEPTH_BOUNDS_EXT */ 61, /* GL_ARRAY_BUFFER */ - 520, /* GL_ELEMENT_ARRAY_BUFFER */ + 523, /* GL_ELEMENT_ARRAY_BUFFER */ 62, /* GL_ARRAY_BUFFER_BINDING */ - 521, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ - 2215, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ - 1224, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ - 187, /* GL_COLOR_ARRAY_BUFFER_BINDING */ - 732, /* GL_INDEX_ARRAY_BUFFER_BINDING */ - 2008, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ - 516, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ - 1730, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ - 573, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ - 2272, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ - 2237, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ - 1454, /* GL_PROGRAM_INSTRUCTIONS_ARB */ - 1070, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ - 1460, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - 1079, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - 1474, /* GL_PROGRAM_TEMPORARIES_ARB */ - 1085, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ - 1462, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ - 1081, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ - 1466, /* GL_PROGRAM_PARAMETERS_ARB */ - 1084, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ - 1461, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ - 1080, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ - 1445, /* GL_PROGRAM_ATTRIBS_ARB */ - 1065, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ - 1459, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ - 1078, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ - 1443, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ - 1063, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ - 1457, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - 1076, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - 1071, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ - 1067, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ - 1477, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ - 2127, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ - 1539, /* GL_READ_ONLY */ - 2286, /* GL_WRITE_ONLY */ - 1541, /* GL_READ_WRITE */ + 524, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ + 2226, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ + 1229, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ + 190, /* GL_COLOR_ARRAY_BUFFER_BINDING */ + 736, /* GL_INDEX_ARRAY_BUFFER_BINDING */ + 2019, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ + 519, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ + 1737, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ + 577, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ + 2283, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ + 2248, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ + 1459, /* GL_PROGRAM_INSTRUCTIONS_ARB */ + 1074, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ + 1465, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + 1083, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + 1479, /* GL_PROGRAM_TEMPORARIES_ARB */ + 1089, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ + 1467, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ + 1085, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ + 1471, /* GL_PROGRAM_PARAMETERS_ARB */ + 1088, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ + 1466, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ + 1084, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ + 1450, /* GL_PROGRAM_ATTRIBS_ARB */ + 1069, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ + 1464, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ + 1082, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ + 1448, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ + 1067, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ + 1462, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + 1080, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + 1075, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ + 1071, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ + 1482, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ + 2138, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ + 1544, /* GL_READ_ONLY */ + 2297, /* GL_WRITE_ONLY */ + 1546, /* GL_READ_WRITE */ 124, /* GL_BUFFER_ACCESS */ 129, /* GL_BUFFER_MAPPED */ 134, /* GL_BUFFER_MAP_POINTER */ - 2101, /* GL_TIME_ELAPSED_EXT */ - 955, /* GL_MATRIX0_ARB */ - 967, /* GL_MATRIX1_ARB */ - 979, /* GL_MATRIX2_ARB */ - 983, /* GL_MATRIX3_ARB */ - 985, /* GL_MATRIX4_ARB */ - 987, /* GL_MATRIX5_ARB */ - 989, /* GL_MATRIX6_ARB */ - 991, /* GL_MATRIX7_ARB */ - 993, /* GL_MATRIX8_ARB */ - 994, /* GL_MATRIX9_ARB */ - 957, /* GL_MATRIX10_ARB */ - 958, /* GL_MATRIX11_ARB */ - 959, /* GL_MATRIX12_ARB */ - 960, /* GL_MATRIX13_ARB */ - 961, /* GL_MATRIX14_ARB */ - 962, /* GL_MATRIX15_ARB */ - 963, /* GL_MATRIX16_ARB */ - 964, /* GL_MATRIX17_ARB */ - 965, /* GL_MATRIX18_ARB */ - 966, /* GL_MATRIX19_ARB */ - 969, /* GL_MATRIX20_ARB */ - 970, /* GL_MATRIX21_ARB */ - 971, /* GL_MATRIX22_ARB */ - 972, /* GL_MATRIX23_ARB */ - 973, /* GL_MATRIX24_ARB */ - 974, /* GL_MATRIX25_ARB */ - 975, /* GL_MATRIX26_ARB */ - 976, /* GL_MATRIX27_ARB */ - 977, /* GL_MATRIX28_ARB */ - 978, /* GL_MATRIX29_ARB */ - 981, /* GL_MATRIX30_ARB */ - 982, /* GL_MATRIX31_ARB */ - 1863, /* GL_STREAM_DRAW */ - 1865, /* GL_STREAM_READ */ - 1861, /* GL_STREAM_COPY */ - 1812, /* GL_STATIC_DRAW */ - 1814, /* GL_STATIC_READ */ - 1810, /* GL_STATIC_COPY */ - 510, /* GL_DYNAMIC_DRAW */ - 512, /* GL_DYNAMIC_READ */ - 508, /* GL_DYNAMIC_COPY */ - 1334, /* GL_PIXEL_PACK_BUFFER */ - 1338, /* GL_PIXEL_UNPACK_BUFFER */ - 1335, /* GL_PIXEL_PACK_BUFFER_BINDING */ - 1339, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ - 396, /* GL_DEPTH24_STENCIL8 */ - 2090, /* GL_TEXTURE_STENCIL_SIZE */ - 2036, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ - 1066, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ - 1069, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ - 1073, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ - 1072, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ - 2242, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */ - 2239, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */ - 1012, /* GL_MAX_ARRAY_TEXTURE_LAYERS */ - 1149, /* GL_MIN_PROGRAM_TEXEL_OFFSET */ - 1086, /* GL_MAX_PROGRAM_TEXEL_OFFSET */ - 1854, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ + 2112, /* GL_TIME_ELAPSED_EXT */ + 959, /* GL_MATRIX0_ARB */ + 971, /* GL_MATRIX1_ARB */ + 983, /* GL_MATRIX2_ARB */ + 987, /* GL_MATRIX3_ARB */ + 989, /* GL_MATRIX4_ARB */ + 991, /* GL_MATRIX5_ARB */ + 993, /* GL_MATRIX6_ARB */ + 995, /* GL_MATRIX7_ARB */ + 997, /* GL_MATRIX8_ARB */ + 998, /* GL_MATRIX9_ARB */ + 961, /* GL_MATRIX10_ARB */ + 962, /* GL_MATRIX11_ARB */ + 963, /* GL_MATRIX12_ARB */ + 964, /* GL_MATRIX13_ARB */ + 965, /* GL_MATRIX14_ARB */ + 966, /* GL_MATRIX15_ARB */ + 967, /* GL_MATRIX16_ARB */ + 968, /* GL_MATRIX17_ARB */ + 969, /* GL_MATRIX18_ARB */ + 970, /* GL_MATRIX19_ARB */ + 973, /* GL_MATRIX20_ARB */ + 974, /* GL_MATRIX21_ARB */ + 975, /* GL_MATRIX22_ARB */ + 976, /* GL_MATRIX23_ARB */ + 977, /* GL_MATRIX24_ARB */ + 978, /* GL_MATRIX25_ARB */ + 979, /* GL_MATRIX26_ARB */ + 980, /* GL_MATRIX27_ARB */ + 981, /* GL_MATRIX28_ARB */ + 982, /* GL_MATRIX29_ARB */ + 985, /* GL_MATRIX30_ARB */ + 986, /* GL_MATRIX31_ARB */ + 1870, /* GL_STREAM_DRAW */ + 1872, /* GL_STREAM_READ */ + 1868, /* GL_STREAM_COPY */ + 1819, /* GL_STATIC_DRAW */ + 1821, /* GL_STATIC_READ */ + 1817, /* GL_STATIC_COPY */ + 513, /* GL_DYNAMIC_DRAW */ + 515, /* GL_DYNAMIC_READ */ + 511, /* GL_DYNAMIC_COPY */ + 1339, /* GL_PIXEL_PACK_BUFFER */ + 1343, /* GL_PIXEL_UNPACK_BUFFER */ + 1340, /* GL_PIXEL_PACK_BUFFER_BINDING */ + 1344, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ + 399, /* GL_DEPTH24_STENCIL8 */ + 2101, /* GL_TEXTURE_STENCIL_SIZE */ + 2047, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ + 1070, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ + 1073, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ + 1077, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ + 1076, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ + 2253, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */ + 2250, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */ + 1016, /* GL_MAX_ARRAY_TEXTURE_LAYERS */ + 1154, /* GL_MIN_PROGRAM_TEXEL_OFFSET */ + 1090, /* GL_MAX_PROGRAM_TEXEL_OFFSET */ + 1861, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ 18, /* GL_ACTIVE_STENCIL_FACE_EXT */ - 1156, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ - 1711, /* GL_SAMPLES_PASSED */ - 688, /* GL_GEOMETRY_VERTICES_OUT */ - 682, /* GL_GEOMETRY_INPUT_TYPE */ - 684, /* GL_GEOMETRY_OUTPUT_TYPE */ - 156, /* GL_CLAMP_READ_COLOR */ - 546, /* GL_FIXED_ONLY */ - 1358, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ - 1357, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ - 1356, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ - 1193, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ - 1480, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ - 2070, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ + 1161, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ + 1718, /* GL_SAMPLES_PASSED */ + 692, /* GL_GEOMETRY_VERTICES_OUT */ + 686, /* GL_GEOMETRY_INPUT_TYPE */ + 688, /* GL_GEOMETRY_OUTPUT_TYPE */ + 1709, /* GL_SAMPLER_BINDING */ + 164, /* GL_CLAMP_VERTEX_COLOR_ARB */ + 156, /* GL_CLAMP_FRAGMENT_COLOR_ARB */ + 157, /* GL_CLAMP_READ_COLOR */ + 549, /* GL_FIXED_ONLY */ + 1363, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ + 1362, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ + 1361, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ + 1198, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ + 1485, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ + 2081, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ 138, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */ 128, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */ - 1556, /* GL_RELEASED_APPLE */ - 2269, /* GL_VOLATILE_APPLE */ - 1595, /* GL_RETAINED_APPLE */ - 2144, /* GL_UNDEFINED_APPLE */ - 1504, /* GL_PURGEABLE_APPLE */ - 596, /* GL_FRAGMENT_SHADER */ - 2264, /* GL_VERTEX_SHADER */ - 1465, /* GL_PROGRAM_OBJECT_ARB */ - 1747, /* GL_SHADER_OBJECT_ARB */ - 1041, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ - 1131, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ - 1122, /* GL_MAX_VARYING_COMPONENTS */ - 1129, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ - 1024, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ - 1254, /* GL_OBJECT_TYPE_ARB */ - 1749, /* GL_SHADER_TYPE */ - 561, /* GL_FLOAT_VEC2 */ - 563, /* GL_FLOAT_VEC3 */ - 565, /* GL_FLOAT_VEC4 */ - 784, /* GL_INT_VEC2 */ - 786, /* GL_INT_VEC3 */ - 788, /* GL_INT_VEC4 */ + 1561, /* GL_RELEASED_APPLE */ + 2280, /* GL_VOLATILE_APPLE */ + 1600, /* GL_RETAINED_APPLE */ + 2155, /* GL_UNDEFINED_APPLE */ + 1509, /* GL_PURGEABLE_APPLE */ + 600, /* GL_FRAGMENT_SHADER */ + 2275, /* GL_VERTEX_SHADER */ + 1470, /* GL_PROGRAM_OBJECT_ARB */ + 1754, /* GL_SHADER_OBJECT_ARB */ + 1045, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ + 1136, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ + 1127, /* GL_MAX_VARYING_COMPONENTS */ + 1134, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ + 1028, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ + 1259, /* GL_OBJECT_TYPE_ARB */ + 1756, /* GL_SHADER_TYPE */ + 565, /* GL_FLOAT_VEC2 */ + 567, /* GL_FLOAT_VEC3 */ + 569, /* GL_FLOAT_VEC4 */ + 788, /* GL_INT_VEC2 */ + 790, /* GL_INT_VEC3 */ + 792, /* GL_INT_VEC4 */ 116, /* GL_BOOL */ 118, /* GL_BOOL_VEC2 */ 120, /* GL_BOOL_VEC3 */ 122, /* GL_BOOL_VEC4 */ - 549, /* GL_FLOAT_MAT2 */ - 553, /* GL_FLOAT_MAT3 */ - 557, /* GL_FLOAT_MAT4 */ - 1687, /* GL_SAMPLER_1D */ - 1693, /* GL_SAMPLER_2D */ - 1701, /* GL_SAMPLER_3D */ - 1705, /* GL_SAMPLER_CUBE */ - 1692, /* GL_SAMPLER_1D_SHADOW */ - 1700, /* GL_SAMPLER_2D_SHADOW */ - 1698, /* GL_SAMPLER_2D_RECT */ - 1699, /* GL_SAMPLER_2D_RECT_SHADOW */ - 551, /* GL_FLOAT_MAT2x3 */ - 552, /* GL_FLOAT_MAT2x4 */ - 555, /* GL_FLOAT_MAT3x2 */ - 556, /* GL_FLOAT_MAT3x4 */ - 559, /* GL_FLOAT_MAT4x2 */ - 560, /* GL_FLOAT_MAT4x3 */ - 394, /* GL_DELETE_STATUS */ - 286, /* GL_COMPILE_STATUS */ - 845, /* GL_LINK_STATUS */ - 2209, /* GL_VALIDATE_STATUS */ - 744, /* GL_INFO_LOG_LENGTH */ + 553, /* GL_FLOAT_MAT2 */ + 557, /* GL_FLOAT_MAT3 */ + 561, /* GL_FLOAT_MAT4 */ + 1693, /* GL_SAMPLER_1D */ + 1699, /* GL_SAMPLER_2D */ + 1707, /* GL_SAMPLER_3D */ + 1712, /* GL_SAMPLER_CUBE */ + 1698, /* GL_SAMPLER_1D_SHADOW */ + 1706, /* GL_SAMPLER_2D_SHADOW */ + 1704, /* GL_SAMPLER_2D_RECT */ + 1705, /* GL_SAMPLER_2D_RECT_SHADOW */ + 555, /* GL_FLOAT_MAT2x3 */ + 556, /* GL_FLOAT_MAT2x4 */ + 559, /* GL_FLOAT_MAT3x2 */ + 560, /* GL_FLOAT_MAT3x4 */ + 563, /* GL_FLOAT_MAT4x2 */ + 564, /* GL_FLOAT_MAT4x3 */ + 397, /* GL_DELETE_STATUS */ + 289, /* GL_COMPILE_STATUS */ + 849, /* GL_LINK_STATUS */ + 2220, /* GL_VALIDATE_STATUS */ + 748, /* GL_INFO_LOG_LENGTH */ 64, /* GL_ATTACHED_SHADERS */ 21, /* GL_ACTIVE_UNIFORMS */ 22, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */ - 1748, /* GL_SHADER_SOURCE_LENGTH */ + 1755, /* GL_SHADER_SOURCE_LENGTH */ 15, /* GL_ACTIVE_ATTRIBUTES */ 16, /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */ - 598, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ - 1751, /* GL_SHADING_LANGUAGE_VERSION */ - 371, /* GL_CURRENT_PROGRAM */ - 1303, /* GL_PALETTE4_RGB8_OES */ - 1305, /* GL_PALETTE4_RGBA8_OES */ - 1301, /* GL_PALETTE4_R5_G6_B5_OES */ - 1304, /* GL_PALETTE4_RGBA4_OES */ - 1302, /* GL_PALETTE4_RGB5_A1_OES */ - 1308, /* GL_PALETTE8_RGB8_OES */ - 1310, /* GL_PALETTE8_RGBA8_OES */ - 1306, /* GL_PALETTE8_R5_G6_B5_OES */ - 1309, /* GL_PALETTE8_RGBA4_OES */ - 1307, /* GL_PALETTE8_RGB5_A1_OES */ - 725, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */ - 723, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */ - 1355, /* GL_POINT_SIZE_ARRAY_OES */ - 2014, /* GL_TEXTURE_CROP_RECT_OES */ - 996, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ - 1354, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ - 2192, /* GL_UNSIGNED_NORMALIZED */ - 1951, /* GL_TEXTURE_1D_ARRAY */ - 1490, /* GL_PROXY_TEXTURE_1D_ARRAY */ - 1954, /* GL_TEXTURE_2D_ARRAY */ - 1494, /* GL_PROXY_TEXTURE_2D_ARRAY */ - 1962, /* GL_TEXTURE_BINDING_1D_ARRAY */ - 1965, /* GL_TEXTURE_BINDING_2D_ARRAY */ - 1048, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */ - 1981, /* GL_TEXTURE_BUFFER */ - 1102, /* GL_MAX_TEXTURE_BUFFER_SIZE */ - 1969, /* GL_TEXTURE_BINDING_BUFFER */ - 1982, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */ - 1983, /* GL_TEXTURE_BUFFER_FORMAT */ - 1527, /* GL_R11F_G11F_B10F */ - 2158, /* GL_UNSIGNED_INT_10F_11F_11F_REV */ - 1638, /* GL_RGB9_E5 */ - 2167, /* GL_UNSIGNED_INT_5_9_9_9_REV */ - 2088, /* GL_TEXTURE_SHARED_SIZE */ - 1804, /* GL_SRGB */ - 1805, /* GL_SRGB8 */ - 1807, /* GL_SRGB_ALPHA */ - 1806, /* GL_SRGB8_ALPHA8 */ - 1764, /* GL_SLUMINANCE_ALPHA */ - 1763, /* GL_SLUMINANCE8_ALPHA8 */ - 1761, /* GL_SLUMINANCE */ - 1762, /* GL_SLUMINANCE8 */ - 309, /* GL_COMPRESSED_SRGB */ - 310, /* GL_COMPRESSED_SRGB_ALPHA */ - 307, /* GL_COMPRESSED_SLUMINANCE */ - 308, /* GL_COMPRESSED_SLUMINANCE_ALPHA */ - 2123, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */ - 2112, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */ - 1120, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */ - 2121, /* GL_TRANSFORM_FEEDBACK_VARYINGS */ - 2117, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */ - 2115, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */ - 1437, /* GL_PRIMITIVES_GENERATED */ - 2119, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */ - 1531, /* GL_RASTERIZER_DISCARD */ - 1116, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */ - 1118, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */ - 762, /* GL_INTERLEAVED_ATTRIBS */ - 1740, /* GL_SEPARATE_ATTRIBS */ - 2107, /* GL_TRANSFORM_FEEDBACK_BUFFER */ - 2109, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */ - 1373, /* GL_POINT_SPRITE_COORD_ORIGIN */ - 853, /* GL_LOWER_LEFT */ - 2206, /* GL_UPPER_LEFT */ - 1828, /* GL_STENCIL_BACK_REF */ - 1829, /* GL_STENCIL_BACK_VALUE_MASK */ - 1830, /* GL_STENCIL_BACK_WRITEMASK */ - 500, /* GL_DRAW_FRAMEBUFFER_BINDING */ - 1561, /* GL_RENDERBUFFER_BINDING */ - 1535, /* GL_READ_FRAMEBUFFER */ - 499, /* GL_DRAW_FRAMEBUFFER */ - 1536, /* GL_READ_FRAMEBUFFER_BINDING */ - 1580, /* GL_RENDERBUFFER_SAMPLES */ - 612, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ - 609, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ - 624, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ - 619, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ - 622, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ - 630, /* GL_FRAMEBUFFER_COMPLETE */ - 635, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ - 650, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ - 644, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ - 639, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ - 645, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ - 641, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ - 655, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ - 661, /* GL_FRAMEBUFFER_UNSUPPORTED */ - 659, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ - 1020, /* GL_MAX_COLOR_ATTACHMENTS */ - 193, /* GL_COLOR_ATTACHMENT0 */ - 196, /* GL_COLOR_ATTACHMENT1 */ - 210, /* GL_COLOR_ATTACHMENT2 */ - 212, /* GL_COLOR_ATTACHMENT3 */ - 214, /* GL_COLOR_ATTACHMENT4 */ - 216, /* GL_COLOR_ATTACHMENT5 */ - 218, /* GL_COLOR_ATTACHMENT6 */ - 220, /* GL_COLOR_ATTACHMENT7 */ - 222, /* GL_COLOR_ATTACHMENT8 */ - 224, /* GL_COLOR_ATTACHMENT9 */ - 197, /* GL_COLOR_ATTACHMENT10 */ - 199, /* GL_COLOR_ATTACHMENT11 */ - 201, /* GL_COLOR_ATTACHMENT12 */ - 203, /* GL_COLOR_ATTACHMENT13 */ - 205, /* GL_COLOR_ATTACHMENT14 */ - 207, /* GL_COLOR_ATTACHMENT15 */ - 399, /* GL_DEPTH_ATTACHMENT */ - 1817, /* GL_STENCIL_ATTACHMENT */ - 600, /* GL_FRAMEBUFFER */ - 1558, /* GL_RENDERBUFFER */ - 1584, /* GL_RENDERBUFFER_WIDTH */ - 1571, /* GL_RENDERBUFFER_HEIGHT */ - 1574, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ - 1849, /* GL_STENCIL_INDEX_EXT */ - 1838, /* GL_STENCIL_INDEX1 */ - 1843, /* GL_STENCIL_INDEX4 */ - 1846, /* GL_STENCIL_INDEX8 */ - 1839, /* GL_STENCIL_INDEX16 */ - 1578, /* GL_RENDERBUFFER_RED_SIZE */ - 1569, /* GL_RENDERBUFFER_GREEN_SIZE */ - 1564, /* GL_RENDERBUFFER_BLUE_SIZE */ - 1559, /* GL_RENDERBUFFER_ALPHA_SIZE */ - 1566, /* GL_RENDERBUFFER_DEPTH_SIZE */ - 1582, /* GL_RENDERBUFFER_STENCIL_SIZE */ - 653, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ - 1097, /* GL_MAX_SAMPLES */ - 2050, /* GL_TEXTURE_GEN_STR_OES */ - 699, /* GL_HALF_FLOAT_OES */ - 1625, /* GL_RGB565_OES */ - 1655, /* GL_RGBA32UI */ - 1618, /* GL_RGB32UI */ + 602, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ + 1758, /* GL_SHADING_LANGUAGE_VERSION */ + 374, /* GL_CURRENT_PROGRAM */ + 1308, /* GL_PALETTE4_RGB8_OES */ + 1310, /* GL_PALETTE4_RGBA8_OES */ + 1306, /* GL_PALETTE4_R5_G6_B5_OES */ + 1309, /* GL_PALETTE4_RGBA4_OES */ + 1307, /* GL_PALETTE4_RGB5_A1_OES */ + 1313, /* GL_PALETTE8_RGB8_OES */ + 1315, /* GL_PALETTE8_RGBA8_OES */ + 1311, /* GL_PALETTE8_R5_G6_B5_OES */ + 1314, /* GL_PALETTE8_RGBA4_OES */ + 1312, /* GL_PALETTE8_RGB5_A1_OES */ + 729, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */ + 727, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */ + 1360, /* GL_POINT_SIZE_ARRAY_OES */ + 2025, /* GL_TEXTURE_CROP_RECT_OES */ + 1000, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ + 1359, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ + 2203, /* GL_UNSIGNED_NORMALIZED */ + 1958, /* GL_TEXTURE_1D_ARRAY */ + 1495, /* GL_PROXY_TEXTURE_1D_ARRAY */ + 1961, /* GL_TEXTURE_2D_ARRAY */ + 1499, /* GL_PROXY_TEXTURE_2D_ARRAY */ + 1969, /* GL_TEXTURE_BINDING_1D_ARRAY */ + 1972, /* GL_TEXTURE_BINDING_2D_ARRAY */ + 1052, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */ + 1989, /* GL_TEXTURE_BUFFER */ + 1106, /* GL_MAX_TEXTURE_BUFFER_SIZE */ + 1976, /* GL_TEXTURE_BINDING_BUFFER */ + 1991, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */ + 1993, /* GL_TEXTURE_BUFFER_FORMAT */ + 1532, /* GL_R11F_G11F_B10F */ + 2169, /* GL_UNSIGNED_INT_10F_11F_11F_REV */ + 1643, /* GL_RGB9_E5 */ + 2178, /* GL_UNSIGNED_INT_5_9_9_9_REV */ + 2099, /* GL_TEXTURE_SHARED_SIZE */ + 1811, /* GL_SRGB */ + 1812, /* GL_SRGB8 */ + 1814, /* GL_SRGB_ALPHA */ + 1813, /* GL_SRGB8_ALPHA8 */ + 1771, /* GL_SLUMINANCE_ALPHA */ + 1770, /* GL_SLUMINANCE8_ALPHA8 */ + 1768, /* GL_SLUMINANCE */ + 1769, /* GL_SLUMINANCE8 */ + 312, /* GL_COMPRESSED_SRGB */ + 313, /* GL_COMPRESSED_SRGB_ALPHA */ + 310, /* GL_COMPRESSED_SLUMINANCE */ + 311, /* GL_COMPRESSED_SLUMINANCE_ALPHA */ + 2134, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */ + 2123, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */ + 1125, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */ + 2132, /* GL_TRANSFORM_FEEDBACK_VARYINGS */ + 2128, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */ + 2126, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */ + 1442, /* GL_PRIMITIVES_GENERATED */ + 2130, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */ + 1536, /* GL_RASTERIZER_DISCARD */ + 1121, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */ + 1123, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */ + 766, /* GL_INTERLEAVED_ATTRIBS */ + 1747, /* GL_SEPARATE_ATTRIBS */ + 2118, /* GL_TRANSFORM_FEEDBACK_BUFFER */ + 2120, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */ + 1378, /* GL_POINT_SPRITE_COORD_ORIGIN */ + 857, /* GL_LOWER_LEFT */ + 2217, /* GL_UPPER_LEFT */ + 1835, /* GL_STENCIL_BACK_REF */ + 1836, /* GL_STENCIL_BACK_VALUE_MASK */ + 1837, /* GL_STENCIL_BACK_WRITEMASK */ + 503, /* GL_DRAW_FRAMEBUFFER_BINDING */ + 1566, /* GL_RENDERBUFFER_BINDING */ + 1540, /* GL_READ_FRAMEBUFFER */ + 502, /* GL_DRAW_FRAMEBUFFER */ + 1541, /* GL_READ_FRAMEBUFFER_BINDING */ + 1585, /* GL_RENDERBUFFER_SAMPLES */ + 616, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ + 613, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ + 628, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ + 623, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ + 626, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ + 634, /* GL_FRAMEBUFFER_COMPLETE */ + 639, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ + 654, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ + 648, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ + 643, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ + 649, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ + 645, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ + 659, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ + 665, /* GL_FRAMEBUFFER_UNSUPPORTED */ + 663, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ + 1024, /* GL_MAX_COLOR_ATTACHMENTS */ + 196, /* GL_COLOR_ATTACHMENT0 */ + 199, /* GL_COLOR_ATTACHMENT1 */ + 213, /* GL_COLOR_ATTACHMENT2 */ + 215, /* GL_COLOR_ATTACHMENT3 */ + 217, /* GL_COLOR_ATTACHMENT4 */ + 219, /* GL_COLOR_ATTACHMENT5 */ + 221, /* GL_COLOR_ATTACHMENT6 */ + 223, /* GL_COLOR_ATTACHMENT7 */ + 225, /* GL_COLOR_ATTACHMENT8 */ + 227, /* GL_COLOR_ATTACHMENT9 */ + 200, /* GL_COLOR_ATTACHMENT10 */ + 202, /* GL_COLOR_ATTACHMENT11 */ + 204, /* GL_COLOR_ATTACHMENT12 */ + 206, /* GL_COLOR_ATTACHMENT13 */ + 208, /* GL_COLOR_ATTACHMENT14 */ + 210, /* GL_COLOR_ATTACHMENT15 */ + 402, /* GL_DEPTH_ATTACHMENT */ + 1824, /* GL_STENCIL_ATTACHMENT */ + 604, /* GL_FRAMEBUFFER */ + 1563, /* GL_RENDERBUFFER */ + 1589, /* GL_RENDERBUFFER_WIDTH */ + 1576, /* GL_RENDERBUFFER_HEIGHT */ + 1579, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ + 1856, /* GL_STENCIL_INDEX_EXT */ + 1845, /* GL_STENCIL_INDEX1 */ + 1850, /* GL_STENCIL_INDEX4 */ + 1853, /* GL_STENCIL_INDEX8 */ + 1846, /* GL_STENCIL_INDEX16 */ + 1583, /* GL_RENDERBUFFER_RED_SIZE */ + 1574, /* GL_RENDERBUFFER_GREEN_SIZE */ + 1569, /* GL_RENDERBUFFER_BLUE_SIZE */ + 1564, /* GL_RENDERBUFFER_ALPHA_SIZE */ + 1571, /* GL_RENDERBUFFER_DEPTH_SIZE */ + 1587, /* GL_RENDERBUFFER_STENCIL_SIZE */ + 657, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ + 1101, /* GL_MAX_SAMPLES */ + 2061, /* GL_TEXTURE_GEN_STR_OES */ + 703, /* GL_HALF_FLOAT_OES */ + 1630, /* GL_RGB565_OES */ + 1660, /* GL_RGBA32UI */ + 1623, /* GL_RGB32UI */ 40, /* GL_ALPHA32UI_EXT */ - 754, /* GL_INTENSITY32UI_EXT */ - 870, /* GL_LUMINANCE32UI_EXT */ - 887, /* GL_LUMINANCE_ALPHA32UI_EXT */ - 1646, /* GL_RGBA16UI */ - 1610, /* GL_RGB16UI */ + 758, /* GL_INTENSITY32UI_EXT */ + 874, /* GL_LUMINANCE32UI_EXT */ + 891, /* GL_LUMINANCE_ALPHA32UI_EXT */ + 1651, /* GL_RGBA16UI */ + 1615, /* GL_RGB16UI */ 37, /* GL_ALPHA16UI_EXT */ - 751, /* GL_INTENSITY16UI_EXT */ - 865, /* GL_LUMINANCE16UI_EXT */ - 885, /* GL_LUMINANCE_ALPHA16UI_EXT */ - 1665, /* GL_RGBA8UI */ - 1633, /* GL_RGB8UI */ + 755, /* GL_INTENSITY16UI_EXT */ + 869, /* GL_LUMINANCE16UI_EXT */ + 889, /* GL_LUMINANCE_ALPHA16UI_EXT */ + 1670, /* GL_RGBA8UI */ + 1638, /* GL_RGB8UI */ 45, /* GL_ALPHA8UI_EXT */ - 759, /* GL_INTENSITY8UI_EXT */ - 879, /* GL_LUMINANCE8UI_EXT */ - 889, /* GL_LUMINANCE_ALPHA8UI_EXT */ - 1653, /* GL_RGBA32I */ - 1616, /* GL_RGB32I */ + 763, /* GL_INTENSITY8UI_EXT */ + 883, /* GL_LUMINANCE8UI_EXT */ + 893, /* GL_LUMINANCE_ALPHA8UI_EXT */ + 1658, /* GL_RGBA32I */ + 1621, /* GL_RGB32I */ 39, /* GL_ALPHA32I_EXT */ - 753, /* GL_INTENSITY32I_EXT */ - 869, /* GL_LUMINANCE32I_EXT */ - 886, /* GL_LUMINANCE_ALPHA32I_EXT */ - 1644, /* GL_RGBA16I */ - 1608, /* GL_RGB16I */ + 757, /* GL_INTENSITY32I_EXT */ + 873, /* GL_LUMINANCE32I_EXT */ + 890, /* GL_LUMINANCE_ALPHA32I_EXT */ + 1649, /* GL_RGBA16I */ + 1613, /* GL_RGB16I */ 36, /* GL_ALPHA16I_EXT */ - 750, /* GL_INTENSITY16I_EXT */ - 864, /* GL_LUMINANCE16I_EXT */ - 884, /* GL_LUMINANCE_ALPHA16I_EXT */ - 1663, /* GL_RGBA8I */ - 1631, /* GL_RGB8I */ + 754, /* GL_INTENSITY16I_EXT */ + 868, /* GL_LUMINANCE16I_EXT */ + 888, /* GL_LUMINANCE_ALPHA16I_EXT */ + 1668, /* GL_RGBA8I */ + 1636, /* GL_RGB8I */ 44, /* GL_ALPHA8I_EXT */ - 758, /* GL_INTENSITY8I_EXT */ - 878, /* GL_LUMINANCE8I_EXT */ - 888, /* GL_LUMINANCE_ALPHA8I_EXT */ - 1548, /* GL_RED_INTEGER */ - 695, /* GL_GREEN_INTEGER */ + 762, /* GL_INTENSITY8I_EXT */ + 882, /* GL_LUMINANCE8I_EXT */ + 892, /* GL_LUMINANCE_ALPHA8I_EXT */ + 1553, /* GL_RED_INTEGER */ + 699, /* GL_GREEN_INTEGER */ 113, /* GL_BLUE_INTEGER */ 49, /* GL_ALPHA_INTEGER_EXT */ - 1677, /* GL_RGB_INTEGER */ - 1671, /* GL_RGBA_INTEGER */ + 1683, /* GL_RGB_INTEGER */ + 1677, /* GL_RGBA_INTEGER */ 84, /* GL_BGR_INTEGER */ 82, /* GL_BGRA_INTEGER */ - 891, /* GL_LUMINANCE_INTEGER_EXT */ - 890, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */ - 1673, /* GL_RGBA_INTEGER_MODE_EXT */ - 607, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */ - 648, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */ - 647, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ - 1688, /* GL_SAMPLER_1D_ARRAY */ - 1694, /* GL_SAMPLER_2D_ARRAY */ - 1703, /* GL_SAMPLER_BUFFER */ - 1690, /* GL_SAMPLER_1D_ARRAY_SHADOW */ - 1696, /* GL_SAMPLER_2D_ARRAY_SHADOW */ - 1706, /* GL_SAMPLER_CUBE_SHADOW */ - 2186, /* GL_UNSIGNED_INT_VEC2 */ - 2188, /* GL_UNSIGNED_INT_VEC3 */ - 2190, /* GL_UNSIGNED_INT_VEC4 */ - 768, /* GL_INT_SAMPLER_1D */ - 772, /* GL_INT_SAMPLER_2D */ - 778, /* GL_INT_SAMPLER_3D */ - 782, /* GL_INT_SAMPLER_CUBE */ - 776, /* GL_INT_SAMPLER_2D_RECT */ - 769, /* GL_INT_SAMPLER_1D_ARRAY */ - 773, /* GL_INT_SAMPLER_2D_ARRAY */ - 780, /* GL_INT_SAMPLER_BUFFER */ - 2170, /* GL_UNSIGNED_INT_SAMPLER_1D */ - 2174, /* GL_UNSIGNED_INT_SAMPLER_2D */ - 2180, /* GL_UNSIGNED_INT_SAMPLER_3D */ - 2184, /* GL_UNSIGNED_INT_SAMPLER_CUBE */ - 2178, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */ - 2171, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */ - 2175, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */ - 2182, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */ - 686, /* GL_GEOMETRY_SHADER */ - 689, /* GL_GEOMETRY_VERTICES_OUT_ARB */ - 683, /* GL_GEOMETRY_INPUT_TYPE_ARB */ - 685, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ - 1054, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ - 1136, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ - 1052, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */ - 1046, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */ - 1050, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */ - 854, /* GL_LOW_FLOAT */ - 1138, /* GL_MEDIUM_FLOAT */ - 700, /* GL_HIGH_FLOAT */ - 855, /* GL_LOW_INT */ - 1139, /* GL_MEDIUM_INT */ - 701, /* GL_HIGH_INT */ - 2160, /* GL_UNSIGNED_INT_10_10_10_2_OES */ - 767, /* GL_INT_10_10_10_2_OES */ - 1745, /* GL_SHADER_BINARY_FORMATS */ - 1239, /* GL_NUM_SHADER_BINARY_FORMATS */ - 1746, /* GL_SHADER_COMPILER */ - 1133, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ - 1125, /* GL_MAX_VARYING_VECTORS */ - 1043, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ - 1524, /* GL_QUERY_WAIT */ - 1518, /* GL_QUERY_NO_WAIT */ - 1514, /* GL_QUERY_BY_REGION_WAIT */ - 1512, /* GL_QUERY_BY_REGION_NO_WAIT */ - 2105, /* GL_TRANSFORM_FEEDBACK */ - 2114, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ - 2108, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ - 2106, /* GL_TRANSFORM_FEEDBACK_BINDING */ - 1508, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ - 542, /* GL_FIRST_VERTEX_CONVENTION */ - 800, /* GL_LAST_VERTEX_CONVENTION */ - 1482, /* GL_PROVOKING_VERTEX */ - 350, /* GL_COPY_READ_BUFFER */ - 351, /* GL_COPY_WRITE_BUFFER */ - 1551, /* GL_RED_SNORM */ - 1684, /* GL_RG_SNORM */ - 1683, /* GL_RGB_SNORM */ - 1676, /* GL_RGBA_SNORM */ - 1530, /* GL_R8_SNORM */ - 1598, /* GL_RG8_SNORM */ - 1637, /* GL_RGB8_SNORM */ - 1669, /* GL_RGBA8_SNORM */ - 1528, /* GL_R16_SNORM */ - 1597, /* GL_RG16_SNORM */ - 1613, /* GL_RGB16_SNORM */ - 1649, /* GL_RGBA16_SNORM */ - 1757, /* GL_SIGNED_NORMALIZED */ - 1439, /* GL_PRIMITIVE_RESTART */ - 1440, /* GL_PRIMITIVE_RESTART_INDEX */ - 1099, /* GL_MAX_SERVER_WAIT_TIMEOUT */ - 1253, /* GL_OBJECT_TYPE */ - 1870, /* GL_SYNC_CONDITION */ - 1875, /* GL_SYNC_STATUS */ - 1872, /* GL_SYNC_FLAGS */ - 1871, /* GL_SYNC_FENCE */ - 1874, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ - 2153, /* GL_UNSIGNALED */ - 1756, /* GL_SIGNALED */ + 895, /* GL_LUMINANCE_INTEGER_EXT */ + 894, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */ + 1679, /* GL_RGBA_INTEGER_MODE_EXT */ + 611, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */ + 652, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */ + 651, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ + 1694, /* GL_SAMPLER_1D_ARRAY */ + 1700, /* GL_SAMPLER_2D_ARRAY */ + 1710, /* GL_SAMPLER_BUFFER */ + 1696, /* GL_SAMPLER_1D_ARRAY_SHADOW */ + 1702, /* GL_SAMPLER_2D_ARRAY_SHADOW */ + 1713, /* GL_SAMPLER_CUBE_SHADOW */ + 2197, /* GL_UNSIGNED_INT_VEC2 */ + 2199, /* GL_UNSIGNED_INT_VEC3 */ + 2201, /* GL_UNSIGNED_INT_VEC4 */ + 772, /* GL_INT_SAMPLER_1D */ + 776, /* GL_INT_SAMPLER_2D */ + 782, /* GL_INT_SAMPLER_3D */ + 786, /* GL_INT_SAMPLER_CUBE */ + 780, /* GL_INT_SAMPLER_2D_RECT */ + 773, /* GL_INT_SAMPLER_1D_ARRAY */ + 777, /* GL_INT_SAMPLER_2D_ARRAY */ + 784, /* GL_INT_SAMPLER_BUFFER */ + 2181, /* GL_UNSIGNED_INT_SAMPLER_1D */ + 2185, /* GL_UNSIGNED_INT_SAMPLER_2D */ + 2191, /* GL_UNSIGNED_INT_SAMPLER_3D */ + 2195, /* GL_UNSIGNED_INT_SAMPLER_CUBE */ + 2189, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */ + 2182, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */ + 2186, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */ + 2193, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */ + 690, /* GL_GEOMETRY_SHADER */ + 693, /* GL_GEOMETRY_VERTICES_OUT_ARB */ + 687, /* GL_GEOMETRY_INPUT_TYPE_ARB */ + 689, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ + 1058, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ + 1141, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ + 1056, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */ + 1050, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */ + 1054, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */ + 858, /* GL_LOW_FLOAT */ + 1143, /* GL_MEDIUM_FLOAT */ + 704, /* GL_HIGH_FLOAT */ + 859, /* GL_LOW_INT */ + 1144, /* GL_MEDIUM_INT */ + 705, /* GL_HIGH_INT */ + 2171, /* GL_UNSIGNED_INT_10_10_10_2_OES */ + 771, /* GL_INT_10_10_10_2_OES */ + 1752, /* GL_SHADER_BINARY_FORMATS */ + 1244, /* GL_NUM_SHADER_BINARY_FORMATS */ + 1753, /* GL_SHADER_COMPILER */ + 1138, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ + 1130, /* GL_MAX_VARYING_VECTORS */ + 1047, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ + 1529, /* GL_QUERY_WAIT */ + 1523, /* GL_QUERY_NO_WAIT */ + 1519, /* GL_QUERY_BY_REGION_WAIT */ + 1517, /* GL_QUERY_BY_REGION_NO_WAIT */ + 2116, /* GL_TRANSFORM_FEEDBACK */ + 2125, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ + 2119, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ + 2117, /* GL_TRANSFORM_FEEDBACK_BINDING */ + 1513, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ + 545, /* GL_FIRST_VERTEX_CONVENTION */ + 804, /* GL_LAST_VERTEX_CONVENTION */ + 1487, /* GL_PROVOKING_VERTEX */ + 353, /* GL_COPY_READ_BUFFER */ + 354, /* GL_COPY_WRITE_BUFFER */ + 1556, /* GL_RED_SNORM */ + 1690, /* GL_RG_SNORM */ + 1689, /* GL_RGB_SNORM */ + 1682, /* GL_RGBA_SNORM */ + 1535, /* GL_R8_SNORM */ + 1603, /* GL_RG8_SNORM */ + 1642, /* GL_RGB8_SNORM */ + 1674, /* GL_RGBA8_SNORM */ + 1533, /* GL_R16_SNORM */ + 1602, /* GL_RG16_SNORM */ + 1618, /* GL_RGB16_SNORM */ + 1654, /* GL_RGBA16_SNORM */ + 1764, /* GL_SIGNED_NORMALIZED */ + 1444, /* GL_PRIMITIVE_RESTART */ + 1445, /* GL_PRIMITIVE_RESTART_INDEX */ + 1103, /* GL_MAX_SERVER_WAIT_TIMEOUT */ + 1258, /* GL_OBJECT_TYPE */ + 1877, /* GL_SYNC_CONDITION */ + 1882, /* GL_SYNC_STATUS */ + 1879, /* GL_SYNC_FLAGS */ + 1878, /* GL_SYNC_FENCE */ + 1881, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ + 2164, /* GL_UNSIGNALED */ + 1763, /* GL_SIGNALED */ 54, /* GL_ALREADY_SIGNALED */ - 2100, /* GL_TIMEOUT_EXPIRED */ - 312, /* GL_CONDITION_SATISFIED */ - 2270, /* GL_WAIT_FAILED */ + 2111, /* GL_TIMEOUT_EXPIRED */ + 315, /* GL_CONDITION_SATISFIED */ + 2281, /* GL_WAIT_FAILED */ 126, /* GL_BUFFER_ACCESS_FLAGS */ 132, /* GL_BUFFER_MAP_LENGTH */ 133, /* GL_BUFFER_MAP_OFFSET */ - 1128, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */ - 1044, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */ - 1045, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */ - 1040, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */ - 326, /* GL_CONTEXT_PROFILE_MASK */ - 527, /* GL_EVAL_BIT */ - 1533, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ - 847, /* GL_LIST_BIT */ - 1976, /* GL_TEXTURE_BIT */ - 1726, /* GL_SCISSOR_BIT */ + 1133, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */ + 1048, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */ + 1049, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */ + 1044, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */ + 329, /* GL_CONTEXT_PROFILE_MASK */ + 530, /* GL_EVAL_BIT */ + 1538, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ + 851, /* GL_LIST_BIT */ + 1984, /* GL_TEXTURE_BIT */ + 1733, /* GL_SCISSOR_BIT */ 30, /* GL_ALL_ATTRIB_BITS */ - 1204, /* GL_MULTISAMPLE_BIT */ + 1209, /* GL_MULTISAMPLE_BIT */ 31, /* GL_ALL_CLIENT_ATTRIB_BITS */ }; diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c index 4b6e91c4f31..8a0ab961523 100644 --- a/src/mesa/main/extensions.c +++ b/src/mesa/main/extensions.c @@ -79,6 +79,7 @@ static const struct extension extension_table[] = { /* ARB Extensions */ { "GL_ARB_ES2_compatibility", o(ARB_ES2_compatibility), GL, 2009 }, { "GL_ARB_blend_func_extended", o(ARB_blend_func_extended), GL, 2009 }, + { "GL_ARB_color_buffer_float", o(ARB_color_buffer_float), GL, 2004 }, { "GL_ARB_copy_buffer", o(ARB_copy_buffer), GL, 2008 }, { "GL_ARB_depth_buffer_float", o(ARB_depth_buffer_float), GL, 2008 }, { "GL_ARB_depth_clamp", o(ARB_depth_clamp), GL, 2003 }, @@ -123,6 +124,7 @@ static const struct extension extension_table[] = { { "GL_ARB_texture_env_combine", o(ARB_texture_env_combine), GL, 2001 }, { "GL_ARB_texture_env_crossbar", o(ARB_texture_env_crossbar), GL, 2001 }, { "GL_ARB_texture_env_dot3", o(ARB_texture_env_dot3), GL, 2001 }, + { "GL_ARB_texture_float", o(ARB_texture_float), GL, 2004 }, { "GL_ARB_texture_mirrored_repeat", o(ARB_texture_mirrored_repeat), GL, 2001 }, { "GL_ARB_texture_multisample", o(ARB_texture_multisample), GL, 2009 }, { "GL_ARB_texture_non_power_of_two", o(ARB_texture_non_power_of_two), GL, 2003 }, @@ -202,6 +204,7 @@ static const struct extension extension_table[] = { { "GL_EXT_texture", o(EXT_texture), GL, 1996 }, { "GL_EXT_texture_rectangle", o(NV_texture_rectangle), GL, 2004 }, { "GL_EXT_texture_shared_exponent", o(EXT_texture_shared_exponent), GL, 2004 }, + { "GL_EXT_texture_snorm", o(EXT_texture_snorm), GL, 2009 }, { "GL_EXT_texture_sRGB", o(EXT_texture_sRGB), GL, 2004 }, { "GL_EXT_texture_sRGB_decode", o(EXT_texture_sRGB_decode), GL, 2006 }, { "GL_EXT_texture_swizzle", o(EXT_texture_swizzle), GL, 2008 }, @@ -260,11 +263,13 @@ static const struct extension extension_table[] = { { "GL_APPLE_packed_pixels", o(APPLE_packed_pixels), GL, 2002 }, { "GL_APPLE_vertex_array_object", o(APPLE_vertex_array_object), GL, 2002 }, { "GL_ATI_blend_equation_separate", o(EXT_blend_equation_separate), GL, 2003 }, + { "GL_ATI_draw_buffers", o(ARB_draw_buffers), GL, 2002 }, { "GL_ATI_envmap_bumpmap", o(ATI_envmap_bumpmap), GL, 2001 }, { "GL_ATI_fragment_shader", o(ATI_fragment_shader), GL, 2001 }, { "GL_ATI_separate_stencil", o(ATI_separate_stencil), GL, 2006 }, { "GL_ATI_texture_compression_3dc", o(ATI_texture_compression_3dc), GL, 2004 }, { "GL_ATI_texture_env_combine3", o(ATI_texture_env_combine3), GL, 2002 }, + { "GL_ATI_texture_float", o(ARB_texture_float), GL, 2002 }, { "GL_ATI_texture_mirror_once", o(ATI_texture_mirror_once), GL, 2006 }, { "GL_IBM_multimode_draw_arrays", o(IBM_multimode_draw_arrays), GL, 1998 }, { "GL_IBM_rasterpos_clip", o(IBM_rasterpos_clip), GL, 1996 }, @@ -273,9 +278,8 @@ static const struct extension extension_table[] = { { "GL_MESA_pack_invert", o(MESA_pack_invert), GL, 2002 }, { "GL_MESA_resize_buffers", o(MESA_resize_buffers), GL, 1999 }, { "GL_MESA_texture_array", o(MESA_texture_array), GL, 2007 }, - { "GL_MESA_texture_signed_rgba", o(MESA_texture_signed_rgba), GL, 2009 }, + { "GL_MESA_texture_signed_rgba", o(EXT_texture_snorm), GL, 2009 }, { "GL_MESA_window_pos", o(ARB_window_pos), GL, 2000 }, - { "GL_MESAX_texture_float", o(ARB_texture_float), GL, 2009 }, { "GL_MESA_ycbcr_texture", o(MESA_ycbcr_texture), GL, 2002 }, { "GL_NV_blend_square", o(NV_blend_square), GL, 1999 }, { "GL_NV_conditional_render", o(NV_conditional_render), GL, 2008 }, @@ -753,7 +757,7 @@ _mesa_extension_is_enabled( struct gl_context *ctx, const char *name ) static char * get_extension_override( struct gl_context *ctx ) { - const char *env_const= _mesa_getenv("MESA_EXTENSION_OVERRIDE"); + const char *env_const = _mesa_getenv("MESA_EXTENSION_OVERRIDE"); char *env; char *ext; char *extra_exts; @@ -794,7 +798,7 @@ get_extension_override( struct gl_context *ctx ) } /* Remove trailing space. */ - len = strlen(extra_exts); + len = strlen(extra_exts); if (extra_exts[len - 1] == ' ') extra_exts[len - 1] = '\0'; @@ -875,12 +879,24 @@ _mesa_make_extension_string(struct gl_context *ctx) GLboolean *base = (GLboolean *) &ctx->Extensions; const struct extension *i; unsigned j; - + unsigned maxYear = ~0; + + /* Check if the MESA_EXTENSION_MAX_YEAR env var is set */ + { + const char *env = getenv("MESA_EXTENSION_MAX_YEAR"); + if (env) { + maxYear = atoi(env); + _mesa_debug(ctx, "Note: limiting GL extensions to %u or earlier\n", + maxYear); + } + } /* Compute length of the extension string. */ count = 0; for (i = extension_table; i->name != 0; ++i) { - if (base[i->offset] && (i->api_set & (1 << ctx->API))) { + if (base[i->offset] && + i->year <= maxYear && + (i->api_set & (1 << ctx->API))) { length += strlen(i->name) + 1; /* +1 for space */ ++count; } @@ -894,7 +910,7 @@ _mesa_make_extension_string(struct gl_context *ctx) return NULL; } - extension_indices = malloc(count * sizeof extension_indices); + extension_indices = malloc(count * sizeof(extension_index)); if (extension_indices == NULL) { free(exts); free(extra_extensions); @@ -908,7 +924,9 @@ _mesa_make_extension_string(struct gl_context *ctx) */ j = 0; for (i = extension_table; i->name != 0; ++i) { - if (base[i->offset] && (i->api_set & (1 << ctx->API))) { + if (base[i->offset] && + i->year <= maxYear && + (i->api_set & (1 << ctx->API))) { extension_indices[j++] = i - extension_table; } } diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index ffdd0842562..1edb310ea13 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -335,7 +335,7 @@ _mesa_set_texture_attachment(struct gl_context *ctx, att->Zoffset = zoffset; att->Complete = GL_FALSE; - if (att->Texture->Image[att->CubeMapFace][att->TextureLevel]) { + if (_mesa_get_attachment_teximage(att)) { ctx->Driver.RenderTexture(ctx, fb, att); } @@ -716,8 +716,8 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx, /* get width, height, format of the renderbuffer/texture */ if (att->Type == GL_TEXTURE) { - const struct gl_texture_image *texImg - = att->Texture->Image[att->CubeMapFace][att->TextureLevel]; + const struct gl_texture_image *texImg = + _mesa_get_attachment_teximage(att); minWidth = MIN2(minWidth, texImg->Width); maxWidth = MAX2(maxWidth, texImg->Width); minHeight = MIN2(minHeight, texImg->Height); @@ -746,7 +746,7 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx, continue; } - if (numSamples < 0) { + if (att->Renderbuffer && numSamples < 0) { /* first buffer */ numSamples = att->Renderbuffer->NumSamples; } @@ -1081,7 +1081,6 @@ _mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat) case GL_RGB10_A2: case GL_RGBA12: case GL_RGBA16: - case GL_RGBA16_SNORM: case GL_SRGB8_ALPHA8_EXT: return GL_RGBA; case GL_STENCIL_INDEX: @@ -1109,7 +1108,74 @@ _mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat) case GL_RG8: case GL_RG16: return ctx->Extensions.ARB_texture_rg ? GL_RG : 0; - /* XXX add floating point and integer formats eventually */ + /* signed normalized texture formats */ + case GL_RED_SNORM: + case GL_R8_SNORM: + case GL_R16_SNORM: + return ctx->Extensions.EXT_texture_snorm ? GL_RED : 0; + case GL_RG_SNORM: + case GL_RG8_SNORM: + case GL_RG16_SNORM: + return ctx->Extensions.EXT_texture_snorm ? GL_RG : 0; + case GL_RGB_SNORM: + case GL_RGB8_SNORM: + case GL_RGB16_SNORM: + return ctx->Extensions.EXT_texture_snorm ? GL_RGB : 0; + case GL_RGBA_SNORM: + case GL_RGBA8_SNORM: + case GL_RGBA16_SNORM: + return ctx->Extensions.EXT_texture_snorm ? GL_RGBA : 0; + case GL_ALPHA_SNORM: + case GL_ALPHA8_SNORM: + case GL_ALPHA16_SNORM: + return ctx->Extensions.EXT_texture_snorm && + ctx->Extensions.ARB_framebuffer_object ? GL_ALPHA : 0; + case GL_LUMINANCE_SNORM: + case GL_LUMINANCE8_SNORM: + case GL_LUMINANCE16_SNORM: + return ctx->Extensions.EXT_texture_snorm && + ctx->Extensions.ARB_framebuffer_object ? GL_LUMINANCE : 0; + case GL_LUMINANCE_ALPHA_SNORM: + case GL_LUMINANCE8_ALPHA8_SNORM: + case GL_LUMINANCE16_ALPHA16_SNORM: + return ctx->Extensions.EXT_texture_snorm && + ctx->Extensions.ARB_framebuffer_object ? GL_LUMINANCE_ALPHA : 0; + case GL_INTENSITY_SNORM: + case GL_INTENSITY8_SNORM: + case GL_INTENSITY16_SNORM: + return ctx->Extensions.EXT_texture_snorm && + ctx->Extensions.ARB_framebuffer_object ? GL_INTENSITY : 0; + case GL_R16F: + case GL_R32F: + return ctx->Extensions.ARB_texture_rg && + ctx->Extensions.ARB_texture_float ? GL_RED : 0; + case GL_RG16F: + case GL_RG32F: + return ctx->Extensions.ARB_texture_rg && + ctx->Extensions.ARB_texture_float ? GL_RG : 0; + case GL_RGB16F: + case GL_RGB32F: + return ctx->Extensions.ARB_texture_float ? GL_RGB : 0; + case GL_RGBA16F: + case GL_RGBA32F: + return ctx->Extensions.ARB_texture_float ? GL_RGBA : 0; + case GL_ALPHA16F_ARB: + case GL_ALPHA32F_ARB: + return ctx->Extensions.ARB_texture_float && + ctx->Extensions.ARB_framebuffer_object ? GL_ALPHA : 0; + case GL_LUMINANCE16F_ARB: + case GL_LUMINANCE32F_ARB: + return ctx->Extensions.ARB_texture_float && + ctx->Extensions.ARB_framebuffer_object ? GL_LUMINANCE : 0; + case GL_LUMINANCE_ALPHA16F_ARB: + case GL_LUMINANCE_ALPHA32F_ARB: + return ctx->Extensions.ARB_texture_float && + ctx->Extensions.ARB_framebuffer_object ? GL_LUMINANCE_ALPHA : 0; + case GL_INTENSITY16F_ARB: + case GL_INTENSITY32F_ARB: + return ctx->Extensions.ARB_texture_float && + ctx->Extensions.ARB_framebuffer_object ? GL_INTENSITY : 0; + /* XXX add integer formats eventually */ default: return 0; } @@ -1460,9 +1526,7 @@ check_begin_texture_render(struct gl_context *ctx, struct gl_framebuffer *fb) for (i = 0; i < BUFFER_COUNT; i++) { struct gl_renderbuffer_attachment *att = fb->Attachment + i; - struct gl_texture_object *texObj = att->Texture; - if (texObj - && texObj->Image[att->CubeMapFace][att->TextureLevel]) { + if (att->Texture && _mesa_get_attachment_teximage(att)) { ctx->Driver.RenderTexture(ctx, fb, att); } } @@ -2321,7 +2385,7 @@ _mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, if ((mask & (GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT)) && filter != GL_NEAREST) { _mesa_error(ctx, GL_INVALID_OPERATION, - "glBlitFramebufferEXT(depth/stencil requires GL_NEAREST filter"); + "glBlitFramebufferEXT(depth/stencil requires GL_NEAREST filter)"); return; } @@ -2342,7 +2406,7 @@ _mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, _mesa_get_format_bits(readRb->Format, GL_STENCIL_BITS) != _mesa_get_format_bits(drawRb->Format, GL_STENCIL_BITS)) { _mesa_error(ctx, GL_INVALID_OPERATION, - "glBlitFramebufferEXT(stencil buffer size mismatch"); + "glBlitFramebufferEXT(stencil buffer size mismatch)"); return; } } @@ -2355,7 +2419,7 @@ _mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, _mesa_get_format_bits(readRb->Format, GL_DEPTH_BITS) != _mesa_get_format_bits(drawRb->Format, GL_DEPTH_BITS)) { _mesa_error(ctx, GL_INVALID_OPERATION, - "glBlitFramebufferEXT(depth buffer size mismatch"); + "glBlitFramebufferEXT(depth buffer size mismatch)"); return; } } @@ -2374,7 +2438,7 @@ _mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, if (srcX1 - srcX0 != dstX1 - dstX0 || srcY1 - srcY0 != dstY1 - dstY0) { _mesa_error(ctx, GL_INVALID_OPERATION, - "glBlitFramebufferEXT(bad src/dst multisample region sizes"); + "glBlitFramebufferEXT(bad src/dst multisample region sizes)"); return; } @@ -2383,7 +2447,7 @@ _mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, colorDrawRb && colorReadRb->Format != colorDrawRb->Format) { _mesa_error(ctx, GL_INVALID_OPERATION, - "glBlitFramebufferEXT(bad src/dst multisample pixel formats"); + "glBlitFramebufferEXT(bad src/dst multisample pixel formats)"); return; } } diff --git a/src/mesa/main/fbobject.h b/src/mesa/main/fbobject.h index ba74a95b74c..7eb20050209 100644 --- a/src/mesa/main/fbobject.h +++ b/src/mesa/main/fbobject.h @@ -26,6 +26,7 @@ #ifndef FBOBJECT_H #define FBOBJECT_H +#include "compiler.h" #include "glheader.h" struct gl_context; @@ -48,6 +49,24 @@ _mesa_get_attachment(struct gl_context *ctx, struct gl_framebuffer *fb, GLenum attachment); +/** Return the texture image for a renderbuffer attachment */ +static INLINE struct gl_texture_image * +_mesa_get_attachment_teximage(struct gl_renderbuffer_attachment *att) +{ + assert(att->Type == GL_TEXTURE); + return att->Texture->Image[att->CubeMapFace][att->TextureLevel]; +} + + +/** Return the (const) texture image for a renderbuffer attachment */ +static INLINE const struct gl_texture_image * +_mesa_get_attachment_teximage_const(const struct gl_renderbuffer_attachment *att) +{ + assert(att->Type == GL_TEXTURE); + return att->Texture->Image[att->CubeMapFace][att->TextureLevel]; +} + + extern void _mesa_remove_attachment(struct gl_context *ctx, struct gl_renderbuffer_attachment *att); @@ -65,14 +84,16 @@ _mesa_set_renderbuffer_attachment(struct gl_context *ctx, struct gl_renderbuffer *rb); extern void -_mesa_framebuffer_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb, +_mesa_framebuffer_renderbuffer(struct gl_context *ctx, + struct gl_framebuffer *fb, GLenum attachment, struct gl_renderbuffer *rb); extern void _mesa_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb); extern void -_mesa_test_framebuffer_completeness(struct gl_context *ctx, struct gl_framebuffer *fb); +_mesa_test_framebuffer_completeness(struct gl_context *ctx, + struct gl_framebuffer *fb); extern GLboolean _mesa_is_legal_color_format(const struct gl_context *ctx, GLenum baseFormat); diff --git a/src/mesa/main/ff_fragment_shader.cpp b/src/mesa/main/ff_fragment_shader.cpp index 9be531735ed..0b53c28f7ae 100644 --- a/src/mesa/main/ff_fragment_shader.cpp +++ b/src/mesa/main/ff_fragment_shader.cpp @@ -439,9 +439,10 @@ static GLuint make_state_key( struct gl_context *ctx, struct state_key *key ) key->unit[i].source_index = translate_tex_src_bit(texUnit->_ReallyEnabled); - key->unit[i].shadow = ((texObj->CompareMode == GL_COMPARE_R_TO_TEXTURE) && - ((format == GL_DEPTH_COMPONENT) || - (format == GL_DEPTH_STENCIL_EXT))); + key->unit[i].shadow = + ((texObj->Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE) && + ((format == GL_DEPTH_COMPONENT) || + (format == GL_DEPTH_STENCIL_EXT))); key->unit[i].NumArgsRGB = comb->_NumArgsRGB; key->unit[i].NumArgsA = comb->_NumArgsA; @@ -726,7 +727,7 @@ static struct ureg register_input( struct texenv_fragment_program *p, GLuint inp } else { GLuint idx = frag_to_vert_attrib( input ); - return register_param3( p, STATE_INTERNAL, STATE_CURRENT_ATTRIB, idx ); + return register_param3( p, STATE_INTERNAL, STATE_CURRENT_ATTRIB_MAYBE_VP_CLAMPED, idx ); } } @@ -1529,15 +1530,26 @@ create_new_program(struct gl_context *ctx, struct state_key *key, */ emit_arith( &p, OPCODE_END, undef, WRITEMASK_XYZW, 0, undef, undef, undef); - if (key->fog_enabled) { - /* Pull fog mode from struct gl_context, the value in the state key is - * a reduced value and not what is expected in FogOption - */ - p.program->FogOption = ctx->Fog.Mode; - p.program->Base.InputsRead |= FRAG_BIT_FOGC; + /* Allocate final instruction array. This has to be done before calling + * _mesa_append_fog_code because that function frees the Base.Instructions. + * At this point, Base.Instructions points to stack data, so it's a really + * bad idea to free it. + */ + p.program->Base.Instructions + = _mesa_alloc_instructions(p.program->Base.NumInstructions); + if (!p.program->Base.Instructions) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, + "generating tex env program"); + return; } - else { - p.program->FogOption = GL_NONE; + _mesa_copy_instructions(p.program->Base.Instructions, instBuffer, + p.program->Base.NumInstructions); + + /* Append fog code. This must be done before checking the program against + * the limits becuase it will potentially add some instructions. + */ + if (key->fog_enabled) { + _mesa_append_fog_code(ctx, p.program, ctx->Fog.Mode, GL_FALSE); } if (p.program->Base.NumTexIndirections > ctx->Const.FragmentProgram.MaxTexIndirections) @@ -1551,23 +1563,6 @@ create_new_program(struct gl_context *ctx, struct state_key *key, ASSERT(p.program->Base.NumInstructions <= MAX_INSTRUCTIONS); - /* Allocate final instruction array */ - p.program->Base.Instructions - = _mesa_alloc_instructions(p.program->Base.NumInstructions); - if (!p.program->Base.Instructions) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, - "generating tex env program"); - return; - } - _mesa_copy_instructions(p.program->Base.Instructions, instBuffer, - p.program->Base.NumInstructions); - - if (key->num_draw_buffers && p.program->FogOption) { - _mesa_append_fog_code(ctx, p.program); - p.program->FogOption = GL_NONE; - } - - /* Notify driver the fragment program has (actually) changed. */ if (ctx->Driver.ProgramStringNotify) { diff --git a/src/mesa/main/fog.c b/src/mesa/main/fog.c index fd64bd1fd89..88aa31a7fcb 100644 --- a/src/mesa/main/fog.c +++ b/src/mesa/main/fog.c @@ -79,12 +79,17 @@ _mesa_Fogiv(GLenum pname, const GLint *params ) } -#define UPDATE_FOG_SCALE(ctx) do {\ - if (ctx->Fog.End == ctx->Fog.Start)\ - ctx->Fog._Scale = 1.0f;\ - else\ - ctx->Fog._Scale = 1.0f / (ctx->Fog.End - ctx->Fog.Start);\ - } while(0) +/** + * Update the gl_fog_attrib::_Scale field. + */ +static void +update_fog_scale(struct gl_context *ctx) +{ + if (ctx->Fog.End == ctx->Fog.Start) + ctx->Fog._Scale = 1.0f; + else + ctx->Fog._Scale = 1.0f / (ctx->Fog.End - ctx->Fog.Start); +} void GLAPIENTRY @@ -126,14 +131,14 @@ _mesa_Fogfv( GLenum pname, const GLfloat *params ) return; FLUSH_VERTICES(ctx, _NEW_FOG); ctx->Fog.Start = *params; - UPDATE_FOG_SCALE(ctx); + update_fog_scale(ctx); break; case GL_FOG_END: if (ctx->Fog.End == *params) return; FLUSH_VERTICES(ctx, _NEW_FOG); ctx->Fog.End = *params; - UPDATE_FOG_SCALE(ctx); + update_fog_scale(ctx); break; case GL_FOG_INDEX: if (ctx->Fog.Index == *params) @@ -145,6 +150,10 @@ _mesa_Fogfv( GLenum pname, const GLfloat *params ) if (TEST_EQ_4V(ctx->Fog.Color, params)) return; FLUSH_VERTICES(ctx, _NEW_FOG); + ctx->Fog.ColorUnclamped[0] = params[0]; + ctx->Fog.ColorUnclamped[1] = params[1]; + ctx->Fog.ColorUnclamped[2] = params[2]; + ctx->Fog.ColorUnclamped[3] = params[3]; ctx->Fog.Color[0] = CLAMP(params[0], 0.0F, 1.0F); ctx->Fog.Color[1] = CLAMP(params[1], 0.0F, 1.0F); ctx->Fog.Color[2] = CLAMP(params[2], 0.0F, 1.0F); @@ -184,6 +193,7 @@ void _mesa_init_fog( struct gl_context * ctx ) ctx->Fog.Enabled = GL_FALSE; ctx->Fog.Mode = GL_EXP; ASSIGN_4V( ctx->Fog.Color, 0.0, 0.0, 0.0, 0.0 ); + ASSIGN_4V( ctx->Fog.ColorUnclamped, 0.0, 0.0, 0.0, 0.0 ); ctx->Fog.Index = 0.0; ctx->Fog.Density = 1.0; ctx->Fog.Start = 0.0; diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c index db10c9b4c2e..4c31ccb763c 100644 --- a/src/mesa/main/formats.c +++ b/src/mesa/main/formats.c @@ -677,7 +677,7 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = { MESA_FORMAT_LUMINANCE_FLOAT32, "MESA_FORMAT_LUMINANCE_FLOAT32", - GL_ALPHA, + GL_LUMINANCE, GL_FLOAT, 0, 0, 0, 0, 32, 0, 0, 0, 0, @@ -686,7 +686,7 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = { MESA_FORMAT_LUMINANCE_FLOAT16, "MESA_FORMAT_LUMINANCE_FLOAT16", - GL_ALPHA, + GL_LUMINANCE, GL_FLOAT, 0, 0, 0, 0, 16, 0, 0, 0, 0, @@ -728,6 +728,42 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = 0, 16, 0, 0, 0, 1, 1, 2 }, + { + MESA_FORMAT_R_FLOAT32, + "MESA_FORMAT_R_FLOAT32", + GL_RED, + GL_FLOAT, + 32, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 4 + }, + { + MESA_FORMAT_R_FLOAT16, + "MESA_FORMAT_R_FLOAT16", + GL_RED, + GL_FLOAT, + 16, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 2 + }, + { + MESA_FORMAT_RG_FLOAT32, + "MESA_FORMAT_RG_FLOAT32", + GL_RG, + GL_FLOAT, + 32, 32, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 8 + }, + { + MESA_FORMAT_RG_FLOAT16, + "MESA_FORMAT_RG_FLOAT16", + GL_RG, + GL_FLOAT, + 16, 16, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 4 + }, /* unnormalized signed int formats */ { @@ -809,8 +845,8 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = 1, 1, 1 /* BlockWidth/Height,Bytes */ }, { - MESA_FORMAT_SIGNED_RG88, - "MESA_FORMAT_SIGNED_RG88", + MESA_FORMAT_SIGNED_RG88_REV, + "MESA_FORMAT_SIGNED_RG88_REV", GL_RG, GL_SIGNED_NORMALIZED, 8, 8, 0, 0, @@ -847,8 +883,8 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = /* Signed 16 bits / channel */ { - MESA_FORMAT_SIGNED_R_16, - "MESA_FORMAT_SIGNED_R_16", + MESA_FORMAT_SIGNED_R16, + "MESA_FORMAT_SIGNED_R16", GL_RED, GL_SIGNED_NORMALIZED, 16, 0, 0, 0, @@ -856,8 +892,8 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = 1, 1, 2 }, { - MESA_FORMAT_SIGNED_RG_16, - "MESA_FORMAT_SIGNED_RG_16", + MESA_FORMAT_SIGNED_GR1616, + "MESA_FORMAT_SIGNED_GR1616", GL_RG, GL_SIGNED_NORMALIZED, 16, 16, 0, 0, @@ -963,6 +999,80 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = 4, 0, 0, 0, 0, 4, 4, 16 /* 16 bytes per 4x4 block */ }, + + /* Signed formats from EXT_texture_snorm that are not in GL3.1 */ + { + MESA_FORMAT_SIGNED_A8, + "MESA_FORMAT_SIGNED_A8", + GL_ALPHA, + GL_SIGNED_NORMALIZED, + 0, 0, 0, 8, + 0, 0, 0, 0, 0, + 1, 1, 1 + }, + { + MESA_FORMAT_SIGNED_L8, + "MESA_FORMAT_SIGNED_L8", + GL_LUMINANCE, + GL_SIGNED_NORMALIZED, + 0, 0, 0, 0, + 8, 0, 0, 0, 0, + 1, 1, 1 + }, + { + MESA_FORMAT_SIGNED_AL88, + "MESA_FORMAT_SIGNED_AL88", + GL_LUMINANCE_ALPHA, + GL_SIGNED_NORMALIZED, + 0, 0, 0, 8, + 8, 0, 0, 0, 0, + 1, 1, 2 + }, + { + MESA_FORMAT_SIGNED_I8, + "MESA_FORMAT_SIGNED_I8", + GL_INTENSITY, + GL_SIGNED_NORMALIZED, + 0, 0, 0, 0, + 0, 8, 0, 0, 0, + 1, 1, 1 + }, + { + MESA_FORMAT_SIGNED_A16, + "MESA_FORMAT_SIGNED_A16", + GL_ALPHA, + GL_SIGNED_NORMALIZED, + 0, 0, 0, 16, + 0, 0, 0, 0, 0, + 1, 1, 2 + }, + { + MESA_FORMAT_SIGNED_L16, + "MESA_FORMAT_SIGNED_L16", + GL_LUMINANCE, + GL_SIGNED_NORMALIZED, + 0, 0, 0, 0, + 16, 0, 0, 0, 0, + 1, 1, 2 + }, + { + MESA_FORMAT_SIGNED_AL1616, + "MESA_FORMAT_SIGNED_AL1616", + GL_LUMINANCE_ALPHA, + GL_SIGNED_NORMALIZED, + 0, 0, 0, 16, + 16, 0, 0, 0, 0, + 1, 1, 4 + }, + { + MESA_FORMAT_SIGNED_I16, + "MESA_FORMAT_SIGNED_I16", + GL_INTENSITY, + GL_SIGNED_NORMALIZED, + 0, 0, 0, 0, + 0, 16, 0, 0, 0, + 1, 1, 2 + } }; @@ -1530,10 +1640,14 @@ _mesa_format_to_type_and_comps(gl_format format, return; case MESA_FORMAT_SIGNED_R8: + case MESA_FORMAT_SIGNED_A8: + case MESA_FORMAT_SIGNED_L8: + case MESA_FORMAT_SIGNED_I8: *datatype = GL_BYTE; *comps = 1; return; - case MESA_FORMAT_SIGNED_RG88: + case MESA_FORMAT_SIGNED_RG88_REV: + case MESA_FORMAT_SIGNED_AL88: *datatype = GL_BYTE; *comps = 2; return; @@ -1549,11 +1663,15 @@ _mesa_format_to_type_and_comps(gl_format format, *comps = 4; return; - case MESA_FORMAT_SIGNED_R_16: + case MESA_FORMAT_SIGNED_R16: + case MESA_FORMAT_SIGNED_A16: + case MESA_FORMAT_SIGNED_L16: + case MESA_FORMAT_SIGNED_I16: *datatype = GL_SHORT; *comps = 1; return; - case MESA_FORMAT_SIGNED_RG_16: + case MESA_FORMAT_SIGNED_GR1616: + case MESA_FORMAT_SIGNED_AL1616: *datatype = GL_SHORT; *comps = 2; return; @@ -1632,22 +1750,26 @@ _mesa_format_to_type_and_comps(gl_format format, *comps = 3; return; case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32: + case MESA_FORMAT_RG_FLOAT32: *datatype = GL_FLOAT; *comps = 2; return; case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16: + case MESA_FORMAT_RG_FLOAT16: *datatype = GL_HALF_FLOAT_ARB; *comps = 2; return; case MESA_FORMAT_ALPHA_FLOAT32: case MESA_FORMAT_LUMINANCE_FLOAT32: case MESA_FORMAT_INTENSITY_FLOAT32: + case MESA_FORMAT_R_FLOAT32: *datatype = GL_FLOAT; *comps = 1; return; case MESA_FORMAT_ALPHA_FLOAT16: case MESA_FORMAT_LUMINANCE_FLOAT16: case MESA_FORMAT_INTENSITY_FLOAT16: + case MESA_FORMAT_R_FLOAT16: *datatype = GL_HALF_FLOAT_ARB; *comps = 1; return; diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h index 04a18930b4e..15ac62cfef9 100644 --- a/src/mesa/main/formats.h +++ b/src/mesa/main/formats.h @@ -142,6 +142,10 @@ typedef enum MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16, MESA_FORMAT_INTENSITY_FLOAT32, MESA_FORMAT_INTENSITY_FLOAT16, + MESA_FORMAT_R_FLOAT32, + MESA_FORMAT_R_FLOAT16, + MESA_FORMAT_RG_FLOAT32, + MESA_FORMAT_RG_FLOAT16, /*@}*/ /** @@ -168,12 +172,12 @@ typedef enum /*@{*/ MESA_FORMAT_DUDV8, /* DUDU DUDU DVDV DVDV */ MESA_FORMAT_SIGNED_R8, /* RRRR RRRR */ - MESA_FORMAT_SIGNED_RG88, /* RRRR RRRR GGGG GGGG */ + MESA_FORMAT_SIGNED_RG88_REV, /* GGGG GGGG RRRR RRRR */ MESA_FORMAT_SIGNED_RGBX8888, /* RRRR RRRR GGGG GGGG BBBB BBBB xxxx xxxx */ MESA_FORMAT_SIGNED_RGBA8888, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */ MESA_FORMAT_SIGNED_RGBA8888_REV,/*AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */ - MESA_FORMAT_SIGNED_R_16, /* ushort[0]=R */ - MESA_FORMAT_SIGNED_RG_16, /* ushort[0]=R, ushort[1]=G */ + MESA_FORMAT_SIGNED_R16, /* RRRR RRRR RRRR RRRR */ + MESA_FORMAT_SIGNED_GR1616, /* GGGG GGGG GGGG GGGG RRRR RRRR RRRR RRRR */ MESA_FORMAT_SIGNED_RGB_16, /* ushort[0]=R, ushort[1]=G, ushort[2]=B */ MESA_FORMAT_SIGNED_RGBA_16, /* ... */ MESA_FORMAT_RGBA_16, /* ... */ @@ -193,6 +197,15 @@ typedef enum MESA_FORMAT_SIGNED_LA_LATC2, /*@}*/ + MESA_FORMAT_SIGNED_A8, /* AAAA AAAA */ + MESA_FORMAT_SIGNED_L8, /* LLLL LLLL */ + MESA_FORMAT_SIGNED_AL88, /* AAAA AAAA LLLL LLLL */ + MESA_FORMAT_SIGNED_I8, /* IIII IIII */ + MESA_FORMAT_SIGNED_A16, /* AAAA AAAA AAAA AAAA */ + MESA_FORMAT_SIGNED_L16, /* LLLL LLLL LLLL LLLL */ + MESA_FORMAT_SIGNED_AL1616, /* AAAA AAAA AAAA AAAA LLLL LLLL LLLL LLLL */ + MESA_FORMAT_SIGNED_I16, /* IIII IIII IIII IIII */ + MESA_FORMAT_COUNT } gl_format; diff --git a/src/mesa/main/framebuffer.c b/src/mesa/main/framebuffer.c index 430e013d017..66c9bd91096 100644 --- a/src/mesa/main/framebuffer.c +++ b/src/mesa/main/framebuffer.c @@ -551,7 +551,6 @@ _mesa_update_framebuffer_visual(struct gl_context *ctx, fb->Visual.alphaBits = _mesa_get_format_bits(fmt, GL_ALPHA_BITS); fb->Visual.rgbBits = fb->Visual.redBits + fb->Visual.greenBits + fb->Visual.blueBits; - fb->Visual.floatMode = GL_FALSE; fb->Visual.samples = rb->NumSamples; if (_mesa_get_format_color_encoding(fmt) == GL_SRGB) fb->Visual.sRGBCapable = ctx->Const.sRGBCapable; @@ -560,6 +559,19 @@ _mesa_update_framebuffer_visual(struct gl_context *ctx, } } + fb->Visual.floatMode = GL_FALSE; + for (i = 0; i < BUFFER_COUNT; i++) { + if (fb->Attachment[i].Renderbuffer) { + const struct gl_renderbuffer *rb = fb->Attachment[i].Renderbuffer; + const gl_format fmt = rb->Format; + + if (_mesa_get_format_datatype(fmt) == GL_FLOAT) { + fb->Visual.floatMode = GL_TRUE; + break; + } + } + } + if (fb->Attachment[BUFFER_DEPTH].Renderbuffer) { const struct gl_renderbuffer *rb = fb->Attachment[BUFFER_DEPTH].Renderbuffer; @@ -1061,12 +1073,12 @@ _mesa_print_framebuffer(const struct gl_framebuffer *fb) for (i = 0; i < BUFFER_COUNT; i++) { const struct gl_renderbuffer_attachment *att = &fb->Attachment[i]; if (att->Type == GL_TEXTURE) { - const struct gl_texture_image *texImage; + const struct gl_texture_image *texImage = + _mesa_get_attachment_teximage_const(att); fprintf(stderr, " %2d: Texture %u, level %u, face %u, slice %u, complete %d\n", i, att->Texture->Name, att->TextureLevel, att->CubeMapFace, att->Zoffset, att->Complete); - texImage = att->Texture->Image[att->CubeMapFace][att->TextureLevel]; fprintf(stderr, " Size: %u x %u x %u Format %s\n", texImage->Width, texImage->Height, texImage->Depth, _mesa_get_format_name(texImage->TexFormat)); diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index 7d1a5cf6002..e18803280c1 100644 --- a/src/mesa/main/get.c +++ b/src/mesa/main/get.c @@ -131,6 +131,7 @@ enum value_extra { EXTRA_VERSION_32, EXTRA_VERSION_ES2, EXTRA_NEW_BUFFERS, + EXTRA_NEW_FRAG_CLAMP, EXTRA_VALID_DRAW_BUFFER, EXTRA_VALID_TEXTURE_UNIT, EXTRA_FLUSH_CURRENT, @@ -223,6 +224,11 @@ static const int extra_new_buffers[] = { EXTRA_END }; +static const int extra_new_frag_clamp[] = { + EXTRA_NEW_FRAG_CLAMP, + EXTRA_END +}; + static const int extra_valid_draw_buffer[] = { EXTRA_VALID_DRAW_BUFFER, EXTRA_END @@ -272,6 +278,11 @@ static const int extra_EXT_gpu_shader4[] = { EXTRA_END }; +static const int extra_ARB_sampler_objects[] = { + EXT(ARB_sampler_objects), + EXTRA_END +}; + EXTRA_EXT(ARB_ES2_compatibility); EXTRA_EXT(ARB_multitexture); @@ -317,6 +328,7 @@ EXTRA_EXT(ARB_vertex_buffer_object); EXTRA_EXT(ARB_geometry_shader4); EXTRA_EXT(ARB_copy_buffer); EXTRA_EXT(EXT_framebuffer_sRGB); +EXTRA_EXT(ARB_texture_buffer_object); static const int extra_ARB_vertex_program_ARB_fragment_program_NV_vertex_program[] = { @@ -374,7 +386,7 @@ static const struct value_desc values[] = { { GL_BLEND, CONTEXT_BIT0(Color.BlendEnabled), NO_EXTRA }, { GL_BLEND_SRC, CONTEXT_ENUM(Color.Blend[0].SrcRGB), NO_EXTRA }, { GL_BLUE_BITS, BUFFER_INT(Visual.blueBits), extra_new_buffers }, - { GL_COLOR_CLEAR_VALUE, CONTEXT_FIELD(Color.ClearColor[0], TYPE_FLOATN_4), NO_EXTRA }, + { GL_COLOR_CLEAR_VALUE, LOC_CUSTOM, TYPE_FLOATN_4, 0, extra_new_frag_clamp }, { GL_COLOR_WRITEMASK, LOC_CUSTOM, TYPE_INT_4, 0, NO_EXTRA }, { GL_CULL_FACE, CONTEXT_BOOL(Polygon.CullFlag), NO_EXTRA }, { GL_CULL_FACE_MODE, CONTEXT_ENUM(Polygon.CullFaceMode), NO_EXTRA }, @@ -511,7 +523,7 @@ static const struct value_desc values[] = { { GL_LIGHT_MODEL_TWO_SIDE, CONTEXT_BOOL(Light.Model.TwoSide), NO_EXTRA }, { GL_ALPHA_TEST, CONTEXT_BOOL(Color.AlphaEnabled), NO_EXTRA }, { GL_ALPHA_TEST_FUNC, CONTEXT_ENUM(Color.AlphaFunc), NO_EXTRA }, - { GL_ALPHA_TEST_REF, CONTEXT_FIELD(Color.AlphaRef, TYPE_FLOATN), NO_EXTRA }, + { GL_ALPHA_TEST_REF, LOC_CUSTOM, TYPE_FLOATN, 0, extra_new_frag_clamp }, { GL_BLEND_DST, CONTEXT_ENUM(Color.Blend[0].DstRGB), NO_EXTRA }, { GL_CLIP_PLANE0, CONTEXT_BIT0(Transform.ClipPlanesEnabled), NO_EXTRA }, { GL_CLIP_PLANE1, CONTEXT_BIT1(Transform.ClipPlanesEnabled), NO_EXTRA }, @@ -530,7 +542,7 @@ static const struct value_desc values[] = { extra_flush_current_valid_texture_unit }, { GL_DISTANCE_ATTENUATION_EXT, CONTEXT_FLOAT3(Point.Params[0]), NO_EXTRA }, { GL_FOG, CONTEXT_BOOL(Fog.Enabled), NO_EXTRA }, - { GL_FOG_COLOR, CONTEXT_FIELD(Fog.Color[0], TYPE_FLOATN_4), NO_EXTRA }, + { GL_FOG_COLOR, LOC_CUSTOM, TYPE_FLOATN_4, 0, extra_new_frag_clamp }, { GL_FOG_DENSITY, CONTEXT_FLOAT(Fog.Density), NO_EXTRA }, { GL_FOG_END, CONTEXT_FLOAT(Fog.End), NO_EXTRA }, { GL_FOG_HINT, CONTEXT_ENUM(Hint.Fog), NO_EXTRA }, @@ -572,7 +584,7 @@ static const struct value_desc values[] = { { GL_VERTEX_ARRAY_SIZE, ARRAY_INT(Vertex.Size), NO_EXTRA }, { GL_VERTEX_ARRAY_TYPE, ARRAY_ENUM(Vertex.Type), NO_EXTRA }, { GL_VERTEX_ARRAY_STRIDE, ARRAY_INT(Vertex.Stride), NO_EXTRA }, - { GL_NORMAL_ARRAY, ARRAY_ENUM(Normal.Enabled), NO_EXTRA }, + { GL_NORMAL_ARRAY, ARRAY_BOOL(Normal.Enabled), NO_EXTRA }, { GL_NORMAL_ARRAY_TYPE, ARRAY_ENUM(Normal.Type), NO_EXTRA }, { GL_NORMAL_ARRAY_STRIDE, ARRAY_INT(Normal.Stride), NO_EXTRA }, { GL_COLOR_ARRAY, ARRAY_BOOL(Color.Enabled), NO_EXTRA }, @@ -582,11 +594,11 @@ static const struct value_desc values[] = { { GL_TEXTURE_COORD_ARRAY, LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct gl_client_array, Enabled), NO_EXTRA }, { GL_TEXTURE_COORD_ARRAY_SIZE, - LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct gl_client_array, Size), NO_EXTRA }, + LOC_CUSTOM, TYPE_INT, offsetof(struct gl_client_array, Size), NO_EXTRA }, { GL_TEXTURE_COORD_ARRAY_TYPE, - LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct gl_client_array, Type), NO_EXTRA }, + LOC_CUSTOM, TYPE_ENUM, offsetof(struct gl_client_array, Type), NO_EXTRA }, { GL_TEXTURE_COORD_ARRAY_STRIDE, - LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct gl_client_array, Stride), NO_EXTRA }, + LOC_CUSTOM, TYPE_INT, offsetof(struct gl_client_array, Stride), NO_EXTRA }, /* GL_ARB_ES2_compatibility */ { GL_SHADER_COMPILER, CONST(1), extra_ARB_ES2_compatibility }, @@ -674,7 +686,7 @@ static const struct value_desc values[] = { /* GL_ARB_draw_buffers */ { GL_MAX_DRAW_BUFFERS_ARB, CONTEXT_INT(Const.MaxDrawBuffers), NO_EXTRA }, - { GL_BLEND_COLOR_EXT, CONTEXT_FIELD(Color.BlendColor[0], TYPE_FLOATN_4), NO_EXTRA }, + { GL_BLEND_COLOR_EXT, LOC_CUSTOM, TYPE_FLOATN_4, 0, extra_new_frag_clamp }, /* GL_ARB_fragment_program */ { GL_MAX_TEXTURE_IMAGE_UNITS_ARB, /* == GL_MAX_TEXTURE_IMAGE_UNITS_NV */ CONTEXT_INT(Const.MaxTextureImageUnits), @@ -1219,6 +1231,9 @@ static const struct value_desc values[] = { CONTEXT_INT(Const.MaxVertexVaryingComponents), extra_ARB_geometry_shader4 }, + /* GL_ARB_color_buffer_float */ + { GL_RGBA_FLOAT_MODE_ARB, BUFFER_FIELD(Visual.floatMode, TYPE_BOOLEAN), 0 }, + /* GL_EXT_gpu_shader4 / GL 3.0 */ { GL_MIN_PROGRAM_TEXEL_OFFSET, CONTEXT_INT(Const.MinProgramTexelOffset), @@ -1227,6 +1242,22 @@ static const struct value_desc values[] = { CONTEXT_INT(Const.MaxProgramTexelOffset), extra_EXT_gpu_shader4 }, + /* GL_ARB_texture_buffer_object */ + { GL_MAX_TEXTURE_BUFFER_SIZE_ARB, CONTEXT_INT(Const.MaxTextureBufferSize), + extra_ARB_texture_buffer_object }, + { GL_TEXTURE_BINDING_BUFFER_ARB, LOC_CUSTOM, TYPE_INT, 0, + extra_ARB_texture_buffer_object }, + { GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB, LOC_CUSTOM, TYPE_INT, + TEXTURE_BUFFER_INDEX, extra_ARB_texture_buffer_object }, + { GL_TEXTURE_BUFFER_FORMAT_ARB, LOC_CUSTOM, TYPE_INT, 0, + extra_ARB_texture_buffer_object }, + { GL_TEXTURE_BUFFER_ARB, LOC_CUSTOM, TYPE_INT, 0, + extra_ARB_texture_buffer_object }, + + /* GL_ARB_sampler_objects / GL 3.3 */ + { GL_SAMPLER_BINDING, + LOC_CUSTOM, TYPE_INT, GL_SAMPLER_BINDING, extra_ARB_sampler_objects }, + /* GL 3.0 */ { GL_NUM_EXTENSIONS, LOC_CUSTOM, TYPE_INT, 0, extra_version_30 }, { GL_MAJOR_VERSION, CONTEXT_INT(VersionMajor), extra_version_30 }, @@ -1367,7 +1398,7 @@ void _mesa_init_get_hash(struct gl_context *ctx) static void find_custom_value(struct gl_context *ctx, const struct value_desc *d, union value *v) { - struct gl_buffer_object *buffer_obj; + struct gl_buffer_object **buffer_obj; struct gl_client_array *array; GLuint unit, *p; @@ -1569,9 +1600,9 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB: case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB: case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB: - buffer_obj = (struct gl_buffer_object *) + buffer_obj = (struct gl_buffer_object **) ((char *) ctx->Array.ArrayObj + d->offset); - v->value_int = buffer_obj->Name; + v->value_int = (*buffer_obj)->Name; break; case GL_ARRAY_BUFFER_BINDING_ARB: v->value_int = ctx->Array.ArrayBufferObj->Name; @@ -1633,6 +1664,30 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu v->value_int = ctx->Array.ArrayObj->PointSize.BufferObj->Name; break; + case GL_FOG_COLOR: + if(ctx->Color._ClampFragmentColor) + COPY_4FV(v->value_float_4, ctx->Fog.Color); + else + COPY_4FV(v->value_float_4, ctx->Fog.ColorUnclamped); + break; + case GL_COLOR_CLEAR_VALUE: + if(ctx->Color._ClampFragmentColor) + COPY_4FV(v->value_float_4, ctx->Color.ClearColor); + else + COPY_4FV(v->value_float_4, ctx->Color.ClearColorUnclamped); + break; + case GL_BLEND_COLOR_EXT: + if(ctx->Color._ClampFragmentColor) + COPY_4FV(v->value_float_4, ctx->Color.BlendColor); + else + COPY_4FV(v->value_float_4, ctx->Color.BlendColorUnclamped); + break; + case GL_ALPHA_TEST_REF: + if(ctx->Color._ClampFragmentColor) + v->value_float = ctx->Color.AlphaRef; + else + v->value_float = ctx->Color.AlphaRefUnclamped; + break; case GL_MAX_VERTEX_UNIFORM_VECTORS: v->value_int = ctx->Const.VertexProgram.MaxUniformComponents / 4; break; @@ -1640,6 +1695,37 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu case GL_MAX_FRAGMENT_UNIFORM_VECTORS: v->value_int = ctx->Const.FragmentProgram.MaxUniformComponents / 4; break; + + /* GL_ARB_texture_buffer_object */ + case GL_TEXTURE_BUFFER_ARB: + v->value_int = ctx->Texture.BufferObject->Name; + break; + case GL_TEXTURE_BINDING_BUFFER_ARB: + unit = ctx->Texture.CurrentUnit; + v->value_int = + ctx->Texture.Unit[unit].CurrentTex[TEXTURE_BUFFER_INDEX]->Name; + break; + case GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB: + { + struct gl_buffer_object *buf = + ctx->Texture.Unit[ctx->Texture.CurrentUnit] + .CurrentTex[TEXTURE_BUFFER_INDEX]->BufferObject; + v->value_int = buf ? buf->Name : 0; + } + break; + case GL_TEXTURE_BUFFER_FORMAT_ARB: + v->value_int = ctx->Texture.Unit[ctx->Texture.CurrentUnit] + .CurrentTex[TEXTURE_BUFFER_INDEX]->BufferObjectFormat; + break; + + /* GL_ARB_sampler_objects */ + case GL_SAMPLER_BINDING: + { + struct gl_sampler_object *samp = + ctx->Texture.Unit[ctx->Texture.CurrentUnit].Sampler; + v->value_int = samp ? samp->Name : 0; + } + break; } } @@ -1687,6 +1773,10 @@ check_extra(struct gl_context *ctx, const char *func, const struct value_desc *d enabled++; } break; + case EXTRA_NEW_FRAG_CLAMP: + if (ctx->NewState & (_NEW_BUFFERS | _NEW_FRAG_CLAMP)) + _mesa_update_state(ctx); + break; case EXTRA_VERSION_ES2: if (ctx->API == API_OPENGLES2) { total++; diff --git a/src/mesa/main/glapidispatch.h b/src/mesa/main/glapidispatch.h index cbfe6400e42..c1cc6cb1254 100644 --- a/src/mesa/main/glapidispatch.h +++ b/src/mesa/main/glapidispatch.h @@ -59,7 +59,7 @@ } while(0) /* total number of offsets below */ -#define _gloffset_COUNT 892 +#define _gloffset_COUNT 908 #define _gloffset_NewList 0 #define _gloffset_EndList 1 @@ -636,330 +636,346 @@ #define _gloffset_GetActiveAttribARB 569 #define _gloffset_GetAttribLocationARB 570 #define _gloffset_DrawBuffersARB 571 -#define _gloffset_DrawArraysInstancedARB 572 -#define _gloffset_DrawElementsInstancedARB 573 -#define _gloffset_RenderbufferStorageMultisample 574 -#define _gloffset_FramebufferTextureARB 575 -#define _gloffset_FramebufferTextureFaceARB 576 -#define _gloffset_ProgramParameteriARB 577 -#define _gloffset_VertexAttribDivisorARB 578 -#define _gloffset_FlushMappedBufferRange 579 -#define _gloffset_MapBufferRange 580 -#define _gloffset_BindVertexArray 581 -#define _gloffset_GenVertexArrays 582 -#define _gloffset_CopyBufferSubData 583 -#define _gloffset_ClientWaitSync 584 -#define _gloffset_DeleteSync 585 -#define _gloffset_FenceSync 586 -#define _gloffset_GetInteger64v 587 -#define _gloffset_GetSynciv 588 -#define _gloffset_IsSync 589 -#define _gloffset_WaitSync 590 -#define _gloffset_DrawElementsBaseVertex 591 -#define _gloffset_DrawRangeElementsBaseVertex 592 -#define _gloffset_MultiDrawElementsBaseVertex 593 -#define _gloffset_BlendEquationSeparateiARB 594 -#define _gloffset_BlendEquationiARB 595 -#define _gloffset_BlendFuncSeparateiARB 596 -#define _gloffset_BlendFunciARB 597 -#define _gloffset_BindTransformFeedback 598 -#define _gloffset_DeleteTransformFeedbacks 599 -#define _gloffset_DrawTransformFeedback 600 -#define _gloffset_GenTransformFeedbacks 601 -#define _gloffset_IsTransformFeedback 602 -#define _gloffset_PauseTransformFeedback 603 -#define _gloffset_ResumeTransformFeedback 604 -#define _gloffset_ClearDepthf 605 -#define _gloffset_DepthRangef 606 -#define _gloffset_GetShaderPrecisionFormat 607 -#define _gloffset_ReleaseShaderCompiler 608 -#define _gloffset_ShaderBinary 609 -#define _gloffset_PolygonOffsetEXT 610 -#define _gloffset_GetPixelTexGenParameterfvSGIS 611 -#define _gloffset_GetPixelTexGenParameterivSGIS 612 -#define _gloffset_PixelTexGenParameterfSGIS 613 -#define _gloffset_PixelTexGenParameterfvSGIS 614 -#define _gloffset_PixelTexGenParameteriSGIS 615 -#define _gloffset_PixelTexGenParameterivSGIS 616 -#define _gloffset_SampleMaskSGIS 617 -#define _gloffset_SamplePatternSGIS 618 -#define _gloffset_ColorPointerEXT 619 -#define _gloffset_EdgeFlagPointerEXT 620 -#define _gloffset_IndexPointerEXT 621 -#define _gloffset_NormalPointerEXT 622 -#define _gloffset_TexCoordPointerEXT 623 -#define _gloffset_VertexPointerEXT 624 -#define _gloffset_PointParameterfEXT 625 -#define _gloffset_PointParameterfvEXT 626 -#define _gloffset_LockArraysEXT 627 -#define _gloffset_UnlockArraysEXT 628 -#define _gloffset_SecondaryColor3bEXT 629 -#define _gloffset_SecondaryColor3bvEXT 630 -#define _gloffset_SecondaryColor3dEXT 631 -#define _gloffset_SecondaryColor3dvEXT 632 -#define _gloffset_SecondaryColor3fEXT 633 -#define _gloffset_SecondaryColor3fvEXT 634 -#define _gloffset_SecondaryColor3iEXT 635 -#define _gloffset_SecondaryColor3ivEXT 636 -#define _gloffset_SecondaryColor3sEXT 637 -#define _gloffset_SecondaryColor3svEXT 638 -#define _gloffset_SecondaryColor3ubEXT 639 -#define _gloffset_SecondaryColor3ubvEXT 640 -#define _gloffset_SecondaryColor3uiEXT 641 -#define _gloffset_SecondaryColor3uivEXT 642 -#define _gloffset_SecondaryColor3usEXT 643 -#define _gloffset_SecondaryColor3usvEXT 644 -#define _gloffset_SecondaryColorPointerEXT 645 -#define _gloffset_MultiDrawArraysEXT 646 -#define _gloffset_MultiDrawElementsEXT 647 -#define _gloffset_FogCoordPointerEXT 648 -#define _gloffset_FogCoorddEXT 649 -#define _gloffset_FogCoorddvEXT 650 -#define _gloffset_FogCoordfEXT 651 -#define _gloffset_FogCoordfvEXT 652 -#define _gloffset_PixelTexGenSGIX 653 -#define _gloffset_BlendFuncSeparateEXT 654 -#define _gloffset_FlushVertexArrayRangeNV 655 -#define _gloffset_VertexArrayRangeNV 656 -#define _gloffset_CombinerInputNV 657 -#define _gloffset_CombinerOutputNV 658 -#define _gloffset_CombinerParameterfNV 659 -#define _gloffset_CombinerParameterfvNV 660 -#define _gloffset_CombinerParameteriNV 661 -#define _gloffset_CombinerParameterivNV 662 -#define _gloffset_FinalCombinerInputNV 663 -#define _gloffset_GetCombinerInputParameterfvNV 664 -#define _gloffset_GetCombinerInputParameterivNV 665 -#define _gloffset_GetCombinerOutputParameterfvNV 666 -#define _gloffset_GetCombinerOutputParameterivNV 667 -#define _gloffset_GetFinalCombinerInputParameterfvNV 668 -#define _gloffset_GetFinalCombinerInputParameterivNV 669 -#define _gloffset_ResizeBuffersMESA 670 -#define _gloffset_WindowPos2dMESA 671 -#define _gloffset_WindowPos2dvMESA 672 -#define _gloffset_WindowPos2fMESA 673 -#define _gloffset_WindowPos2fvMESA 674 -#define _gloffset_WindowPos2iMESA 675 -#define _gloffset_WindowPos2ivMESA 676 -#define _gloffset_WindowPos2sMESA 677 -#define _gloffset_WindowPos2svMESA 678 -#define _gloffset_WindowPos3dMESA 679 -#define _gloffset_WindowPos3dvMESA 680 -#define _gloffset_WindowPos3fMESA 681 -#define _gloffset_WindowPos3fvMESA 682 -#define _gloffset_WindowPos3iMESA 683 -#define _gloffset_WindowPos3ivMESA 684 -#define _gloffset_WindowPos3sMESA 685 -#define _gloffset_WindowPos3svMESA 686 -#define _gloffset_WindowPos4dMESA 687 -#define _gloffset_WindowPos4dvMESA 688 -#define _gloffset_WindowPos4fMESA 689 -#define _gloffset_WindowPos4fvMESA 690 -#define _gloffset_WindowPos4iMESA 691 -#define _gloffset_WindowPos4ivMESA 692 -#define _gloffset_WindowPos4sMESA 693 -#define _gloffset_WindowPos4svMESA 694 -#define _gloffset_MultiModeDrawArraysIBM 695 -#define _gloffset_MultiModeDrawElementsIBM 696 -#define _gloffset_DeleteFencesNV 697 -#define _gloffset_FinishFenceNV 698 -#define _gloffset_GenFencesNV 699 -#define _gloffset_GetFenceivNV 700 -#define _gloffset_IsFenceNV 701 -#define _gloffset_SetFenceNV 702 -#define _gloffset_TestFenceNV 703 -#define _gloffset_AreProgramsResidentNV 704 -#define _gloffset_BindProgramNV 705 -#define _gloffset_DeleteProgramsNV 706 -#define _gloffset_ExecuteProgramNV 707 -#define _gloffset_GenProgramsNV 708 -#define _gloffset_GetProgramParameterdvNV 709 -#define _gloffset_GetProgramParameterfvNV 710 -#define _gloffset_GetProgramStringNV 711 -#define _gloffset_GetProgramivNV 712 -#define _gloffset_GetTrackMatrixivNV 713 -#define _gloffset_GetVertexAttribPointervNV 714 -#define _gloffset_GetVertexAttribdvNV 715 -#define _gloffset_GetVertexAttribfvNV 716 -#define _gloffset_GetVertexAttribivNV 717 -#define _gloffset_IsProgramNV 718 -#define _gloffset_LoadProgramNV 719 -#define _gloffset_ProgramParameters4dvNV 720 -#define _gloffset_ProgramParameters4fvNV 721 -#define _gloffset_RequestResidentProgramsNV 722 -#define _gloffset_TrackMatrixNV 723 -#define _gloffset_VertexAttrib1dNV 724 -#define _gloffset_VertexAttrib1dvNV 725 -#define _gloffset_VertexAttrib1fNV 726 -#define _gloffset_VertexAttrib1fvNV 727 -#define _gloffset_VertexAttrib1sNV 728 -#define _gloffset_VertexAttrib1svNV 729 -#define _gloffset_VertexAttrib2dNV 730 -#define _gloffset_VertexAttrib2dvNV 731 -#define _gloffset_VertexAttrib2fNV 732 -#define _gloffset_VertexAttrib2fvNV 733 -#define _gloffset_VertexAttrib2sNV 734 -#define _gloffset_VertexAttrib2svNV 735 -#define _gloffset_VertexAttrib3dNV 736 -#define _gloffset_VertexAttrib3dvNV 737 -#define _gloffset_VertexAttrib3fNV 738 -#define _gloffset_VertexAttrib3fvNV 739 -#define _gloffset_VertexAttrib3sNV 740 -#define _gloffset_VertexAttrib3svNV 741 -#define _gloffset_VertexAttrib4dNV 742 -#define _gloffset_VertexAttrib4dvNV 743 -#define _gloffset_VertexAttrib4fNV 744 -#define _gloffset_VertexAttrib4fvNV 745 -#define _gloffset_VertexAttrib4sNV 746 -#define _gloffset_VertexAttrib4svNV 747 -#define _gloffset_VertexAttrib4ubNV 748 -#define _gloffset_VertexAttrib4ubvNV 749 -#define _gloffset_VertexAttribPointerNV 750 -#define _gloffset_VertexAttribs1dvNV 751 -#define _gloffset_VertexAttribs1fvNV 752 -#define _gloffset_VertexAttribs1svNV 753 -#define _gloffset_VertexAttribs2dvNV 754 -#define _gloffset_VertexAttribs2fvNV 755 -#define _gloffset_VertexAttribs2svNV 756 -#define _gloffset_VertexAttribs3dvNV 757 -#define _gloffset_VertexAttribs3fvNV 758 -#define _gloffset_VertexAttribs3svNV 759 -#define _gloffset_VertexAttribs4dvNV 760 -#define _gloffset_VertexAttribs4fvNV 761 -#define _gloffset_VertexAttribs4svNV 762 -#define _gloffset_VertexAttribs4ubvNV 763 -#define _gloffset_GetTexBumpParameterfvATI 764 -#define _gloffset_GetTexBumpParameterivATI 765 -#define _gloffset_TexBumpParameterfvATI 766 -#define _gloffset_TexBumpParameterivATI 767 -#define _gloffset_AlphaFragmentOp1ATI 768 -#define _gloffset_AlphaFragmentOp2ATI 769 -#define _gloffset_AlphaFragmentOp3ATI 770 -#define _gloffset_BeginFragmentShaderATI 771 -#define _gloffset_BindFragmentShaderATI 772 -#define _gloffset_ColorFragmentOp1ATI 773 -#define _gloffset_ColorFragmentOp2ATI 774 -#define _gloffset_ColorFragmentOp3ATI 775 -#define _gloffset_DeleteFragmentShaderATI 776 -#define _gloffset_EndFragmentShaderATI 777 -#define _gloffset_GenFragmentShadersATI 778 -#define _gloffset_PassTexCoordATI 779 -#define _gloffset_SampleMapATI 780 -#define _gloffset_SetFragmentShaderConstantATI 781 -#define _gloffset_PointParameteriNV 782 -#define _gloffset_PointParameterivNV 783 -#define _gloffset_ActiveStencilFaceEXT 784 -#define _gloffset_BindVertexArrayAPPLE 785 -#define _gloffset_DeleteVertexArraysAPPLE 786 -#define _gloffset_GenVertexArraysAPPLE 787 -#define _gloffset_IsVertexArrayAPPLE 788 -#define _gloffset_GetProgramNamedParameterdvNV 789 -#define _gloffset_GetProgramNamedParameterfvNV 790 -#define _gloffset_ProgramNamedParameter4dNV 791 -#define _gloffset_ProgramNamedParameter4dvNV 792 -#define _gloffset_ProgramNamedParameter4fNV 793 -#define _gloffset_ProgramNamedParameter4fvNV 794 -#define _gloffset_PrimitiveRestartIndexNV 795 -#define _gloffset_PrimitiveRestartNV 796 -#define _gloffset_DepthBoundsEXT 797 -#define _gloffset_BlendEquationSeparateEXT 798 -#define _gloffset_BindFramebufferEXT 799 -#define _gloffset_BindRenderbufferEXT 800 -#define _gloffset_CheckFramebufferStatusEXT 801 -#define _gloffset_DeleteFramebuffersEXT 802 -#define _gloffset_DeleteRenderbuffersEXT 803 -#define _gloffset_FramebufferRenderbufferEXT 804 -#define _gloffset_FramebufferTexture1DEXT 805 -#define _gloffset_FramebufferTexture2DEXT 806 -#define _gloffset_FramebufferTexture3DEXT 807 -#define _gloffset_GenFramebuffersEXT 808 -#define _gloffset_GenRenderbuffersEXT 809 -#define _gloffset_GenerateMipmapEXT 810 -#define _gloffset_GetFramebufferAttachmentParameterivEXT 811 -#define _gloffset_GetRenderbufferParameterivEXT 812 -#define _gloffset_IsFramebufferEXT 813 -#define _gloffset_IsRenderbufferEXT 814 -#define _gloffset_RenderbufferStorageEXT 815 -#define _gloffset_BlitFramebufferEXT 816 -#define _gloffset_BufferParameteriAPPLE 817 -#define _gloffset_FlushMappedBufferRangeAPPLE 818 -#define _gloffset_BindFragDataLocationEXT 819 -#define _gloffset_GetFragDataLocationEXT 820 -#define _gloffset_GetUniformuivEXT 821 -#define _gloffset_GetVertexAttribIivEXT 822 -#define _gloffset_GetVertexAttribIuivEXT 823 -#define _gloffset_Uniform1uiEXT 824 -#define _gloffset_Uniform1uivEXT 825 -#define _gloffset_Uniform2uiEXT 826 -#define _gloffset_Uniform2uivEXT 827 -#define _gloffset_Uniform3uiEXT 828 -#define _gloffset_Uniform3uivEXT 829 -#define _gloffset_Uniform4uiEXT 830 -#define _gloffset_Uniform4uivEXT 831 -#define _gloffset_VertexAttribI1iEXT 832 -#define _gloffset_VertexAttribI1ivEXT 833 -#define _gloffset_VertexAttribI1uiEXT 834 -#define _gloffset_VertexAttribI1uivEXT 835 -#define _gloffset_VertexAttribI2iEXT 836 -#define _gloffset_VertexAttribI2ivEXT 837 -#define _gloffset_VertexAttribI2uiEXT 838 -#define _gloffset_VertexAttribI2uivEXT 839 -#define _gloffset_VertexAttribI3iEXT 840 -#define _gloffset_VertexAttribI3ivEXT 841 -#define _gloffset_VertexAttribI3uiEXT 842 -#define _gloffset_VertexAttribI3uivEXT 843 -#define _gloffset_VertexAttribI4bvEXT 844 -#define _gloffset_VertexAttribI4iEXT 845 -#define _gloffset_VertexAttribI4ivEXT 846 -#define _gloffset_VertexAttribI4svEXT 847 -#define _gloffset_VertexAttribI4ubvEXT 848 -#define _gloffset_VertexAttribI4uiEXT 849 -#define _gloffset_VertexAttribI4uivEXT 850 -#define _gloffset_VertexAttribI4usvEXT 851 -#define _gloffset_VertexAttribIPointerEXT 852 -#define _gloffset_FramebufferTextureLayerEXT 853 -#define _gloffset_ColorMaskIndexedEXT 854 -#define _gloffset_DisableIndexedEXT 855 -#define _gloffset_EnableIndexedEXT 856 -#define _gloffset_GetBooleanIndexedvEXT 857 -#define _gloffset_GetIntegerIndexedvEXT 858 -#define _gloffset_IsEnabledIndexedEXT 859 -#define _gloffset_ClearColorIiEXT 860 -#define _gloffset_ClearColorIuiEXT 861 -#define _gloffset_GetTexParameterIivEXT 862 -#define _gloffset_GetTexParameterIuivEXT 863 -#define _gloffset_TexParameterIivEXT 864 -#define _gloffset_TexParameterIuivEXT 865 -#define _gloffset_BeginConditionalRenderNV 866 -#define _gloffset_EndConditionalRenderNV 867 -#define _gloffset_BeginTransformFeedbackEXT 868 -#define _gloffset_BindBufferBaseEXT 869 -#define _gloffset_BindBufferOffsetEXT 870 -#define _gloffset_BindBufferRangeEXT 871 -#define _gloffset_EndTransformFeedbackEXT 872 -#define _gloffset_GetTransformFeedbackVaryingEXT 873 -#define _gloffset_TransformFeedbackVaryingsEXT 874 -#define _gloffset_ProvokingVertexEXT 875 -#define _gloffset_GetTexParameterPointervAPPLE 876 -#define _gloffset_TextureRangeAPPLE 877 -#define _gloffset_GetObjectParameterivAPPLE 878 -#define _gloffset_ObjectPurgeableAPPLE 879 -#define _gloffset_ObjectUnpurgeableAPPLE 880 -#define _gloffset_ActiveProgramEXT 881 -#define _gloffset_CreateShaderProgramEXT 882 -#define _gloffset_UseShaderProgramEXT 883 -#define _gloffset_TextureBarrierNV 884 -#define _gloffset_StencilFuncSeparateATI 885 -#define _gloffset_ProgramEnvParameters4fvEXT 886 -#define _gloffset_ProgramLocalParameters4fvEXT 887 -#define _gloffset_GetQueryObjecti64vEXT 888 -#define _gloffset_GetQueryObjectui64vEXT 889 -#define _gloffset_EGLImageTargetRenderbufferStorageOES 890 -#define _gloffset_EGLImageTargetTexture2DOES 891 +#define _gloffset_ClampColorARB 572 +#define _gloffset_DrawArraysInstancedARB 573 +#define _gloffset_DrawElementsInstancedARB 574 +#define _gloffset_RenderbufferStorageMultisample 575 +#define _gloffset_FramebufferTextureARB 576 +#define _gloffset_FramebufferTextureFaceARB 577 +#define _gloffset_ProgramParameteriARB 578 +#define _gloffset_VertexAttribDivisorARB 579 +#define _gloffset_FlushMappedBufferRange 580 +#define _gloffset_MapBufferRange 581 +#define _gloffset_TexBufferARB 582 +#define _gloffset_BindVertexArray 583 +#define _gloffset_GenVertexArrays 584 +#define _gloffset_CopyBufferSubData 585 +#define _gloffset_ClientWaitSync 586 +#define _gloffset_DeleteSync 587 +#define _gloffset_FenceSync 588 +#define _gloffset_GetInteger64v 589 +#define _gloffset_GetSynciv 590 +#define _gloffset_IsSync 591 +#define _gloffset_WaitSync 592 +#define _gloffset_DrawElementsBaseVertex 593 +#define _gloffset_DrawRangeElementsBaseVertex 594 +#define _gloffset_MultiDrawElementsBaseVertex 595 +#define _gloffset_BlendEquationSeparateiARB 596 +#define _gloffset_BlendEquationiARB 597 +#define _gloffset_BlendFuncSeparateiARB 598 +#define _gloffset_BlendFunciARB 599 +#define _gloffset_BindSampler 600 +#define _gloffset_DeleteSamplers 601 +#define _gloffset_GenSamplers 602 +#define _gloffset_GetSamplerParameterIiv 603 +#define _gloffset_GetSamplerParameterIuiv 604 +#define _gloffset_GetSamplerParameterfv 605 +#define _gloffset_GetSamplerParameteriv 606 +#define _gloffset_IsSampler 607 +#define _gloffset_SamplerParameterIiv 608 +#define _gloffset_SamplerParameterIuiv 609 +#define _gloffset_SamplerParameterf 610 +#define _gloffset_SamplerParameterfv 611 +#define _gloffset_SamplerParameteri 612 +#define _gloffset_SamplerParameteriv 613 +#define _gloffset_BindTransformFeedback 614 +#define _gloffset_DeleteTransformFeedbacks 615 +#define _gloffset_DrawTransformFeedback 616 +#define _gloffset_GenTransformFeedbacks 617 +#define _gloffset_IsTransformFeedback 618 +#define _gloffset_PauseTransformFeedback 619 +#define _gloffset_ResumeTransformFeedback 620 +#define _gloffset_ClearDepthf 621 +#define _gloffset_DepthRangef 622 +#define _gloffset_GetShaderPrecisionFormat 623 +#define _gloffset_ReleaseShaderCompiler 624 +#define _gloffset_ShaderBinary 625 +#define _gloffset_PolygonOffsetEXT 626 +#define _gloffset_GetPixelTexGenParameterfvSGIS 627 +#define _gloffset_GetPixelTexGenParameterivSGIS 628 +#define _gloffset_PixelTexGenParameterfSGIS 629 +#define _gloffset_PixelTexGenParameterfvSGIS 630 +#define _gloffset_PixelTexGenParameteriSGIS 631 +#define _gloffset_PixelTexGenParameterivSGIS 632 +#define _gloffset_SampleMaskSGIS 633 +#define _gloffset_SamplePatternSGIS 634 +#define _gloffset_ColorPointerEXT 635 +#define _gloffset_EdgeFlagPointerEXT 636 +#define _gloffset_IndexPointerEXT 637 +#define _gloffset_NormalPointerEXT 638 +#define _gloffset_TexCoordPointerEXT 639 +#define _gloffset_VertexPointerEXT 640 +#define _gloffset_PointParameterfEXT 641 +#define _gloffset_PointParameterfvEXT 642 +#define _gloffset_LockArraysEXT 643 +#define _gloffset_UnlockArraysEXT 644 +#define _gloffset_SecondaryColor3bEXT 645 +#define _gloffset_SecondaryColor3bvEXT 646 +#define _gloffset_SecondaryColor3dEXT 647 +#define _gloffset_SecondaryColor3dvEXT 648 +#define _gloffset_SecondaryColor3fEXT 649 +#define _gloffset_SecondaryColor3fvEXT 650 +#define _gloffset_SecondaryColor3iEXT 651 +#define _gloffset_SecondaryColor3ivEXT 652 +#define _gloffset_SecondaryColor3sEXT 653 +#define _gloffset_SecondaryColor3svEXT 654 +#define _gloffset_SecondaryColor3ubEXT 655 +#define _gloffset_SecondaryColor3ubvEXT 656 +#define _gloffset_SecondaryColor3uiEXT 657 +#define _gloffset_SecondaryColor3uivEXT 658 +#define _gloffset_SecondaryColor3usEXT 659 +#define _gloffset_SecondaryColor3usvEXT 660 +#define _gloffset_SecondaryColorPointerEXT 661 +#define _gloffset_MultiDrawArraysEXT 662 +#define _gloffset_MultiDrawElementsEXT 663 +#define _gloffset_FogCoordPointerEXT 664 +#define _gloffset_FogCoorddEXT 665 +#define _gloffset_FogCoorddvEXT 666 +#define _gloffset_FogCoordfEXT 667 +#define _gloffset_FogCoordfvEXT 668 +#define _gloffset_PixelTexGenSGIX 669 +#define _gloffset_BlendFuncSeparateEXT 670 +#define _gloffset_FlushVertexArrayRangeNV 671 +#define _gloffset_VertexArrayRangeNV 672 +#define _gloffset_CombinerInputNV 673 +#define _gloffset_CombinerOutputNV 674 +#define _gloffset_CombinerParameterfNV 675 +#define _gloffset_CombinerParameterfvNV 676 +#define _gloffset_CombinerParameteriNV 677 +#define _gloffset_CombinerParameterivNV 678 +#define _gloffset_FinalCombinerInputNV 679 +#define _gloffset_GetCombinerInputParameterfvNV 680 +#define _gloffset_GetCombinerInputParameterivNV 681 +#define _gloffset_GetCombinerOutputParameterfvNV 682 +#define _gloffset_GetCombinerOutputParameterivNV 683 +#define _gloffset_GetFinalCombinerInputParameterfvNV 684 +#define _gloffset_GetFinalCombinerInputParameterivNV 685 +#define _gloffset_ResizeBuffersMESA 686 +#define _gloffset_WindowPos2dMESA 687 +#define _gloffset_WindowPos2dvMESA 688 +#define _gloffset_WindowPos2fMESA 689 +#define _gloffset_WindowPos2fvMESA 690 +#define _gloffset_WindowPos2iMESA 691 +#define _gloffset_WindowPos2ivMESA 692 +#define _gloffset_WindowPos2sMESA 693 +#define _gloffset_WindowPos2svMESA 694 +#define _gloffset_WindowPos3dMESA 695 +#define _gloffset_WindowPos3dvMESA 696 +#define _gloffset_WindowPos3fMESA 697 +#define _gloffset_WindowPos3fvMESA 698 +#define _gloffset_WindowPos3iMESA 699 +#define _gloffset_WindowPos3ivMESA 700 +#define _gloffset_WindowPos3sMESA 701 +#define _gloffset_WindowPos3svMESA 702 +#define _gloffset_WindowPos4dMESA 703 +#define _gloffset_WindowPos4dvMESA 704 +#define _gloffset_WindowPos4fMESA 705 +#define _gloffset_WindowPos4fvMESA 706 +#define _gloffset_WindowPos4iMESA 707 +#define _gloffset_WindowPos4ivMESA 708 +#define _gloffset_WindowPos4sMESA 709 +#define _gloffset_WindowPos4svMESA 710 +#define _gloffset_MultiModeDrawArraysIBM 711 +#define _gloffset_MultiModeDrawElementsIBM 712 +#define _gloffset_DeleteFencesNV 713 +#define _gloffset_FinishFenceNV 714 +#define _gloffset_GenFencesNV 715 +#define _gloffset_GetFenceivNV 716 +#define _gloffset_IsFenceNV 717 +#define _gloffset_SetFenceNV 718 +#define _gloffset_TestFenceNV 719 +#define _gloffset_AreProgramsResidentNV 720 +#define _gloffset_BindProgramNV 721 +#define _gloffset_DeleteProgramsNV 722 +#define _gloffset_ExecuteProgramNV 723 +#define _gloffset_GenProgramsNV 724 +#define _gloffset_GetProgramParameterdvNV 725 +#define _gloffset_GetProgramParameterfvNV 726 +#define _gloffset_GetProgramStringNV 727 +#define _gloffset_GetProgramivNV 728 +#define _gloffset_GetTrackMatrixivNV 729 +#define _gloffset_GetVertexAttribPointervNV 730 +#define _gloffset_GetVertexAttribdvNV 731 +#define _gloffset_GetVertexAttribfvNV 732 +#define _gloffset_GetVertexAttribivNV 733 +#define _gloffset_IsProgramNV 734 +#define _gloffset_LoadProgramNV 735 +#define _gloffset_ProgramParameters4dvNV 736 +#define _gloffset_ProgramParameters4fvNV 737 +#define _gloffset_RequestResidentProgramsNV 738 +#define _gloffset_TrackMatrixNV 739 +#define _gloffset_VertexAttrib1dNV 740 +#define _gloffset_VertexAttrib1dvNV 741 +#define _gloffset_VertexAttrib1fNV 742 +#define _gloffset_VertexAttrib1fvNV 743 +#define _gloffset_VertexAttrib1sNV 744 +#define _gloffset_VertexAttrib1svNV 745 +#define _gloffset_VertexAttrib2dNV 746 +#define _gloffset_VertexAttrib2dvNV 747 +#define _gloffset_VertexAttrib2fNV 748 +#define _gloffset_VertexAttrib2fvNV 749 +#define _gloffset_VertexAttrib2sNV 750 +#define _gloffset_VertexAttrib2svNV 751 +#define _gloffset_VertexAttrib3dNV 752 +#define _gloffset_VertexAttrib3dvNV 753 +#define _gloffset_VertexAttrib3fNV 754 +#define _gloffset_VertexAttrib3fvNV 755 +#define _gloffset_VertexAttrib3sNV 756 +#define _gloffset_VertexAttrib3svNV 757 +#define _gloffset_VertexAttrib4dNV 758 +#define _gloffset_VertexAttrib4dvNV 759 +#define _gloffset_VertexAttrib4fNV 760 +#define _gloffset_VertexAttrib4fvNV 761 +#define _gloffset_VertexAttrib4sNV 762 +#define _gloffset_VertexAttrib4svNV 763 +#define _gloffset_VertexAttrib4ubNV 764 +#define _gloffset_VertexAttrib4ubvNV 765 +#define _gloffset_VertexAttribPointerNV 766 +#define _gloffset_VertexAttribs1dvNV 767 +#define _gloffset_VertexAttribs1fvNV 768 +#define _gloffset_VertexAttribs1svNV 769 +#define _gloffset_VertexAttribs2dvNV 770 +#define _gloffset_VertexAttribs2fvNV 771 +#define _gloffset_VertexAttribs2svNV 772 +#define _gloffset_VertexAttribs3dvNV 773 +#define _gloffset_VertexAttribs3fvNV 774 +#define _gloffset_VertexAttribs3svNV 775 +#define _gloffset_VertexAttribs4dvNV 776 +#define _gloffset_VertexAttribs4fvNV 777 +#define _gloffset_VertexAttribs4svNV 778 +#define _gloffset_VertexAttribs4ubvNV 779 +#define _gloffset_GetTexBumpParameterfvATI 780 +#define _gloffset_GetTexBumpParameterivATI 781 +#define _gloffset_TexBumpParameterfvATI 782 +#define _gloffset_TexBumpParameterivATI 783 +#define _gloffset_AlphaFragmentOp1ATI 784 +#define _gloffset_AlphaFragmentOp2ATI 785 +#define _gloffset_AlphaFragmentOp3ATI 786 +#define _gloffset_BeginFragmentShaderATI 787 +#define _gloffset_BindFragmentShaderATI 788 +#define _gloffset_ColorFragmentOp1ATI 789 +#define _gloffset_ColorFragmentOp2ATI 790 +#define _gloffset_ColorFragmentOp3ATI 791 +#define _gloffset_DeleteFragmentShaderATI 792 +#define _gloffset_EndFragmentShaderATI 793 +#define _gloffset_GenFragmentShadersATI 794 +#define _gloffset_PassTexCoordATI 795 +#define _gloffset_SampleMapATI 796 +#define _gloffset_SetFragmentShaderConstantATI 797 +#define _gloffset_PointParameteriNV 798 +#define _gloffset_PointParameterivNV 799 +#define _gloffset_ActiveStencilFaceEXT 800 +#define _gloffset_BindVertexArrayAPPLE 801 +#define _gloffset_DeleteVertexArraysAPPLE 802 +#define _gloffset_GenVertexArraysAPPLE 803 +#define _gloffset_IsVertexArrayAPPLE 804 +#define _gloffset_GetProgramNamedParameterdvNV 805 +#define _gloffset_GetProgramNamedParameterfvNV 806 +#define _gloffset_ProgramNamedParameter4dNV 807 +#define _gloffset_ProgramNamedParameter4dvNV 808 +#define _gloffset_ProgramNamedParameter4fNV 809 +#define _gloffset_ProgramNamedParameter4fvNV 810 +#define _gloffset_PrimitiveRestartIndexNV 811 +#define _gloffset_PrimitiveRestartNV 812 +#define _gloffset_DepthBoundsEXT 813 +#define _gloffset_BlendEquationSeparateEXT 814 +#define _gloffset_BindFramebufferEXT 815 +#define _gloffset_BindRenderbufferEXT 816 +#define _gloffset_CheckFramebufferStatusEXT 817 +#define _gloffset_DeleteFramebuffersEXT 818 +#define _gloffset_DeleteRenderbuffersEXT 819 +#define _gloffset_FramebufferRenderbufferEXT 820 +#define _gloffset_FramebufferTexture1DEXT 821 +#define _gloffset_FramebufferTexture2DEXT 822 +#define _gloffset_FramebufferTexture3DEXT 823 +#define _gloffset_GenFramebuffersEXT 824 +#define _gloffset_GenRenderbuffersEXT 825 +#define _gloffset_GenerateMipmapEXT 826 +#define _gloffset_GetFramebufferAttachmentParameterivEXT 827 +#define _gloffset_GetRenderbufferParameterivEXT 828 +#define _gloffset_IsFramebufferEXT 829 +#define _gloffset_IsRenderbufferEXT 830 +#define _gloffset_RenderbufferStorageEXT 831 +#define _gloffset_BlitFramebufferEXT 832 +#define _gloffset_BufferParameteriAPPLE 833 +#define _gloffset_FlushMappedBufferRangeAPPLE 834 +#define _gloffset_BindFragDataLocationEXT 835 +#define _gloffset_GetFragDataLocationEXT 836 +#define _gloffset_GetUniformuivEXT 837 +#define _gloffset_GetVertexAttribIivEXT 838 +#define _gloffset_GetVertexAttribIuivEXT 839 +#define _gloffset_Uniform1uiEXT 840 +#define _gloffset_Uniform1uivEXT 841 +#define _gloffset_Uniform2uiEXT 842 +#define _gloffset_Uniform2uivEXT 843 +#define _gloffset_Uniform3uiEXT 844 +#define _gloffset_Uniform3uivEXT 845 +#define _gloffset_Uniform4uiEXT 846 +#define _gloffset_Uniform4uivEXT 847 +#define _gloffset_VertexAttribI1iEXT 848 +#define _gloffset_VertexAttribI1ivEXT 849 +#define _gloffset_VertexAttribI1uiEXT 850 +#define _gloffset_VertexAttribI1uivEXT 851 +#define _gloffset_VertexAttribI2iEXT 852 +#define _gloffset_VertexAttribI2ivEXT 853 +#define _gloffset_VertexAttribI2uiEXT 854 +#define _gloffset_VertexAttribI2uivEXT 855 +#define _gloffset_VertexAttribI3iEXT 856 +#define _gloffset_VertexAttribI3ivEXT 857 +#define _gloffset_VertexAttribI3uiEXT 858 +#define _gloffset_VertexAttribI3uivEXT 859 +#define _gloffset_VertexAttribI4bvEXT 860 +#define _gloffset_VertexAttribI4iEXT 861 +#define _gloffset_VertexAttribI4ivEXT 862 +#define _gloffset_VertexAttribI4svEXT 863 +#define _gloffset_VertexAttribI4ubvEXT 864 +#define _gloffset_VertexAttribI4uiEXT 865 +#define _gloffset_VertexAttribI4uivEXT 866 +#define _gloffset_VertexAttribI4usvEXT 867 +#define _gloffset_VertexAttribIPointerEXT 868 +#define _gloffset_FramebufferTextureLayerEXT 869 +#define _gloffset_ColorMaskIndexedEXT 870 +#define _gloffset_DisableIndexedEXT 871 +#define _gloffset_EnableIndexedEXT 872 +#define _gloffset_GetBooleanIndexedvEXT 873 +#define _gloffset_GetIntegerIndexedvEXT 874 +#define _gloffset_IsEnabledIndexedEXT 875 +#define _gloffset_ClearColorIiEXT 876 +#define _gloffset_ClearColorIuiEXT 877 +#define _gloffset_GetTexParameterIivEXT 878 +#define _gloffset_GetTexParameterIuivEXT 879 +#define _gloffset_TexParameterIivEXT 880 +#define _gloffset_TexParameterIuivEXT 881 +#define _gloffset_BeginConditionalRenderNV 882 +#define _gloffset_EndConditionalRenderNV 883 +#define _gloffset_BeginTransformFeedbackEXT 884 +#define _gloffset_BindBufferBaseEXT 885 +#define _gloffset_BindBufferOffsetEXT 886 +#define _gloffset_BindBufferRangeEXT 887 +#define _gloffset_EndTransformFeedbackEXT 888 +#define _gloffset_GetTransformFeedbackVaryingEXT 889 +#define _gloffset_TransformFeedbackVaryingsEXT 890 +#define _gloffset_ProvokingVertexEXT 891 +#define _gloffset_GetTexParameterPointervAPPLE 892 +#define _gloffset_TextureRangeAPPLE 893 +#define _gloffset_GetObjectParameterivAPPLE 894 +#define _gloffset_ObjectPurgeableAPPLE 895 +#define _gloffset_ObjectUnpurgeableAPPLE 896 +#define _gloffset_ActiveProgramEXT 897 +#define _gloffset_CreateShaderProgramEXT 898 +#define _gloffset_UseShaderProgramEXT 899 +#define _gloffset_TextureBarrierNV 900 +#define _gloffset_StencilFuncSeparateATI 901 +#define _gloffset_ProgramEnvParameters4fvEXT 902 +#define _gloffset_ProgramLocalParameters4fvEXT 903 +#define _gloffset_GetQueryObjecti64vEXT 904 +#define _gloffset_GetQueryObjectui64vEXT 905 +#define _gloffset_EGLImageTargetRenderbufferStorageOES 906 +#define _gloffset_EGLImageTargetTexture2DOES 907 #else /* !_GLAPI_USE_REMAP_TABLE */ -#define driDispatchRemapTable_size 484 +#define driDispatchRemapTable_size 500 extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define AttachShader_remap_index 0 @@ -1126,326 +1142,342 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define GetActiveAttribARB_remap_index 161 #define GetAttribLocationARB_remap_index 162 #define DrawBuffersARB_remap_index 163 -#define DrawArraysInstancedARB_remap_index 164 -#define DrawElementsInstancedARB_remap_index 165 -#define RenderbufferStorageMultisample_remap_index 166 -#define FramebufferTextureARB_remap_index 167 -#define FramebufferTextureFaceARB_remap_index 168 -#define ProgramParameteriARB_remap_index 169 -#define VertexAttribDivisorARB_remap_index 170 -#define FlushMappedBufferRange_remap_index 171 -#define MapBufferRange_remap_index 172 -#define BindVertexArray_remap_index 173 -#define GenVertexArrays_remap_index 174 -#define CopyBufferSubData_remap_index 175 -#define ClientWaitSync_remap_index 176 -#define DeleteSync_remap_index 177 -#define FenceSync_remap_index 178 -#define GetInteger64v_remap_index 179 -#define GetSynciv_remap_index 180 -#define IsSync_remap_index 181 -#define WaitSync_remap_index 182 -#define DrawElementsBaseVertex_remap_index 183 -#define DrawRangeElementsBaseVertex_remap_index 184 -#define MultiDrawElementsBaseVertex_remap_index 185 -#define BlendEquationSeparateiARB_remap_index 186 -#define BlendEquationiARB_remap_index 187 -#define BlendFuncSeparateiARB_remap_index 188 -#define BlendFunciARB_remap_index 189 -#define BindTransformFeedback_remap_index 190 -#define DeleteTransformFeedbacks_remap_index 191 -#define DrawTransformFeedback_remap_index 192 -#define GenTransformFeedbacks_remap_index 193 -#define IsTransformFeedback_remap_index 194 -#define PauseTransformFeedback_remap_index 195 -#define ResumeTransformFeedback_remap_index 196 -#define ClearDepthf_remap_index 197 -#define DepthRangef_remap_index 198 -#define GetShaderPrecisionFormat_remap_index 199 -#define ReleaseShaderCompiler_remap_index 200 -#define ShaderBinary_remap_index 201 -#define PolygonOffsetEXT_remap_index 202 -#define GetPixelTexGenParameterfvSGIS_remap_index 203 -#define GetPixelTexGenParameterivSGIS_remap_index 204 -#define PixelTexGenParameterfSGIS_remap_index 205 -#define PixelTexGenParameterfvSGIS_remap_index 206 -#define PixelTexGenParameteriSGIS_remap_index 207 -#define PixelTexGenParameterivSGIS_remap_index 208 -#define SampleMaskSGIS_remap_index 209 -#define SamplePatternSGIS_remap_index 210 -#define ColorPointerEXT_remap_index 211 -#define EdgeFlagPointerEXT_remap_index 212 -#define IndexPointerEXT_remap_index 213 -#define NormalPointerEXT_remap_index 214 -#define TexCoordPointerEXT_remap_index 215 -#define VertexPointerEXT_remap_index 216 -#define PointParameterfEXT_remap_index 217 -#define PointParameterfvEXT_remap_index 218 -#define LockArraysEXT_remap_index 219 -#define UnlockArraysEXT_remap_index 220 -#define SecondaryColor3bEXT_remap_index 221 -#define SecondaryColor3bvEXT_remap_index 222 -#define SecondaryColor3dEXT_remap_index 223 -#define SecondaryColor3dvEXT_remap_index 224 -#define SecondaryColor3fEXT_remap_index 225 -#define SecondaryColor3fvEXT_remap_index 226 -#define SecondaryColor3iEXT_remap_index 227 -#define SecondaryColor3ivEXT_remap_index 228 -#define SecondaryColor3sEXT_remap_index 229 -#define SecondaryColor3svEXT_remap_index 230 -#define SecondaryColor3ubEXT_remap_index 231 -#define SecondaryColor3ubvEXT_remap_index 232 -#define SecondaryColor3uiEXT_remap_index 233 -#define SecondaryColor3uivEXT_remap_index 234 -#define SecondaryColor3usEXT_remap_index 235 -#define SecondaryColor3usvEXT_remap_index 236 -#define SecondaryColorPointerEXT_remap_index 237 -#define MultiDrawArraysEXT_remap_index 238 -#define MultiDrawElementsEXT_remap_index 239 -#define FogCoordPointerEXT_remap_index 240 -#define FogCoorddEXT_remap_index 241 -#define FogCoorddvEXT_remap_index 242 -#define FogCoordfEXT_remap_index 243 -#define FogCoordfvEXT_remap_index 244 -#define PixelTexGenSGIX_remap_index 245 -#define BlendFuncSeparateEXT_remap_index 246 -#define FlushVertexArrayRangeNV_remap_index 247 -#define VertexArrayRangeNV_remap_index 248 -#define CombinerInputNV_remap_index 249 -#define CombinerOutputNV_remap_index 250 -#define CombinerParameterfNV_remap_index 251 -#define CombinerParameterfvNV_remap_index 252 -#define CombinerParameteriNV_remap_index 253 -#define CombinerParameterivNV_remap_index 254 -#define FinalCombinerInputNV_remap_index 255 -#define GetCombinerInputParameterfvNV_remap_index 256 -#define GetCombinerInputParameterivNV_remap_index 257 -#define GetCombinerOutputParameterfvNV_remap_index 258 -#define GetCombinerOutputParameterivNV_remap_index 259 -#define GetFinalCombinerInputParameterfvNV_remap_index 260 -#define GetFinalCombinerInputParameterivNV_remap_index 261 -#define ResizeBuffersMESA_remap_index 262 -#define WindowPos2dMESA_remap_index 263 -#define WindowPos2dvMESA_remap_index 264 -#define WindowPos2fMESA_remap_index 265 -#define WindowPos2fvMESA_remap_index 266 -#define WindowPos2iMESA_remap_index 267 -#define WindowPos2ivMESA_remap_index 268 -#define WindowPos2sMESA_remap_index 269 -#define WindowPos2svMESA_remap_index 270 -#define WindowPos3dMESA_remap_index 271 -#define WindowPos3dvMESA_remap_index 272 -#define WindowPos3fMESA_remap_index 273 -#define WindowPos3fvMESA_remap_index 274 -#define WindowPos3iMESA_remap_index 275 -#define WindowPos3ivMESA_remap_index 276 -#define WindowPos3sMESA_remap_index 277 -#define WindowPos3svMESA_remap_index 278 -#define WindowPos4dMESA_remap_index 279 -#define WindowPos4dvMESA_remap_index 280 -#define WindowPos4fMESA_remap_index 281 -#define WindowPos4fvMESA_remap_index 282 -#define WindowPos4iMESA_remap_index 283 -#define WindowPos4ivMESA_remap_index 284 -#define WindowPos4sMESA_remap_index 285 -#define WindowPos4svMESA_remap_index 286 -#define MultiModeDrawArraysIBM_remap_index 287 -#define MultiModeDrawElementsIBM_remap_index 288 -#define DeleteFencesNV_remap_index 289 -#define FinishFenceNV_remap_index 290 -#define GenFencesNV_remap_index 291 -#define GetFenceivNV_remap_index 292 -#define IsFenceNV_remap_index 293 -#define SetFenceNV_remap_index 294 -#define TestFenceNV_remap_index 295 -#define AreProgramsResidentNV_remap_index 296 -#define BindProgramNV_remap_index 297 -#define DeleteProgramsNV_remap_index 298 -#define ExecuteProgramNV_remap_index 299 -#define GenProgramsNV_remap_index 300 -#define GetProgramParameterdvNV_remap_index 301 -#define GetProgramParameterfvNV_remap_index 302 -#define GetProgramStringNV_remap_index 303 -#define GetProgramivNV_remap_index 304 -#define GetTrackMatrixivNV_remap_index 305 -#define GetVertexAttribPointervNV_remap_index 306 -#define GetVertexAttribdvNV_remap_index 307 -#define GetVertexAttribfvNV_remap_index 308 -#define GetVertexAttribivNV_remap_index 309 -#define IsProgramNV_remap_index 310 -#define LoadProgramNV_remap_index 311 -#define ProgramParameters4dvNV_remap_index 312 -#define ProgramParameters4fvNV_remap_index 313 -#define RequestResidentProgramsNV_remap_index 314 -#define TrackMatrixNV_remap_index 315 -#define VertexAttrib1dNV_remap_index 316 -#define VertexAttrib1dvNV_remap_index 317 -#define VertexAttrib1fNV_remap_index 318 -#define VertexAttrib1fvNV_remap_index 319 -#define VertexAttrib1sNV_remap_index 320 -#define VertexAttrib1svNV_remap_index 321 -#define VertexAttrib2dNV_remap_index 322 -#define VertexAttrib2dvNV_remap_index 323 -#define VertexAttrib2fNV_remap_index 324 -#define VertexAttrib2fvNV_remap_index 325 -#define VertexAttrib2sNV_remap_index 326 -#define VertexAttrib2svNV_remap_index 327 -#define VertexAttrib3dNV_remap_index 328 -#define VertexAttrib3dvNV_remap_index 329 -#define VertexAttrib3fNV_remap_index 330 -#define VertexAttrib3fvNV_remap_index 331 -#define VertexAttrib3sNV_remap_index 332 -#define VertexAttrib3svNV_remap_index 333 -#define VertexAttrib4dNV_remap_index 334 -#define VertexAttrib4dvNV_remap_index 335 -#define VertexAttrib4fNV_remap_index 336 -#define VertexAttrib4fvNV_remap_index 337 -#define VertexAttrib4sNV_remap_index 338 -#define VertexAttrib4svNV_remap_index 339 -#define VertexAttrib4ubNV_remap_index 340 -#define VertexAttrib4ubvNV_remap_index 341 -#define VertexAttribPointerNV_remap_index 342 -#define VertexAttribs1dvNV_remap_index 343 -#define VertexAttribs1fvNV_remap_index 344 -#define VertexAttribs1svNV_remap_index 345 -#define VertexAttribs2dvNV_remap_index 346 -#define VertexAttribs2fvNV_remap_index 347 -#define VertexAttribs2svNV_remap_index 348 -#define VertexAttribs3dvNV_remap_index 349 -#define VertexAttribs3fvNV_remap_index 350 -#define VertexAttribs3svNV_remap_index 351 -#define VertexAttribs4dvNV_remap_index 352 -#define VertexAttribs4fvNV_remap_index 353 -#define VertexAttribs4svNV_remap_index 354 -#define VertexAttribs4ubvNV_remap_index 355 -#define GetTexBumpParameterfvATI_remap_index 356 -#define GetTexBumpParameterivATI_remap_index 357 -#define TexBumpParameterfvATI_remap_index 358 -#define TexBumpParameterivATI_remap_index 359 -#define AlphaFragmentOp1ATI_remap_index 360 -#define AlphaFragmentOp2ATI_remap_index 361 -#define AlphaFragmentOp3ATI_remap_index 362 -#define BeginFragmentShaderATI_remap_index 363 -#define BindFragmentShaderATI_remap_index 364 -#define ColorFragmentOp1ATI_remap_index 365 -#define ColorFragmentOp2ATI_remap_index 366 -#define ColorFragmentOp3ATI_remap_index 367 -#define DeleteFragmentShaderATI_remap_index 368 -#define EndFragmentShaderATI_remap_index 369 -#define GenFragmentShadersATI_remap_index 370 -#define PassTexCoordATI_remap_index 371 -#define SampleMapATI_remap_index 372 -#define SetFragmentShaderConstantATI_remap_index 373 -#define PointParameteriNV_remap_index 374 -#define PointParameterivNV_remap_index 375 -#define ActiveStencilFaceEXT_remap_index 376 -#define BindVertexArrayAPPLE_remap_index 377 -#define DeleteVertexArraysAPPLE_remap_index 378 -#define GenVertexArraysAPPLE_remap_index 379 -#define IsVertexArrayAPPLE_remap_index 380 -#define GetProgramNamedParameterdvNV_remap_index 381 -#define GetProgramNamedParameterfvNV_remap_index 382 -#define ProgramNamedParameter4dNV_remap_index 383 -#define ProgramNamedParameter4dvNV_remap_index 384 -#define ProgramNamedParameter4fNV_remap_index 385 -#define ProgramNamedParameter4fvNV_remap_index 386 -#define PrimitiveRestartIndexNV_remap_index 387 -#define PrimitiveRestartNV_remap_index 388 -#define DepthBoundsEXT_remap_index 389 -#define BlendEquationSeparateEXT_remap_index 390 -#define BindFramebufferEXT_remap_index 391 -#define BindRenderbufferEXT_remap_index 392 -#define CheckFramebufferStatusEXT_remap_index 393 -#define DeleteFramebuffersEXT_remap_index 394 -#define DeleteRenderbuffersEXT_remap_index 395 -#define FramebufferRenderbufferEXT_remap_index 396 -#define FramebufferTexture1DEXT_remap_index 397 -#define FramebufferTexture2DEXT_remap_index 398 -#define FramebufferTexture3DEXT_remap_index 399 -#define GenFramebuffersEXT_remap_index 400 -#define GenRenderbuffersEXT_remap_index 401 -#define GenerateMipmapEXT_remap_index 402 -#define GetFramebufferAttachmentParameterivEXT_remap_index 403 -#define GetRenderbufferParameterivEXT_remap_index 404 -#define IsFramebufferEXT_remap_index 405 -#define IsRenderbufferEXT_remap_index 406 -#define RenderbufferStorageEXT_remap_index 407 -#define BlitFramebufferEXT_remap_index 408 -#define BufferParameteriAPPLE_remap_index 409 -#define FlushMappedBufferRangeAPPLE_remap_index 410 -#define BindFragDataLocationEXT_remap_index 411 -#define GetFragDataLocationEXT_remap_index 412 -#define GetUniformuivEXT_remap_index 413 -#define GetVertexAttribIivEXT_remap_index 414 -#define GetVertexAttribIuivEXT_remap_index 415 -#define Uniform1uiEXT_remap_index 416 -#define Uniform1uivEXT_remap_index 417 -#define Uniform2uiEXT_remap_index 418 -#define Uniform2uivEXT_remap_index 419 -#define Uniform3uiEXT_remap_index 420 -#define Uniform3uivEXT_remap_index 421 -#define Uniform4uiEXT_remap_index 422 -#define Uniform4uivEXT_remap_index 423 -#define VertexAttribI1iEXT_remap_index 424 -#define VertexAttribI1ivEXT_remap_index 425 -#define VertexAttribI1uiEXT_remap_index 426 -#define VertexAttribI1uivEXT_remap_index 427 -#define VertexAttribI2iEXT_remap_index 428 -#define VertexAttribI2ivEXT_remap_index 429 -#define VertexAttribI2uiEXT_remap_index 430 -#define VertexAttribI2uivEXT_remap_index 431 -#define VertexAttribI3iEXT_remap_index 432 -#define VertexAttribI3ivEXT_remap_index 433 -#define VertexAttribI3uiEXT_remap_index 434 -#define VertexAttribI3uivEXT_remap_index 435 -#define VertexAttribI4bvEXT_remap_index 436 -#define VertexAttribI4iEXT_remap_index 437 -#define VertexAttribI4ivEXT_remap_index 438 -#define VertexAttribI4svEXT_remap_index 439 -#define VertexAttribI4ubvEXT_remap_index 440 -#define VertexAttribI4uiEXT_remap_index 441 -#define VertexAttribI4uivEXT_remap_index 442 -#define VertexAttribI4usvEXT_remap_index 443 -#define VertexAttribIPointerEXT_remap_index 444 -#define FramebufferTextureLayerEXT_remap_index 445 -#define ColorMaskIndexedEXT_remap_index 446 -#define DisableIndexedEXT_remap_index 447 -#define EnableIndexedEXT_remap_index 448 -#define GetBooleanIndexedvEXT_remap_index 449 -#define GetIntegerIndexedvEXT_remap_index 450 -#define IsEnabledIndexedEXT_remap_index 451 -#define ClearColorIiEXT_remap_index 452 -#define ClearColorIuiEXT_remap_index 453 -#define GetTexParameterIivEXT_remap_index 454 -#define GetTexParameterIuivEXT_remap_index 455 -#define TexParameterIivEXT_remap_index 456 -#define TexParameterIuivEXT_remap_index 457 -#define BeginConditionalRenderNV_remap_index 458 -#define EndConditionalRenderNV_remap_index 459 -#define BeginTransformFeedbackEXT_remap_index 460 -#define BindBufferBaseEXT_remap_index 461 -#define BindBufferOffsetEXT_remap_index 462 -#define BindBufferRangeEXT_remap_index 463 -#define EndTransformFeedbackEXT_remap_index 464 -#define GetTransformFeedbackVaryingEXT_remap_index 465 -#define TransformFeedbackVaryingsEXT_remap_index 466 -#define ProvokingVertexEXT_remap_index 467 -#define GetTexParameterPointervAPPLE_remap_index 468 -#define TextureRangeAPPLE_remap_index 469 -#define GetObjectParameterivAPPLE_remap_index 470 -#define ObjectPurgeableAPPLE_remap_index 471 -#define ObjectUnpurgeableAPPLE_remap_index 472 -#define ActiveProgramEXT_remap_index 473 -#define CreateShaderProgramEXT_remap_index 474 -#define UseShaderProgramEXT_remap_index 475 -#define TextureBarrierNV_remap_index 476 -#define StencilFuncSeparateATI_remap_index 477 -#define ProgramEnvParameters4fvEXT_remap_index 478 -#define ProgramLocalParameters4fvEXT_remap_index 479 -#define GetQueryObjecti64vEXT_remap_index 480 -#define GetQueryObjectui64vEXT_remap_index 481 -#define EGLImageTargetRenderbufferStorageOES_remap_index 482 -#define EGLImageTargetTexture2DOES_remap_index 483 +#define ClampColorARB_remap_index 164 +#define DrawArraysInstancedARB_remap_index 165 +#define DrawElementsInstancedARB_remap_index 166 +#define RenderbufferStorageMultisample_remap_index 167 +#define FramebufferTextureARB_remap_index 168 +#define FramebufferTextureFaceARB_remap_index 169 +#define ProgramParameteriARB_remap_index 170 +#define VertexAttribDivisorARB_remap_index 171 +#define FlushMappedBufferRange_remap_index 172 +#define MapBufferRange_remap_index 173 +#define TexBufferARB_remap_index 174 +#define BindVertexArray_remap_index 175 +#define GenVertexArrays_remap_index 176 +#define CopyBufferSubData_remap_index 177 +#define ClientWaitSync_remap_index 178 +#define DeleteSync_remap_index 179 +#define FenceSync_remap_index 180 +#define GetInteger64v_remap_index 181 +#define GetSynciv_remap_index 182 +#define IsSync_remap_index 183 +#define WaitSync_remap_index 184 +#define DrawElementsBaseVertex_remap_index 185 +#define DrawRangeElementsBaseVertex_remap_index 186 +#define MultiDrawElementsBaseVertex_remap_index 187 +#define BlendEquationSeparateiARB_remap_index 188 +#define BlendEquationiARB_remap_index 189 +#define BlendFuncSeparateiARB_remap_index 190 +#define BlendFunciARB_remap_index 191 +#define BindSampler_remap_index 192 +#define DeleteSamplers_remap_index 193 +#define GenSamplers_remap_index 194 +#define GetSamplerParameterIiv_remap_index 195 +#define GetSamplerParameterIuiv_remap_index 196 +#define GetSamplerParameterfv_remap_index 197 +#define GetSamplerParameteriv_remap_index 198 +#define IsSampler_remap_index 199 +#define SamplerParameterIiv_remap_index 200 +#define SamplerParameterIuiv_remap_index 201 +#define SamplerParameterf_remap_index 202 +#define SamplerParameterfv_remap_index 203 +#define SamplerParameteri_remap_index 204 +#define SamplerParameteriv_remap_index 205 +#define BindTransformFeedback_remap_index 206 +#define DeleteTransformFeedbacks_remap_index 207 +#define DrawTransformFeedback_remap_index 208 +#define GenTransformFeedbacks_remap_index 209 +#define IsTransformFeedback_remap_index 210 +#define PauseTransformFeedback_remap_index 211 +#define ResumeTransformFeedback_remap_index 212 +#define ClearDepthf_remap_index 213 +#define DepthRangef_remap_index 214 +#define GetShaderPrecisionFormat_remap_index 215 +#define ReleaseShaderCompiler_remap_index 216 +#define ShaderBinary_remap_index 217 +#define PolygonOffsetEXT_remap_index 218 +#define GetPixelTexGenParameterfvSGIS_remap_index 219 +#define GetPixelTexGenParameterivSGIS_remap_index 220 +#define PixelTexGenParameterfSGIS_remap_index 221 +#define PixelTexGenParameterfvSGIS_remap_index 222 +#define PixelTexGenParameteriSGIS_remap_index 223 +#define PixelTexGenParameterivSGIS_remap_index 224 +#define SampleMaskSGIS_remap_index 225 +#define SamplePatternSGIS_remap_index 226 +#define ColorPointerEXT_remap_index 227 +#define EdgeFlagPointerEXT_remap_index 228 +#define IndexPointerEXT_remap_index 229 +#define NormalPointerEXT_remap_index 230 +#define TexCoordPointerEXT_remap_index 231 +#define VertexPointerEXT_remap_index 232 +#define PointParameterfEXT_remap_index 233 +#define PointParameterfvEXT_remap_index 234 +#define LockArraysEXT_remap_index 235 +#define UnlockArraysEXT_remap_index 236 +#define SecondaryColor3bEXT_remap_index 237 +#define SecondaryColor3bvEXT_remap_index 238 +#define SecondaryColor3dEXT_remap_index 239 +#define SecondaryColor3dvEXT_remap_index 240 +#define SecondaryColor3fEXT_remap_index 241 +#define SecondaryColor3fvEXT_remap_index 242 +#define SecondaryColor3iEXT_remap_index 243 +#define SecondaryColor3ivEXT_remap_index 244 +#define SecondaryColor3sEXT_remap_index 245 +#define SecondaryColor3svEXT_remap_index 246 +#define SecondaryColor3ubEXT_remap_index 247 +#define SecondaryColor3ubvEXT_remap_index 248 +#define SecondaryColor3uiEXT_remap_index 249 +#define SecondaryColor3uivEXT_remap_index 250 +#define SecondaryColor3usEXT_remap_index 251 +#define SecondaryColor3usvEXT_remap_index 252 +#define SecondaryColorPointerEXT_remap_index 253 +#define MultiDrawArraysEXT_remap_index 254 +#define MultiDrawElementsEXT_remap_index 255 +#define FogCoordPointerEXT_remap_index 256 +#define FogCoorddEXT_remap_index 257 +#define FogCoorddvEXT_remap_index 258 +#define FogCoordfEXT_remap_index 259 +#define FogCoordfvEXT_remap_index 260 +#define PixelTexGenSGIX_remap_index 261 +#define BlendFuncSeparateEXT_remap_index 262 +#define FlushVertexArrayRangeNV_remap_index 263 +#define VertexArrayRangeNV_remap_index 264 +#define CombinerInputNV_remap_index 265 +#define CombinerOutputNV_remap_index 266 +#define CombinerParameterfNV_remap_index 267 +#define CombinerParameterfvNV_remap_index 268 +#define CombinerParameteriNV_remap_index 269 +#define CombinerParameterivNV_remap_index 270 +#define FinalCombinerInputNV_remap_index 271 +#define GetCombinerInputParameterfvNV_remap_index 272 +#define GetCombinerInputParameterivNV_remap_index 273 +#define GetCombinerOutputParameterfvNV_remap_index 274 +#define GetCombinerOutputParameterivNV_remap_index 275 +#define GetFinalCombinerInputParameterfvNV_remap_index 276 +#define GetFinalCombinerInputParameterivNV_remap_index 277 +#define ResizeBuffersMESA_remap_index 278 +#define WindowPos2dMESA_remap_index 279 +#define WindowPos2dvMESA_remap_index 280 +#define WindowPos2fMESA_remap_index 281 +#define WindowPos2fvMESA_remap_index 282 +#define WindowPos2iMESA_remap_index 283 +#define WindowPos2ivMESA_remap_index 284 +#define WindowPos2sMESA_remap_index 285 +#define WindowPos2svMESA_remap_index 286 +#define WindowPos3dMESA_remap_index 287 +#define WindowPos3dvMESA_remap_index 288 +#define WindowPos3fMESA_remap_index 289 +#define WindowPos3fvMESA_remap_index 290 +#define WindowPos3iMESA_remap_index 291 +#define WindowPos3ivMESA_remap_index 292 +#define WindowPos3sMESA_remap_index 293 +#define WindowPos3svMESA_remap_index 294 +#define WindowPos4dMESA_remap_index 295 +#define WindowPos4dvMESA_remap_index 296 +#define WindowPos4fMESA_remap_index 297 +#define WindowPos4fvMESA_remap_index 298 +#define WindowPos4iMESA_remap_index 299 +#define WindowPos4ivMESA_remap_index 300 +#define WindowPos4sMESA_remap_index 301 +#define WindowPos4svMESA_remap_index 302 +#define MultiModeDrawArraysIBM_remap_index 303 +#define MultiModeDrawElementsIBM_remap_index 304 +#define DeleteFencesNV_remap_index 305 +#define FinishFenceNV_remap_index 306 +#define GenFencesNV_remap_index 307 +#define GetFenceivNV_remap_index 308 +#define IsFenceNV_remap_index 309 +#define SetFenceNV_remap_index 310 +#define TestFenceNV_remap_index 311 +#define AreProgramsResidentNV_remap_index 312 +#define BindProgramNV_remap_index 313 +#define DeleteProgramsNV_remap_index 314 +#define ExecuteProgramNV_remap_index 315 +#define GenProgramsNV_remap_index 316 +#define GetProgramParameterdvNV_remap_index 317 +#define GetProgramParameterfvNV_remap_index 318 +#define GetProgramStringNV_remap_index 319 +#define GetProgramivNV_remap_index 320 +#define GetTrackMatrixivNV_remap_index 321 +#define GetVertexAttribPointervNV_remap_index 322 +#define GetVertexAttribdvNV_remap_index 323 +#define GetVertexAttribfvNV_remap_index 324 +#define GetVertexAttribivNV_remap_index 325 +#define IsProgramNV_remap_index 326 +#define LoadProgramNV_remap_index 327 +#define ProgramParameters4dvNV_remap_index 328 +#define ProgramParameters4fvNV_remap_index 329 +#define RequestResidentProgramsNV_remap_index 330 +#define TrackMatrixNV_remap_index 331 +#define VertexAttrib1dNV_remap_index 332 +#define VertexAttrib1dvNV_remap_index 333 +#define VertexAttrib1fNV_remap_index 334 +#define VertexAttrib1fvNV_remap_index 335 +#define VertexAttrib1sNV_remap_index 336 +#define VertexAttrib1svNV_remap_index 337 +#define VertexAttrib2dNV_remap_index 338 +#define VertexAttrib2dvNV_remap_index 339 +#define VertexAttrib2fNV_remap_index 340 +#define VertexAttrib2fvNV_remap_index 341 +#define VertexAttrib2sNV_remap_index 342 +#define VertexAttrib2svNV_remap_index 343 +#define VertexAttrib3dNV_remap_index 344 +#define VertexAttrib3dvNV_remap_index 345 +#define VertexAttrib3fNV_remap_index 346 +#define VertexAttrib3fvNV_remap_index 347 +#define VertexAttrib3sNV_remap_index 348 +#define VertexAttrib3svNV_remap_index 349 +#define VertexAttrib4dNV_remap_index 350 +#define VertexAttrib4dvNV_remap_index 351 +#define VertexAttrib4fNV_remap_index 352 +#define VertexAttrib4fvNV_remap_index 353 +#define VertexAttrib4sNV_remap_index 354 +#define VertexAttrib4svNV_remap_index 355 +#define VertexAttrib4ubNV_remap_index 356 +#define VertexAttrib4ubvNV_remap_index 357 +#define VertexAttribPointerNV_remap_index 358 +#define VertexAttribs1dvNV_remap_index 359 +#define VertexAttribs1fvNV_remap_index 360 +#define VertexAttribs1svNV_remap_index 361 +#define VertexAttribs2dvNV_remap_index 362 +#define VertexAttribs2fvNV_remap_index 363 +#define VertexAttribs2svNV_remap_index 364 +#define VertexAttribs3dvNV_remap_index 365 +#define VertexAttribs3fvNV_remap_index 366 +#define VertexAttribs3svNV_remap_index 367 +#define VertexAttribs4dvNV_remap_index 368 +#define VertexAttribs4fvNV_remap_index 369 +#define VertexAttribs4svNV_remap_index 370 +#define VertexAttribs4ubvNV_remap_index 371 +#define GetTexBumpParameterfvATI_remap_index 372 +#define GetTexBumpParameterivATI_remap_index 373 +#define TexBumpParameterfvATI_remap_index 374 +#define TexBumpParameterivATI_remap_index 375 +#define AlphaFragmentOp1ATI_remap_index 376 +#define AlphaFragmentOp2ATI_remap_index 377 +#define AlphaFragmentOp3ATI_remap_index 378 +#define BeginFragmentShaderATI_remap_index 379 +#define BindFragmentShaderATI_remap_index 380 +#define ColorFragmentOp1ATI_remap_index 381 +#define ColorFragmentOp2ATI_remap_index 382 +#define ColorFragmentOp3ATI_remap_index 383 +#define DeleteFragmentShaderATI_remap_index 384 +#define EndFragmentShaderATI_remap_index 385 +#define GenFragmentShadersATI_remap_index 386 +#define PassTexCoordATI_remap_index 387 +#define SampleMapATI_remap_index 388 +#define SetFragmentShaderConstantATI_remap_index 389 +#define PointParameteriNV_remap_index 390 +#define PointParameterivNV_remap_index 391 +#define ActiveStencilFaceEXT_remap_index 392 +#define BindVertexArrayAPPLE_remap_index 393 +#define DeleteVertexArraysAPPLE_remap_index 394 +#define GenVertexArraysAPPLE_remap_index 395 +#define IsVertexArrayAPPLE_remap_index 396 +#define GetProgramNamedParameterdvNV_remap_index 397 +#define GetProgramNamedParameterfvNV_remap_index 398 +#define ProgramNamedParameter4dNV_remap_index 399 +#define ProgramNamedParameter4dvNV_remap_index 400 +#define ProgramNamedParameter4fNV_remap_index 401 +#define ProgramNamedParameter4fvNV_remap_index 402 +#define PrimitiveRestartIndexNV_remap_index 403 +#define PrimitiveRestartNV_remap_index 404 +#define DepthBoundsEXT_remap_index 405 +#define BlendEquationSeparateEXT_remap_index 406 +#define BindFramebufferEXT_remap_index 407 +#define BindRenderbufferEXT_remap_index 408 +#define CheckFramebufferStatusEXT_remap_index 409 +#define DeleteFramebuffersEXT_remap_index 410 +#define DeleteRenderbuffersEXT_remap_index 411 +#define FramebufferRenderbufferEXT_remap_index 412 +#define FramebufferTexture1DEXT_remap_index 413 +#define FramebufferTexture2DEXT_remap_index 414 +#define FramebufferTexture3DEXT_remap_index 415 +#define GenFramebuffersEXT_remap_index 416 +#define GenRenderbuffersEXT_remap_index 417 +#define GenerateMipmapEXT_remap_index 418 +#define GetFramebufferAttachmentParameterivEXT_remap_index 419 +#define GetRenderbufferParameterivEXT_remap_index 420 +#define IsFramebufferEXT_remap_index 421 +#define IsRenderbufferEXT_remap_index 422 +#define RenderbufferStorageEXT_remap_index 423 +#define BlitFramebufferEXT_remap_index 424 +#define BufferParameteriAPPLE_remap_index 425 +#define FlushMappedBufferRangeAPPLE_remap_index 426 +#define BindFragDataLocationEXT_remap_index 427 +#define GetFragDataLocationEXT_remap_index 428 +#define GetUniformuivEXT_remap_index 429 +#define GetVertexAttribIivEXT_remap_index 430 +#define GetVertexAttribIuivEXT_remap_index 431 +#define Uniform1uiEXT_remap_index 432 +#define Uniform1uivEXT_remap_index 433 +#define Uniform2uiEXT_remap_index 434 +#define Uniform2uivEXT_remap_index 435 +#define Uniform3uiEXT_remap_index 436 +#define Uniform3uivEXT_remap_index 437 +#define Uniform4uiEXT_remap_index 438 +#define Uniform4uivEXT_remap_index 439 +#define VertexAttribI1iEXT_remap_index 440 +#define VertexAttribI1ivEXT_remap_index 441 +#define VertexAttribI1uiEXT_remap_index 442 +#define VertexAttribI1uivEXT_remap_index 443 +#define VertexAttribI2iEXT_remap_index 444 +#define VertexAttribI2ivEXT_remap_index 445 +#define VertexAttribI2uiEXT_remap_index 446 +#define VertexAttribI2uivEXT_remap_index 447 +#define VertexAttribI3iEXT_remap_index 448 +#define VertexAttribI3ivEXT_remap_index 449 +#define VertexAttribI3uiEXT_remap_index 450 +#define VertexAttribI3uivEXT_remap_index 451 +#define VertexAttribI4bvEXT_remap_index 452 +#define VertexAttribI4iEXT_remap_index 453 +#define VertexAttribI4ivEXT_remap_index 454 +#define VertexAttribI4svEXT_remap_index 455 +#define VertexAttribI4ubvEXT_remap_index 456 +#define VertexAttribI4uiEXT_remap_index 457 +#define VertexAttribI4uivEXT_remap_index 458 +#define VertexAttribI4usvEXT_remap_index 459 +#define VertexAttribIPointerEXT_remap_index 460 +#define FramebufferTextureLayerEXT_remap_index 461 +#define ColorMaskIndexedEXT_remap_index 462 +#define DisableIndexedEXT_remap_index 463 +#define EnableIndexedEXT_remap_index 464 +#define GetBooleanIndexedvEXT_remap_index 465 +#define GetIntegerIndexedvEXT_remap_index 466 +#define IsEnabledIndexedEXT_remap_index 467 +#define ClearColorIiEXT_remap_index 468 +#define ClearColorIuiEXT_remap_index 469 +#define GetTexParameterIivEXT_remap_index 470 +#define GetTexParameterIuivEXT_remap_index 471 +#define TexParameterIivEXT_remap_index 472 +#define TexParameterIuivEXT_remap_index 473 +#define BeginConditionalRenderNV_remap_index 474 +#define EndConditionalRenderNV_remap_index 475 +#define BeginTransformFeedbackEXT_remap_index 476 +#define BindBufferBaseEXT_remap_index 477 +#define BindBufferOffsetEXT_remap_index 478 +#define BindBufferRangeEXT_remap_index 479 +#define EndTransformFeedbackEXT_remap_index 480 +#define GetTransformFeedbackVaryingEXT_remap_index 481 +#define TransformFeedbackVaryingsEXT_remap_index 482 +#define ProvokingVertexEXT_remap_index 483 +#define GetTexParameterPointervAPPLE_remap_index 484 +#define TextureRangeAPPLE_remap_index 485 +#define GetObjectParameterivAPPLE_remap_index 486 +#define ObjectPurgeableAPPLE_remap_index 487 +#define ObjectUnpurgeableAPPLE_remap_index 488 +#define ActiveProgramEXT_remap_index 489 +#define CreateShaderProgramEXT_remap_index 490 +#define UseShaderProgramEXT_remap_index 491 +#define TextureBarrierNV_remap_index 492 +#define StencilFuncSeparateATI_remap_index 493 +#define ProgramEnvParameters4fvEXT_remap_index 494 +#define ProgramLocalParameters4fvEXT_remap_index 495 +#define GetQueryObjecti64vEXT_remap_index 496 +#define GetQueryObjectui64vEXT_remap_index 497 +#define EGLImageTargetRenderbufferStorageOES_remap_index 498 +#define EGLImageTargetTexture2DOES_remap_index 499 #define _gloffset_AttachShader driDispatchRemapTable[AttachShader_remap_index] #define _gloffset_CreateProgram driDispatchRemapTable[CreateProgram_remap_index] @@ -1611,6 +1643,7 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define _gloffset_GetActiveAttribARB driDispatchRemapTable[GetActiveAttribARB_remap_index] #define _gloffset_GetAttribLocationARB driDispatchRemapTable[GetAttribLocationARB_remap_index] #define _gloffset_DrawBuffersARB driDispatchRemapTable[DrawBuffersARB_remap_index] +#define _gloffset_ClampColorARB driDispatchRemapTable[ClampColorARB_remap_index] #define _gloffset_DrawArraysInstancedARB driDispatchRemapTable[DrawArraysInstancedARB_remap_index] #define _gloffset_DrawElementsInstancedARB driDispatchRemapTable[DrawElementsInstancedARB_remap_index] #define _gloffset_RenderbufferStorageMultisample driDispatchRemapTable[RenderbufferStorageMultisample_remap_index] @@ -1620,6 +1653,7 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define _gloffset_VertexAttribDivisorARB driDispatchRemapTable[VertexAttribDivisorARB_remap_index] #define _gloffset_FlushMappedBufferRange driDispatchRemapTable[FlushMappedBufferRange_remap_index] #define _gloffset_MapBufferRange driDispatchRemapTable[MapBufferRange_remap_index] +#define _gloffset_TexBufferARB driDispatchRemapTable[TexBufferARB_remap_index] #define _gloffset_BindVertexArray driDispatchRemapTable[BindVertexArray_remap_index] #define _gloffset_GenVertexArrays driDispatchRemapTable[GenVertexArrays_remap_index] #define _gloffset_CopyBufferSubData driDispatchRemapTable[CopyBufferSubData_remap_index] @@ -1637,6 +1671,20 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define _gloffset_BlendEquationiARB driDispatchRemapTable[BlendEquationiARB_remap_index] #define _gloffset_BlendFuncSeparateiARB driDispatchRemapTable[BlendFuncSeparateiARB_remap_index] #define _gloffset_BlendFunciARB driDispatchRemapTable[BlendFunciARB_remap_index] +#define _gloffset_BindSampler driDispatchRemapTable[BindSampler_remap_index] +#define _gloffset_DeleteSamplers driDispatchRemapTable[DeleteSamplers_remap_index] +#define _gloffset_GenSamplers driDispatchRemapTable[GenSamplers_remap_index] +#define _gloffset_GetSamplerParameterIiv driDispatchRemapTable[GetSamplerParameterIiv_remap_index] +#define _gloffset_GetSamplerParameterIuiv driDispatchRemapTable[GetSamplerParameterIuiv_remap_index] +#define _gloffset_GetSamplerParameterfv driDispatchRemapTable[GetSamplerParameterfv_remap_index] +#define _gloffset_GetSamplerParameteriv driDispatchRemapTable[GetSamplerParameteriv_remap_index] +#define _gloffset_IsSampler driDispatchRemapTable[IsSampler_remap_index] +#define _gloffset_SamplerParameterIiv driDispatchRemapTable[SamplerParameterIiv_remap_index] +#define _gloffset_SamplerParameterIuiv driDispatchRemapTable[SamplerParameterIuiv_remap_index] +#define _gloffset_SamplerParameterf driDispatchRemapTable[SamplerParameterf_remap_index] +#define _gloffset_SamplerParameterfv driDispatchRemapTable[SamplerParameterfv_remap_index] +#define _gloffset_SamplerParameteri driDispatchRemapTable[SamplerParameteri_remap_index] +#define _gloffset_SamplerParameteriv driDispatchRemapTable[SamplerParameteriv_remap_index] #define _gloffset_BindTransformFeedback driDispatchRemapTable[BindTransformFeedback_remap_index] #define _gloffset_DeleteTransformFeedbacks driDispatchRemapTable[DeleteTransformFeedbacks_remap_index] #define _gloffset_DrawTransformFeedback driDispatchRemapTable[DrawTransformFeedback_remap_index] @@ -3227,7 +3275,7 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define CALL_ClampColor(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), _gloffset_ClampColor, parameters) #define GET_ClampColor(disp) GET_by_offset(disp, _gloffset_ClampColor) #define SET_ClampColor(disp, fn) SET_by_offset(disp, _gloffset_ClampColor, fn) -#define CALL_ClearBufferfi(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, const GLfloat, const GLint)), _gloffset_ClearBufferfi, parameters) +#define CALL_ClearBufferfi(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLfloat, GLint)), _gloffset_ClearBufferfi, parameters) #define GET_ClearBufferfi(disp) GET_by_offset(disp, _gloffset_ClearBufferfi) #define SET_ClearBufferfi(disp, fn) SET_by_offset(disp, _gloffset_ClearBufferfi, fn) #define CALL_ClearBufferfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, const GLfloat *)), _gloffset_ClearBufferfv, parameters) @@ -3650,6 +3698,9 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define CALL_DrawBuffersARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLenum *)), _gloffset_DrawBuffersARB, parameters) #define GET_DrawBuffersARB(disp) GET_by_offset(disp, _gloffset_DrawBuffersARB) #define SET_DrawBuffersARB(disp, fn) SET_by_offset(disp, _gloffset_DrawBuffersARB, fn) +#define CALL_ClampColorARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), _gloffset_ClampColorARB, parameters) +#define GET_ClampColorARB(disp) GET_by_offset(disp, _gloffset_ClampColorARB) +#define SET_ClampColorARB(disp, fn) SET_by_offset(disp, _gloffset_ClampColorARB, fn) #define CALL_DrawArraysInstancedARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLsizei, GLsizei)), _gloffset_DrawArraysInstancedARB, parameters) #define GET_DrawArraysInstancedARB(disp) GET_by_offset(disp, _gloffset_DrawArraysInstancedARB) #define SET_DrawArraysInstancedARB(disp, fn) SET_by_offset(disp, _gloffset_DrawArraysInstancedARB, fn) @@ -3677,6 +3728,9 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define CALL_MapBufferRange(disp, parameters) CALL_by_offset(disp, (GLvoid * (GLAPIENTRYP)(GLenum, GLintptr, GLsizeiptr, GLbitfield)), _gloffset_MapBufferRange, parameters) #define GET_MapBufferRange(disp) GET_by_offset(disp, _gloffset_MapBufferRange) #define SET_MapBufferRange(disp, fn) SET_by_offset(disp, _gloffset_MapBufferRange, fn) +#define CALL_TexBufferARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint)), _gloffset_TexBufferARB, parameters) +#define GET_TexBufferARB(disp) GET_by_offset(disp, _gloffset_TexBufferARB) +#define SET_TexBufferARB(disp, fn) SET_by_offset(disp, _gloffset_TexBufferARB, fn) #define CALL_BindVertexArray(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_BindVertexArray, parameters) #define GET_BindVertexArray(disp) GET_by_offset(disp, _gloffset_BindVertexArray) #define SET_BindVertexArray(disp, fn) SET_by_offset(disp, _gloffset_BindVertexArray, fn) @@ -3728,6 +3782,48 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define CALL_BlendFunciARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLenum)), _gloffset_BlendFunciARB, parameters) #define GET_BlendFunciARB(disp) GET_by_offset(disp, _gloffset_BlendFunciARB) #define SET_BlendFunciARB(disp, fn) SET_by_offset(disp, _gloffset_BlendFunciARB, fn) +#define CALL_BindSampler(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint)), _gloffset_BindSampler, parameters) +#define GET_BindSampler(disp) GET_by_offset(disp, _gloffset_BindSampler) +#define SET_BindSampler(disp, fn) SET_by_offset(disp, _gloffset_BindSampler, fn) +#define CALL_DeleteSamplers(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_DeleteSamplers, parameters) +#define GET_DeleteSamplers(disp) GET_by_offset(disp, _gloffset_DeleteSamplers) +#define SET_DeleteSamplers(disp, fn) SET_by_offset(disp, _gloffset_DeleteSamplers, fn) +#define CALL_GenSamplers(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenSamplers, parameters) +#define GET_GenSamplers(disp) GET_by_offset(disp, _gloffset_GenSamplers) +#define SET_GenSamplers(disp, fn) SET_by_offset(disp, _gloffset_GenSamplers, fn) +#define CALL_GetSamplerParameterIiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetSamplerParameterIiv, parameters) +#define GET_GetSamplerParameterIiv(disp) GET_by_offset(disp, _gloffset_GetSamplerParameterIiv) +#define SET_GetSamplerParameterIiv(disp, fn) SET_by_offset(disp, _gloffset_GetSamplerParameterIiv, fn) +#define CALL_GetSamplerParameterIuiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLuint *)), _gloffset_GetSamplerParameterIuiv, parameters) +#define GET_GetSamplerParameterIuiv(disp) GET_by_offset(disp, _gloffset_GetSamplerParameterIuiv) +#define SET_GetSamplerParameterIuiv(disp, fn) SET_by_offset(disp, _gloffset_GetSamplerParameterIuiv, fn) +#define CALL_GetSamplerParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLfloat *)), _gloffset_GetSamplerParameterfv, parameters) +#define GET_GetSamplerParameterfv(disp) GET_by_offset(disp, _gloffset_GetSamplerParameterfv) +#define SET_GetSamplerParameterfv(disp, fn) SET_by_offset(disp, _gloffset_GetSamplerParameterfv, fn) +#define CALL_GetSamplerParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetSamplerParameteriv, parameters) +#define GET_GetSamplerParameteriv(disp) GET_by_offset(disp, _gloffset_GetSamplerParameteriv) +#define SET_GetSamplerParameteriv(disp, fn) SET_by_offset(disp, _gloffset_GetSamplerParameteriv, fn) +#define CALL_IsSampler(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsSampler, parameters) +#define GET_IsSampler(disp) GET_by_offset(disp, _gloffset_IsSampler) +#define SET_IsSampler(disp, fn) SET_by_offset(disp, _gloffset_IsSampler, fn) +#define CALL_SamplerParameterIiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, const GLint *)), _gloffset_SamplerParameterIiv, parameters) +#define GET_SamplerParameterIiv(disp) GET_by_offset(disp, _gloffset_SamplerParameterIiv) +#define SET_SamplerParameterIiv(disp, fn) SET_by_offset(disp, _gloffset_SamplerParameterIiv, fn) +#define CALL_SamplerParameterIuiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, const GLuint *)), _gloffset_SamplerParameterIuiv, parameters) +#define GET_SamplerParameterIuiv(disp) GET_by_offset(disp, _gloffset_SamplerParameterIuiv) +#define SET_SamplerParameterIuiv(disp, fn) SET_by_offset(disp, _gloffset_SamplerParameterIuiv, fn) +#define CALL_SamplerParameterf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLfloat)), _gloffset_SamplerParameterf, parameters) +#define GET_SamplerParameterf(disp) GET_by_offset(disp, _gloffset_SamplerParameterf) +#define SET_SamplerParameterf(disp, fn) SET_by_offset(disp, _gloffset_SamplerParameterf, fn) +#define CALL_SamplerParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, const GLfloat *)), _gloffset_SamplerParameterfv, parameters) +#define GET_SamplerParameterfv(disp) GET_by_offset(disp, _gloffset_SamplerParameterfv) +#define SET_SamplerParameterfv(disp, fn) SET_by_offset(disp, _gloffset_SamplerParameterfv, fn) +#define CALL_SamplerParameteri(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint)), _gloffset_SamplerParameteri, parameters) +#define GET_SamplerParameteri(disp) GET_by_offset(disp, _gloffset_SamplerParameteri) +#define SET_SamplerParameteri(disp, fn) SET_by_offset(disp, _gloffset_SamplerParameteri, fn) +#define CALL_SamplerParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, const GLint *)), _gloffset_SamplerParameteriv, parameters) +#define GET_SamplerParameteriv(disp) GET_by_offset(disp, _gloffset_SamplerParameteriv) +#define SET_SamplerParameteriv(disp, fn) SET_by_offset(disp, _gloffset_SamplerParameteriv, fn) #define CALL_BindTransformFeedback(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_BindTransformFeedback, parameters) #define GET_BindTransformFeedback(disp) GET_by_offset(disp, _gloffset_BindTransformFeedback) #define SET_BindTransformFeedback(disp, fn) SET_by_offset(disp, _gloffset_BindTransformFeedback, fn) diff --git a/src/mesa/main/image.c b/src/mesa/main/image.c index bbde3800e8c..28841c25102 100644 --- a/src/mesa/main/image.c +++ b/src/mesa/main/image.c @@ -748,9 +748,6 @@ _mesa_is_color_format(GLenum format) case GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT: case GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT: case GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI: - /* signed, normalized texture formats */ - case GL_RGBA_SNORM: - case GL_RGBA8_SNORM: /* generic integer formats */ case GL_RED_INTEGER_EXT: case GL_GREEN_INTEGER_EXT: @@ -799,6 +796,31 @@ _mesa_is_color_format(GLenum format) case GL_INTENSITY8I_EXT: case GL_LUMINANCE8I_EXT: case GL_LUMINANCE_ALPHA8I_EXT: + /* signed, normalized texture formats */ + case GL_RED_SNORM: + case GL_R8_SNORM: + case GL_R16_SNORM: + case GL_RG_SNORM: + case GL_RG8_SNORM: + case GL_RG16_SNORM: + case GL_RGB_SNORM: + case GL_RGB8_SNORM: + case GL_RGB16_SNORM: + case GL_RGBA_SNORM: + case GL_RGBA8_SNORM: + case GL_RGBA16_SNORM: + case GL_ALPHA_SNORM: + case GL_ALPHA8_SNORM: + case GL_ALPHA16_SNORM: + case GL_LUMINANCE_SNORM: + case GL_LUMINANCE8_SNORM: + case GL_LUMINANCE16_SNORM: + case GL_LUMINANCE_ALPHA_SNORM: + case GL_LUMINANCE8_ALPHA8_SNORM: + case GL_LUMINANCE16_ALPHA16_SNORM: + case GL_INTENSITY_SNORM: + case GL_INTENSITY8_SNORM: + case GL_INTENSITY16_SNORM: return GL_TRUE; case GL_YCBCR_MESA: /* not considered to be RGB */ /* fall-through */ diff --git a/src/mesa/main/macros.h b/src/mesa/main/macros.h index b2ec0ba9b73..86a58cc6b43 100644 --- a/src/mesa/main/macros.h +++ b/src/mesa/main/macros.h @@ -58,8 +58,7 @@ extern GLfloat _mesa_ubyte_to_float_color_tab[256]; #define BYTE_TO_FLOAT_TEX(B) ((B) == -128 ? -1.0F : (B) * (1.0F/127.0F)) /** Convert GLfloat in [-1.0,1.0] to GLbyte in [-128,127], texture/fb data */ -#define FLOAT_TO_BYTE_TEX(X) ( (GLint) (127.0F * (X)) ) - +#define FLOAT_TO_BYTE_TEX(X) CLAMP( (GLint) (127.0F * (X)), -128, 127 ) /** Convert GLushort in [0,65535] to GLfloat in [0.0,1.0] */ #define USHORT_TO_FLOAT(S) ((GLfloat) (S) * (1.0F / 65535.0F)) diff --git a/src/mesa/main/matrix.c b/src/mesa/main/matrix.c index 76c7e1c9d1b..56973661cea 100644 --- a/src/mesa/main/matrix.c +++ b/src/mesa/main/matrix.c @@ -140,8 +140,8 @@ _mesa_Ortho( GLdouble left, GLdouble right, * \sa glMatrixMode(). * * Flushes the vertices, validates the parameter and updates - * __struct gl_contextRec::CurrentStack and gl_transform_attrib::MatrixMode with the - * specified matrix stack. + * __struct gl_contextRec::CurrentStack and gl_transform_attrib::MatrixMode + * with the specified matrix stack. */ void GLAPIENTRY _mesa_MatrixMode( GLenum mode ) @@ -170,7 +170,8 @@ _mesa_MatrixMode( GLenum mode ) */ #if 0 if (ctx->Texture.CurrentUnit >= ctx->Const.MaxTextureCoordUnits) { - _mesa_error(ctx, GL_INVALID_OPERATION, "glMatrixMode(invalid tex unit %d)", + _mesa_error(ctx, GL_INVALID_OPERATION, + "glMatrixMode(invalid tex unit %d)", ctx->Texture.CurrentUnit); return; } @@ -232,8 +233,8 @@ _mesa_MatrixMode( GLenum mode ) * \sa glPushMatrix(). * * Verifies the current matrix stack is not full, and duplicates the top-most - * matrix in the stack. Marks __struct gl_contextRec::NewState with the stack dirty - * flag. + * matrix in the stack. + * Marks __struct gl_contextRec::NewState with the stack dirty flag. */ void GLAPIENTRY _mesa_PushMatrix( void ) @@ -272,8 +273,8 @@ _mesa_PushMatrix( void ) * \sa glPopMatrix(). * * Flushes the vertices, verifies the current matrix stack is not empty, and - * moves the stack head down. Marks __struct gl_contextRec::NewState with the dirty - * stack flag. + * moves the stack head down. + * Marks __struct gl_contextRec::NewState with the dirty stack flag. */ void GLAPIENTRY _mesa_PopMatrix( void ) @@ -309,9 +310,9 @@ _mesa_PopMatrix( void ) * * \sa glLoadIdentity(). * - * Flushes the vertices and calls _math_matrix_set_identity() with the top-most - * matrix in the current stack. Marks __struct gl_contextRec::NewState with the stack - * dirty flag. + * Flushes the vertices and calls _math_matrix_set_identity() with the + * top-most matrix in the current stack. + * Marks __struct gl_contextRec::NewState with the stack dirty flag. */ void GLAPIENTRY _mesa_LoadIdentity( void ) @@ -334,9 +335,9 @@ _mesa_LoadIdentity( void ) * * \sa glLoadMatrixf(). * - * Flushes the vertices and calls _math_matrix_loadf() with the top-most matrix - * in the current stack and the given matrix. Marks __struct gl_contextRec::NewState - * with the dirty stack flag. + * Flushes the vertices and calls _math_matrix_loadf() with the top-most + * matrix in the current stack and the given matrix. + * Marks __struct gl_contextRec::NewState with the dirty stack flag. */ void GLAPIENTRY _mesa_LoadMatrixf( const GLfloat *m ) @@ -560,8 +561,8 @@ _mesa_MultTransposeMatrixdARB( const GLdouble *m ) * Calls _math_matrix_analyse() with the top-matrix of the projection matrix * stack, and recomputes user clip positions if necessary. * - * \note This routine references __struct gl_contextRec::Tranform attribute values to - * compute userclip positions in clip space, but is only called on + * \note This routine references __struct gl_contextRec::Tranform attribute + * values to compute userclip positions in clip space, but is only called on * _NEW_PROJECTION. The _mesa_ClipPlane() function keeps these values up to * date across changes to the __struct gl_contextRec::Transform attributes. */ @@ -594,8 +595,8 @@ update_projection( struct gl_context *ctx ) * \param ctx GL context. * * Multiplies the top matrices of the projection and model view stacks into - * __struct gl_contextRec::_ModelProjectMatrix via _math_matrix_mul_matrix() and - * analyzes the resulting matrix via _math_matrix_analyse(). + * __struct gl_contextRec::_ModelProjectMatrix via _math_matrix_mul_matrix() + * and analyzes the resulting matrix via _math_matrix_analyse(). */ static void calculate_model_project_matrix( struct gl_context *ctx ) @@ -624,7 +625,7 @@ void _mesa_update_modelview_project( struct gl_context *ctx, GLuint new_state ) if (new_state & _NEW_MODELVIEW) { _math_matrix_analyse( ctx->ModelviewMatrixStack.Top ); - /* Bring cull position uptodate. + /* Bring cull position up to date. */ TRANSFORM_POINT3( ctx->Transform.CullObjPos, ctx->ModelviewMatrixStack.Top->inv, @@ -635,7 +636,7 @@ void _mesa_update_modelview_project( struct gl_context *ctx, GLuint new_state ) if (new_state & _NEW_PROJECTION) update_projection( ctx ); - /* Keep ModelviewProject uptodate always to allow tnl + /* Keep ModelviewProject up to date always to allow tnl * implementations that go model->clip even when eye is required. */ calculate_model_project_matrix(ctx); diff --git a/src/mesa/main/mfeatures.h b/src/mesa/main/mfeatures.h index 1b39f5fdd36..33db5081419 100644 --- a/src/mesa/main/mfeatures.h +++ b/src/mesa/main/mfeatures.h @@ -122,6 +122,7 @@ #define FEATURE_ARB_framebuffer_object (FEATURE_GL && FEATURE_EXT_framebuffer_object) #define FEATURE_ARB_map_buffer_range FEATURE_GL #define FEATURE_ARB_pixel_buffer_object (FEATURE_GL && FEATURE_EXT_pixel_buffer_object) +#define FEATURE_ARB_sampler_objects FEATURE_GL #define FEATURE_ARB_sync FEATURE_GL #define FEATURE_ARB_vertex_buffer_object 1 diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 831774fa4b1..160ae9d2622 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -691,7 +691,8 @@ struct gl_accum_attrib struct gl_colorbuffer_attrib { GLuint ClearIndex; /**< Index to use for glClear */ - GLclampf ClearColor[4]; /**< Color to use for glClear */ + GLfloat ClearColorUnclamped[4]; /**< Color to use for glClear*/ + GLclampf ClearColor[4]; /**< Color to use for glClear */ GLuint IndexMask; /**< Color index write mask */ GLubyte ColorMask[MAX_DRAW_BUFFERS][4];/**< Each flag is 0xff or 0x0 */ @@ -704,6 +705,7 @@ struct gl_colorbuffer_attrib /*@{*/ GLboolean AlphaEnabled; /**< Alpha test enabled flag */ GLenum AlphaFunc; /**< Alpha test function */ + GLfloat AlphaRefUnclamped; GLclampf AlphaRef; /**< Alpha reference value */ /*@}*/ @@ -712,7 +714,14 @@ struct gl_colorbuffer_attrib */ /*@{*/ GLbitfield BlendEnabled; /**< Per-buffer blend enable flags */ + + /* NOTE: this does _not_ depend on fragment clamping or any other clamping control, + * only on the fixed-pointness of the render target. + * The query does however depend on fragment color clamping. + */ + GLfloat BlendColorUnclamped[4]; /**< Blending color */ GLfloat BlendColor[4]; /**< Blending color */ + struct { GLenum SrcRGB; /**< RGB blend source term */ @@ -741,7 +750,9 @@ struct gl_colorbuffer_attrib GLboolean DitherFlag; /**< Dither enable flag */ GLenum ClampFragmentColor; /**< GL_TRUE, GL_FALSE or GL_FIXED_ONLY_ARB */ + GLboolean _ClampFragmentColor; /** < with GL_FIXED_ONLY_ARB resolved */ GLenum ClampReadColor; /**< GL_TRUE, GL_FALSE or GL_FIXED_ONLY_ARB */ + GLboolean _ClampReadColor; /** < with GL_FIXED_ONLY_ARB resolved */ GLboolean sRGBEnabled; /**< Framebuffer sRGB blending/updating requested */ }; @@ -840,6 +851,7 @@ struct gl_eval_attrib struct gl_fog_attrib { GLboolean Enabled; /**< Fog enabled flag */ + GLfloat ColorUnclamped[4]; /**< Fog color */ GLfloat Color[4]; /**< Fog color */ GLfloat Density; /**< Density >= 0.0 */ GLfloat Start; /**< Start distance in eye coords */ @@ -921,6 +933,7 @@ struct gl_light_attrib GLbitfield ColorMaterialBitmask; /**< bitmask formed from Face and Mode */ GLboolean ColorMaterialEnabled; GLenum ClampVertexColor; + GLboolean _ClampVertexColor; struct gl_light EnabledList; /**< List sentinel */ @@ -1126,6 +1139,7 @@ struct gl_stencil_attrib */ typedef enum { + TEXTURE_BUFFER_INDEX, TEXTURE_2D_ARRAY_INDEX, TEXTURE_1D_ARRAY_INDEX, TEXTURE_CUBE_INDEX, @@ -1142,6 +1156,7 @@ typedef enum * Used for Texture.Unit[]._ReallyEnabled flags. */ /*@{*/ +#define TEXTURE_BUFFER_BIT (1 << TEXTURE_BUFFER_INDEX) #define TEXTURE_2D_ARRAY_BIT (1 << TEXTURE_2D_ARRAY_INDEX) #define TEXTURE_1D_ARRAY_BIT (1 << TEXTURE_1D_ARRAY_INDEX) #define TEXTURE_CUBE_BIT (1 << TEXTURE_CUBE_INDEX) @@ -1290,37 +1305,58 @@ typedef enum /** - * Texture object state. Contains the array of mipmap images, border color, - * wrap modes, filter modes, shadow/texcompare state, and the per-texture - * color palette. + * Sampler object state. These objects are new with GL_ARB_sampler_objects + * and OpenGL 3.3. Legacy texture objects also contain a sampler object. */ -struct gl_texture_object +struct gl_sampler_object { - _glthread_Mutex Mutex; /**< for thread safety */ - GLint RefCount; /**< reference count */ - GLuint Name; /**< the user-visible texture object ID */ - GLenum Target; /**< GL_TEXTURE_1D, GL_TEXTURE_2D, etc. */ - GLfloat Priority; /**< in [0,1] */ - union { - GLfloat f[4]; - GLuint ui[4]; - GLint i[4]; - } BorderColor; /**< Interpreted according to texture format */ + GLuint Name; + GLint RefCount; + GLenum WrapS; /**< S-axis texture image wrap mode */ GLenum WrapT; /**< T-axis texture image wrap mode */ GLenum WrapR; /**< R-axis texture image wrap mode */ GLenum MinFilter; /**< minification filter */ GLenum MagFilter; /**< magnification filter */ + union { + GLfloat f[4]; + GLuint ui[4]; + GLint i[4]; + } BorderColor; /**< Interpreted according to texture format */ GLfloat MinLod; /**< min lambda, OpenGL 1.2 */ GLfloat MaxLod; /**< max lambda, OpenGL 1.2 */ GLfloat LodBias; /**< OpenGL 1.4 */ - GLint BaseLevel; /**< min mipmap level, OpenGL 1.2 */ - GLint MaxLevel; /**< max mipmap level, OpenGL 1.2 */ GLfloat MaxAnisotropy; /**< GL_EXT_texture_filter_anisotropic */ GLenum CompareMode; /**< GL_ARB_shadow */ GLenum CompareFunc; /**< GL_ARB_shadow */ GLfloat CompareFailValue; /**< GL_ARB_shadow_ambient */ + GLenum sRGBDecode; /**< GL_DECODE_EXT or GL_SKIP_DECODE_EXT */ + + /* deprecated sampler state */ GLenum DepthMode; /**< GL_ARB_depth_texture */ + + /** Is the texture object complete with respect to this sampler? */ + GLboolean _CompleteTexture; +}; + + +/** + * Texture object state. Contains the array of mipmap images, border color, + * wrap modes, filter modes, shadow/texcompare state, and the per-texture + * color palette. + */ +struct gl_texture_object +{ + _glthread_Mutex Mutex; /**< for thread safety */ + GLint RefCount; /**< reference count */ + GLuint Name; /**< the user-visible texture object ID */ + GLenum Target; /**< GL_TEXTURE_1D, GL_TEXTURE_2D, etc. */ + + struct gl_sampler_object Sampler; + + GLfloat Priority; /**< in [0,1] */ + GLint BaseLevel; /**< min mipmap level, OpenGL 1.2 */ + GLint MaxLevel; /**< max mipmap level, OpenGL 1.2 */ GLint _MaxLevel; /**< actual max mipmap level (q in the spec) */ GLfloat _MaxLambda; /**< = _MaxLevel - BaseLevel (q - b in spec) */ GLint CropRect[4]; /**< GL_OES_draw_texture */ @@ -1330,11 +1366,14 @@ struct gl_texture_object GLboolean _Complete; /**< Is texture object complete? */ GLboolean _RenderToTexture; /**< Any rendering to this texture? */ GLboolean Purgeable; /**< Is the buffer purgeable under memory pressure? */ - GLenum sRGBDecode; /**< GL_DECODE_EXT or GL_SKIP_DECODE_EXT */ /** Actual texture images, indexed by [cube face] and [mipmap level] */ struct gl_texture_image *Image[MAX_FACES][MAX_TEXTURE_LEVELS]; + /** GL_ARB_texture_buffer_object */ + struct gl_buffer_object *BufferObject; + GLenum BufferObjectFormat; + /** GL_EXT_paletted_texture */ struct gl_color_table Palette; @@ -1396,7 +1435,8 @@ struct gl_texture_unit GLbitfield _ReallyEnabled; /**< 0 or exactly one of TEXTURE_*_BIT flags */ GLenum EnvMode; /**< GL_MODULATE, GL_DECAL, GL_BLEND, etc. */ - GLfloat EnvColor[4]; + GLclampf EnvColor[4]; + GLfloat EnvColorUnclamped[4]; struct gl_texgen GenS; struct gl_texgen GenT; @@ -1409,6 +1449,9 @@ struct gl_texture_unit GLenum BumpTarget; GLfloat RotMatrix[4]; /* 2x2 matrix */ + /** Current sampler object (GL_ARB_sampler_objects) */ + struct gl_sampler_object *Sampler; + /** * \name GL_EXT_texture_env_combine */ @@ -1444,6 +1487,9 @@ struct gl_texture_attrib struct gl_texture_object *ProxyTex[NUM_TEXTURE_TARGETS]; + /** GL_ARB_texture_buffer_object */ + struct gl_buffer_object *BufferObject; + /** GL_ARB_seamless_cubemap */ GLboolean CubeMapSeamless; @@ -1877,7 +1923,6 @@ struct gl_geometry_program struct gl_fragment_program { struct gl_program Base; /**< base class */ - GLenum FogOption; GLboolean UsesKill; /**< shader uses KIL instruction */ GLboolean OriginUpperLeft; GLboolean PixelCenterInteger; @@ -2340,6 +2385,9 @@ struct gl_shared_state /* GL_ARB_sync */ struct simple_node SyncObjects; + /** GL_ARB_sampler_objects */ + struct _mesa_HashTable *SamplerObjects; + void *DriverData; /**< Device driver shared state */ }; @@ -2357,27 +2405,26 @@ struct gl_shared_state */ struct gl_renderbuffer { -#define RB_MAGIC 0xaabbccdd - int Magic; /** XXX TEMPORARY DEBUG INFO */ _glthread_Mutex Mutex; /**< for thread safety */ GLuint ClassID; /**< Useful for drivers */ GLuint Name; GLint RefCount; GLuint Width, Height; + GLint RowStride; /**< Padded width in units of pixels */ GLboolean Purgeable; /**< Is the buffer purgeable under memory pressure? */ + GLboolean AttachedAnytime; /**< TRUE if it was attached to a framebuffer */ + + GLubyte NumSamples; + GLenum InternalFormat; /**< The user-specified format */ GLenum _BaseFormat; /**< Either GL_RGB, GL_RGBA, GL_DEPTH_COMPONENT or GL_STENCIL_INDEX. */ gl_format Format; /**< The actual renderbuffer memory format */ - GLubyte NumSamples; - GLenum DataType; /**< Type of values passed to the Get/Put functions */ GLvoid *Data; /**< This may not be used by some kinds of RBs */ - GLboolean AttachedAnytime; /**< TRUE if it was attached to a framebuffer */ - /* Used to wrap one renderbuffer around another: */ struct gl_renderbuffer *Wrapped; @@ -2616,6 +2663,7 @@ struct gl_constants GLuint MaxTextureUnits; /**< = MIN(CoordUnits, ImageUnits) */ GLfloat MaxTextureMaxAnisotropy; /**< GL_EXT_texture_filter_anisotropic */ GLfloat MaxTextureLodBias; /**< GL_EXT_texture_lod_bias */ + GLuint MaxTextureBufferSize; /**< GL_ARB_texture_buffer_object */ GLuint MaxArrayLockSize; @@ -2704,6 +2752,7 @@ struct gl_extensions GLboolean dummy_false; /* Set false by _mesa_init_extensions(). */ GLboolean ARB_ES2_compatibility; GLboolean ARB_blend_func_extended; + GLboolean ARB_color_buffer_float; GLboolean ARB_copy_buffer; GLboolean ARB_depth_buffer_float; GLboolean ARB_depth_clamp; @@ -2813,6 +2862,7 @@ struct gl_extensions GLboolean EXT_texture_lod_bias; GLboolean EXT_texture_mirror_clamp; GLboolean EXT_texture_shared_exponent; + GLboolean EXT_texture_snorm; GLboolean EXT_texture_sRGB; GLboolean EXT_texture_sRGB_decode; GLboolean EXT_texture_swizzle; @@ -2840,7 +2890,6 @@ struct gl_extensions GLboolean MESA_resize_buffers; GLboolean MESA_ycbcr_texture; GLboolean MESA_texture_array; - GLboolean MESA_texture_signed_rgba; GLboolean NV_blend_square; GLboolean NV_conditional_render; GLboolean NV_fragment_program; @@ -2933,6 +2982,7 @@ struct gl_matrix_stack #define _NEW_PROGRAM (1 << 26) /**< New program/shader state */ #define _NEW_PROGRAM_CONSTANTS (1 << 27) #define _NEW_BUFFER_OBJECT (1 << 28) +#define _NEW_FRAG_CLAMP (1 << 29) #define _NEW_ALL ~0 /*@}*/ @@ -3022,11 +3072,6 @@ struct gl_matrix_stack _NEW_POINT | \ _NEW_PROGRAM | \ _NEW_MODELVIEW) - -#define _MESA_NEW_NEED_NORMALS (_NEW_LIGHT | \ - _NEW_TEXTURE) - -#define _MESA_NEW_TRANSFER_STATE (_NEW_PIXEL) /*@}*/ diff --git a/src/mesa/main/pack.c b/src/mesa/main/pack.c index 512835cb803..4bb0a90045e 100644 --- a/src/mesa/main/pack.c +++ b/src/mesa/main/pack.c @@ -504,17 +504,6 @@ _mesa_pack_rgba_span_float(struct gl_context *ctx, GLuint n, GLfloat rgba[][4], luminance = NULL; } - /* XXX - * This test should probably go away. Have the caller set/clear the - * IMAGE_CLAMP_BIT as needed. - */ - if (dstType != GL_FLOAT || ctx->Color.ClampReadColor == GL_TRUE) { - if (!intDstFormat) { - /* need to clamp to [0, 1] */ - transferOps |= IMAGE_CLAMP_BIT; - } - } - if (transferOps) { _mesa_apply_rgba_transfer_ops(ctx, transferOps, n, rgba); } @@ -3984,7 +3973,8 @@ _mesa_unpack_dudv_span_byte( struct gl_context *ctx, GLbitfield transferOps ) { ASSERT(dstFormat == GL_DUDV_ATI); - ASSERT(srcFormat == GL_DUDV_ATI); + ASSERT(srcFormat == GL_DUDV_ATI || + srcFormat == GL_DU8DV8_ATI); ASSERT(srcType == GL_UNSIGNED_BYTE || srcType == GL_BYTE || diff --git a/src/mesa/main/pbo.c b/src/mesa/main/pbo.c index dc00d423ba9..56b26a954bd 100644 --- a/src/mesa/main/pbo.c +++ b/src/mesa/main/pbo.c @@ -81,8 +81,8 @@ _mesa_validate_pbo_access(GLuint dimensions, format, type, 0, 0, 0); /* get address just past the last pixel we'll read */ - end = _mesa_image_address(dimensions, pack, ptr, width, height, - format, type, depth-1, height-1, width); + end = _mesa_image_address(dimensions, pack, ptr, width, height, + format, type, depth-1, height-1, width); sizeAddr = ((const GLubyte *) 0) + pack->BufferObj->Size; diff --git a/src/mesa/main/pixel.c b/src/mesa/main/pixel.c index 195fa234be2..da99c9b6f35 100644 --- a/src/mesa/main/pixel.c +++ b/src/mesa/main/pixel.c @@ -617,7 +617,7 @@ update_image_transfer_state(struct gl_context *ctx) */ void _mesa_update_pixel( struct gl_context *ctx, GLuint new_state ) { - if (new_state & _MESA_NEW_TRANSFER_STATE) + if (new_state & _NEW_PIXEL) update_image_transfer_state(ctx); } diff --git a/src/mesa/main/readpix.c b/src/mesa/main/readpix.c index 6e09a52c88a..a172a0000f5 100644 --- a/src/mesa/main/readpix.c +++ b/src/mesa/main/readpix.c @@ -44,8 +44,8 @@ * \return GL_TRUE if error detected, GL_FALSE if no errors */ GLboolean -_mesa_error_check_format_type(struct gl_context *ctx, GLenum format, GLenum type, - GLboolean drawing) +_mesa_error_check_format_type(struct gl_context *ctx, GLenum format, + GLenum type, GLboolean drawing) { const char *readDraw = drawing ? "Draw" : "Read"; const GLboolean reading = !drawing; diff --git a/src/mesa/main/remap_helper.h b/src/mesa/main/remap_helper.h index 61530df3e1a..72a2f1e0b81 100644 --- a/src/mesa/main/remap_helper.h +++ b/src/mesa/main/remap_helper.h @@ -70,4710 +70,4774 @@ static const char _mesa_function_pool[] = "\0" "glLoadIdentity\0" "\0" - /* _mesa_function_pool[216]: GetCombinerOutputParameterfvNV (will be remapped) */ - "iiip\0" - "glGetCombinerOutputParameterfvNV\0" - "\0" - /* _mesa_function_pool[255]: SampleCoverageARB (will be remapped) */ + /* _mesa_function_pool[216]: SampleCoverageARB (will be remapped) */ "fi\0" "glSampleCoverage\0" "glSampleCoverageARB\0" "\0" - /* _mesa_function_pool[296]: ConvolutionFilter1D (offset 348) */ + /* _mesa_function_pool[257]: ConvolutionFilter1D (offset 348) */ "iiiiip\0" "glConvolutionFilter1D\0" "glConvolutionFilter1DEXT\0" "\0" - /* _mesa_function_pool[351]: BeginQueryARB (will be remapped) */ + /* _mesa_function_pool[312]: BeginQueryARB (will be remapped) */ "ii\0" "glBeginQuery\0" "glBeginQueryARB\0" "\0" - /* _mesa_function_pool[384]: RasterPos3dv (offset 71) */ + /* _mesa_function_pool[345]: RasterPos3dv (offset 71) */ "p\0" "glRasterPos3dv\0" "\0" - /* _mesa_function_pool[402]: PointParameteriNV (will be remapped) */ + /* _mesa_function_pool[363]: PointParameteriNV (will be remapped) */ "ii\0" "glPointParameteri\0" "glPointParameteriNV\0" "\0" - /* _mesa_function_pool[444]: GetProgramiv (will be remapped) */ + /* _mesa_function_pool[405]: GetProgramiv (will be remapped) */ "iip\0" "glGetProgramiv\0" "\0" - /* _mesa_function_pool[464]: MultiTexCoord3sARB (offset 398) */ + /* _mesa_function_pool[425]: MultiTexCoord3sARB (offset 398) */ "iiii\0" "glMultiTexCoord3s\0" "glMultiTexCoord3sARB\0" "\0" - /* _mesa_function_pool[509]: SecondaryColor3iEXT (will be remapped) */ + /* _mesa_function_pool[470]: SecondaryColor3iEXT (will be remapped) */ "iii\0" "glSecondaryColor3i\0" "glSecondaryColor3iEXT\0" "\0" - /* _mesa_function_pool[555]: WindowPos3fMESA (will be remapped) */ + /* _mesa_function_pool[516]: WindowPos3fMESA (will be remapped) */ "fff\0" "glWindowPos3f\0" "glWindowPos3fARB\0" "glWindowPos3fMESA\0" "\0" - /* _mesa_function_pool[609]: TexCoord1iv (offset 99) */ + /* _mesa_function_pool[570]: TexCoord1iv (offset 99) */ "p\0" "glTexCoord1iv\0" "\0" - /* _mesa_function_pool[626]: TexCoord4sv (offset 125) */ + /* _mesa_function_pool[587]: TexCoord4sv (offset 125) */ "p\0" "glTexCoord4sv\0" "\0" - /* _mesa_function_pool[643]: RasterPos4s (offset 84) */ + /* _mesa_function_pool[604]: RasterPos4s (offset 84) */ "iiii\0" "glRasterPos4s\0" "\0" - /* _mesa_function_pool[663]: PixelTexGenParameterfvSGIS (will be remapped) */ + /* _mesa_function_pool[624]: PixelTexGenParameterfvSGIS (will be remapped) */ "ip\0" "glPixelTexGenParameterfvSGIS\0" "\0" - /* _mesa_function_pool[696]: ActiveTextureARB (offset 374) */ + /* _mesa_function_pool[657]: ActiveTextureARB (offset 374) */ "i\0" "glActiveTexture\0" "glActiveTextureARB\0" "\0" - /* _mesa_function_pool[734]: BlitFramebufferEXT (will be remapped) */ + /* _mesa_function_pool[695]: BlitFramebufferEXT (will be remapped) */ "iiiiiiiiii\0" "glBlitFramebuffer\0" "glBlitFramebufferEXT\0" "\0" - /* _mesa_function_pool[785]: TexCoord1f (offset 96) */ + /* _mesa_function_pool[746]: TexCoord1f (offset 96) */ "f\0" "glTexCoord1f\0" "\0" - /* _mesa_function_pool[801]: TexCoord1d (offset 94) */ + /* _mesa_function_pool[762]: TexCoord1d (offset 94) */ "d\0" "glTexCoord1d\0" "\0" - /* _mesa_function_pool[817]: VertexAttrib4ubvNV (will be remapped) */ + /* _mesa_function_pool[778]: VertexAttrib4ubvNV (will be remapped) */ "ip\0" "glVertexAttrib4ubvNV\0" "\0" - /* _mesa_function_pool[842]: TexCoord1i (offset 98) */ + /* _mesa_function_pool[803]: TexCoord1i (offset 98) */ "i\0" "glTexCoord1i\0" "\0" - /* _mesa_function_pool[858]: GetProgramNamedParameterdvNV (will be remapped) */ + /* _mesa_function_pool[819]: GetProgramNamedParameterdvNV (will be remapped) */ "iipp\0" "glGetProgramNamedParameterdvNV\0" "\0" - /* _mesa_function_pool[895]: Histogram (offset 367) */ + /* _mesa_function_pool[856]: Histogram (offset 367) */ "iiii\0" "glHistogram\0" "glHistogramEXT\0" "\0" - /* _mesa_function_pool[928]: TexCoord1s (offset 100) */ + /* _mesa_function_pool[889]: TexCoord1s (offset 100) */ "i\0" "glTexCoord1s\0" "\0" - /* _mesa_function_pool[944]: GetMapfv (offset 267) */ + /* _mesa_function_pool[905]: GetMapfv (offset 267) */ "iip\0" "glGetMapfv\0" "\0" - /* _mesa_function_pool[960]: EvalCoord1f (offset 230) */ + /* _mesa_function_pool[921]: EvalCoord1f (offset 230) */ "f\0" "glEvalCoord1f\0" "\0" - /* _mesa_function_pool[977]: FramebufferTexture (will be remapped) */ + /* _mesa_function_pool[938]: FramebufferTexture (will be remapped) */ "iiii\0" "glFramebufferTexture\0" "\0" - /* _mesa_function_pool[1004]: VertexAttribI1ivEXT (will be remapped) */ + /* _mesa_function_pool[965]: VertexAttribI1ivEXT (will be remapped) */ "ip\0" "glVertexAttribI1ivEXT\0" "glVertexAttribI1iv\0" "\0" - /* _mesa_function_pool[1049]: TexImage4DSGIS (dynamic) */ + /* _mesa_function_pool[1010]: TexImage4DSGIS (dynamic) */ "iiiiiiiiiip\0" "glTexImage4DSGIS\0" "\0" - /* _mesa_function_pool[1079]: PolygonStipple (offset 175) */ + /* _mesa_function_pool[1040]: PolygonStipple (offset 175) */ "p\0" "glPolygonStipple\0" "\0" - /* _mesa_function_pool[1099]: WindowPos2dvMESA (will be remapped) */ + /* _mesa_function_pool[1060]: WindowPos2dvMESA (will be remapped) */ "p\0" "glWindowPos2dv\0" "glWindowPos2dvARB\0" "glWindowPos2dvMESA\0" "\0" - /* _mesa_function_pool[1154]: ReplacementCodeuiColor3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[1115]: ReplacementCodeuiColor3fVertex3fvSUN (dynamic) */ "ppp\0" "glReplacementCodeuiColor3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[1198]: BlendEquationSeparateEXT (will be remapped) */ + /* _mesa_function_pool[1159]: BlendEquationSeparateEXT (will be remapped) */ "ii\0" "glBlendEquationSeparate\0" "glBlendEquationSeparateEXT\0" "glBlendEquationSeparateATI\0" "\0" - /* _mesa_function_pool[1280]: ListParameterfSGIX (dynamic) */ + /* _mesa_function_pool[1241]: ListParameterfSGIX (dynamic) */ "iif\0" "glListParameterfSGIX\0" "\0" - /* _mesa_function_pool[1306]: SecondaryColor3bEXT (will be remapped) */ + /* _mesa_function_pool[1267]: SecondaryColor3bEXT (will be remapped) */ "iii\0" "glSecondaryColor3b\0" "glSecondaryColor3bEXT\0" "\0" - /* _mesa_function_pool[1352]: TexCoord4fColor4fNormal3fVertex4fvSUN (dynamic) */ + /* _mesa_function_pool[1313]: TexCoord4fColor4fNormal3fVertex4fvSUN (dynamic) */ "pppp\0" "glTexCoord4fColor4fNormal3fVertex4fvSUN\0" "\0" - /* _mesa_function_pool[1398]: GetPixelMapfv (offset 271) */ + /* _mesa_function_pool[1359]: GetPixelMapfv (offset 271) */ "ip\0" "glGetPixelMapfv\0" "\0" - /* _mesa_function_pool[1418]: Color3uiv (offset 22) */ + /* _mesa_function_pool[1379]: Color3uiv (offset 22) */ "p\0" "glColor3uiv\0" "\0" - /* _mesa_function_pool[1433]: IsEnabled (offset 286) */ + /* _mesa_function_pool[1394]: IsEnabled (offset 286) */ "i\0" "glIsEnabled\0" "\0" - /* _mesa_function_pool[1448]: VertexAttrib4svNV (will be remapped) */ + /* _mesa_function_pool[1409]: VertexAttrib4svNV (will be remapped) */ "ip\0" "glVertexAttrib4svNV\0" "\0" - /* _mesa_function_pool[1472]: EvalCoord2fv (offset 235) */ + /* _mesa_function_pool[1433]: EvalCoord2fv (offset 235) */ "p\0" "glEvalCoord2fv\0" "\0" - /* _mesa_function_pool[1490]: GetBufferSubDataARB (will be remapped) */ + /* _mesa_function_pool[1451]: GetBufferSubDataARB (will be remapped) */ "iiip\0" "glGetBufferSubData\0" "glGetBufferSubDataARB\0" "\0" - /* _mesa_function_pool[1537]: BufferSubDataARB (will be remapped) */ + /* _mesa_function_pool[1498]: BufferSubDataARB (will be remapped) */ "iiip\0" "glBufferSubData\0" "glBufferSubDataARB\0" "\0" - /* _mesa_function_pool[1578]: TexCoord2fColor4ubVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[1539]: TexCoord2fColor4ubVertex3fvSUN (dynamic) */ "ppp\0" "glTexCoord2fColor4ubVertex3fvSUN\0" "\0" - /* _mesa_function_pool[1616]: AttachShader (will be remapped) */ + /* _mesa_function_pool[1577]: AttachShader (will be remapped) */ "ii\0" "glAttachShader\0" "\0" - /* _mesa_function_pool[1635]: VertexAttrib2fARB (will be remapped) */ + /* _mesa_function_pool[1596]: VertexAttrib2fARB (will be remapped) */ "iff\0" "glVertexAttrib2f\0" "glVertexAttrib2fARB\0" "\0" - /* _mesa_function_pool[1677]: GetDebugLogLengthMESA (dynamic) */ + /* _mesa_function_pool[1638]: GetDebugLogLengthMESA (dynamic) */ "iii\0" "glGetDebugLogLengthMESA\0" "\0" - /* _mesa_function_pool[1706]: GetMapiv (offset 268) */ + /* _mesa_function_pool[1667]: GetMapiv (offset 268) */ "iip\0" "glGetMapiv\0" "\0" - /* _mesa_function_pool[1722]: VertexAttrib3fARB (will be remapped) */ + /* _mesa_function_pool[1683]: VertexAttrib3fARB (will be remapped) */ "ifff\0" "glVertexAttrib3f\0" "glVertexAttrib3fARB\0" "\0" - /* _mesa_function_pool[1765]: Indexubv (offset 316) */ + /* _mesa_function_pool[1726]: Indexubv (offset 316) */ "p\0" "glIndexubv\0" "\0" - /* _mesa_function_pool[1779]: GetQueryivARB (will be remapped) */ + /* _mesa_function_pool[1740]: GetQueryivARB (will be remapped) */ "iip\0" "glGetQueryiv\0" "glGetQueryivARB\0" "\0" - /* _mesa_function_pool[1813]: TexImage3D (offset 371) */ + /* _mesa_function_pool[1774]: TexImage3D (offset 371) */ "iiiiiiiiip\0" "glTexImage3D\0" "glTexImage3DEXT\0" "\0" - /* _mesa_function_pool[1854]: BindFragDataLocationEXT (will be remapped) */ + /* _mesa_function_pool[1815]: BindFragDataLocationEXT (will be remapped) */ "iip\0" "glBindFragDataLocationEXT\0" "glBindFragDataLocation\0" "\0" - /* _mesa_function_pool[1908]: ReplacementCodeuiVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[1869]: ReplacementCodeuiVertex3fvSUN (dynamic) */ "pp\0" "glReplacementCodeuiVertex3fvSUN\0" "\0" - /* _mesa_function_pool[1944]: EdgeFlagPointer (offset 312) */ + /* _mesa_function_pool[1905]: EdgeFlagPointer (offset 312) */ "ip\0" "glEdgeFlagPointer\0" "\0" - /* _mesa_function_pool[1966]: Color3ubv (offset 20) */ + /* _mesa_function_pool[1927]: Color3ubv (offset 20) */ "p\0" "glColor3ubv\0" "\0" - /* _mesa_function_pool[1981]: GetQueryObjectivARB (will be remapped) */ + /* _mesa_function_pool[1942]: GetQueryObjectivARB (will be remapped) */ "iip\0" "glGetQueryObjectiv\0" "glGetQueryObjectivARB\0" "\0" - /* _mesa_function_pool[2027]: Vertex3dv (offset 135) */ + /* _mesa_function_pool[1988]: Vertex3dv (offset 135) */ "p\0" "glVertex3dv\0" "\0" - /* _mesa_function_pool[2042]: ReplacementCodeuiTexCoord2fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[2003]: ReplacementCodeuiTexCoord2fVertex3fvSUN (dynamic) */ "ppp\0" "glReplacementCodeuiTexCoord2fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[2089]: CompressedTexSubImage2DARB (will be remapped) */ + /* _mesa_function_pool[2050]: CompressedTexSubImage2DARB (will be remapped) */ "iiiiiiiip\0" "glCompressedTexSubImage2D\0" "glCompressedTexSubImage2DARB\0" "\0" - /* _mesa_function_pool[2155]: CombinerOutputNV (will be remapped) */ + /* _mesa_function_pool[2116]: CombinerOutputNV (will be remapped) */ "iiiiiiiiii\0" "glCombinerOutputNV\0" "\0" - /* _mesa_function_pool[2186]: VertexAttribs3fvNV (will be remapped) */ + /* _mesa_function_pool[2147]: VertexAttribs3fvNV (will be remapped) */ "iip\0" "glVertexAttribs3fvNV\0" "\0" - /* _mesa_function_pool[2212]: Uniform2fARB (will be remapped) */ + /* _mesa_function_pool[2173]: Uniform2fARB (will be remapped) */ "iff\0" "glUniform2f\0" "glUniform2fARB\0" "\0" - /* _mesa_function_pool[2244]: LightModeliv (offset 166) */ + /* _mesa_function_pool[2205]: LightModeliv (offset 166) */ "ip\0" "glLightModeliv\0" "\0" - /* _mesa_function_pool[2263]: VertexAttrib1svARB (will be remapped) */ + /* _mesa_function_pool[2224]: VertexAttrib1svARB (will be remapped) */ "ip\0" "glVertexAttrib1sv\0" "glVertexAttrib1svARB\0" "\0" - /* _mesa_function_pool[2306]: VertexAttribs1dvNV (will be remapped) */ + /* _mesa_function_pool[2267]: VertexAttribs1dvNV (will be remapped) */ "iip\0" "glVertexAttribs1dvNV\0" "\0" - /* _mesa_function_pool[2332]: Uniform2ivARB (will be remapped) */ + /* _mesa_function_pool[2293]: Uniform2ivARB (will be remapped) */ "iip\0" "glUniform2iv\0" "glUniform2ivARB\0" "\0" - /* _mesa_function_pool[2366]: GetImageTransformParameterfvHP (dynamic) */ + /* _mesa_function_pool[2327]: GetImageTransformParameterfvHP (dynamic) */ "iip\0" "glGetImageTransformParameterfvHP\0" "\0" - /* _mesa_function_pool[2404]: Normal3bv (offset 53) */ + /* _mesa_function_pool[2365]: Normal3bv (offset 53) */ "p\0" "glNormal3bv\0" "\0" - /* _mesa_function_pool[2419]: TexGeniv (offset 193) */ + /* _mesa_function_pool[2380]: TexGeniv (offset 193) */ "iip\0" "glTexGeniv\0" "\0" - /* _mesa_function_pool[2435]: WeightubvARB (dynamic) */ + /* _mesa_function_pool[2396]: WeightubvARB (dynamic) */ "ip\0" "glWeightubvARB\0" "\0" - /* _mesa_function_pool[2454]: VertexAttrib1fvNV (will be remapped) */ + /* _mesa_function_pool[2415]: VertexAttrib1fvNV (will be remapped) */ "ip\0" "glVertexAttrib1fvNV\0" "\0" - /* _mesa_function_pool[2478]: Vertex3iv (offset 139) */ + /* _mesa_function_pool[2439]: Vertex3iv (offset 139) */ "p\0" "glVertex3iv\0" "\0" - /* _mesa_function_pool[2493]: CopyConvolutionFilter1D (offset 354) */ + /* _mesa_function_pool[2454]: CopyConvolutionFilter1D (offset 354) */ "iiiii\0" "glCopyConvolutionFilter1D\0" "glCopyConvolutionFilter1DEXT\0" "\0" - /* _mesa_function_pool[2555]: VertexAttribI1uiEXT (will be remapped) */ + /* _mesa_function_pool[2516]: VertexAttribI1uiEXT (will be remapped) */ "ii\0" "glVertexAttribI1uiEXT\0" "glVertexAttribI1ui\0" "\0" - /* _mesa_function_pool[2600]: ReplacementCodeuiNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[2561]: ReplacementCodeuiNormal3fVertex3fSUN (dynamic) */ "iffffff\0" "glReplacementCodeuiNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[2648]: DeleteSync (will be remapped) */ + /* _mesa_function_pool[2609]: DeleteSync (will be remapped) */ "i\0" "glDeleteSync\0" "\0" - /* _mesa_function_pool[2664]: FragmentMaterialfvSGIX (dynamic) */ + /* _mesa_function_pool[2625]: FragmentMaterialfvSGIX (dynamic) */ "iip\0" "glFragmentMaterialfvSGIX\0" "\0" - /* _mesa_function_pool[2694]: BlendColor (offset 336) */ + /* _mesa_function_pool[2655]: BlendColor (offset 336) */ "ffff\0" "glBlendColor\0" "glBlendColorEXT\0" "\0" - /* _mesa_function_pool[2729]: UniformMatrix4fvARB (will be remapped) */ + /* _mesa_function_pool[2690]: UniformMatrix4fvARB (will be remapped) */ "iiip\0" "glUniformMatrix4fv\0" "glUniformMatrix4fvARB\0" "\0" - /* _mesa_function_pool[2776]: DeleteVertexArraysAPPLE (will be remapped) */ + /* _mesa_function_pool[2737]: DeleteVertexArraysAPPLE (will be remapped) */ "ip\0" "glDeleteVertexArrays\0" "glDeleteVertexArraysAPPLE\0" "\0" - /* _mesa_function_pool[2827]: TexBuffer (will be remapped) */ + /* _mesa_function_pool[2788]: TexBuffer (will be remapped) */ "iii\0" "glTexBuffer\0" "\0" - /* _mesa_function_pool[2844]: ReadInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[2805]: ReadInstrumentsSGIX (dynamic) */ "i\0" "glReadInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[2869]: CallLists (offset 3) */ + /* _mesa_function_pool[2830]: CallLists (offset 3) */ "iip\0" "glCallLists\0" "\0" - /* _mesa_function_pool[2886]: UniformMatrix2x4fv (will be remapped) */ + /* _mesa_function_pool[2847]: UniformMatrix2x4fv (will be remapped) */ "iiip\0" "glUniformMatrix2x4fv\0" "\0" - /* _mesa_function_pool[2913]: Color4ubVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[2874]: Color4ubVertex3fvSUN (dynamic) */ "pp\0" "glColor4ubVertex3fvSUN\0" "\0" - /* _mesa_function_pool[2940]: Normal3iv (offset 59) */ + /* _mesa_function_pool[2901]: Normal3iv (offset 59) */ "p\0" "glNormal3iv\0" "\0" - /* _mesa_function_pool[2955]: PassThrough (offset 199) */ + /* _mesa_function_pool[2916]: PassThrough (offset 199) */ "f\0" "glPassThrough\0" "\0" - /* _mesa_function_pool[2972]: GetVertexAttribIivEXT (will be remapped) */ + /* _mesa_function_pool[2933]: GetVertexAttribIivEXT (will be remapped) */ "iip\0" "glGetVertexAttribIivEXT\0" "glGetVertexAttribIiv\0" "\0" - /* _mesa_function_pool[3022]: TexParameterIivEXT (will be remapped) */ + /* _mesa_function_pool[2983]: TexParameterIivEXT (will be remapped) */ "iip\0" "glTexParameterIivEXT\0" "glTexParameterIiv\0" "\0" - /* _mesa_function_pool[3066]: FramebufferTextureLayerEXT (will be remapped) */ + /* _mesa_function_pool[3027]: FramebufferTextureLayerEXT (will be remapped) */ "iiiii\0" "glFramebufferTextureLayer\0" "glFramebufferTextureLayerEXT\0" "\0" - /* _mesa_function_pool[3128]: GetListParameterfvSGIX (dynamic) */ + /* _mesa_function_pool[3089]: GetListParameterfvSGIX (dynamic) */ "iip\0" "glGetListParameterfvSGIX\0" "\0" - /* _mesa_function_pool[3158]: Viewport (offset 305) */ + /* _mesa_function_pool[3119]: Viewport (offset 305) */ "iiii\0" "glViewport\0" "\0" - /* _mesa_function_pool[3175]: VertexAttrib4NusvARB (will be remapped) */ + /* _mesa_function_pool[3136]: VertexAttrib4NusvARB (will be remapped) */ "ip\0" "glVertexAttrib4Nusv\0" "glVertexAttrib4NusvARB\0" "\0" - /* _mesa_function_pool[3222]: WindowPos4svMESA (will be remapped) */ + /* _mesa_function_pool[3183]: WindowPos4svMESA (will be remapped) */ "p\0" "glWindowPos4svMESA\0" "\0" - /* _mesa_function_pool[3244]: CreateProgramObjectARB (will be remapped) */ + /* _mesa_function_pool[3205]: CreateProgramObjectARB (will be remapped) */ "\0" "glCreateProgramObjectARB\0" "\0" - /* _mesa_function_pool[3271]: DeleteTransformFeedbacks (will be remapped) */ + /* _mesa_function_pool[3232]: DeleteTransformFeedbacks (will be remapped) */ "ip\0" "glDeleteTransformFeedbacks\0" "\0" - /* _mesa_function_pool[3302]: UniformMatrix4x3fv (will be remapped) */ + /* _mesa_function_pool[3263]: UniformMatrix4x3fv (will be remapped) */ "iiip\0" "glUniformMatrix4x3fv\0" "\0" - /* _mesa_function_pool[3329]: PrioritizeTextures (offset 331) */ + /* _mesa_function_pool[3290]: PrioritizeTextures (offset 331) */ "ipp\0" "glPrioritizeTextures\0" "glPrioritizeTexturesEXT\0" "\0" - /* _mesa_function_pool[3379]: VertexAttribI3uiEXT (will be remapped) */ + /* _mesa_function_pool[3340]: VertexAttribI3uiEXT (will be remapped) */ "iiii\0" "glVertexAttribI3uiEXT\0" "glVertexAttribI3ui\0" "\0" - /* _mesa_function_pool[3426]: AsyncMarkerSGIX (dynamic) */ + /* _mesa_function_pool[3387]: AsyncMarkerSGIX (dynamic) */ "i\0" "glAsyncMarkerSGIX\0" "\0" - /* _mesa_function_pool[3447]: GlobalAlphaFactorubSUN (dynamic) */ + /* _mesa_function_pool[3408]: GlobalAlphaFactorubSUN (dynamic) */ "i\0" "glGlobalAlphaFactorubSUN\0" "\0" - /* _mesa_function_pool[3475]: ClearColorIuiEXT (will be remapped) */ + /* _mesa_function_pool[3436]: ClearColorIuiEXT (will be remapped) */ "iiii\0" "glClearColorIuiEXT\0" "\0" - /* _mesa_function_pool[3500]: ClearDebugLogMESA (dynamic) */ + /* _mesa_function_pool[3461]: ClearDebugLogMESA (dynamic) */ "iii\0" "glClearDebugLogMESA\0" "\0" - /* _mesa_function_pool[3525]: Uniform4uiEXT (will be remapped) */ + /* _mesa_function_pool[3486]: Uniform4uiEXT (will be remapped) */ "iiiii\0" "glUniform4uiEXT\0" "glUniform4ui\0" "\0" - /* _mesa_function_pool[3561]: ResetHistogram (offset 369) */ + /* _mesa_function_pool[3522]: ResetHistogram (offset 369) */ "i\0" "glResetHistogram\0" "glResetHistogramEXT\0" "\0" - /* _mesa_function_pool[3601]: GetProgramNamedParameterfvNV (will be remapped) */ + /* _mesa_function_pool[3562]: GetProgramNamedParameterfvNV (will be remapped) */ "iipp\0" "glGetProgramNamedParameterfvNV\0" "\0" - /* _mesa_function_pool[3638]: PointParameterfEXT (will be remapped) */ + /* _mesa_function_pool[3599]: PointParameterfEXT (will be remapped) */ "if\0" "glPointParameterf\0" "glPointParameterfARB\0" "glPointParameterfEXT\0" "glPointParameterfSGIS\0" "\0" - /* _mesa_function_pool[3724]: LoadIdentityDeformationMapSGIX (dynamic) */ + /* _mesa_function_pool[3685]: LoadIdentityDeformationMapSGIX (dynamic) */ "i\0" "glLoadIdentityDeformationMapSGIX\0" "\0" - /* _mesa_function_pool[3760]: GenFencesNV (will be remapped) */ + /* _mesa_function_pool[3721]: GenFencesNV (will be remapped) */ "ip\0" "glGenFencesNV\0" "\0" - /* _mesa_function_pool[3778]: ImageTransformParameterfHP (dynamic) */ + /* _mesa_function_pool[3739]: ImageTransformParameterfHP (dynamic) */ "iif\0" "glImageTransformParameterfHP\0" "\0" - /* _mesa_function_pool[3812]: MatrixIndexusvARB (dynamic) */ + /* _mesa_function_pool[3773]: MatrixIndexusvARB (dynamic) */ "ip\0" "glMatrixIndexusvARB\0" "\0" - /* _mesa_function_pool[3836]: DrawElementsBaseVertex (will be remapped) */ + /* _mesa_function_pool[3797]: DrawElementsBaseVertex (will be remapped) */ "iiipi\0" "glDrawElementsBaseVertex\0" "\0" - /* _mesa_function_pool[3868]: DisableVertexAttribArrayARB (will be remapped) */ + /* _mesa_function_pool[3829]: DisableVertexAttribArrayARB (will be remapped) */ "i\0" "glDisableVertexAttribArray\0" "glDisableVertexAttribArrayARB\0" "\0" - /* _mesa_function_pool[3928]: TexCoord2sv (offset 109) */ + /* _mesa_function_pool[3889]: TexCoord2sv (offset 109) */ "p\0" "glTexCoord2sv\0" "\0" - /* _mesa_function_pool[3945]: Vertex4dv (offset 143) */ + /* _mesa_function_pool[3906]: Vertex4dv (offset 143) */ "p\0" "glVertex4dv\0" "\0" - /* _mesa_function_pool[3960]: StencilMaskSeparate (will be remapped) */ + /* _mesa_function_pool[3921]: StencilMaskSeparate (will be remapped) */ "ii\0" "glStencilMaskSeparate\0" "\0" - /* _mesa_function_pool[3986]: ProgramLocalParameter4dARB (will be remapped) */ + /* _mesa_function_pool[3947]: ProgramLocalParameter4dARB (will be remapped) */ "iidddd\0" "glProgramLocalParameter4dARB\0" "\0" - /* _mesa_function_pool[4023]: CompressedTexImage3DARB (will be remapped) */ + /* _mesa_function_pool[3984]: CompressedTexImage3DARB (will be remapped) */ "iiiiiiiip\0" "glCompressedTexImage3D\0" "glCompressedTexImage3DARB\0" "\0" - /* _mesa_function_pool[4083]: Color3sv (offset 18) */ + /* _mesa_function_pool[4044]: Color3sv (offset 18) */ "p\0" "glColor3sv\0" "\0" - /* _mesa_function_pool[4097]: GetConvolutionParameteriv (offset 358) */ + /* _mesa_function_pool[4058]: GetConvolutionParameteriv (offset 358) */ "iip\0" "glGetConvolutionParameteriv\0" "glGetConvolutionParameterivEXT\0" "\0" - /* _mesa_function_pool[4161]: VertexAttrib1fARB (will be remapped) */ + /* _mesa_function_pool[4122]: DeleteSamplers (will be remapped) */ + "ip\0" + "glDeleteSamplers\0" + "\0" + /* _mesa_function_pool[4143]: VertexAttrib1fARB (will be remapped) */ "if\0" "glVertexAttrib1f\0" "glVertexAttrib1fARB\0" "\0" - /* _mesa_function_pool[4202]: Vertex2dv (offset 127) */ + /* _mesa_function_pool[4184]: Vertex2dv (offset 127) */ "p\0" "glVertex2dv\0" "\0" - /* _mesa_function_pool[4217]: TestFenceNV (will be remapped) */ + /* _mesa_function_pool[4199]: TestFenceNV (will be remapped) */ "i\0" "glTestFenceNV\0" "\0" - /* _mesa_function_pool[4234]: MultiTexCoord1fvARB (offset 379) */ + /* _mesa_function_pool[4216]: GetVertexAttribIuivEXT (will be remapped) */ + "iip\0" + "glGetVertexAttribIuivEXT\0" + "glGetVertexAttribIuiv\0" + "\0" + /* _mesa_function_pool[4268]: MultiTexCoord1fvARB (offset 379) */ "ip\0" "glMultiTexCoord1fv\0" "glMultiTexCoord1fvARB\0" "\0" - /* _mesa_function_pool[4279]: TexCoord3iv (offset 115) */ + /* _mesa_function_pool[4313]: TexCoord3iv (offset 115) */ "p\0" "glTexCoord3iv\0" "\0" - /* _mesa_function_pool[4296]: Uniform2uivEXT (will be remapped) */ + /* _mesa_function_pool[4330]: Uniform2uivEXT (will be remapped) */ "iip\0" "glUniform2uivEXT\0" "glUniform2uiv\0" "\0" - /* _mesa_function_pool[4332]: ColorFragmentOp2ATI (will be remapped) */ + /* _mesa_function_pool[4366]: ColorFragmentOp2ATI (will be remapped) */ "iiiiiiiiii\0" "glColorFragmentOp2ATI\0" "\0" - /* _mesa_function_pool[4366]: SecondaryColorPointerListIBM (dynamic) */ + /* _mesa_function_pool[4400]: SecondaryColorPointerListIBM (dynamic) */ "iiipi\0" "glSecondaryColorPointerListIBM\0" "\0" - /* _mesa_function_pool[4404]: GetPixelTexGenParameterivSGIS (will be remapped) */ + /* _mesa_function_pool[4438]: GetPixelTexGenParameterivSGIS (will be remapped) */ "ip\0" "glGetPixelTexGenParameterivSGIS\0" "\0" - /* _mesa_function_pool[4440]: Color3fv (offset 14) */ + /* _mesa_function_pool[4474]: Color3fv (offset 14) */ "p\0" "glColor3fv\0" "\0" - /* _mesa_function_pool[4454]: VertexAttrib4fNV (will be remapped) */ + /* _mesa_function_pool[4488]: VertexAttrib4fNV (will be remapped) */ "iffff\0" "glVertexAttrib4fNV\0" "\0" - /* _mesa_function_pool[4480]: ReplacementCodeubSUN (dynamic) */ + /* _mesa_function_pool[4514]: ReplacementCodeubSUN (dynamic) */ "i\0" "glReplacementCodeubSUN\0" "\0" - /* _mesa_function_pool[4506]: FinishAsyncSGIX (dynamic) */ + /* _mesa_function_pool[4540]: FinishAsyncSGIX (dynamic) */ "p\0" "glFinishAsyncSGIX\0" "\0" - /* _mesa_function_pool[4527]: GetDebugLogMESA (dynamic) */ + /* _mesa_function_pool[4561]: GetDebugLogMESA (dynamic) */ "iiiipp\0" "glGetDebugLogMESA\0" "\0" - /* _mesa_function_pool[4553]: FogCoorddEXT (will be remapped) */ + /* _mesa_function_pool[4587]: FogCoorddEXT (will be remapped) */ "d\0" "glFogCoordd\0" "glFogCoorddEXT\0" "\0" - /* _mesa_function_pool[4583]: BeginConditionalRenderNV (will be remapped) */ + /* _mesa_function_pool[4617]: BeginConditionalRenderNV (will be remapped) */ "ii\0" "glBeginConditionalRenderNV\0" "glBeginConditionalRender\0" "\0" - /* _mesa_function_pool[4639]: Color4ubVertex3fSUN (dynamic) */ + /* _mesa_function_pool[4673]: Color4ubVertex3fSUN (dynamic) */ "iiiifff\0" "glColor4ubVertex3fSUN\0" "\0" - /* _mesa_function_pool[4670]: FogCoordfEXT (will be remapped) */ + /* _mesa_function_pool[4704]: FogCoordfEXT (will be remapped) */ "f\0" "glFogCoordf\0" "glFogCoordfEXT\0" "\0" - /* _mesa_function_pool[4700]: PointSize (offset 173) */ + /* _mesa_function_pool[4734]: PointSize (offset 173) */ "f\0" "glPointSize\0" "\0" - /* _mesa_function_pool[4715]: VertexAttribI2uivEXT (will be remapped) */ + /* _mesa_function_pool[4749]: VertexAttribI2uivEXT (will be remapped) */ "ip\0" "glVertexAttribI2uivEXT\0" "glVertexAttribI2uiv\0" "\0" - /* _mesa_function_pool[4762]: TexCoord2fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[4796]: TexCoord2fVertex3fSUN (dynamic) */ "fffff\0" "glTexCoord2fVertex3fSUN\0" "\0" - /* _mesa_function_pool[4793]: PopName (offset 200) */ + /* _mesa_function_pool[4827]: PopName (offset 200) */ "\0" "glPopName\0" "\0" - /* _mesa_function_pool[4805]: GlobalAlphaFactoriSUN (dynamic) */ + /* _mesa_function_pool[4839]: GetSamplerParameterfv (will be remapped) */ + "iip\0" + "glGetSamplerParameterfv\0" + "\0" + /* _mesa_function_pool[4868]: GlobalAlphaFactoriSUN (dynamic) */ "i\0" "glGlobalAlphaFactoriSUN\0" "\0" - /* _mesa_function_pool[4832]: VertexAttrib2dNV (will be remapped) */ + /* _mesa_function_pool[4895]: VertexAttrib2dNV (will be remapped) */ "idd\0" "glVertexAttrib2dNV\0" "\0" - /* _mesa_function_pool[4856]: GetProgramInfoLog (will be remapped) */ + /* _mesa_function_pool[4919]: GetProgramInfoLog (will be remapped) */ "iipp\0" "glGetProgramInfoLog\0" "\0" - /* _mesa_function_pool[4882]: VertexAttrib4NbvARB (will be remapped) */ + /* _mesa_function_pool[4945]: VertexAttrib4NbvARB (will be remapped) */ "ip\0" "glVertexAttrib4Nbv\0" "glVertexAttrib4NbvARB\0" "\0" - /* _mesa_function_pool[4927]: GetActiveAttribARB (will be remapped) */ + /* _mesa_function_pool[4990]: GetActiveAttribARB (will be remapped) */ "iiipppp\0" "glGetActiveAttrib\0" "glGetActiveAttribARB\0" "\0" - /* _mesa_function_pool[4975]: Vertex4sv (offset 149) */ + /* _mesa_function_pool[5038]: Vertex4sv (offset 149) */ "p\0" "glVertex4sv\0" "\0" - /* _mesa_function_pool[4990]: VertexAttrib4ubNV (will be remapped) */ + /* _mesa_function_pool[5053]: VertexAttrib4ubNV (will be remapped) */ "iiiii\0" "glVertexAttrib4ubNV\0" "\0" - /* _mesa_function_pool[5017]: ClampColor (will be remapped) */ + /* _mesa_function_pool[5080]: ClampColor (will be remapped) */ "ii\0" "glClampColor\0" "\0" - /* _mesa_function_pool[5034]: TextureRangeAPPLE (will be remapped) */ + /* _mesa_function_pool[5097]: TextureRangeAPPLE (will be remapped) */ "iip\0" "glTextureRangeAPPLE\0" "\0" - /* _mesa_function_pool[5059]: GetTexEnvfv (offset 276) */ + /* _mesa_function_pool[5122]: GetTexEnvfv (offset 276) */ "iip\0" "glGetTexEnvfv\0" "\0" - /* _mesa_function_pool[5078]: BindTransformFeedback (will be remapped) */ + /* _mesa_function_pool[5141]: BindTransformFeedback (will be remapped) */ "ii\0" "glBindTransformFeedback\0" "\0" - /* _mesa_function_pool[5106]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[5169]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ "ffffffffffff\0" "glTexCoord2fColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[5159]: Indexub (offset 315) */ + /* _mesa_function_pool[5222]: Indexub (offset 315) */ "i\0" "glIndexub\0" "\0" - /* _mesa_function_pool[5172]: ColorMaskIndexedEXT (will be remapped) */ - "iiiii\0" - "glColorMaskIndexedEXT\0" - "glColorMaski\0" - "\0" - /* _mesa_function_pool[5214]: TexEnvi (offset 186) */ + /* _mesa_function_pool[5235]: TexEnvi (offset 186) */ "iii\0" "glTexEnvi\0" "\0" - /* _mesa_function_pool[5229]: GetClipPlane (offset 259) */ + /* _mesa_function_pool[5250]: GetClipPlane (offset 259) */ "ip\0" "glGetClipPlane\0" "\0" - /* _mesa_function_pool[5248]: CombinerParameterfvNV (will be remapped) */ + /* _mesa_function_pool[5269]: CombinerParameterfvNV (will be remapped) */ "ip\0" "glCombinerParameterfvNV\0" "\0" - /* _mesa_function_pool[5276]: VertexAttribs3dvNV (will be remapped) */ + /* _mesa_function_pool[5297]: VertexAttribs3dvNV (will be remapped) */ "iip\0" "glVertexAttribs3dvNV\0" "\0" - /* _mesa_function_pool[5302]: VertexAttribI2uiEXT (will be remapped) */ + /* _mesa_function_pool[5323]: VertexAttribI2uiEXT (will be remapped) */ "iii\0" "glVertexAttribI2uiEXT\0" "glVertexAttribI2ui\0" "\0" - /* _mesa_function_pool[5348]: VertexAttribs4fvNV (will be remapped) */ + /* _mesa_function_pool[5369]: VertexAttribs4fvNV (will be remapped) */ "iip\0" "glVertexAttribs4fvNV\0" "\0" - /* _mesa_function_pool[5374]: VertexArrayRangeNV (will be remapped) */ + /* _mesa_function_pool[5395]: VertexArrayRangeNV (will be remapped) */ "ip\0" "glVertexArrayRangeNV\0" "\0" - /* _mesa_function_pool[5399]: FragmentLightiSGIX (dynamic) */ + /* _mesa_function_pool[5420]: FragmentLightiSGIX (dynamic) */ "iii\0" "glFragmentLightiSGIX\0" "\0" - /* _mesa_function_pool[5425]: PolygonOffsetEXT (will be remapped) */ + /* _mesa_function_pool[5446]: PolygonOffsetEXT (will be remapped) */ "ff\0" "glPolygonOffsetEXT\0" "\0" - /* _mesa_function_pool[5448]: VertexAttribI4uivEXT (will be remapped) */ + /* _mesa_function_pool[5469]: VertexAttribI4uivEXT (will be remapped) */ "ip\0" "glVertexAttribI4uivEXT\0" "glVertexAttribI4uiv\0" "\0" - /* _mesa_function_pool[5495]: PollAsyncSGIX (dynamic) */ + /* _mesa_function_pool[5516]: PollAsyncSGIX (dynamic) */ "p\0" "glPollAsyncSGIX\0" "\0" - /* _mesa_function_pool[5514]: DeleteFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[5535]: DeleteFragmentShaderATI (will be remapped) */ "i\0" "glDeleteFragmentShaderATI\0" "\0" - /* _mesa_function_pool[5543]: Scaled (offset 301) */ + /* _mesa_function_pool[5564]: Scaled (offset 301) */ "ddd\0" "glScaled\0" "\0" - /* _mesa_function_pool[5557]: ResumeTransformFeedback (will be remapped) */ + /* _mesa_function_pool[5578]: ResumeTransformFeedback (will be remapped) */ "\0" "glResumeTransformFeedback\0" "\0" - /* _mesa_function_pool[5585]: Scalef (offset 302) */ + /* _mesa_function_pool[5606]: Scalef (offset 302) */ "fff\0" "glScalef\0" "\0" - /* _mesa_function_pool[5599]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[5620]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */ "ppp\0" "glTexCoord2fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[5637]: MultTransposeMatrixdARB (will be remapped) */ + /* _mesa_function_pool[5658]: ProgramEnvParameters4fvEXT (will be remapped) */ + "iiip\0" + "glProgramEnvParameters4fvEXT\0" + "\0" + /* _mesa_function_pool[5693]: MultTransposeMatrixdARB (will be remapped) */ "p\0" "glMultTransposeMatrixd\0" "glMultTransposeMatrixdARB\0" "\0" - /* _mesa_function_pool[5689]: ObjectUnpurgeableAPPLE (will be remapped) */ + /* _mesa_function_pool[5745]: ColorMaskIndexedEXT (will be remapped) */ + "iiiii\0" + "glColorMaskIndexedEXT\0" + "glColorMaski\0" + "\0" + /* _mesa_function_pool[5787]: ObjectUnpurgeableAPPLE (will be remapped) */ "iii\0" "glObjectUnpurgeableAPPLE\0" "\0" - /* _mesa_function_pool[5719]: AlphaFunc (offset 240) */ + /* _mesa_function_pool[5817]: AlphaFunc (offset 240) */ "if\0" "glAlphaFunc\0" "\0" - /* _mesa_function_pool[5735]: WindowPos2svMESA (will be remapped) */ + /* _mesa_function_pool[5833]: WindowPos2svMESA (will be remapped) */ "p\0" "glWindowPos2sv\0" "glWindowPos2svARB\0" "glWindowPos2svMESA\0" "\0" - /* _mesa_function_pool[5790]: EdgeFlag (offset 41) */ + /* _mesa_function_pool[5888]: EdgeFlag (offset 41) */ "i\0" "glEdgeFlag\0" "\0" - /* _mesa_function_pool[5804]: TexCoord2iv (offset 107) */ + /* _mesa_function_pool[5902]: TexCoord2iv (offset 107) */ "p\0" "glTexCoord2iv\0" "\0" - /* _mesa_function_pool[5821]: CompressedTexImage1DARB (will be remapped) */ + /* _mesa_function_pool[5919]: CompressedTexImage1DARB (will be remapped) */ "iiiiiip\0" "glCompressedTexImage1D\0" "glCompressedTexImage1DARB\0" "\0" - /* _mesa_function_pool[5879]: Rotated (offset 299) */ + /* _mesa_function_pool[5977]: Rotated (offset 299) */ "dddd\0" "glRotated\0" "\0" - /* _mesa_function_pool[5895]: GetTexParameterIuivEXT (will be remapped) */ + /* _mesa_function_pool[5993]: GetTexParameterIuivEXT (will be remapped) */ "iip\0" "glGetTexParameterIuivEXT\0" "glGetTexParameterIuiv\0" "\0" - /* _mesa_function_pool[5947]: VertexAttrib2sNV (will be remapped) */ + /* _mesa_function_pool[6045]: VertexAttrib2sNV (will be remapped) */ "iii\0" "glVertexAttrib2sNV\0" "\0" - /* _mesa_function_pool[5971]: ReadPixels (offset 256) */ + /* _mesa_function_pool[6069]: ReadPixels (offset 256) */ "iiiiiip\0" "glReadPixels\0" "\0" - /* _mesa_function_pool[5993]: EdgeFlagv (offset 42) */ + /* _mesa_function_pool[6091]: EdgeFlagv (offset 42) */ "p\0" "glEdgeFlagv\0" "\0" - /* _mesa_function_pool[6008]: NormalPointerListIBM (dynamic) */ + /* _mesa_function_pool[6106]: NormalPointerListIBM (dynamic) */ "iipi\0" "glNormalPointerListIBM\0" "\0" - /* _mesa_function_pool[6037]: IndexPointerEXT (will be remapped) */ + /* _mesa_function_pool[6135]: IndexPointerEXT (will be remapped) */ "iiip\0" "glIndexPointerEXT\0" "\0" - /* _mesa_function_pool[6061]: Color4iv (offset 32) */ + /* _mesa_function_pool[6159]: Color4iv (offset 32) */ "p\0" "glColor4iv\0" "\0" - /* _mesa_function_pool[6075]: TexParameterf (offset 178) */ + /* _mesa_function_pool[6173]: TexParameterf (offset 178) */ "iif\0" "glTexParameterf\0" "\0" - /* _mesa_function_pool[6096]: TexParameteri (offset 180) */ + /* _mesa_function_pool[6194]: TexParameteri (offset 180) */ "iii\0" "glTexParameteri\0" "\0" - /* _mesa_function_pool[6117]: NormalPointerEXT (will be remapped) */ + /* _mesa_function_pool[6215]: NormalPointerEXT (will be remapped) */ "iiip\0" "glNormalPointerEXT\0" "\0" - /* _mesa_function_pool[6142]: MultiTexCoord3dARB (offset 392) */ + /* _mesa_function_pool[6240]: MultiTexCoord3dARB (offset 392) */ "iddd\0" "glMultiTexCoord3d\0" "glMultiTexCoord3dARB\0" "\0" - /* _mesa_function_pool[6187]: MultiTexCoord2iARB (offset 388) */ + /* _mesa_function_pool[6285]: MultiTexCoord2iARB (offset 388) */ "iii\0" "glMultiTexCoord2i\0" "glMultiTexCoord2iARB\0" "\0" - /* _mesa_function_pool[6231]: DrawPixels (offset 257) */ + /* _mesa_function_pool[6329]: DrawPixels (offset 257) */ "iiiip\0" "glDrawPixels\0" "\0" - /* _mesa_function_pool[6251]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[6349]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */ "iffffffff\0" "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[6311]: MultiTexCoord2svARB (offset 391) */ + /* _mesa_function_pool[6409]: MultiTexCoord2svARB (offset 391) */ "ip\0" "glMultiTexCoord2sv\0" "glMultiTexCoord2svARB\0" "\0" - /* _mesa_function_pool[6356]: ReplacementCodeubvSUN (dynamic) */ + /* _mesa_function_pool[6454]: ReplacementCodeubvSUN (dynamic) */ "p\0" "glReplacementCodeubvSUN\0" "\0" - /* _mesa_function_pool[6383]: Uniform3iARB (will be remapped) */ + /* _mesa_function_pool[6481]: Uniform3iARB (will be remapped) */ "iiii\0" "glUniform3i\0" "glUniform3iARB\0" "\0" - /* _mesa_function_pool[6416]: DrawTransformFeedback (will be remapped) */ + /* _mesa_function_pool[6514]: DrawTransformFeedback (will be remapped) */ "ii\0" "glDrawTransformFeedback\0" "\0" - /* _mesa_function_pool[6444]: DrawElementsInstancedARB (will be remapped) */ + /* _mesa_function_pool[6542]: DrawElementsInstancedARB (will be remapped) */ "iiipi\0" "glDrawElementsInstancedARB\0" "glDrawElementsInstancedEXT\0" "glDrawElementsInstanced\0" "\0" - /* _mesa_function_pool[6529]: GetShaderInfoLog (will be remapped) */ + /* _mesa_function_pool[6627]: GetShaderInfoLog (will be remapped) */ "iipp\0" "glGetShaderInfoLog\0" "\0" - /* _mesa_function_pool[6554]: WeightivARB (dynamic) */ + /* _mesa_function_pool[6652]: WeightivARB (dynamic) */ "ip\0" "glWeightivARB\0" "\0" - /* _mesa_function_pool[6572]: PollInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[6670]: PollInstrumentsSGIX (dynamic) */ "p\0" "glPollInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[6597]: GlobalAlphaFactordSUN (dynamic) */ + /* _mesa_function_pool[6695]: GlobalAlphaFactordSUN (dynamic) */ "d\0" "glGlobalAlphaFactordSUN\0" "\0" - /* _mesa_function_pool[6624]: GetFinalCombinerInputParameterfvNV (will be remapped) */ + /* _mesa_function_pool[6722]: GetFinalCombinerInputParameterfvNV (will be remapped) */ "iip\0" "glGetFinalCombinerInputParameterfvNV\0" "\0" - /* _mesa_function_pool[6666]: GenerateMipmapEXT (will be remapped) */ + /* _mesa_function_pool[6764]: GenerateMipmapEXT (will be remapped) */ "i\0" "glGenerateMipmap\0" "glGenerateMipmapEXT\0" "\0" - /* _mesa_function_pool[6706]: GenLists (offset 5) */ + /* _mesa_function_pool[6804]: GenLists (offset 5) */ "i\0" "glGenLists\0" "\0" - /* _mesa_function_pool[6720]: DepthRangef (will be remapped) */ + /* _mesa_function_pool[6818]: DepthRangef (will be remapped) */ "ff\0" "glDepthRangef\0" "\0" - /* _mesa_function_pool[6738]: GetMapAttribParameterivNV (dynamic) */ + /* _mesa_function_pool[6836]: GetMapAttribParameterivNV (dynamic) */ "iiip\0" "glGetMapAttribParameterivNV\0" "\0" - /* _mesa_function_pool[6772]: CreateShaderObjectARB (will be remapped) */ + /* _mesa_function_pool[6870]: CreateShaderObjectARB (will be remapped) */ "i\0" "glCreateShaderObjectARB\0" "\0" - /* _mesa_function_pool[6799]: GetSharpenTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[6897]: GetSharpenTexFuncSGIS (dynamic) */ "ip\0" "glGetSharpenTexFuncSGIS\0" "\0" - /* _mesa_function_pool[6827]: BufferDataARB (will be remapped) */ + /* _mesa_function_pool[6925]: BufferDataARB (will be remapped) */ "iipi\0" "glBufferData\0" "glBufferDataARB\0" "\0" - /* _mesa_function_pool[6862]: FlushVertexArrayRangeNV (will be remapped) */ + /* _mesa_function_pool[6960]: FlushVertexArrayRangeNV (will be remapped) */ "\0" "glFlushVertexArrayRangeNV\0" "\0" - /* _mesa_function_pool[6890]: MapGrid2d (offset 226) */ + /* _mesa_function_pool[6988]: MapGrid2d (offset 226) */ "iddidd\0" "glMapGrid2d\0" "\0" - /* _mesa_function_pool[6910]: MapGrid2f (offset 227) */ + /* _mesa_function_pool[7008]: MapGrid2f (offset 227) */ "iffiff\0" "glMapGrid2f\0" "\0" - /* _mesa_function_pool[6930]: SampleMapATI (will be remapped) */ + /* _mesa_function_pool[7028]: SampleMapATI (will be remapped) */ "iii\0" "glSampleMapATI\0" "\0" - /* _mesa_function_pool[6950]: VertexPointerEXT (will be remapped) */ + /* _mesa_function_pool[7048]: VertexPointerEXT (will be remapped) */ "iiiip\0" "glVertexPointerEXT\0" "\0" - /* _mesa_function_pool[6976]: GetTexFilterFuncSGIS (dynamic) */ + /* _mesa_function_pool[7074]: GetTexFilterFuncSGIS (dynamic) */ "iip\0" "glGetTexFilterFuncSGIS\0" "\0" - /* _mesa_function_pool[7004]: Scissor (offset 176) */ + /* _mesa_function_pool[7102]: Scissor (offset 176) */ "iiii\0" "glScissor\0" "\0" - /* _mesa_function_pool[7020]: Fogf (offset 153) */ + /* _mesa_function_pool[7118]: Fogf (offset 153) */ "if\0" "glFogf\0" "\0" - /* _mesa_function_pool[7031]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[7129]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */ "ppp\0" "glReplacementCodeuiColor4ubVertex3fvSUN\0" "\0" - /* _mesa_function_pool[7076]: TexSubImage1D (offset 332) */ + /* _mesa_function_pool[7174]: TexSubImage1D (offset 332) */ "iiiiiip\0" "glTexSubImage1D\0" "glTexSubImage1DEXT\0" "\0" - /* _mesa_function_pool[7120]: VertexAttrib1sARB (will be remapped) */ + /* _mesa_function_pool[7218]: VertexAttrib1sARB (will be remapped) */ "ii\0" "glVertexAttrib1s\0" "glVertexAttrib1sARB\0" "\0" - /* _mesa_function_pool[7161]: FenceSync (will be remapped) */ + /* _mesa_function_pool[7259]: FenceSync (will be remapped) */ "ii\0" "glFenceSync\0" "\0" - /* _mesa_function_pool[7177]: Color4usv (offset 40) */ + /* _mesa_function_pool[7275]: Color4usv (offset 40) */ "p\0" "glColor4usv\0" "\0" - /* _mesa_function_pool[7192]: Fogi (offset 155) */ + /* _mesa_function_pool[7290]: Fogi (offset 155) */ "ii\0" "glFogi\0" "\0" - /* _mesa_function_pool[7203]: DepthRange (offset 288) */ + /* _mesa_function_pool[7301]: DepthRange (offset 288) */ "dd\0" "glDepthRange\0" "\0" - /* _mesa_function_pool[7220]: RasterPos3iv (offset 75) */ + /* _mesa_function_pool[7318]: RasterPos3iv (offset 75) */ "p\0" "glRasterPos3iv\0" "\0" - /* _mesa_function_pool[7238]: FinalCombinerInputNV (will be remapped) */ + /* _mesa_function_pool[7336]: FinalCombinerInputNV (will be remapped) */ "iiii\0" "glFinalCombinerInputNV\0" "\0" - /* _mesa_function_pool[7267]: TexCoord2i (offset 106) */ + /* _mesa_function_pool[7365]: TexCoord2i (offset 106) */ "ii\0" "glTexCoord2i\0" "\0" - /* _mesa_function_pool[7284]: PixelMapfv (offset 251) */ + /* _mesa_function_pool[7382]: PixelMapfv (offset 251) */ "iip\0" "glPixelMapfv\0" "\0" - /* _mesa_function_pool[7302]: Color4ui (offset 37) */ + /* _mesa_function_pool[7400]: Color4ui (offset 37) */ "iiii\0" "glColor4ui\0" "\0" - /* _mesa_function_pool[7319]: RasterPos3s (offset 76) */ + /* _mesa_function_pool[7417]: RasterPos3s (offset 76) */ "iii\0" "glRasterPos3s\0" "\0" - /* _mesa_function_pool[7338]: Color3usv (offset 24) */ + /* _mesa_function_pool[7436]: Color3usv (offset 24) */ "p\0" "glColor3usv\0" "\0" - /* _mesa_function_pool[7353]: FlushRasterSGIX (dynamic) */ + /* _mesa_function_pool[7451]: FlushRasterSGIX (dynamic) */ "\0" "glFlushRasterSGIX\0" "\0" - /* _mesa_function_pool[7373]: TexCoord2f (offset 104) */ + /* _mesa_function_pool[7471]: TexCoord2f (offset 104) */ "ff\0" "glTexCoord2f\0" "\0" - /* _mesa_function_pool[7390]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[7488]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */ "ifffff\0" "glReplacementCodeuiTexCoord2fVertex3fSUN\0" "\0" - /* _mesa_function_pool[7439]: TexCoord2d (offset 102) */ + /* _mesa_function_pool[7537]: TexCoord2d (offset 102) */ "dd\0" "glTexCoord2d\0" "\0" - /* _mesa_function_pool[7456]: RasterPos3d (offset 70) */ + /* _mesa_function_pool[7554]: RasterPos3d (offset 70) */ "ddd\0" "glRasterPos3d\0" "\0" - /* _mesa_function_pool[7475]: RasterPos3f (offset 72) */ + /* _mesa_function_pool[7573]: RasterPos3f (offset 72) */ "fff\0" "glRasterPos3f\0" "\0" - /* _mesa_function_pool[7494]: Uniform1fARB (will be remapped) */ + /* _mesa_function_pool[7592]: Uniform1fARB (will be remapped) */ "if\0" "glUniform1f\0" "glUniform1fARB\0" "\0" - /* _mesa_function_pool[7525]: AreTexturesResident (offset 322) */ + /* _mesa_function_pool[7623]: AreTexturesResident (offset 322) */ "ipp\0" "glAreTexturesResident\0" "glAreTexturesResidentEXT\0" "\0" - /* _mesa_function_pool[7577]: TexCoord2s (offset 108) */ + /* _mesa_function_pool[7675]: TexCoord2s (offset 108) */ "ii\0" "glTexCoord2s\0" "\0" - /* _mesa_function_pool[7594]: StencilOpSeparate (will be remapped) */ + /* _mesa_function_pool[7692]: StencilOpSeparate (will be remapped) */ "iiii\0" "glStencilOpSeparate\0" "glStencilOpSeparateATI\0" "\0" - /* _mesa_function_pool[7643]: ColorTableParameteriv (offset 341) */ + /* _mesa_function_pool[7741]: ColorTableParameteriv (offset 341) */ "iip\0" "glColorTableParameteriv\0" "glColorTableParameterivSGI\0" "\0" - /* _mesa_function_pool[7699]: FogCoordPointerListIBM (dynamic) */ + /* _mesa_function_pool[7797]: FogCoordPointerListIBM (dynamic) */ "iipi\0" "glFogCoordPointerListIBM\0" "\0" - /* _mesa_function_pool[7730]: WindowPos3dMESA (will be remapped) */ + /* _mesa_function_pool[7828]: WindowPos3dMESA (will be remapped) */ "ddd\0" "glWindowPos3d\0" "glWindowPos3dARB\0" "glWindowPos3dMESA\0" "\0" - /* _mesa_function_pool[7784]: Color4us (offset 39) */ + /* _mesa_function_pool[7882]: Color4us (offset 39) */ "iiii\0" "glColor4us\0" "\0" - /* _mesa_function_pool[7801]: PointParameterfvEXT (will be remapped) */ + /* _mesa_function_pool[7899]: PointParameterfvEXT (will be remapped) */ "ip\0" "glPointParameterfv\0" "glPointParameterfvARB\0" "glPointParameterfvEXT\0" "glPointParameterfvSGIS\0" "\0" - /* _mesa_function_pool[7891]: Color3bv (offset 10) */ + /* _mesa_function_pool[7989]: Color3bv (offset 10) */ "p\0" "glColor3bv\0" "\0" - /* _mesa_function_pool[7905]: WindowPos2fvMESA (will be remapped) */ + /* _mesa_function_pool[8003]: WindowPos2fvMESA (will be remapped) */ "p\0" "glWindowPos2fv\0" "glWindowPos2fvARB\0" "glWindowPos2fvMESA\0" "\0" - /* _mesa_function_pool[7960]: SecondaryColor3bvEXT (will be remapped) */ + /* _mesa_function_pool[8058]: SecondaryColor3bvEXT (will be remapped) */ "p\0" "glSecondaryColor3bv\0" "glSecondaryColor3bvEXT\0" "\0" - /* _mesa_function_pool[8006]: VertexPointerListIBM (dynamic) */ + /* _mesa_function_pool[8104]: VertexPointerListIBM (dynamic) */ "iiipi\0" "glVertexPointerListIBM\0" "\0" - /* _mesa_function_pool[8036]: GetProgramLocalParameterfvARB (will be remapped) */ + /* _mesa_function_pool[8134]: GetProgramLocalParameterfvARB (will be remapped) */ "iip\0" "glGetProgramLocalParameterfvARB\0" "\0" - /* _mesa_function_pool[8073]: FragmentMaterialfSGIX (dynamic) */ + /* _mesa_function_pool[8171]: FragmentMaterialfSGIX (dynamic) */ "iif\0" "glFragmentMaterialfSGIX\0" "\0" - /* _mesa_function_pool[8102]: TexCoord2fNormal3fVertex3fSUN (dynamic) */ - "ffffffff\0" - "glTexCoord2fNormal3fVertex3fSUN\0" + /* _mesa_function_pool[8200]: BindSampler (will be remapped) */ + "ii\0" + "glBindSampler\0" "\0" - /* _mesa_function_pool[8144]: RenderbufferStorageEXT (will be remapped) */ + /* _mesa_function_pool[8218]: RenderbufferStorageEXT (will be remapped) */ "iiii\0" "glRenderbufferStorage\0" "glRenderbufferStorageEXT\0" "\0" - /* _mesa_function_pool[8197]: IsFenceNV (will be remapped) */ + /* _mesa_function_pool[8271]: IsFenceNV (will be remapped) */ "i\0" "glIsFenceNV\0" "\0" - /* _mesa_function_pool[8212]: AttachObjectARB (will be remapped) */ + /* _mesa_function_pool[8286]: AttachObjectARB (will be remapped) */ "ii\0" "glAttachObjectARB\0" "\0" - /* _mesa_function_pool[8234]: GetFragmentLightivSGIX (dynamic) */ + /* _mesa_function_pool[8308]: GetFragmentLightivSGIX (dynamic) */ "iip\0" "glGetFragmentLightivSGIX\0" "\0" - /* _mesa_function_pool[8264]: UniformMatrix2fvARB (will be remapped) */ + /* _mesa_function_pool[8338]: UniformMatrix2fvARB (will be remapped) */ "iiip\0" "glUniformMatrix2fv\0" "glUniformMatrix2fvARB\0" "\0" - /* _mesa_function_pool[8311]: MultiTexCoord2fARB (offset 386) */ + /* _mesa_function_pool[8385]: MultiTexCoord2fARB (offset 386) */ "iff\0" "glMultiTexCoord2f\0" "glMultiTexCoord2fARB\0" "\0" - /* _mesa_function_pool[8355]: ColorTable (offset 339) */ + /* _mesa_function_pool[8429]: ColorTable (offset 339) */ "iiiiip\0" "glColorTable\0" "glColorTableSGI\0" "glColorTableEXT\0" "\0" - /* _mesa_function_pool[8408]: IndexPointer (offset 314) */ + /* _mesa_function_pool[8482]: IndexPointer (offset 314) */ "iip\0" "glIndexPointer\0" "\0" - /* _mesa_function_pool[8428]: Accum (offset 213) */ + /* _mesa_function_pool[8502]: Accum (offset 213) */ "if\0" "glAccum\0" "\0" - /* _mesa_function_pool[8440]: GetTexImage (offset 281) */ + /* _mesa_function_pool[8514]: GetTexImage (offset 281) */ "iiiip\0" "glGetTexImage\0" "\0" - /* _mesa_function_pool[8461]: MapControlPointsNV (dynamic) */ + /* _mesa_function_pool[8535]: MapControlPointsNV (dynamic) */ "iiiiiiiip\0" "glMapControlPointsNV\0" "\0" - /* _mesa_function_pool[8493]: ConvolutionFilter2D (offset 349) */ + /* _mesa_function_pool[8567]: ConvolutionFilter2D (offset 349) */ "iiiiiip\0" "glConvolutionFilter2D\0" "glConvolutionFilter2DEXT\0" "\0" - /* _mesa_function_pool[8549]: Finish (offset 216) */ + /* _mesa_function_pool[8623]: Finish (offset 216) */ "\0" "glFinish\0" "\0" - /* _mesa_function_pool[8560]: MapParameterfvNV (dynamic) */ + /* _mesa_function_pool[8634]: MapParameterfvNV (dynamic) */ "iip\0" "glMapParameterfvNV\0" "\0" - /* _mesa_function_pool[8584]: ClearStencil (offset 207) */ + /* _mesa_function_pool[8658]: ClearStencil (offset 207) */ "i\0" "glClearStencil\0" "\0" - /* _mesa_function_pool[8602]: VertexAttrib3dvARB (will be remapped) */ + /* _mesa_function_pool[8676]: VertexAttrib3dvARB (will be remapped) */ "ip\0" "glVertexAttrib3dv\0" "glVertexAttrib3dvARB\0" "\0" - /* _mesa_function_pool[8645]: Uniform4uivEXT (will be remapped) */ + /* _mesa_function_pool[8719]: Uniform4uivEXT (will be remapped) */ "iip\0" "glUniform4uivEXT\0" "glUniform4uiv\0" "\0" - /* _mesa_function_pool[8681]: HintPGI (dynamic) */ + /* _mesa_function_pool[8755]: HintPGI (dynamic) */ "ii\0" "glHintPGI\0" "\0" - /* _mesa_function_pool[8695]: ConvolutionParameteriv (offset 353) */ + /* _mesa_function_pool[8769]: ConvolutionParameteriv (offset 353) */ "iip\0" "glConvolutionParameteriv\0" "glConvolutionParameterivEXT\0" "\0" - /* _mesa_function_pool[8753]: Color4s (offset 33) */ + /* _mesa_function_pool[8827]: Color4s (offset 33) */ "iiii\0" "glColor4s\0" "\0" - /* _mesa_function_pool[8769]: InterleavedArrays (offset 317) */ + /* _mesa_function_pool[8843]: InterleavedArrays (offset 317) */ "iip\0" "glInterleavedArrays\0" "\0" - /* _mesa_function_pool[8794]: RasterPos2fv (offset 65) */ + /* _mesa_function_pool[8868]: RasterPos2fv (offset 65) */ "p\0" "glRasterPos2fv\0" "\0" - /* _mesa_function_pool[8812]: TexCoord1fv (offset 97) */ + /* _mesa_function_pool[8886]: TexCoord1fv (offset 97) */ "p\0" "glTexCoord1fv\0" "\0" - /* _mesa_function_pool[8829]: Vertex2d (offset 126) */ + /* _mesa_function_pool[8903]: Vertex2d (offset 126) */ "dd\0" "glVertex2d\0" "\0" - /* _mesa_function_pool[8844]: CullParameterdvEXT (dynamic) */ + /* _mesa_function_pool[8918]: CullParameterdvEXT (dynamic) */ "ip\0" "glCullParameterdvEXT\0" "\0" - /* _mesa_function_pool[8869]: ProgramNamedParameter4fNV (will be remapped) */ + /* _mesa_function_pool[8943]: ProgramNamedParameter4fNV (will be remapped) */ "iipffff\0" "glProgramNamedParameter4fNV\0" "\0" - /* _mesa_function_pool[8906]: Color3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[8980]: Color3fVertex3fSUN (dynamic) */ "ffffff\0" "glColor3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[8935]: ProgramEnvParameter4fvARB (will be remapped) */ + /* _mesa_function_pool[9009]: ProgramEnvParameter4fvARB (will be remapped) */ "iip\0" "glProgramEnvParameter4fvARB\0" "glProgramParameter4fvNV\0" "\0" - /* _mesa_function_pool[8992]: Color4i (offset 31) */ + /* _mesa_function_pool[9066]: Color4i (offset 31) */ "iiii\0" "glColor4i\0" "\0" - /* _mesa_function_pool[9008]: Color4f (offset 29) */ + /* _mesa_function_pool[9082]: Color4f (offset 29) */ "ffff\0" "glColor4f\0" "\0" - /* _mesa_function_pool[9024]: RasterPos4fv (offset 81) */ + /* _mesa_function_pool[9098]: RasterPos4fv (offset 81) */ "p\0" "glRasterPos4fv\0" "\0" - /* _mesa_function_pool[9042]: Color4d (offset 27) */ + /* _mesa_function_pool[9116]: Color4d (offset 27) */ "dddd\0" "glColor4d\0" "\0" - /* _mesa_function_pool[9058]: ClearIndex (offset 205) */ + /* _mesa_function_pool[9132]: ClearIndex (offset 205) */ "f\0" "glClearIndex\0" "\0" - /* _mesa_function_pool[9074]: Color4b (offset 25) */ + /* _mesa_function_pool[9148]: Color4b (offset 25) */ "iiii\0" "glColor4b\0" "\0" - /* _mesa_function_pool[9090]: LoadMatrixd (offset 292) */ + /* _mesa_function_pool[9164]: LoadMatrixd (offset 292) */ "p\0" "glLoadMatrixd\0" "\0" - /* _mesa_function_pool[9107]: FragmentLightModeliSGIX (dynamic) */ + /* _mesa_function_pool[9181]: FragmentLightModeliSGIX (dynamic) */ "ii\0" "glFragmentLightModeliSGIX\0" "\0" - /* _mesa_function_pool[9137]: RasterPos2dv (offset 63) */ + /* _mesa_function_pool[9211]: RasterPos2dv (offset 63) */ "p\0" "glRasterPos2dv\0" "\0" - /* _mesa_function_pool[9155]: ConvolutionParameterfv (offset 351) */ + /* _mesa_function_pool[9229]: ConvolutionParameterfv (offset 351) */ "iip\0" "glConvolutionParameterfv\0" "glConvolutionParameterfvEXT\0" "\0" - /* _mesa_function_pool[9213]: TbufferMask3DFX (dynamic) */ + /* _mesa_function_pool[9287]: TbufferMask3DFX (dynamic) */ "i\0" "glTbufferMask3DFX\0" "\0" - /* _mesa_function_pool[9234]: GetTexGendv (offset 278) */ + /* _mesa_function_pool[9308]: GetTexGendv (offset 278) */ "iip\0" "glGetTexGendv\0" "\0" - /* _mesa_function_pool[9253]: GetVertexAttribfvNV (will be remapped) */ + /* _mesa_function_pool[9327]: GetVertexAttribfvNV (will be remapped) */ "iip\0" "glGetVertexAttribfvNV\0" "\0" - /* _mesa_function_pool[9280]: BeginTransformFeedbackEXT (will be remapped) */ + /* _mesa_function_pool[9354]: BeginTransformFeedbackEXT (will be remapped) */ "i\0" "glBeginTransformFeedbackEXT\0" "glBeginTransformFeedback\0" "\0" - /* _mesa_function_pool[9336]: LoadProgramNV (will be remapped) */ + /* _mesa_function_pool[9410]: LoadProgramNV (will be remapped) */ "iiip\0" "glLoadProgramNV\0" "\0" - /* _mesa_function_pool[9358]: WaitSync (will be remapped) */ + /* _mesa_function_pool[9432]: WaitSync (will be remapped) */ "iii\0" "glWaitSync\0" "\0" - /* _mesa_function_pool[9374]: EndList (offset 1) */ + /* _mesa_function_pool[9448]: EndList (offset 1) */ "\0" "glEndList\0" "\0" - /* _mesa_function_pool[9386]: VertexAttrib4fvNV (will be remapped) */ + /* _mesa_function_pool[9460]: VertexAttrib4fvNV (will be remapped) */ "ip\0" "glVertexAttrib4fvNV\0" "\0" - /* _mesa_function_pool[9410]: GetAttachedObjectsARB (will be remapped) */ + /* _mesa_function_pool[9484]: GetAttachedObjectsARB (will be remapped) */ "iipp\0" "glGetAttachedObjectsARB\0" "\0" - /* _mesa_function_pool[9440]: Uniform3fvARB (will be remapped) */ + /* _mesa_function_pool[9514]: Uniform3fvARB (will be remapped) */ "iip\0" "glUniform3fv\0" "glUniform3fvARB\0" "\0" - /* _mesa_function_pool[9474]: EvalCoord1fv (offset 231) */ + /* _mesa_function_pool[9548]: EvalCoord1fv (offset 231) */ "p\0" "glEvalCoord1fv\0" "\0" - /* _mesa_function_pool[9492]: DrawRangeElements (offset 338) */ + /* _mesa_function_pool[9566]: DrawRangeElements (offset 338) */ "iiiiip\0" "glDrawRangeElements\0" "glDrawRangeElementsEXT\0" "\0" - /* _mesa_function_pool[9543]: EvalMesh2 (offset 238) */ + /* _mesa_function_pool[9617]: EvalMesh2 (offset 238) */ "iiiii\0" "glEvalMesh2\0" "\0" - /* _mesa_function_pool[9562]: Vertex4fv (offset 145) */ + /* _mesa_function_pool[9636]: Vertex4fv (offset 145) */ "p\0" "glVertex4fv\0" "\0" - /* _mesa_function_pool[9577]: GenTransformFeedbacks (will be remapped) */ + /* _mesa_function_pool[9651]: GenTransformFeedbacks (will be remapped) */ "ip\0" "glGenTransformFeedbacks\0" "\0" - /* _mesa_function_pool[9605]: SpriteParameterfvSGIX (dynamic) */ + /* _mesa_function_pool[9679]: SpriteParameterfvSGIX (dynamic) */ "ip\0" "glSpriteParameterfvSGIX\0" "\0" - /* _mesa_function_pool[9633]: CheckFramebufferStatusEXT (will be remapped) */ + /* _mesa_function_pool[9707]: CheckFramebufferStatusEXT (will be remapped) */ "i\0" "glCheckFramebufferStatus\0" "glCheckFramebufferStatusEXT\0" "\0" - /* _mesa_function_pool[9689]: GlobalAlphaFactoruiSUN (dynamic) */ + /* _mesa_function_pool[9763]: GlobalAlphaFactoruiSUN (dynamic) */ "i\0" "glGlobalAlphaFactoruiSUN\0" "\0" - /* _mesa_function_pool[9717]: GetHandleARB (will be remapped) */ + /* _mesa_function_pool[9791]: GetHandleARB (will be remapped) */ "i\0" "glGetHandleARB\0" "\0" - /* _mesa_function_pool[9735]: GetVertexAttribivARB (will be remapped) */ + /* _mesa_function_pool[9809]: GetVertexAttribivARB (will be remapped) */ "iip\0" "glGetVertexAttribiv\0" "glGetVertexAttribivARB\0" "\0" - /* _mesa_function_pool[9783]: BlendFunciARB (will be remapped) */ + /* _mesa_function_pool[9857]: BlendFunciARB (will be remapped) */ "iii\0" "glBlendFunciARB\0" "\0" - /* _mesa_function_pool[9804]: GetCombinerInputParameterfvNV (will be remapped) */ + /* _mesa_function_pool[9878]: GetCombinerInputParameterfvNV (will be remapped) */ "iiiip\0" "glGetCombinerInputParameterfvNV\0" "\0" - /* _mesa_function_pool[9843]: GetTexParameterIivEXT (will be remapped) */ + /* _mesa_function_pool[9917]: GetTexParameterIivEXT (will be remapped) */ "iip\0" "glGetTexParameterIivEXT\0" "glGetTexParameterIiv\0" "\0" - /* _mesa_function_pool[9893]: CreateProgram (will be remapped) */ + /* _mesa_function_pool[9967]: CreateProgram (will be remapped) */ "\0" "glCreateProgram\0" "\0" - /* _mesa_function_pool[9911]: LoadTransposeMatrixdARB (will be remapped) */ + /* _mesa_function_pool[9985]: LoadTransposeMatrixdARB (will be remapped) */ "p\0" "glLoadTransposeMatrixd\0" "glLoadTransposeMatrixdARB\0" "\0" - /* _mesa_function_pool[9963]: ReleaseShaderCompiler (will be remapped) */ + /* _mesa_function_pool[10037]: ReleaseShaderCompiler (will be remapped) */ "\0" "glReleaseShaderCompiler\0" "\0" - /* _mesa_function_pool[9989]: GetMinmax (offset 364) */ + /* _mesa_function_pool[10063]: GetMinmax (offset 364) */ "iiiip\0" "glGetMinmax\0" "glGetMinmaxEXT\0" "\0" - /* _mesa_function_pool[10023]: StencilFuncSeparate (will be remapped) */ + /* _mesa_function_pool[10097]: StencilFuncSeparate (will be remapped) */ "iiii\0" "glStencilFuncSeparate\0" "\0" - /* _mesa_function_pool[10051]: SecondaryColor3sEXT (will be remapped) */ + /* _mesa_function_pool[10125]: SecondaryColor3sEXT (will be remapped) */ "iii\0" "glSecondaryColor3s\0" "glSecondaryColor3sEXT\0" "\0" - /* _mesa_function_pool[10097]: Color3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[10171]: Color3fVertex3fvSUN (dynamic) */ "pp\0" "glColor3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[10123]: GetInteger64i_v (will be remapped) */ + /* _mesa_function_pool[10197]: GetInteger64i_v (will be remapped) */ "iip\0" "glGetInteger64i_v\0" "\0" - /* _mesa_function_pool[10146]: Normal3fv (offset 57) */ + /* _mesa_function_pool[10220]: Normal3fv (offset 57) */ "p\0" "glNormal3fv\0" "\0" - /* _mesa_function_pool[10161]: GlobalAlphaFactorbSUN (dynamic) */ + /* _mesa_function_pool[10235]: GlobalAlphaFactorbSUN (dynamic) */ "i\0" "glGlobalAlphaFactorbSUN\0" "\0" - /* _mesa_function_pool[10188]: Color3us (offset 23) */ + /* _mesa_function_pool[10262]: Color3us (offset 23) */ "iii\0" "glColor3us\0" "\0" - /* _mesa_function_pool[10204]: ImageTransformParameterfvHP (dynamic) */ + /* _mesa_function_pool[10278]: ImageTransformParameterfvHP (dynamic) */ "iip\0" "glImageTransformParameterfvHP\0" "\0" - /* _mesa_function_pool[10239]: VertexAttrib4ivARB (will be remapped) */ + /* _mesa_function_pool[10313]: VertexAttrib4ivARB (will be remapped) */ "ip\0" "glVertexAttrib4iv\0" "glVertexAttrib4ivARB\0" "\0" - /* _mesa_function_pool[10282]: End (offset 43) */ + /* _mesa_function_pool[10356]: End (offset 43) */ "\0" "glEnd\0" "\0" - /* _mesa_function_pool[10290]: VertexAttrib3fNV (will be remapped) */ + /* _mesa_function_pool[10364]: VertexAttrib3fNV (will be remapped) */ "ifff\0" "glVertexAttrib3fNV\0" "\0" - /* _mesa_function_pool[10315]: VertexAttribs2dvNV (will be remapped) */ + /* _mesa_function_pool[10389]: VertexAttribs2dvNV (will be remapped) */ "iip\0" "glVertexAttribs2dvNV\0" "\0" - /* _mesa_function_pool[10341]: GetQueryObjectui64vEXT (will be remapped) */ + /* _mesa_function_pool[10415]: GetQueryObjectui64vEXT (will be remapped) */ "iip\0" "glGetQueryObjectui64vEXT\0" "\0" - /* _mesa_function_pool[10371]: MultiTexCoord3fvARB (offset 395) */ + /* _mesa_function_pool[10445]: MultiTexCoord3fvARB (offset 395) */ "ip\0" "glMultiTexCoord3fv\0" "glMultiTexCoord3fvARB\0" "\0" - /* _mesa_function_pool[10416]: SecondaryColor3dEXT (will be remapped) */ + /* _mesa_function_pool[10490]: SecondaryColor3dEXT (will be remapped) */ "ddd\0" "glSecondaryColor3d\0" "glSecondaryColor3dEXT\0" "\0" - /* _mesa_function_pool[10462]: Color3ub (offset 19) */ + /* _mesa_function_pool[10536]: Color3ub (offset 19) */ "iii\0" "glColor3ub\0" "\0" - /* _mesa_function_pool[10478]: GetProgramParameterfvNV (will be remapped) */ + /* _mesa_function_pool[10552]: GetProgramParameterfvNV (will be remapped) */ "iiip\0" "glGetProgramParameterfvNV\0" "\0" - /* _mesa_function_pool[10510]: TangentPointerEXT (dynamic) */ + /* _mesa_function_pool[10584]: TangentPointerEXT (dynamic) */ "iip\0" "glTangentPointerEXT\0" "\0" - /* _mesa_function_pool[10535]: Color4fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[10609]: Color4fNormal3fVertex3fvSUN (dynamic) */ "ppp\0" "glColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[10570]: GetInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[10644]: GetInstrumentsSGIX (dynamic) */ "\0" "glGetInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[10593]: GetUniformuivEXT (will be remapped) */ + /* _mesa_function_pool[10667]: GetUniformuivEXT (will be remapped) */ "iip\0" "glGetUniformuivEXT\0" "glGetUniformuiv\0" "\0" - /* _mesa_function_pool[10633]: Color3ui (offset 21) */ + /* _mesa_function_pool[10707]: Color3ui (offset 21) */ "iii\0" "glColor3ui\0" "\0" - /* _mesa_function_pool[10649]: EvalMapsNV (dynamic) */ + /* _mesa_function_pool[10723]: EvalMapsNV (dynamic) */ "ii\0" "glEvalMapsNV\0" "\0" - /* _mesa_function_pool[10666]: TexSubImage2D (offset 333) */ + /* _mesa_function_pool[10740]: TexSubImage2D (offset 333) */ "iiiiiiiip\0" "glTexSubImage2D\0" "glTexSubImage2DEXT\0" "\0" - /* _mesa_function_pool[10712]: FragmentLightivSGIX (dynamic) */ + /* _mesa_function_pool[10786]: FragmentLightivSGIX (dynamic) */ "iip\0" "glFragmentLightivSGIX\0" "\0" - /* _mesa_function_pool[10739]: GetTexParameterPointervAPPLE (will be remapped) */ + /* _mesa_function_pool[10813]: GetTexParameterPointervAPPLE (will be remapped) */ "iip\0" "glGetTexParameterPointervAPPLE\0" "\0" - /* _mesa_function_pool[10775]: TexGenfv (offset 191) */ + /* _mesa_function_pool[10849]: TexGenfv (offset 191) */ "iip\0" "glTexGenfv\0" "\0" - /* _mesa_function_pool[10791]: GetTransformFeedbackVaryingEXT (will be remapped) */ + /* _mesa_function_pool[10865]: GetTransformFeedbackVaryingEXT (will be remapped) */ "iiipppp\0" "glGetTransformFeedbackVaryingEXT\0" "glGetTransformFeedbackVarying\0" "\0" - /* _mesa_function_pool[10863]: VertexAttrib4bvARB (will be remapped) */ + /* _mesa_function_pool[10937]: VertexAttrib4bvARB (will be remapped) */ "ip\0" "glVertexAttrib4bv\0" "glVertexAttrib4bvARB\0" "\0" - /* _mesa_function_pool[10906]: ShaderBinary (will be remapped) */ + /* _mesa_function_pool[10980]: ShaderBinary (will be remapped) */ "ipipi\0" "glShaderBinary\0" "\0" - /* _mesa_function_pool[10928]: GetIntegerIndexedvEXT (will be remapped) */ + /* _mesa_function_pool[11002]: GetIntegerIndexedvEXT (will be remapped) */ "iip\0" "glGetIntegerIndexedvEXT\0" "glGetIntegeri_v\0" "\0" - /* _mesa_function_pool[10973]: MultiTexCoord4sARB (offset 406) */ + /* _mesa_function_pool[11047]: MultiTexCoord4sARB (offset 406) */ "iiiii\0" "glMultiTexCoord4s\0" "glMultiTexCoord4sARB\0" "\0" - /* _mesa_function_pool[11019]: GetFragmentMaterialivSGIX (dynamic) */ + /* _mesa_function_pool[11093]: GetFragmentMaterialivSGIX (dynamic) */ "iip\0" "glGetFragmentMaterialivSGIX\0" "\0" - /* _mesa_function_pool[11052]: WindowPos4dMESA (will be remapped) */ + /* _mesa_function_pool[11126]: WindowPos4dMESA (will be remapped) */ "dddd\0" "glWindowPos4dMESA\0" "\0" - /* _mesa_function_pool[11076]: WeightPointerARB (dynamic) */ + /* _mesa_function_pool[11150]: WeightPointerARB (dynamic) */ "iiip\0" "glWeightPointerARB\0" "\0" - /* _mesa_function_pool[11101]: WindowPos2dMESA (will be remapped) */ + /* _mesa_function_pool[11175]: WindowPos2dMESA (will be remapped) */ "dd\0" "glWindowPos2d\0" "glWindowPos2dARB\0" "glWindowPos2dMESA\0" "\0" - /* _mesa_function_pool[11154]: FramebufferTexture3DEXT (will be remapped) */ + /* _mesa_function_pool[11228]: FramebufferTexture3DEXT (will be remapped) */ "iiiiii\0" "glFramebufferTexture3D\0" "glFramebufferTexture3DEXT\0" "\0" - /* _mesa_function_pool[11211]: BlendEquation (offset 337) */ + /* _mesa_function_pool[11285]: BlendEquation (offset 337) */ "i\0" "glBlendEquation\0" "glBlendEquationEXT\0" "\0" - /* _mesa_function_pool[11249]: VertexAttrib3dNV (will be remapped) */ + /* _mesa_function_pool[11323]: VertexAttrib3dNV (will be remapped) */ "iddd\0" "glVertexAttrib3dNV\0" "\0" - /* _mesa_function_pool[11274]: VertexAttrib3dARB (will be remapped) */ + /* _mesa_function_pool[11348]: VertexAttrib3dARB (will be remapped) */ "iddd\0" "glVertexAttrib3d\0" "glVertexAttrib3dARB\0" "\0" - /* _mesa_function_pool[11317]: VertexAttribI4usvEXT (will be remapped) */ + /* _mesa_function_pool[11391]: VertexAttribI4usvEXT (will be remapped) */ "ip\0" "glVertexAttribI4usvEXT\0" "glVertexAttribI4usv\0" "\0" - /* _mesa_function_pool[11364]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[11438]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ "ppppp\0" "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[11428]: VertexAttrib4fARB (will be remapped) */ + /* _mesa_function_pool[11502]: VertexAttrib4fARB (will be remapped) */ "iffff\0" "glVertexAttrib4f\0" "glVertexAttrib4fARB\0" "\0" - /* _mesa_function_pool[11472]: GetError (offset 261) */ + /* _mesa_function_pool[11546]: GetError (offset 261) */ "\0" "glGetError\0" "\0" - /* _mesa_function_pool[11485]: IndexFuncEXT (dynamic) */ + /* _mesa_function_pool[11559]: IndexFuncEXT (dynamic) */ "if\0" "glIndexFuncEXT\0" "\0" - /* _mesa_function_pool[11504]: TexCoord3dv (offset 111) */ + /* _mesa_function_pool[11578]: TexCoord3dv (offset 111) */ "p\0" "glTexCoord3dv\0" "\0" - /* _mesa_function_pool[11521]: Indexdv (offset 45) */ + /* _mesa_function_pool[11595]: Indexdv (offset 45) */ "p\0" "glIndexdv\0" "\0" - /* _mesa_function_pool[11534]: FramebufferTexture2DEXT (will be remapped) */ + /* _mesa_function_pool[11608]: FramebufferTexture2DEXT (will be remapped) */ "iiiii\0" "glFramebufferTexture2D\0" "glFramebufferTexture2DEXT\0" "\0" - /* _mesa_function_pool[11590]: Normal3s (offset 60) */ + /* _mesa_function_pool[11664]: Normal3s (offset 60) */ "iii\0" "glNormal3s\0" "\0" - /* _mesa_function_pool[11606]: GetObjectParameterivAPPLE (will be remapped) */ + /* _mesa_function_pool[11680]: GetObjectParameterivAPPLE (will be remapped) */ "iiip\0" "glGetObjectParameterivAPPLE\0" "\0" - /* _mesa_function_pool[11640]: PushName (offset 201) */ + /* _mesa_function_pool[11714]: PushName (offset 201) */ "i\0" "glPushName\0" "\0" - /* _mesa_function_pool[11654]: MultiTexCoord2dvARB (offset 385) */ + /* _mesa_function_pool[11728]: MultiTexCoord2dvARB (offset 385) */ "ip\0" "glMultiTexCoord2dv\0" "glMultiTexCoord2dvARB\0" "\0" - /* _mesa_function_pool[11699]: CullParameterfvEXT (dynamic) */ + /* _mesa_function_pool[11773]: CullParameterfvEXT (dynamic) */ "ip\0" "glCullParameterfvEXT\0" "\0" - /* _mesa_function_pool[11724]: Normal3i (offset 58) */ + /* _mesa_function_pool[11798]: Normal3i (offset 58) */ "iii\0" "glNormal3i\0" "\0" - /* _mesa_function_pool[11740]: ProgramNamedParameter4fvNV (will be remapped) */ + /* _mesa_function_pool[11814]: ProgramNamedParameter4fvNV (will be remapped) */ "iipp\0" "glProgramNamedParameter4fvNV\0" "\0" - /* _mesa_function_pool[11775]: SecondaryColorPointerEXT (will be remapped) */ + /* _mesa_function_pool[11849]: SecondaryColorPointerEXT (will be remapped) */ "iiip\0" "glSecondaryColorPointer\0" "glSecondaryColorPointerEXT\0" "\0" - /* _mesa_function_pool[11832]: VertexAttrib4fvARB (will be remapped) */ + /* _mesa_function_pool[11906]: VertexAttrib4fvARB (will be remapped) */ "ip\0" "glVertexAttrib4fv\0" "glVertexAttrib4fvARB\0" "\0" - /* _mesa_function_pool[11875]: ColorPointerListIBM (dynamic) */ - "iiipi\0" - "glColorPointerListIBM\0" + /* _mesa_function_pool[11949]: PixelTexGenSGIX (will be remapped) */ + "i\0" + "glPixelTexGenSGIX\0" "\0" - /* _mesa_function_pool[11904]: GetActiveUniformARB (will be remapped) */ + /* _mesa_function_pool[11970]: GetActiveUniformARB (will be remapped) */ "iiipppp\0" "glGetActiveUniform\0" "glGetActiveUniformARB\0" "\0" - /* _mesa_function_pool[11954]: ImageTransformParameteriHP (dynamic) */ + /* _mesa_function_pool[12020]: ImageTransformParameteriHP (dynamic) */ "iii\0" "glImageTransformParameteriHP\0" "\0" - /* _mesa_function_pool[11988]: Normal3b (offset 52) */ + /* _mesa_function_pool[12054]: Normal3b (offset 52) */ "iii\0" "glNormal3b\0" "\0" - /* _mesa_function_pool[12004]: Normal3d (offset 54) */ + /* _mesa_function_pool[12070]: Normal3d (offset 54) */ "ddd\0" "glNormal3d\0" "\0" - /* _mesa_function_pool[12020]: Uniform1uiEXT (will be remapped) */ + /* _mesa_function_pool[12086]: Uniform1uiEXT (will be remapped) */ "ii\0" "glUniform1uiEXT\0" "glUniform1ui\0" "\0" - /* _mesa_function_pool[12053]: Normal3f (offset 56) */ + /* _mesa_function_pool[12119]: Normal3f (offset 56) */ "fff\0" "glNormal3f\0" "\0" - /* _mesa_function_pool[12069]: MultiTexCoord1svARB (offset 383) */ + /* _mesa_function_pool[12135]: MultiTexCoord1svARB (offset 383) */ "ip\0" "glMultiTexCoord1sv\0" "glMultiTexCoord1svARB\0" "\0" - /* _mesa_function_pool[12114]: Indexi (offset 48) */ + /* _mesa_function_pool[12180]: Indexi (offset 48) */ "i\0" "glIndexi\0" "\0" - /* _mesa_function_pool[12126]: EGLImageTargetTexture2DOES (will be remapped) */ + /* _mesa_function_pool[12192]: EGLImageTargetTexture2DOES (will be remapped) */ "ip\0" "glEGLImageTargetTexture2DOES\0" "\0" - /* _mesa_function_pool[12159]: EndQueryARB (will be remapped) */ + /* _mesa_function_pool[12225]: EndQueryARB (will be remapped) */ "i\0" "glEndQuery\0" "glEndQueryARB\0" "\0" - /* _mesa_function_pool[12187]: DeleteFencesNV (will be remapped) */ + /* _mesa_function_pool[12253]: DeleteFencesNV (will be remapped) */ "ip\0" "glDeleteFencesNV\0" "\0" - /* _mesa_function_pool[12208]: DeformationMap3dSGIX (dynamic) */ - "iddiiddiiddiip\0" - "glDeformationMap3dSGIX\0" + /* _mesa_function_pool[12274]: ColorPointerListIBM (dynamic) */ + "iiipi\0" + "glColorPointerListIBM\0" "\0" - /* _mesa_function_pool[12247]: BindBufferRangeEXT (will be remapped) */ + /* _mesa_function_pool[12303]: BindBufferRangeEXT (will be remapped) */ "iiiii\0" "glBindBufferRangeEXT\0" "glBindBufferRange\0" "\0" - /* _mesa_function_pool[12293]: DepthMask (offset 211) */ + /* _mesa_function_pool[12349]: DepthMask (offset 211) */ "i\0" "glDepthMask\0" "\0" - /* _mesa_function_pool[12308]: IsShader (will be remapped) */ + /* _mesa_function_pool[12364]: IsShader (will be remapped) */ "i\0" "glIsShader\0" "\0" - /* _mesa_function_pool[12322]: Indexf (offset 46) */ + /* _mesa_function_pool[12378]: Indexf (offset 46) */ "f\0" "glIndexf\0" "\0" - /* _mesa_function_pool[12334]: GetImageTransformParameterivHP (dynamic) */ + /* _mesa_function_pool[12390]: GetImageTransformParameterivHP (dynamic) */ "iip\0" "glGetImageTransformParameterivHP\0" "\0" - /* _mesa_function_pool[12372]: Indexd (offset 44) */ + /* _mesa_function_pool[12428]: Indexd (offset 44) */ "d\0" "glIndexd\0" "\0" - /* _mesa_function_pool[12384]: GetMaterialiv (offset 270) */ + /* _mesa_function_pool[12440]: GetMaterialiv (offset 270) */ "iip\0" "glGetMaterialiv\0" "\0" - /* _mesa_function_pool[12405]: StencilOp (offset 244) */ + /* _mesa_function_pool[12461]: StencilOp (offset 244) */ "iii\0" "glStencilOp\0" "\0" - /* _mesa_function_pool[12422]: WindowPos4ivMESA (will be remapped) */ + /* _mesa_function_pool[12478]: WindowPos4ivMESA (will be remapped) */ "p\0" "glWindowPos4ivMESA\0" "\0" - /* _mesa_function_pool[12444]: FramebufferTextureLayer (dynamic) */ + /* _mesa_function_pool[12500]: FramebufferTextureLayer (dynamic) */ "iiiii\0" "glFramebufferTextureLayerARB\0" "\0" - /* _mesa_function_pool[12480]: MultiTexCoord3svARB (offset 399) */ + /* _mesa_function_pool[12536]: MultiTexCoord3svARB (offset 399) */ "ip\0" "glMultiTexCoord3sv\0" "glMultiTexCoord3svARB\0" "\0" - /* _mesa_function_pool[12525]: TexEnvfv (offset 185) */ + /* _mesa_function_pool[12581]: TexEnvfv (offset 185) */ "iip\0" "glTexEnvfv\0" "\0" - /* _mesa_function_pool[12541]: MultiTexCoord4iARB (offset 404) */ + /* _mesa_function_pool[12597]: MultiTexCoord4iARB (offset 404) */ "iiiii\0" "glMultiTexCoord4i\0" "glMultiTexCoord4iARB\0" "\0" - /* _mesa_function_pool[12587]: Indexs (offset 50) */ + /* _mesa_function_pool[12643]: Indexs (offset 50) */ "i\0" "glIndexs\0" "\0" - /* _mesa_function_pool[12599]: Binormal3ivEXT (dynamic) */ + /* _mesa_function_pool[12655]: Binormal3ivEXT (dynamic) */ "p\0" "glBinormal3ivEXT\0" "\0" - /* _mesa_function_pool[12619]: ResizeBuffersMESA (will be remapped) */ + /* _mesa_function_pool[12675]: ResizeBuffersMESA (will be remapped) */ "\0" "glResizeBuffersMESA\0" "\0" - /* _mesa_function_pool[12641]: BlendFuncSeparateiARB (will be remapped) */ + /* _mesa_function_pool[12697]: BlendFuncSeparateiARB (will be remapped) */ "iiiii\0" "glBlendFuncSeparateiARB\0" "\0" - /* _mesa_function_pool[12672]: GetUniformivARB (will be remapped) */ + /* _mesa_function_pool[12728]: GetUniformivARB (will be remapped) */ "iip\0" "glGetUniformiv\0" "glGetUniformivARB\0" "\0" - /* _mesa_function_pool[12710]: PixelTexGenParameteriSGIS (will be remapped) */ + /* _mesa_function_pool[12766]: PixelTexGenParameteriSGIS (will be remapped) */ "ii\0" "glPixelTexGenParameteriSGIS\0" "\0" - /* _mesa_function_pool[12742]: VertexPointervINTEL (dynamic) */ + /* _mesa_function_pool[12798]: VertexPointervINTEL (dynamic) */ "iip\0" "glVertexPointervINTEL\0" "\0" - /* _mesa_function_pool[12769]: Vertex2i (offset 130) */ + /* _mesa_function_pool[12825]: Vertex2i (offset 130) */ "ii\0" "glVertex2i\0" "\0" - /* _mesa_function_pool[12784]: LoadMatrixf (offset 291) */ + /* _mesa_function_pool[12840]: LoadMatrixf (offset 291) */ "p\0" "glLoadMatrixf\0" "\0" - /* _mesa_function_pool[12801]: VertexAttribI1uivEXT (will be remapped) */ + /* _mesa_function_pool[12857]: VertexAttribI1uivEXT (will be remapped) */ "ip\0" "glVertexAttribI1uivEXT\0" "glVertexAttribI1uiv\0" "\0" - /* _mesa_function_pool[12848]: Vertex2f (offset 128) */ + /* _mesa_function_pool[12904]: Vertex2f (offset 128) */ "ff\0" "glVertex2f\0" "\0" - /* _mesa_function_pool[12863]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[12919]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */ "pppp\0" "glReplacementCodeuiColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[12916]: Color4bv (offset 26) */ + /* _mesa_function_pool[12972]: Color4bv (offset 26) */ "p\0" "glColor4bv\0" "\0" - /* _mesa_function_pool[12930]: VertexPointer (offset 321) */ + /* _mesa_function_pool[12986]: VertexPointer (offset 321) */ "iiip\0" "glVertexPointer\0" "\0" - /* _mesa_function_pool[12952]: SecondaryColor3uiEXT (will be remapped) */ + /* _mesa_function_pool[13008]: SecondaryColor3uiEXT (will be remapped) */ "iii\0" "glSecondaryColor3ui\0" "glSecondaryColor3uiEXT\0" "\0" - /* _mesa_function_pool[13000]: StartInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[13056]: StartInstrumentsSGIX (dynamic) */ "\0" "glStartInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[13025]: SecondaryColor3usvEXT (will be remapped) */ + /* _mesa_function_pool[13081]: SecondaryColor3usvEXT (will be remapped) */ "p\0" "glSecondaryColor3usv\0" "glSecondaryColor3usvEXT\0" "\0" - /* _mesa_function_pool[13073]: VertexAttrib2fvNV (will be remapped) */ + /* _mesa_function_pool[13129]: VertexAttrib2fvNV (will be remapped) */ "ip\0" "glVertexAttrib2fvNV\0" "\0" - /* _mesa_function_pool[13097]: ProgramLocalParameter4dvARB (will be remapped) */ + /* _mesa_function_pool[13153]: ProgramLocalParameter4dvARB (will be remapped) */ "iip\0" "glProgramLocalParameter4dvARB\0" "\0" - /* _mesa_function_pool[13132]: DeleteLists (offset 4) */ + /* _mesa_function_pool[13188]: DeleteLists (offset 4) */ "ii\0" "glDeleteLists\0" "\0" - /* _mesa_function_pool[13150]: LogicOp (offset 242) */ + /* _mesa_function_pool[13206]: LogicOp (offset 242) */ "i\0" "glLogicOp\0" "\0" - /* _mesa_function_pool[13163]: MatrixIndexuivARB (dynamic) */ + /* _mesa_function_pool[13219]: MatrixIndexuivARB (dynamic) */ "ip\0" "glMatrixIndexuivARB\0" "\0" - /* _mesa_function_pool[13187]: Vertex2s (offset 132) */ + /* _mesa_function_pool[13243]: Vertex2s (offset 132) */ "ii\0" "glVertex2s\0" "\0" - /* _mesa_function_pool[13202]: RenderbufferStorageMultisample (will be remapped) */ + /* _mesa_function_pool[13258]: RenderbufferStorageMultisample (will be remapped) */ "iiiii\0" "glRenderbufferStorageMultisample\0" "glRenderbufferStorageMultisampleEXT\0" "\0" - /* _mesa_function_pool[13278]: TexCoord4fv (offset 121) */ + /* _mesa_function_pool[13334]: TexCoord4fv (offset 121) */ "p\0" "glTexCoord4fv\0" "\0" - /* _mesa_function_pool[13295]: Tangent3sEXT (dynamic) */ + /* _mesa_function_pool[13351]: Tangent3sEXT (dynamic) */ "iii\0" "glTangent3sEXT\0" "\0" - /* _mesa_function_pool[13315]: GlobalAlphaFactorfSUN (dynamic) */ + /* _mesa_function_pool[13371]: GlobalAlphaFactorfSUN (dynamic) */ "f\0" "glGlobalAlphaFactorfSUN\0" "\0" - /* _mesa_function_pool[13342]: MultiTexCoord3iARB (offset 396) */ + /* _mesa_function_pool[13398]: MultiTexCoord3iARB (offset 396) */ "iiii\0" "glMultiTexCoord3i\0" "glMultiTexCoord3iARB\0" "\0" - /* _mesa_function_pool[13387]: IsProgram (will be remapped) */ + /* _mesa_function_pool[13443]: IsProgram (will be remapped) */ "i\0" "glIsProgram\0" "\0" - /* _mesa_function_pool[13402]: TexCoordPointerListIBM (dynamic) */ + /* _mesa_function_pool[13458]: TexCoordPointerListIBM (dynamic) */ "iiipi\0" "glTexCoordPointerListIBM\0" "\0" - /* _mesa_function_pool[13434]: VertexAttribI4svEXT (will be remapped) */ + /* _mesa_function_pool[13490]: VertexAttribI4svEXT (will be remapped) */ "ip\0" "glVertexAttribI4svEXT\0" "glVertexAttribI4sv\0" "\0" - /* _mesa_function_pool[13479]: GlobalAlphaFactorusSUN (dynamic) */ + /* _mesa_function_pool[13535]: GlobalAlphaFactorusSUN (dynamic) */ "i\0" "glGlobalAlphaFactorusSUN\0" "\0" - /* _mesa_function_pool[13507]: VertexAttrib2dvNV (will be remapped) */ + /* _mesa_function_pool[13563]: VertexAttrib2dvNV (will be remapped) */ "ip\0" "glVertexAttrib2dvNV\0" "\0" - /* _mesa_function_pool[13531]: FramebufferRenderbufferEXT (will be remapped) */ + /* _mesa_function_pool[13587]: FramebufferRenderbufferEXT (will be remapped) */ "iiii\0" "glFramebufferRenderbuffer\0" "glFramebufferRenderbufferEXT\0" "\0" - /* _mesa_function_pool[13592]: ClearBufferuiv (will be remapped) */ + /* _mesa_function_pool[13648]: ClearBufferuiv (will be remapped) */ "iip\0" "glClearBufferuiv\0" "\0" - /* _mesa_function_pool[13614]: VertexAttrib1dvNV (will be remapped) */ + /* _mesa_function_pool[13670]: VertexAttrib1dvNV (will be remapped) */ "ip\0" "glVertexAttrib1dvNV\0" "\0" - /* _mesa_function_pool[13638]: GenTextures (offset 328) */ + /* _mesa_function_pool[13694]: GenTextures (offset 328) */ "ip\0" "glGenTextures\0" "glGenTexturesEXT\0" "\0" - /* _mesa_function_pool[13673]: FramebufferTextureARB (will be remapped) */ + /* _mesa_function_pool[13729]: FramebufferTextureARB (will be remapped) */ "iiii\0" "glFramebufferTextureARB\0" "\0" - /* _mesa_function_pool[13703]: SetFenceNV (will be remapped) */ + /* _mesa_function_pool[13759]: SetFenceNV (will be remapped) */ "ii\0" "glSetFenceNV\0" "\0" - /* _mesa_function_pool[13720]: FramebufferTexture1DEXT (will be remapped) */ + /* _mesa_function_pool[13776]: FramebufferTexture1DEXT (will be remapped) */ "iiiii\0" "glFramebufferTexture1D\0" "glFramebufferTexture1DEXT\0" "\0" - /* _mesa_function_pool[13776]: GetCombinerOutputParameterivNV (will be remapped) */ + /* _mesa_function_pool[13832]: GetCombinerOutputParameterivNV (will be remapped) */ "iiip\0" "glGetCombinerOutputParameterivNV\0" "\0" - /* _mesa_function_pool[13815]: PixelTexGenParameterivSGIS (will be remapped) */ + /* _mesa_function_pool[13871]: MultiModeDrawArraysIBM (will be remapped) */ + "pppii\0" + "glMultiModeDrawArraysIBM\0" + "\0" + /* _mesa_function_pool[13903]: PixelTexGenParameterivSGIS (will be remapped) */ "ip\0" "glPixelTexGenParameterivSGIS\0" "\0" - /* _mesa_function_pool[13848]: TextureNormalEXT (dynamic) */ + /* _mesa_function_pool[13936]: TextureNormalEXT (dynamic) */ "i\0" "glTextureNormalEXT\0" "\0" - /* _mesa_function_pool[13870]: IndexPointerListIBM (dynamic) */ + /* _mesa_function_pool[13958]: IndexPointerListIBM (dynamic) */ "iipi\0" "glIndexPointerListIBM\0" "\0" - /* _mesa_function_pool[13898]: WeightfvARB (dynamic) */ + /* _mesa_function_pool[13986]: WeightfvARB (dynamic) */ "ip\0" "glWeightfvARB\0" "\0" - /* _mesa_function_pool[13916]: RasterPos2sv (offset 69) */ + /* _mesa_function_pool[14004]: GetCombinerOutputParameterfvNV (will be remapped) */ + "iiip\0" + "glGetCombinerOutputParameterfvNV\0" + "\0" + /* _mesa_function_pool[14043]: RasterPos2sv (offset 69) */ "p\0" "glRasterPos2sv\0" "\0" - /* _mesa_function_pool[13934]: Color4ubv (offset 36) */ + /* _mesa_function_pool[14061]: Color4ubv (offset 36) */ "p\0" "glColor4ubv\0" "\0" - /* _mesa_function_pool[13949]: DrawBuffer (offset 202) */ + /* _mesa_function_pool[14076]: DrawBuffer (offset 202) */ "i\0" "glDrawBuffer\0" "\0" - /* _mesa_function_pool[13965]: TexCoord2fv (offset 105) */ + /* _mesa_function_pool[14092]: TexCoord2fv (offset 105) */ "p\0" "glTexCoord2fv\0" "\0" - /* _mesa_function_pool[13982]: WindowPos4fMESA (will be remapped) */ + /* _mesa_function_pool[14109]: WindowPos4fMESA (will be remapped) */ "ffff\0" "glWindowPos4fMESA\0" "\0" - /* _mesa_function_pool[14006]: TexCoord1sv (offset 101) */ + /* _mesa_function_pool[14133]: TexCoord1sv (offset 101) */ "p\0" "glTexCoord1sv\0" "\0" - /* _mesa_function_pool[14023]: WindowPos3dvMESA (will be remapped) */ + /* _mesa_function_pool[14150]: WindowPos3dvMESA (will be remapped) */ "p\0" "glWindowPos3dv\0" "glWindowPos3dvARB\0" "glWindowPos3dvMESA\0" "\0" - /* _mesa_function_pool[14078]: DepthFunc (offset 245) */ + /* _mesa_function_pool[14205]: DepthFunc (offset 245) */ "i\0" "glDepthFunc\0" "\0" - /* _mesa_function_pool[14093]: PixelMapusv (offset 253) */ + /* _mesa_function_pool[14220]: PixelMapusv (offset 253) */ "iip\0" "glPixelMapusv\0" "\0" - /* _mesa_function_pool[14112]: GetQueryObjecti64vEXT (will be remapped) */ + /* _mesa_function_pool[14239]: GetQueryObjecti64vEXT (will be remapped) */ "iip\0" "glGetQueryObjecti64vEXT\0" "\0" - /* _mesa_function_pool[14141]: MultiTexCoord1dARB (offset 376) */ + /* _mesa_function_pool[14268]: MultiTexCoord1dARB (offset 376) */ "id\0" "glMultiTexCoord1d\0" "glMultiTexCoord1dARB\0" "\0" - /* _mesa_function_pool[14184]: PointParameterivNV (will be remapped) */ + /* _mesa_function_pool[14311]: PointParameterivNV (will be remapped) */ "ip\0" "glPointParameteriv\0" "glPointParameterivNV\0" "\0" - /* _mesa_function_pool[14228]: BlendFunc (offset 241) */ + /* _mesa_function_pool[14355]: IsSampler (will be remapped) */ + "i\0" + "glIsSampler\0" + "\0" + /* _mesa_function_pool[14370]: BlendFunc (offset 241) */ "ii\0" "glBlendFunc\0" "\0" - /* _mesa_function_pool[14244]: EndTransformFeedbackEXT (will be remapped) */ + /* _mesa_function_pool[14386]: EndTransformFeedbackEXT (will be remapped) */ "\0" "glEndTransformFeedbackEXT\0" "glEndTransformFeedback\0" "\0" - /* _mesa_function_pool[14295]: Uniform2fvARB (will be remapped) */ + /* _mesa_function_pool[14437]: Uniform2fvARB (will be remapped) */ "iip\0" "glUniform2fv\0" "glUniform2fvARB\0" "\0" - /* _mesa_function_pool[14329]: BufferParameteriAPPLE (will be remapped) */ + /* _mesa_function_pool[14471]: BufferParameteriAPPLE (will be remapped) */ "iii\0" "glBufferParameteriAPPLE\0" "\0" - /* _mesa_function_pool[14358]: MultiTexCoord3dvARB (offset 393) */ + /* _mesa_function_pool[14500]: MultiTexCoord3dvARB (offset 393) */ "ip\0" "glMultiTexCoord3dv\0" "glMultiTexCoord3dvARB\0" "\0" - /* _mesa_function_pool[14403]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[14545]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */ "pppp\0" "glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[14459]: DeleteObjectARB (will be remapped) */ + /* _mesa_function_pool[14601]: DeleteObjectARB (will be remapped) */ "i\0" "glDeleteObjectARB\0" "\0" - /* _mesa_function_pool[14480]: GetShaderPrecisionFormat (will be remapped) */ + /* _mesa_function_pool[14622]: GetShaderPrecisionFormat (will be remapped) */ "iipp\0" "glGetShaderPrecisionFormat\0" "\0" - /* _mesa_function_pool[14513]: MatrixIndexPointerARB (dynamic) */ + /* _mesa_function_pool[14655]: MatrixIndexPointerARB (dynamic) */ "iiip\0" "glMatrixIndexPointerARB\0" "\0" - /* _mesa_function_pool[14543]: ProgramNamedParameter4dvNV (will be remapped) */ + /* _mesa_function_pool[14685]: ProgramNamedParameter4dvNV (will be remapped) */ "iipp\0" "glProgramNamedParameter4dvNV\0" "\0" - /* _mesa_function_pool[14578]: Tangent3fvEXT (dynamic) */ + /* _mesa_function_pool[14720]: Tangent3fvEXT (dynamic) */ "p\0" "glTangent3fvEXT\0" "\0" - /* _mesa_function_pool[14597]: Flush (offset 217) */ + /* _mesa_function_pool[14739]: Flush (offset 217) */ "\0" "glFlush\0" "\0" - /* _mesa_function_pool[14607]: Color4uiv (offset 38) */ + /* _mesa_function_pool[14749]: Color4uiv (offset 38) */ "p\0" "glColor4uiv\0" "\0" - /* _mesa_function_pool[14622]: VertexAttribI4iEXT (will be remapped) */ + /* _mesa_function_pool[14764]: VertexAttribI4iEXT (will be remapped) */ "iiiii\0" "glVertexAttribI4iEXT\0" "glVertexAttribI4i\0" "\0" - /* _mesa_function_pool[14668]: GenVertexArrays (will be remapped) */ + /* _mesa_function_pool[14810]: GenVertexArrays (will be remapped) */ "ip\0" "glGenVertexArrays\0" "\0" - /* _mesa_function_pool[14690]: Uniform3uivEXT (will be remapped) */ + /* _mesa_function_pool[14832]: Uniform3uivEXT (will be remapped) */ "iip\0" "glUniform3uivEXT\0" "glUniform3uiv\0" "\0" - /* _mesa_function_pool[14726]: RasterPos3sv (offset 77) */ + /* _mesa_function_pool[14868]: RasterPos3sv (offset 77) */ "p\0" "glRasterPos3sv\0" "\0" - /* _mesa_function_pool[14744]: BindFramebufferEXT (will be remapped) */ + /* _mesa_function_pool[14886]: BindFramebufferEXT (will be remapped) */ "ii\0" "glBindFramebuffer\0" "glBindFramebufferEXT\0" "\0" - /* _mesa_function_pool[14787]: ReferencePlaneSGIX (dynamic) */ + /* _mesa_function_pool[14929]: ReferencePlaneSGIX (dynamic) */ "p\0" "glReferencePlaneSGIX\0" "\0" - /* _mesa_function_pool[14811]: PushAttrib (offset 219) */ + /* _mesa_function_pool[14953]: PushAttrib (offset 219) */ "i\0" "glPushAttrib\0" "\0" - /* _mesa_function_pool[14827]: RasterPos2i (offset 66) */ + /* _mesa_function_pool[14969]: RasterPos2i (offset 66) */ "ii\0" "glRasterPos2i\0" "\0" - /* _mesa_function_pool[14845]: ValidateProgramARB (will be remapped) */ + /* _mesa_function_pool[14987]: ValidateProgramARB (will be remapped) */ "i\0" "glValidateProgram\0" "glValidateProgramARB\0" "\0" - /* _mesa_function_pool[14887]: TexParameteriv (offset 181) */ + /* _mesa_function_pool[15029]: TexParameteriv (offset 181) */ "iip\0" "glTexParameteriv\0" "\0" - /* _mesa_function_pool[14909]: UnlockArraysEXT (will be remapped) */ + /* _mesa_function_pool[15051]: UnlockArraysEXT (will be remapped) */ "\0" "glUnlockArraysEXT\0" "\0" - /* _mesa_function_pool[14929]: TexCoord2fColor3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[15071]: TexCoord2fColor3fVertex3fSUN (dynamic) */ "ffffffff\0" "glTexCoord2fColor3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[14970]: WindowPos3fvMESA (will be remapped) */ + /* _mesa_function_pool[15112]: WindowPos3fvMESA (will be remapped) */ "p\0" "glWindowPos3fv\0" "glWindowPos3fvARB\0" "glWindowPos3fvMESA\0" "\0" - /* _mesa_function_pool[15025]: RasterPos2f (offset 64) */ + /* _mesa_function_pool[15167]: RasterPos2f (offset 64) */ "ff\0" "glRasterPos2f\0" "\0" - /* _mesa_function_pool[15043]: VertexAttrib1svNV (will be remapped) */ + /* _mesa_function_pool[15185]: VertexAttrib1svNV (will be remapped) */ "ip\0" "glVertexAttrib1svNV\0" "\0" - /* _mesa_function_pool[15067]: RasterPos2d (offset 62) */ + /* _mesa_function_pool[15209]: RasterPos2d (offset 62) */ "dd\0" "glRasterPos2d\0" "\0" - /* _mesa_function_pool[15085]: RasterPos3fv (offset 73) */ + /* _mesa_function_pool[15227]: RasterPos3fv (offset 73) */ "p\0" "glRasterPos3fv\0" "\0" - /* _mesa_function_pool[15103]: CopyTexSubImage3D (offset 373) */ + /* _mesa_function_pool[15245]: CopyTexSubImage3D (offset 373) */ "iiiiiiiii\0" "glCopyTexSubImage3D\0" "glCopyTexSubImage3DEXT\0" "\0" - /* _mesa_function_pool[15157]: VertexAttrib2dARB (will be remapped) */ + /* _mesa_function_pool[15299]: VertexAttrib2dARB (will be remapped) */ "idd\0" "glVertexAttrib2d\0" "glVertexAttrib2dARB\0" "\0" - /* _mesa_function_pool[15199]: Color4ub (offset 35) */ + /* _mesa_function_pool[15341]: Color4ub (offset 35) */ "iiii\0" "glColor4ub\0" "\0" - /* _mesa_function_pool[15216]: GetInteger64v (will be remapped) */ + /* _mesa_function_pool[15358]: GetInteger64v (will be remapped) */ "ip\0" "glGetInteger64v\0" "\0" - /* _mesa_function_pool[15236]: TextureColorMaskSGIS (dynamic) */ + /* _mesa_function_pool[15378]: TextureColorMaskSGIS (dynamic) */ "iiii\0" "glTextureColorMaskSGIS\0" "\0" - /* _mesa_function_pool[15265]: RasterPos2s (offset 68) */ + /* _mesa_function_pool[15407]: RasterPos2s (offset 68) */ "ii\0" "glRasterPos2s\0" "\0" - /* _mesa_function_pool[15283]: GetColorTable (offset 343) */ + /* _mesa_function_pool[15425]: GetColorTable (offset 343) */ "iiip\0" "glGetColorTable\0" "glGetColorTableSGI\0" "glGetColorTableEXT\0" "\0" - /* _mesa_function_pool[15343]: SelectBuffer (offset 195) */ + /* _mesa_function_pool[15485]: SelectBuffer (offset 195) */ "ip\0" "glSelectBuffer\0" "\0" - /* _mesa_function_pool[15362]: Indexiv (offset 49) */ + /* _mesa_function_pool[15504]: Indexiv (offset 49) */ "p\0" "glIndexiv\0" "\0" - /* _mesa_function_pool[15375]: TexCoord3i (offset 114) */ + /* _mesa_function_pool[15517]: TexCoord3i (offset 114) */ "iii\0" "glTexCoord3i\0" "\0" - /* _mesa_function_pool[15393]: CopyColorTable (offset 342) */ + /* _mesa_function_pool[15535]: CopyColorTable (offset 342) */ "iiiii\0" "glCopyColorTable\0" "glCopyColorTableSGI\0" "\0" - /* _mesa_function_pool[15437]: GetHistogramParameterfv (offset 362) */ + /* _mesa_function_pool[15579]: GetHistogramParameterfv (offset 362) */ "iip\0" "glGetHistogramParameterfv\0" "glGetHistogramParameterfvEXT\0" "\0" - /* _mesa_function_pool[15497]: Frustum (offset 289) */ + /* _mesa_function_pool[15639]: Frustum (offset 289) */ "dddddd\0" "glFrustum\0" "\0" - /* _mesa_function_pool[15515]: GetString (offset 275) */ + /* _mesa_function_pool[15657]: GetString (offset 275) */ "i\0" "glGetString\0" "\0" - /* _mesa_function_pool[15530]: ColorPointervINTEL (dynamic) */ + /* _mesa_function_pool[15672]: ColorPointervINTEL (dynamic) */ "iip\0" "glColorPointervINTEL\0" "\0" - /* _mesa_function_pool[15556]: TexEnvf (offset 184) */ + /* _mesa_function_pool[15698]: TexEnvf (offset 184) */ "iif\0" "glTexEnvf\0" "\0" - /* _mesa_function_pool[15571]: TexCoord3d (offset 110) */ + /* _mesa_function_pool[15713]: TexCoord3d (offset 110) */ "ddd\0" "glTexCoord3d\0" "\0" - /* _mesa_function_pool[15589]: AlphaFragmentOp1ATI (will be remapped) */ + /* _mesa_function_pool[15731]: AlphaFragmentOp1ATI (will be remapped) */ "iiiiii\0" "glAlphaFragmentOp1ATI\0" "\0" - /* _mesa_function_pool[15619]: TexCoord3f (offset 112) */ + /* _mesa_function_pool[15761]: TexCoord3f (offset 112) */ "fff\0" "glTexCoord3f\0" "\0" - /* _mesa_function_pool[15637]: MultiTexCoord3ivARB (offset 397) */ + /* _mesa_function_pool[15779]: MultiTexCoord3ivARB (offset 397) */ "ip\0" "glMultiTexCoord3iv\0" "glMultiTexCoord3ivARB\0" "\0" - /* _mesa_function_pool[15682]: MultiTexCoord2sARB (offset 390) */ + /* _mesa_function_pool[15824]: MultiTexCoord2sARB (offset 390) */ "iii\0" "glMultiTexCoord2s\0" "glMultiTexCoord2sARB\0" "\0" - /* _mesa_function_pool[15726]: VertexAttrib1dvARB (will be remapped) */ + /* _mesa_function_pool[15868]: VertexAttrib1dvARB (will be remapped) */ "ip\0" "glVertexAttrib1dv\0" "glVertexAttrib1dvARB\0" "\0" - /* _mesa_function_pool[15769]: DeleteTextures (offset 327) */ + /* _mesa_function_pool[15911]: DeleteTextures (offset 327) */ "ip\0" "glDeleteTextures\0" "glDeleteTexturesEXT\0" "\0" - /* _mesa_function_pool[15810]: TexCoordPointerEXT (will be remapped) */ + /* _mesa_function_pool[15952]: TexCoordPointerEXT (will be remapped) */ "iiiip\0" "glTexCoordPointerEXT\0" "\0" - /* _mesa_function_pool[15838]: TexSubImage4DSGIS (dynamic) */ + /* _mesa_function_pool[15980]: TexSubImage4DSGIS (dynamic) */ "iiiiiiiiiiiip\0" "glTexSubImage4DSGIS\0" "\0" - /* _mesa_function_pool[15873]: TexCoord3s (offset 116) */ + /* _mesa_function_pool[16015]: TexCoord3s (offset 116) */ "iii\0" "glTexCoord3s\0" "\0" - /* _mesa_function_pool[15891]: GetTexLevelParameteriv (offset 285) */ + /* _mesa_function_pool[16033]: GetTexLevelParameteriv (offset 285) */ "iiip\0" "glGetTexLevelParameteriv\0" "\0" - /* _mesa_function_pool[15922]: CombinerStageParameterfvNV (dynamic) */ + /* _mesa_function_pool[16064]: CombinerStageParameterfvNV (dynamic) */ "iip\0" "glCombinerStageParameterfvNV\0" "\0" - /* _mesa_function_pool[15956]: StopInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[16098]: StopInstrumentsSGIX (dynamic) */ "i\0" "glStopInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[15981]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */ + /* _mesa_function_pool[16123]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */ "fffffffffffffff\0" "glTexCoord4fColor4fNormal3fVertex4fSUN\0" "\0" - /* _mesa_function_pool[16037]: ClearAccum (offset 204) */ + /* _mesa_function_pool[16179]: ClearAccum (offset 204) */ "ffff\0" "glClearAccum\0" "\0" - /* _mesa_function_pool[16056]: DeformSGIX (dynamic) */ + /* _mesa_function_pool[16198]: DeformSGIX (dynamic) */ "i\0" "glDeformSGIX\0" "\0" - /* _mesa_function_pool[16072]: GetVertexAttribfvARB (will be remapped) */ + /* _mesa_function_pool[16214]: GetVertexAttribfvARB (will be remapped) */ "iip\0" "glGetVertexAttribfv\0" "glGetVertexAttribfvARB\0" "\0" - /* _mesa_function_pool[16120]: SecondaryColor3ivEXT (will be remapped) */ + /* _mesa_function_pool[16262]: SecondaryColor3ivEXT (will be remapped) */ "p\0" "glSecondaryColor3iv\0" "glSecondaryColor3ivEXT\0" "\0" - /* _mesa_function_pool[16166]: TexCoord4iv (offset 123) */ + /* _mesa_function_pool[16308]: TexCoord4iv (offset 123) */ "p\0" "glTexCoord4iv\0" "\0" - /* _mesa_function_pool[16183]: VertexAttribI4uiEXT (will be remapped) */ + /* _mesa_function_pool[16325]: VertexAttribI4uiEXT (will be remapped) */ "iiiii\0" "glVertexAttribI4uiEXT\0" "glVertexAttribI4ui\0" "\0" - /* _mesa_function_pool[16231]: GetFragmentMaterialfvSGIX (dynamic) */ + /* _mesa_function_pool[16373]: GetFragmentMaterialfvSGIX (dynamic) */ "iip\0" "glGetFragmentMaterialfvSGIX\0" "\0" - /* _mesa_function_pool[16264]: UniformMatrix4x2fv (will be remapped) */ + /* _mesa_function_pool[16406]: UniformMatrix4x2fv (will be remapped) */ "iiip\0" "glUniformMatrix4x2fv\0" "\0" - /* _mesa_function_pool[16291]: GetDetailTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[16433]: GetDetailTexFuncSGIS (dynamic) */ "ip\0" "glGetDetailTexFuncSGIS\0" "\0" - /* _mesa_function_pool[16318]: GetCombinerStageParameterfvNV (dynamic) */ + /* _mesa_function_pool[16460]: GetCombinerStageParameterfvNV (dynamic) */ "iip\0" "glGetCombinerStageParameterfvNV\0" "\0" - /* _mesa_function_pool[16355]: PolygonOffset (offset 319) */ + /* _mesa_function_pool[16497]: SamplerParameterIiv (will be remapped) */ + "iip\0" + "glSamplerParameterIiv\0" + "\0" + /* _mesa_function_pool[16524]: PolygonOffset (offset 319) */ "ff\0" "glPolygonOffset\0" "\0" - /* _mesa_function_pool[16375]: BindVertexArray (will be remapped) */ + /* _mesa_function_pool[16544]: BindVertexArray (will be remapped) */ "i\0" "glBindVertexArray\0" "\0" - /* _mesa_function_pool[16396]: Color4ubVertex2fvSUN (dynamic) */ + /* _mesa_function_pool[16565]: Color4ubVertex2fvSUN (dynamic) */ "pp\0" "glColor4ubVertex2fvSUN\0" "\0" - /* _mesa_function_pool[16423]: Rectd (offset 86) */ + /* _mesa_function_pool[16592]: Rectd (offset 86) */ "dddd\0" "glRectd\0" "\0" - /* _mesa_function_pool[16437]: TexFilterFuncSGIS (dynamic) */ + /* _mesa_function_pool[16606]: TexFilterFuncSGIS (dynamic) */ "iiip\0" "glTexFilterFuncSGIS\0" "\0" - /* _mesa_function_pool[16463]: TextureBarrierNV (will be remapped) */ + /* _mesa_function_pool[16632]: TextureBarrierNV (will be remapped) */ "\0" "glTextureBarrierNV\0" "\0" - /* _mesa_function_pool[16484]: VertexAttribI4ubvEXT (will be remapped) */ + /* _mesa_function_pool[16653]: SamplerParameterfv (will be remapped) */ + "iip\0" + "glSamplerParameterfv\0" + "\0" + /* _mesa_function_pool[16679]: VertexAttribI4ubvEXT (will be remapped) */ "ip\0" "glVertexAttribI4ubvEXT\0" "glVertexAttribI4ubv\0" "\0" - /* _mesa_function_pool[16531]: GetAttribLocationARB (will be remapped) */ + /* _mesa_function_pool[16726]: GetAttribLocationARB (will be remapped) */ "ip\0" "glGetAttribLocation\0" "glGetAttribLocationARB\0" "\0" - /* _mesa_function_pool[16578]: RasterPos3i (offset 74) */ + /* _mesa_function_pool[16773]: RasterPos3i (offset 74) */ "iii\0" "glRasterPos3i\0" "\0" - /* _mesa_function_pool[16597]: VertexAttrib4ubvARB (will be remapped) */ + /* _mesa_function_pool[16792]: BlendEquationSeparateiARB (will be remapped) */ + "iii\0" + "glBlendEquationSeparateiARB\0" + "\0" + /* _mesa_function_pool[16825]: VertexAttrib4ubvARB (will be remapped) */ "ip\0" "glVertexAttrib4ubv\0" "glVertexAttrib4ubvARB\0" "\0" - /* _mesa_function_pool[16642]: DetailTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[16870]: DetailTexFuncSGIS (dynamic) */ "iip\0" "glDetailTexFuncSGIS\0" "\0" - /* _mesa_function_pool[16667]: Normal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[16895]: Normal3fVertex3fSUN (dynamic) */ "ffffff\0" "glNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[16697]: CopyTexImage2D (offset 324) */ + /* _mesa_function_pool[16925]: CopyTexImage2D (offset 324) */ "iiiiiiii\0" "glCopyTexImage2D\0" "glCopyTexImage2DEXT\0" "\0" - /* _mesa_function_pool[16744]: GetBufferPointervARB (will be remapped) */ + /* _mesa_function_pool[16972]: GetBufferPointervARB (will be remapped) */ "iip\0" "glGetBufferPointerv\0" "glGetBufferPointervARB\0" "\0" - /* _mesa_function_pool[16792]: ProgramEnvParameter4fARB (will be remapped) */ + /* _mesa_function_pool[17020]: ProgramEnvParameter4fARB (will be remapped) */ "iiffff\0" "glProgramEnvParameter4fARB\0" "glProgramParameter4fNV\0" "\0" - /* _mesa_function_pool[16850]: Uniform3ivARB (will be remapped) */ + /* _mesa_function_pool[17078]: Uniform3ivARB (will be remapped) */ "iip\0" "glUniform3iv\0" "glUniform3ivARB\0" "\0" - /* _mesa_function_pool[16884]: Lightfv (offset 160) */ + /* _mesa_function_pool[17112]: Lightfv (offset 160) */ "iip\0" "glLightfv\0" "\0" - /* _mesa_function_pool[16899]: PrimitiveRestartIndexNV (will be remapped) */ + /* _mesa_function_pool[17127]: PrimitiveRestartIndexNV (will be remapped) */ "i\0" "glPrimitiveRestartIndexNV\0" "glPrimitiveRestartIndex\0" "\0" - /* _mesa_function_pool[16952]: ClearDepth (offset 208) */ + /* _mesa_function_pool[17180]: ClearDepth (offset 208) */ "d\0" "glClearDepth\0" "\0" - /* _mesa_function_pool[16968]: GetFenceivNV (will be remapped) */ + /* _mesa_function_pool[17196]: GetFenceivNV (will be remapped) */ "iip\0" "glGetFenceivNV\0" "\0" - /* _mesa_function_pool[16988]: WindowPos4dvMESA (will be remapped) */ + /* _mesa_function_pool[17216]: WindowPos4dvMESA (will be remapped) */ "p\0" "glWindowPos4dvMESA\0" "\0" - /* _mesa_function_pool[17010]: ColorSubTable (offset 346) */ + /* _mesa_function_pool[17238]: ColorSubTable (offset 346) */ "iiiiip\0" "glColorSubTable\0" "glColorSubTableEXT\0" "\0" - /* _mesa_function_pool[17053]: Color4fv (offset 30) */ + /* _mesa_function_pool[17281]: Color4fv (offset 30) */ "p\0" "glColor4fv\0" "\0" - /* _mesa_function_pool[17067]: MultiTexCoord4ivARB (offset 405) */ + /* _mesa_function_pool[17295]: MultiTexCoord4ivARB (offset 405) */ "ip\0" "glMultiTexCoord4iv\0" "glMultiTexCoord4ivARB\0" "\0" - /* _mesa_function_pool[17112]: ProgramLocalParameters4fvEXT (will be remapped) */ + /* _mesa_function_pool[17340]: ProgramLocalParameters4fvEXT (will be remapped) */ "iiip\0" "glProgramLocalParameters4fvEXT\0" "\0" - /* _mesa_function_pool[17149]: ColorPointer (offset 308) */ + /* _mesa_function_pool[17377]: ColorPointer (offset 308) */ "iiip\0" "glColorPointer\0" "\0" - /* _mesa_function_pool[17170]: Rects (offset 92) */ + /* _mesa_function_pool[17398]: Rects (offset 92) */ "iiii\0" "glRects\0" "\0" - /* _mesa_function_pool[17184]: GetMapAttribParameterfvNV (dynamic) */ + /* _mesa_function_pool[17412]: GetMapAttribParameterfvNV (dynamic) */ "iiip\0" "glGetMapAttribParameterfvNV\0" "\0" - /* _mesa_function_pool[17218]: CreateShaderProgramEXT (will be remapped) */ + /* _mesa_function_pool[17446]: CreateShaderProgramEXT (will be remapped) */ "ip\0" "glCreateShaderProgramEXT\0" "\0" - /* _mesa_function_pool[17247]: ActiveProgramEXT (will be remapped) */ + /* _mesa_function_pool[17475]: ActiveProgramEXT (will be remapped) */ "i\0" "glActiveProgramEXT\0" "\0" - /* _mesa_function_pool[17269]: Lightiv (offset 162) */ + /* _mesa_function_pool[17497]: Lightiv (offset 162) */ "iip\0" "glLightiv\0" "\0" - /* _mesa_function_pool[17284]: VertexAttrib4sARB (will be remapped) */ + /* _mesa_function_pool[17512]: VertexAttrib4sARB (will be remapped) */ "iiiii\0" "glVertexAttrib4s\0" "glVertexAttrib4sARB\0" "\0" - /* _mesa_function_pool[17328]: GetQueryObjectuivARB (will be remapped) */ + /* _mesa_function_pool[17556]: GetQueryObjectuivARB (will be remapped) */ "iip\0" "glGetQueryObjectuiv\0" "glGetQueryObjectuivARB\0" "\0" - /* _mesa_function_pool[17376]: GetTexParameteriv (offset 283) */ + /* _mesa_function_pool[17604]: GetTexParameteriv (offset 283) */ "iip\0" "glGetTexParameteriv\0" "\0" - /* _mesa_function_pool[17401]: MapParameterivNV (dynamic) */ + /* _mesa_function_pool[17629]: MapParameterivNV (dynamic) */ "iip\0" "glMapParameterivNV\0" "\0" - /* _mesa_function_pool[17425]: GenRenderbuffersEXT (will be remapped) */ + /* _mesa_function_pool[17653]: GenRenderbuffersEXT (will be remapped) */ "ip\0" "glGenRenderbuffers\0" "glGenRenderbuffersEXT\0" "\0" - /* _mesa_function_pool[17470]: ClearBufferfv (will be remapped) */ + /* _mesa_function_pool[17698]: ClearBufferfv (will be remapped) */ "iip\0" "glClearBufferfv\0" "\0" - /* _mesa_function_pool[17491]: VertexAttrib2dvARB (will be remapped) */ + /* _mesa_function_pool[17719]: VertexAttrib2dvARB (will be remapped) */ "ip\0" "glVertexAttrib2dv\0" "glVertexAttrib2dvARB\0" "\0" - /* _mesa_function_pool[17534]: EdgeFlagPointerEXT (will be remapped) */ + /* _mesa_function_pool[17762]: EdgeFlagPointerEXT (will be remapped) */ "iip\0" "glEdgeFlagPointerEXT\0" "\0" - /* _mesa_function_pool[17560]: VertexAttribs2svNV (will be remapped) */ + /* _mesa_function_pool[17788]: VertexAttribs2svNV (will be remapped) */ "iip\0" "glVertexAttribs2svNV\0" "\0" - /* _mesa_function_pool[17586]: WeightbvARB (dynamic) */ + /* _mesa_function_pool[17814]: WeightbvARB (dynamic) */ "ip\0" "glWeightbvARB\0" "\0" - /* _mesa_function_pool[17604]: VertexAttrib2fvARB (will be remapped) */ + /* _mesa_function_pool[17832]: VertexAttrib2fvARB (will be remapped) */ "ip\0" "glVertexAttrib2fv\0" "glVertexAttrib2fvARB\0" "\0" - /* _mesa_function_pool[17647]: GetBufferParameterivARB (will be remapped) */ + /* _mesa_function_pool[17875]: GetBufferParameterivARB (will be remapped) */ "iip\0" "glGetBufferParameteriv\0" "glGetBufferParameterivARB\0" "\0" - /* _mesa_function_pool[17701]: Rectdv (offset 87) */ + /* _mesa_function_pool[17929]: Rectdv (offset 87) */ "pp\0" "glRectdv\0" "\0" - /* _mesa_function_pool[17714]: ListParameteriSGIX (dynamic) */ + /* _mesa_function_pool[17942]: ListParameteriSGIX (dynamic) */ "iii\0" "glListParameteriSGIX\0" "\0" - /* _mesa_function_pool[17740]: BlendEquationiARB (will be remapped) */ + /* _mesa_function_pool[17968]: BlendEquationiARB (will be remapped) */ "ii\0" "glBlendEquationiARB\0" "\0" - /* _mesa_function_pool[17764]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[17992]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */ "iffffffffff\0" "glReplacementCodeuiColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[17823]: InstrumentsBufferSGIX (dynamic) */ + /* _mesa_function_pool[18051]: InstrumentsBufferSGIX (dynamic) */ "ip\0" "glInstrumentsBufferSGIX\0" "\0" - /* _mesa_function_pool[17851]: VertexAttrib4NivARB (will be remapped) */ + /* _mesa_function_pool[18079]: VertexAttrib4NivARB (will be remapped) */ "ip\0" "glVertexAttrib4Niv\0" "glVertexAttrib4NivARB\0" "\0" - /* _mesa_function_pool[17896]: DrawArraysInstancedARB (will be remapped) */ + /* _mesa_function_pool[18124]: DrawArraysInstancedARB (will be remapped) */ "iiii\0" "glDrawArraysInstancedARB\0" "glDrawArraysInstancedEXT\0" "glDrawArraysInstanced\0" "\0" - /* _mesa_function_pool[17974]: GetAttachedShaders (will be remapped) */ + /* _mesa_function_pool[18202]: GetAttachedShaders (will be remapped) */ "iipp\0" "glGetAttachedShaders\0" "\0" - /* _mesa_function_pool[18001]: GenVertexArraysAPPLE (will be remapped) */ + /* _mesa_function_pool[18229]: GenVertexArraysAPPLE (will be remapped) */ "ip\0" "glGenVertexArraysAPPLE\0" "\0" - /* _mesa_function_pool[18028]: ClearBufferfi (will be remapped) */ + /* _mesa_function_pool[18256]: ClearBufferfi (will be remapped) */ "iifi\0" "glClearBufferfi\0" "\0" - /* _mesa_function_pool[18050]: Materialiv (offset 172) */ + /* _mesa_function_pool[18278]: Materialiv (offset 172) */ "iip\0" "glMaterialiv\0" "\0" - /* _mesa_function_pool[18068]: PushClientAttrib (offset 335) */ + /* _mesa_function_pool[18296]: PushClientAttrib (offset 335) */ "i\0" "glPushClientAttrib\0" "\0" - /* _mesa_function_pool[18090]: ProgramEnvParameters4fvEXT (will be remapped) */ - "iiip\0" - "glProgramEnvParameters4fvEXT\0" + /* _mesa_function_pool[18318]: SamplerParameteriv (will be remapped) */ + "iip\0" + "glSamplerParameteriv\0" "\0" - /* _mesa_function_pool[18125]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[18344]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ "pppp\0" "glTexCoord2fColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[18171]: WindowPos2iMESA (will be remapped) */ + /* _mesa_function_pool[18390]: WindowPos2iMESA (will be remapped) */ "ii\0" "glWindowPos2i\0" "glWindowPos2iARB\0" "glWindowPos2iMESA\0" "\0" - /* _mesa_function_pool[18224]: SampleMaskSGIS (will be remapped) */ + /* _mesa_function_pool[18443]: SampleMaskSGIS (will be remapped) */ "fi\0" "glSampleMaskSGIS\0" "glSampleMaskEXT\0" "\0" - /* _mesa_function_pool[18261]: SecondaryColor3fvEXT (will be remapped) */ + /* _mesa_function_pool[18480]: SecondaryColor3fvEXT (will be remapped) */ "p\0" "glSecondaryColor3fv\0" "glSecondaryColor3fvEXT\0" "\0" - /* _mesa_function_pool[18307]: PolygonMode (offset 174) */ + /* _mesa_function_pool[18526]: PolygonMode (offset 174) */ "ii\0" "glPolygonMode\0" "\0" - /* _mesa_function_pool[18325]: CompressedTexSubImage1DARB (will be remapped) */ + /* _mesa_function_pool[18544]: CompressedTexSubImage1DARB (will be remapped) */ "iiiiiip\0" "glCompressedTexSubImage1D\0" "glCompressedTexSubImage1DARB\0" "\0" - /* _mesa_function_pool[18389]: VertexAttribI1iEXT (will be remapped) */ + /* _mesa_function_pool[18608]: VertexAttribI1iEXT (will be remapped) */ "ii\0" "glVertexAttribI1iEXT\0" "glVertexAttribI1i\0" "\0" - /* _mesa_function_pool[18432]: GetVertexAttribivNV (will be remapped) */ + /* _mesa_function_pool[18651]: TexCoord2fNormal3fVertex3fSUN (dynamic) */ + "ffffffff\0" + "glTexCoord2fNormal3fVertex3fSUN\0" + "\0" + /* _mesa_function_pool[18693]: GetVertexAttribivNV (will be remapped) */ "iip\0" "glGetVertexAttribivNV\0" "\0" - /* _mesa_function_pool[18459]: GetProgramStringARB (will be remapped) */ + /* _mesa_function_pool[18720]: GetProgramStringARB (will be remapped) */ "iip\0" "glGetProgramStringARB\0" "\0" - /* _mesa_function_pool[18486]: VertexAttribIPointerEXT (will be remapped) */ + /* _mesa_function_pool[18747]: VertexAttribIPointerEXT (will be remapped) */ "iiiip\0" "glVertexAttribIPointerEXT\0" "glVertexAttribIPointer\0" "\0" - /* _mesa_function_pool[18542]: TexBumpParameterfvATI (will be remapped) */ + /* _mesa_function_pool[18803]: TexBumpParameterfvATI (will be remapped) */ "ip\0" "glTexBumpParameterfvATI\0" "\0" - /* _mesa_function_pool[18570]: CompileShaderARB (will be remapped) */ + /* _mesa_function_pool[18831]: Tangent3ivEXT (dynamic) */ + "p\0" + "glTangent3ivEXT\0" + "\0" + /* _mesa_function_pool[18850]: CompileShaderARB (will be remapped) */ "i\0" "glCompileShader\0" "glCompileShaderARB\0" "\0" - /* _mesa_function_pool[18608]: DeleteShader (will be remapped) */ + /* _mesa_function_pool[18888]: DeleteShader (will be remapped) */ "i\0" "glDeleteShader\0" "\0" - /* _mesa_function_pool[18626]: DisableClientState (offset 309) */ + /* _mesa_function_pool[18906]: DisableClientState (offset 309) */ "i\0" "glDisableClientState\0" "\0" - /* _mesa_function_pool[18650]: TexGeni (offset 192) */ + /* _mesa_function_pool[18930]: TexGeni (offset 192) */ "iii\0" "glTexGeni\0" "\0" - /* _mesa_function_pool[18665]: TexGenf (offset 190) */ + /* _mesa_function_pool[18945]: TexGenf (offset 190) */ "iif\0" "glTexGenf\0" "\0" - /* _mesa_function_pool[18680]: Uniform3fARB (will be remapped) */ + /* _mesa_function_pool[18960]: Uniform3fARB (will be remapped) */ "ifff\0" "glUniform3f\0" "glUniform3fARB\0" "\0" - /* _mesa_function_pool[18713]: TexGend (offset 188) */ + /* _mesa_function_pool[18993]: TexGend (offset 188) */ "iid\0" "glTexGend\0" "\0" - /* _mesa_function_pool[18728]: ListParameterfvSGIX (dynamic) */ + /* _mesa_function_pool[19008]: ListParameterfvSGIX (dynamic) */ "iip\0" "glListParameterfvSGIX\0" "\0" - /* _mesa_function_pool[18755]: GetPolygonStipple (offset 274) */ + /* _mesa_function_pool[19035]: GetPolygonStipple (offset 274) */ "p\0" "glGetPolygonStipple\0" "\0" - /* _mesa_function_pool[18778]: Tangent3dvEXT (dynamic) */ + /* _mesa_function_pool[19058]: Tangent3dvEXT (dynamic) */ "p\0" "glTangent3dvEXT\0" "\0" - /* _mesa_function_pool[18797]: BindBufferOffsetEXT (will be remapped) */ + /* _mesa_function_pool[19077]: BindBufferOffsetEXT (will be remapped) */ "iiii\0" "glBindBufferOffsetEXT\0" "\0" - /* _mesa_function_pool[18825]: WindowPos3sMESA (will be remapped) */ + /* _mesa_function_pool[19105]: WindowPos3sMESA (will be remapped) */ "iii\0" "glWindowPos3s\0" "glWindowPos3sARB\0" "glWindowPos3sMESA\0" "\0" - /* _mesa_function_pool[18879]: VertexAttrib2svNV (will be remapped) */ + /* _mesa_function_pool[19159]: VertexAttrib2svNV (will be remapped) */ "ip\0" "glVertexAttrib2svNV\0" "\0" - /* _mesa_function_pool[18903]: DisableIndexedEXT (will be remapped) */ + /* _mesa_function_pool[19183]: DisableIndexedEXT (will be remapped) */ "ii\0" "glDisableIndexedEXT\0" "glDisablei\0" "\0" - /* _mesa_function_pool[18938]: BindBufferBaseEXT (will be remapped) */ + /* _mesa_function_pool[19218]: BindBufferBaseEXT (will be remapped) */ "iii\0" "glBindBufferBaseEXT\0" "glBindBufferBase\0" "\0" - /* _mesa_function_pool[18980]: TexCoord2fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[19260]: TexCoord2fVertex3fvSUN (dynamic) */ "pp\0" "glTexCoord2fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[19009]: WindowPos4sMESA (will be remapped) */ + /* _mesa_function_pool[19289]: WindowPos4sMESA (will be remapped) */ "iiii\0" "glWindowPos4sMESA\0" "\0" - /* _mesa_function_pool[19033]: VertexAttrib4NuivARB (will be remapped) */ + /* _mesa_function_pool[19313]: VertexAttrib4NuivARB (will be remapped) */ "ip\0" "glVertexAttrib4Nuiv\0" "glVertexAttrib4NuivARB\0" "\0" - /* _mesa_function_pool[19080]: ClientActiveTextureARB (offset 375) */ + /* _mesa_function_pool[19360]: ClientActiveTextureARB (offset 375) */ "i\0" "glClientActiveTexture\0" "glClientActiveTextureARB\0" "\0" - /* _mesa_function_pool[19130]: PixelTexGenSGIX (will be remapped) */ - "i\0" - "glPixelTexGenSGIX\0" + /* _mesa_function_pool[19410]: GetSamplerParameterIuiv (will be remapped) */ + "iip\0" + "glGetSamplerParameterIuiv\0" "\0" - /* _mesa_function_pool[19151]: ReplacementCodeusvSUN (dynamic) */ + /* _mesa_function_pool[19441]: ReplacementCodeusvSUN (dynamic) */ "p\0" "glReplacementCodeusvSUN\0" "\0" - /* _mesa_function_pool[19178]: Uniform4fARB (will be remapped) */ + /* _mesa_function_pool[19468]: Uniform4fARB (will be remapped) */ "iffff\0" "glUniform4f\0" "glUniform4fARB\0" "\0" - /* _mesa_function_pool[19212]: Color4sv (offset 34) */ + /* _mesa_function_pool[19502]: Color4sv (offset 34) */ "p\0" "glColor4sv\0" "\0" - /* _mesa_function_pool[19226]: FlushMappedBufferRange (will be remapped) */ + /* _mesa_function_pool[19516]: FlushMappedBufferRange (will be remapped) */ "iii\0" "glFlushMappedBufferRange\0" "\0" - /* _mesa_function_pool[19256]: IsProgramNV (will be remapped) */ + /* _mesa_function_pool[19546]: IsProgramNV (will be remapped) */ "i\0" "glIsProgramARB\0" "glIsProgramNV\0" "\0" - /* _mesa_function_pool[19288]: FlushMappedBufferRangeAPPLE (will be remapped) */ + /* _mesa_function_pool[19578]: FlushMappedBufferRangeAPPLE (will be remapped) */ "iii\0" "glFlushMappedBufferRangeAPPLE\0" "\0" - /* _mesa_function_pool[19323]: PixelZoom (offset 246) */ + /* _mesa_function_pool[19613]: PixelZoom (offset 246) */ "ff\0" "glPixelZoom\0" "\0" - /* _mesa_function_pool[19339]: ReplacementCodePointerSUN (dynamic) */ + /* _mesa_function_pool[19629]: ReplacementCodePointerSUN (dynamic) */ "iip\0" "glReplacementCodePointerSUN\0" "\0" - /* _mesa_function_pool[19372]: ProgramEnvParameter4dARB (will be remapped) */ + /* _mesa_function_pool[19662]: ProgramEnvParameter4dARB (will be remapped) */ "iidddd\0" "glProgramEnvParameter4dARB\0" "glProgramParameter4dNV\0" "\0" - /* _mesa_function_pool[19430]: ColorTableParameterfv (offset 340) */ + /* _mesa_function_pool[19720]: ColorTableParameterfv (offset 340) */ "iip\0" "glColorTableParameterfv\0" "glColorTableParameterfvSGI\0" "\0" - /* _mesa_function_pool[19486]: FragmentLightModelfSGIX (dynamic) */ + /* _mesa_function_pool[19776]: FragmentLightModelfSGIX (dynamic) */ "if\0" "glFragmentLightModelfSGIX\0" "\0" - /* _mesa_function_pool[19516]: Binormal3bvEXT (dynamic) */ + /* _mesa_function_pool[19806]: Binormal3bvEXT (dynamic) */ "p\0" "glBinormal3bvEXT\0" "\0" - /* _mesa_function_pool[19536]: PixelMapuiv (offset 252) */ + /* _mesa_function_pool[19826]: PixelMapuiv (offset 252) */ "iip\0" "glPixelMapuiv\0" "\0" - /* _mesa_function_pool[19555]: Color3dv (offset 12) */ + /* _mesa_function_pool[19845]: Color3dv (offset 12) */ "p\0" "glColor3dv\0" "\0" - /* _mesa_function_pool[19569]: IsTexture (offset 330) */ + /* _mesa_function_pool[19859]: IsTexture (offset 330) */ "i\0" "glIsTexture\0" "glIsTextureEXT\0" "\0" - /* _mesa_function_pool[19599]: VertexWeightfvEXT (dynamic) */ + /* _mesa_function_pool[19889]: GenSamplers (will be remapped) */ + "ip\0" + "glGenSamplers\0" + "\0" + /* _mesa_function_pool[19907]: VertexWeightfvEXT (dynamic) */ "p\0" "glVertexWeightfvEXT\0" "\0" - /* _mesa_function_pool[19622]: VertexAttrib1dARB (will be remapped) */ + /* _mesa_function_pool[19930]: VertexAttrib1dARB (will be remapped) */ "id\0" "glVertexAttrib1d\0" "glVertexAttrib1dARB\0" "\0" - /* _mesa_function_pool[19663]: ImageTransformParameterivHP (dynamic) */ + /* _mesa_function_pool[19971]: ImageTransformParameterivHP (dynamic) */ "iip\0" "glImageTransformParameterivHP\0" "\0" - /* _mesa_function_pool[19698]: TexCoord4i (offset 122) */ + /* _mesa_function_pool[20006]: TexCoord4i (offset 122) */ "iiii\0" "glTexCoord4i\0" "\0" - /* _mesa_function_pool[19717]: DeleteQueriesARB (will be remapped) */ + /* _mesa_function_pool[20025]: DeleteQueriesARB (will be remapped) */ "ip\0" "glDeleteQueries\0" "glDeleteQueriesARB\0" "\0" - /* _mesa_function_pool[19756]: Color4ubVertex2fSUN (dynamic) */ + /* _mesa_function_pool[20064]: Color4ubVertex2fSUN (dynamic) */ "iiiiff\0" "glColor4ubVertex2fSUN\0" "\0" - /* _mesa_function_pool[19786]: FragmentColorMaterialSGIX (dynamic) */ + /* _mesa_function_pool[20094]: FragmentColorMaterialSGIX (dynamic) */ "ii\0" "glFragmentColorMaterialSGIX\0" "\0" - /* _mesa_function_pool[19818]: CurrentPaletteMatrixARB (dynamic) */ + /* _mesa_function_pool[20126]: CurrentPaletteMatrixARB (dynamic) */ "i\0" "glCurrentPaletteMatrixARB\0" "\0" - /* _mesa_function_pool[19847]: GetMapdv (offset 266) */ + /* _mesa_function_pool[20155]: GetMapdv (offset 266) */ "iip\0" "glGetMapdv\0" "\0" - /* _mesa_function_pool[19863]: ObjectPurgeableAPPLE (will be remapped) */ + /* _mesa_function_pool[20171]: ObjectPurgeableAPPLE (will be remapped) */ "iii\0" "glObjectPurgeableAPPLE\0" "\0" - /* _mesa_function_pool[19891]: GetStringi (will be remapped) */ + /* _mesa_function_pool[20199]: GetStringi (will be remapped) */ "ii\0" "glGetStringi\0" "\0" - /* _mesa_function_pool[19908]: SamplePatternSGIS (will be remapped) */ + /* _mesa_function_pool[20216]: SamplePatternSGIS (will be remapped) */ "i\0" "glSamplePatternSGIS\0" "glSamplePatternEXT\0" "\0" - /* _mesa_function_pool[19950]: PixelStoref (offset 249) */ + /* _mesa_function_pool[20258]: PixelStoref (offset 249) */ "if\0" "glPixelStoref\0" "\0" - /* _mesa_function_pool[19968]: IsQueryARB (will be remapped) */ + /* _mesa_function_pool[20276]: IsQueryARB (will be remapped) */ "i\0" "glIsQuery\0" "glIsQueryARB\0" "\0" - /* _mesa_function_pool[19994]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */ + /* _mesa_function_pool[20302]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */ "iiiiifff\0" "glReplacementCodeuiColor4ubVertex3fSUN\0" "\0" - /* _mesa_function_pool[20043]: PixelStorei (offset 250) */ + /* _mesa_function_pool[20351]: PixelStorei (offset 250) */ "ii\0" "glPixelStorei\0" "\0" - /* _mesa_function_pool[20061]: VertexAttrib4usvARB (will be remapped) */ + /* _mesa_function_pool[20369]: VertexAttrib4usvARB (will be remapped) */ "ip\0" "glVertexAttrib4usv\0" "glVertexAttrib4usvARB\0" "\0" - /* _mesa_function_pool[20106]: LinkProgramARB (will be remapped) */ + /* _mesa_function_pool[20414]: LinkProgramARB (will be remapped) */ "i\0" "glLinkProgram\0" "glLinkProgramARB\0" "\0" - /* _mesa_function_pool[20140]: VertexAttrib2fNV (will be remapped) */ + /* _mesa_function_pool[20448]: VertexAttrib2fNV (will be remapped) */ "iff\0" "glVertexAttrib2fNV\0" "\0" - /* _mesa_function_pool[20164]: ShaderSourceARB (will be remapped) */ + /* _mesa_function_pool[20472]: ShaderSourceARB (will be remapped) */ "iipp\0" "glShaderSource\0" "glShaderSourceARB\0" "\0" - /* _mesa_function_pool[20203]: FragmentMaterialiSGIX (dynamic) */ + /* _mesa_function_pool[20511]: FragmentMaterialiSGIX (dynamic) */ "iii\0" "glFragmentMaterialiSGIX\0" "\0" - /* _mesa_function_pool[20232]: EvalCoord2dv (offset 233) */ + /* _mesa_function_pool[20540]: EvalCoord2dv (offset 233) */ "p\0" "glEvalCoord2dv\0" "\0" - /* _mesa_function_pool[20250]: VertexAttrib3svARB (will be remapped) */ + /* _mesa_function_pool[20558]: VertexAttrib3svARB (will be remapped) */ "ip\0" "glVertexAttrib3sv\0" "glVertexAttrib3svARB\0" "\0" - /* _mesa_function_pool[20293]: ColorMaterial (offset 151) */ + /* _mesa_function_pool[20601]: ColorMaterial (offset 151) */ "ii\0" "glColorMaterial\0" "\0" - /* _mesa_function_pool[20313]: CompressedTexSubImage3DARB (will be remapped) */ + /* _mesa_function_pool[20621]: CompressedTexSubImage3DARB (will be remapped) */ "iiiiiiiiiip\0" "glCompressedTexSubImage3D\0" "glCompressedTexSubImage3DARB\0" "\0" - /* _mesa_function_pool[20381]: WindowPos2ivMESA (will be remapped) */ + /* _mesa_function_pool[20689]: WindowPos2ivMESA (will be remapped) */ "p\0" "glWindowPos2iv\0" "glWindowPos2ivARB\0" "glWindowPos2ivMESA\0" "\0" - /* _mesa_function_pool[20436]: IsFramebufferEXT (will be remapped) */ + /* _mesa_function_pool[20744]: IsFramebufferEXT (will be remapped) */ "i\0" "glIsFramebuffer\0" "glIsFramebufferEXT\0" "\0" - /* _mesa_function_pool[20474]: Uniform4ivARB (will be remapped) */ + /* _mesa_function_pool[20782]: Uniform4ivARB (will be remapped) */ "iip\0" "glUniform4iv\0" "glUniform4ivARB\0" "\0" - /* _mesa_function_pool[20508]: GetVertexAttribdvARB (will be remapped) */ + /* _mesa_function_pool[20816]: GetVertexAttribdvARB (will be remapped) */ "iip\0" "glGetVertexAttribdv\0" "glGetVertexAttribdvARB\0" "\0" - /* _mesa_function_pool[20556]: TexBumpParameterivATI (will be remapped) */ + /* _mesa_function_pool[20864]: TexBumpParameterivATI (will be remapped) */ "ip\0" "glTexBumpParameterivATI\0" "\0" - /* _mesa_function_pool[20584]: GetSeparableFilter (offset 359) */ + /* _mesa_function_pool[20892]: GetSeparableFilter (offset 359) */ "iiippp\0" "glGetSeparableFilter\0" "glGetSeparableFilterEXT\0" "\0" - /* _mesa_function_pool[20637]: Binormal3dEXT (dynamic) */ + /* _mesa_function_pool[20945]: Binormal3dEXT (dynamic) */ "ddd\0" "glBinormal3dEXT\0" "\0" - /* _mesa_function_pool[20658]: SpriteParameteriSGIX (dynamic) */ + /* _mesa_function_pool[20966]: SpriteParameteriSGIX (dynamic) */ "ii\0" "glSpriteParameteriSGIX\0" "\0" - /* _mesa_function_pool[20685]: RequestResidentProgramsNV (will be remapped) */ + /* _mesa_function_pool[20993]: RequestResidentProgramsNV (will be remapped) */ "ip\0" "glRequestResidentProgramsNV\0" "\0" - /* _mesa_function_pool[20717]: TagSampleBufferSGIX (dynamic) */ + /* _mesa_function_pool[21025]: TagSampleBufferSGIX (dynamic) */ "\0" "glTagSampleBufferSGIX\0" "\0" - /* _mesa_function_pool[20741]: TransformFeedbackVaryingsEXT (will be remapped) */ + /* _mesa_function_pool[21049]: TransformFeedbackVaryingsEXT (will be remapped) */ "iipi\0" "glTransformFeedbackVaryingsEXT\0" "glTransformFeedbackVaryings\0" "\0" - /* _mesa_function_pool[20806]: FeedbackBuffer (offset 194) */ + /* _mesa_function_pool[21114]: FeedbackBuffer (offset 194) */ "iip\0" "glFeedbackBuffer\0" "\0" - /* _mesa_function_pool[20828]: RasterPos2iv (offset 67) */ + /* _mesa_function_pool[21136]: RasterPos2iv (offset 67) */ "p\0" "glRasterPos2iv\0" "\0" - /* _mesa_function_pool[20846]: TexImage1D (offset 182) */ + /* _mesa_function_pool[21154]: TexImage1D (offset 182) */ "iiiiiiip\0" "glTexImage1D\0" "\0" - /* _mesa_function_pool[20869]: ListParameterivSGIX (dynamic) */ + /* _mesa_function_pool[21177]: ListParameterivSGIX (dynamic) */ "iip\0" "glListParameterivSGIX\0" "\0" - /* _mesa_function_pool[20896]: MultiDrawElementsEXT (will be remapped) */ + /* _mesa_function_pool[21204]: MultiDrawElementsEXT (will be remapped) */ "ipipi\0" "glMultiDrawElements\0" "glMultiDrawElementsEXT\0" "\0" - /* _mesa_function_pool[20946]: Color3s (offset 17) */ + /* _mesa_function_pool[21254]: Color3s (offset 17) */ "iii\0" "glColor3s\0" "\0" - /* _mesa_function_pool[20961]: Uniform1ivARB (will be remapped) */ + /* _mesa_function_pool[21269]: Uniform1ivARB (will be remapped) */ "iip\0" "glUniform1iv\0" "glUniform1ivARB\0" "\0" - /* _mesa_function_pool[20995]: WindowPos2sMESA (will be remapped) */ + /* _mesa_function_pool[21303]: WindowPos2sMESA (will be remapped) */ "ii\0" "glWindowPos2s\0" "glWindowPos2sARB\0" "glWindowPos2sMESA\0" "\0" - /* _mesa_function_pool[21048]: WeightusvARB (dynamic) */ + /* _mesa_function_pool[21356]: WeightusvARB (dynamic) */ "ip\0" "glWeightusvARB\0" "\0" - /* _mesa_function_pool[21067]: TexCoordPointer (offset 320) */ + /* _mesa_function_pool[21375]: TexCoordPointer (offset 320) */ "iiip\0" "glTexCoordPointer\0" "\0" - /* _mesa_function_pool[21091]: FogCoordPointerEXT (will be remapped) */ + /* _mesa_function_pool[21399]: FogCoordPointerEXT (will be remapped) */ "iip\0" "glFogCoordPointer\0" "glFogCoordPointerEXT\0" "\0" - /* _mesa_function_pool[21135]: IndexMaterialEXT (dynamic) */ + /* _mesa_function_pool[21443]: IndexMaterialEXT (dynamic) */ "ii\0" "glIndexMaterialEXT\0" "\0" - /* _mesa_function_pool[21158]: Color3i (offset 15) */ + /* _mesa_function_pool[21466]: Color3i (offset 15) */ "iii\0" "glColor3i\0" "\0" - /* _mesa_function_pool[21173]: FrontFace (offset 157) */ + /* _mesa_function_pool[21481]: FrontFace (offset 157) */ "i\0" "glFrontFace\0" "\0" - /* _mesa_function_pool[21188]: EvalCoord2d (offset 232) */ + /* _mesa_function_pool[21496]: EvalCoord2d (offset 232) */ "dd\0" "glEvalCoord2d\0" "\0" - /* _mesa_function_pool[21206]: SecondaryColor3ubvEXT (will be remapped) */ + /* _mesa_function_pool[21514]: SecondaryColor3ubvEXT (will be remapped) */ "p\0" "glSecondaryColor3ubv\0" "glSecondaryColor3ubvEXT\0" "\0" - /* _mesa_function_pool[21254]: EvalCoord2f (offset 234) */ + /* _mesa_function_pool[21562]: EvalCoord2f (offset 234) */ "ff\0" "glEvalCoord2f\0" "\0" - /* _mesa_function_pool[21272]: VertexAttrib4dvARB (will be remapped) */ + /* _mesa_function_pool[21580]: VertexAttrib4dvARB (will be remapped) */ "ip\0" "glVertexAttrib4dv\0" "glVertexAttrib4dvARB\0" "\0" - /* _mesa_function_pool[21315]: BindAttribLocationARB (will be remapped) */ + /* _mesa_function_pool[21623]: BindAttribLocationARB (will be remapped) */ "iip\0" "glBindAttribLocation\0" "glBindAttribLocationARB\0" "\0" - /* _mesa_function_pool[21365]: Color3b (offset 9) */ + /* _mesa_function_pool[21673]: Color3b (offset 9) */ "iii\0" "glColor3b\0" "\0" - /* _mesa_function_pool[21380]: MultiTexCoord2dARB (offset 384) */ + /* _mesa_function_pool[21688]: MultiTexCoord2dARB (offset 384) */ "idd\0" "glMultiTexCoord2d\0" "glMultiTexCoord2dARB\0" "\0" - /* _mesa_function_pool[21424]: ExecuteProgramNV (will be remapped) */ + /* _mesa_function_pool[21732]: ExecuteProgramNV (will be remapped) */ "iip\0" "glExecuteProgramNV\0" "\0" - /* _mesa_function_pool[21448]: Color3f (offset 13) */ + /* _mesa_function_pool[21756]: Color3f (offset 13) */ "fff\0" "glColor3f\0" "\0" - /* _mesa_function_pool[21463]: LightEnviSGIX (dynamic) */ + /* _mesa_function_pool[21771]: LightEnviSGIX (dynamic) */ "ii\0" "glLightEnviSGIX\0" "\0" - /* _mesa_function_pool[21483]: Color3d (offset 11) */ + /* _mesa_function_pool[21791]: Color3d (offset 11) */ "ddd\0" "glColor3d\0" "\0" - /* _mesa_function_pool[21498]: Normal3dv (offset 55) */ + /* _mesa_function_pool[21806]: Normal3dv (offset 55) */ "p\0" "glNormal3dv\0" "\0" - /* _mesa_function_pool[21513]: Lightf (offset 159) */ + /* _mesa_function_pool[21821]: Lightf (offset 159) */ "iif\0" "glLightf\0" "\0" - /* _mesa_function_pool[21527]: ReplacementCodeuiSUN (dynamic) */ + /* _mesa_function_pool[21835]: ReplacementCodeuiSUN (dynamic) */ "i\0" "glReplacementCodeuiSUN\0" "\0" - /* _mesa_function_pool[21553]: MatrixMode (offset 293) */ + /* _mesa_function_pool[21861]: MatrixMode (offset 293) */ "i\0" "glMatrixMode\0" "\0" - /* _mesa_function_pool[21569]: GetPixelMapusv (offset 273) */ + /* _mesa_function_pool[21877]: GetPixelMapusv (offset 273) */ "ip\0" "glGetPixelMapusv\0" "\0" - /* _mesa_function_pool[21590]: Lighti (offset 161) */ + /* _mesa_function_pool[21898]: Lighti (offset 161) */ "iii\0" "glLighti\0" "\0" - /* _mesa_function_pool[21604]: VertexAttribPointerNV (will be remapped) */ + /* _mesa_function_pool[21912]: VertexAttribPointerNV (will be remapped) */ "iiiip\0" "glVertexAttribPointerNV\0" "\0" - /* _mesa_function_pool[21635]: ClearDepthf (will be remapped) */ + /* _mesa_function_pool[21943]: ClearDepthf (will be remapped) */ "f\0" "glClearDepthf\0" "\0" - /* _mesa_function_pool[21652]: GetBooleanIndexedvEXT (will be remapped) */ + /* _mesa_function_pool[21960]: GetBooleanIndexedvEXT (will be remapped) */ "iip\0" "glGetBooleanIndexedvEXT\0" "glGetBooleani_v\0" "\0" - /* _mesa_function_pool[21697]: GetFramebufferAttachmentParameterivEXT (will be remapped) */ + /* _mesa_function_pool[22005]: GetFramebufferAttachmentParameterivEXT (will be remapped) */ "iiip\0" "glGetFramebufferAttachmentParameteriv\0" "glGetFramebufferAttachmentParameterivEXT\0" "\0" - /* _mesa_function_pool[21782]: PixelTransformParameterfEXT (dynamic) */ + /* _mesa_function_pool[22090]: PixelTransformParameterfEXT (dynamic) */ "iif\0" "glPixelTransformParameterfEXT\0" "\0" - /* _mesa_function_pool[21817]: MultiTexCoord4dvARB (offset 401) */ + /* _mesa_function_pool[22125]: MultiTexCoord4dvARB (offset 401) */ "ip\0" "glMultiTexCoord4dv\0" "glMultiTexCoord4dvARB\0" "\0" - /* _mesa_function_pool[21862]: PixelTransformParameteriEXT (dynamic) */ + /* _mesa_function_pool[22170]: PixelTransformParameteriEXT (dynamic) */ "iii\0" "glPixelTransformParameteriEXT\0" "\0" - /* _mesa_function_pool[21897]: GetDoublev (offset 260) */ + /* _mesa_function_pool[22205]: GetDoublev (offset 260) */ "ip\0" "glGetDoublev\0" "\0" - /* _mesa_function_pool[21914]: MultMatrixd (offset 295) */ + /* _mesa_function_pool[22222]: MultMatrixd (offset 295) */ "p\0" "glMultMatrixd\0" "\0" - /* _mesa_function_pool[21931]: MultMatrixf (offset 294) */ + /* _mesa_function_pool[22239]: MultMatrixf (offset 294) */ "p\0" "glMultMatrixf\0" "\0" - /* _mesa_function_pool[21948]: VertexAttribI4bvEXT (will be remapped) */ + /* _mesa_function_pool[22256]: VertexAttribI4bvEXT (will be remapped) */ "ip\0" "glVertexAttribI4bvEXT\0" "glVertexAttribI4bv\0" "\0" - /* _mesa_function_pool[21993]: TexCoord2fColor4ubVertex3fSUN (dynamic) */ + /* _mesa_function_pool[22301]: TexCoord2fColor4ubVertex3fSUN (dynamic) */ "ffiiiifff\0" "glTexCoord2fColor4ubVertex3fSUN\0" "\0" - /* _mesa_function_pool[22036]: Uniform1iARB (will be remapped) */ + /* _mesa_function_pool[22344]: Uniform1iARB (will be remapped) */ "ii\0" "glUniform1i\0" "glUniform1iARB\0" "\0" - /* _mesa_function_pool[22067]: VertexAttribPointerARB (will be remapped) */ + /* _mesa_function_pool[22375]: VertexAttribPointerARB (will be remapped) */ "iiiiip\0" "glVertexAttribPointer\0" "glVertexAttribPointerARB\0" "\0" - /* _mesa_function_pool[22122]: VertexAttrib3sNV (will be remapped) */ + /* _mesa_function_pool[22430]: VertexAttrib3sNV (will be remapped) */ "iiii\0" "glVertexAttrib3sNV\0" "\0" - /* _mesa_function_pool[22147]: SharpenTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[22455]: SharpenTexFuncSGIS (dynamic) */ "iip\0" "glSharpenTexFuncSGIS\0" "\0" - /* _mesa_function_pool[22173]: MultiTexCoord4fvARB (offset 403) */ + /* _mesa_function_pool[22481]: MultiTexCoord4fvARB (offset 403) */ "ip\0" "glMultiTexCoord4fv\0" "glMultiTexCoord4fvARB\0" "\0" - /* _mesa_function_pool[22218]: Uniform2uiEXT (will be remapped) */ + /* _mesa_function_pool[22526]: Uniform2uiEXT (will be remapped) */ "iii\0" "glUniform2uiEXT\0" "glUniform2ui\0" "\0" - /* _mesa_function_pool[22252]: UniformMatrix2x3fv (will be remapped) */ + /* _mesa_function_pool[22560]: UniformMatrix2x3fv (will be remapped) */ "iiip\0" "glUniformMatrix2x3fv\0" "\0" - /* _mesa_function_pool[22279]: TrackMatrixNV (will be remapped) */ - "iiii\0" - "glTrackMatrixNV\0" + /* _mesa_function_pool[22587]: SamplerParameteri (will be remapped) */ + "iii\0" + "glSamplerParameteri\0" "\0" - /* _mesa_function_pool[22301]: CombinerParameteriNV (will be remapped) */ + /* _mesa_function_pool[22612]: SamplerParameterf (will be remapped) */ + "iif\0" + "glSamplerParameterf\0" + "\0" + /* _mesa_function_pool[22637]: CombinerParameteriNV (will be remapped) */ "ii\0" "glCombinerParameteriNV\0" "\0" - /* _mesa_function_pool[22328]: DeleteAsyncMarkersSGIX (dynamic) */ + /* _mesa_function_pool[22664]: DeleteAsyncMarkersSGIX (dynamic) */ "ii\0" "glDeleteAsyncMarkersSGIX\0" "\0" - /* _mesa_function_pool[22357]: ReplacementCodeusSUN (dynamic) */ + /* _mesa_function_pool[22693]: ReplacementCodeusSUN (dynamic) */ "i\0" "glReplacementCodeusSUN\0" "\0" - /* _mesa_function_pool[22383]: IsAsyncMarkerSGIX (dynamic) */ + /* _mesa_function_pool[22719]: IsAsyncMarkerSGIX (dynamic) */ "i\0" "glIsAsyncMarkerSGIX\0" "\0" - /* _mesa_function_pool[22406]: FrameZoomSGIX (dynamic) */ + /* _mesa_function_pool[22742]: FrameZoomSGIX (dynamic) */ "i\0" "glFrameZoomSGIX\0" "\0" - /* _mesa_function_pool[22425]: Normal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[22761]: Normal3fVertex3fvSUN (dynamic) */ "pp\0" "glNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[22452]: RasterPos4sv (offset 85) */ + /* _mesa_function_pool[22788]: RasterPos4sv (offset 85) */ "p\0" "glRasterPos4sv\0" "\0" - /* _mesa_function_pool[22470]: VertexAttrib4NsvARB (will be remapped) */ + /* _mesa_function_pool[22806]: VertexAttrib4NsvARB (will be remapped) */ "ip\0" "glVertexAttrib4Nsv\0" "glVertexAttrib4NsvARB\0" "\0" - /* _mesa_function_pool[22515]: VertexAttrib3fvARB (will be remapped) */ + /* _mesa_function_pool[22851]: VertexAttrib3fvARB (will be remapped) */ "ip\0" "glVertexAttrib3fv\0" "glVertexAttrib3fvARB\0" "\0" - /* _mesa_function_pool[22558]: ClearColor (offset 206) */ + /* _mesa_function_pool[22894]: ClearColor (offset 206) */ "ffff\0" "glClearColor\0" "\0" - /* _mesa_function_pool[22577]: GetSynciv (will be remapped) */ + /* _mesa_function_pool[22913]: GetSynciv (will be remapped) */ "iiipp\0" "glGetSynciv\0" "\0" - /* _mesa_function_pool[22596]: ClearColorIiEXT (will be remapped) */ + /* _mesa_function_pool[22932]: ClearColorIiEXT (will be remapped) */ "iiii\0" "glClearColorIiEXT\0" "\0" - /* _mesa_function_pool[22620]: DeleteFramebuffersEXT (will be remapped) */ + /* _mesa_function_pool[22956]: DeleteFramebuffersEXT (will be remapped) */ "ip\0" "glDeleteFramebuffers\0" "glDeleteFramebuffersEXT\0" "\0" - /* _mesa_function_pool[22669]: GlobalAlphaFactorsSUN (dynamic) */ + /* _mesa_function_pool[23005]: GlobalAlphaFactorsSUN (dynamic) */ "i\0" "glGlobalAlphaFactorsSUN\0" "\0" - /* _mesa_function_pool[22696]: IsEnabledIndexedEXT (will be remapped) */ + /* _mesa_function_pool[23032]: IsEnabledIndexedEXT (will be remapped) */ "ii\0" "glIsEnabledIndexedEXT\0" "glIsEnabledi\0" "\0" - /* _mesa_function_pool[22735]: TexEnviv (offset 187) */ + /* _mesa_function_pool[23071]: TexEnviv (offset 187) */ "iip\0" "glTexEnviv\0" "\0" - /* _mesa_function_pool[22751]: TexSubImage3D (offset 372) */ + /* _mesa_function_pool[23087]: TexSubImage3D (offset 372) */ "iiiiiiiiiip\0" "glTexSubImage3D\0" "glTexSubImage3DEXT\0" "\0" - /* _mesa_function_pool[22799]: Tangent3fEXT (dynamic) */ + /* _mesa_function_pool[23135]: Tangent3fEXT (dynamic) */ "fff\0" "glTangent3fEXT\0" "\0" - /* _mesa_function_pool[22819]: SecondaryColor3uivEXT (will be remapped) */ + /* _mesa_function_pool[23155]: SecondaryColor3uivEXT (will be remapped) */ "p\0" "glSecondaryColor3uiv\0" "glSecondaryColor3uivEXT\0" "\0" - /* _mesa_function_pool[22867]: MatrixIndexubvARB (dynamic) */ + /* _mesa_function_pool[23203]: MatrixIndexubvARB (dynamic) */ "ip\0" "glMatrixIndexubvARB\0" "\0" - /* _mesa_function_pool[22891]: Color4fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[23227]: Color4fNormal3fVertex3fSUN (dynamic) */ "ffffffffff\0" "glColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[22932]: PixelTexGenParameterfSGIS (will be remapped) */ + /* _mesa_function_pool[23268]: PixelTexGenParameterfSGIS (will be remapped) */ "if\0" "glPixelTexGenParameterfSGIS\0" "\0" - /* _mesa_function_pool[22964]: CreateShader (will be remapped) */ + /* _mesa_function_pool[23300]: CreateShader (will be remapped) */ "i\0" "glCreateShader\0" "\0" - /* _mesa_function_pool[22982]: GetColorTableParameterfv (offset 344) */ + /* _mesa_function_pool[23318]: GetColorTableParameterfv (offset 344) */ "iip\0" "glGetColorTableParameterfv\0" "glGetColorTableParameterfvSGI\0" "glGetColorTableParameterfvEXT\0" "\0" - /* _mesa_function_pool[23074]: FragmentLightModelfvSGIX (dynamic) */ + /* _mesa_function_pool[23410]: FragmentLightModelfvSGIX (dynamic) */ "ip\0" "glFragmentLightModelfvSGIX\0" "\0" - /* _mesa_function_pool[23105]: Bitmap (offset 8) */ + /* _mesa_function_pool[23441]: Bitmap (offset 8) */ "iiffffp\0" "glBitmap\0" "\0" - /* _mesa_function_pool[23123]: MultiTexCoord3fARB (offset 394) */ + /* _mesa_function_pool[23459]: MultiTexCoord3fARB (offset 394) */ "ifff\0" "glMultiTexCoord3f\0" "glMultiTexCoord3fARB\0" "\0" - /* _mesa_function_pool[23168]: GetTexLevelParameterfv (offset 284) */ + /* _mesa_function_pool[23504]: GetTexLevelParameterfv (offset 284) */ "iiip\0" "glGetTexLevelParameterfv\0" "\0" - /* _mesa_function_pool[23199]: GetPixelTexGenParameterfvSGIS (will be remapped) */ + /* _mesa_function_pool[23535]: GetPixelTexGenParameterfvSGIS (will be remapped) */ "ip\0" "glGetPixelTexGenParameterfvSGIS\0" "\0" - /* _mesa_function_pool[23235]: GenFramebuffersEXT (will be remapped) */ + /* _mesa_function_pool[23571]: GenFramebuffersEXT (will be remapped) */ "ip\0" "glGenFramebuffers\0" "glGenFramebuffersEXT\0" "\0" - /* _mesa_function_pool[23278]: VertexAttribDivisor (will be remapped) */ + /* _mesa_function_pool[23614]: VertexAttribDivisor (will be remapped) */ "ii\0" "glVertexAttribDivisor\0" "\0" - /* _mesa_function_pool[23304]: GetProgramParameterdvNV (will be remapped) */ + /* _mesa_function_pool[23640]: GetProgramParameterdvNV (will be remapped) */ "iiip\0" "glGetProgramParameterdvNV\0" "\0" - /* _mesa_function_pool[23336]: Vertex2sv (offset 133) */ + /* _mesa_function_pool[23672]: Vertex2sv (offset 133) */ "p\0" "glVertex2sv\0" "\0" - /* _mesa_function_pool[23351]: GetIntegerv (offset 263) */ + /* _mesa_function_pool[23687]: GetIntegerv (offset 263) */ "ip\0" "glGetIntegerv\0" "\0" - /* _mesa_function_pool[23369]: IsVertexArrayAPPLE (will be remapped) */ + /* _mesa_function_pool[23705]: IsVertexArrayAPPLE (will be remapped) */ "i\0" "glIsVertexArray\0" "glIsVertexArrayAPPLE\0" "\0" - /* _mesa_function_pool[23409]: FragmentLightfvSGIX (dynamic) */ + /* _mesa_function_pool[23745]: FragmentLightfvSGIX (dynamic) */ "iip\0" "glFragmentLightfvSGIX\0" "\0" - /* _mesa_function_pool[23436]: VertexAttribDivisorARB (will be remapped) */ + /* _mesa_function_pool[23772]: VertexAttribDivisorARB (will be remapped) */ "ii\0" "glVertexAttribDivisorARB\0" "\0" - /* _mesa_function_pool[23465]: DetachShader (will be remapped) */ + /* _mesa_function_pool[23801]: DetachShader (will be remapped) */ "ii\0" "glDetachShader\0" "\0" - /* _mesa_function_pool[23484]: VertexAttrib4NubARB (will be remapped) */ + /* _mesa_function_pool[23820]: VertexAttrib4NubARB (will be remapped) */ "iiiii\0" "glVertexAttrib4Nub\0" "glVertexAttrib4NubARB\0" "\0" - /* _mesa_function_pool[23532]: GetProgramEnvParameterfvARB (will be remapped) */ + /* _mesa_function_pool[23868]: GetProgramEnvParameterfvARB (will be remapped) */ "iip\0" "glGetProgramEnvParameterfvARB\0" "\0" - /* _mesa_function_pool[23567]: GetTrackMatrixivNV (will be remapped) */ + /* _mesa_function_pool[23903]: GetTrackMatrixivNV (will be remapped) */ "iiip\0" "glGetTrackMatrixivNV\0" "\0" - /* _mesa_function_pool[23594]: VertexAttrib3svNV (will be remapped) */ + /* _mesa_function_pool[23930]: VertexAttrib3svNV (will be remapped) */ "ip\0" "glVertexAttrib3svNV\0" "\0" - /* _mesa_function_pool[23618]: Uniform4fvARB (will be remapped) */ + /* _mesa_function_pool[23954]: Uniform4fvARB (will be remapped) */ "iip\0" "glUniform4fv\0" "glUniform4fvARB\0" "\0" - /* _mesa_function_pool[23652]: MultTransposeMatrixfARB (will be remapped) */ + /* _mesa_function_pool[23988]: MultTransposeMatrixfARB (will be remapped) */ "p\0" "glMultTransposeMatrixf\0" "glMultTransposeMatrixfARB\0" "\0" - /* _mesa_function_pool[23704]: GetTexEnviv (offset 277) */ + /* _mesa_function_pool[24040]: GetTexEnviv (offset 277) */ "iip\0" "glGetTexEnviv\0" "\0" - /* _mesa_function_pool[23723]: ColorFragmentOp1ATI (will be remapped) */ + /* _mesa_function_pool[24059]: ColorFragmentOp1ATI (will be remapped) */ "iiiiiii\0" "glColorFragmentOp1ATI\0" "\0" - /* _mesa_function_pool[23754]: GetUniformfvARB (will be remapped) */ + /* _mesa_function_pool[24090]: GetUniformfvARB (will be remapped) */ "iip\0" "glGetUniformfv\0" "glGetUniformfvARB\0" "\0" - /* _mesa_function_pool[23792]: EGLImageTargetRenderbufferStorageOES (will be remapped) */ + /* _mesa_function_pool[24128]: EGLImageTargetRenderbufferStorageOES (will be remapped) */ "ip\0" "glEGLImageTargetRenderbufferStorageOES\0" "\0" - /* _mesa_function_pool[23835]: VertexAttribI2ivEXT (will be remapped) */ + /* _mesa_function_pool[24171]: VertexAttribI2ivEXT (will be remapped) */ "ip\0" "glVertexAttribI2ivEXT\0" "glVertexAttribI2iv\0" "\0" - /* _mesa_function_pool[23880]: PopClientAttrib (offset 334) */ + /* _mesa_function_pool[24216]: PopClientAttrib (offset 334) */ "\0" "glPopClientAttrib\0" "\0" - /* _mesa_function_pool[23900]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[24236]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ "iffffffffffff\0" "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[23971]: DetachObjectARB (will be remapped) */ + /* _mesa_function_pool[24307]: DetachObjectARB (will be remapped) */ "ii\0" "glDetachObjectARB\0" "\0" - /* _mesa_function_pool[23993]: VertexBlendARB (dynamic) */ + /* _mesa_function_pool[24329]: VertexBlendARB (dynamic) */ "i\0" "glVertexBlendARB\0" "\0" - /* _mesa_function_pool[24013]: WindowPos3iMESA (will be remapped) */ + /* _mesa_function_pool[24349]: WindowPos3iMESA (will be remapped) */ "iii\0" "glWindowPos3i\0" "glWindowPos3iARB\0" "glWindowPos3iMESA\0" "\0" - /* _mesa_function_pool[24067]: SeparableFilter2D (offset 360) */ + /* _mesa_function_pool[24403]: SeparableFilter2D (offset 360) */ "iiiiiipp\0" "glSeparableFilter2D\0" "glSeparableFilter2DEXT\0" "\0" - /* _mesa_function_pool[24120]: ProgramParameteriARB (will be remapped) */ + /* _mesa_function_pool[24456]: ProgramParameteriARB (will be remapped) */ "iii\0" "glProgramParameteriARB\0" "\0" - /* _mesa_function_pool[24148]: Map1d (offset 220) */ + /* _mesa_function_pool[24484]: Map1d (offset 220) */ "iddiip\0" "glMap1d\0" "\0" - /* _mesa_function_pool[24164]: Map1f (offset 221) */ + /* _mesa_function_pool[24500]: Map1f (offset 221) */ "iffiip\0" "glMap1f\0" "\0" - /* _mesa_function_pool[24180]: CompressedTexImage2DARB (will be remapped) */ + /* _mesa_function_pool[24516]: CompressedTexImage2DARB (will be remapped) */ "iiiiiiip\0" "glCompressedTexImage2D\0" "glCompressedTexImage2DARB\0" "\0" - /* _mesa_function_pool[24239]: ArrayElement (offset 306) */ + /* _mesa_function_pool[24575]: ArrayElement (offset 306) */ "i\0" "glArrayElement\0" "glArrayElementEXT\0" "\0" - /* _mesa_function_pool[24275]: TexImage2D (offset 183) */ + /* _mesa_function_pool[24611]: TexImage2D (offset 183) */ "iiiiiiiip\0" "glTexImage2D\0" "\0" - /* _mesa_function_pool[24299]: DepthBoundsEXT (will be remapped) */ + /* _mesa_function_pool[24635]: DepthBoundsEXT (will be remapped) */ "dd\0" "glDepthBoundsEXT\0" "\0" - /* _mesa_function_pool[24320]: ProgramParameters4fvNV (will be remapped) */ + /* _mesa_function_pool[24656]: ProgramParameters4fvNV (will be remapped) */ "iiip\0" "glProgramParameters4fvNV\0" "\0" - /* _mesa_function_pool[24351]: DeformationMap3fSGIX (dynamic) */ + /* _mesa_function_pool[24687]: DeformationMap3fSGIX (dynamic) */ "iffiiffiiffiip\0" "glDeformationMap3fSGIX\0" "\0" - /* _mesa_function_pool[24390]: GetProgramivNV (will be remapped) */ + /* _mesa_function_pool[24726]: GetProgramivNV (will be remapped) */ "iip\0" "glGetProgramivNV\0" "\0" - /* _mesa_function_pool[24412]: GetFragDataLocationEXT (will be remapped) */ + /* _mesa_function_pool[24748]: GetFragDataLocationEXT (will be remapped) */ "ip\0" "glGetFragDataLocationEXT\0" "glGetFragDataLocation\0" "\0" - /* _mesa_function_pool[24463]: GetMinmaxParameteriv (offset 366) */ + /* _mesa_function_pool[24799]: GetMinmaxParameteriv (offset 366) */ "iip\0" "glGetMinmaxParameteriv\0" "glGetMinmaxParameterivEXT\0" "\0" - /* _mesa_function_pool[24517]: PixelTransferf (offset 247) */ + /* _mesa_function_pool[24853]: PixelTransferf (offset 247) */ "if\0" "glPixelTransferf\0" "\0" - /* _mesa_function_pool[24538]: CopyTexImage1D (offset 323) */ + /* _mesa_function_pool[24874]: CopyTexImage1D (offset 323) */ "iiiiiii\0" "glCopyTexImage1D\0" "glCopyTexImage1DEXT\0" "\0" - /* _mesa_function_pool[24584]: PushMatrix (offset 298) */ + /* _mesa_function_pool[24920]: PushMatrix (offset 298) */ "\0" "glPushMatrix\0" "\0" - /* _mesa_function_pool[24599]: Fogiv (offset 156) */ + /* _mesa_function_pool[24935]: Fogiv (offset 156) */ "ip\0" "glFogiv\0" "\0" - /* _mesa_function_pool[24611]: TexCoord1dv (offset 95) */ + /* _mesa_function_pool[24947]: TexCoord1dv (offset 95) */ "p\0" "glTexCoord1dv\0" "\0" - /* _mesa_function_pool[24628]: AlphaFragmentOp3ATI (will be remapped) */ + /* _mesa_function_pool[24964]: AlphaFragmentOp3ATI (will be remapped) */ "iiiiiiiiiiii\0" "glAlphaFragmentOp3ATI\0" "\0" - /* _mesa_function_pool[24664]: PixelTransferi (offset 248) */ + /* _mesa_function_pool[25000]: PixelTransferi (offset 248) */ "ii\0" "glPixelTransferi\0" "\0" - /* _mesa_function_pool[24685]: GetVertexAttribdvNV (will be remapped) */ + /* _mesa_function_pool[25021]: GetVertexAttribdvNV (will be remapped) */ "iip\0" "glGetVertexAttribdvNV\0" "\0" - /* _mesa_function_pool[24712]: VertexAttrib3fvNV (will be remapped) */ + /* _mesa_function_pool[25048]: VertexAttrib3fvNV (will be remapped) */ "ip\0" "glVertexAttrib3fvNV\0" "\0" - /* _mesa_function_pool[24736]: Rotatef (offset 300) */ + /* _mesa_function_pool[25072]: Rotatef (offset 300) */ "ffff\0" "glRotatef\0" "\0" - /* _mesa_function_pool[24752]: GetFinalCombinerInputParameterivNV (will be remapped) */ + /* _mesa_function_pool[25088]: GetFinalCombinerInputParameterivNV (will be remapped) */ "iip\0" "glGetFinalCombinerInputParameterivNV\0" "\0" - /* _mesa_function_pool[24794]: Vertex3i (offset 138) */ + /* _mesa_function_pool[25130]: Vertex3i (offset 138) */ "iii\0" "glVertex3i\0" "\0" - /* _mesa_function_pool[24810]: Vertex3f (offset 136) */ + /* _mesa_function_pool[25146]: Vertex3f (offset 136) */ "fff\0" "glVertex3f\0" "\0" - /* _mesa_function_pool[24826]: Clear (offset 203) */ + /* _mesa_function_pool[25162]: Clear (offset 203) */ "i\0" "glClear\0" "\0" - /* _mesa_function_pool[24837]: Vertex3d (offset 134) */ + /* _mesa_function_pool[25173]: Vertex3d (offset 134) */ "ddd\0" "glVertex3d\0" "\0" - /* _mesa_function_pool[24853]: GetMapParameterivNV (dynamic) */ + /* _mesa_function_pool[25189]: GetMapParameterivNV (dynamic) */ "iip\0" "glGetMapParameterivNV\0" "\0" - /* _mesa_function_pool[24880]: Uniform4iARB (will be remapped) */ + /* _mesa_function_pool[25216]: Uniform4iARB (will be remapped) */ "iiiii\0" "glUniform4i\0" "glUniform4iARB\0" "\0" - /* _mesa_function_pool[24914]: ReadBuffer (offset 254) */ + /* _mesa_function_pool[25250]: ReadBuffer (offset 254) */ "i\0" "glReadBuffer\0" "\0" - /* _mesa_function_pool[24930]: ConvolutionParameteri (offset 352) */ + /* _mesa_function_pool[25266]: ConvolutionParameteri (offset 352) */ "iii\0" "glConvolutionParameteri\0" "glConvolutionParameteriEXT\0" "\0" - /* _mesa_function_pool[24986]: Ortho (offset 296) */ + /* _mesa_function_pool[25322]: Ortho (offset 296) */ "dddddd\0" "glOrtho\0" "\0" - /* _mesa_function_pool[25002]: Binormal3sEXT (dynamic) */ + /* _mesa_function_pool[25338]: Binormal3sEXT (dynamic) */ "iii\0" "glBinormal3sEXT\0" "\0" - /* _mesa_function_pool[25023]: ListBase (offset 6) */ + /* _mesa_function_pool[25359]: ListBase (offset 6) */ "i\0" "glListBase\0" "\0" - /* _mesa_function_pool[25037]: Vertex3s (offset 140) */ + /* _mesa_function_pool[25373]: VertexAttribI3ivEXT (will be remapped) */ + "ip\0" + "glVertexAttribI3ivEXT\0" + "glVertexAttribI3iv\0" + "\0" + /* _mesa_function_pool[25418]: Vertex3s (offset 140) */ "iii\0" "glVertex3s\0" "\0" - /* _mesa_function_pool[25053]: ConvolutionParameterf (offset 350) */ + /* _mesa_function_pool[25434]: ConvolutionParameterf (offset 350) */ "iif\0" "glConvolutionParameterf\0" "glConvolutionParameterfEXT\0" "\0" - /* _mesa_function_pool[25109]: GetColorTableParameteriv (offset 345) */ + /* _mesa_function_pool[25490]: GetColorTableParameteriv (offset 345) */ "iip\0" "glGetColorTableParameteriv\0" "glGetColorTableParameterivSGI\0" "glGetColorTableParameterivEXT\0" "\0" - /* _mesa_function_pool[25201]: ProgramEnvParameter4dvARB (will be remapped) */ + /* _mesa_function_pool[25582]: ProgramEnvParameter4dvARB (will be remapped) */ "iip\0" "glProgramEnvParameter4dvARB\0" "glProgramParameter4dvNV\0" "\0" - /* _mesa_function_pool[25258]: ShadeModel (offset 177) */ + /* _mesa_function_pool[25639]: ShadeModel (offset 177) */ "i\0" "glShadeModel\0" "\0" - /* _mesa_function_pool[25274]: VertexAttribs2fvNV (will be remapped) */ + /* _mesa_function_pool[25655]: VertexAttribs2fvNV (will be remapped) */ "iip\0" "glVertexAttribs2fvNV\0" "\0" - /* _mesa_function_pool[25300]: Rectiv (offset 91) */ + /* _mesa_function_pool[25681]: Rectiv (offset 91) */ "pp\0" "glRectiv\0" "\0" - /* _mesa_function_pool[25313]: UseProgramObjectARB (will be remapped) */ + /* _mesa_function_pool[25694]: UseProgramObjectARB (will be remapped) */ "i\0" "glUseProgram\0" "glUseProgramObjectARB\0" "\0" - /* _mesa_function_pool[25351]: GetMapParameterfvNV (dynamic) */ + /* _mesa_function_pool[25732]: GetMapParameterfvNV (dynamic) */ "iip\0" "glGetMapParameterfvNV\0" "\0" - /* _mesa_function_pool[25378]: EndConditionalRenderNV (will be remapped) */ + /* _mesa_function_pool[25759]: EndConditionalRenderNV (will be remapped) */ "\0" "glEndConditionalRenderNV\0" "glEndConditionalRender\0" "\0" - /* _mesa_function_pool[25428]: PassTexCoordATI (will be remapped) */ + /* _mesa_function_pool[25809]: PassTexCoordATI (will be remapped) */ "iii\0" "glPassTexCoordATI\0" "\0" - /* _mesa_function_pool[25451]: DeleteProgram (will be remapped) */ + /* _mesa_function_pool[25832]: DeleteProgram (will be remapped) */ "i\0" "glDeleteProgram\0" "\0" - /* _mesa_function_pool[25470]: Tangent3ivEXT (dynamic) */ - "p\0" - "glTangent3ivEXT\0" + /* _mesa_function_pool[25851]: GetSamplerParameteriv (will be remapped) */ + "iip\0" + "glGetSamplerParameteriv\0" "\0" - /* _mesa_function_pool[25489]: Tangent3dEXT (dynamic) */ + /* _mesa_function_pool[25880]: Tangent3dEXT (dynamic) */ "ddd\0" "glTangent3dEXT\0" "\0" - /* _mesa_function_pool[25509]: SecondaryColor3dvEXT (will be remapped) */ + /* _mesa_function_pool[25900]: SecondaryColor3dvEXT (will be remapped) */ "p\0" "glSecondaryColor3dv\0" "glSecondaryColor3dvEXT\0" "\0" - /* _mesa_function_pool[25555]: AlphaFragmentOp2ATI (will be remapped) */ + /* _mesa_function_pool[25946]: AlphaFragmentOp2ATI (will be remapped) */ "iiiiiiiii\0" "glAlphaFragmentOp2ATI\0" "\0" - /* _mesa_function_pool[25588]: Vertex2fv (offset 129) */ + /* _mesa_function_pool[25979]: Vertex2fv (offset 129) */ "p\0" "glVertex2fv\0" "\0" - /* _mesa_function_pool[25603]: MultiDrawArraysEXT (will be remapped) */ + /* _mesa_function_pool[25994]: MultiDrawArraysEXT (will be remapped) */ "ippi\0" "glMultiDrawArrays\0" "glMultiDrawArraysEXT\0" "\0" - /* _mesa_function_pool[25648]: BindRenderbufferEXT (will be remapped) */ + /* _mesa_function_pool[26039]: BindRenderbufferEXT (will be remapped) */ "ii\0" "glBindRenderbuffer\0" "glBindRenderbufferEXT\0" "\0" - /* _mesa_function_pool[25693]: MultiTexCoord4dARB (offset 400) */ + /* _mesa_function_pool[26084]: MultiTexCoord4dARB (offset 400) */ "idddd\0" "glMultiTexCoord4d\0" "glMultiTexCoord4dARB\0" "\0" - /* _mesa_function_pool[25739]: FramebufferTextureFaceARB (will be remapped) */ + /* _mesa_function_pool[26130]: FramebufferTextureFaceARB (will be remapped) */ "iiiii\0" "glFramebufferTextureFaceARB\0" "\0" - /* _mesa_function_pool[25774]: Vertex3sv (offset 141) */ + /* _mesa_function_pool[26165]: Vertex3sv (offset 141) */ "p\0" "glVertex3sv\0" "\0" - /* _mesa_function_pool[25789]: SecondaryColor3usEXT (will be remapped) */ + /* _mesa_function_pool[26180]: SecondaryColor3usEXT (will be remapped) */ "iii\0" "glSecondaryColor3us\0" "glSecondaryColor3usEXT\0" "\0" - /* _mesa_function_pool[25837]: ProgramLocalParameter4fvARB (will be remapped) */ + /* _mesa_function_pool[26228]: ProgramLocalParameter4fvARB (will be remapped) */ "iip\0" "glProgramLocalParameter4fvARB\0" "\0" - /* _mesa_function_pool[25872]: DeleteProgramsNV (will be remapped) */ + /* _mesa_function_pool[26263]: DeleteProgramsNV (will be remapped) */ "ip\0" "glDeleteProgramsARB\0" "glDeleteProgramsNV\0" "\0" - /* _mesa_function_pool[25915]: EvalMesh1 (offset 236) */ + /* _mesa_function_pool[26306]: EvalMesh1 (offset 236) */ "iii\0" "glEvalMesh1\0" "\0" - /* _mesa_function_pool[25932]: PauseTransformFeedback (will be remapped) */ + /* _mesa_function_pool[26323]: PauseTransformFeedback (will be remapped) */ "\0" "glPauseTransformFeedback\0" "\0" - /* _mesa_function_pool[25959]: MultiTexCoord1sARB (offset 382) */ + /* _mesa_function_pool[26350]: MultiTexCoord1sARB (offset 382) */ "ii\0" "glMultiTexCoord1s\0" "glMultiTexCoord1sARB\0" "\0" - /* _mesa_function_pool[26002]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[26393]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */ "iffffff\0" "glReplacementCodeuiColor3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[26049]: GetVertexAttribPointervNV (will be remapped) */ + /* _mesa_function_pool[26440]: GetVertexAttribPointervNV (will be remapped) */ "iip\0" "glGetVertexAttribPointerv\0" "glGetVertexAttribPointervARB\0" "glGetVertexAttribPointervNV\0" "\0" - /* _mesa_function_pool[26137]: VertexAttribs1fvNV (will be remapped) */ + /* _mesa_function_pool[26528]: VertexAttribs1fvNV (will be remapped) */ "iip\0" "glVertexAttribs1fvNV\0" "\0" - /* _mesa_function_pool[26163]: MultiTexCoord1dvARB (offset 377) */ + /* _mesa_function_pool[26554]: MultiTexCoord1dvARB (offset 377) */ "ip\0" "glMultiTexCoord1dv\0" "glMultiTexCoord1dvARB\0" "\0" - /* _mesa_function_pool[26208]: Uniform2iARB (will be remapped) */ + /* _mesa_function_pool[26599]: Uniform2iARB (will be remapped) */ "iii\0" "glUniform2i\0" "glUniform2iARB\0" "\0" - /* _mesa_function_pool[26240]: Vertex2iv (offset 131) */ + /* _mesa_function_pool[26631]: Vertex2iv (offset 131) */ "p\0" "glVertex2iv\0" "\0" - /* _mesa_function_pool[26255]: GetProgramStringNV (will be remapped) */ + /* _mesa_function_pool[26646]: GetProgramStringNV (will be remapped) */ "iip\0" "glGetProgramStringNV\0" "\0" - /* _mesa_function_pool[26281]: ColorPointerEXT (will be remapped) */ + /* _mesa_function_pool[26672]: ColorPointerEXT (will be remapped) */ "iiiip\0" "glColorPointerEXT\0" "\0" - /* _mesa_function_pool[26306]: LineWidth (offset 168) */ + /* _mesa_function_pool[26697]: LineWidth (offset 168) */ "f\0" "glLineWidth\0" "\0" - /* _mesa_function_pool[26321]: MapBufferARB (will be remapped) */ + /* _mesa_function_pool[26712]: MapBufferARB (will be remapped) */ "ii\0" "glMapBuffer\0" "glMapBufferARB\0" "\0" - /* _mesa_function_pool[26352]: MultiDrawElementsBaseVertex (will be remapped) */ + /* _mesa_function_pool[26743]: MultiDrawElementsBaseVertex (will be remapped) */ "ipipip\0" "glMultiDrawElementsBaseVertex\0" "\0" - /* _mesa_function_pool[26390]: TexParameterIuivEXT (will be remapped) */ + /* _mesa_function_pool[26781]: TexParameterIuivEXT (will be remapped) */ "iip\0" "glTexParameterIuivEXT\0" "glTexParameterIuiv\0" "\0" - /* _mesa_function_pool[26436]: Binormal3svEXT (dynamic) */ + /* _mesa_function_pool[26827]: Binormal3svEXT (dynamic) */ "p\0" "glBinormal3svEXT\0" "\0" - /* _mesa_function_pool[26456]: ApplyTextureEXT (dynamic) */ + /* _mesa_function_pool[26847]: ApplyTextureEXT (dynamic) */ "i\0" "glApplyTextureEXT\0" "\0" - /* _mesa_function_pool[26477]: GetBufferParameteri64v (will be remapped) */ + /* _mesa_function_pool[26868]: GetBufferParameteri64v (will be remapped) */ "iip\0" "glGetBufferParameteri64v\0" "\0" - /* _mesa_function_pool[26507]: TexGendv (offset 189) */ + /* _mesa_function_pool[26898]: TexGendv (offset 189) */ "iip\0" "glTexGendv\0" "\0" - /* _mesa_function_pool[26523]: VertexAttribI3iEXT (will be remapped) */ + /* _mesa_function_pool[26914]: VertexAttribI3iEXT (will be remapped) */ "iiii\0" "glVertexAttribI3iEXT\0" "glVertexAttribI3i\0" "\0" - /* _mesa_function_pool[26568]: EnableIndexedEXT (will be remapped) */ + /* _mesa_function_pool[26959]: EnableIndexedEXT (will be remapped) */ "ii\0" "glEnableIndexedEXT\0" "glEnablei\0" "\0" - /* _mesa_function_pool[26601]: TextureMaterialEXT (dynamic) */ + /* _mesa_function_pool[26992]: TextureMaterialEXT (dynamic) */ "ii\0" "glTextureMaterialEXT\0" "\0" - /* _mesa_function_pool[26626]: TextureLightEXT (dynamic) */ + /* _mesa_function_pool[27017]: TextureLightEXT (dynamic) */ "i\0" "glTextureLightEXT\0" "\0" - /* _mesa_function_pool[26647]: ResetMinmax (offset 370) */ + /* _mesa_function_pool[27038]: ResetMinmax (offset 370) */ "i\0" "glResetMinmax\0" "glResetMinmaxEXT\0" "\0" - /* _mesa_function_pool[26681]: SpriteParameterfSGIX (dynamic) */ + /* _mesa_function_pool[27072]: SpriteParameterfSGIX (dynamic) */ "if\0" "glSpriteParameterfSGIX\0" "\0" - /* _mesa_function_pool[26708]: EnableClientState (offset 313) */ + /* _mesa_function_pool[27099]: EnableClientState (offset 313) */ "i\0" "glEnableClientState\0" "\0" - /* _mesa_function_pool[26731]: VertexAttrib4sNV (will be remapped) */ + /* _mesa_function_pool[27122]: VertexAttrib4sNV (will be remapped) */ "iiiii\0" "glVertexAttrib4sNV\0" "\0" - /* _mesa_function_pool[26757]: GetConvolutionParameterfv (offset 357) */ + /* _mesa_function_pool[27148]: GetConvolutionParameterfv (offset 357) */ "iip\0" "glGetConvolutionParameterfv\0" "glGetConvolutionParameterfvEXT\0" "\0" - /* _mesa_function_pool[26821]: VertexAttribs4dvNV (will be remapped) */ + /* _mesa_function_pool[27212]: VertexAttribs4dvNV (will be remapped) */ "iip\0" "glVertexAttribs4dvNV\0" "\0" - /* _mesa_function_pool[26847]: MultiModeDrawArraysIBM (will be remapped) */ - "pppii\0" - "glMultiModeDrawArraysIBM\0" - "\0" - /* _mesa_function_pool[26879]: VertexAttrib4dARB (will be remapped) */ + /* _mesa_function_pool[27238]: VertexAttrib4dARB (will be remapped) */ "idddd\0" "glVertexAttrib4d\0" "glVertexAttrib4dARB\0" "\0" - /* _mesa_function_pool[26923]: GetTexBumpParameterfvATI (will be remapped) */ + /* _mesa_function_pool[27282]: GetTexBumpParameterfvATI (will be remapped) */ "ip\0" "glGetTexBumpParameterfvATI\0" "\0" - /* _mesa_function_pool[26954]: ProgramNamedParameter4dNV (will be remapped) */ + /* _mesa_function_pool[27313]: ProgramNamedParameter4dNV (will be remapped) */ "iipdddd\0" "glProgramNamedParameter4dNV\0" "\0" - /* _mesa_function_pool[26991]: GetMaterialfv (offset 269) */ + /* _mesa_function_pool[27350]: GetMaterialfv (offset 269) */ "iip\0" "glGetMaterialfv\0" "\0" - /* _mesa_function_pool[27012]: VertexWeightfEXT (dynamic) */ + /* _mesa_function_pool[27371]: VertexWeightfEXT (dynamic) */ "f\0" "glVertexWeightfEXT\0" "\0" - /* _mesa_function_pool[27034]: SetFragmentShaderConstantATI (will be remapped) */ + /* _mesa_function_pool[27393]: SetFragmentShaderConstantATI (will be remapped) */ "ip\0" "glSetFragmentShaderConstantATI\0" "\0" - /* _mesa_function_pool[27069]: Binormal3fEXT (dynamic) */ + /* _mesa_function_pool[27428]: Binormal3fEXT (dynamic) */ "fff\0" "glBinormal3fEXT\0" "\0" - /* _mesa_function_pool[27090]: CallList (offset 2) */ + /* _mesa_function_pool[27449]: CallList (offset 2) */ "i\0" "glCallList\0" "\0" - /* _mesa_function_pool[27104]: Materialfv (offset 170) */ + /* _mesa_function_pool[27463]: Materialfv (offset 170) */ "iip\0" "glMaterialfv\0" "\0" - /* _mesa_function_pool[27122]: TexCoord3fv (offset 113) */ + /* _mesa_function_pool[27481]: TexCoord3fv (offset 113) */ "p\0" "glTexCoord3fv\0" "\0" - /* _mesa_function_pool[27139]: FogCoordfvEXT (will be remapped) */ + /* _mesa_function_pool[27498]: FogCoordfvEXT (will be remapped) */ "p\0" "glFogCoordfv\0" "glFogCoordfvEXT\0" "\0" - /* _mesa_function_pool[27171]: MultiTexCoord1ivARB (offset 381) */ + /* _mesa_function_pool[27530]: MultiTexCoord1ivARB (offset 381) */ "ip\0" "glMultiTexCoord1iv\0" "glMultiTexCoord1ivARB\0" "\0" - /* _mesa_function_pool[27216]: SecondaryColor3ubEXT (will be remapped) */ + /* _mesa_function_pool[27575]: SecondaryColor3ubEXT (will be remapped) */ "iii\0" "glSecondaryColor3ub\0" "glSecondaryColor3ubEXT\0" "\0" - /* _mesa_function_pool[27264]: MultiTexCoord2ivARB (offset 389) */ + /* _mesa_function_pool[27623]: MultiTexCoord2ivARB (offset 389) */ "ip\0" "glMultiTexCoord2iv\0" "glMultiTexCoord2ivARB\0" "\0" - /* _mesa_function_pool[27309]: FogFuncSGIS (dynamic) */ + /* _mesa_function_pool[27668]: FogFuncSGIS (dynamic) */ "ip\0" "glFogFuncSGIS\0" "\0" - /* _mesa_function_pool[27327]: CopyTexSubImage2D (offset 326) */ + /* _mesa_function_pool[27686]: CopyTexSubImage2D (offset 326) */ "iiiiiiii\0" "glCopyTexSubImage2D\0" "glCopyTexSubImage2DEXT\0" "\0" - /* _mesa_function_pool[27380]: GetObjectParameterivARB (will be remapped) */ + /* _mesa_function_pool[27739]: GetObjectParameterivARB (will be remapped) */ "iip\0" "glGetObjectParameterivARB\0" "\0" - /* _mesa_function_pool[27411]: Color3iv (offset 16) */ + /* _mesa_function_pool[27770]: Color3iv (offset 16) */ "p\0" "glColor3iv\0" "\0" - /* _mesa_function_pool[27425]: TexCoord4fVertex4fSUN (dynamic) */ + /* _mesa_function_pool[27784]: TexCoord4fVertex4fSUN (dynamic) */ "ffffffff\0" "glTexCoord4fVertex4fSUN\0" "\0" - /* _mesa_function_pool[27459]: DrawElements (offset 311) */ + /* _mesa_function_pool[27818]: DrawElements (offset 311) */ "iiip\0" "glDrawElements\0" "\0" - /* _mesa_function_pool[27480]: BindVertexArrayAPPLE (will be remapped) */ + /* _mesa_function_pool[27839]: BindVertexArrayAPPLE (will be remapped) */ "i\0" "glBindVertexArrayAPPLE\0" "\0" - /* _mesa_function_pool[27506]: GetProgramLocalParameterdvARB (will be remapped) */ + /* _mesa_function_pool[27865]: GetProgramLocalParameterdvARB (will be remapped) */ "iip\0" "glGetProgramLocalParameterdvARB\0" "\0" - /* _mesa_function_pool[27543]: GetHistogramParameteriv (offset 363) */ + /* _mesa_function_pool[27902]: GetHistogramParameteriv (offset 363) */ "iip\0" "glGetHistogramParameteriv\0" "glGetHistogramParameterivEXT\0" "\0" - /* _mesa_function_pool[27603]: MultiTexCoord1iARB (offset 380) */ + /* _mesa_function_pool[27962]: MultiTexCoord1iARB (offset 380) */ "ii\0" "glMultiTexCoord1i\0" "glMultiTexCoord1iARB\0" "\0" - /* _mesa_function_pool[27646]: GetConvolutionFilter (offset 356) */ + /* _mesa_function_pool[28005]: GetConvolutionFilter (offset 356) */ "iiip\0" "glGetConvolutionFilter\0" "glGetConvolutionFilterEXT\0" "\0" - /* _mesa_function_pool[27701]: GetProgramivARB (will be remapped) */ + /* _mesa_function_pool[28060]: GetProgramivARB (will be remapped) */ "iip\0" "glGetProgramivARB\0" "\0" - /* _mesa_function_pool[27724]: BlendFuncSeparateEXT (will be remapped) */ + /* _mesa_function_pool[28083]: TexBufferARB (will be remapped) */ + "iii\0" + "glTexBufferARB\0" + "\0" + /* _mesa_function_pool[28103]: BlendFuncSeparateEXT (will be remapped) */ "iiii\0" "glBlendFuncSeparate\0" "glBlendFuncSeparateEXT\0" "glBlendFuncSeparateINGR\0" "\0" - /* _mesa_function_pool[27797]: MapBufferRange (will be remapped) */ + /* _mesa_function_pool[28176]: MapBufferRange (will be remapped) */ "iiii\0" "glMapBufferRange\0" "\0" - /* _mesa_function_pool[27820]: ProgramParameters4dvNV (will be remapped) */ + /* _mesa_function_pool[28199]: ProgramParameters4dvNV (will be remapped) */ "iiip\0" "glProgramParameters4dvNV\0" "\0" - /* _mesa_function_pool[27851]: TexCoord2fColor3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[28230]: TexCoord2fColor3fVertex3fvSUN (dynamic) */ "ppp\0" "glTexCoord2fColor3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[27888]: EvalPoint2 (offset 239) */ + /* _mesa_function_pool[28267]: EvalPoint2 (offset 239) */ "ii\0" "glEvalPoint2\0" "\0" - /* _mesa_function_pool[27905]: Uniform1uivEXT (will be remapped) */ + /* _mesa_function_pool[28284]: Uniform1uivEXT (will be remapped) */ "iip\0" "glUniform1uivEXT\0" "glUniform1uiv\0" "\0" - /* _mesa_function_pool[27941]: EvalPoint1 (offset 237) */ + /* _mesa_function_pool[28320]: EvalPoint1 (offset 237) */ "i\0" "glEvalPoint1\0" "\0" - /* _mesa_function_pool[27957]: Binormal3dvEXT (dynamic) */ + /* _mesa_function_pool[28336]: Binormal3dvEXT (dynamic) */ "p\0" "glBinormal3dvEXT\0" "\0" - /* _mesa_function_pool[27977]: PopMatrix (offset 297) */ + /* _mesa_function_pool[28356]: PopMatrix (offset 297) */ "\0" "glPopMatrix\0" "\0" - /* _mesa_function_pool[27991]: GetVertexAttribIuivEXT (will be remapped) */ - "iip\0" - "glGetVertexAttribIuivEXT\0" - "glGetVertexAttribIuiv\0" - "\0" - /* _mesa_function_pool[28043]: FinishFenceNV (will be remapped) */ + /* _mesa_function_pool[28370]: FinishFenceNV (will be remapped) */ "i\0" "glFinishFenceNV\0" "\0" - /* _mesa_function_pool[28062]: GetFogFuncSGIS (dynamic) */ + /* _mesa_function_pool[28389]: GetFogFuncSGIS (dynamic) */ "p\0" "glGetFogFuncSGIS\0" "\0" - /* _mesa_function_pool[28082]: GetUniformLocationARB (will be remapped) */ + /* _mesa_function_pool[28409]: GetUniformLocationARB (will be remapped) */ "ip\0" "glGetUniformLocation\0" "glGetUniformLocationARB\0" "\0" - /* _mesa_function_pool[28131]: SecondaryColor3fEXT (will be remapped) */ + /* _mesa_function_pool[28458]: SecondaryColor3fEXT (will be remapped) */ "fff\0" "glSecondaryColor3f\0" "glSecondaryColor3fEXT\0" "\0" - /* _mesa_function_pool[28177]: GetTexGeniv (offset 280) */ + /* _mesa_function_pool[28504]: GetTexGeniv (offset 280) */ "iip\0" "glGetTexGeniv\0" "\0" - /* _mesa_function_pool[28196]: CombinerInputNV (will be remapped) */ + /* _mesa_function_pool[28523]: CombinerInputNV (will be remapped) */ "iiiiii\0" "glCombinerInputNV\0" "\0" - /* _mesa_function_pool[28222]: VertexAttrib3sARB (will be remapped) */ + /* _mesa_function_pool[28549]: VertexAttrib3sARB (will be remapped) */ "iiii\0" "glVertexAttrib3s\0" "glVertexAttrib3sARB\0" "\0" - /* _mesa_function_pool[28265]: IsTransformFeedback (will be remapped) */ + /* _mesa_function_pool[28592]: IsTransformFeedback (will be remapped) */ "i\0" "glIsTransformFeedback\0" "\0" - /* _mesa_function_pool[28290]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[28617]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */ "ppp\0" "glReplacementCodeuiNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[28335]: Map2d (offset 222) */ + /* _mesa_function_pool[28662]: Map2d (offset 222) */ "iddiiddiip\0" "glMap2d\0" "\0" - /* _mesa_function_pool[28355]: Map2f (offset 223) */ + /* _mesa_function_pool[28682]: Map2f (offset 223) */ "iffiiffiip\0" "glMap2f\0" "\0" - /* _mesa_function_pool[28375]: ProgramStringARB (will be remapped) */ + /* _mesa_function_pool[28702]: ProgramStringARB (will be remapped) */ "iiip\0" "glProgramStringARB\0" "\0" - /* _mesa_function_pool[28400]: Vertex4s (offset 148) */ + /* _mesa_function_pool[28727]: Vertex4s (offset 148) */ "iiii\0" "glVertex4s\0" "\0" - /* _mesa_function_pool[28417]: TexCoord4fVertex4fvSUN (dynamic) */ + /* _mesa_function_pool[28744]: TexCoord4fVertex4fvSUN (dynamic) */ "pp\0" "glTexCoord4fVertex4fvSUN\0" "\0" - /* _mesa_function_pool[28446]: FragmentLightModelivSGIX (dynamic) */ + /* _mesa_function_pool[28773]: FragmentLightModelivSGIX (dynamic) */ "ip\0" "glFragmentLightModelivSGIX\0" "\0" - /* _mesa_function_pool[28477]: VertexAttrib1fNV (will be remapped) */ + /* _mesa_function_pool[28804]: VertexAttrib1fNV (will be remapped) */ "if\0" "glVertexAttrib1fNV\0" "\0" - /* _mesa_function_pool[28500]: Vertex4f (offset 144) */ + /* _mesa_function_pool[28827]: Vertex4f (offset 144) */ "ffff\0" "glVertex4f\0" "\0" - /* _mesa_function_pool[28517]: EvalCoord1d (offset 228) */ + /* _mesa_function_pool[28844]: EvalCoord1d (offset 228) */ "d\0" "glEvalCoord1d\0" "\0" - /* _mesa_function_pool[28534]: Vertex4d (offset 142) */ + /* _mesa_function_pool[28861]: Vertex4d (offset 142) */ "dddd\0" "glVertex4d\0" "\0" - /* _mesa_function_pool[28551]: RasterPos4dv (offset 79) */ + /* _mesa_function_pool[28878]: RasterPos4dv (offset 79) */ "p\0" "glRasterPos4dv\0" "\0" - /* _mesa_function_pool[28569]: UseShaderProgramEXT (will be remapped) */ + /* _mesa_function_pool[28896]: UseShaderProgramEXT (will be remapped) */ "ii\0" "glUseShaderProgramEXT\0" "\0" - /* _mesa_function_pool[28595]: FragmentLightfSGIX (dynamic) */ + /* _mesa_function_pool[28922]: FragmentLightfSGIX (dynamic) */ "iif\0" "glFragmentLightfSGIX\0" "\0" - /* _mesa_function_pool[28621]: GetCompressedTexImageARB (will be remapped) */ + /* _mesa_function_pool[28948]: GetCompressedTexImageARB (will be remapped) */ "iip\0" "glGetCompressedTexImage\0" "glGetCompressedTexImageARB\0" "\0" - /* _mesa_function_pool[28677]: GetTexGenfv (offset 279) */ + /* _mesa_function_pool[29004]: GetTexGenfv (offset 279) */ "iip\0" "glGetTexGenfv\0" "\0" - /* _mesa_function_pool[28696]: Vertex4i (offset 146) */ + /* _mesa_function_pool[29023]: Vertex4i (offset 146) */ "iiii\0" "glVertex4i\0" "\0" - /* _mesa_function_pool[28713]: VertexWeightPointerEXT (dynamic) */ + /* _mesa_function_pool[29040]: VertexWeightPointerEXT (dynamic) */ "iiip\0" "glVertexWeightPointerEXT\0" "\0" - /* _mesa_function_pool[28744]: GetHistogram (offset 361) */ + /* _mesa_function_pool[29071]: GetHistogram (offset 361) */ "iiiip\0" "glGetHistogram\0" "glGetHistogramEXT\0" "\0" - /* _mesa_function_pool[28784]: ActiveStencilFaceEXT (will be remapped) */ + /* _mesa_function_pool[29111]: ActiveStencilFaceEXT (will be remapped) */ "i\0" "glActiveStencilFaceEXT\0" "\0" - /* _mesa_function_pool[28810]: StencilFuncSeparateATI (will be remapped) */ + /* _mesa_function_pool[29137]: StencilFuncSeparateATI (will be remapped) */ "iiii\0" "glStencilFuncSeparateATI\0" "\0" - /* _mesa_function_pool[28841]: Materialf (offset 169) */ + /* _mesa_function_pool[29168]: Materialf (offset 169) */ "iif\0" "glMaterialf\0" "\0" - /* _mesa_function_pool[28858]: GetShaderSourceARB (will be remapped) */ + /* _mesa_function_pool[29185]: GetShaderSourceARB (will be remapped) */ "iipp\0" "glGetShaderSource\0" "glGetShaderSourceARB\0" "\0" - /* _mesa_function_pool[28903]: IglooInterfaceSGIX (dynamic) */ + /* _mesa_function_pool[29230]: IglooInterfaceSGIX (dynamic) */ "ip\0" "glIglooInterfaceSGIX\0" "\0" - /* _mesa_function_pool[28928]: Materiali (offset 171) */ + /* _mesa_function_pool[29255]: Materiali (offset 171) */ "iii\0" "glMateriali\0" "\0" - /* _mesa_function_pool[28945]: VertexAttrib4dNV (will be remapped) */ + /* _mesa_function_pool[29272]: VertexAttrib4dNV (will be remapped) */ "idddd\0" "glVertexAttrib4dNV\0" "\0" - /* _mesa_function_pool[28971]: MultiModeDrawElementsIBM (will be remapped) */ + /* _mesa_function_pool[29298]: MultiModeDrawElementsIBM (will be remapped) */ "ppipii\0" "glMultiModeDrawElementsIBM\0" "\0" - /* _mesa_function_pool[29006]: Indexsv (offset 51) */ + /* _mesa_function_pool[29333]: Indexsv (offset 51) */ "p\0" "glIndexsv\0" "\0" - /* _mesa_function_pool[29019]: MultiTexCoord4svARB (offset 407) */ + /* _mesa_function_pool[29346]: MultiTexCoord4svARB (offset 407) */ "ip\0" "glMultiTexCoord4sv\0" "glMultiTexCoord4svARB\0" "\0" - /* _mesa_function_pool[29064]: LightModelfv (offset 164) */ + /* _mesa_function_pool[29391]: LightModelfv (offset 164) */ "ip\0" "glLightModelfv\0" "\0" - /* _mesa_function_pool[29083]: TexCoord2dv (offset 103) */ + /* _mesa_function_pool[29410]: TexCoord2dv (offset 103) */ "p\0" "glTexCoord2dv\0" "\0" - /* _mesa_function_pool[29100]: GenQueriesARB (will be remapped) */ + /* _mesa_function_pool[29427]: GenQueriesARB (will be remapped) */ "ip\0" "glGenQueries\0" "glGenQueriesARB\0" "\0" - /* _mesa_function_pool[29133]: EvalCoord1dv (offset 229) */ + /* _mesa_function_pool[29460]: EvalCoord1dv (offset 229) */ "p\0" "glEvalCoord1dv\0" "\0" - /* _mesa_function_pool[29151]: ReplacementCodeuiVertex3fSUN (dynamic) */ + /* _mesa_function_pool[29478]: ReplacementCodeuiVertex3fSUN (dynamic) */ "ifff\0" "glReplacementCodeuiVertex3fSUN\0" "\0" - /* _mesa_function_pool[29188]: Translated (offset 303) */ + /* _mesa_function_pool[29515]: Translated (offset 303) */ "ddd\0" "glTranslated\0" "\0" - /* _mesa_function_pool[29206]: Translatef (offset 304) */ + /* _mesa_function_pool[29533]: Translatef (offset 304) */ "fff\0" "glTranslatef\0" "\0" - /* _mesa_function_pool[29224]: Uniform3uiEXT (will be remapped) */ + /* _mesa_function_pool[29551]: Uniform3uiEXT (will be remapped) */ "iiii\0" "glUniform3uiEXT\0" "glUniform3ui\0" "\0" - /* _mesa_function_pool[29259]: StencilMask (offset 209) */ + /* _mesa_function_pool[29586]: StencilMask (offset 209) */ "i\0" "glStencilMask\0" "\0" - /* _mesa_function_pool[29276]: Tangent3iEXT (dynamic) */ + /* _mesa_function_pool[29603]: Tangent3iEXT (dynamic) */ "iii\0" "glTangent3iEXT\0" "\0" - /* _mesa_function_pool[29296]: GetLightiv (offset 265) */ + /* _mesa_function_pool[29623]: ClampColorARB (will be remapped) */ + "ii\0" + "glClampColorARB\0" + "\0" + /* _mesa_function_pool[29643]: GetLightiv (offset 265) */ "iip\0" "glGetLightiv\0" "\0" - /* _mesa_function_pool[29314]: DrawMeshArraysSUN (dynamic) */ + /* _mesa_function_pool[29661]: GetSamplerParameterIiv (will be remapped) */ + "iip\0" + "glGetSamplerParameterIiv\0" + "\0" + /* _mesa_function_pool[29691]: DrawMeshArraysSUN (dynamic) */ "iiii\0" "glDrawMeshArraysSUN\0" "\0" - /* _mesa_function_pool[29340]: IsList (offset 287) */ + /* _mesa_function_pool[29717]: IsList (offset 287) */ "i\0" "glIsList\0" "\0" - /* _mesa_function_pool[29352]: IsSync (will be remapped) */ + /* _mesa_function_pool[29729]: IsSync (will be remapped) */ "i\0" "glIsSync\0" "\0" - /* _mesa_function_pool[29364]: RenderMode (offset 196) */ + /* _mesa_function_pool[29741]: RenderMode (offset 196) */ "i\0" "glRenderMode\0" "\0" - /* _mesa_function_pool[29380]: GetMapControlPointsNV (dynamic) */ + /* _mesa_function_pool[29757]: GetMapControlPointsNV (dynamic) */ "iiiiiip\0" "glGetMapControlPointsNV\0" "\0" - /* _mesa_function_pool[29413]: DrawBuffersARB (will be remapped) */ + /* _mesa_function_pool[29790]: DrawBuffersARB (will be remapped) */ "ip\0" "glDrawBuffers\0" "glDrawBuffersARB\0" "glDrawBuffersATI\0" "\0" - /* _mesa_function_pool[29465]: ClearBufferiv (will be remapped) */ + /* _mesa_function_pool[29842]: ClearBufferiv (will be remapped) */ "iip\0" "glClearBufferiv\0" "\0" - /* _mesa_function_pool[29486]: ProgramLocalParameter4fARB (will be remapped) */ + /* _mesa_function_pool[29863]: ProgramLocalParameter4fARB (will be remapped) */ "iiffff\0" "glProgramLocalParameter4fARB\0" "\0" - /* _mesa_function_pool[29523]: SpriteParameterivSGIX (dynamic) */ + /* _mesa_function_pool[29900]: SpriteParameterivSGIX (dynamic) */ "ip\0" "glSpriteParameterivSGIX\0" "\0" - /* _mesa_function_pool[29551]: ProvokingVertexEXT (will be remapped) */ + /* _mesa_function_pool[29928]: ProvokingVertexEXT (will be remapped) */ "i\0" "glProvokingVertexEXT\0" "glProvokingVertex\0" "\0" - /* _mesa_function_pool[29593]: MultiTexCoord1fARB (offset 378) */ + /* _mesa_function_pool[29970]: MultiTexCoord1fARB (offset 378) */ "if\0" "glMultiTexCoord1f\0" "glMultiTexCoord1fARB\0" "\0" - /* _mesa_function_pool[29636]: LoadName (offset 198) */ + /* _mesa_function_pool[30013]: LoadName (offset 198) */ "i\0" "glLoadName\0" "\0" - /* _mesa_function_pool[29650]: VertexAttribs4ubvNV (will be remapped) */ + /* _mesa_function_pool[30027]: VertexAttribs4ubvNV (will be remapped) */ "iip\0" "glVertexAttribs4ubvNV\0" "\0" - /* _mesa_function_pool[29677]: WeightsvARB (dynamic) */ + /* _mesa_function_pool[30054]: WeightsvARB (dynamic) */ "ip\0" "glWeightsvARB\0" "\0" - /* _mesa_function_pool[29695]: Uniform1fvARB (will be remapped) */ + /* _mesa_function_pool[30072]: Uniform1fvARB (will be remapped) */ "iip\0" "glUniform1fv\0" "glUniform1fvARB\0" "\0" - /* _mesa_function_pool[29729]: CopyTexSubImage1D (offset 325) */ + /* _mesa_function_pool[30106]: CopyTexSubImage1D (offset 325) */ "iiiiii\0" "glCopyTexSubImage1D\0" "glCopyTexSubImage1DEXT\0" "\0" - /* _mesa_function_pool[29780]: CullFace (offset 152) */ + /* _mesa_function_pool[30157]: CullFace (offset 152) */ "i\0" "glCullFace\0" "\0" - /* _mesa_function_pool[29794]: BindTexture (offset 307) */ + /* _mesa_function_pool[30171]: BindTexture (offset 307) */ "ii\0" "glBindTexture\0" "glBindTextureEXT\0" "\0" - /* _mesa_function_pool[29829]: BeginFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[30206]: BeginFragmentShaderATI (will be remapped) */ "\0" "glBeginFragmentShaderATI\0" "\0" - /* _mesa_function_pool[29856]: MultiTexCoord4fARB (offset 402) */ + /* _mesa_function_pool[30233]: MultiTexCoord4fARB (offset 402) */ "iffff\0" "glMultiTexCoord4f\0" "glMultiTexCoord4fARB\0" "\0" - /* _mesa_function_pool[29902]: VertexAttribs3svNV (will be remapped) */ + /* _mesa_function_pool[30279]: VertexAttribs3svNV (will be remapped) */ "iip\0" "glVertexAttribs3svNV\0" "\0" - /* _mesa_function_pool[29928]: StencilFunc (offset 243) */ + /* _mesa_function_pool[30305]: StencilFunc (offset 243) */ "iii\0" "glStencilFunc\0" "\0" - /* _mesa_function_pool[29947]: CopyPixels (offset 255) */ + /* _mesa_function_pool[30324]: CopyPixels (offset 255) */ "iiiii\0" "glCopyPixels\0" "\0" - /* _mesa_function_pool[29967]: Rectsv (offset 93) */ + /* _mesa_function_pool[30344]: Rectsv (offset 93) */ "pp\0" "glRectsv\0" "\0" - /* _mesa_function_pool[29980]: ReplacementCodeuivSUN (dynamic) */ + /* _mesa_function_pool[30357]: ReplacementCodeuivSUN (dynamic) */ "p\0" "glReplacementCodeuivSUN\0" "\0" - /* _mesa_function_pool[30007]: EnableVertexAttribArrayARB (will be remapped) */ + /* _mesa_function_pool[30384]: EnableVertexAttribArrayARB (will be remapped) */ "i\0" "glEnableVertexAttribArray\0" "glEnableVertexAttribArrayARB\0" "\0" - /* _mesa_function_pool[30065]: NormalPointervINTEL (dynamic) */ + /* _mesa_function_pool[30442]: NormalPointervINTEL (dynamic) */ "ip\0" "glNormalPointervINTEL\0" "\0" - /* _mesa_function_pool[30091]: CopyConvolutionFilter2D (offset 355) */ + /* _mesa_function_pool[30468]: CopyConvolutionFilter2D (offset 355) */ "iiiiii\0" "glCopyConvolutionFilter2D\0" "glCopyConvolutionFilter2DEXT\0" "\0" - /* _mesa_function_pool[30154]: WindowPos3ivMESA (will be remapped) */ + /* _mesa_function_pool[30531]: WindowPos3ivMESA (will be remapped) */ "p\0" "glWindowPos3iv\0" "glWindowPos3ivARB\0" "glWindowPos3ivMESA\0" "\0" - /* _mesa_function_pool[30209]: CopyBufferSubData (will be remapped) */ + /* _mesa_function_pool[30586]: CopyBufferSubData (will be remapped) */ "iiiii\0" "glCopyBufferSubData\0" "\0" - /* _mesa_function_pool[30236]: NormalPointer (offset 318) */ + /* _mesa_function_pool[30613]: NormalPointer (offset 318) */ "iip\0" "glNormalPointer\0" "\0" - /* _mesa_function_pool[30257]: TexParameterfv (offset 179) */ + /* _mesa_function_pool[30634]: TexParameterfv (offset 179) */ "iip\0" "glTexParameterfv\0" "\0" - /* _mesa_function_pool[30279]: IsBufferARB (will be remapped) */ + /* _mesa_function_pool[30656]: IsBufferARB (will be remapped) */ "i\0" "glIsBuffer\0" "glIsBufferARB\0" "\0" - /* _mesa_function_pool[30307]: WindowPos4iMESA (will be remapped) */ + /* _mesa_function_pool[30684]: WindowPos4iMESA (will be remapped) */ "iiii\0" "glWindowPos4iMESA\0" "\0" - /* _mesa_function_pool[30331]: VertexAttrib4uivARB (will be remapped) */ + /* _mesa_function_pool[30708]: VertexAttrib4uivARB (will be remapped) */ "ip\0" "glVertexAttrib4uiv\0" "glVertexAttrib4uivARB\0" "\0" - /* _mesa_function_pool[30376]: Tangent3bvEXT (dynamic) */ + /* _mesa_function_pool[30753]: Tangent3bvEXT (dynamic) */ "p\0" "glTangent3bvEXT\0" "\0" - /* _mesa_function_pool[30395]: VertexAttribI3uivEXT (will be remapped) */ + /* _mesa_function_pool[30772]: VertexAttribI3uivEXT (will be remapped) */ "ip\0" "glVertexAttribI3uivEXT\0" "glVertexAttribI3uiv\0" "\0" - /* _mesa_function_pool[30442]: UniformMatrix3x4fv (will be remapped) */ + /* _mesa_function_pool[30819]: UniformMatrix3x4fv (will be remapped) */ "iiip\0" "glUniformMatrix3x4fv\0" "\0" - /* _mesa_function_pool[30469]: ClipPlane (offset 150) */ + /* _mesa_function_pool[30846]: ClipPlane (offset 150) */ "ip\0" "glClipPlane\0" "\0" - /* _mesa_function_pool[30485]: Recti (offset 90) */ + /* _mesa_function_pool[30862]: Recti (offset 90) */ "iiii\0" "glRecti\0" "\0" - /* _mesa_function_pool[30499]: VertexAttribI3ivEXT (will be remapped) */ - "ip\0" - "glVertexAttribI3ivEXT\0" - "glVertexAttribI3iv\0" + /* _mesa_function_pool[30876]: TrackMatrixNV (will be remapped) */ + "iiii\0" + "glTrackMatrixNV\0" "\0" - /* _mesa_function_pool[30544]: DrawRangeElementsBaseVertex (will be remapped) */ + /* _mesa_function_pool[30898]: DrawRangeElementsBaseVertex (will be remapped) */ "iiiiipi\0" "glDrawRangeElementsBaseVertex\0" "\0" - /* _mesa_function_pool[30583]: TexCoordPointervINTEL (dynamic) */ + /* _mesa_function_pool[30937]: SamplerParameterIuiv (will be remapped) */ + "iip\0" + "glSamplerParameterIuiv\0" + "\0" + /* _mesa_function_pool[30965]: TexCoordPointervINTEL (dynamic) */ "iip\0" "glTexCoordPointervINTEL\0" "\0" - /* _mesa_function_pool[30612]: DeleteBuffersARB (will be remapped) */ + /* _mesa_function_pool[30994]: DeleteBuffersARB (will be remapped) */ "ip\0" "glDeleteBuffers\0" "glDeleteBuffersARB\0" "\0" - /* _mesa_function_pool[30651]: PixelTransformParameterfvEXT (dynamic) */ + /* _mesa_function_pool[31033]: PixelTransformParameterfvEXT (dynamic) */ "iip\0" "glPixelTransformParameterfvEXT\0" "\0" - /* _mesa_function_pool[30687]: PrimitiveRestartNV (will be remapped) */ + /* _mesa_function_pool[31069]: PrimitiveRestartNV (will be remapped) */ "\0" "glPrimitiveRestartNV\0" "\0" - /* _mesa_function_pool[30710]: WindowPos4fvMESA (will be remapped) */ + /* _mesa_function_pool[31092]: WindowPos4fvMESA (will be remapped) */ "p\0" "glWindowPos4fvMESA\0" "\0" - /* _mesa_function_pool[30732]: GetPixelMapuiv (offset 272) */ + /* _mesa_function_pool[31114]: GetPixelMapuiv (offset 272) */ "ip\0" "glGetPixelMapuiv\0" "\0" - /* _mesa_function_pool[30753]: Rectf (offset 88) */ + /* _mesa_function_pool[31135]: Rectf (offset 88) */ "ffff\0" "glRectf\0" "\0" - /* _mesa_function_pool[30767]: VertexAttrib1sNV (will be remapped) */ + /* _mesa_function_pool[31149]: VertexAttrib1sNV (will be remapped) */ "ii\0" "glVertexAttrib1sNV\0" "\0" - /* _mesa_function_pool[30790]: Indexfv (offset 47) */ + /* _mesa_function_pool[31172]: Indexfv (offset 47) */ "p\0" "glIndexfv\0" "\0" - /* _mesa_function_pool[30803]: SecondaryColor3svEXT (will be remapped) */ + /* _mesa_function_pool[31185]: SecondaryColor3svEXT (will be remapped) */ "p\0" "glSecondaryColor3sv\0" "glSecondaryColor3svEXT\0" "\0" - /* _mesa_function_pool[30849]: LoadTransposeMatrixfARB (will be remapped) */ + /* _mesa_function_pool[31231]: LoadTransposeMatrixfARB (will be remapped) */ "p\0" "glLoadTransposeMatrixf\0" "glLoadTransposeMatrixfARB\0" "\0" - /* _mesa_function_pool[30901]: GetPointerv (offset 329) */ + /* _mesa_function_pool[31283]: GetPointerv (offset 329) */ "ip\0" "glGetPointerv\0" "glGetPointervEXT\0" "\0" - /* _mesa_function_pool[30936]: Tangent3bEXT (dynamic) */ + /* _mesa_function_pool[31318]: Tangent3bEXT (dynamic) */ "iii\0" "glTangent3bEXT\0" "\0" - /* _mesa_function_pool[30956]: CombinerParameterfNV (will be remapped) */ + /* _mesa_function_pool[31338]: CombinerParameterfNV (will be remapped) */ "if\0" "glCombinerParameterfNV\0" "\0" - /* _mesa_function_pool[30983]: IndexMask (offset 212) */ + /* _mesa_function_pool[31365]: IndexMask (offset 212) */ "i\0" "glIndexMask\0" "\0" - /* _mesa_function_pool[30998]: BindProgramNV (will be remapped) */ + /* _mesa_function_pool[31380]: BindProgramNV (will be remapped) */ "ii\0" "glBindProgramARB\0" "glBindProgramNV\0" "\0" - /* _mesa_function_pool[31035]: VertexAttrib4svARB (will be remapped) */ + /* _mesa_function_pool[31417]: VertexAttrib4svARB (will be remapped) */ "ip\0" "glVertexAttrib4sv\0" "glVertexAttrib4svARB\0" "\0" - /* _mesa_function_pool[31078]: GetFloatv (offset 262) */ + /* _mesa_function_pool[31460]: GetFloatv (offset 262) */ "ip\0" "glGetFloatv\0" "\0" - /* _mesa_function_pool[31094]: CreateDebugObjectMESA (dynamic) */ + /* _mesa_function_pool[31476]: CreateDebugObjectMESA (dynamic) */ "\0" "glCreateDebugObjectMESA\0" "\0" - /* _mesa_function_pool[31120]: GetShaderiv (will be remapped) */ + /* _mesa_function_pool[31502]: GetShaderiv (will be remapped) */ "iip\0" "glGetShaderiv\0" "\0" - /* _mesa_function_pool[31139]: ClientWaitSync (will be remapped) */ + /* _mesa_function_pool[31521]: ClientWaitSync (will be remapped) */ "iii\0" "glClientWaitSync\0" "\0" - /* _mesa_function_pool[31161]: TexCoord4s (offset 124) */ + /* _mesa_function_pool[31543]: TexCoord4s (offset 124) */ "iiii\0" "glTexCoord4s\0" "\0" - /* _mesa_function_pool[31180]: TexCoord3sv (offset 117) */ + /* _mesa_function_pool[31562]: TexCoord3sv (offset 117) */ "p\0" "glTexCoord3sv\0" "\0" - /* _mesa_function_pool[31197]: BindFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[31579]: BindFragmentShaderATI (will be remapped) */ "i\0" "glBindFragmentShaderATI\0" "\0" - /* _mesa_function_pool[31224]: PopAttrib (offset 218) */ + /* _mesa_function_pool[31606]: PopAttrib (offset 218) */ "\0" "glPopAttrib\0" "\0" - /* _mesa_function_pool[31238]: Fogfv (offset 154) */ + /* _mesa_function_pool[31620]: Fogfv (offset 154) */ "ip\0" "glFogfv\0" "\0" - /* _mesa_function_pool[31250]: UnmapBufferARB (will be remapped) */ + /* _mesa_function_pool[31632]: UnmapBufferARB (will be remapped) */ "i\0" "glUnmapBuffer\0" "glUnmapBufferARB\0" "\0" - /* _mesa_function_pool[31284]: InitNames (offset 197) */ + /* _mesa_function_pool[31666]: InitNames (offset 197) */ "\0" "glInitNames\0" "\0" - /* _mesa_function_pool[31298]: Normal3sv (offset 61) */ + /* _mesa_function_pool[31680]: Normal3sv (offset 61) */ "p\0" "glNormal3sv\0" "\0" - /* _mesa_function_pool[31313]: Minmax (offset 368) */ + /* _mesa_function_pool[31695]: Minmax (offset 368) */ "iii\0" "glMinmax\0" "glMinmaxEXT\0" "\0" - /* _mesa_function_pool[31339]: TexCoord4d (offset 118) */ + /* _mesa_function_pool[31721]: TexCoord4d (offset 118) */ "dddd\0" "glTexCoord4d\0" "\0" - /* _mesa_function_pool[31358]: TexCoord4f (offset 120) */ + /* _mesa_function_pool[31740]: DeformationMap3dSGIX (dynamic) */ + "iddiiddiiddiip\0" + "glDeformationMap3dSGIX\0" + "\0" + /* _mesa_function_pool[31779]: TexCoord4f (offset 120) */ "ffff\0" "glTexCoord4f\0" "\0" - /* _mesa_function_pool[31377]: FogCoorddvEXT (will be remapped) */ + /* _mesa_function_pool[31798]: FogCoorddvEXT (will be remapped) */ "p\0" "glFogCoorddv\0" "glFogCoorddvEXT\0" "\0" - /* _mesa_function_pool[31409]: FinishTextureSUNX (dynamic) */ + /* _mesa_function_pool[31830]: FinishTextureSUNX (dynamic) */ "\0" "glFinishTextureSUNX\0" "\0" - /* _mesa_function_pool[31431]: GetFragmentLightfvSGIX (dynamic) */ + /* _mesa_function_pool[31852]: GetFragmentLightfvSGIX (dynamic) */ "iip\0" "glGetFragmentLightfvSGIX\0" "\0" - /* _mesa_function_pool[31461]: Binormal3fvEXT (dynamic) */ + /* _mesa_function_pool[31882]: Binormal3fvEXT (dynamic) */ "p\0" "glBinormal3fvEXT\0" "\0" - /* _mesa_function_pool[31481]: GetBooleanv (offset 258) */ + /* _mesa_function_pool[31902]: GetBooleanv (offset 258) */ "ip\0" "glGetBooleanv\0" "\0" - /* _mesa_function_pool[31499]: ColorFragmentOp3ATI (will be remapped) */ + /* _mesa_function_pool[31920]: ColorFragmentOp3ATI (will be remapped) */ "iiiiiiiiiiiii\0" "glColorFragmentOp3ATI\0" "\0" - /* _mesa_function_pool[31536]: Hint (offset 158) */ + /* _mesa_function_pool[31957]: Hint (offset 158) */ "ii\0" "glHint\0" "\0" - /* _mesa_function_pool[31547]: Color4dv (offset 28) */ + /* _mesa_function_pool[31968]: Color4dv (offset 28) */ "p\0" "glColor4dv\0" "\0" - /* _mesa_function_pool[31561]: VertexAttrib2svARB (will be remapped) */ + /* _mesa_function_pool[31982]: VertexAttrib2svARB (will be remapped) */ "ip\0" "glVertexAttrib2sv\0" "glVertexAttrib2svARB\0" "\0" - /* _mesa_function_pool[31604]: AreProgramsResidentNV (will be remapped) */ + /* _mesa_function_pool[32025]: AreProgramsResidentNV (will be remapped) */ "ipp\0" "glAreProgramsResidentNV\0" "\0" - /* _mesa_function_pool[31633]: WindowPos3svMESA (will be remapped) */ + /* _mesa_function_pool[32054]: WindowPos3svMESA (will be remapped) */ "p\0" "glWindowPos3sv\0" "glWindowPos3svARB\0" "glWindowPos3svMESA\0" "\0" - /* _mesa_function_pool[31688]: CopyColorSubTable (offset 347) */ + /* _mesa_function_pool[32109]: CopyColorSubTable (offset 347) */ "iiiii\0" "glCopyColorSubTable\0" "glCopyColorSubTableEXT\0" "\0" - /* _mesa_function_pool[31738]: WeightdvARB (dynamic) */ + /* _mesa_function_pool[32159]: WeightdvARB (dynamic) */ "ip\0" "glWeightdvARB\0" "\0" - /* _mesa_function_pool[31756]: DeleteRenderbuffersEXT (will be remapped) */ + /* _mesa_function_pool[32177]: DeleteRenderbuffersEXT (will be remapped) */ "ip\0" "glDeleteRenderbuffers\0" "glDeleteRenderbuffersEXT\0" "\0" - /* _mesa_function_pool[31807]: VertexAttrib4NubvARB (will be remapped) */ + /* _mesa_function_pool[32228]: VertexAttrib4NubvARB (will be remapped) */ "ip\0" "glVertexAttrib4Nubv\0" "glVertexAttrib4NubvARB\0" "\0" - /* _mesa_function_pool[31854]: VertexAttrib3dvNV (will be remapped) */ + /* _mesa_function_pool[32275]: VertexAttrib3dvNV (will be remapped) */ "ip\0" "glVertexAttrib3dvNV\0" "\0" - /* _mesa_function_pool[31878]: GetObjectParameterfvARB (will be remapped) */ + /* _mesa_function_pool[32299]: GetObjectParameterfvARB (will be remapped) */ "iip\0" "glGetObjectParameterfvARB\0" "\0" - /* _mesa_function_pool[31909]: Vertex4iv (offset 147) */ + /* _mesa_function_pool[32330]: Vertex4iv (offset 147) */ "p\0" "glVertex4iv\0" "\0" - /* _mesa_function_pool[31924]: GetProgramEnvParameterdvARB (will be remapped) */ + /* _mesa_function_pool[32345]: GetProgramEnvParameterdvARB (will be remapped) */ "iip\0" "glGetProgramEnvParameterdvARB\0" "\0" - /* _mesa_function_pool[31959]: TexCoord4dv (offset 119) */ + /* _mesa_function_pool[32380]: TexCoord4dv (offset 119) */ "p\0" "glTexCoord4dv\0" "\0" - /* _mesa_function_pool[31976]: LockArraysEXT (will be remapped) */ + /* _mesa_function_pool[32397]: LockArraysEXT (will be remapped) */ "ii\0" "glLockArraysEXT\0" "\0" - /* _mesa_function_pool[31996]: Begin (offset 7) */ + /* _mesa_function_pool[32417]: Begin (offset 7) */ "i\0" "glBegin\0" "\0" - /* _mesa_function_pool[32007]: LightModeli (offset 165) */ + /* _mesa_function_pool[32428]: LightModeli (offset 165) */ "ii\0" "glLightModeli\0" "\0" - /* _mesa_function_pool[32025]: VertexAttribI4ivEXT (will be remapped) */ + /* _mesa_function_pool[32446]: VertexAttribI4ivEXT (will be remapped) */ "ip\0" "glVertexAttribI4ivEXT\0" "glVertexAttribI4iv\0" "\0" - /* _mesa_function_pool[32070]: Rectfv (offset 89) */ + /* _mesa_function_pool[32491]: Rectfv (offset 89) */ "pp\0" "glRectfv\0" "\0" - /* _mesa_function_pool[32083]: BlendEquationSeparateiARB (will be remapped) */ - "iii\0" - "glBlendEquationSeparateiARB\0" - "\0" - /* _mesa_function_pool[32116]: LightModelf (offset 163) */ + /* _mesa_function_pool[32504]: LightModelf (offset 163) */ "if\0" "glLightModelf\0" "\0" - /* _mesa_function_pool[32134]: GetTexParameterfv (offset 282) */ + /* _mesa_function_pool[32522]: GetTexParameterfv (offset 282) */ "iip\0" "glGetTexParameterfv\0" "\0" - /* _mesa_function_pool[32159]: GetLightfv (offset 264) */ + /* _mesa_function_pool[32547]: GetLightfv (offset 264) */ "iip\0" "glGetLightfv\0" "\0" - /* _mesa_function_pool[32177]: PixelTransformParameterivEXT (dynamic) */ + /* _mesa_function_pool[32565]: PixelTransformParameterivEXT (dynamic) */ "iip\0" "glPixelTransformParameterivEXT\0" "\0" - /* _mesa_function_pool[32213]: BinormalPointerEXT (dynamic) */ + /* _mesa_function_pool[32601]: BinormalPointerEXT (dynamic) */ "iip\0" "glBinormalPointerEXT\0" "\0" - /* _mesa_function_pool[32239]: VertexAttrib1dNV (will be remapped) */ + /* _mesa_function_pool[32627]: VertexAttrib1dNV (will be remapped) */ "id\0" "glVertexAttrib1dNV\0" "\0" - /* _mesa_function_pool[32262]: GetCombinerInputParameterivNV (will be remapped) */ + /* _mesa_function_pool[32650]: GetCombinerInputParameterivNV (will be remapped) */ "iiiip\0" "glGetCombinerInputParameterivNV\0" "\0" - /* _mesa_function_pool[32301]: Disable (offset 214) */ + /* _mesa_function_pool[32689]: Disable (offset 214) */ "i\0" "glDisable\0" "\0" - /* _mesa_function_pool[32314]: MultiTexCoord2fvARB (offset 387) */ + /* _mesa_function_pool[32702]: MultiTexCoord2fvARB (offset 387) */ "ip\0" "glMultiTexCoord2fv\0" "glMultiTexCoord2fvARB\0" "\0" - /* _mesa_function_pool[32359]: GetRenderbufferParameterivEXT (will be remapped) */ + /* _mesa_function_pool[32747]: GetRenderbufferParameterivEXT (will be remapped) */ "iip\0" "glGetRenderbufferParameteriv\0" "glGetRenderbufferParameterivEXT\0" "\0" - /* _mesa_function_pool[32425]: CombinerParameterivNV (will be remapped) */ + /* _mesa_function_pool[32813]: CombinerParameterivNV (will be remapped) */ "ip\0" "glCombinerParameterivNV\0" "\0" - /* _mesa_function_pool[32453]: GenFragmentShadersATI (will be remapped) */ + /* _mesa_function_pool[32841]: GenFragmentShadersATI (will be remapped) */ "i\0" "glGenFragmentShadersATI\0" "\0" - /* _mesa_function_pool[32480]: DrawArrays (offset 310) */ + /* _mesa_function_pool[32868]: DrawArrays (offset 310) */ "iii\0" "glDrawArrays\0" "glDrawArraysEXT\0" "\0" - /* _mesa_function_pool[32514]: WeightuivARB (dynamic) */ + /* _mesa_function_pool[32902]: WeightuivARB (dynamic) */ "ip\0" "glWeightuivARB\0" "\0" - /* _mesa_function_pool[32533]: VertexAttrib2sARB (will be remapped) */ + /* _mesa_function_pool[32921]: VertexAttrib2sARB (will be remapped) */ "iii\0" "glVertexAttrib2s\0" "glVertexAttrib2sARB\0" "\0" - /* _mesa_function_pool[32575]: ColorMask (offset 210) */ + /* _mesa_function_pool[32963]: ColorMask (offset 210) */ "iiii\0" "glColorMask\0" "\0" - /* _mesa_function_pool[32593]: GenAsyncMarkersSGIX (dynamic) */ + /* _mesa_function_pool[32981]: GenAsyncMarkersSGIX (dynamic) */ "i\0" "glGenAsyncMarkersSGIX\0" "\0" - /* _mesa_function_pool[32618]: Tangent3svEXT (dynamic) */ + /* _mesa_function_pool[33006]: Tangent3svEXT (dynamic) */ "p\0" "glTangent3svEXT\0" "\0" - /* _mesa_function_pool[32637]: GetListParameterivSGIX (dynamic) */ + /* _mesa_function_pool[33025]: GetListParameterivSGIX (dynamic) */ "iip\0" "glGetListParameterivSGIX\0" "\0" - /* _mesa_function_pool[32667]: BindBufferARB (will be remapped) */ + /* _mesa_function_pool[33055]: BindBufferARB (will be remapped) */ "ii\0" "glBindBuffer\0" "glBindBufferARB\0" "\0" - /* _mesa_function_pool[32700]: GetInfoLogARB (will be remapped) */ + /* _mesa_function_pool[33088]: GetInfoLogARB (will be remapped) */ "iipp\0" "glGetInfoLogARB\0" "\0" - /* _mesa_function_pool[32722]: RasterPos4iv (offset 83) */ + /* _mesa_function_pool[33110]: RasterPos4iv (offset 83) */ "p\0" "glRasterPos4iv\0" "\0" - /* _mesa_function_pool[32740]: Enable (offset 215) */ + /* _mesa_function_pool[33128]: Enable (offset 215) */ "i\0" "glEnable\0" "\0" - /* _mesa_function_pool[32752]: LineStipple (offset 167) */ + /* _mesa_function_pool[33140]: LineStipple (offset 167) */ "ii\0" "glLineStipple\0" "\0" - /* _mesa_function_pool[32770]: VertexAttribs4svNV (will be remapped) */ + /* _mesa_function_pool[33158]: VertexAttribs4svNV (will be remapped) */ "iip\0" "glVertexAttribs4svNV\0" "\0" - /* _mesa_function_pool[32796]: EdgeFlagPointerListIBM (dynamic) */ + /* _mesa_function_pool[33184]: EdgeFlagPointerListIBM (dynamic) */ "ipi\0" "glEdgeFlagPointerListIBM\0" "\0" - /* _mesa_function_pool[32826]: UniformMatrix3x2fv (will be remapped) */ + /* _mesa_function_pool[33214]: UniformMatrix3x2fv (will be remapped) */ "iiip\0" "glUniformMatrix3x2fv\0" "\0" - /* _mesa_function_pool[32853]: GetMinmaxParameterfv (offset 365) */ + /* _mesa_function_pool[33241]: GetMinmaxParameterfv (offset 365) */ "iip\0" "glGetMinmaxParameterfv\0" "glGetMinmaxParameterfvEXT\0" "\0" - /* _mesa_function_pool[32907]: VertexAttrib1fvARB (will be remapped) */ + /* _mesa_function_pool[33295]: VertexAttrib1fvARB (will be remapped) */ "ip\0" "glVertexAttrib1fv\0" "glVertexAttrib1fvARB\0" "\0" - /* _mesa_function_pool[32950]: GenBuffersARB (will be remapped) */ + /* _mesa_function_pool[33338]: GenBuffersARB (will be remapped) */ "ip\0" "glGenBuffers\0" "glGenBuffersARB\0" "\0" - /* _mesa_function_pool[32983]: VertexAttribs1svNV (will be remapped) */ + /* _mesa_function_pool[33371]: VertexAttribs1svNV (will be remapped) */ "iip\0" "glVertexAttribs1svNV\0" "\0" - /* _mesa_function_pool[33009]: Vertex3fv (offset 137) */ + /* _mesa_function_pool[33397]: Vertex3fv (offset 137) */ "p\0" "glVertex3fv\0" "\0" - /* _mesa_function_pool[33024]: GetTexBumpParameterivATI (will be remapped) */ + /* _mesa_function_pool[33412]: GetTexBumpParameterivATI (will be remapped) */ "ip\0" "glGetTexBumpParameterivATI\0" "\0" - /* _mesa_function_pool[33055]: Binormal3bEXT (dynamic) */ + /* _mesa_function_pool[33443]: Binormal3bEXT (dynamic) */ "iii\0" "glBinormal3bEXT\0" "\0" - /* _mesa_function_pool[33076]: FragmentMaterialivSGIX (dynamic) */ + /* _mesa_function_pool[33464]: FragmentMaterialivSGIX (dynamic) */ "iip\0" "glFragmentMaterialivSGIX\0" "\0" - /* _mesa_function_pool[33106]: IsRenderbufferEXT (will be remapped) */ + /* _mesa_function_pool[33494]: IsRenderbufferEXT (will be remapped) */ "i\0" "glIsRenderbuffer\0" "glIsRenderbufferEXT\0" "\0" - /* _mesa_function_pool[33146]: GenProgramsNV (will be remapped) */ + /* _mesa_function_pool[33534]: GenProgramsNV (will be remapped) */ "ip\0" "glGenProgramsARB\0" "glGenProgramsNV\0" "\0" - /* _mesa_function_pool[33183]: VertexAttrib4dvNV (will be remapped) */ + /* _mesa_function_pool[33571]: VertexAttrib4dvNV (will be remapped) */ "ip\0" "glVertexAttrib4dvNV\0" "\0" - /* _mesa_function_pool[33207]: EndFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[33595]: EndFragmentShaderATI (will be remapped) */ "\0" "glEndFragmentShaderATI\0" "\0" - /* _mesa_function_pool[33232]: Binormal3iEXT (dynamic) */ + /* _mesa_function_pool[33620]: Binormal3iEXT (dynamic) */ "iii\0" "glBinormal3iEXT\0" "\0" - /* _mesa_function_pool[33253]: WindowPos2fMESA (will be remapped) */ + /* _mesa_function_pool[33641]: WindowPos2fMESA (will be remapped) */ "ff\0" "glWindowPos2f\0" "glWindowPos2fARB\0" @@ -4783,600 +4847,616 @@ static const char _mesa_function_pool[] = /* these functions need to be remapped */ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { - { 1616, AttachShader_remap_index }, - { 9893, CreateProgram_remap_index }, - { 22964, CreateShader_remap_index }, - { 25451, DeleteProgram_remap_index }, - { 18608, DeleteShader_remap_index }, - { 23465, DetachShader_remap_index }, - { 17974, GetAttachedShaders_remap_index }, - { 4856, GetProgramInfoLog_remap_index }, - { 444, GetProgramiv_remap_index }, - { 6529, GetShaderInfoLog_remap_index }, - { 31120, GetShaderiv_remap_index }, - { 13387, IsProgram_remap_index }, - { 12308, IsShader_remap_index }, - { 10023, StencilFuncSeparate_remap_index }, - { 3960, StencilMaskSeparate_remap_index }, - { 7594, StencilOpSeparate_remap_index }, - { 22252, UniformMatrix2x3fv_remap_index }, - { 2886, UniformMatrix2x4fv_remap_index }, - { 32826, UniformMatrix3x2fv_remap_index }, - { 30442, UniformMatrix3x4fv_remap_index }, - { 16264, UniformMatrix4x2fv_remap_index }, - { 3302, UniformMatrix4x3fv_remap_index }, - { 5017, ClampColor_remap_index }, - { 18028, ClearBufferfi_remap_index }, - { 17470, ClearBufferfv_remap_index }, - { 29465, ClearBufferiv_remap_index }, - { 13592, ClearBufferuiv_remap_index }, - { 19891, GetStringi_remap_index }, - { 2827, TexBuffer_remap_index }, - { 977, FramebufferTexture_remap_index }, - { 26477, GetBufferParameteri64v_remap_index }, - { 10123, GetInteger64i_v_remap_index }, - { 23278, VertexAttribDivisor_remap_index }, - { 9911, LoadTransposeMatrixdARB_remap_index }, - { 30849, LoadTransposeMatrixfARB_remap_index }, - { 5637, MultTransposeMatrixdARB_remap_index }, - { 23652, MultTransposeMatrixfARB_remap_index }, - { 255, SampleCoverageARB_remap_index }, - { 5821, CompressedTexImage1DARB_remap_index }, - { 24180, CompressedTexImage2DARB_remap_index }, - { 4023, CompressedTexImage3DARB_remap_index }, - { 18325, CompressedTexSubImage1DARB_remap_index }, - { 2089, CompressedTexSubImage2DARB_remap_index }, - { 20313, CompressedTexSubImage3DARB_remap_index }, - { 28621, GetCompressedTexImageARB_remap_index }, - { 3868, DisableVertexAttribArrayARB_remap_index }, - { 30007, EnableVertexAttribArrayARB_remap_index }, - { 31924, GetProgramEnvParameterdvARB_remap_index }, - { 23532, GetProgramEnvParameterfvARB_remap_index }, - { 27506, GetProgramLocalParameterdvARB_remap_index }, - { 8036, GetProgramLocalParameterfvARB_remap_index }, - { 18459, GetProgramStringARB_remap_index }, - { 27701, GetProgramivARB_remap_index }, - { 20508, GetVertexAttribdvARB_remap_index }, - { 16072, GetVertexAttribfvARB_remap_index }, - { 9735, GetVertexAttribivARB_remap_index }, - { 19372, ProgramEnvParameter4dARB_remap_index }, - { 25201, ProgramEnvParameter4dvARB_remap_index }, - { 16792, ProgramEnvParameter4fARB_remap_index }, - { 8935, ProgramEnvParameter4fvARB_remap_index }, - { 3986, ProgramLocalParameter4dARB_remap_index }, - { 13097, ProgramLocalParameter4dvARB_remap_index }, - { 29486, ProgramLocalParameter4fARB_remap_index }, - { 25837, ProgramLocalParameter4fvARB_remap_index }, - { 28375, ProgramStringARB_remap_index }, - { 19622, VertexAttrib1dARB_remap_index }, - { 15726, VertexAttrib1dvARB_remap_index }, - { 4161, VertexAttrib1fARB_remap_index }, - { 32907, VertexAttrib1fvARB_remap_index }, - { 7120, VertexAttrib1sARB_remap_index }, - { 2263, VertexAttrib1svARB_remap_index }, - { 15157, VertexAttrib2dARB_remap_index }, - { 17491, VertexAttrib2dvARB_remap_index }, - { 1635, VertexAttrib2fARB_remap_index }, - { 17604, VertexAttrib2fvARB_remap_index }, - { 32533, VertexAttrib2sARB_remap_index }, - { 31561, VertexAttrib2svARB_remap_index }, - { 11274, VertexAttrib3dARB_remap_index }, - { 8602, VertexAttrib3dvARB_remap_index }, - { 1722, VertexAttrib3fARB_remap_index }, - { 22515, VertexAttrib3fvARB_remap_index }, - { 28222, VertexAttrib3sARB_remap_index }, - { 20250, VertexAttrib3svARB_remap_index }, - { 4882, VertexAttrib4NbvARB_remap_index }, - { 17851, VertexAttrib4NivARB_remap_index }, - { 22470, VertexAttrib4NsvARB_remap_index }, - { 23484, VertexAttrib4NubARB_remap_index }, - { 31807, VertexAttrib4NubvARB_remap_index }, - { 19033, VertexAttrib4NuivARB_remap_index }, - { 3175, VertexAttrib4NusvARB_remap_index }, - { 10863, VertexAttrib4bvARB_remap_index }, - { 26879, VertexAttrib4dARB_remap_index }, - { 21272, VertexAttrib4dvARB_remap_index }, - { 11428, VertexAttrib4fARB_remap_index }, - { 11832, VertexAttrib4fvARB_remap_index }, - { 10239, VertexAttrib4ivARB_remap_index }, - { 17284, VertexAttrib4sARB_remap_index }, - { 31035, VertexAttrib4svARB_remap_index }, - { 16597, VertexAttrib4ubvARB_remap_index }, - { 30331, VertexAttrib4uivARB_remap_index }, - { 20061, VertexAttrib4usvARB_remap_index }, - { 22067, VertexAttribPointerARB_remap_index }, - { 32667, BindBufferARB_remap_index }, - { 6827, BufferDataARB_remap_index }, - { 1537, BufferSubDataARB_remap_index }, - { 30612, DeleteBuffersARB_remap_index }, - { 32950, GenBuffersARB_remap_index }, - { 17647, GetBufferParameterivARB_remap_index }, - { 16744, GetBufferPointervARB_remap_index }, - { 1490, GetBufferSubDataARB_remap_index }, - { 30279, IsBufferARB_remap_index }, - { 26321, MapBufferARB_remap_index }, - { 31250, UnmapBufferARB_remap_index }, - { 351, BeginQueryARB_remap_index }, - { 19717, DeleteQueriesARB_remap_index }, - { 12159, EndQueryARB_remap_index }, - { 29100, GenQueriesARB_remap_index }, - { 1981, GetQueryObjectivARB_remap_index }, - { 17328, GetQueryObjectuivARB_remap_index }, - { 1779, GetQueryivARB_remap_index }, - { 19968, IsQueryARB_remap_index }, - { 8212, AttachObjectARB_remap_index }, - { 18570, CompileShaderARB_remap_index }, - { 3244, CreateProgramObjectARB_remap_index }, - { 6772, CreateShaderObjectARB_remap_index }, - { 14459, DeleteObjectARB_remap_index }, - { 23971, DetachObjectARB_remap_index }, - { 11904, GetActiveUniformARB_remap_index }, - { 9410, GetAttachedObjectsARB_remap_index }, - { 9717, GetHandleARB_remap_index }, - { 32700, GetInfoLogARB_remap_index }, - { 31878, GetObjectParameterfvARB_remap_index }, - { 27380, GetObjectParameterivARB_remap_index }, - { 28858, GetShaderSourceARB_remap_index }, - { 28082, GetUniformLocationARB_remap_index }, - { 23754, GetUniformfvARB_remap_index }, - { 12672, GetUniformivARB_remap_index }, - { 20106, LinkProgramARB_remap_index }, - { 20164, ShaderSourceARB_remap_index }, - { 7494, Uniform1fARB_remap_index }, - { 29695, Uniform1fvARB_remap_index }, - { 22036, Uniform1iARB_remap_index }, - { 20961, Uniform1ivARB_remap_index }, - { 2212, Uniform2fARB_remap_index }, - { 14295, Uniform2fvARB_remap_index }, - { 26208, Uniform2iARB_remap_index }, - { 2332, Uniform2ivARB_remap_index }, - { 18680, Uniform3fARB_remap_index }, - { 9440, Uniform3fvARB_remap_index }, - { 6383, Uniform3iARB_remap_index }, - { 16850, Uniform3ivARB_remap_index }, - { 19178, Uniform4fARB_remap_index }, - { 23618, Uniform4fvARB_remap_index }, - { 24880, Uniform4iARB_remap_index }, - { 20474, Uniform4ivARB_remap_index }, - { 8264, UniformMatrix2fvARB_remap_index }, + { 1577, AttachShader_remap_index }, + { 9967, CreateProgram_remap_index }, + { 23300, CreateShader_remap_index }, + { 25832, DeleteProgram_remap_index }, + { 18888, DeleteShader_remap_index }, + { 23801, DetachShader_remap_index }, + { 18202, GetAttachedShaders_remap_index }, + { 4919, GetProgramInfoLog_remap_index }, + { 405, GetProgramiv_remap_index }, + { 6627, GetShaderInfoLog_remap_index }, + { 31502, GetShaderiv_remap_index }, + { 13443, IsProgram_remap_index }, + { 12364, IsShader_remap_index }, + { 10097, StencilFuncSeparate_remap_index }, + { 3921, StencilMaskSeparate_remap_index }, + { 7692, StencilOpSeparate_remap_index }, + { 22560, UniformMatrix2x3fv_remap_index }, + { 2847, UniformMatrix2x4fv_remap_index }, + { 33214, UniformMatrix3x2fv_remap_index }, + { 30819, UniformMatrix3x4fv_remap_index }, + { 16406, UniformMatrix4x2fv_remap_index }, + { 3263, UniformMatrix4x3fv_remap_index }, + { 5080, ClampColor_remap_index }, + { 18256, ClearBufferfi_remap_index }, + { 17698, ClearBufferfv_remap_index }, + { 29842, ClearBufferiv_remap_index }, + { 13648, ClearBufferuiv_remap_index }, + { 20199, GetStringi_remap_index }, + { 2788, TexBuffer_remap_index }, + { 938, FramebufferTexture_remap_index }, + { 26868, GetBufferParameteri64v_remap_index }, + { 10197, GetInteger64i_v_remap_index }, + { 23614, VertexAttribDivisor_remap_index }, + { 9985, LoadTransposeMatrixdARB_remap_index }, + { 31231, LoadTransposeMatrixfARB_remap_index }, + { 5693, MultTransposeMatrixdARB_remap_index }, + { 23988, MultTransposeMatrixfARB_remap_index }, + { 216, SampleCoverageARB_remap_index }, + { 5919, CompressedTexImage1DARB_remap_index }, + { 24516, CompressedTexImage2DARB_remap_index }, + { 3984, CompressedTexImage3DARB_remap_index }, + { 18544, CompressedTexSubImage1DARB_remap_index }, + { 2050, CompressedTexSubImage2DARB_remap_index }, + { 20621, CompressedTexSubImage3DARB_remap_index }, + { 28948, GetCompressedTexImageARB_remap_index }, + { 3829, DisableVertexAttribArrayARB_remap_index }, + { 30384, EnableVertexAttribArrayARB_remap_index }, + { 32345, GetProgramEnvParameterdvARB_remap_index }, + { 23868, GetProgramEnvParameterfvARB_remap_index }, + { 27865, GetProgramLocalParameterdvARB_remap_index }, + { 8134, GetProgramLocalParameterfvARB_remap_index }, + { 18720, GetProgramStringARB_remap_index }, + { 28060, GetProgramivARB_remap_index }, + { 20816, GetVertexAttribdvARB_remap_index }, + { 16214, GetVertexAttribfvARB_remap_index }, + { 9809, GetVertexAttribivARB_remap_index }, + { 19662, ProgramEnvParameter4dARB_remap_index }, + { 25582, ProgramEnvParameter4dvARB_remap_index }, + { 17020, ProgramEnvParameter4fARB_remap_index }, + { 9009, ProgramEnvParameter4fvARB_remap_index }, + { 3947, ProgramLocalParameter4dARB_remap_index }, + { 13153, ProgramLocalParameter4dvARB_remap_index }, + { 29863, ProgramLocalParameter4fARB_remap_index }, + { 26228, ProgramLocalParameter4fvARB_remap_index }, + { 28702, ProgramStringARB_remap_index }, + { 19930, VertexAttrib1dARB_remap_index }, + { 15868, VertexAttrib1dvARB_remap_index }, + { 4143, VertexAttrib1fARB_remap_index }, + { 33295, VertexAttrib1fvARB_remap_index }, + { 7218, VertexAttrib1sARB_remap_index }, + { 2224, VertexAttrib1svARB_remap_index }, + { 15299, VertexAttrib2dARB_remap_index }, + { 17719, VertexAttrib2dvARB_remap_index }, + { 1596, VertexAttrib2fARB_remap_index }, + { 17832, VertexAttrib2fvARB_remap_index }, + { 32921, VertexAttrib2sARB_remap_index }, + { 31982, VertexAttrib2svARB_remap_index }, + { 11348, VertexAttrib3dARB_remap_index }, + { 8676, VertexAttrib3dvARB_remap_index }, + { 1683, VertexAttrib3fARB_remap_index }, + { 22851, VertexAttrib3fvARB_remap_index }, + { 28549, VertexAttrib3sARB_remap_index }, + { 20558, VertexAttrib3svARB_remap_index }, + { 4945, VertexAttrib4NbvARB_remap_index }, + { 18079, VertexAttrib4NivARB_remap_index }, + { 22806, VertexAttrib4NsvARB_remap_index }, + { 23820, VertexAttrib4NubARB_remap_index }, + { 32228, VertexAttrib4NubvARB_remap_index }, + { 19313, VertexAttrib4NuivARB_remap_index }, + { 3136, VertexAttrib4NusvARB_remap_index }, + { 10937, VertexAttrib4bvARB_remap_index }, + { 27238, VertexAttrib4dARB_remap_index }, + { 21580, VertexAttrib4dvARB_remap_index }, + { 11502, VertexAttrib4fARB_remap_index }, + { 11906, VertexAttrib4fvARB_remap_index }, + { 10313, VertexAttrib4ivARB_remap_index }, + { 17512, VertexAttrib4sARB_remap_index }, + { 31417, VertexAttrib4svARB_remap_index }, + { 16825, VertexAttrib4ubvARB_remap_index }, + { 30708, VertexAttrib4uivARB_remap_index }, + { 20369, VertexAttrib4usvARB_remap_index }, + { 22375, VertexAttribPointerARB_remap_index }, + { 33055, BindBufferARB_remap_index }, + { 6925, BufferDataARB_remap_index }, + { 1498, BufferSubDataARB_remap_index }, + { 30994, DeleteBuffersARB_remap_index }, + { 33338, GenBuffersARB_remap_index }, + { 17875, GetBufferParameterivARB_remap_index }, + { 16972, GetBufferPointervARB_remap_index }, + { 1451, GetBufferSubDataARB_remap_index }, + { 30656, IsBufferARB_remap_index }, + { 26712, MapBufferARB_remap_index }, + { 31632, UnmapBufferARB_remap_index }, + { 312, BeginQueryARB_remap_index }, + { 20025, DeleteQueriesARB_remap_index }, + { 12225, EndQueryARB_remap_index }, + { 29427, GenQueriesARB_remap_index }, + { 1942, GetQueryObjectivARB_remap_index }, + { 17556, GetQueryObjectuivARB_remap_index }, + { 1740, GetQueryivARB_remap_index }, + { 20276, IsQueryARB_remap_index }, + { 8286, AttachObjectARB_remap_index }, + { 18850, CompileShaderARB_remap_index }, + { 3205, CreateProgramObjectARB_remap_index }, + { 6870, CreateShaderObjectARB_remap_index }, + { 14601, DeleteObjectARB_remap_index }, + { 24307, DetachObjectARB_remap_index }, + { 11970, GetActiveUniformARB_remap_index }, + { 9484, GetAttachedObjectsARB_remap_index }, + { 9791, GetHandleARB_remap_index }, + { 33088, GetInfoLogARB_remap_index }, + { 32299, GetObjectParameterfvARB_remap_index }, + { 27739, GetObjectParameterivARB_remap_index }, + { 29185, GetShaderSourceARB_remap_index }, + { 28409, GetUniformLocationARB_remap_index }, + { 24090, GetUniformfvARB_remap_index }, + { 12728, GetUniformivARB_remap_index }, + { 20414, LinkProgramARB_remap_index }, + { 20472, ShaderSourceARB_remap_index }, + { 7592, Uniform1fARB_remap_index }, + { 30072, Uniform1fvARB_remap_index }, + { 22344, Uniform1iARB_remap_index }, + { 21269, Uniform1ivARB_remap_index }, + { 2173, Uniform2fARB_remap_index }, + { 14437, Uniform2fvARB_remap_index }, + { 26599, Uniform2iARB_remap_index }, + { 2293, Uniform2ivARB_remap_index }, + { 18960, Uniform3fARB_remap_index }, + { 9514, Uniform3fvARB_remap_index }, + { 6481, Uniform3iARB_remap_index }, + { 17078, Uniform3ivARB_remap_index }, + { 19468, Uniform4fARB_remap_index }, + { 23954, Uniform4fvARB_remap_index }, + { 25216, Uniform4iARB_remap_index }, + { 20782, Uniform4ivARB_remap_index }, + { 8338, UniformMatrix2fvARB_remap_index }, { 17, UniformMatrix3fvARB_remap_index }, - { 2729, UniformMatrix4fvARB_remap_index }, - { 25313, UseProgramObjectARB_remap_index }, - { 14845, ValidateProgramARB_remap_index }, - { 21315, BindAttribLocationARB_remap_index }, - { 4927, GetActiveAttribARB_remap_index }, - { 16531, GetAttribLocationARB_remap_index }, - { 29413, DrawBuffersARB_remap_index }, - { 17896, DrawArraysInstancedARB_remap_index }, - { 6444, DrawElementsInstancedARB_remap_index }, - { 13202, RenderbufferStorageMultisample_remap_index }, - { 13673, FramebufferTextureARB_remap_index }, - { 25739, FramebufferTextureFaceARB_remap_index }, - { 24120, ProgramParameteriARB_remap_index }, - { 23436, VertexAttribDivisorARB_remap_index }, - { 19226, FlushMappedBufferRange_remap_index }, - { 27797, MapBufferRange_remap_index }, - { 16375, BindVertexArray_remap_index }, - { 14668, GenVertexArrays_remap_index }, - { 30209, CopyBufferSubData_remap_index }, - { 31139, ClientWaitSync_remap_index }, - { 2648, DeleteSync_remap_index }, - { 7161, FenceSync_remap_index }, - { 15216, GetInteger64v_remap_index }, - { 22577, GetSynciv_remap_index }, - { 29352, IsSync_remap_index }, - { 9358, WaitSync_remap_index }, - { 3836, DrawElementsBaseVertex_remap_index }, - { 30544, DrawRangeElementsBaseVertex_remap_index }, - { 26352, MultiDrawElementsBaseVertex_remap_index }, - { 32083, BlendEquationSeparateiARB_remap_index }, - { 17740, BlendEquationiARB_remap_index }, - { 12641, BlendFuncSeparateiARB_remap_index }, - { 9783, BlendFunciARB_remap_index }, - { 5078, BindTransformFeedback_remap_index }, - { 3271, DeleteTransformFeedbacks_remap_index }, - { 6416, DrawTransformFeedback_remap_index }, - { 9577, GenTransformFeedbacks_remap_index }, - { 28265, IsTransformFeedback_remap_index }, - { 25932, PauseTransformFeedback_remap_index }, - { 5557, ResumeTransformFeedback_remap_index }, - { 21635, ClearDepthf_remap_index }, - { 6720, DepthRangef_remap_index }, - { 14480, GetShaderPrecisionFormat_remap_index }, - { 9963, ReleaseShaderCompiler_remap_index }, - { 10906, ShaderBinary_remap_index }, - { 5425, PolygonOffsetEXT_remap_index }, - { 23199, GetPixelTexGenParameterfvSGIS_remap_index }, - { 4404, GetPixelTexGenParameterivSGIS_remap_index }, - { 22932, PixelTexGenParameterfSGIS_remap_index }, - { 663, PixelTexGenParameterfvSGIS_remap_index }, - { 12710, PixelTexGenParameteriSGIS_remap_index }, - { 13815, PixelTexGenParameterivSGIS_remap_index }, - { 18224, SampleMaskSGIS_remap_index }, - { 19908, SamplePatternSGIS_remap_index }, - { 26281, ColorPointerEXT_remap_index }, - { 17534, EdgeFlagPointerEXT_remap_index }, - { 6037, IndexPointerEXT_remap_index }, - { 6117, NormalPointerEXT_remap_index }, - { 15810, TexCoordPointerEXT_remap_index }, - { 6950, VertexPointerEXT_remap_index }, - { 3638, PointParameterfEXT_remap_index }, - { 7801, PointParameterfvEXT_remap_index }, - { 31976, LockArraysEXT_remap_index }, - { 14909, UnlockArraysEXT_remap_index }, - { 1306, SecondaryColor3bEXT_remap_index }, - { 7960, SecondaryColor3bvEXT_remap_index }, - { 10416, SecondaryColor3dEXT_remap_index }, - { 25509, SecondaryColor3dvEXT_remap_index }, - { 28131, SecondaryColor3fEXT_remap_index }, - { 18261, SecondaryColor3fvEXT_remap_index }, - { 509, SecondaryColor3iEXT_remap_index }, - { 16120, SecondaryColor3ivEXT_remap_index }, - { 10051, SecondaryColor3sEXT_remap_index }, - { 30803, SecondaryColor3svEXT_remap_index }, - { 27216, SecondaryColor3ubEXT_remap_index }, - { 21206, SecondaryColor3ubvEXT_remap_index }, - { 12952, SecondaryColor3uiEXT_remap_index }, - { 22819, SecondaryColor3uivEXT_remap_index }, - { 25789, SecondaryColor3usEXT_remap_index }, - { 13025, SecondaryColor3usvEXT_remap_index }, - { 11775, SecondaryColorPointerEXT_remap_index }, - { 25603, MultiDrawArraysEXT_remap_index }, - { 20896, MultiDrawElementsEXT_remap_index }, - { 21091, FogCoordPointerEXT_remap_index }, - { 4553, FogCoorddEXT_remap_index }, - { 31377, FogCoorddvEXT_remap_index }, - { 4670, FogCoordfEXT_remap_index }, - { 27139, FogCoordfvEXT_remap_index }, - { 19130, PixelTexGenSGIX_remap_index }, - { 27724, BlendFuncSeparateEXT_remap_index }, - { 6862, FlushVertexArrayRangeNV_remap_index }, - { 5374, VertexArrayRangeNV_remap_index }, - { 28196, CombinerInputNV_remap_index }, - { 2155, CombinerOutputNV_remap_index }, - { 30956, CombinerParameterfNV_remap_index }, - { 5248, CombinerParameterfvNV_remap_index }, - { 22301, CombinerParameteriNV_remap_index }, - { 32425, CombinerParameterivNV_remap_index }, - { 7238, FinalCombinerInputNV_remap_index }, - { 9804, GetCombinerInputParameterfvNV_remap_index }, - { 32262, GetCombinerInputParameterivNV_remap_index }, - { 216, GetCombinerOutputParameterfvNV_remap_index }, - { 13776, GetCombinerOutputParameterivNV_remap_index }, - { 6624, GetFinalCombinerInputParameterfvNV_remap_index }, - { 24752, GetFinalCombinerInputParameterivNV_remap_index }, - { 12619, ResizeBuffersMESA_remap_index }, - { 11101, WindowPos2dMESA_remap_index }, - { 1099, WindowPos2dvMESA_remap_index }, - { 33253, WindowPos2fMESA_remap_index }, - { 7905, WindowPos2fvMESA_remap_index }, - { 18171, WindowPos2iMESA_remap_index }, - { 20381, WindowPos2ivMESA_remap_index }, - { 20995, WindowPos2sMESA_remap_index }, - { 5735, WindowPos2svMESA_remap_index }, - { 7730, WindowPos3dMESA_remap_index }, - { 14023, WindowPos3dvMESA_remap_index }, - { 555, WindowPos3fMESA_remap_index }, - { 14970, WindowPos3fvMESA_remap_index }, - { 24013, WindowPos3iMESA_remap_index }, - { 30154, WindowPos3ivMESA_remap_index }, - { 18825, WindowPos3sMESA_remap_index }, - { 31633, WindowPos3svMESA_remap_index }, - { 11052, WindowPos4dMESA_remap_index }, - { 16988, WindowPos4dvMESA_remap_index }, - { 13982, WindowPos4fMESA_remap_index }, - { 30710, WindowPos4fvMESA_remap_index }, - { 30307, WindowPos4iMESA_remap_index }, - { 12422, WindowPos4ivMESA_remap_index }, - { 19009, WindowPos4sMESA_remap_index }, - { 3222, WindowPos4svMESA_remap_index }, - { 26847, MultiModeDrawArraysIBM_remap_index }, - { 28971, MultiModeDrawElementsIBM_remap_index }, - { 12187, DeleteFencesNV_remap_index }, - { 28043, FinishFenceNV_remap_index }, - { 3760, GenFencesNV_remap_index }, - { 16968, GetFenceivNV_remap_index }, - { 8197, IsFenceNV_remap_index }, - { 13703, SetFenceNV_remap_index }, - { 4217, TestFenceNV_remap_index }, - { 31604, AreProgramsResidentNV_remap_index }, - { 30998, BindProgramNV_remap_index }, - { 25872, DeleteProgramsNV_remap_index }, - { 21424, ExecuteProgramNV_remap_index }, - { 33146, GenProgramsNV_remap_index }, - { 23304, GetProgramParameterdvNV_remap_index }, - { 10478, GetProgramParameterfvNV_remap_index }, - { 26255, GetProgramStringNV_remap_index }, - { 24390, GetProgramivNV_remap_index }, - { 23567, GetTrackMatrixivNV_remap_index }, - { 26049, GetVertexAttribPointervNV_remap_index }, - { 24685, GetVertexAttribdvNV_remap_index }, - { 9253, GetVertexAttribfvNV_remap_index }, - { 18432, GetVertexAttribivNV_remap_index }, - { 19256, IsProgramNV_remap_index }, - { 9336, LoadProgramNV_remap_index }, - { 27820, ProgramParameters4dvNV_remap_index }, - { 24320, ProgramParameters4fvNV_remap_index }, - { 20685, RequestResidentProgramsNV_remap_index }, - { 22279, TrackMatrixNV_remap_index }, - { 32239, VertexAttrib1dNV_remap_index }, - { 13614, VertexAttrib1dvNV_remap_index }, - { 28477, VertexAttrib1fNV_remap_index }, - { 2454, VertexAttrib1fvNV_remap_index }, - { 30767, VertexAttrib1sNV_remap_index }, - { 15043, VertexAttrib1svNV_remap_index }, - { 4832, VertexAttrib2dNV_remap_index }, - { 13507, VertexAttrib2dvNV_remap_index }, - { 20140, VertexAttrib2fNV_remap_index }, - { 13073, VertexAttrib2fvNV_remap_index }, - { 5947, VertexAttrib2sNV_remap_index }, - { 18879, VertexAttrib2svNV_remap_index }, - { 11249, VertexAttrib3dNV_remap_index }, - { 31854, VertexAttrib3dvNV_remap_index }, - { 10290, VertexAttrib3fNV_remap_index }, - { 24712, VertexAttrib3fvNV_remap_index }, - { 22122, VertexAttrib3sNV_remap_index }, - { 23594, VertexAttrib3svNV_remap_index }, - { 28945, VertexAttrib4dNV_remap_index }, - { 33183, VertexAttrib4dvNV_remap_index }, - { 4454, VertexAttrib4fNV_remap_index }, - { 9386, VertexAttrib4fvNV_remap_index }, - { 26731, VertexAttrib4sNV_remap_index }, - { 1448, VertexAttrib4svNV_remap_index }, - { 4990, VertexAttrib4ubNV_remap_index }, - { 817, VertexAttrib4ubvNV_remap_index }, - { 21604, VertexAttribPointerNV_remap_index }, - { 2306, VertexAttribs1dvNV_remap_index }, - { 26137, VertexAttribs1fvNV_remap_index }, - { 32983, VertexAttribs1svNV_remap_index }, - { 10315, VertexAttribs2dvNV_remap_index }, - { 25274, VertexAttribs2fvNV_remap_index }, - { 17560, VertexAttribs2svNV_remap_index }, - { 5276, VertexAttribs3dvNV_remap_index }, - { 2186, VertexAttribs3fvNV_remap_index }, - { 29902, VertexAttribs3svNV_remap_index }, - { 26821, VertexAttribs4dvNV_remap_index }, - { 5348, VertexAttribs4fvNV_remap_index }, - { 32770, VertexAttribs4svNV_remap_index }, - { 29650, VertexAttribs4ubvNV_remap_index }, - { 26923, GetTexBumpParameterfvATI_remap_index }, - { 33024, GetTexBumpParameterivATI_remap_index }, - { 18542, TexBumpParameterfvATI_remap_index }, - { 20556, TexBumpParameterivATI_remap_index }, - { 15589, AlphaFragmentOp1ATI_remap_index }, - { 25555, AlphaFragmentOp2ATI_remap_index }, - { 24628, AlphaFragmentOp3ATI_remap_index }, - { 29829, BeginFragmentShaderATI_remap_index }, - { 31197, BindFragmentShaderATI_remap_index }, - { 23723, ColorFragmentOp1ATI_remap_index }, - { 4332, ColorFragmentOp2ATI_remap_index }, - { 31499, ColorFragmentOp3ATI_remap_index }, - { 5514, DeleteFragmentShaderATI_remap_index }, - { 33207, EndFragmentShaderATI_remap_index }, - { 32453, GenFragmentShadersATI_remap_index }, - { 25428, PassTexCoordATI_remap_index }, - { 6930, SampleMapATI_remap_index }, - { 27034, SetFragmentShaderConstantATI_remap_index }, - { 402, PointParameteriNV_remap_index }, - { 14184, PointParameterivNV_remap_index }, - { 28784, ActiveStencilFaceEXT_remap_index }, - { 27480, BindVertexArrayAPPLE_remap_index }, - { 2776, DeleteVertexArraysAPPLE_remap_index }, - { 18001, GenVertexArraysAPPLE_remap_index }, - { 23369, IsVertexArrayAPPLE_remap_index }, - { 858, GetProgramNamedParameterdvNV_remap_index }, - { 3601, GetProgramNamedParameterfvNV_remap_index }, - { 26954, ProgramNamedParameter4dNV_remap_index }, - { 14543, ProgramNamedParameter4dvNV_remap_index }, - { 8869, ProgramNamedParameter4fNV_remap_index }, - { 11740, ProgramNamedParameter4fvNV_remap_index }, - { 16899, PrimitiveRestartIndexNV_remap_index }, - { 30687, PrimitiveRestartNV_remap_index }, - { 24299, DepthBoundsEXT_remap_index }, - { 1198, BlendEquationSeparateEXT_remap_index }, - { 14744, BindFramebufferEXT_remap_index }, - { 25648, BindRenderbufferEXT_remap_index }, - { 9633, CheckFramebufferStatusEXT_remap_index }, - { 22620, DeleteFramebuffersEXT_remap_index }, - { 31756, DeleteRenderbuffersEXT_remap_index }, - { 13531, FramebufferRenderbufferEXT_remap_index }, - { 13720, FramebufferTexture1DEXT_remap_index }, - { 11534, FramebufferTexture2DEXT_remap_index }, - { 11154, FramebufferTexture3DEXT_remap_index }, - { 23235, GenFramebuffersEXT_remap_index }, - { 17425, GenRenderbuffersEXT_remap_index }, - { 6666, GenerateMipmapEXT_remap_index }, - { 21697, GetFramebufferAttachmentParameterivEXT_remap_index }, - { 32359, GetRenderbufferParameterivEXT_remap_index }, - { 20436, IsFramebufferEXT_remap_index }, - { 33106, IsRenderbufferEXT_remap_index }, - { 8144, RenderbufferStorageEXT_remap_index }, - { 734, BlitFramebufferEXT_remap_index }, - { 14329, BufferParameteriAPPLE_remap_index }, - { 19288, FlushMappedBufferRangeAPPLE_remap_index }, - { 1854, BindFragDataLocationEXT_remap_index }, - { 24412, GetFragDataLocationEXT_remap_index }, - { 10593, GetUniformuivEXT_remap_index }, - { 2972, GetVertexAttribIivEXT_remap_index }, - { 27991, GetVertexAttribIuivEXT_remap_index }, - { 12020, Uniform1uiEXT_remap_index }, - { 27905, Uniform1uivEXT_remap_index }, - { 22218, Uniform2uiEXT_remap_index }, - { 4296, Uniform2uivEXT_remap_index }, - { 29224, Uniform3uiEXT_remap_index }, - { 14690, Uniform3uivEXT_remap_index }, - { 3525, Uniform4uiEXT_remap_index }, - { 8645, Uniform4uivEXT_remap_index }, - { 18389, VertexAttribI1iEXT_remap_index }, - { 1004, VertexAttribI1ivEXT_remap_index }, - { 2555, VertexAttribI1uiEXT_remap_index }, - { 12801, VertexAttribI1uivEXT_remap_index }, + { 2690, UniformMatrix4fvARB_remap_index }, + { 25694, UseProgramObjectARB_remap_index }, + { 14987, ValidateProgramARB_remap_index }, + { 21623, BindAttribLocationARB_remap_index }, + { 4990, GetActiveAttribARB_remap_index }, + { 16726, GetAttribLocationARB_remap_index }, + { 29790, DrawBuffersARB_remap_index }, + { 29623, ClampColorARB_remap_index }, + { 18124, DrawArraysInstancedARB_remap_index }, + { 6542, DrawElementsInstancedARB_remap_index }, + { 13258, RenderbufferStorageMultisample_remap_index }, + { 13729, FramebufferTextureARB_remap_index }, + { 26130, FramebufferTextureFaceARB_remap_index }, + { 24456, ProgramParameteriARB_remap_index }, + { 23772, VertexAttribDivisorARB_remap_index }, + { 19516, FlushMappedBufferRange_remap_index }, + { 28176, MapBufferRange_remap_index }, + { 28083, TexBufferARB_remap_index }, + { 16544, BindVertexArray_remap_index }, + { 14810, GenVertexArrays_remap_index }, + { 30586, CopyBufferSubData_remap_index }, + { 31521, ClientWaitSync_remap_index }, + { 2609, DeleteSync_remap_index }, + { 7259, FenceSync_remap_index }, + { 15358, GetInteger64v_remap_index }, + { 22913, GetSynciv_remap_index }, + { 29729, IsSync_remap_index }, + { 9432, WaitSync_remap_index }, + { 3797, DrawElementsBaseVertex_remap_index }, + { 30898, DrawRangeElementsBaseVertex_remap_index }, + { 26743, MultiDrawElementsBaseVertex_remap_index }, + { 16792, BlendEquationSeparateiARB_remap_index }, + { 17968, BlendEquationiARB_remap_index }, + { 12697, BlendFuncSeparateiARB_remap_index }, + { 9857, BlendFunciARB_remap_index }, + { 8200, BindSampler_remap_index }, + { 4122, DeleteSamplers_remap_index }, + { 19889, GenSamplers_remap_index }, + { 29661, GetSamplerParameterIiv_remap_index }, + { 19410, GetSamplerParameterIuiv_remap_index }, + { 4839, GetSamplerParameterfv_remap_index }, + { 25851, GetSamplerParameteriv_remap_index }, + { 14355, IsSampler_remap_index }, + { 16497, SamplerParameterIiv_remap_index }, + { 30937, SamplerParameterIuiv_remap_index }, + { 22612, SamplerParameterf_remap_index }, + { 16653, SamplerParameterfv_remap_index }, + { 22587, SamplerParameteri_remap_index }, + { 18318, SamplerParameteriv_remap_index }, + { 5141, BindTransformFeedback_remap_index }, + { 3232, DeleteTransformFeedbacks_remap_index }, + { 6514, DrawTransformFeedback_remap_index }, + { 9651, GenTransformFeedbacks_remap_index }, + { 28592, IsTransformFeedback_remap_index }, + { 26323, PauseTransformFeedback_remap_index }, + { 5578, ResumeTransformFeedback_remap_index }, + { 21943, ClearDepthf_remap_index }, + { 6818, DepthRangef_remap_index }, + { 14622, GetShaderPrecisionFormat_remap_index }, + { 10037, ReleaseShaderCompiler_remap_index }, + { 10980, ShaderBinary_remap_index }, + { 5446, PolygonOffsetEXT_remap_index }, + { 23535, GetPixelTexGenParameterfvSGIS_remap_index }, + { 4438, GetPixelTexGenParameterivSGIS_remap_index }, + { 23268, PixelTexGenParameterfSGIS_remap_index }, + { 624, PixelTexGenParameterfvSGIS_remap_index }, + { 12766, PixelTexGenParameteriSGIS_remap_index }, + { 13903, PixelTexGenParameterivSGIS_remap_index }, + { 18443, SampleMaskSGIS_remap_index }, + { 20216, SamplePatternSGIS_remap_index }, + { 26672, ColorPointerEXT_remap_index }, + { 17762, EdgeFlagPointerEXT_remap_index }, + { 6135, IndexPointerEXT_remap_index }, + { 6215, NormalPointerEXT_remap_index }, + { 15952, TexCoordPointerEXT_remap_index }, + { 7048, VertexPointerEXT_remap_index }, + { 3599, PointParameterfEXT_remap_index }, + { 7899, PointParameterfvEXT_remap_index }, + { 32397, LockArraysEXT_remap_index }, + { 15051, UnlockArraysEXT_remap_index }, + { 1267, SecondaryColor3bEXT_remap_index }, + { 8058, SecondaryColor3bvEXT_remap_index }, + { 10490, SecondaryColor3dEXT_remap_index }, + { 25900, SecondaryColor3dvEXT_remap_index }, + { 28458, SecondaryColor3fEXT_remap_index }, + { 18480, SecondaryColor3fvEXT_remap_index }, + { 470, SecondaryColor3iEXT_remap_index }, + { 16262, SecondaryColor3ivEXT_remap_index }, + { 10125, SecondaryColor3sEXT_remap_index }, + { 31185, SecondaryColor3svEXT_remap_index }, + { 27575, SecondaryColor3ubEXT_remap_index }, + { 21514, SecondaryColor3ubvEXT_remap_index }, + { 13008, SecondaryColor3uiEXT_remap_index }, + { 23155, SecondaryColor3uivEXT_remap_index }, + { 26180, SecondaryColor3usEXT_remap_index }, + { 13081, SecondaryColor3usvEXT_remap_index }, + { 11849, SecondaryColorPointerEXT_remap_index }, + { 25994, MultiDrawArraysEXT_remap_index }, + { 21204, MultiDrawElementsEXT_remap_index }, + { 21399, FogCoordPointerEXT_remap_index }, + { 4587, FogCoorddEXT_remap_index }, + { 31798, FogCoorddvEXT_remap_index }, + { 4704, FogCoordfEXT_remap_index }, + { 27498, FogCoordfvEXT_remap_index }, + { 11949, PixelTexGenSGIX_remap_index }, + { 28103, BlendFuncSeparateEXT_remap_index }, + { 6960, FlushVertexArrayRangeNV_remap_index }, + { 5395, VertexArrayRangeNV_remap_index }, + { 28523, CombinerInputNV_remap_index }, + { 2116, CombinerOutputNV_remap_index }, + { 31338, CombinerParameterfNV_remap_index }, + { 5269, CombinerParameterfvNV_remap_index }, + { 22637, CombinerParameteriNV_remap_index }, + { 32813, CombinerParameterivNV_remap_index }, + { 7336, FinalCombinerInputNV_remap_index }, + { 9878, GetCombinerInputParameterfvNV_remap_index }, + { 32650, GetCombinerInputParameterivNV_remap_index }, + { 14004, GetCombinerOutputParameterfvNV_remap_index }, + { 13832, GetCombinerOutputParameterivNV_remap_index }, + { 6722, GetFinalCombinerInputParameterfvNV_remap_index }, + { 25088, GetFinalCombinerInputParameterivNV_remap_index }, + { 12675, ResizeBuffersMESA_remap_index }, + { 11175, WindowPos2dMESA_remap_index }, + { 1060, WindowPos2dvMESA_remap_index }, + { 33641, WindowPos2fMESA_remap_index }, + { 8003, WindowPos2fvMESA_remap_index }, + { 18390, WindowPos2iMESA_remap_index }, + { 20689, WindowPos2ivMESA_remap_index }, + { 21303, WindowPos2sMESA_remap_index }, + { 5833, WindowPos2svMESA_remap_index }, + { 7828, WindowPos3dMESA_remap_index }, + { 14150, WindowPos3dvMESA_remap_index }, + { 516, WindowPos3fMESA_remap_index }, + { 15112, WindowPos3fvMESA_remap_index }, + { 24349, WindowPos3iMESA_remap_index }, + { 30531, WindowPos3ivMESA_remap_index }, + { 19105, WindowPos3sMESA_remap_index }, + { 32054, WindowPos3svMESA_remap_index }, + { 11126, WindowPos4dMESA_remap_index }, + { 17216, WindowPos4dvMESA_remap_index }, + { 14109, WindowPos4fMESA_remap_index }, + { 31092, WindowPos4fvMESA_remap_index }, + { 30684, WindowPos4iMESA_remap_index }, + { 12478, WindowPos4ivMESA_remap_index }, + { 19289, WindowPos4sMESA_remap_index }, + { 3183, WindowPos4svMESA_remap_index }, + { 13871, MultiModeDrawArraysIBM_remap_index }, + { 29298, MultiModeDrawElementsIBM_remap_index }, + { 12253, DeleteFencesNV_remap_index }, + { 28370, FinishFenceNV_remap_index }, + { 3721, GenFencesNV_remap_index }, + { 17196, GetFenceivNV_remap_index }, + { 8271, IsFenceNV_remap_index }, + { 13759, SetFenceNV_remap_index }, + { 4199, TestFenceNV_remap_index }, + { 32025, AreProgramsResidentNV_remap_index }, + { 31380, BindProgramNV_remap_index }, + { 26263, DeleteProgramsNV_remap_index }, + { 21732, ExecuteProgramNV_remap_index }, + { 33534, GenProgramsNV_remap_index }, + { 23640, GetProgramParameterdvNV_remap_index }, + { 10552, GetProgramParameterfvNV_remap_index }, + { 26646, GetProgramStringNV_remap_index }, + { 24726, GetProgramivNV_remap_index }, + { 23903, GetTrackMatrixivNV_remap_index }, + { 26440, GetVertexAttribPointervNV_remap_index }, + { 25021, GetVertexAttribdvNV_remap_index }, + { 9327, GetVertexAttribfvNV_remap_index }, + { 18693, GetVertexAttribivNV_remap_index }, + { 19546, IsProgramNV_remap_index }, + { 9410, LoadProgramNV_remap_index }, + { 28199, ProgramParameters4dvNV_remap_index }, + { 24656, ProgramParameters4fvNV_remap_index }, + { 20993, RequestResidentProgramsNV_remap_index }, + { 30876, TrackMatrixNV_remap_index }, + { 32627, VertexAttrib1dNV_remap_index }, + { 13670, VertexAttrib1dvNV_remap_index }, + { 28804, VertexAttrib1fNV_remap_index }, + { 2415, VertexAttrib1fvNV_remap_index }, + { 31149, VertexAttrib1sNV_remap_index }, + { 15185, VertexAttrib1svNV_remap_index }, + { 4895, VertexAttrib2dNV_remap_index }, + { 13563, VertexAttrib2dvNV_remap_index }, + { 20448, VertexAttrib2fNV_remap_index }, + { 13129, VertexAttrib2fvNV_remap_index }, + { 6045, VertexAttrib2sNV_remap_index }, + { 19159, VertexAttrib2svNV_remap_index }, + { 11323, VertexAttrib3dNV_remap_index }, + { 32275, VertexAttrib3dvNV_remap_index }, + { 10364, VertexAttrib3fNV_remap_index }, + { 25048, VertexAttrib3fvNV_remap_index }, + { 22430, VertexAttrib3sNV_remap_index }, + { 23930, VertexAttrib3svNV_remap_index }, + { 29272, VertexAttrib4dNV_remap_index }, + { 33571, VertexAttrib4dvNV_remap_index }, + { 4488, VertexAttrib4fNV_remap_index }, + { 9460, VertexAttrib4fvNV_remap_index }, + { 27122, VertexAttrib4sNV_remap_index }, + { 1409, VertexAttrib4svNV_remap_index }, + { 5053, VertexAttrib4ubNV_remap_index }, + { 778, VertexAttrib4ubvNV_remap_index }, + { 21912, VertexAttribPointerNV_remap_index }, + { 2267, VertexAttribs1dvNV_remap_index }, + { 26528, VertexAttribs1fvNV_remap_index }, + { 33371, VertexAttribs1svNV_remap_index }, + { 10389, VertexAttribs2dvNV_remap_index }, + { 25655, VertexAttribs2fvNV_remap_index }, + { 17788, VertexAttribs2svNV_remap_index }, + { 5297, VertexAttribs3dvNV_remap_index }, + { 2147, VertexAttribs3fvNV_remap_index }, + { 30279, VertexAttribs3svNV_remap_index }, + { 27212, VertexAttribs4dvNV_remap_index }, + { 5369, VertexAttribs4fvNV_remap_index }, + { 33158, VertexAttribs4svNV_remap_index }, + { 30027, VertexAttribs4ubvNV_remap_index }, + { 27282, GetTexBumpParameterfvATI_remap_index }, + { 33412, GetTexBumpParameterivATI_remap_index }, + { 18803, TexBumpParameterfvATI_remap_index }, + { 20864, TexBumpParameterivATI_remap_index }, + { 15731, AlphaFragmentOp1ATI_remap_index }, + { 25946, AlphaFragmentOp2ATI_remap_index }, + { 24964, AlphaFragmentOp3ATI_remap_index }, + { 30206, BeginFragmentShaderATI_remap_index }, + { 31579, BindFragmentShaderATI_remap_index }, + { 24059, ColorFragmentOp1ATI_remap_index }, + { 4366, ColorFragmentOp2ATI_remap_index }, + { 31920, ColorFragmentOp3ATI_remap_index }, + { 5535, DeleteFragmentShaderATI_remap_index }, + { 33595, EndFragmentShaderATI_remap_index }, + { 32841, GenFragmentShadersATI_remap_index }, + { 25809, PassTexCoordATI_remap_index }, + { 7028, SampleMapATI_remap_index }, + { 27393, SetFragmentShaderConstantATI_remap_index }, + { 363, PointParameteriNV_remap_index }, + { 14311, PointParameterivNV_remap_index }, + { 29111, ActiveStencilFaceEXT_remap_index }, + { 27839, BindVertexArrayAPPLE_remap_index }, + { 2737, DeleteVertexArraysAPPLE_remap_index }, + { 18229, GenVertexArraysAPPLE_remap_index }, + { 23705, IsVertexArrayAPPLE_remap_index }, + { 819, GetProgramNamedParameterdvNV_remap_index }, + { 3562, GetProgramNamedParameterfvNV_remap_index }, + { 27313, ProgramNamedParameter4dNV_remap_index }, + { 14685, ProgramNamedParameter4dvNV_remap_index }, + { 8943, ProgramNamedParameter4fNV_remap_index }, + { 11814, ProgramNamedParameter4fvNV_remap_index }, + { 17127, PrimitiveRestartIndexNV_remap_index }, + { 31069, PrimitiveRestartNV_remap_index }, + { 24635, DepthBoundsEXT_remap_index }, + { 1159, BlendEquationSeparateEXT_remap_index }, + { 14886, BindFramebufferEXT_remap_index }, + { 26039, BindRenderbufferEXT_remap_index }, + { 9707, CheckFramebufferStatusEXT_remap_index }, + { 22956, DeleteFramebuffersEXT_remap_index }, + { 32177, DeleteRenderbuffersEXT_remap_index }, + { 13587, FramebufferRenderbufferEXT_remap_index }, + { 13776, FramebufferTexture1DEXT_remap_index }, + { 11608, FramebufferTexture2DEXT_remap_index }, + { 11228, FramebufferTexture3DEXT_remap_index }, + { 23571, GenFramebuffersEXT_remap_index }, + { 17653, GenRenderbuffersEXT_remap_index }, + { 6764, GenerateMipmapEXT_remap_index }, + { 22005, GetFramebufferAttachmentParameterivEXT_remap_index }, + { 32747, GetRenderbufferParameterivEXT_remap_index }, + { 20744, IsFramebufferEXT_remap_index }, + { 33494, IsRenderbufferEXT_remap_index }, + { 8218, RenderbufferStorageEXT_remap_index }, + { 695, BlitFramebufferEXT_remap_index }, + { 14471, BufferParameteriAPPLE_remap_index }, + { 19578, FlushMappedBufferRangeAPPLE_remap_index }, + { 1815, BindFragDataLocationEXT_remap_index }, + { 24748, GetFragDataLocationEXT_remap_index }, + { 10667, GetUniformuivEXT_remap_index }, + { 2933, GetVertexAttribIivEXT_remap_index }, + { 4216, GetVertexAttribIuivEXT_remap_index }, + { 12086, Uniform1uiEXT_remap_index }, + { 28284, Uniform1uivEXT_remap_index }, + { 22526, Uniform2uiEXT_remap_index }, + { 4330, Uniform2uivEXT_remap_index }, + { 29551, Uniform3uiEXT_remap_index }, + { 14832, Uniform3uivEXT_remap_index }, + { 3486, Uniform4uiEXT_remap_index }, + { 8719, Uniform4uivEXT_remap_index }, + { 18608, VertexAttribI1iEXT_remap_index }, + { 965, VertexAttribI1ivEXT_remap_index }, + { 2516, VertexAttribI1uiEXT_remap_index }, + { 12857, VertexAttribI1uivEXT_remap_index }, { 81, VertexAttribI2iEXT_remap_index }, - { 23835, VertexAttribI2ivEXT_remap_index }, - { 5302, VertexAttribI2uiEXT_remap_index }, - { 4715, VertexAttribI2uivEXT_remap_index }, - { 26523, VertexAttribI3iEXT_remap_index }, - { 30499, VertexAttribI3ivEXT_remap_index }, - { 3379, VertexAttribI3uiEXT_remap_index }, - { 30395, VertexAttribI3uivEXT_remap_index }, - { 21948, VertexAttribI4bvEXT_remap_index }, - { 14622, VertexAttribI4iEXT_remap_index }, - { 32025, VertexAttribI4ivEXT_remap_index }, - { 13434, VertexAttribI4svEXT_remap_index }, - { 16484, VertexAttribI4ubvEXT_remap_index }, - { 16183, VertexAttribI4uiEXT_remap_index }, - { 5448, VertexAttribI4uivEXT_remap_index }, - { 11317, VertexAttribI4usvEXT_remap_index }, - { 18486, VertexAttribIPointerEXT_remap_index }, - { 3066, FramebufferTextureLayerEXT_remap_index }, - { 5172, ColorMaskIndexedEXT_remap_index }, - { 18903, DisableIndexedEXT_remap_index }, - { 26568, EnableIndexedEXT_remap_index }, - { 21652, GetBooleanIndexedvEXT_remap_index }, - { 10928, GetIntegerIndexedvEXT_remap_index }, - { 22696, IsEnabledIndexedEXT_remap_index }, - { 22596, ClearColorIiEXT_remap_index }, - { 3475, ClearColorIuiEXT_remap_index }, - { 9843, GetTexParameterIivEXT_remap_index }, - { 5895, GetTexParameterIuivEXT_remap_index }, - { 3022, TexParameterIivEXT_remap_index }, - { 26390, TexParameterIuivEXT_remap_index }, - { 4583, BeginConditionalRenderNV_remap_index }, - { 25378, EndConditionalRenderNV_remap_index }, - { 9280, BeginTransformFeedbackEXT_remap_index }, - { 18938, BindBufferBaseEXT_remap_index }, - { 18797, BindBufferOffsetEXT_remap_index }, - { 12247, BindBufferRangeEXT_remap_index }, - { 14244, EndTransformFeedbackEXT_remap_index }, - { 10791, GetTransformFeedbackVaryingEXT_remap_index }, - { 20741, TransformFeedbackVaryingsEXT_remap_index }, - { 29551, ProvokingVertexEXT_remap_index }, - { 10739, GetTexParameterPointervAPPLE_remap_index }, - { 5034, TextureRangeAPPLE_remap_index }, - { 11606, GetObjectParameterivAPPLE_remap_index }, - { 19863, ObjectPurgeableAPPLE_remap_index }, - { 5689, ObjectUnpurgeableAPPLE_remap_index }, - { 17247, ActiveProgramEXT_remap_index }, - { 17218, CreateShaderProgramEXT_remap_index }, - { 28569, UseShaderProgramEXT_remap_index }, - { 16463, TextureBarrierNV_remap_index }, - { 28810, StencilFuncSeparateATI_remap_index }, - { 18090, ProgramEnvParameters4fvEXT_remap_index }, - { 17112, ProgramLocalParameters4fvEXT_remap_index }, - { 14112, GetQueryObjecti64vEXT_remap_index }, - { 10341, GetQueryObjectui64vEXT_remap_index }, - { 23792, EGLImageTargetRenderbufferStorageOES_remap_index }, - { 12126, EGLImageTargetTexture2DOES_remap_index }, + { 24171, VertexAttribI2ivEXT_remap_index }, + { 5323, VertexAttribI2uiEXT_remap_index }, + { 4749, VertexAttribI2uivEXT_remap_index }, + { 26914, VertexAttribI3iEXT_remap_index }, + { 25373, VertexAttribI3ivEXT_remap_index }, + { 3340, VertexAttribI3uiEXT_remap_index }, + { 30772, VertexAttribI3uivEXT_remap_index }, + { 22256, VertexAttribI4bvEXT_remap_index }, + { 14764, VertexAttribI4iEXT_remap_index }, + { 32446, VertexAttribI4ivEXT_remap_index }, + { 13490, VertexAttribI4svEXT_remap_index }, + { 16679, VertexAttribI4ubvEXT_remap_index }, + { 16325, VertexAttribI4uiEXT_remap_index }, + { 5469, VertexAttribI4uivEXT_remap_index }, + { 11391, VertexAttribI4usvEXT_remap_index }, + { 18747, VertexAttribIPointerEXT_remap_index }, + { 3027, FramebufferTextureLayerEXT_remap_index }, + { 5745, ColorMaskIndexedEXT_remap_index }, + { 19183, DisableIndexedEXT_remap_index }, + { 26959, EnableIndexedEXT_remap_index }, + { 21960, GetBooleanIndexedvEXT_remap_index }, + { 11002, GetIntegerIndexedvEXT_remap_index }, + { 23032, IsEnabledIndexedEXT_remap_index }, + { 22932, ClearColorIiEXT_remap_index }, + { 3436, ClearColorIuiEXT_remap_index }, + { 9917, GetTexParameterIivEXT_remap_index }, + { 5993, GetTexParameterIuivEXT_remap_index }, + { 2983, TexParameterIivEXT_remap_index }, + { 26781, TexParameterIuivEXT_remap_index }, + { 4617, BeginConditionalRenderNV_remap_index }, + { 25759, EndConditionalRenderNV_remap_index }, + { 9354, BeginTransformFeedbackEXT_remap_index }, + { 19218, BindBufferBaseEXT_remap_index }, + { 19077, BindBufferOffsetEXT_remap_index }, + { 12303, BindBufferRangeEXT_remap_index }, + { 14386, EndTransformFeedbackEXT_remap_index }, + { 10865, GetTransformFeedbackVaryingEXT_remap_index }, + { 21049, TransformFeedbackVaryingsEXT_remap_index }, + { 29928, ProvokingVertexEXT_remap_index }, + { 10813, GetTexParameterPointervAPPLE_remap_index }, + { 5097, TextureRangeAPPLE_remap_index }, + { 11680, GetObjectParameterivAPPLE_remap_index }, + { 20171, ObjectPurgeableAPPLE_remap_index }, + { 5787, ObjectUnpurgeableAPPLE_remap_index }, + { 17475, ActiveProgramEXT_remap_index }, + { 17446, CreateShaderProgramEXT_remap_index }, + { 28896, UseShaderProgramEXT_remap_index }, + { 16632, TextureBarrierNV_remap_index }, + { 29137, StencilFuncSeparateATI_remap_index }, + { 5658, ProgramEnvParameters4fvEXT_remap_index }, + { 17340, ProgramLocalParameters4fvEXT_remap_index }, + { 14239, GetQueryObjecti64vEXT_remap_index }, + { 10415, GetQueryObjectui64vEXT_remap_index }, + { 24128, EGLImageTargetRenderbufferStorageOES_remap_index }, + { 12192, EGLImageTargetTexture2DOES_remap_index }, { -1, -1 } }; /* these functions are in the ABI, but have alternative names */ static const struct gl_function_remap MESA_alt_functions[] = { /* from GL_EXT_blend_color */ - { 2694, _gloffset_BlendColor }, + { 2655, _gloffset_BlendColor }, /* from GL_EXT_blend_minmax */ - { 11211, _gloffset_BlendEquation }, + { 11285, _gloffset_BlendEquation }, /* from GL_EXT_color_subtable */ - { 17010, _gloffset_ColorSubTable }, - { 31688, _gloffset_CopyColorSubTable }, + { 17238, _gloffset_ColorSubTable }, + { 32109, _gloffset_CopyColorSubTable }, /* from GL_EXT_convolution */ - { 296, _gloffset_ConvolutionFilter1D }, - { 2493, _gloffset_CopyConvolutionFilter1D }, - { 4097, _gloffset_GetConvolutionParameteriv }, - { 8493, _gloffset_ConvolutionFilter2D }, - { 8695, _gloffset_ConvolutionParameteriv }, - { 9155, _gloffset_ConvolutionParameterfv }, - { 20584, _gloffset_GetSeparableFilter }, - { 24067, _gloffset_SeparableFilter2D }, - { 24930, _gloffset_ConvolutionParameteri }, - { 25053, _gloffset_ConvolutionParameterf }, - { 26757, _gloffset_GetConvolutionParameterfv }, - { 27646, _gloffset_GetConvolutionFilter }, - { 30091, _gloffset_CopyConvolutionFilter2D }, + { 257, _gloffset_ConvolutionFilter1D }, + { 2454, _gloffset_CopyConvolutionFilter1D }, + { 4058, _gloffset_GetConvolutionParameteriv }, + { 8567, _gloffset_ConvolutionFilter2D }, + { 8769, _gloffset_ConvolutionParameteriv }, + { 9229, _gloffset_ConvolutionParameterfv }, + { 20892, _gloffset_GetSeparableFilter }, + { 24403, _gloffset_SeparableFilter2D }, + { 25266, _gloffset_ConvolutionParameteri }, + { 25434, _gloffset_ConvolutionParameterf }, + { 27148, _gloffset_GetConvolutionParameterfv }, + { 28005, _gloffset_GetConvolutionFilter }, + { 30468, _gloffset_CopyConvolutionFilter2D }, /* from GL_EXT_copy_texture */ - { 15103, _gloffset_CopyTexSubImage3D }, - { 16697, _gloffset_CopyTexImage2D }, - { 24538, _gloffset_CopyTexImage1D }, - { 27327, _gloffset_CopyTexSubImage2D }, - { 29729, _gloffset_CopyTexSubImage1D }, + { 15245, _gloffset_CopyTexSubImage3D }, + { 16925, _gloffset_CopyTexImage2D }, + { 24874, _gloffset_CopyTexImage1D }, + { 27686, _gloffset_CopyTexSubImage2D }, + { 30106, _gloffset_CopyTexSubImage1D }, /* from GL_EXT_draw_range_elements */ - { 9492, _gloffset_DrawRangeElements }, + { 9566, _gloffset_DrawRangeElements }, /* from GL_EXT_histogram */ - { 895, _gloffset_Histogram }, - { 3561, _gloffset_ResetHistogram }, - { 9989, _gloffset_GetMinmax }, - { 15437, _gloffset_GetHistogramParameterfv }, - { 24463, _gloffset_GetMinmaxParameteriv }, - { 26647, _gloffset_ResetMinmax }, - { 27543, _gloffset_GetHistogramParameteriv }, - { 28744, _gloffset_GetHistogram }, - { 31313, _gloffset_Minmax }, - { 32853, _gloffset_GetMinmaxParameterfv }, + { 856, _gloffset_Histogram }, + { 3522, _gloffset_ResetHistogram }, + { 10063, _gloffset_GetMinmax }, + { 15579, _gloffset_GetHistogramParameterfv }, + { 24799, _gloffset_GetMinmaxParameteriv }, + { 27038, _gloffset_ResetMinmax }, + { 27902, _gloffset_GetHistogramParameteriv }, + { 29071, _gloffset_GetHistogram }, + { 31695, _gloffset_Minmax }, + { 33241, _gloffset_GetMinmaxParameterfv }, /* from GL_EXT_paletted_texture */ - { 8355, _gloffset_ColorTable }, - { 15283, _gloffset_GetColorTable }, - { 22982, _gloffset_GetColorTableParameterfv }, - { 25109, _gloffset_GetColorTableParameteriv }, + { 8429, _gloffset_ColorTable }, + { 15425, _gloffset_GetColorTable }, + { 23318, _gloffset_GetColorTableParameterfv }, + { 25490, _gloffset_GetColorTableParameteriv }, /* from GL_EXT_subtexture */ - { 7076, _gloffset_TexSubImage1D }, - { 10666, _gloffset_TexSubImage2D }, + { 7174, _gloffset_TexSubImage1D }, + { 10740, _gloffset_TexSubImage2D }, /* from GL_EXT_texture3D */ - { 1813, _gloffset_TexImage3D }, - { 22751, _gloffset_TexSubImage3D }, + { 1774, _gloffset_TexImage3D }, + { 23087, _gloffset_TexSubImage3D }, /* from GL_EXT_texture_object */ - { 3329, _gloffset_PrioritizeTextures }, - { 7525, _gloffset_AreTexturesResident }, - { 13638, _gloffset_GenTextures }, - { 15769, _gloffset_DeleteTextures }, - { 19569, _gloffset_IsTexture }, - { 29794, _gloffset_BindTexture }, + { 3290, _gloffset_PrioritizeTextures }, + { 7623, _gloffset_AreTexturesResident }, + { 13694, _gloffset_GenTextures }, + { 15911, _gloffset_DeleteTextures }, + { 19859, _gloffset_IsTexture }, + { 30171, _gloffset_BindTexture }, /* from GL_EXT_vertex_array */ - { 24239, _gloffset_ArrayElement }, - { 30901, _gloffset_GetPointerv }, - { 32480, _gloffset_DrawArrays }, + { 24575, _gloffset_ArrayElement }, + { 31283, _gloffset_GetPointerv }, + { 32868, _gloffset_DrawArrays }, /* from GL_SGI_color_table */ - { 7643, _gloffset_ColorTableParameteriv }, - { 8355, _gloffset_ColorTable }, - { 15283, _gloffset_GetColorTable }, - { 15393, _gloffset_CopyColorTable }, - { 19430, _gloffset_ColorTableParameterfv }, - { 22982, _gloffset_GetColorTableParameterfv }, - { 25109, _gloffset_GetColorTableParameteriv }, + { 7741, _gloffset_ColorTableParameteriv }, + { 8429, _gloffset_ColorTable }, + { 15425, _gloffset_GetColorTable }, + { 15535, _gloffset_CopyColorTable }, + { 19720, _gloffset_ColorTableParameterfv }, + { 23318, _gloffset_GetColorTableParameterfv }, + { 25490, _gloffset_GetColorTableParameteriv }, /* from GL_VERSION_1_3 */ - { 464, _gloffset_MultiTexCoord3sARB }, - { 696, _gloffset_ActiveTextureARB }, - { 4234, _gloffset_MultiTexCoord1fvARB }, - { 6142, _gloffset_MultiTexCoord3dARB }, - { 6187, _gloffset_MultiTexCoord2iARB }, - { 6311, _gloffset_MultiTexCoord2svARB }, - { 8311, _gloffset_MultiTexCoord2fARB }, - { 10371, _gloffset_MultiTexCoord3fvARB }, - { 10973, _gloffset_MultiTexCoord4sARB }, - { 11654, _gloffset_MultiTexCoord2dvARB }, - { 12069, _gloffset_MultiTexCoord1svARB }, - { 12480, _gloffset_MultiTexCoord3svARB }, - { 12541, _gloffset_MultiTexCoord4iARB }, - { 13342, _gloffset_MultiTexCoord3iARB }, - { 14141, _gloffset_MultiTexCoord1dARB }, - { 14358, _gloffset_MultiTexCoord3dvARB }, - { 15637, _gloffset_MultiTexCoord3ivARB }, - { 15682, _gloffset_MultiTexCoord2sARB }, - { 17067, _gloffset_MultiTexCoord4ivARB }, - { 19080, _gloffset_ClientActiveTextureARB }, - { 21380, _gloffset_MultiTexCoord2dARB }, - { 21817, _gloffset_MultiTexCoord4dvARB }, - { 22173, _gloffset_MultiTexCoord4fvARB }, - { 23123, _gloffset_MultiTexCoord3fARB }, - { 25693, _gloffset_MultiTexCoord4dARB }, - { 25959, _gloffset_MultiTexCoord1sARB }, - { 26163, _gloffset_MultiTexCoord1dvARB }, - { 27171, _gloffset_MultiTexCoord1ivARB }, - { 27264, _gloffset_MultiTexCoord2ivARB }, - { 27603, _gloffset_MultiTexCoord1iARB }, - { 29019, _gloffset_MultiTexCoord4svARB }, - { 29593, _gloffset_MultiTexCoord1fARB }, - { 29856, _gloffset_MultiTexCoord4fARB }, - { 32314, _gloffset_MultiTexCoord2fvARB }, + { 425, _gloffset_MultiTexCoord3sARB }, + { 657, _gloffset_ActiveTextureARB }, + { 4268, _gloffset_MultiTexCoord1fvARB }, + { 6240, _gloffset_MultiTexCoord3dARB }, + { 6285, _gloffset_MultiTexCoord2iARB }, + { 6409, _gloffset_MultiTexCoord2svARB }, + { 8385, _gloffset_MultiTexCoord2fARB }, + { 10445, _gloffset_MultiTexCoord3fvARB }, + { 11047, _gloffset_MultiTexCoord4sARB }, + { 11728, _gloffset_MultiTexCoord2dvARB }, + { 12135, _gloffset_MultiTexCoord1svARB }, + { 12536, _gloffset_MultiTexCoord3svARB }, + { 12597, _gloffset_MultiTexCoord4iARB }, + { 13398, _gloffset_MultiTexCoord3iARB }, + { 14268, _gloffset_MultiTexCoord1dARB }, + { 14500, _gloffset_MultiTexCoord3dvARB }, + { 15779, _gloffset_MultiTexCoord3ivARB }, + { 15824, _gloffset_MultiTexCoord2sARB }, + { 17295, _gloffset_MultiTexCoord4ivARB }, + { 19360, _gloffset_ClientActiveTextureARB }, + { 21688, _gloffset_MultiTexCoord2dARB }, + { 22125, _gloffset_MultiTexCoord4dvARB }, + { 22481, _gloffset_MultiTexCoord4fvARB }, + { 23459, _gloffset_MultiTexCoord3fARB }, + { 26084, _gloffset_MultiTexCoord4dARB }, + { 26350, _gloffset_MultiTexCoord1sARB }, + { 26554, _gloffset_MultiTexCoord1dvARB }, + { 27530, _gloffset_MultiTexCoord1ivARB }, + { 27623, _gloffset_MultiTexCoord2ivARB }, + { 27962, _gloffset_MultiTexCoord1iARB }, + { 29346, _gloffset_MultiTexCoord4svARB }, + { 29970, _gloffset_MultiTexCoord1fARB }, + { 30233, _gloffset_MultiTexCoord4fARB }, + { 32702, _gloffset_MultiTexCoord2fvARB }, { -1, -1 } }; @@ -5384,7 +5464,7 @@ static const struct gl_function_remap MESA_alt_functions[] = { #if defined(need_GL_3DFX_tbuffer) static const struct gl_function_remap GL_3DFX_tbuffer_functions[] = { - { 9213, -1 }, /* TbufferMask3DFX */ + { 9287, -1 }, /* TbufferMask3DFX */ { -1, -1 } }; #endif @@ -5424,6 +5504,13 @@ static const struct gl_function_remap GL_ARB_ES2_compatibility_functions[] = { }; #endif +#if defined(need_GL_ARB_color_buffer_float) +/* functions defined in MESA_remap_table_functions are excluded */ +static const struct gl_function_remap GL_ARB_color_buffer_float_functions[] = { + { -1, -1 } +}; +#endif + #if defined(need_GL_ARB_copy_buffer) /* functions defined in MESA_remap_table_functions are excluded */ static const struct gl_function_remap GL_ARB_copy_buffer_functions[] = { @@ -5469,7 +5556,7 @@ static const struct gl_function_remap GL_ARB_framebuffer_object_functions[] = { #if defined(need_GL_ARB_geometry_shader4) /* functions defined in MESA_remap_table_functions are excluded */ static const struct gl_function_remap GL_ARB_geometry_shader4_functions[] = { - { 12444, -1 }, /* FramebufferTextureLayer */ + { 12500, -1 }, /* FramebufferTextureLayer */ { -1, -1 } }; #endif @@ -5490,11 +5577,11 @@ static const struct gl_function_remap GL_ARB_map_buffer_range_functions[] = { #if defined(need_GL_ARB_matrix_palette) static const struct gl_function_remap GL_ARB_matrix_palette_functions[] = { - { 3812, -1 }, /* MatrixIndexusvARB */ - { 13163, -1 }, /* MatrixIndexuivARB */ - { 14513, -1 }, /* MatrixIndexPointerARB */ - { 19818, -1 }, /* CurrentPaletteMatrixARB */ - { 22867, -1 }, /* MatrixIndexubvARB */ + { 3773, -1 }, /* MatrixIndexusvARB */ + { 13219, -1 }, /* MatrixIndexuivARB */ + { 14655, -1 }, /* MatrixIndexPointerARB */ + { 20126, -1 }, /* CurrentPaletteMatrixARB */ + { 23203, -1 }, /* MatrixIndexubvARB */ { -1, -1 } }; #endif @@ -5527,6 +5614,13 @@ static const struct gl_function_remap GL_ARB_provoking_vertex_functions[] = { }; #endif +#if defined(need_GL_ARB_sampler_objects) +/* functions defined in MESA_remap_table_functions are excluded */ +static const struct gl_function_remap GL_ARB_sampler_objects_functions[] = { + { -1, -1 } +}; +#endif + #if defined(need_GL_ARB_shader_objects) /* functions defined in MESA_remap_table_functions are excluded */ static const struct gl_function_remap GL_ARB_shader_objects_functions[] = { @@ -5541,6 +5635,13 @@ static const struct gl_function_remap GL_ARB_sync_functions[] = { }; #endif +#if defined(need_GL_ARB_texture_buffer_object) +/* functions defined in MESA_remap_table_functions are excluded */ +static const struct gl_function_remap GL_ARB_texture_buffer_object_functions[] = { + { -1, -1 } +}; +#endif + #if defined(need_GL_ARB_texture_compression) /* functions defined in MESA_remap_table_functions are excluded */ static const struct gl_function_remap GL_ARB_texture_compression_functions[] = { @@ -5571,16 +5672,16 @@ static const struct gl_function_remap GL_ARB_vertex_array_object_functions[] = { #if defined(need_GL_ARB_vertex_blend) static const struct gl_function_remap GL_ARB_vertex_blend_functions[] = { - { 2435, -1 }, /* WeightubvARB */ - { 6554, -1 }, /* WeightivARB */ - { 11076, -1 }, /* WeightPointerARB */ - { 13898, -1 }, /* WeightfvARB */ - { 17586, -1 }, /* WeightbvARB */ - { 21048, -1 }, /* WeightusvARB */ - { 23993, -1 }, /* VertexBlendARB */ - { 29677, -1 }, /* WeightsvARB */ - { 31738, -1 }, /* WeightdvARB */ - { 32514, -1 }, /* WeightuivARB */ + { 2396, -1 }, /* WeightubvARB */ + { 6652, -1 }, /* WeightivARB */ + { 11150, -1 }, /* WeightPointerARB */ + { 13986, -1 }, /* WeightfvARB */ + { 17814, -1 }, /* WeightbvARB */ + { 21356, -1 }, /* WeightusvARB */ + { 24329, -1 }, /* VertexBlendARB */ + { 30054, -1 }, /* WeightsvARB */ + { 32159, -1 }, /* WeightdvARB */ + { 32902, -1 }, /* WeightuivARB */ { -1, -1 } }; #endif @@ -5650,7 +5751,7 @@ static const struct gl_function_remap GL_ATI_separate_stencil_functions[] = { #if defined(need_GL_EXT_blend_color) static const struct gl_function_remap GL_EXT_blend_color_functions[] = { - { 2694, _gloffset_BlendColor }, + { 2655, _gloffset_BlendColor }, { -1, -1 } }; #endif @@ -5671,15 +5772,15 @@ static const struct gl_function_remap GL_EXT_blend_func_separate_functions[] = { #if defined(need_GL_EXT_blend_minmax) static const struct gl_function_remap GL_EXT_blend_minmax_functions[] = { - { 11211, _gloffset_BlendEquation }, + { 11285, _gloffset_BlendEquation }, { -1, -1 } }; #endif #if defined(need_GL_EXT_color_subtable) static const struct gl_function_remap GL_EXT_color_subtable_functions[] = { - { 17010, _gloffset_ColorSubTable }, - { 31688, _gloffset_CopyColorSubTable }, + { 17238, _gloffset_ColorSubTable }, + { 32109, _gloffset_CopyColorSubTable }, { -1, -1 } }; #endif @@ -5693,66 +5794,66 @@ static const struct gl_function_remap GL_EXT_compiled_vertex_array_functions[] = #if defined(need_GL_EXT_convolution) static const struct gl_function_remap GL_EXT_convolution_functions[] = { - { 296, _gloffset_ConvolutionFilter1D }, - { 2493, _gloffset_CopyConvolutionFilter1D }, - { 4097, _gloffset_GetConvolutionParameteriv }, - { 8493, _gloffset_ConvolutionFilter2D }, - { 8695, _gloffset_ConvolutionParameteriv }, - { 9155, _gloffset_ConvolutionParameterfv }, - { 20584, _gloffset_GetSeparableFilter }, - { 24067, _gloffset_SeparableFilter2D }, - { 24930, _gloffset_ConvolutionParameteri }, - { 25053, _gloffset_ConvolutionParameterf }, - { 26757, _gloffset_GetConvolutionParameterfv }, - { 27646, _gloffset_GetConvolutionFilter }, - { 30091, _gloffset_CopyConvolutionFilter2D }, + { 257, _gloffset_ConvolutionFilter1D }, + { 2454, _gloffset_CopyConvolutionFilter1D }, + { 4058, _gloffset_GetConvolutionParameteriv }, + { 8567, _gloffset_ConvolutionFilter2D }, + { 8769, _gloffset_ConvolutionParameteriv }, + { 9229, _gloffset_ConvolutionParameterfv }, + { 20892, _gloffset_GetSeparableFilter }, + { 24403, _gloffset_SeparableFilter2D }, + { 25266, _gloffset_ConvolutionParameteri }, + { 25434, _gloffset_ConvolutionParameterf }, + { 27148, _gloffset_GetConvolutionParameterfv }, + { 28005, _gloffset_GetConvolutionFilter }, + { 30468, _gloffset_CopyConvolutionFilter2D }, { -1, -1 } }; #endif #if defined(need_GL_EXT_coordinate_frame) static const struct gl_function_remap GL_EXT_coordinate_frame_functions[] = { - { 10510, -1 }, /* TangentPointerEXT */ - { 12599, -1 }, /* Binormal3ivEXT */ - { 13295, -1 }, /* Tangent3sEXT */ - { 14578, -1 }, /* Tangent3fvEXT */ - { 18778, -1 }, /* Tangent3dvEXT */ - { 19516, -1 }, /* Binormal3bvEXT */ - { 20637, -1 }, /* Binormal3dEXT */ - { 22799, -1 }, /* Tangent3fEXT */ - { 25002, -1 }, /* Binormal3sEXT */ - { 25470, -1 }, /* Tangent3ivEXT */ - { 25489, -1 }, /* Tangent3dEXT */ - { 26436, -1 }, /* Binormal3svEXT */ - { 27069, -1 }, /* Binormal3fEXT */ - { 27957, -1 }, /* Binormal3dvEXT */ - { 29276, -1 }, /* Tangent3iEXT */ - { 30376, -1 }, /* Tangent3bvEXT */ - { 30936, -1 }, /* Tangent3bEXT */ - { 31461, -1 }, /* Binormal3fvEXT */ - { 32213, -1 }, /* BinormalPointerEXT */ - { 32618, -1 }, /* Tangent3svEXT */ - { 33055, -1 }, /* Binormal3bEXT */ - { 33232, -1 }, /* Binormal3iEXT */ + { 10584, -1 }, /* TangentPointerEXT */ + { 12655, -1 }, /* Binormal3ivEXT */ + { 13351, -1 }, /* Tangent3sEXT */ + { 14720, -1 }, /* Tangent3fvEXT */ + { 18831, -1 }, /* Tangent3ivEXT */ + { 19058, -1 }, /* Tangent3dvEXT */ + { 19806, -1 }, /* Binormal3bvEXT */ + { 20945, -1 }, /* Binormal3dEXT */ + { 23135, -1 }, /* Tangent3fEXT */ + { 25338, -1 }, /* Binormal3sEXT */ + { 25880, -1 }, /* Tangent3dEXT */ + { 26827, -1 }, /* Binormal3svEXT */ + { 27428, -1 }, /* Binormal3fEXT */ + { 28336, -1 }, /* Binormal3dvEXT */ + { 29603, -1 }, /* Tangent3iEXT */ + { 30753, -1 }, /* Tangent3bvEXT */ + { 31318, -1 }, /* Tangent3bEXT */ + { 31882, -1 }, /* Binormal3fvEXT */ + { 32601, -1 }, /* BinormalPointerEXT */ + { 33006, -1 }, /* Tangent3svEXT */ + { 33443, -1 }, /* Binormal3bEXT */ + { 33620, -1 }, /* Binormal3iEXT */ { -1, -1 } }; #endif #if defined(need_GL_EXT_copy_texture) static const struct gl_function_remap GL_EXT_copy_texture_functions[] = { - { 15103, _gloffset_CopyTexSubImage3D }, - { 16697, _gloffset_CopyTexImage2D }, - { 24538, _gloffset_CopyTexImage1D }, - { 27327, _gloffset_CopyTexSubImage2D }, - { 29729, _gloffset_CopyTexSubImage1D }, + { 15245, _gloffset_CopyTexSubImage3D }, + { 16925, _gloffset_CopyTexImage2D }, + { 24874, _gloffset_CopyTexImage1D }, + { 27686, _gloffset_CopyTexSubImage2D }, + { 30106, _gloffset_CopyTexSubImage1D }, { -1, -1 } }; #endif #if defined(need_GL_EXT_cull_vertex) static const struct gl_function_remap GL_EXT_cull_vertex_functions[] = { - { 8844, -1 }, /* CullParameterdvEXT */ - { 11699, -1 }, /* CullParameterfvEXT */ + { 8918, -1 }, /* CullParameterdvEXT */ + { 11773, -1 }, /* CullParameterfvEXT */ { -1, -1 } }; #endif @@ -5780,7 +5881,7 @@ static const struct gl_function_remap GL_EXT_draw_instanced_functions[] = { #if defined(need_GL_EXT_draw_range_elements) static const struct gl_function_remap GL_EXT_draw_range_elements_functions[] = { - { 9492, _gloffset_DrawRangeElements }, + { 9566, _gloffset_DrawRangeElements }, { -1, -1 } }; #endif @@ -5829,39 +5930,39 @@ static const struct gl_function_remap GL_EXT_gpu_shader4_functions[] = { #if defined(need_GL_EXT_histogram) static const struct gl_function_remap GL_EXT_histogram_functions[] = { - { 895, _gloffset_Histogram }, - { 3561, _gloffset_ResetHistogram }, - { 9989, _gloffset_GetMinmax }, - { 15437, _gloffset_GetHistogramParameterfv }, - { 24463, _gloffset_GetMinmaxParameteriv }, - { 26647, _gloffset_ResetMinmax }, - { 27543, _gloffset_GetHistogramParameteriv }, - { 28744, _gloffset_GetHistogram }, - { 31313, _gloffset_Minmax }, - { 32853, _gloffset_GetMinmaxParameterfv }, + { 856, _gloffset_Histogram }, + { 3522, _gloffset_ResetHistogram }, + { 10063, _gloffset_GetMinmax }, + { 15579, _gloffset_GetHistogramParameterfv }, + { 24799, _gloffset_GetMinmaxParameteriv }, + { 27038, _gloffset_ResetMinmax }, + { 27902, _gloffset_GetHistogramParameteriv }, + { 29071, _gloffset_GetHistogram }, + { 31695, _gloffset_Minmax }, + { 33241, _gloffset_GetMinmaxParameterfv }, { -1, -1 } }; #endif #if defined(need_GL_EXT_index_func) static const struct gl_function_remap GL_EXT_index_func_functions[] = { - { 11485, -1 }, /* IndexFuncEXT */ + { 11559, -1 }, /* IndexFuncEXT */ { -1, -1 } }; #endif #if defined(need_GL_EXT_index_material) static const struct gl_function_remap GL_EXT_index_material_functions[] = { - { 21135, -1 }, /* IndexMaterialEXT */ + { 21443, -1 }, /* IndexMaterialEXT */ { -1, -1 } }; #endif #if defined(need_GL_EXT_light_texture) static const struct gl_function_remap GL_EXT_light_texture_functions[] = { - { 26456, -1 }, /* ApplyTextureEXT */ - { 26601, -1 }, /* TextureMaterialEXT */ - { 26626, -1 }, /* TextureLightEXT */ + { 26847, -1 }, /* ApplyTextureEXT */ + { 26992, -1 }, /* TextureMaterialEXT */ + { 27017, -1 }, /* TextureLightEXT */ { -1, -1 } }; #endif @@ -5882,20 +5983,20 @@ static const struct gl_function_remap GL_EXT_multisample_functions[] = { #if defined(need_GL_EXT_paletted_texture) static const struct gl_function_remap GL_EXT_paletted_texture_functions[] = { - { 8355, _gloffset_ColorTable }, - { 15283, _gloffset_GetColorTable }, - { 22982, _gloffset_GetColorTableParameterfv }, - { 25109, _gloffset_GetColorTableParameteriv }, + { 8429, _gloffset_ColorTable }, + { 15425, _gloffset_GetColorTable }, + { 23318, _gloffset_GetColorTableParameterfv }, + { 25490, _gloffset_GetColorTableParameteriv }, { -1, -1 } }; #endif #if defined(need_GL_EXT_pixel_transform) static const struct gl_function_remap GL_EXT_pixel_transform_functions[] = { - { 21782, -1 }, /* PixelTransformParameterfEXT */ - { 21862, -1 }, /* PixelTransformParameteriEXT */ - { 30651, -1 }, /* PixelTransformParameterfvEXT */ - { 32177, -1 }, /* PixelTransformParameterivEXT */ + { 22090, -1 }, /* PixelTransformParameterfEXT */ + { 22170, -1 }, /* PixelTransformParameteriEXT */ + { 31033, -1 }, /* PixelTransformParameterfvEXT */ + { 32565, -1 }, /* PixelTransformParameterivEXT */ { -1, -1 } }; #endif @@ -5944,16 +6045,16 @@ static const struct gl_function_remap GL_EXT_stencil_two_side_functions[] = { #if defined(need_GL_EXT_subtexture) static const struct gl_function_remap GL_EXT_subtexture_functions[] = { - { 7076, _gloffset_TexSubImage1D }, - { 10666, _gloffset_TexSubImage2D }, + { 7174, _gloffset_TexSubImage1D }, + { 10740, _gloffset_TexSubImage2D }, { -1, -1 } }; #endif #if defined(need_GL_EXT_texture3D) static const struct gl_function_remap GL_EXT_texture3D_functions[] = { - { 1813, _gloffset_TexImage3D }, - { 22751, _gloffset_TexSubImage3D }, + { 1774, _gloffset_TexImage3D }, + { 23087, _gloffset_TexSubImage3D }, { -1, -1 } }; #endif @@ -5974,19 +6075,19 @@ static const struct gl_function_remap GL_EXT_texture_integer_functions[] = { #if defined(need_GL_EXT_texture_object) static const struct gl_function_remap GL_EXT_texture_object_functions[] = { - { 3329, _gloffset_PrioritizeTextures }, - { 7525, _gloffset_AreTexturesResident }, - { 13638, _gloffset_GenTextures }, - { 15769, _gloffset_DeleteTextures }, - { 19569, _gloffset_IsTexture }, - { 29794, _gloffset_BindTexture }, + { 3290, _gloffset_PrioritizeTextures }, + { 7623, _gloffset_AreTexturesResident }, + { 13694, _gloffset_GenTextures }, + { 15911, _gloffset_DeleteTextures }, + { 19859, _gloffset_IsTexture }, + { 30171, _gloffset_BindTexture }, { -1, -1 } }; #endif #if defined(need_GL_EXT_texture_perturb_normal) static const struct gl_function_remap GL_EXT_texture_perturb_normal_functions[] = { - { 13848, -1 }, /* TextureNormalEXT */ + { 13936, -1 }, /* TextureNormalEXT */ { -1, -1 } }; #endif @@ -6008,30 +6109,30 @@ static const struct gl_function_remap GL_EXT_transform_feedback_functions[] = { #if defined(need_GL_EXT_vertex_array) /* functions defined in MESA_remap_table_functions are excluded */ static const struct gl_function_remap GL_EXT_vertex_array_functions[] = { - { 24239, _gloffset_ArrayElement }, - { 30901, _gloffset_GetPointerv }, - { 32480, _gloffset_DrawArrays }, + { 24575, _gloffset_ArrayElement }, + { 31283, _gloffset_GetPointerv }, + { 32868, _gloffset_DrawArrays }, { -1, -1 } }; #endif #if defined(need_GL_EXT_vertex_weighting) static const struct gl_function_remap GL_EXT_vertex_weighting_functions[] = { - { 19599, -1 }, /* VertexWeightfvEXT */ - { 27012, -1 }, /* VertexWeightfEXT */ - { 28713, -1 }, /* VertexWeightPointerEXT */ + { 19907, -1 }, /* VertexWeightfvEXT */ + { 27371, -1 }, /* VertexWeightfEXT */ + { 29040, -1 }, /* VertexWeightPointerEXT */ { -1, -1 } }; #endif #if defined(need_GL_HP_image_transform) static const struct gl_function_remap GL_HP_image_transform_functions[] = { - { 2366, -1 }, /* GetImageTransformParameterfvHP */ - { 3778, -1 }, /* ImageTransformParameterfHP */ - { 10204, -1 }, /* ImageTransformParameterfvHP */ - { 11954, -1 }, /* ImageTransformParameteriHP */ - { 12334, -1 }, /* GetImageTransformParameterivHP */ - { 19663, -1 }, /* ImageTransformParameterivHP */ + { 2327, -1 }, /* GetImageTransformParameterfvHP */ + { 3739, -1 }, /* ImageTransformParameterfHP */ + { 10278, -1 }, /* ImageTransformParameterfvHP */ + { 12020, -1 }, /* ImageTransformParameteriHP */ + { 12390, -1 }, /* GetImageTransformParameterivHP */ + { 19971, -1 }, /* ImageTransformParameterivHP */ { -1, -1 } }; #endif @@ -6045,14 +6146,14 @@ static const struct gl_function_remap GL_IBM_multimode_draw_arrays_functions[] = #if defined(need_GL_IBM_vertex_array_lists) static const struct gl_function_remap GL_IBM_vertex_array_lists_functions[] = { - { 4366, -1 }, /* SecondaryColorPointerListIBM */ - { 6008, -1 }, /* NormalPointerListIBM */ - { 7699, -1 }, /* FogCoordPointerListIBM */ - { 8006, -1 }, /* VertexPointerListIBM */ - { 11875, -1 }, /* ColorPointerListIBM */ - { 13402, -1 }, /* TexCoordPointerListIBM */ - { 13870, -1 }, /* IndexPointerListIBM */ - { 32796, -1 }, /* EdgeFlagPointerListIBM */ + { 4400, -1 }, /* SecondaryColorPointerListIBM */ + { 6106, -1 }, /* NormalPointerListIBM */ + { 7797, -1 }, /* FogCoordPointerListIBM */ + { 8104, -1 }, /* VertexPointerListIBM */ + { 12274, -1 }, /* ColorPointerListIBM */ + { 13458, -1 }, /* TexCoordPointerListIBM */ + { 13958, -1 }, /* IndexPointerListIBM */ + { 33184, -1 }, /* EdgeFlagPointerListIBM */ { -1, -1 } }; #endif @@ -6066,10 +6167,10 @@ static const struct gl_function_remap GL_INGR_blend_func_separate_functions[] = #if defined(need_GL_INTEL_parallel_arrays) static const struct gl_function_remap GL_INTEL_parallel_arrays_functions[] = { - { 12742, -1 }, /* VertexPointervINTEL */ - { 15530, -1 }, /* ColorPointervINTEL */ - { 30065, -1 }, /* NormalPointervINTEL */ - { 30583, -1 }, /* TexCoordPointervINTEL */ + { 12798, -1 }, /* VertexPointervINTEL */ + { 15672, -1 }, /* ColorPointervINTEL */ + { 30442, -1 }, /* NormalPointervINTEL */ + { 30965, -1 }, /* TexCoordPointervINTEL */ { -1, -1 } }; #endif @@ -6083,10 +6184,10 @@ static const struct gl_function_remap GL_MESA_resize_buffers_functions[] = { #if defined(need_GL_MESA_shader_debug) static const struct gl_function_remap GL_MESA_shader_debug_functions[] = { - { 1677, -1 }, /* GetDebugLogLengthMESA */ - { 3500, -1 }, /* ClearDebugLogMESA */ - { 4527, -1 }, /* GetDebugLogMESA */ - { 31094, -1 }, /* CreateDebugObjectMESA */ + { 1638, -1 }, /* GetDebugLogLengthMESA */ + { 3461, -1 }, /* ClearDebugLogMESA */ + { 4561, -1 }, /* GetDebugLogMESA */ + { 31476, -1 }, /* CreateDebugObjectMESA */ { -1, -1 } }; #endif @@ -6107,15 +6208,15 @@ static const struct gl_function_remap GL_NV_condtitional_render_functions[] = { #if defined(need_GL_NV_evaluators) static const struct gl_function_remap GL_NV_evaluators_functions[] = { - { 6738, -1 }, /* GetMapAttribParameterivNV */ - { 8461, -1 }, /* MapControlPointsNV */ - { 8560, -1 }, /* MapParameterfvNV */ - { 10649, -1 }, /* EvalMapsNV */ - { 17184, -1 }, /* GetMapAttribParameterfvNV */ - { 17401, -1 }, /* MapParameterivNV */ - { 24853, -1 }, /* GetMapParameterivNV */ - { 25351, -1 }, /* GetMapParameterfvNV */ - { 29380, -1 }, /* GetMapControlPointsNV */ + { 6836, -1 }, /* GetMapAttribParameterivNV */ + { 8535, -1 }, /* MapControlPointsNV */ + { 8634, -1 }, /* MapParameterfvNV */ + { 10723, -1 }, /* EvalMapsNV */ + { 17412, -1 }, /* GetMapAttribParameterfvNV */ + { 17629, -1 }, /* MapParameterivNV */ + { 25189, -1 }, /* GetMapParameterivNV */ + { 25732, -1 }, /* GetMapParameterfvNV */ + { 29757, -1 }, /* GetMapControlPointsNV */ { -1, -1 } }; #endif @@ -6157,8 +6258,8 @@ static const struct gl_function_remap GL_NV_register_combiners_functions[] = { #if defined(need_GL_NV_register_combiners2) static const struct gl_function_remap GL_NV_register_combiners2_functions[] = { - { 15922, -1 }, /* CombinerStageParameterfvNV */ - { 16318, -1 }, /* GetCombinerStageParameterfvNV */ + { 16064, -1 }, /* CombinerStageParameterfvNV */ + { 16460, -1 }, /* GetCombinerStageParameterfvNV */ { -1, -1 } }; #endif @@ -6193,23 +6294,23 @@ static const struct gl_function_remap GL_OES_EGL_image_functions[] = { #if defined(need_GL_PGI_misc_hints) static const struct gl_function_remap GL_PGI_misc_hints_functions[] = { - { 8681, -1 }, /* HintPGI */ + { 8755, -1 }, /* HintPGI */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_detail_texture) static const struct gl_function_remap GL_SGIS_detail_texture_functions[] = { - { 16291, -1 }, /* GetDetailTexFuncSGIS */ - { 16642, -1 }, /* DetailTexFuncSGIS */ + { 16433, -1 }, /* GetDetailTexFuncSGIS */ + { 16870, -1 }, /* DetailTexFuncSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_fog_function) static const struct gl_function_remap GL_SGIS_fog_function_functions[] = { - { 27309, -1 }, /* FogFuncSGIS */ - { 28062, -1 }, /* GetFogFuncSGIS */ + { 27668, -1 }, /* FogFuncSGIS */ + { 28389, -1 }, /* GetFogFuncSGIS */ { -1, -1 } }; #endif @@ -6237,112 +6338,112 @@ static const struct gl_function_remap GL_SGIS_point_parameters_functions[] = { #if defined(need_GL_SGIS_sharpen_texture) static const struct gl_function_remap GL_SGIS_sharpen_texture_functions[] = { - { 6799, -1 }, /* GetSharpenTexFuncSGIS */ - { 22147, -1 }, /* SharpenTexFuncSGIS */ + { 6897, -1 }, /* GetSharpenTexFuncSGIS */ + { 22455, -1 }, /* SharpenTexFuncSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_texture4D) static const struct gl_function_remap GL_SGIS_texture4D_functions[] = { - { 1049, -1 }, /* TexImage4DSGIS */ - { 15838, -1 }, /* TexSubImage4DSGIS */ + { 1010, -1 }, /* TexImage4DSGIS */ + { 15980, -1 }, /* TexSubImage4DSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_texture_color_mask) static const struct gl_function_remap GL_SGIS_texture_color_mask_functions[] = { - { 15236, -1 }, /* TextureColorMaskSGIS */ + { 15378, -1 }, /* TextureColorMaskSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_texture_filter4) static const struct gl_function_remap GL_SGIS_texture_filter4_functions[] = { - { 6976, -1 }, /* GetTexFilterFuncSGIS */ - { 16437, -1 }, /* TexFilterFuncSGIS */ + { 7074, -1 }, /* GetTexFilterFuncSGIS */ + { 16606, -1 }, /* TexFilterFuncSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_async) static const struct gl_function_remap GL_SGIX_async_functions[] = { - { 3426, -1 }, /* AsyncMarkerSGIX */ - { 4506, -1 }, /* FinishAsyncSGIX */ - { 5495, -1 }, /* PollAsyncSGIX */ - { 22328, -1 }, /* DeleteAsyncMarkersSGIX */ - { 22383, -1 }, /* IsAsyncMarkerSGIX */ - { 32593, -1 }, /* GenAsyncMarkersSGIX */ + { 3387, -1 }, /* AsyncMarkerSGIX */ + { 4540, -1 }, /* FinishAsyncSGIX */ + { 5516, -1 }, /* PollAsyncSGIX */ + { 22664, -1 }, /* DeleteAsyncMarkersSGIX */ + { 22719, -1 }, /* IsAsyncMarkerSGIX */ + { 32981, -1 }, /* GenAsyncMarkersSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_flush_raster) static const struct gl_function_remap GL_SGIX_flush_raster_functions[] = { - { 7353, -1 }, /* FlushRasterSGIX */ + { 7451, -1 }, /* FlushRasterSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_fragment_lighting) static const struct gl_function_remap GL_SGIX_fragment_lighting_functions[] = { - { 2664, -1 }, /* FragmentMaterialfvSGIX */ - { 5399, -1 }, /* FragmentLightiSGIX */ - { 8073, -1 }, /* FragmentMaterialfSGIX */ - { 8234, -1 }, /* GetFragmentLightivSGIX */ - { 9107, -1 }, /* FragmentLightModeliSGIX */ - { 10712, -1 }, /* FragmentLightivSGIX */ - { 11019, -1 }, /* GetFragmentMaterialivSGIX */ - { 16231, -1 }, /* GetFragmentMaterialfvSGIX */ - { 19486, -1 }, /* FragmentLightModelfSGIX */ - { 19786, -1 }, /* FragmentColorMaterialSGIX */ - { 20203, -1 }, /* FragmentMaterialiSGIX */ - { 21463, -1 }, /* LightEnviSGIX */ - { 23074, -1 }, /* FragmentLightModelfvSGIX */ - { 23409, -1 }, /* FragmentLightfvSGIX */ - { 28446, -1 }, /* FragmentLightModelivSGIX */ - { 28595, -1 }, /* FragmentLightfSGIX */ - { 31431, -1 }, /* GetFragmentLightfvSGIX */ - { 33076, -1 }, /* FragmentMaterialivSGIX */ + { 2625, -1 }, /* FragmentMaterialfvSGIX */ + { 5420, -1 }, /* FragmentLightiSGIX */ + { 8171, -1 }, /* FragmentMaterialfSGIX */ + { 8308, -1 }, /* GetFragmentLightivSGIX */ + { 9181, -1 }, /* FragmentLightModeliSGIX */ + { 10786, -1 }, /* FragmentLightivSGIX */ + { 11093, -1 }, /* GetFragmentMaterialivSGIX */ + { 16373, -1 }, /* GetFragmentMaterialfvSGIX */ + { 19776, -1 }, /* FragmentLightModelfSGIX */ + { 20094, -1 }, /* FragmentColorMaterialSGIX */ + { 20511, -1 }, /* FragmentMaterialiSGIX */ + { 21771, -1 }, /* LightEnviSGIX */ + { 23410, -1 }, /* FragmentLightModelfvSGIX */ + { 23745, -1 }, /* FragmentLightfvSGIX */ + { 28773, -1 }, /* FragmentLightModelivSGIX */ + { 28922, -1 }, /* FragmentLightfSGIX */ + { 31852, -1 }, /* GetFragmentLightfvSGIX */ + { 33464, -1 }, /* FragmentMaterialivSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_framezoom) static const struct gl_function_remap GL_SGIX_framezoom_functions[] = { - { 22406, -1 }, /* FrameZoomSGIX */ + { 22742, -1 }, /* FrameZoomSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_igloo_interface) static const struct gl_function_remap GL_SGIX_igloo_interface_functions[] = { - { 28903, -1 }, /* IglooInterfaceSGIX */ + { 29230, -1 }, /* IglooInterfaceSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_instruments) static const struct gl_function_remap GL_SGIX_instruments_functions[] = { - { 2844, -1 }, /* ReadInstrumentsSGIX */ - { 6572, -1 }, /* PollInstrumentsSGIX */ - { 10570, -1 }, /* GetInstrumentsSGIX */ - { 13000, -1 }, /* StartInstrumentsSGIX */ - { 15956, -1 }, /* StopInstrumentsSGIX */ - { 17823, -1 }, /* InstrumentsBufferSGIX */ + { 2805, -1 }, /* ReadInstrumentsSGIX */ + { 6670, -1 }, /* PollInstrumentsSGIX */ + { 10644, -1 }, /* GetInstrumentsSGIX */ + { 13056, -1 }, /* StartInstrumentsSGIX */ + { 16098, -1 }, /* StopInstrumentsSGIX */ + { 18051, -1 }, /* InstrumentsBufferSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_list_priority) static const struct gl_function_remap GL_SGIX_list_priority_functions[] = { - { 1280, -1 }, /* ListParameterfSGIX */ - { 3128, -1 }, /* GetListParameterfvSGIX */ - { 17714, -1 }, /* ListParameteriSGIX */ - { 18728, -1 }, /* ListParameterfvSGIX */ - { 20869, -1 }, /* ListParameterivSGIX */ - { 32637, -1 }, /* GetListParameterivSGIX */ + { 1241, -1 }, /* ListParameterfSGIX */ + { 3089, -1 }, /* GetListParameterfvSGIX */ + { 17942, -1 }, /* ListParameteriSGIX */ + { 19008, -1 }, /* ListParameterfvSGIX */ + { 21177, -1 }, /* ListParameterivSGIX */ + { 33025, -1 }, /* GetListParameterivSGIX */ { -1, -1 } }; #endif @@ -6356,134 +6457,134 @@ static const struct gl_function_remap GL_SGIX_pixel_texture_functions[] = { #if defined(need_GL_SGIX_polynomial_ffd) static const struct gl_function_remap GL_SGIX_polynomial_ffd_functions[] = { - { 3724, -1 }, /* LoadIdentityDeformationMapSGIX */ - { 12208, -1 }, /* DeformationMap3dSGIX */ - { 16056, -1 }, /* DeformSGIX */ - { 24351, -1 }, /* DeformationMap3fSGIX */ + { 3685, -1 }, /* LoadIdentityDeformationMapSGIX */ + { 16198, -1 }, /* DeformSGIX */ + { 24687, -1 }, /* DeformationMap3fSGIX */ + { 31740, -1 }, /* DeformationMap3dSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_reference_plane) static const struct gl_function_remap GL_SGIX_reference_plane_functions[] = { - { 14787, -1 }, /* ReferencePlaneSGIX */ + { 14929, -1 }, /* ReferencePlaneSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_sprite) static const struct gl_function_remap GL_SGIX_sprite_functions[] = { - { 9605, -1 }, /* SpriteParameterfvSGIX */ - { 20658, -1 }, /* SpriteParameteriSGIX */ - { 26681, -1 }, /* SpriteParameterfSGIX */ - { 29523, -1 }, /* SpriteParameterivSGIX */ + { 9679, -1 }, /* SpriteParameterfvSGIX */ + { 20966, -1 }, /* SpriteParameteriSGIX */ + { 27072, -1 }, /* SpriteParameterfSGIX */ + { 29900, -1 }, /* SpriteParameterivSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_tag_sample_buffer) static const struct gl_function_remap GL_SGIX_tag_sample_buffer_functions[] = { - { 20717, -1 }, /* TagSampleBufferSGIX */ + { 21025, -1 }, /* TagSampleBufferSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGI_color_table) static const struct gl_function_remap GL_SGI_color_table_functions[] = { - { 7643, _gloffset_ColorTableParameteriv }, - { 8355, _gloffset_ColorTable }, - { 15283, _gloffset_GetColorTable }, - { 15393, _gloffset_CopyColorTable }, - { 19430, _gloffset_ColorTableParameterfv }, - { 22982, _gloffset_GetColorTableParameterfv }, - { 25109, _gloffset_GetColorTableParameteriv }, + { 7741, _gloffset_ColorTableParameteriv }, + { 8429, _gloffset_ColorTable }, + { 15425, _gloffset_GetColorTable }, + { 15535, _gloffset_CopyColorTable }, + { 19720, _gloffset_ColorTableParameterfv }, + { 23318, _gloffset_GetColorTableParameterfv }, + { 25490, _gloffset_GetColorTableParameteriv }, { -1, -1 } }; #endif #if defined(need_GL_SUNX_constant_data) static const struct gl_function_remap GL_SUNX_constant_data_functions[] = { - { 31409, -1 }, /* FinishTextureSUNX */ + { 31830, -1 }, /* FinishTextureSUNX */ { -1, -1 } }; #endif #if defined(need_GL_SUN_global_alpha) static const struct gl_function_remap GL_SUN_global_alpha_functions[] = { - { 3447, -1 }, /* GlobalAlphaFactorubSUN */ - { 4805, -1 }, /* GlobalAlphaFactoriSUN */ - { 6597, -1 }, /* GlobalAlphaFactordSUN */ - { 9689, -1 }, /* GlobalAlphaFactoruiSUN */ - { 10161, -1 }, /* GlobalAlphaFactorbSUN */ - { 13315, -1 }, /* GlobalAlphaFactorfSUN */ - { 13479, -1 }, /* GlobalAlphaFactorusSUN */ - { 22669, -1 }, /* GlobalAlphaFactorsSUN */ + { 3408, -1 }, /* GlobalAlphaFactorubSUN */ + { 4868, -1 }, /* GlobalAlphaFactoriSUN */ + { 6695, -1 }, /* GlobalAlphaFactordSUN */ + { 9763, -1 }, /* GlobalAlphaFactoruiSUN */ + { 10235, -1 }, /* GlobalAlphaFactorbSUN */ + { 13371, -1 }, /* GlobalAlphaFactorfSUN */ + { 13535, -1 }, /* GlobalAlphaFactorusSUN */ + { 23005, -1 }, /* GlobalAlphaFactorsSUN */ { -1, -1 } }; #endif #if defined(need_GL_SUN_mesh_array) static const struct gl_function_remap GL_SUN_mesh_array_functions[] = { - { 29314, -1 }, /* DrawMeshArraysSUN */ + { 29691, -1 }, /* DrawMeshArraysSUN */ { -1, -1 } }; #endif #if defined(need_GL_SUN_triangle_list) static const struct gl_function_remap GL_SUN_triangle_list_functions[] = { - { 4480, -1 }, /* ReplacementCodeubSUN */ - { 6356, -1 }, /* ReplacementCodeubvSUN */ - { 19151, -1 }, /* ReplacementCodeusvSUN */ - { 19339, -1 }, /* ReplacementCodePointerSUN */ - { 21527, -1 }, /* ReplacementCodeuiSUN */ - { 22357, -1 }, /* ReplacementCodeusSUN */ - { 29980, -1 }, /* ReplacementCodeuivSUN */ + { 4514, -1 }, /* ReplacementCodeubSUN */ + { 6454, -1 }, /* ReplacementCodeubvSUN */ + { 19441, -1 }, /* ReplacementCodeusvSUN */ + { 19629, -1 }, /* ReplacementCodePointerSUN */ + { 21835, -1 }, /* ReplacementCodeuiSUN */ + { 22693, -1 }, /* ReplacementCodeusSUN */ + { 30357, -1 }, /* ReplacementCodeuivSUN */ { -1, -1 } }; #endif #if defined(need_GL_SUN_vertex) static const struct gl_function_remap GL_SUN_vertex_functions[] = { - { 1154, -1 }, /* ReplacementCodeuiColor3fVertex3fvSUN */ - { 1352, -1 }, /* TexCoord4fColor4fNormal3fVertex4fvSUN */ - { 1578, -1 }, /* TexCoord2fColor4ubVertex3fvSUN */ - { 1908, -1 }, /* ReplacementCodeuiVertex3fvSUN */ - { 2042, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fvSUN */ - { 2600, -1 }, /* ReplacementCodeuiNormal3fVertex3fSUN */ - { 2913, -1 }, /* Color4ubVertex3fvSUN */ - { 4639, -1 }, /* Color4ubVertex3fSUN */ - { 4762, -1 }, /* TexCoord2fVertex3fSUN */ - { 5106, -1 }, /* TexCoord2fColor4fNormal3fVertex3fSUN */ - { 5599, -1 }, /* TexCoord2fNormal3fVertex3fvSUN */ - { 6251, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN */ - { 7031, -1 }, /* ReplacementCodeuiColor4ubVertex3fvSUN */ - { 7390, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fSUN */ - { 8102, -1 }, /* TexCoord2fNormal3fVertex3fSUN */ - { 8906, -1 }, /* Color3fVertex3fSUN */ - { 10097, -1 }, /* Color3fVertex3fvSUN */ - { 10535, -1 }, /* Color4fNormal3fVertex3fvSUN */ - { 11364, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN */ - { 12863, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fvSUN */ - { 14403, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN */ - { 14929, -1 }, /* TexCoord2fColor3fVertex3fSUN */ - { 15981, -1 }, /* TexCoord4fColor4fNormal3fVertex4fSUN */ - { 16396, -1 }, /* Color4ubVertex2fvSUN */ - { 16667, -1 }, /* Normal3fVertex3fSUN */ - { 17764, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fSUN */ - { 18125, -1 }, /* TexCoord2fColor4fNormal3fVertex3fvSUN */ - { 18980, -1 }, /* TexCoord2fVertex3fvSUN */ - { 19756, -1 }, /* Color4ubVertex2fSUN */ - { 19994, -1 }, /* ReplacementCodeuiColor4ubVertex3fSUN */ - { 21993, -1 }, /* TexCoord2fColor4ubVertex3fSUN */ - { 22425, -1 }, /* Normal3fVertex3fvSUN */ - { 22891, -1 }, /* Color4fNormal3fVertex3fSUN */ - { 23900, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN */ - { 26002, -1 }, /* ReplacementCodeuiColor3fVertex3fSUN */ - { 27425, -1 }, /* TexCoord4fVertex4fSUN */ - { 27851, -1 }, /* TexCoord2fColor3fVertex3fvSUN */ - { 28290, -1 }, /* ReplacementCodeuiNormal3fVertex3fvSUN */ - { 28417, -1 }, /* TexCoord4fVertex4fvSUN */ - { 29151, -1 }, /* ReplacementCodeuiVertex3fSUN */ + { 1115, -1 }, /* ReplacementCodeuiColor3fVertex3fvSUN */ + { 1313, -1 }, /* TexCoord4fColor4fNormal3fVertex4fvSUN */ + { 1539, -1 }, /* TexCoord2fColor4ubVertex3fvSUN */ + { 1869, -1 }, /* ReplacementCodeuiVertex3fvSUN */ + { 2003, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fvSUN */ + { 2561, -1 }, /* ReplacementCodeuiNormal3fVertex3fSUN */ + { 2874, -1 }, /* Color4ubVertex3fvSUN */ + { 4673, -1 }, /* Color4ubVertex3fSUN */ + { 4796, -1 }, /* TexCoord2fVertex3fSUN */ + { 5169, -1 }, /* TexCoord2fColor4fNormal3fVertex3fSUN */ + { 5620, -1 }, /* TexCoord2fNormal3fVertex3fvSUN */ + { 6349, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN */ + { 7129, -1 }, /* ReplacementCodeuiColor4ubVertex3fvSUN */ + { 7488, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fSUN */ + { 8980, -1 }, /* Color3fVertex3fSUN */ + { 10171, -1 }, /* Color3fVertex3fvSUN */ + { 10609, -1 }, /* Color4fNormal3fVertex3fvSUN */ + { 11438, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN */ + { 12919, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fvSUN */ + { 14545, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN */ + { 15071, -1 }, /* TexCoord2fColor3fVertex3fSUN */ + { 16123, -1 }, /* TexCoord4fColor4fNormal3fVertex4fSUN */ + { 16565, -1 }, /* Color4ubVertex2fvSUN */ + { 16895, -1 }, /* Normal3fVertex3fSUN */ + { 17992, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fSUN */ + { 18344, -1 }, /* TexCoord2fColor4fNormal3fVertex3fvSUN */ + { 18651, -1 }, /* TexCoord2fNormal3fVertex3fSUN */ + { 19260, -1 }, /* TexCoord2fVertex3fvSUN */ + { 20064, -1 }, /* Color4ubVertex2fSUN */ + { 20302, -1 }, /* ReplacementCodeuiColor4ubVertex3fSUN */ + { 22301, -1 }, /* TexCoord2fColor4ubVertex3fSUN */ + { 22761, -1 }, /* Normal3fVertex3fvSUN */ + { 23227, -1 }, /* Color4fNormal3fVertex3fSUN */ + { 24236, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN */ + { 26393, -1 }, /* ReplacementCodeuiColor3fVertex3fSUN */ + { 27784, -1 }, /* TexCoord4fVertex4fSUN */ + { 28230, -1 }, /* TexCoord2fColor3fVertex3fvSUN */ + { 28617, -1 }, /* ReplacementCodeuiNormal3fVertex3fvSUN */ + { 28744, -1 }, /* TexCoord4fVertex4fvSUN */ + { 29478, -1 }, /* ReplacementCodeuiVertex3fSUN */ { -1, -1 } }; #endif @@ -6491,40 +6592,40 @@ static const struct gl_function_remap GL_SUN_vertex_functions[] = { #if defined(need_GL_VERSION_1_3) /* functions defined in MESA_remap_table_functions are excluded */ static const struct gl_function_remap GL_VERSION_1_3_functions[] = { - { 464, _gloffset_MultiTexCoord3sARB }, - { 696, _gloffset_ActiveTextureARB }, - { 4234, _gloffset_MultiTexCoord1fvARB }, - { 6142, _gloffset_MultiTexCoord3dARB }, - { 6187, _gloffset_MultiTexCoord2iARB }, - { 6311, _gloffset_MultiTexCoord2svARB }, - { 8311, _gloffset_MultiTexCoord2fARB }, - { 10371, _gloffset_MultiTexCoord3fvARB }, - { 10973, _gloffset_MultiTexCoord4sARB }, - { 11654, _gloffset_MultiTexCoord2dvARB }, - { 12069, _gloffset_MultiTexCoord1svARB }, - { 12480, _gloffset_MultiTexCoord3svARB }, - { 12541, _gloffset_MultiTexCoord4iARB }, - { 13342, _gloffset_MultiTexCoord3iARB }, - { 14141, _gloffset_MultiTexCoord1dARB }, - { 14358, _gloffset_MultiTexCoord3dvARB }, - { 15637, _gloffset_MultiTexCoord3ivARB }, - { 15682, _gloffset_MultiTexCoord2sARB }, - { 17067, _gloffset_MultiTexCoord4ivARB }, - { 19080, _gloffset_ClientActiveTextureARB }, - { 21380, _gloffset_MultiTexCoord2dARB }, - { 21817, _gloffset_MultiTexCoord4dvARB }, - { 22173, _gloffset_MultiTexCoord4fvARB }, - { 23123, _gloffset_MultiTexCoord3fARB }, - { 25693, _gloffset_MultiTexCoord4dARB }, - { 25959, _gloffset_MultiTexCoord1sARB }, - { 26163, _gloffset_MultiTexCoord1dvARB }, - { 27171, _gloffset_MultiTexCoord1ivARB }, - { 27264, _gloffset_MultiTexCoord2ivARB }, - { 27603, _gloffset_MultiTexCoord1iARB }, - { 29019, _gloffset_MultiTexCoord4svARB }, - { 29593, _gloffset_MultiTexCoord1fARB }, - { 29856, _gloffset_MultiTexCoord4fARB }, - { 32314, _gloffset_MultiTexCoord2fvARB }, + { 425, _gloffset_MultiTexCoord3sARB }, + { 657, _gloffset_ActiveTextureARB }, + { 4268, _gloffset_MultiTexCoord1fvARB }, + { 6240, _gloffset_MultiTexCoord3dARB }, + { 6285, _gloffset_MultiTexCoord2iARB }, + { 6409, _gloffset_MultiTexCoord2svARB }, + { 8385, _gloffset_MultiTexCoord2fARB }, + { 10445, _gloffset_MultiTexCoord3fvARB }, + { 11047, _gloffset_MultiTexCoord4sARB }, + { 11728, _gloffset_MultiTexCoord2dvARB }, + { 12135, _gloffset_MultiTexCoord1svARB }, + { 12536, _gloffset_MultiTexCoord3svARB }, + { 12597, _gloffset_MultiTexCoord4iARB }, + { 13398, _gloffset_MultiTexCoord3iARB }, + { 14268, _gloffset_MultiTexCoord1dARB }, + { 14500, _gloffset_MultiTexCoord3dvARB }, + { 15779, _gloffset_MultiTexCoord3ivARB }, + { 15824, _gloffset_MultiTexCoord2sARB }, + { 17295, _gloffset_MultiTexCoord4ivARB }, + { 19360, _gloffset_ClientActiveTextureARB }, + { 21688, _gloffset_MultiTexCoord2dARB }, + { 22125, _gloffset_MultiTexCoord4dvARB }, + { 22481, _gloffset_MultiTexCoord4fvARB }, + { 23459, _gloffset_MultiTexCoord3fARB }, + { 26084, _gloffset_MultiTexCoord4dARB }, + { 26350, _gloffset_MultiTexCoord1sARB }, + { 26554, _gloffset_MultiTexCoord1dvARB }, + { 27530, _gloffset_MultiTexCoord1ivARB }, + { 27623, _gloffset_MultiTexCoord2ivARB }, + { 27962, _gloffset_MultiTexCoord1iARB }, + { 29346, _gloffset_MultiTexCoord4svARB }, + { 29970, _gloffset_MultiTexCoord1fARB }, + { 30233, _gloffset_MultiTexCoord4fARB }, + { 32702, _gloffset_MultiTexCoord2fvARB }, { -1, -1 } }; #endif diff --git a/src/mesa/main/renderbuffer.c b/src/mesa/main/renderbuffer.c index 67ee589d776..fa884c0de93 100644 --- a/src/mesa/main/renderbuffer.c +++ b/src/mesa/main/renderbuffer.c @@ -51,40 +51,187 @@ /* * Routines for get/put values in common buffer formats follow. - * Someday add support for arbitrary row stride to make them more - * flexible. */ -/********************************************************************** - * Functions for buffers of 1 X GLubyte values. - * Typically stencil. +/* Returns a bytes per pixel of the DataType in the get/put span + * functions for at least a subset of the available combinations a + * renderbuffer can have. + * + * It would be nice to see gl_renderbuffer start talking about a + * gl_format instead of a GLenum DataType. */ +static int +get_datatype_bytes(struct gl_renderbuffer *rb) +{ + int component_size; + switch (rb->DataType) { + case GL_FLOAT: + case GL_UNSIGNED_INT: + case GL_UNSIGNED_INT_24_8_EXT: + component_size = 4; + break; + case GL_UNSIGNED_SHORT: + component_size = 2; + break; + case GL_UNSIGNED_BYTE: + component_size = 1; + break; + default: + component_size = 1; + assert(0); + } + + switch (rb->_BaseFormat) { + case GL_DEPTH_COMPONENT: + case GL_DEPTH_STENCIL: + return component_size; + default: + return 4 * component_size; + } +} + +/* This is commonly used by most of the accessors. */ static void * -get_pointer_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, - GLint x, GLint y) +get_pointer_generic(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLint x, GLint y) { if (!rb->Data) return NULL; - ASSERT(rb->DataType == GL_UNSIGNED_BYTE); - /* Can't assert rb->Format since these funcs may be used for serveral - * different formats (GL_ALPHA8, GL_STENCIL_INDEX8, etc). - */ - return (GLubyte *) rb->Data + y * rb->Width + x; + + return ((char *) rb->Data + + (y * rb->RowStride + x) * _mesa_get_format_bytes(rb->Format)); } +/* GetRow() implementation for formats where DataType matches the rb->Format. + */ +static void +get_row_generic(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, GLint x, GLint y, void *values) +{ + void *src = rb->GetPointer(ctx, rb, x, y); + memcpy(values, src, count * _mesa_get_format_bytes(rb->Format)); +} +/* Only used for float textures currently, but might also be used for + * RGBA8888, RGBA16, etc. + */ static void -get_row_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, - GLint x, GLint y, void *values) +get_values_generic(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], void *values) { - const GLubyte *src = (const GLubyte *) rb->Data + y * rb->Width + x; - ASSERT(rb->DataType == GL_UNSIGNED_BYTE); - memcpy(values, src, count * sizeof(GLubyte)); + int format_bytes = _mesa_get_format_bytes(rb->Format) / sizeof(GLfloat); + GLuint i; + + for (i = 0; i < count; i++) { + const void *src = rb->GetPointer(ctx, rb, x[i], y[i]); + char *dst = (char *) values + i * format_bytes; + memcpy(dst, src, format_bytes); + } +} + +/* For the GL_RED/GL_RG/GL_RGB format/DataType combinations (and + * GL_LUMINANCE/GL_INTENSITY?), the Put functions are a matter of + * storing those initial components of the value per pixel into the + * destination. + */ +static void +put_row_generic(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, GLint x, GLint y, + const void *values, const GLubyte *mask) +{ + void *row = rb->GetPointer(ctx, rb, x, y); + int format_bytes = _mesa_get_format_bytes(rb->Format) / sizeof(GLfloat); + int datatype_bytes = get_datatype_bytes(rb); + unsigned int i; + + if (mask) { + for (i = 0; i < count; i++) { + char *dst = (char *) row + i * format_bytes; + const char *src = (const char *) values + i * datatype_bytes; + + if (mask[i]) { + memcpy(dst, src, format_bytes); + } + } + } + else { + for (i = 0; i < count; i++) { + char *dst = (char *) row + i * format_bytes; + const char *src = (const char *) values + i * datatype_bytes; + memcpy(dst, src, format_bytes); + } + } +} + +static void +put_mono_row_generic(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, GLint x, GLint y, + const void *value, const GLubyte *mask) +{ + void *row = rb->GetPointer(ctx, rb, x, y); + int format_bytes = _mesa_get_format_bytes(rb->Format) / sizeof(GLfloat); + unsigned int i; + + if (mask) { + for (i = 0; i < count; i++) { + char *dst = (char *) row + i * format_bytes; + if (mask[i]) { + memcpy(dst, value, format_bytes); + } + } + } + else { + for (i = 0; i < count; i++) { + char *dst = (char *) row + i * format_bytes; + memcpy(dst, value, format_bytes); + } + } } static void +put_values_generic(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], + const void *values, const GLubyte *mask) +{ + int format_bytes = _mesa_get_format_bytes(rb->Format) / sizeof(GLfloat); + int datatype_bytes = get_datatype_bytes(rb); + unsigned int i; + + for (i = 0; i < count; i++) { + if (!mask || mask[i]) { + void *dst = rb->GetPointer(ctx, rb, x[i], y[i]); + const char *src = (const char *) values + i * datatype_bytes; + memcpy(dst, src, format_bytes); + } + } +} + + +static void +put_mono_values_generic(struct gl_context *ctx, + struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], + const void *value, const GLubyte *mask) +{ + int format_bytes = _mesa_get_format_bytes(rb->Format) / sizeof(GLfloat); + unsigned int i; + + for (i = 0; i < count; i++) { + if (!mask || mask[i]) { + void *dst = rb->GetPointer(ctx, rb, x[i], y[i]); + memcpy(dst, value, format_bytes); + } + } +} + +/********************************************************************** + * Functions for buffers of 1 X GLubyte values. + * Typically stencil. + */ + +static void get_values_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values) { @@ -92,7 +239,7 @@ get_values_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint coun GLuint i; ASSERT(rb->DataType == GL_UNSIGNED_BYTE); for (i = 0; i < count; i++) { - const GLubyte *src = (GLubyte *) rb->Data + y[i] * rb->Width + x[i]; + const GLubyte *src = (GLubyte *) rb->Data + y[i] * rb->RowStride + x[i]; dst[i] = *src; } } @@ -103,7 +250,7 @@ put_row_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask) { const GLubyte *src = (const GLubyte *) values; - GLubyte *dst = (GLubyte *) rb->Data + y * rb->Width + x; + GLubyte *dst = (GLubyte *) rb->Data + y * rb->RowStride + x; ASSERT(rb->DataType == GL_UNSIGNED_BYTE); if (mask) { GLuint i; @@ -124,7 +271,7 @@ put_mono_row_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint co GLint x, GLint y, const void *value, const GLubyte *mask) { const GLubyte val = *((const GLubyte *) value); - GLubyte *dst = (GLubyte *) rb->Data + y * rb->Width + x; + GLubyte *dst = (GLubyte *) rb->Data + y * rb->RowStride + x; ASSERT(rb->DataType == GL_UNSIGNED_BYTE); if (mask) { GLuint i; @@ -153,7 +300,7 @@ put_values_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint coun ASSERT(rb->DataType == GL_UNSIGNED_BYTE); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLubyte *dst = (GLubyte *) rb->Data + y[i] * rb->Width + x[i]; + GLubyte *dst = (GLubyte *) rb->Data + y[i] * rb->RowStride + x[i]; *dst = src[i]; } } @@ -170,7 +317,7 @@ put_mono_values_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint ASSERT(rb->DataType == GL_UNSIGNED_BYTE); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLubyte *dst = (GLubyte *) rb->Data + y[i] * rb->Width + x[i]; + GLubyte *dst = (GLubyte *) rb->Data + y[i] * rb->RowStride + x[i]; *dst = val; } } @@ -182,28 +329,6 @@ put_mono_values_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint * Typically depth/Z. */ -static void * -get_pointer_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, - GLint x, GLint y) -{ - if (!rb->Data) - return NULL; - ASSERT(rb->DataType == GL_UNSIGNED_SHORT); - ASSERT(rb->Width > 0); - return (GLushort *) rb->Data + y * rb->Width + x; -} - - -static void -get_row_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, - GLint x, GLint y, void *values) -{ - const void *src = rb->GetPointer(ctx, rb, x, y); - ASSERT(rb->DataType == GL_UNSIGNED_SHORT); - memcpy(values, src, count * sizeof(GLushort)); -} - - static void get_values_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values) @@ -212,7 +337,7 @@ get_values_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint cou GLuint i; ASSERT(rb->DataType == GL_UNSIGNED_SHORT); for (i = 0; i < count; i++) { - const GLushort *src = (GLushort *) rb->Data + y[i] * rb->Width + x[i]; + const GLushort *src = (GLushort *) rb->Data + y[i] * rb->RowStride + x[i]; dst[i] = *src; } } @@ -223,7 +348,7 @@ put_row_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask) { const GLushort *src = (const GLushort *) values; - GLushort *dst = (GLushort *) rb->Data + y * rb->Width + x; + GLushort *dst = (GLushort *) rb->Data + y * rb->RowStride + x; ASSERT(rb->DataType == GL_UNSIGNED_SHORT); if (mask) { GLuint i; @@ -244,7 +369,7 @@ put_mono_row_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint c GLint x, GLint y, const void *value, const GLubyte *mask) { const GLushort val = *((const GLushort *) value); - GLushort *dst = (GLushort *) rb->Data + y * rb->Width + x; + GLushort *dst = (GLushort *) rb->Data + y * rb->RowStride + x; ASSERT(rb->DataType == GL_UNSIGNED_SHORT); if (mask) { GLuint i; @@ -273,7 +398,7 @@ put_values_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint cou ASSERT(rb->DataType == GL_UNSIGNED_SHORT); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLushort *dst = (GLushort *) rb->Data + y[i] * rb->Width + x[i]; + GLushort *dst = (GLushort *) rb->Data + y[i] * rb->RowStride + x[i]; *dst = src[i]; } } @@ -291,7 +416,7 @@ put_mono_values_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint i; for (i = 0; i < count; i++) { if (mask[i]) { - GLushort *dst = (GLushort *) rb->Data + y[i] * rb->Width + x[i]; + GLushort *dst = (GLushort *) rb->Data + y[i] * rb->RowStride + x[i]; *dst = val; } } @@ -299,7 +424,7 @@ put_mono_values_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, else { GLuint i; for (i = 0; i < count; i++) { - GLushort *dst = (GLushort *) rb->Data + y[i] * rb->Width + x[i]; + GLushort *dst = (GLushort *) rb->Data + y[i] * rb->RowStride + x[i]; *dst = val; } } @@ -311,29 +436,6 @@ put_mono_values_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, * Typically depth/Z or color index. */ -static void * -get_pointer_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, - GLint x, GLint y) -{ - if (!rb->Data) - return NULL; - ASSERT(rb->DataType == GL_UNSIGNED_INT || - rb->DataType == GL_UNSIGNED_INT_24_8_EXT); - return (GLuint *) rb->Data + y * rb->Width + x; -} - - -static void -get_row_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, - GLint x, GLint y, void *values) -{ - const void *src = rb->GetPointer(ctx, rb, x, y); - ASSERT(rb->DataType == GL_UNSIGNED_INT || - rb->DataType == GL_UNSIGNED_INT_24_8_EXT); - memcpy(values, src, count * sizeof(GLuint)); -} - - static void get_values_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values) @@ -343,7 +445,7 @@ get_values_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count ASSERT(rb->DataType == GL_UNSIGNED_INT || rb->DataType == GL_UNSIGNED_INT_24_8_EXT); for (i = 0; i < count; i++) { - const GLuint *src = (GLuint *) rb->Data + y[i] * rb->Width + x[i]; + const GLuint *src = (GLuint *) rb->Data + y[i] * rb->RowStride + x[i]; dst[i] = *src; } } @@ -354,7 +456,7 @@ put_row_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask) { const GLuint *src = (const GLuint *) values; - GLuint *dst = (GLuint *) rb->Data + y * rb->Width + x; + GLuint *dst = (GLuint *) rb->Data + y * rb->RowStride + x; ASSERT(rb->DataType == GL_UNSIGNED_INT || rb->DataType == GL_UNSIGNED_INT_24_8_EXT); if (mask) { @@ -376,7 +478,7 @@ put_mono_row_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint cou GLint x, GLint y, const void *value, const GLubyte *mask) { const GLuint val = *((const GLuint *) value); - GLuint *dst = (GLuint *) rb->Data + y * rb->Width + x; + GLuint *dst = (GLuint *) rb->Data + y * rb->RowStride + x; ASSERT(rb->DataType == GL_UNSIGNED_INT || rb->DataType == GL_UNSIGNED_INT_24_8_EXT); if (mask) { @@ -407,7 +509,7 @@ put_values_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count rb->DataType == GL_UNSIGNED_INT_24_8_EXT); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLuint *dst = (GLuint *) rb->Data + y[i] * rb->Width + x[i]; + GLuint *dst = (GLuint *) rb->Data + y[i] * rb->RowStride + x[i]; *dst = src[i]; } } @@ -425,7 +527,7 @@ put_mono_values_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint rb->DataType == GL_UNSIGNED_INT_24_8_EXT); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLuint *dst = (GLuint *) rb->Data + y[i] * rb->Width + x[i]; + GLuint *dst = (GLuint *) rb->Data + y[i] * rb->RowStride + x[i]; *dst = val; } } @@ -455,7 +557,8 @@ static void get_row_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, void *values) { - const GLubyte *src = (const GLubyte *) rb->Data + 3 * (y * rb->Width + x); + const GLubyte *src = ((const GLubyte *) rb->Data) + + 3 * (y * rb->RowStride + x); GLubyte *dst = (GLubyte *) values; GLuint i; ASSERT(rb->Format == MESA_FORMAT_RGB888); @@ -479,7 +582,7 @@ get_values_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint cou ASSERT(rb->DataType == GL_UNSIGNED_BYTE); for (i = 0; i < count; i++) { const GLubyte *src - = (GLubyte *) rb->Data + 3 * (y[i] * rb->Width + x[i]); + = (GLubyte *) rb->Data + 3 * (y[i] * rb->RowStride + x[i]); dst[i * 4 + 0] = src[0]; dst[i * 4 + 1] = src[1]; dst[i * 4 + 2] = src[2]; @@ -494,7 +597,7 @@ put_row_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, { /* note: incoming values are RGB+A! */ const GLubyte *src = (const GLubyte *) values; - GLubyte *dst = (GLubyte *) rb->Data + 3 * (y * rb->Width + x); + GLubyte *dst = (GLubyte *) rb->Data + 3 * (y * rb->RowStride + x); GLuint i; ASSERT(rb->Format == MESA_FORMAT_RGB888); ASSERT(rb->DataType == GL_UNSIGNED_BYTE); @@ -514,7 +617,7 @@ put_row_rgb_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint co { /* note: incoming values are RGB+A! */ const GLubyte *src = (const GLubyte *) values; - GLubyte *dst = (GLubyte *) rb->Data + 3 * (y * rb->Width + x); + GLubyte *dst = (GLubyte *) rb->Data + 3 * (y * rb->RowStride + x); GLuint i; ASSERT(rb->Format == MESA_FORMAT_RGB888); ASSERT(rb->DataType == GL_UNSIGNED_BYTE); @@ -536,7 +639,7 @@ put_mono_row_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint c const GLubyte val0 = ((const GLubyte *) value)[0]; const GLubyte val1 = ((const GLubyte *) value)[1]; const GLubyte val2 = ((const GLubyte *) value)[2]; - GLubyte *dst = (GLubyte *) rb->Data + 3 * (y * rb->Width + x); + GLubyte *dst = (GLubyte *) rb->Data + 3 * (y * rb->RowStride + x); ASSERT(rb->Format == MESA_FORMAT_RGB888); ASSERT(rb->DataType == GL_UNSIGNED_BYTE); if (!mask && val0 == val1 && val1 == val2) { @@ -568,7 +671,7 @@ put_values_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint cou ASSERT(rb->DataType == GL_UNSIGNED_BYTE); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLubyte *dst = (GLubyte *) rb->Data + 3 * (y[i] * rb->Width + x[i]); + GLubyte *dst = (GLubyte *) rb->Data + 3 * (y[i] * rb->RowStride + x[i]); dst[0] = src[i * 4 + 0]; dst[1] = src[i * 4 + 1]; dst[2] = src[i * 4 + 2]; @@ -591,7 +694,8 @@ put_mono_values_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, ASSERT(rb->DataType == GL_UNSIGNED_BYTE); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLubyte *dst = (GLubyte *) rb->Data + 3 * (y[i] * rb->Width + x[i]); + GLubyte *dst = ((GLubyte *) rb->Data) + + 3 * (y[i] * rb->RowStride + x[i]); dst[0] = val0; dst[1] = val1; dst[2] = val2; @@ -605,29 +709,6 @@ put_mono_values_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, * Typically color buffers. */ -static void * -get_pointer_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, - GLint x, GLint y) -{ - if (!rb->Data) - return NULL; - ASSERT(rb->DataType == GL_UNSIGNED_BYTE); - ASSERT(rb->Format == MESA_FORMAT_RGBA8888); - return (GLubyte *) rb->Data + 4 * (y * rb->Width + x); -} - - -static void -get_row_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, - GLint x, GLint y, void *values) -{ - const GLubyte *src = (const GLubyte *) rb->Data + 4 * (y * rb->Width + x); - ASSERT(rb->DataType == GL_UNSIGNED_BYTE); - ASSERT(rb->Format == MESA_FORMAT_RGBA8888); - memcpy(values, src, 4 * count * sizeof(GLubyte)); -} - - static void get_values_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values) @@ -638,7 +719,7 @@ get_values_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint cou ASSERT(rb->DataType == GL_UNSIGNED_BYTE); ASSERT(rb->Format == MESA_FORMAT_RGBA8888); for (i = 0; i < count; i++) { - const GLuint *src = (GLuint *) rb->Data + (y[i] * rb->Width + x[i]); + const GLuint *src = (GLuint *) rb->Data + (y[i] * rb->RowStride + x[i]); dst[i] = *src; } } @@ -650,7 +731,7 @@ put_row_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, { /* treat 4*GLubyte as 1*GLuint */ const GLuint *src = (const GLuint *) values; - GLuint *dst = (GLuint *) rb->Data + (y * rb->Width + x); + GLuint *dst = (GLuint *) rb->Data + (y * rb->RowStride + x); ASSERT(rb->DataType == GL_UNSIGNED_BYTE); ASSERT(rb->Format == MESA_FORMAT_RGBA8888); if (mask) { @@ -673,7 +754,7 @@ put_row_rgb_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint co { /* Store RGB values in RGBA buffer */ const GLubyte *src = (const GLubyte *) values; - GLubyte *dst = (GLubyte *) rb->Data + 4 * (y * rb->Width + x); + GLubyte *dst = (GLubyte *) rb->Data + 4 * (y * rb->RowStride + x); GLuint i; ASSERT(rb->DataType == GL_UNSIGNED_BYTE); ASSERT(rb->Format == MESA_FORMAT_RGBA8888); @@ -694,7 +775,7 @@ put_mono_row_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint c { /* treat 4*GLubyte as 1*GLuint */ const GLuint val = *((const GLuint *) value); - GLuint *dst = (GLuint *) rb->Data + (y * rb->Width + x); + GLuint *dst = (GLuint *) rb->Data + (y * rb->RowStride + x); ASSERT(rb->DataType == GL_UNSIGNED_BYTE); ASSERT(rb->Format == MESA_FORMAT_RGBA8888); if (!mask && val == 0) { @@ -733,7 +814,7 @@ put_values_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint cou ASSERT(rb->Format == MESA_FORMAT_RGBA8888); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLuint *dst = (GLuint *) rb->Data + (y[i] * rb->Width + x[i]); + GLuint *dst = (GLuint *) rb->Data + (y[i] * rb->RowStride + x[i]); *dst = src[i]; } } @@ -752,7 +833,7 @@ put_mono_values_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, ASSERT(rb->Format == MESA_FORMAT_RGBA8888); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLuint *dst = (GLuint *) rb->Data + (y[i] * rb->Width + x[i]); + GLuint *dst = (GLuint *) rb->Data + (y[i] * rb->RowStride + x[i]); *dst = val; } } @@ -764,27 +845,6 @@ put_mono_values_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, * Typically accum buffer. */ -static void * -get_pointer_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, - GLint x, GLint y) -{ - if (!rb->Data) - return NULL; - ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT); - return (GLushort *) rb->Data + 4 * (y * rb->Width + x); -} - - -static void -get_row_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, - GLint x, GLint y, void *values) -{ - const GLshort *src = (const GLshort *) rb->Data + 4 * (y * rb->Width + x); - ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT); - memcpy(values, src, 4 * count * sizeof(GLshort)); -} - - static void get_values_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values) @@ -794,7 +854,7 @@ get_values_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint co ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT); for (i = 0; i < count; i++) { const GLushort *src - = (GLushort *) rb->Data + 4 * (y[i] * rb->Width + x[i]); + = (GLushort *) rb->Data + 4 * (y[i] * rb->RowStride + x[i]); dst[i] = *src; } } @@ -805,7 +865,7 @@ put_row_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count GLint x, GLint y, const void *values, const GLubyte *mask) { const GLushort *src = (const GLushort *) values; - GLushort *dst = (GLushort *) rb->Data + 4 * (y * rb->Width + x); + GLushort *dst = (GLushort *) rb->Data + 4 * (y * rb->RowStride + x); ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT); if (mask) { GLuint i; @@ -830,7 +890,7 @@ put_row_rgb_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint c { /* Put RGB values in RGBA buffer */ const GLushort *src = (const GLushort *) values; - GLushort *dst = (GLushort *) rb->Data + 4 * (y * rb->Width + x); + GLushort *dst = (GLushort *) rb->Data + 4 * (y * rb->RowStride + x); ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT); if (mask) { GLuint i; @@ -857,7 +917,7 @@ put_mono_row_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint const GLushort val1 = ((const GLushort *) value)[1]; const GLushort val2 = ((const GLushort *) value)[2]; const GLushort val3 = ((const GLushort *) value)[3]; - GLushort *dst = (GLushort *) rb->Data + 4 * (y * rb->Width + x); + GLushort *dst = (GLushort *) rb->Data + 4 * (y * rb->RowStride + x); ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT); if (!mask && val0 == 0 && val1 == 0 && val2 == 0 && val3 == 0) { /* common case for clearing accum buffer */ @@ -887,7 +947,8 @@ put_values_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint co ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLushort *dst = (GLushort *) rb->Data + 4 * (y[i] * rb->Width + x[i]); + GLushort *dst = + ((GLushort *) rb->Data) + 4 * (y[i] * rb->RowStride + x[i]); dst[0] = src[i * 4 + 0]; dst[1] = src[i * 4 + 1]; dst[2] = src[i * 4 + 2]; @@ -910,7 +971,8 @@ put_mono_values_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLushort *dst = (GLushort *) rb->Data + 4 * (y[i] * rb->Width + x[i]); + GLushort *dst = ((GLushort *) rb->Data) + + 4 * (y[i] * rb->RowStride + x[i]); dst[0] = val0; dst[1] = val1; dst[2] = val2; @@ -919,39 +981,410 @@ put_mono_values_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, } } +/********************************************************************** + * Functions for MESA_FORMAT_R8. + */ +static void +get_row_r8(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, + GLint x, GLint y, void *values) +{ + const GLubyte *src = rb->GetPointer(ctx, rb, x, y); + GLuint *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + dst[i] = 0xff000000 | src[i]; + } +} + +static void +get_values_r8(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, + const GLint x[], const GLint y[], void *values) +{ + GLuint *dst = (GLuint *) values; + GLuint i; + + for (i = 0; i < count; i++) { + const GLubyte *src = rb->GetPointer(ctx, rb, x[i], y[i]); + dst[i] = 0xff000000 | *src; + } +} + +/********************************************************************** + * Functions for MESA_FORMAT_RG88. + */ +static void +get_row_rg88(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, + GLint x, GLint y, void *values) +{ + const GLushort *src = rb->GetPointer(ctx, rb, x, y); + GLuint *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + dst[i] = 0xff000000 | src[i]; + } +} + +static void +get_values_rg88(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], void *values) +{ + GLuint *dst = (GLuint *) values; + GLuint i; + + for (i = 0; i < count; i++) { + const GLshort *src = rb->GetPointer(ctx, rb, x[i], y[i]); + dst[i] = 0xff000000 | *src; + } +} + +/********************************************************************** + * Functions for MESA_FORMAT_R16. + */ +static void +get_row_r16(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, + GLint x, GLint y, void *values) +{ + const GLushort *src = rb->GetPointer(ctx, rb, x, y); + GLushort *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + dst[i * 4 + RCOMP] = src[i]; + dst[i * 4 + GCOMP] = 0; + dst[i * 4 + BCOMP] = 0; + dst[i * 4 + ACOMP] = 0xffff; + } +} + +static void +get_values_r16(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, + const GLint x[], const GLint y[], void *values) +{ + GLushort *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + const GLushort *src = rb->GetPointer(ctx, rb, x[i], y[i]); + dst[i * 4 + RCOMP] = *src; + dst[i * 4 + GCOMP] = 0; + dst[i * 4 + BCOMP] = 0; + dst[i * 4 + ACOMP] = 0xffff; + } +} + +/********************************************************************** + * Functions for MESA_FORMAT_RG1616. + */ +static void +get_row_rg1616(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, + GLint x, GLint y, void *values) +{ + const GLushort *src = rb->GetPointer(ctx, rb, x, y); + GLushort *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + dst[i * 4 + RCOMP] = src[i * 2]; + dst[i * 4 + GCOMP] = src[i * 2 + 1]; + dst[i * 4 + BCOMP] = 0; + dst[i * 4 + ACOMP] = 0xffff; + } +} + +static void +get_values_rg1616(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], void *values) +{ + GLushort *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + const GLshort *src = rb->GetPointer(ctx, rb, x[i], y[i]); + dst[i * 4 + RCOMP] = src[0]; + dst[i * 4 + GCOMP] = src[1]; + dst[i * 4 + BCOMP] = 0; + dst[i * 4 + ACOMP] = 0xffff; + } +} + +/********************************************************************** + * Functions for MESA_FORMAT_INTENSITY_FLOAT32. + */ +static void +get_row_i_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, GLint x, GLint y, void *values) +{ + const GLfloat *src = rb->GetPointer(ctx, rb, x, y); + GLfloat *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + dst[i * 4 + RCOMP] = + dst[i * 4 + GCOMP] = + dst[i * 4 + BCOMP] = + dst[i * 4 + ACOMP] = src[i]; + } +} + +static void +get_values_i_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], + void *values) +{ + GLfloat *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + const GLfloat *src = rb->GetPointer(ctx, rb, x[i], y[i]); + dst[i * 4 + RCOMP] = + dst[i * 4 + GCOMP] = + dst[i * 4 + BCOMP] = + dst[i * 4 + ACOMP] = src[0]; + } +} + +/********************************************************************** + * Functions for MESA_FORMAT_LUMINANCE_FLOAT32. + */ +static void +get_row_l_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, GLint x, GLint y, void *values) +{ + const GLfloat *src = rb->GetPointer(ctx, rb, x, y); + GLfloat *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + dst[i * 4 + RCOMP] = + dst[i * 4 + GCOMP] = + dst[i * 4 + BCOMP] = src[i]; + dst[i * 4 + ACOMP] = 1.0; + } +} + +static void +get_values_l_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], + void *values) +{ + GLfloat *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + const GLfloat *src = rb->GetPointer(ctx, rb, x[i], y[i]); + dst[i * 4 + RCOMP] = + dst[i * 4 + GCOMP] = + dst[i * 4 + BCOMP] = src[0]; + dst[i * 4 + ACOMP] = 1.0; + } +} + +/********************************************************************** + * Functions for MESA_FORMAT_ALPHA_FLOAT32. + */ +static void +get_row_a_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, GLint x, GLint y, void *values) +{ + const GLfloat *src = rb->GetPointer(ctx, rb, x, y); + GLfloat *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + dst[i * 4 + RCOMP] = 0.0; + dst[i * 4 + GCOMP] = 0.0; + dst[i * 4 + BCOMP] = 0.0; + dst[i * 4 + ACOMP] = src[i]; + } +} + +static void +get_values_a_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], + void *values) +{ + GLfloat *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + const GLfloat *src = rb->GetPointer(ctx, rb, x[i], y[i]); + dst[i * 4 + RCOMP] = 0.0; + dst[i * 4 + GCOMP] = 0.0; + dst[i * 4 + BCOMP] = 0.0; + dst[i * 4 + ACOMP] = src[0]; + } +} + +static void +put_row_a_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, GLint x, GLint y, + const void *values, const GLubyte *mask) +{ + float *dst = rb->GetPointer(ctx, rb, x, y); + const float *src = values; + unsigned int i; + + if (mask) { + for (i = 0; i < count; i++) { + if (mask[i]) { + dst[i] = src[i * 4 + ACOMP]; + } + } + } + else { + for (i = 0; i < count; i++) { + dst[i] = src[i * 4 + ACOMP]; + } + } +} + +static void +put_mono_row_a_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, GLint x, GLint y, + const void *value, const GLubyte *mask) +{ + float *dst = rb->GetPointer(ctx, rb, x, y); + const float *src = value; + unsigned int i; + + if (mask) { + for (i = 0; i < count; i++) { + if (mask[i]) { + dst[i] = src[ACOMP]; + } + } + } + else { + for (i = 0; i < count; i++) { + dst[i] = src[ACOMP]; + } + } +} + +static void +put_values_a_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], + const void *values, const GLubyte *mask) +{ + const float *src = values; + unsigned int i; + + for (i = 0; i < count; i++) { + if (!mask || mask[i]) { + float *dst = rb->GetPointer(ctx, rb, x[i], y[i]); + + *dst = src[i * 4 + ACOMP]; + } + } +} + +static void +put_mono_values_a_float32(struct gl_context *ctx, + struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], + const void *value, const GLubyte *mask) +{ + const float *src = value; + unsigned int i; + + for (i = 0; i < count; i++) { + if (!mask || mask[i]) { + float *dst = rb->GetPointer(ctx, rb, x[i], y[i]); + *dst = src[ACOMP]; + } + } +} + +/********************************************************************** + * Functions for MESA_FORMAT_R_FLOAT32. + */ +static void +get_row_r_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, GLint x, GLint y, void *values) +{ + const GLfloat *src = rb->GetPointer(ctx, rb, x, y); + GLfloat *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + dst[i * 4 + RCOMP] = src[i]; + dst[i * 4 + GCOMP] = 0.0; + dst[i * 4 + BCOMP] = 0.0; + dst[i * 4 + ACOMP] = 1.0; + } +} +static void +get_values_r_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], + void *values) +{ + GLfloat *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + const GLfloat *src = rb->GetPointer(ctx, rb, x[i], y[i]); + dst[i * 4 + RCOMP] = src[0]; + dst[i * 4 + GCOMP] = 0.0; + dst[i * 4 + BCOMP] = 0.0; + dst[i * 4 + ACOMP] = 1.0; + } +} + +/********************************************************************** + * Functions for MESA_FORMAT_RG_FLOAT32. + */ +static void +get_row_rg_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, GLint x, GLint y, void *values) +{ + const GLfloat *src = rb->GetPointer(ctx, rb, x, y); + GLfloat *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + dst[i * 4 + RCOMP] = src[i * 2 + 0]; + dst[i * 4 + GCOMP] = src[i * 2 + 1]; + dst[i * 4 + BCOMP] = 0.0; + dst[i * 4 + ACOMP] = 1.0; + } +} + +static void +get_values_rg_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], + void *values) +{ + GLfloat *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + const GLfloat *src = rb->GetPointer(ctx, rb, x[i], y[i]); + dst[i * 4 + RCOMP] = src[0]; + dst[i * 4 + GCOMP] = src[1]; + dst[i * 4 + BCOMP] = 0.0; + dst[i * 4 + ACOMP] = 1.0; + } +} /** - * This is a software fallback for the gl_renderbuffer->AllocStorage - * function. - * Device drivers will typically override this function for the buffers - * which it manages (typically color buffers, Z and stencil). - * Other buffers (like software accumulation and aux buffers) which the driver - * doesn't manage can be handled with this function. - * - * This one multi-purpose function can allocate stencil, depth, accum, color - * or color-index buffers! + * This is the default software fallback for gl_renderbuffer's span + * access functions. * - * This function also plugs in the appropriate GetPointer, Get/PutRow and - * Get/PutValues functions. + * The assumptions are that rb->Data will be a pointer to (0,0), that pixels + * are packed in the type of rb->Format, and that subsequent rows appear + * rb->RowStride pixels later. */ -GLboolean -_mesa_soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, - GLenum internalFormat, - GLuint width, GLuint height) +void +_mesa_set_renderbuffer_accessors(struct gl_renderbuffer *rb) { - GLuint pixelSize; + rb->GetPointer = get_pointer_generic; + rb->GetRow = get_row_generic; - switch (internalFormat) { - case GL_RGB: - case GL_R3_G3_B2: - case GL_RGB4: - case GL_RGB5: - case GL_RGB8: - case GL_RGB10: - case GL_RGB12: - case GL_RGB16: - rb->Format = MESA_FORMAT_RGB888; + switch (rb->Format) { + case MESA_FORMAT_RGB888: rb->DataType = GL_UNSIGNED_BYTE; rb->GetPointer = get_pointer_ubyte3; rb->GetRow = get_row_ubyte3; @@ -961,135 +1394,271 @@ _mesa_soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer * rb->PutMonoRow = put_mono_row_ubyte3; rb->PutValues = put_values_ubyte3; rb->PutMonoValues = put_mono_values_ubyte3; - pixelSize = 3 * sizeof(GLubyte); break; - case GL_RGBA: - case GL_RGBA2: - case GL_RGBA4: - case GL_RGB5_A1: - case GL_RGBA8: -#if 1 - case GL_RGB10_A2: - case GL_RGBA12: -#endif - rb->Format = MESA_FORMAT_RGBA8888; + + case MESA_FORMAT_RGBA8888: rb->DataType = GL_UNSIGNED_BYTE; - rb->GetPointer = get_pointer_ubyte4; - rb->GetRow = get_row_ubyte4; rb->GetValues = get_values_ubyte4; rb->PutRow = put_row_ubyte4; rb->PutRowRGB = put_row_rgb_ubyte4; rb->PutMonoRow = put_mono_row_ubyte4; rb->PutValues = put_values_ubyte4; rb->PutMonoValues = put_mono_values_ubyte4; - pixelSize = 4 * sizeof(GLubyte); break; - case GL_RGBA16: - case GL_RGBA16_SNORM: - /* for accum buffer */ - rb->Format = MESA_FORMAT_SIGNED_RGBA_16; + + case MESA_FORMAT_R8: + rb->DataType = GL_UNSIGNED_BYTE; + rb->GetValues = get_values_r8; + rb->GetRow = get_row_r8; + rb->PutRow = put_row_generic; + rb->PutRowRGB = put_row_generic; + rb->PutMonoRow = put_mono_row_generic; + rb->PutValues = put_values_generic; + rb->PutMonoValues = put_mono_values_generic; + break; + + case MESA_FORMAT_RG88: + rb->DataType = GL_UNSIGNED_BYTE; + rb->GetValues = get_values_rg88; + rb->GetRow = get_row_rg88; + rb->PutRow = put_row_generic; + rb->PutRowRGB = put_row_generic; + rb->PutMonoRow = put_mono_row_generic; + rb->PutValues = put_values_generic; + rb->PutMonoValues = put_mono_values_generic; + break; + + case MESA_FORMAT_R16: + rb->DataType = GL_UNSIGNED_SHORT; + rb->GetValues = get_values_r16; + rb->GetRow = get_row_r16; + rb->PutRow = put_row_generic; + rb->PutRowRGB = put_row_generic; + rb->PutMonoRow = put_mono_row_generic; + rb->PutValues = put_values_generic; + rb->PutMonoValues = put_mono_values_generic; + break; + + case MESA_FORMAT_RG1616: + rb->DataType = GL_UNSIGNED_SHORT; + rb->GetValues = get_values_rg1616; + rb->GetRow = get_row_rg1616; + rb->PutRow = put_row_generic; + rb->PutRowRGB = put_row_generic; + rb->PutMonoRow = put_mono_row_generic; + rb->PutValues = put_values_generic; + rb->PutMonoValues = put_mono_values_generic; + break; + + case MESA_FORMAT_SIGNED_RGBA_16: rb->DataType = GL_SHORT; - rb->GetPointer = get_pointer_ushort4; - rb->GetRow = get_row_ushort4; rb->GetValues = get_values_ushort4; rb->PutRow = put_row_ushort4; rb->PutRowRGB = put_row_rgb_ushort4; rb->PutMonoRow = put_mono_row_ushort4; rb->PutValues = put_values_ushort4; rb->PutMonoValues = put_mono_values_ushort4; - pixelSize = 4 * sizeof(GLushort); break; + #if 0 - case GL_ALPHA8: - rb->Format = MESA_FORMAT_A8; + case MESA_FORMAT_A8: rb->DataType = GL_UNSIGNED_BYTE; - rb->GetPointer = get_pointer_alpha8; - rb->GetRow = get_row_alpha8; rb->GetValues = get_values_alpha8; rb->PutRow = put_row_alpha8; rb->PutRowRGB = NULL; rb->PutMonoRow = put_mono_row_alpha8; rb->PutValues = put_values_alpha8; rb->PutMonoValues = put_mono_values_alpha8; - pixelSize = sizeof(GLubyte); break; #endif - case GL_STENCIL_INDEX: - case GL_STENCIL_INDEX1_EXT: - case GL_STENCIL_INDEX4_EXT: - case GL_STENCIL_INDEX8_EXT: - case GL_STENCIL_INDEX16_EXT: - rb->Format = MESA_FORMAT_S8; + + case MESA_FORMAT_S8: rb->DataType = GL_UNSIGNED_BYTE; - rb->GetPointer = get_pointer_ubyte; - rb->GetRow = get_row_ubyte; rb->GetValues = get_values_ubyte; rb->PutRow = put_row_ubyte; rb->PutRowRGB = NULL; rb->PutMonoRow = put_mono_row_ubyte; rb->PutValues = put_values_ubyte; rb->PutMonoValues = put_mono_values_ubyte; - pixelSize = sizeof(GLubyte); break; - case GL_DEPTH_COMPONENT: - case GL_DEPTH_COMPONENT16: - rb->Format = MESA_FORMAT_Z16; + + case MESA_FORMAT_Z16: rb->DataType = GL_UNSIGNED_SHORT; - rb->GetPointer = get_pointer_ushort; - rb->GetRow = get_row_ushort; rb->GetValues = get_values_ushort; rb->PutRow = put_row_ushort; rb->PutRowRGB = NULL; rb->PutMonoRow = put_mono_row_ushort; rb->PutValues = put_values_ushort; rb->PutMonoValues = put_mono_values_ushort; - pixelSize = sizeof(GLushort); break; - case GL_DEPTH_COMPONENT24: + + case MESA_FORMAT_Z32: + case MESA_FORMAT_X8_Z24: + case MESA_FORMAT_Z24_X8: rb->DataType = GL_UNSIGNED_INT; - rb->GetPointer = get_pointer_uint; - rb->GetRow = get_row_uint; rb->GetValues = get_values_uint; rb->PutRow = put_row_uint; rb->PutRowRGB = NULL; rb->PutMonoRow = put_mono_row_uint; rb->PutValues = put_values_uint; rb->PutMonoValues = put_mono_values_uint; - rb->Format = MESA_FORMAT_X8_Z24; - pixelSize = sizeof(GLuint); break; - case GL_DEPTH_COMPONENT32: - rb->DataType = GL_UNSIGNED_INT; - rb->GetPointer = get_pointer_uint; - rb->GetRow = get_row_uint; + + case MESA_FORMAT_Z24_S8: + case MESA_FORMAT_S8_Z24: + rb->DataType = GL_UNSIGNED_INT_24_8_EXT; rb->GetValues = get_values_uint; rb->PutRow = put_row_uint; rb->PutRowRGB = NULL; rb->PutMonoRow = put_mono_row_uint; rb->PutValues = put_values_uint; rb->PutMonoValues = put_mono_values_uint; + break; + + case MESA_FORMAT_RGBA_FLOAT32: + rb->GetRow = get_row_generic; + rb->GetValues = get_values_generic; + rb->PutRow = put_row_generic; + rb->PutRowRGB = NULL; + rb->PutMonoRow = put_mono_row_generic; + rb->PutValues = put_values_generic; + rb->PutMonoValues = put_mono_values_generic; + break; + + case MESA_FORMAT_INTENSITY_FLOAT32: + rb->GetRow = get_row_i_float32; + rb->GetValues = get_values_i_float32; + rb->PutRow = put_row_generic; + rb->PutRowRGB = NULL; + rb->PutMonoRow = put_mono_row_generic; + rb->PutValues = put_values_generic; + rb->PutMonoValues = put_mono_values_generic; + break; + + case MESA_FORMAT_LUMINANCE_FLOAT32: + rb->GetRow = get_row_l_float32; + rb->GetValues = get_values_l_float32; + rb->PutRow = put_row_generic; + rb->PutRowRGB = NULL; + rb->PutMonoRow = put_mono_row_generic; + rb->PutValues = put_values_generic; + rb->PutMonoValues = put_mono_values_generic; + break; + + case MESA_FORMAT_ALPHA_FLOAT32: + rb->GetRow = get_row_a_float32; + rb->GetValues = get_values_a_float32; + rb->PutRow = put_row_a_float32; + rb->PutRowRGB = NULL; + rb->PutMonoRow = put_mono_row_a_float32; + rb->PutValues = put_values_a_float32; + rb->PutMonoValues = put_mono_values_a_float32; + break; + + case MESA_FORMAT_RG_FLOAT32: + rb->GetRow = get_row_rg_float32; + rb->GetValues = get_values_rg_float32; + rb->PutRow = put_row_generic; + rb->PutRowRGB = NULL; + rb->PutMonoRow = put_mono_row_generic; + rb->PutValues = put_values_generic; + rb->PutMonoValues = put_mono_values_generic; + break; + + case MESA_FORMAT_R_FLOAT32: + rb->GetRow = get_row_r_float32; + rb->GetValues = get_values_r_float32; + rb->PutRow = put_row_generic; + rb->PutRowRGB = NULL; + rb->PutMonoRow = put_mono_row_generic; + rb->PutValues = put_values_generic; + rb->PutMonoValues = put_mono_values_generic; + break; + + default: + break; + } +} + +/** + * This is a software fallback for the gl_renderbuffer->AllocStorage + * function. + * Device drivers will typically override this function for the buffers + * which it manages (typically color buffers, Z and stencil). + * Other buffers (like software accumulation and aux buffers) which the driver + * doesn't manage can be handled with this function. + * + * This one multi-purpose function can allocate stencil, depth, accum, color + * or color-index buffers! + * + * This function also plugs in the appropriate GetPointer, Get/PutRow and + * Get/PutValues functions. + */ +GLboolean +_mesa_soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLenum internalFormat, + GLuint width, GLuint height) +{ + switch (internalFormat) { + case GL_RGB: + case GL_R3_G3_B2: + case GL_RGB4: + case GL_RGB5: + case GL_RGB8: + case GL_RGB10: + case GL_RGB12: + case GL_RGB16: + rb->Format = MESA_FORMAT_RGB888; + break; + case GL_RGBA: + case GL_RGBA2: + case GL_RGBA4: + case GL_RGB5_A1: + case GL_RGBA8: +#if 1 + case GL_RGB10_A2: + case GL_RGBA12: +#endif + rb->Format = MESA_FORMAT_RGBA8888; + break; + case GL_RGBA16: + case GL_RGBA16_SNORM: + /* for accum buffer */ + rb->Format = MESA_FORMAT_SIGNED_RGBA_16; + break; +#if 0 + case GL_ALPHA8: + rb->Format = MESA_FORMAT_A8; + break; +#endif + case GL_STENCIL_INDEX: + case GL_STENCIL_INDEX1_EXT: + case GL_STENCIL_INDEX4_EXT: + case GL_STENCIL_INDEX8_EXT: + case GL_STENCIL_INDEX16_EXT: + rb->Format = MESA_FORMAT_S8; + break; + case GL_DEPTH_COMPONENT: + case GL_DEPTH_COMPONENT16: + rb->Format = MESA_FORMAT_Z16; + break; + case GL_DEPTH_COMPONENT24: + rb->Format = MESA_FORMAT_X8_Z24; + break; + case GL_DEPTH_COMPONENT32: rb->Format = MESA_FORMAT_Z32; - pixelSize = sizeof(GLuint); break; case GL_DEPTH_STENCIL_EXT: case GL_DEPTH24_STENCIL8_EXT: rb->Format = MESA_FORMAT_Z24_S8; - rb->DataType = GL_UNSIGNED_INT_24_8_EXT; - rb->GetPointer = get_pointer_uint; - rb->GetRow = get_row_uint; - rb->GetValues = get_values_uint; - rb->PutRow = put_row_uint; - rb->PutRowRGB = NULL; - rb->PutMonoRow = put_mono_row_uint; - rb->PutValues = put_values_uint; - rb->PutMonoValues = put_mono_values_uint; - pixelSize = sizeof(GLuint); break; default: /* unsupported format */ return GL_FALSE; } + _mesa_set_renderbuffer_accessors(rb); + ASSERT(rb->DataType); ASSERT(rb->GetPointer); ASSERT(rb->GetRow); @@ -1105,16 +1674,19 @@ _mesa_soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer * rb->Data = NULL; } + rb->RowStride = width; + if (width > 0 && height > 0) { /* allocate new buffer storage */ - rb->Data = malloc(width * height * pixelSize); + rb->Data = malloc(width * height * _mesa_get_format_bytes(rb->Format)); if (rb->Data == NULL) { rb->Width = 0; rb->Height = 0; + rb->RowStride = 0; _mesa_error(ctx, GL_OUT_OF_MEMORY, "software renderbuffer allocation (%d x %d x %d)", - width, height, pixelSize); + width, height, _mesa_get_format_bytes(rb->Format)); return GL_FALSE; } } @@ -1122,7 +1694,20 @@ _mesa_soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer * rb->Width = width; rb->Height = height; rb->_BaseFormat = _mesa_base_fbo_format(ctx, internalFormat); - ASSERT(rb->_BaseFormat); + + if (rb->Name == 0 && + internalFormat == GL_RGBA16_SNORM && + rb->_BaseFormat == 0) { + /* NOTE: This is a special case just for accumulation buffers. + * This is a very limited use case- there's no snorm texturing or + * rendering going on. + */ + rb->_BaseFormat = GL_RGBA; + } + else { + /* the internalFormat should have been error checked long ago */ + ASSERT(rb->_BaseFormat); + } return GL_TRUE; } @@ -1172,6 +1757,7 @@ alloc_storage_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, arb->Width = width; arb->Height = height; + arb->RowStride = width; return GL_TRUE; } @@ -1207,7 +1793,7 @@ get_row_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint count GLint x, GLint y, void *values) { /* NOTE: 'values' is RGBA format! */ - const GLubyte *src = (const GLubyte *) arb->Data + y * arb->Width + x; + const GLubyte *src = (const GLubyte *) arb->Data + y * arb->RowStride + x; GLubyte *dst = (GLubyte *) values; GLuint i; ASSERT(arb != arb->Wrapped); @@ -1233,7 +1819,7 @@ get_values_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint co arb->Wrapped->GetValues(ctx, arb->Wrapped, count, x, y, values); /* second, fill in alpha values from this buffer! */ for (i = 0; i < count; i++) { - const GLubyte *src = (GLubyte *) arb->Data + y[i] * arb->Width + x[i]; + const GLubyte *src = (GLubyte *) arb->Data + y[i] * arb->RowStride + x[i]; dst[i * 4 + 3] = *src; } } @@ -1244,7 +1830,7 @@ put_row_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint count GLint x, GLint y, const void *values, const GLubyte *mask) { const GLubyte *src = (const GLubyte *) values; - GLubyte *dst = (GLubyte *) arb->Data + y * arb->Width + x; + GLubyte *dst = (GLubyte *) arb->Data + y * arb->RowStride + x; GLuint i; ASSERT(arb != arb->Wrapped); ASSERT(arb->DataType == GL_UNSIGNED_BYTE); @@ -1264,7 +1850,7 @@ put_row_rgb_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint c GLint x, GLint y, const void *values, const GLubyte *mask) { const GLubyte *src = (const GLubyte *) values; - GLubyte *dst = (GLubyte *) arb->Data + y * arb->Width + x; + GLubyte *dst = (GLubyte *) arb->Data + y * arb->RowStride + x; GLuint i; ASSERT(arb != arb->Wrapped); ASSERT(arb->DataType == GL_UNSIGNED_BYTE); @@ -1284,7 +1870,7 @@ put_mono_row_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint GLint x, GLint y, const void *value, const GLubyte *mask) { const GLubyte val = ((const GLubyte *) value)[3]; - GLubyte *dst = (GLubyte *) arb->Data + y * arb->Width + x; + GLubyte *dst = (GLubyte *) arb->Data + y * arb->RowStride + x; ASSERT(arb != arb->Wrapped); ASSERT(arb->DataType == GL_UNSIGNED_BYTE); /* first, pass the call to the wrapped RGB buffer */ @@ -1318,7 +1904,7 @@ put_values_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint co /* second, store alpha in our buffer */ for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLubyte *dst = (GLubyte *) arb->Data + y[i] * arb->Width + x[i]; + GLubyte *dst = (GLubyte *) arb->Data + y[i] * arb->RowStride + x[i]; *dst = src[i * 4 + 3]; } } @@ -1339,7 +1925,7 @@ put_mono_values_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, /* second, store alpha in our buffer */ for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLubyte *dst = (GLubyte *) arb->Data + y[i] * arb->Width + x[i]; + GLubyte *dst = (GLubyte *) arb->Data + y[i] * arb->RowStride + x[i]; *dst = val; } } @@ -1353,8 +1939,9 @@ copy_buffer_alpha8(struct gl_renderbuffer* dst, struct gl_renderbuffer* src) ASSERT(src->Format == MESA_FORMAT_A8); ASSERT(dst->Width == src->Width); ASSERT(dst->Height == src->Height); + ASSERT(dst->RowStride == src->RowStride); - memcpy(dst->Data, src->Data, dst->Width * dst->Height * sizeof(GLubyte)); + memcpy(dst->Data, src->Data, dst->RowStride * dst->Height * sizeof(GLubyte)); } @@ -1382,7 +1969,6 @@ _mesa_init_renderbuffer(struct gl_renderbuffer *rb, GLuint name) { _glthread_INIT_MUTEX(rb->Mutex); - rb->Magic = RB_MAGIC; rb->ClassID = 0; rb->Name = name; rb->RefCount = 0; @@ -1957,9 +2543,7 @@ _mesa_reference_renderbuffer(struct gl_renderbuffer **ptr, GLboolean deleteFlag = GL_FALSE; struct gl_renderbuffer *oldRb = *ptr; - assert(oldRb->Magic == RB_MAGIC); _glthread_LOCK_MUTEX(oldRb->Mutex); - assert(oldRb->Magic == RB_MAGIC); ASSERT(oldRb->RefCount > 0); oldRb->RefCount--; /*printf("RB DECR %p (%d) to %d\n", (void*) oldRb, oldRb->Name, oldRb->RefCount);*/ @@ -1967,7 +2551,6 @@ _mesa_reference_renderbuffer(struct gl_renderbuffer **ptr, _glthread_UNLOCK_MUTEX(oldRb->Mutex); if (deleteFlag) { - oldRb->Magic = 0; /* now invalid memory! */ oldRb->Delete(oldRb); } @@ -1976,7 +2559,6 @@ _mesa_reference_renderbuffer(struct gl_renderbuffer **ptr, assert(!*ptr); if (rb) { - assert(rb->Magic == RB_MAGIC); /* reference new renderbuffer */ _glthread_LOCK_MUTEX(rb->Mutex); rb->RefCount++; diff --git a/src/mesa/main/renderbuffer.h b/src/mesa/main/renderbuffer.h index 4702a8e952a..39d9b3035e6 100644 --- a/src/mesa/main/renderbuffer.h +++ b/src/mesa/main/renderbuffer.h @@ -46,6 +46,8 @@ _mesa_delete_renderbuffer(struct gl_renderbuffer *rb); extern struct gl_renderbuffer * _mesa_new_soft_renderbuffer(struct gl_context *ctx, GLuint name); +extern void +_mesa_set_renderbuffer_accessors(struct gl_renderbuffer *rb); extern GLboolean _mesa_soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, diff --git a/src/mesa/main/samplerobj.c b/src/mesa/main/samplerobj.c new file mode 100644 index 00000000000..4a28c917cd7 --- /dev/null +++ b/src/mesa/main/samplerobj.c @@ -0,0 +1,1355 @@ +/* + * Mesa 3-D graphics library + * + * Copyright (C) 2011 VMware, Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +/** + * \file samplerobj.c + * \brief Functions for the GL_ARB_sampler_objects extension. + * \author Brian Paul + */ + + +#include "main/glheader.h" +#include "main/context.h" +#include "main/dispatch.h" +#include "main/enums.h" +#include "main/hash.h" +#include "main/macros.h" +#include "main/mfeatures.h" +#include "main/mtypes.h" +#include "main/samplerobj.h" + + +static struct gl_sampler_object * +_mesa_lookup_samplerobj(struct gl_context *ctx, GLuint name) +{ + if (name == 0) + return NULL; + else + return (struct gl_sampler_object *) + _mesa_HashLookup(ctx->Shared->SamplerObjects, name); +} + + +/** + * Handle reference counting. + */ +void +_mesa_reference_sampler_object(struct gl_context *ctx, + struct gl_sampler_object **ptr, + struct gl_sampler_object *samp) +{ + if (*ptr == samp) + return; + + if (*ptr) { + /* Unreference the old sampler */ + GLboolean deleteFlag = GL_FALSE; + struct gl_sampler_object *oldSamp = *ptr; + + /*_glthread_LOCK_MUTEX(oldSamp->Mutex);*/ + ASSERT(oldSamp->RefCount > 0); + oldSamp->RefCount--; +#if 0 + printf("SamplerObj %p %d DECR to %d\n", + (void *) oldSamp, oldSamp->Name, oldSamp->RefCount); +#endif + deleteFlag = (oldSamp->RefCount == 0); + /*_glthread_UNLOCK_MUTEX(oldSamp->Mutex);*/ + + if (deleteFlag) { + ASSERT(ctx->Driver.DeleteSamplerObject); + ctx->Driver.DeleteSamplerObject(ctx, oldSamp); + } + + *ptr = NULL; + } + ASSERT(!*ptr); + + if (samp) { + /* reference new sampler */ + /*_glthread_LOCK_MUTEX(samp->Mutex);*/ + if (samp->RefCount == 0) { + /* this sampler's being deleted (look just above) */ + /* Not sure this can every really happen. Warn if it does. */ + _mesa_problem(NULL, "referencing deleted sampler object"); + *ptr = NULL; + } + else { + samp->RefCount++; +#if 0 + printf("SamplerObj %p %d INCR to %d\n", + (void *) samp, samp->Name, samp->RefCount); +#endif + *ptr = samp; + } + /*_glthread_UNLOCK_MUTEX(samp->Mutex);*/ + } +} + + +/** + * Initialize the fields of the given sampler object. + */ +void +_mesa_init_sampler_object(struct gl_sampler_object *sampObj, GLuint name) +{ + sampObj->Name = name; + sampObj->RefCount = 1; + sampObj->WrapS = GL_REPEAT; + sampObj->WrapT = GL_REPEAT; + sampObj->WrapR = GL_REPEAT; + sampObj->MinFilter = GL_NEAREST_MIPMAP_LINEAR; + sampObj->MagFilter = GL_LINEAR; + sampObj->BorderColor.f[0] = 0.0; + sampObj->BorderColor.f[1] = 0.0; + sampObj->BorderColor.f[2] = 0.0; + sampObj->BorderColor.f[3] = 0.0; + sampObj->MinLod = -1000.0F; + sampObj->MaxLod = 1000.0F; + sampObj->LodBias = 0.0F; + sampObj->MaxAnisotropy = 1.0F; + sampObj->CompareMode = GL_NONE; + sampObj->CompareFunc = GL_LEQUAL; + sampObj->CompareFailValue = 0.0; + sampObj->sRGBDecode = GL_FALSE; + sampObj->DepthMode = 0; +} + + +/** + * Fallback for ctx->Driver.NewSamplerObject(); + */ +struct gl_sampler_object * +_mesa_new_sampler_object(struct gl_context *ctx, GLuint name) +{ + struct gl_sampler_object *sampObj = CALLOC_STRUCT(gl_sampler_object); + if (sampObj) { + _mesa_init_sampler_object(sampObj, name); + } + return sampObj; +} + + +/** + * Fallback for ctx->Driver.DeleteSamplerObject(); + */ +void +_mesa_delete_sampler_object(struct gl_context *ctx, + struct gl_sampler_object *sampObj) +{ + FREE(sampObj); +} + + +static void GLAPIENTRY +_mesa_GenSamplers(GLsizei count, GLuint *samplers) +{ + GET_CURRENT_CONTEXT(ctx); + GLuint first; + GLint i; + + ASSERT_OUTSIDE_BEGIN_END(ctx); + + if (MESA_VERBOSE & VERBOSE_API) + _mesa_debug(ctx, "glGenSamplers(%d)\n", count); + + if (count < 0) { + _mesa_error(ctx, GL_INVALID_VALUE, "glGenSamplers"); + return; + } + + if (!samplers) + return; + + first = _mesa_HashFindFreeKeyBlock(ctx->Shared->SamplerObjects, count); + + /* Insert the ID and pointer to new sampler object into hash table */ + for (i = 0; i < count; i++) { + struct gl_sampler_object *sampObj = + ctx->Driver.NewSamplerObject(ctx, first + i); + _mesa_HashInsert(ctx->Shared->SamplerObjects, first + i, sampObj); + samplers[i] = first + i; + } +} + + +static void GLAPIENTRY +_mesa_DeleteSamplers(GLsizei count, const GLuint *samplers) +{ + GET_CURRENT_CONTEXT(ctx); + GLsizei i; + + ASSERT_OUTSIDE_BEGIN_END(ctx); + FLUSH_VERTICES(ctx, 0); + + if (count < 0) { + _mesa_error(ctx, GL_INVALID_VALUE, "glDeleteSamplers(count)"); + return; + } + + _glthread_LOCK_MUTEX(ctx->Shared->Mutex); + + for (i = 0; i < count; i++) { + if (samplers[i]) { + struct gl_sampler_object *sampObj = + _mesa_lookup_samplerobj(ctx, samplers[i]); + if (sampObj) { + /* The ID is immediately freed for re-use */ + _mesa_HashRemove(ctx->Shared->SamplerObjects, samplers[i]); + /* But the object exists until its reference count goes to zero */ + _mesa_reference_sampler_object(ctx, &sampObj, NULL); + } + } + } + + _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); +} + + +static GLboolean GLAPIENTRY +_mesa_IsSampler(GLuint sampler) +{ + struct gl_sampler_object *sampObj; + GET_CURRENT_CONTEXT(ctx); + + ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE); + + if (sampler == 0) + return GL_FALSE; + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + + return sampObj != NULL; +} + + +static void GLAPIENTRY +_mesa_BindSampler(GLuint unit, GLuint sampler) +{ + struct gl_sampler_object *sampObj; + GET_CURRENT_CONTEXT(ctx); + + if (unit >= ctx->Const.MaxTextureImageUnits) { + _mesa_error(ctx, GL_INVALID_VALUE, "glBindSampler(unit %u)", unit); + return; + } + + if (sampler == 0) { + /* Use the default sampler object, the one contained in the texture + * object. + */ + sampObj = NULL; + } + else { + /* user-defined sampler object */ + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_OPERATION, "glBindSampler(sampler)"); + return; + } + } + + if (ctx->Texture.Unit[unit].Sampler != sampObj) { + FLUSH_VERTICES(ctx, _NEW_TEXTURE); + } + + /* bind new sampler */ + _mesa_reference_sampler_object(ctx, &ctx->Texture.Unit[unit].Sampler, + sampObj); +} + + +/** + * Check if a coordinate wrap mode is legal. + * \return GL_TRUE if legal, GL_FALSE otherwise + */ +static GLboolean +validate_texture_wrap_mode(struct gl_context *ctx, GLenum wrap) +{ + const struct gl_extensions * const e = &ctx->Extensions; + + switch (wrap) { + case GL_CLAMP: + case GL_CLAMP_TO_EDGE: + case GL_REPEAT: + return GL_TRUE; + case GL_CLAMP_TO_BORDER: + return e->ARB_texture_border_clamp; + case GL_MIRRORED_REPEAT: + return e->ARB_texture_mirrored_repeat; + case GL_MIRROR_CLAMP_EXT: + return e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp; + case GL_MIRROR_CLAMP_TO_EDGE_EXT: + return e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp; + case GL_MIRROR_CLAMP_TO_BORDER_EXT: + return e->EXT_texture_mirror_clamp; + default: + return GL_FALSE; + } +} + + +/** + * This is called just prior to changing any sampler object state. + */ +static INLINE void +flush(struct gl_context *ctx) +{ + FLUSH_VERTICES(ctx, _NEW_TEXTURE); +} + + +#define INVALID_PARAM 0x100 +#define INVALID_PNAME 0x101 +#define INVALID_VALUE 0x102 + +static GLuint +set_sampler_wrap_s(struct gl_context *ctx, struct gl_sampler_object *samp, + GLint param) +{ + if (samp->WrapS == param) + return GL_FALSE; + if (validate_texture_wrap_mode(ctx, param)) { + flush(ctx); + samp->WrapS = param; + return GL_TRUE; + } + return INVALID_PARAM; +} + + +static GLuint +set_sampler_wrap_t(struct gl_context *ctx, struct gl_sampler_object *samp, + GLint param) +{ + if (samp->WrapT == param) + return GL_FALSE; + if (validate_texture_wrap_mode(ctx, param)) { + flush(ctx); + samp->WrapT = param; + return GL_TRUE; + } + return INVALID_PARAM; +} + + +static GLuint +set_sampler_wrap_r(struct gl_context *ctx, struct gl_sampler_object *samp, + GLint param) +{ + if (samp->WrapR == param) + return GL_FALSE; + if (validate_texture_wrap_mode(ctx, param)) { + flush(ctx); + samp->WrapR = param; + return GL_TRUE; + } + return INVALID_PARAM; +} + + +static GLuint +set_sampler_min_filter(struct gl_context *ctx, struct gl_sampler_object *samp, + GLint param) +{ + if (samp->MinFilter == param) + return GL_FALSE; + + switch (param) { + case GL_NEAREST: + case GL_LINEAR: + case GL_NEAREST_MIPMAP_NEAREST: + case GL_LINEAR_MIPMAP_NEAREST: + case GL_NEAREST_MIPMAP_LINEAR: + case GL_LINEAR_MIPMAP_LINEAR: + flush(ctx); + samp->MinFilter = param; + return GL_TRUE; + default: + return INVALID_PARAM; + } +} + + +static GLuint +set_sampler_mag_filter(struct gl_context *ctx, struct gl_sampler_object *samp, + GLint param) +{ + if (samp->MagFilter == param) + return GL_FALSE; + + switch (param) { + case GL_NEAREST: + case GL_LINEAR: + flush(ctx); + samp->MagFilter = param; + return GL_TRUE; + default: + return INVALID_PARAM; + } +} + + +static GLuint +set_sampler_lod_bias(struct gl_context *ctx, struct gl_sampler_object *samp, + GLfloat param) +{ + if (samp->LodBias == param) + return GL_FALSE; + + flush(ctx); + samp->LodBias = param; + return GL_TRUE; +} + + +static GLuint +set_sampler_border_colorf(struct gl_context *ctx, + struct gl_sampler_object *samp, + const GLfloat params[4]) +{ + flush(ctx); + samp->BorderColor.f[RCOMP] = params[0]; + samp->BorderColor.f[GCOMP] = params[1]; + samp->BorderColor.f[BCOMP] = params[2]; + samp->BorderColor.f[ACOMP] = params[3]; + return GL_TRUE; +} + + +static GLuint +set_sampler_border_colori(struct gl_context *ctx, + struct gl_sampler_object *samp, + const GLint params[4]) +{ + flush(ctx); + samp->BorderColor.i[RCOMP] = params[0]; + samp->BorderColor.i[GCOMP] = params[1]; + samp->BorderColor.i[BCOMP] = params[2]; + samp->BorderColor.i[ACOMP] = params[3]; + return GL_TRUE; +} + + +static GLuint +set_sampler_border_colorui(struct gl_context *ctx, + struct gl_sampler_object *samp, + const GLuint params[4]) +{ + flush(ctx); + samp->BorderColor.ui[RCOMP] = params[0]; + samp->BorderColor.ui[GCOMP] = params[1]; + samp->BorderColor.ui[BCOMP] = params[2]; + samp->BorderColor.ui[ACOMP] = params[3]; + return GL_TRUE; +} + + +static GLuint +set_sampler_min_lod(struct gl_context *ctx, struct gl_sampler_object *samp, + GLfloat param) +{ + if (samp->MinLod == param) + return GL_FALSE; + + flush(ctx); + samp->MinLod = param; + return GL_TRUE; +} + + +static GLuint +set_sampler_max_lod(struct gl_context *ctx, struct gl_sampler_object *samp, + GLfloat param) +{ + if (samp->MaxLod == param) + return GL_FALSE; + + flush(ctx); + samp->MaxLod = param; + return GL_TRUE; +} + + +static GLuint +set_sampler_compare_mode(struct gl_context *ctx, + struct gl_sampler_object *samp, GLint param) +{ + if (!ctx->Extensions.ARB_shadow) + return INVALID_PNAME; + + if (samp->CompareMode == param) + return GL_FALSE; + + if (param == GL_NONE || + param == GL_COMPARE_R_TO_TEXTURE_ARB) { + flush(ctx); + samp->CompareMode = param; + return GL_TRUE; + } + + return INVALID_PARAM; +} + + +static GLuint +set_sampler_compare_func(struct gl_context *ctx, + struct gl_sampler_object *samp, GLint param) +{ + if (!ctx->Extensions.ARB_shadow) + return INVALID_PNAME; + + if (samp->CompareFunc == param) + return GL_FALSE; + + switch (param) { + case GL_LEQUAL: + case GL_GEQUAL: + flush(ctx); + samp->CompareFunc = param; + return GL_TRUE; + case GL_EQUAL: + case GL_NOTEQUAL: + case GL_LESS: + case GL_GREATER: + case GL_ALWAYS: + case GL_NEVER: + if (ctx->Extensions.EXT_shadow_funcs) { + flush(ctx); + samp->CompareFunc = param; + return GL_TRUE; + } + /* fall-through */ + default: + return INVALID_PARAM; + } +} + + +static GLuint +set_sampler_max_anisotropy(struct gl_context *ctx, + struct gl_sampler_object *samp, GLfloat param) +{ + if (!ctx->Extensions.EXT_texture_filter_anisotropic) + return INVALID_PNAME; + + if (samp->MaxAnisotropy == param) + return GL_FALSE; + + if (param < 1.0) + return INVALID_VALUE; + + flush(ctx); + /* clamp to max, that's what NVIDIA does */ + samp->MaxAnisotropy = MIN2(param, ctx->Const.MaxTextureMaxAnisotropy); + return GL_TRUE; +} + + +static void GLAPIENTRY +_mesa_SamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + struct gl_sampler_object *sampObj; + GLuint res; + GET_CURRENT_CONTEXT(ctx); + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameteri(sampler %u)", + sampler); + return; + } + + switch (pname) { + case GL_TEXTURE_WRAP_S: + res = set_sampler_wrap_s(ctx, sampObj, param); + break; + case GL_TEXTURE_WRAP_T: + res = set_sampler_wrap_t(ctx, sampObj, param); + break; + case GL_TEXTURE_WRAP_R: + res = set_sampler_wrap_r(ctx, sampObj, param); + break; + case GL_TEXTURE_MIN_FILTER: + res = set_sampler_min_filter(ctx, sampObj, param); + break; + case GL_TEXTURE_MAG_FILTER: + res = set_sampler_mag_filter(ctx, sampObj, param); + break; + case GL_TEXTURE_MIN_LOD: + res = set_sampler_min_lod(ctx, sampObj, (GLfloat) param); + break; + case GL_TEXTURE_MAX_LOD: + res = set_sampler_max_lod(ctx, sampObj, (GLfloat) param); + break; + case GL_TEXTURE_LOD_BIAS: + res = set_sampler_lod_bias(ctx, sampObj, (GLfloat) param); + break; + case GL_TEXTURE_COMPARE_MODE: + res = set_sampler_compare_mode(ctx, sampObj, param); + break; + case GL_TEXTURE_COMPARE_FUNC: + res = set_sampler_compare_func(ctx, sampObj, param); + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) param); + break; + case GL_TEXTURE_BORDER_COLOR: + /* fall-through */ + default: + res = INVALID_PNAME; + } + + switch (res) { + case GL_FALSE: + /* no change */ + break; + case GL_TRUE: + /* state change - we do nothing special at this time */ + break; + case INVALID_PNAME: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameteri(pname=%s)\n", + _mesa_lookup_enum_by_nr(pname)); + break; + case INVALID_PARAM: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameteri(param=%d)\n", + param); + break; + case INVALID_VALUE: + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameteri(param=%d)\n", + param); + break; + default: + ; + } +} + + +static void GLAPIENTRY +_mesa_SamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + struct gl_sampler_object *sampObj; + GLuint res; + GET_CURRENT_CONTEXT(ctx); + + ASSERT_OUTSIDE_BEGIN_END(ctx); + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterf(sampler %u)", + sampler); + return; + } + + switch (pname) { + case GL_TEXTURE_WRAP_S: + res = set_sampler_wrap_s(ctx, sampObj, (GLint) param); + break; + case GL_TEXTURE_WRAP_T: + res = set_sampler_wrap_t(ctx, sampObj, (GLint) param); + break; + case GL_TEXTURE_WRAP_R: + res = set_sampler_wrap_r(ctx, sampObj, (GLint) param); + break; + case GL_TEXTURE_MIN_FILTER: + res = set_sampler_min_filter(ctx, sampObj, (GLint) param); + break; + case GL_TEXTURE_MAG_FILTER: + res = set_sampler_mag_filter(ctx, sampObj, (GLint) param); + break; + case GL_TEXTURE_MIN_LOD: + res = set_sampler_min_lod(ctx, sampObj, param); + break; + case GL_TEXTURE_MAX_LOD: + res = set_sampler_max_lod(ctx, sampObj, param); + break; + case GL_TEXTURE_LOD_BIAS: + res = set_sampler_lod_bias(ctx, sampObj, param); + break; + case GL_TEXTURE_COMPARE_MODE: + res = set_sampler_compare_mode(ctx, sampObj, (GLint) param); + break; + case GL_TEXTURE_COMPARE_FUNC: + res = set_sampler_compare_func(ctx, sampObj, (GLint) param); + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + res = set_sampler_max_anisotropy(ctx, sampObj, param); + break; + case GL_TEXTURE_BORDER_COLOR: + /* fall-through */ + default: + res = INVALID_PNAME; + } + + switch (res) { + case GL_FALSE: + /* no change */ + break; + case GL_TRUE: + /* state change - we do nothing special at this time */ + break; + case INVALID_PNAME: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterf(pname=%s)\n", + _mesa_lookup_enum_by_nr(pname)); + break; + case INVALID_PARAM: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterf(param=%f)\n", + param); + break; + case INVALID_VALUE: + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterf(param=%f)\n", + param); + break; + default: + ; + } +} + +static void GLAPIENTRY +_mesa_SamplerParameteriv(GLuint sampler, GLenum pname, const GLint *params) +{ + struct gl_sampler_object *sampObj; + GLuint res; + GET_CURRENT_CONTEXT(ctx); + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameteriv(sampler %u)", + sampler); + return; + } + + switch (pname) { + case GL_TEXTURE_WRAP_S: + res = set_sampler_wrap_s(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_WRAP_T: + res = set_sampler_wrap_t(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_WRAP_R: + res = set_sampler_wrap_r(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MIN_FILTER: + res = set_sampler_min_filter(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MAG_FILTER: + res = set_sampler_mag_filter(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MIN_LOD: + res = set_sampler_min_lod(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_MAX_LOD: + res = set_sampler_max_lod(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_LOD_BIAS: + res = set_sampler_lod_bias(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_COMPARE_MODE: + res = set_sampler_compare_mode(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_COMPARE_FUNC: + res = set_sampler_compare_func(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_BORDER_COLOR: + { + GLfloat c[4]; + c[0] = INT_TO_FLOAT(params[0]); + c[1] = INT_TO_FLOAT(params[1]); + c[2] = INT_TO_FLOAT(params[2]); + c[3] = INT_TO_FLOAT(params[3]); + res = set_sampler_border_colorf(ctx, sampObj, c); + } + break; + default: + res = INVALID_PNAME; + } + + switch (res) { + case GL_FALSE: + /* no change */ + break; + case GL_TRUE: + /* state change - we do nothing special at this time */ + break; + case INVALID_PNAME: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameteriv(pname=%s)\n", + _mesa_lookup_enum_by_nr(pname)); + break; + case INVALID_PARAM: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameteriv(param=%d)\n", + params[0]); + break; + case INVALID_VALUE: + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameteriv(param=%d)\n", + params[0]); + break; + default: + ; + } +} + +static void GLAPIENTRY +_mesa_SamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *params) +{ + struct gl_sampler_object *sampObj; + GLuint res; + GET_CURRENT_CONTEXT(ctx); + + ASSERT_OUTSIDE_BEGIN_END(ctx); + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterfv(sampler %u)", + sampler); + return; + } + + switch (pname) { + case GL_TEXTURE_WRAP_S: + res = set_sampler_wrap_s(ctx, sampObj, (GLint) params[0]); + break; + case GL_TEXTURE_WRAP_T: + res = set_sampler_wrap_t(ctx, sampObj, (GLint) params[0]); + break; + case GL_TEXTURE_WRAP_R: + res = set_sampler_wrap_r(ctx, sampObj, (GLint) params[0]); + break; + case GL_TEXTURE_MIN_FILTER: + res = set_sampler_min_filter(ctx, sampObj, (GLint) params[0]); + break; + case GL_TEXTURE_MAG_FILTER: + res = set_sampler_mag_filter(ctx, sampObj, (GLint) params[0]); + break; + case GL_TEXTURE_MIN_LOD: + res = set_sampler_min_lod(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MAX_LOD: + res = set_sampler_max_lod(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_LOD_BIAS: + res = set_sampler_lod_bias(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_COMPARE_MODE: + res = set_sampler_compare_mode(ctx, sampObj, (GLint) params[0]); + break; + case GL_TEXTURE_COMPARE_FUNC: + res = set_sampler_compare_func(ctx, sampObj, (GLint) params[0]); + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + res = set_sampler_max_anisotropy(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_BORDER_COLOR: + res = set_sampler_border_colorf(ctx, sampObj, params); + break; + default: + res = INVALID_PNAME; + } + + switch (res) { + case GL_FALSE: + /* no change */ + break; + case GL_TRUE: + /* state change - we do nothing special at this time */ + break; + case INVALID_PNAME: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterfv(pname=%s)\n", + _mesa_lookup_enum_by_nr(pname)); + break; + case INVALID_PARAM: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterfv(param=%f)\n", + params[0]); + break; + case INVALID_VALUE: + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterfv(param=%f)\n", + params[0]); + break; + default: + ; + } +} + +static void GLAPIENTRY +_mesa_SamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *params) +{ + struct gl_sampler_object *sampObj; + GLuint res; + GET_CURRENT_CONTEXT(ctx); + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterIiv(sampler %u)", + sampler); + return; + } + + switch (pname) { + case GL_TEXTURE_WRAP_S: + res = set_sampler_wrap_s(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_WRAP_T: + res = set_sampler_wrap_t(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_WRAP_R: + res = set_sampler_wrap_r(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MIN_FILTER: + res = set_sampler_min_filter(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MAG_FILTER: + res = set_sampler_mag_filter(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MIN_LOD: + res = set_sampler_min_lod(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_MAX_LOD: + res = set_sampler_max_lod(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_LOD_BIAS: + res = set_sampler_lod_bias(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_COMPARE_MODE: + res = set_sampler_compare_mode(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_COMPARE_FUNC: + res = set_sampler_compare_func(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_BORDER_COLOR: + res = set_sampler_border_colori(ctx, sampObj, params); + break; + default: + res = INVALID_PNAME; + } + + switch (res) { + case GL_FALSE: + /* no change */ + break; + case GL_TRUE: + /* state change - we do nothing special at this time */ + break; + case INVALID_PNAME: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterIiv(pname=%s)\n", + _mesa_lookup_enum_by_nr(pname)); + break; + case INVALID_PARAM: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterIiv(param=%d)\n", + params[0]); + break; + case INVALID_VALUE: + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterIiv(param=%d)\n", + params[0]); + break; + default: + ; + } +} + + +static void GLAPIENTRY +_mesa_SamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *params) +{ + struct gl_sampler_object *sampObj; + GLuint res; + GET_CURRENT_CONTEXT(ctx); + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterIuiv(sampler %u)", + sampler); + return; + } + + switch (pname) { + case GL_TEXTURE_WRAP_S: + res = set_sampler_wrap_s(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_WRAP_T: + res = set_sampler_wrap_t(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_WRAP_R: + res = set_sampler_wrap_r(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MIN_FILTER: + res = set_sampler_min_filter(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MAG_FILTER: + res = set_sampler_mag_filter(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MIN_LOD: + res = set_sampler_min_lod(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_MAX_LOD: + res = set_sampler_max_lod(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_LOD_BIAS: + res = set_sampler_lod_bias(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_COMPARE_MODE: + res = set_sampler_compare_mode(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_COMPARE_FUNC: + res = set_sampler_compare_func(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_BORDER_COLOR: + res = set_sampler_border_colorui(ctx, sampObj, params); + break; + default: + res = INVALID_PNAME; + } + + switch (res) { + case GL_FALSE: + /* no change */ + break; + case GL_TRUE: + /* state change - we do nothing special at this time */ + break; + case INVALID_PNAME: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterIuiv(pname=%s)\n", + _mesa_lookup_enum_by_nr(pname)); + break; + case INVALID_PARAM: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterIuiv(param=%u)\n", + params[0]); + break; + case INVALID_VALUE: + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterIuiv(param=%u)\n", + params[0]); + break; + default: + ; + } +} + + +static void GLAPIENTRY +_mesa_GetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + struct gl_sampler_object *sampObj; + GET_CURRENT_CONTEXT(ctx); + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_VALUE, "glGetSamplerParameteriv(sampler %u)", + sampler); + return; + } + + switch (pname) { + case GL_TEXTURE_WRAP_S: + *params = sampObj->WrapS; + break; + case GL_TEXTURE_WRAP_T: + *params = sampObj->WrapT; + break; + case GL_TEXTURE_WRAP_R: + *params = sampObj->WrapR; + break; + case GL_TEXTURE_MIN_FILTER: + *params = sampObj->MinFilter; + break; + case GL_TEXTURE_MAG_FILTER: + *params = sampObj->MagFilter; + break; + case GL_TEXTURE_MIN_LOD: + *params = (GLint) sampObj->MinLod; + break; + case GL_TEXTURE_MAX_LOD: + *params = (GLint) sampObj->MaxLod; + break; + case GL_TEXTURE_LOD_BIAS: + *params = (GLint) sampObj->LodBias; + break; + case GL_TEXTURE_COMPARE_MODE: + if (!ctx->Extensions.ARB_shadow) + goto invalid_pname; + *params = sampObj->CompareMode; + break; + case GL_TEXTURE_COMPARE_FUNC: + if (!ctx->Extensions.ARB_shadow) + goto invalid_pname; + *params = sampObj->CompareFunc; + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + *params = (GLint) sampObj->MaxAnisotropy; + break; + case GL_TEXTURE_BORDER_COLOR: + params[0] = FLOAT_TO_INT(sampObj->BorderColor.f[0]); + params[1] = FLOAT_TO_INT(sampObj->BorderColor.f[1]); + params[2] = FLOAT_TO_INT(sampObj->BorderColor.f[2]); + params[3] = FLOAT_TO_INT(sampObj->BorderColor.f[3]); + break; + default: + goto invalid_pname; + } + return; + +invalid_pname: + _mesa_error(ctx, GL_INVALID_ENUM, "glGetSamplerParameteriv(pname=%s)", + _mesa_lookup_enum_by_nr(pname)); +} + + +static void GLAPIENTRY +_mesa_GetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + struct gl_sampler_object *sampObj; + GET_CURRENT_CONTEXT(ctx); + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_VALUE, "glGetSamplerParameterfv(sampler %u)", + sampler); + return; + } + + switch (pname) { + case GL_TEXTURE_WRAP_S: + *params = (GLfloat) sampObj->WrapS; + break; + case GL_TEXTURE_WRAP_T: + *params = (GLfloat) sampObj->WrapT; + break; + case GL_TEXTURE_WRAP_R: + *params = (GLfloat) sampObj->WrapR; + break; + case GL_TEXTURE_MIN_FILTER: + *params = (GLfloat) sampObj->MinFilter; + break; + case GL_TEXTURE_MAG_FILTER: + *params = (GLfloat) sampObj->MagFilter; + break; + case GL_TEXTURE_MIN_LOD: + *params = sampObj->MinLod; + break; + case GL_TEXTURE_MAX_LOD: + *params = sampObj->MaxLod; + break; + case GL_TEXTURE_LOD_BIAS: + *params = sampObj->LodBias; + break; + case GL_TEXTURE_COMPARE_MODE: + if (!ctx->Extensions.ARB_shadow) + goto invalid_pname; + *params = (GLfloat) sampObj->CompareMode; + break; + case GL_TEXTURE_COMPARE_FUNC: + if (!ctx->Extensions.ARB_shadow) + goto invalid_pname; + *params = (GLfloat) sampObj->CompareFunc; + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + *params = sampObj->MaxAnisotropy; + break; + case GL_TEXTURE_BORDER_COLOR: + params[0] = sampObj->BorderColor.f[0]; + params[1] = sampObj->BorderColor.f[1]; + params[2] = sampObj->BorderColor.f[2]; + params[3] = sampObj->BorderColor.f[3]; + break; + default: + goto invalid_pname; + } + return; + +invalid_pname: + _mesa_error(ctx, GL_INVALID_ENUM, "glGetSamplerParameterfv(pname=%s)", + _mesa_lookup_enum_by_nr(pname)); +} + + +static void GLAPIENTRY +_mesa_GetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + struct gl_sampler_object *sampObj; + GET_CURRENT_CONTEXT(ctx); + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glGetSamplerParameterIiv(sampler %u)", + sampler); + return; + } + + switch (pname) { + case GL_TEXTURE_WRAP_S: + *params = sampObj->WrapS; + break; + case GL_TEXTURE_WRAP_T: + *params = sampObj->WrapT; + break; + case GL_TEXTURE_WRAP_R: + *params = sampObj->WrapR; + break; + case GL_TEXTURE_MIN_FILTER: + *params = sampObj->MinFilter; + break; + case GL_TEXTURE_MAG_FILTER: + *params = sampObj->MagFilter; + break; + case GL_TEXTURE_MIN_LOD: + *params = (GLint) sampObj->MinLod; + break; + case GL_TEXTURE_MAX_LOD: + *params = (GLint) sampObj->MaxLod; + break; + case GL_TEXTURE_LOD_BIAS: + *params = (GLint) sampObj->LodBias; + break; + case GL_TEXTURE_COMPARE_MODE: + if (!ctx->Extensions.ARB_shadow) + goto invalid_pname; + *params = sampObj->CompareMode; + break; + case GL_TEXTURE_COMPARE_FUNC: + if (!ctx->Extensions.ARB_shadow) + goto invalid_pname; + *params = sampObj->CompareFunc; + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + *params = (GLint) sampObj->MaxAnisotropy; + break; + case GL_TEXTURE_BORDER_COLOR: + params[0] = sampObj->BorderColor.i[0]; + params[1] = sampObj->BorderColor.i[1]; + params[2] = sampObj->BorderColor.i[2]; + params[3] = sampObj->BorderColor.i[3]; + break; + default: + goto invalid_pname; + } + return; + +invalid_pname: + _mesa_error(ctx, GL_INVALID_ENUM, "glGetSamplerParameterIiv(pname=%s)", + _mesa_lookup_enum_by_nr(pname)); +} + + +static void GLAPIENTRY +_mesa_GetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + struct gl_sampler_object *sampObj; + GET_CURRENT_CONTEXT(ctx); + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glGetSamplerParameterIuiv(sampler %u)", + sampler); + return; + } + + switch (pname) { + case GL_TEXTURE_WRAP_S: + *params = sampObj->WrapS; + break; + case GL_TEXTURE_WRAP_T: + *params = sampObj->WrapT; + break; + case GL_TEXTURE_WRAP_R: + *params = sampObj->WrapR; + break; + case GL_TEXTURE_MIN_FILTER: + *params = sampObj->MinFilter; + break; + case GL_TEXTURE_MAG_FILTER: + *params = sampObj->MagFilter; + break; + case GL_TEXTURE_MIN_LOD: + *params = (GLuint) sampObj->MinLod; + break; + case GL_TEXTURE_MAX_LOD: + *params = (GLuint) sampObj->MaxLod; + break; + case GL_TEXTURE_LOD_BIAS: + *params = (GLuint) sampObj->LodBias; + break; + case GL_TEXTURE_COMPARE_MODE: + if (!ctx->Extensions.ARB_shadow) + goto invalid_pname; + *params = sampObj->CompareMode; + break; + case GL_TEXTURE_COMPARE_FUNC: + if (!ctx->Extensions.ARB_shadow) + goto invalid_pname; + *params = sampObj->CompareFunc; + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + *params = (GLuint) sampObj->MaxAnisotropy; + break; + case GL_TEXTURE_BORDER_COLOR: + params[0] = sampObj->BorderColor.ui[0]; + params[1] = sampObj->BorderColor.ui[1]; + params[2] = sampObj->BorderColor.ui[2]; + params[3] = sampObj->BorderColor.ui[3]; + break; + default: + goto invalid_pname; + } + return; + +invalid_pname: + _mesa_error(ctx, GL_INVALID_ENUM, "glGetSamplerParameterIuiv(pname=%s)", + _mesa_lookup_enum_by_nr(pname)); +} + + +void +_mesa_init_sampler_object_functions(struct dd_function_table *driver) +{ + driver->NewSamplerObject = _mesa_new_sampler_object; + driver->DeleteSamplerObject = _mesa_delete_sampler_object; +} + + +void +_mesa_init_sampler_object_dispatch(struct _glapi_table *disp) +{ + SET_GenSamplers(disp, _mesa_GenSamplers); + SET_DeleteSamplers(disp, _mesa_DeleteSamplers); + SET_IsSampler(disp, _mesa_IsSampler); + SET_BindSampler(disp, _mesa_BindSampler); + SET_SamplerParameteri(disp, _mesa_SamplerParameteri); + SET_SamplerParameterf(disp, _mesa_SamplerParameterf); + SET_SamplerParameteriv(disp, _mesa_SamplerParameteriv); + SET_SamplerParameterfv(disp, _mesa_SamplerParameterfv); + SET_SamplerParameterIiv(disp, _mesa_SamplerParameterIiv); + SET_SamplerParameterIuiv(disp, _mesa_SamplerParameterIuiv); + SET_GetSamplerParameteriv(disp, _mesa_GetSamplerParameteriv); + SET_GetSamplerParameterfv(disp, _mesa_GetSamplerParameterfv); + SET_GetSamplerParameterIiv(disp, _mesa_GetSamplerParameterIiv); + SET_GetSamplerParameterIuiv(disp, _mesa_GetSamplerParameterIuiv); +} diff --git a/src/mesa/main/samplerobj.h b/src/mesa/main/samplerobj.h new file mode 100644 index 00000000000..ed495c3760b --- /dev/null +++ b/src/mesa/main/samplerobj.h @@ -0,0 +1,54 @@ +/* + * Mesa 3-D graphics library + * + * Copyright (C) 2011 VMware, Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + + +#ifndef SAMPLEROBJ_H +#define SAMPLEROBJ_H + +struct dd_function_table; + + +extern void +_mesa_reference_sampler_object(struct gl_context *ctx, + struct gl_sampler_object **ptr, + struct gl_sampler_object *samp); + +extern void +_mesa_init_sampler_object(struct gl_sampler_object *sampObj, GLuint name); + +extern struct gl_sampler_object * +_mesa_new_sampler_object(struct gl_context *ctx, GLuint name); + +extern void +_mesa_delete_sampler_object(struct gl_context *ctx, + struct gl_sampler_object *sampObj); + +extern void +_mesa_init_sampler_object_functions(struct dd_function_table *driver); + +extern void +_mesa_init_sampler_object_dispatch(struct _glapi_table *disp); + + +#endif /* SAMPLEROBJ_H */ diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c index 2c5f2a147ce..451735faf76 100644 --- a/src/mesa/main/shaderapi.c +++ b/src/mesa/main/shaderapi.c @@ -1029,6 +1029,7 @@ static GLboolean validate_samplers(const struct gl_program *prog, char *errMsg) { static const char *targetName[] = { + "TEXTURE_BUFFER", "TEXTURE_2D_ARRAY", "TEXTURE_1D_ARRAY", "TEXTURE_CUBE", diff --git a/src/mesa/main/shared.c b/src/mesa/main/shared.c index ce9fc4de327..d84f59690c5 100644 --- a/src/mesa/main/shared.c +++ b/src/mesa/main/shared.c @@ -27,8 +27,6 @@ * Shared-context state */ - - #include "imports.h" #include "mfeatures.h" #include "mtypes.h" @@ -40,9 +38,13 @@ #include "shared.h" #include "program/program.h" #include "dlist.h" +#if FEATURE_ARB_sampler_objects +#include "samplerobj.h" +#endif #include "shaderobj.h" #include "syncobj.h" + /** * Allocate and initialize a shared context state structure. * Initializes the display list, texture objects and vertex programs hash @@ -91,6 +93,11 @@ _mesa_alloc_shared_state(struct gl_context *ctx) shared->BufferObjects = _mesa_NewHashTable(); #endif +#if FEATURE_ARB_sampler_objects + /* GL_ARB_sampler_objects */ + shared->SamplerObjects = _mesa_NewHashTable(); +#endif + /* Allocate the default buffer object */ shared->NullBufferObj = ctx->Driver.NewBufferObject(ctx, 0, 0); @@ -98,6 +105,7 @@ _mesa_alloc_shared_state(struct gl_context *ctx) for (i = 0; i < NUM_TEXTURE_TARGETS; i++) { /* NOTE: the order of these enums matches the TEXTURE_x_INDEX values */ static const GLenum targets[NUM_TEXTURE_TARGETS] = { + GL_TEXTURE_BUFFER, GL_TEXTURE_2D_ARRAY_EXT, GL_TEXTURE_1D_ARRAY_EXT, GL_TEXTURE_CUBE_MAP, @@ -106,6 +114,7 @@ _mesa_alloc_shared_state(struct gl_context *ctx) GL_TEXTURE_2D, GL_TEXTURE_1D }; + assert(Elements(targets) == NUM_TEXTURE_TARGETS); shared->DefaultTex[i] = ctx->Driver.NewTextureObject(ctx, 0, targets[i]); } @@ -268,6 +277,20 @@ delete_renderbuffer_cb(GLuint id, void *data, void *userData) } +#if FEATURE_ARB_sampler_objects +/** + * Callback for deleting a sampler object. Called by _mesa_HashDeleteAll() + */ +static void +delete_sampler_object_cb(GLuint id, void *data, void *userData) +{ + struct gl_context *ctx = (struct gl_context *) userData; + struct gl_sampler_object *sampObj = (struct gl_sampler_object *) data; + _mesa_reference_sampler_object(ctx, &sampObj, NULL); +} +#endif + + /** * Deallocate a shared state object and all children structures. * @@ -343,6 +366,11 @@ free_shared_state(struct gl_context *ctx, struct gl_shared_state *shared) } } +#if FEATURE_ARB_sampler_objects + _mesa_HashDeleteAll(shared->SamplerObjects, delete_sampler_object_cb, ctx); + _mesa_DeleteHashTable(shared->SamplerObjects); +#endif + /* * Free texture objects (after FBOs since some textures might have * been bound to FBOs). @@ -374,7 +402,8 @@ free_shared_state(struct gl_context *ctx, struct gl_shared_state *shared) * \sa free_shared_state(). */ void -_mesa_release_shared_state(struct gl_context *ctx, struct gl_shared_state *shared) +_mesa_release_shared_state(struct gl_context *ctx, + struct gl_shared_state *shared) { GLint RefCount; diff --git a/src/mesa/main/shared.h b/src/mesa/main/shared.h index 768d69f6942..55516a8c37c 100644 --- a/src/mesa/main/shared.h +++ b/src/mesa/main/shared.h @@ -32,7 +32,8 @@ _mesa_alloc_shared_state(struct gl_context *ctx); void -_mesa_release_shared_state(struct gl_context *ctx, struct gl_shared_state *shared); +_mesa_release_shared_state(struct gl_context *ctx, + struct gl_shared_state *shared); #endif diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c index 19c9bbabda2..4696dbb526f 100644 --- a/src/mesa/main/state.c +++ b/src/mesa/main/state.c @@ -48,6 +48,7 @@ #include "texenvprogram.h" #include "texobj.h" #include "texstate.h" +#include "varray.h" static void @@ -61,43 +62,13 @@ update_separate_specular(struct gl_context *ctx) /** - * Compute the index of the last array element that can be safely accessed - * in a vertex array. We can really only do this when the array lives in - * a VBO. - * The array->_MaxElement field will be updated. - * Later in glDrawArrays/Elements/etc we can do some bounds checking. - */ -static void -compute_max_element(struct gl_client_array *array) -{ - assert(array->Enabled); - if (array->BufferObj->Name) { - GLsizeiptrARB offset = (GLsizeiptrARB) array->Ptr; - GLsizeiptrARB obj_size = (GLsizeiptrARB) array->BufferObj->Size; - - if (offset < obj_size) { - array->_MaxElement = (obj_size - offset + - array->StrideB - - array->_ElementSize) / array->StrideB; - } else { - array->_MaxElement = 0; - } - } - else { - /* user-space array, no idea how big it is */ - array->_MaxElement = 2 * 1000 * 1000 * 1000; /* just a big number */ - } -} - - -/** * Helper for update_arrays(). * \return min(current min, array->_MaxElement). */ static GLuint update_min(GLuint min, struct gl_client_array *array) { - compute_max_element(array); + _mesa_update_array_max_element(array); return MIN2(min, array->_MaxElement); } @@ -445,6 +416,35 @@ update_color(struct gl_context *ctx) ctx->Color._LogicOpEnabled = _mesa_rgba_logicop_enabled(ctx); } +static void +update_clamp_fragment_color(struct gl_context *ctx) +{ + if(ctx->Color.ClampFragmentColor == GL_FIXED_ONLY_ARB) + ctx->Color._ClampFragmentColor = !ctx->DrawBuffer || !ctx->DrawBuffer->Visual.floatMode; + else + ctx->Color._ClampFragmentColor = ctx->Color.ClampFragmentColor; +} + +static void +update_clamp_vertex_color(struct gl_context *ctx) +{ + if(ctx->Light.ClampVertexColor == GL_FIXED_ONLY_ARB) + ctx->Light._ClampVertexColor = !ctx->DrawBuffer || !ctx->DrawBuffer->Visual.floatMode; + else + ctx->Light._ClampVertexColor = ctx->Light.ClampVertexColor; +} + +static void +update_clamp_read_color(struct gl_context *ctx) +{ + if(ctx->Color.ClampReadColor == GL_FIXED_ONLY_ARB) + ctx->Color._ClampReadColor = !ctx->ReadBuffer || !ctx->ReadBuffer->Visual.floatMode; + else + ctx->Color._ClampReadColor = ctx->Color.ClampReadColor; +} + + + /* * Check polygon state and set DD_TRI_CULL_FRONT_BACK and/or DD_TRI_OFFSET @@ -565,7 +565,7 @@ _mesa_update_state_locked( struct gl_context *ctx ) if (ctx->FragmentProgram._MaintainTexEnvProgram) { prog_flags |= (_NEW_BUFFERS | _NEW_TEXTURE | _NEW_FOG | _NEW_ARRAY | _NEW_LIGHT | _NEW_POINT | _NEW_RENDERMODE | - _NEW_PROGRAM); + _NEW_PROGRAM | _NEW_FRAG_CLAMP); } if (ctx->VertexProgram._MaintainTnlProgram) { prog_flags |= (_NEW_ARRAY | _NEW_TEXTURE | _NEW_TEXTURE_MATRIX | @@ -599,10 +599,13 @@ _mesa_update_state_locked( struct gl_context *ctx ) if (new_state & _NEW_LIGHT) _mesa_update_lighting( ctx ); + if (new_state & (_NEW_LIGHT | _NEW_BUFFERS)) + update_clamp_vertex_color(ctx); + if (new_state & (_NEW_STENCIL | _NEW_BUFFERS)) _mesa_update_stencil( ctx ); - if (new_state & _MESA_NEW_TRANSFER_STATE) + if (new_state & _NEW_PIXEL) _mesa_update_pixel( ctx, new_state ); if (new_state & _DD_NEW_SEPARATE_SPECULAR) @@ -617,6 +620,12 @@ _mesa_update_state_locked( struct gl_context *ctx ) if (new_state & _NEW_COLOR) update_color( ctx ); + if (new_state & (_NEW_COLOR | _NEW_BUFFERS)) + update_clamp_read_color(ctx); + + if(new_state & (_NEW_FRAG_CLAMP | _NEW_BUFFERS)) + update_clamp_fragment_color(ctx); + #if 0 if (new_state & (_NEW_POINT | _NEW_LINE | _NEW_POLYGON | _NEW_LIGHT | _NEW_STENCIL | _DD_NEW_SEPARATE_SPECULAR)) diff --git a/src/mesa/main/texcompress_rgtc.c b/src/mesa/main/texcompress_rgtc.c index c50df19c5d8..d9de9bec3d1 100644 --- a/src/mesa/main/texcompress_rgtc.c +++ b/src/mesa/main/texcompress_rgtc.c @@ -121,7 +121,7 @@ _mesa_texstore_red_rgtc1(TEXSTORE_PARAMS) texWidth, (GLubyte *) dstAddr); blkaddr = dst; - dstRowDiff = dstRowStride >= (srcWidth * 4) ? dstRowStride - (((srcWidth + 3) & ~3) * 4) : 0; + dstRowDiff = dstRowStride >= (srcWidth * 2) ? dstRowStride - (((srcWidth + 3) & ~3) * 2) : 0; for (j = 0; j < srcHeight; j+=4) { if (srcHeight > j + 3) numypixels = 4; else numypixels = srcHeight - j; @@ -176,7 +176,7 @@ _mesa_texstore_signed_red_rgtc1(TEXSTORE_PARAMS) texWidth, (GLubyte *) dstAddr); blkaddr = dst; - dstRowDiff = dstRowStride >= (srcWidth * 4) ? dstRowStride - (((srcWidth + 3) & ~3) * 4) : 0; + dstRowDiff = dstRowStride >= (srcWidth * 2) ? dstRowStride - (((srcWidth + 3) & ~3) * 2) : 0; for (j = 0; j < srcHeight; j+=4) { if (srcHeight > j + 3) numypixels = 4; else numypixels = srcHeight - j; @@ -232,7 +232,7 @@ _mesa_texstore_rg_rgtc2(TEXSTORE_PARAMS) texWidth, (GLubyte *) dstAddr); blkaddr = dst; - dstRowDiff = dstRowStride >= (srcWidth * 8) ? dstRowStride - (((srcWidth + 7) & ~7) * 8) : 0; + dstRowDiff = dstRowStride >= (srcWidth * 4) ? dstRowStride - (((srcWidth + 3) & ~3) * 4) : 0; for (j = 0; j < srcHeight; j+=4) { if (srcHeight > j + 3) numypixels = 4; else numypixels = srcHeight - j; @@ -294,7 +294,7 @@ _mesa_texstore_signed_rg_rgtc2(TEXSTORE_PARAMS) texWidth, (GLubyte *) dstAddr); blkaddr = dst; - dstRowDiff = dstRowStride >= (srcWidth * 8) ? dstRowStride - (((srcWidth + 7) & ~7) * 8) : 0; + dstRowDiff = dstRowStride >= (srcWidth * 4) ? dstRowStride - (((srcWidth + 3) & ~3) * 4) : 0; for (j = 0; j < srcHeight; j += 4) { if (srcHeight > j + 3) numypixels = 4; else numypixels = srcHeight - j; diff --git a/src/mesa/main/texenv.c b/src/mesa/main/texenv.c index 45a2e195e98..9228e354a4d 100644 --- a/src/mesa/main/texenv.c +++ b/src/mesa/main/texenv.c @@ -35,6 +35,7 @@ #include "main/enums.h" #include "main/macros.h" #include "main/mtypes.h" +#include "main/state.h" #include "main/texenv.h" #include "main/texstate.h" @@ -94,15 +95,14 @@ set_env_color(struct gl_context *ctx, struct gl_texture_unit *texUnit, const GLfloat *color) { - GLfloat tmp[4]; - tmp[0] = CLAMP(color[0], 0.0F, 1.0F); - tmp[1] = CLAMP(color[1], 0.0F, 1.0F); - tmp[2] = CLAMP(color[2], 0.0F, 1.0F); - tmp[3] = CLAMP(color[3], 0.0F, 1.0F); - if (TEST_EQ_4V(tmp, texUnit->EnvColor)) + if (TEST_EQ_4V(color, texUnit->EnvColorUnclamped)) return; FLUSH_VERTICES(ctx, _NEW_TEXTURE); - COPY_4FV(texUnit->EnvColor, tmp); + COPY_4FV(texUnit->EnvColorUnclamped, color); + texUnit->EnvColor[0] = CLAMP(color[0], 0.0F, 1.0F); + texUnit->EnvColor[1] = CLAMP(color[1], 0.0F, 1.0F); + texUnit->EnvColor[2] = CLAMP(color[2], 0.0F, 1.0F); + texUnit->EnvColor[3] = CLAMP(color[3], 0.0F, 1.0F); } @@ -758,7 +758,12 @@ _mesa_GetTexEnvfv( GLenum target, GLenum pname, GLfloat *params ) if (target == GL_TEXTURE_ENV) { if (pname == GL_TEXTURE_ENV_COLOR) { - COPY_4FV( params, texUnit->EnvColor ); + if(ctx->NewState & (_NEW_BUFFERS | _NEW_FRAG_CLAMP)) + _mesa_update_state(ctx); + if(ctx->Color._ClampFragmentColor) + COPY_4FV( params, texUnit->EnvColor ); + else + COPY_4FV( params, texUnit->EnvColorUnclamped ); } else { GLint val = get_texenvi(ctx, texUnit, pname); diff --git a/src/mesa/main/texfetch.c b/src/mesa/main/texfetch.c index 988a7e05468..d091789ff16 100644 --- a/src/mesa/main/texfetch.c +++ b/src/mesa/main/texfetch.c @@ -631,6 +631,34 @@ texfetch_funcs[MESA_FORMAT_COUNT] = fetch_texel_3d_f_intensity_f16, store_texel_intensity_f16 }, + { + MESA_FORMAT_R_FLOAT32, + fetch_texel_1d_f_r_f32, + fetch_texel_2d_f_r_f32, + fetch_texel_3d_f_r_f32, + store_texel_r_f32 + }, + { + MESA_FORMAT_R_FLOAT16, + fetch_texel_1d_f_r_f16, + fetch_texel_2d_f_r_f16, + fetch_texel_3d_f_r_f16, + store_texel_r_f16 + }, + { + MESA_FORMAT_RG_FLOAT32, + fetch_texel_1d_f_rg_f32, + fetch_texel_2d_f_rg_f32, + fetch_texel_3d_f_rg_f32, + store_texel_rg_f32 + }, + { + MESA_FORMAT_RG_FLOAT16, + fetch_texel_1d_f_rg_f16, + fetch_texel_2d_f_rg_f16, + fetch_texel_3d_f_rg_f16, + store_texel_rg_f16 + }, /* non-normalized, signed int */ { @@ -696,11 +724,11 @@ texfetch_funcs[MESA_FORMAT_COUNT] = store_texel_signed_r8 }, { - MESA_FORMAT_SIGNED_RG88, - fetch_texel_1d_signed_rg88, - fetch_texel_2d_signed_rg88, - fetch_texel_3d_signed_rg88, - store_texel_signed_rg88 + MESA_FORMAT_SIGNED_RG88_REV, + fetch_texel_1d_signed_rg88_rev, + fetch_texel_2d_signed_rg88_rev, + fetch_texel_3d_signed_rg88_rev, + store_texel_signed_rg88_rev }, { MESA_FORMAT_SIGNED_RGBX8888, @@ -724,18 +752,18 @@ texfetch_funcs[MESA_FORMAT_COUNT] = store_texel_signed_rgba8888_rev }, { - MESA_FORMAT_SIGNED_R_16, - fetch_texel_1d_signed_r_16, - fetch_texel_2d_signed_r_16, - fetch_texel_3d_signed_r_16, - store_texel_signed_r_16 + MESA_FORMAT_SIGNED_R16, + fetch_texel_1d_signed_r16, + fetch_texel_2d_signed_r16, + fetch_texel_3d_signed_r16, + store_texel_signed_r16 }, { - MESA_FORMAT_SIGNED_RG_16, - fetch_texel_1d_signed_rg_16, - fetch_texel_2d_signed_rg_16, - fetch_texel_3d_signed_rg_16, - store_texel_signed_rg_16 + MESA_FORMAT_SIGNED_GR1616, + fetch_texel_1d_signed_rg1616, + fetch_texel_2d_signed_rg1616, + fetch_texel_3d_signed_rg1616, + store_texel_signed_rg1616 }, { MESA_FORMAT_SIGNED_RGB_16, @@ -814,6 +842,62 @@ texfetch_funcs[MESA_FORMAT_COUNT] = NULL, NULL }, + { + MESA_FORMAT_SIGNED_A8, + fetch_texel_1d_signed_a8, + fetch_texel_2d_signed_a8, + fetch_texel_3d_signed_a8, + store_texel_signed_a8 + }, + { + MESA_FORMAT_SIGNED_L8, + fetch_texel_1d_signed_l8, + fetch_texel_2d_signed_l8, + fetch_texel_3d_signed_l8, + store_texel_signed_l8 + }, + { + MESA_FORMAT_SIGNED_AL88, + fetch_texel_1d_signed_al88, + fetch_texel_2d_signed_al88, + fetch_texel_3d_signed_al88, + store_texel_signed_al88 + }, + { + MESA_FORMAT_SIGNED_I8, + fetch_texel_1d_signed_i8, + fetch_texel_2d_signed_i8, + fetch_texel_3d_signed_i8, + store_texel_signed_i8 + }, + { + MESA_FORMAT_SIGNED_A16, + fetch_texel_1d_signed_a16, + fetch_texel_2d_signed_a16, + fetch_texel_3d_signed_a16, + store_texel_signed_a16 + }, + { + MESA_FORMAT_SIGNED_L16, + fetch_texel_1d_signed_l16, + fetch_texel_2d_signed_l16, + fetch_texel_3d_signed_l16, + store_texel_signed_l16 + }, + { + MESA_FORMAT_SIGNED_AL1616, + fetch_texel_1d_signed_al1616, + fetch_texel_2d_signed_al1616, + fetch_texel_3d_signed_al1616, + store_texel_signed_al1616 + }, + { + MESA_FORMAT_SIGNED_I16, + fetch_texel_1d_signed_i16, + fetch_texel_2d_signed_i16, + fetch_texel_3d_signed_i16, + store_texel_signed_i16 + }, }; @@ -919,7 +1003,7 @@ _mesa_set_fetch_functions(struct gl_texture_image *texImage, GLuint dims) ASSERT(dims == 1 || dims == 2 || dims == 3); - if (texImage->TexObject->sRGBDecode == GL_SKIP_DECODE_EXT && + if (texImage->TexObject->Sampler.sRGBDecode == GL_SKIP_DECODE_EXT && _mesa_get_format_color_encoding(format) == GL_SRGB) { format = _mesa_get_srgb_format_linear(format); } diff --git a/src/mesa/main/texfetch_tmp.h b/src/mesa/main/texfetch_tmp.h index 36dede57f00..0b9d5da07e8 100644 --- a/src/mesa/main/texfetch_tmp.h +++ b/src/mesa/main/texfetch_tmp.h @@ -438,6 +438,110 @@ static void store_texel_intensity_f16(struct gl_texture_image *texImage, #endif +/* MESA_FORMAT_R_FLOAT32 *****************************************************/ + +/* Fetch texel from 1D, 2D or 3D R_FLOAT32 texture, + * returning 4 GLfloats. + */ +static void FETCH(f_r_f32)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel ) +{ + const GLfloat *src = TEXEL_ADDR(GLfloat, texImage, i, j, k, 1); + texel[RCOMP] = src[0]; + texel[GCOMP] = 0.0F; + texel[BCOMP] = 0.0F; + texel[ACOMP] = 1.0F; +} + +#if DIM == 3 +static void store_texel_r_f32(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLfloat *rgba = (const GLfloat *) texel; + GLfloat *dst = TEXEL_ADDR(GLfloat, texImage, i, j, k, 1); + dst[0] = rgba[RCOMP]; +} +#endif + + +/* MESA_FORMAT_R_FLOAT16 *****************************************************/ + +/* Fetch texel from 1D, 2D or 3D R_FLOAT16 texture, + * returning 4 GLfloats. + */ +static void FETCH(f_r_f16)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel ) +{ + const GLhalfARB *src = TEXEL_ADDR(GLhalfARB, texImage, i, j, k, 1); + texel[RCOMP] = _mesa_half_to_float(src[0]); + texel[GCOMP] = 0.0F; + texel[BCOMP] = 0.0F; + texel[ACOMP] = 1.0F; +} + +#if DIM == 3 +static void store_texel_r_f16(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLfloat *rgba = (const GLfloat *) texel; + GLhalfARB *dst = TEXEL_ADDR(GLhalfARB, texImage, i, j, k, 1); + dst[0] = _mesa_float_to_half(rgba[RCOMP]); +} +#endif + + +/* MESA_FORMAT_RG_FLOAT32 ****************************************************/ + +/* Fetch texel from 1D, 2D or 3D RG_FLOAT32 texture, + * returning 4 GLfloats. + */ +static void FETCH(f_rg_f32)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel ) +{ + const GLfloat *src = TEXEL_ADDR(GLfloat, texImage, i, j, k, 2); + texel[RCOMP] = src[0]; + texel[GCOMP] = src[1]; + texel[BCOMP] = 0.0F; + texel[ACOMP] = 1.0F; +} + +#if DIM == 3 +static void store_texel_rg_f32(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLfloat *rgba = (const GLfloat *) texel; + GLfloat *dst = TEXEL_ADDR(GLfloat, texImage, i, j, k, 2); + dst[0] = rgba[RCOMP]; + dst[1] = rgba[GCOMP]; +} +#endif + + +/* MESA_FORMAT_RG_FLOAT16 ****************************************************/ + +/* Fetch texel from 1D, 2D or 3D RG_FLOAT16 texture, + * returning 4 GLfloats. + */ +static void FETCH(f_rg_f16)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel ) +{ + const GLhalfARB *src = TEXEL_ADDR(GLhalfARB, texImage, i, j, k, 2); + texel[RCOMP] = _mesa_half_to_float(src[0]); + texel[GCOMP] = _mesa_half_to_float(src[1]); + texel[BCOMP] = 0.0F; + texel[ACOMP] = 1.0F; +} + +#if DIM == 3 +static void store_texel_rg_f16(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLfloat *rgba = (const GLfloat *) texel; + GLhalfARB *dst = TEXEL_ADDR(GLhalfARB, texImage, i, j, k, 2); + dst[0] = _mesa_float_to_half(rgba[RCOMP]); + dst[1] = _mesa_float_to_half(rgba[GCOMP]); +} +#endif /* @@ -1673,25 +1777,117 @@ static void store_texel_signed_r8(struct gl_texture_image *texImage, #endif -/* MESA_FORMAT_SIGNED_RG88 ***********************************************/ +/* MESA_FORMAT_SIGNED_A8 ***********************************************/ -static void FETCH(signed_rg88)( const struct gl_texture_image *texImage, - GLint i, GLint j, GLint k, GLfloat *texel ) +static void FETCH(signed_a8)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel ) +{ + const GLbyte s = *TEXEL_ADDR(GLbyte, texImage, i, j, k, 1); + texel[RCOMP] = 0.0F; + texel[GCOMP] = 0.0F; + texel[BCOMP] = 0.0F; + texel[ACOMP] = BYTE_TO_FLOAT_TEX( s ); +} + +#if DIM == 3 +static void store_texel_signed_a8(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLbyte *rgba = (const GLbyte *) texel; + GLbyte *dst = TEXEL_ADDR(GLbyte, texImage, i, j, k, 1); + *dst = rgba[ACOMP]; +} +#endif + + +/* MESA_FORMAT_SIGNED_L8 ***********************************************/ + +static void FETCH(signed_l8)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel ) +{ + const GLbyte s = *TEXEL_ADDR(GLbyte, texImage, i, j, k, 1); + texel[RCOMP] = + texel[GCOMP] = + texel[BCOMP] = BYTE_TO_FLOAT_TEX( s ); + texel[ACOMP] = 1.0F; +} + +#if DIM == 3 +static void store_texel_signed_l8(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLbyte *rgba = (const GLbyte *) texel; + GLbyte *dst = TEXEL_ADDR(GLbyte, texImage, i, j, k, 1); + *dst = rgba[RCOMP]; +} +#endif + + +/* MESA_FORMAT_SIGNED_I8 ***********************************************/ + +static void FETCH(signed_i8)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel ) +{ + const GLbyte s = *TEXEL_ADDR(GLbyte, texImage, i, j, k, 1); + texel[RCOMP] = + texel[GCOMP] = + texel[BCOMP] = + texel[ACOMP] = BYTE_TO_FLOAT_TEX( s ); +} + +#if DIM == 3 +static void store_texel_signed_i8(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLbyte *rgba = (const GLbyte *) texel; + GLbyte *dst = TEXEL_ADDR(GLbyte, texImage, i, j, k, 1); + *dst = rgba[RCOMP]; +} +#endif + + +/* MESA_FORMAT_SIGNED_RG88_REV ***********************************************/ + +static void FETCH(signed_rg88_rev)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel ) { const GLushort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1); - texel[RCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 8) ); - texel[GCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s & 0xff) ); + texel[RCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s & 0xff) ); + texel[GCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 8) ); texel[BCOMP] = 0.0F; texel[ACOMP] = 1.0F; } #if DIM == 3 -static void store_texel_signed_rg88(struct gl_texture_image *texImage, +static void store_texel_signed_rg88_rev(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLbyte *rg = (const GLbyte *) texel; + GLushort *dst = TEXEL_ADDR(GLushort, texImage, i, j, k, 1); + dst[0] = PACK_COLOR_88(rg[GCOMP], rg[RCOMP]); +} +#endif + + +/* MESA_FORMAT_SIGNED_AL88 ***********************************************/ + +static void FETCH(signed_al88)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel ) +{ + const GLushort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1); + texel[RCOMP] = + texel[GCOMP] = + texel[BCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s & 0xff) ); + texel[ACOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 8) ); +} + +#if DIM == 3 +static void store_texel_signed_al88(struct gl_texture_image *texImage, GLint i, GLint j, GLint k, const void *texel) { const GLbyte *rg = (const GLbyte *) texel; - GLushort *dst = TEXEL_ADDR(GLushort, texImage, i, j, k, 2); - *dst = PACK_COLOR_88(rg[RCOMP], rg[GCOMP]); + GLushort *dst = TEXEL_ADDR(GLushort, texImage, i, j, k, 1); + dst[0] = PACK_COLOR_88(rg[ACOMP], rg[RCOMP]); } #endif @@ -1763,11 +1959,11 @@ static void store_texel_signed_rgba8888_rev(struct gl_texture_image *texImage, -/* MESA_FORMAT_SIGNED_R_16 ***********************************************/ +/* MESA_FORMAT_SIGNED_R16 ***********************************************/ static void -FETCH(signed_r_16)(const struct gl_texture_image *texImage, - GLint i, GLint j, GLint k, GLfloat *texel) +FETCH(signed_r16)(const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel) { const GLshort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1); texel[RCOMP] = SHORT_TO_FLOAT_TEX( s ); @@ -1778,8 +1974,8 @@ FETCH(signed_r_16)(const struct gl_texture_image *texImage, #if DIM == 3 static void -store_texel_signed_r_16(struct gl_texture_image *texImage, - GLint i, GLint j, GLint k, const void *texel) +store_texel_signed_r16(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) { const GLshort *rgba = (const GLshort *) texel; GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 1); @@ -1788,10 +1984,85 @@ store_texel_signed_r_16(struct gl_texture_image *texImage, #endif -/* MESA_FORMAT_SIGNED_RG_16 ***********************************************/ +/* MESA_FORMAT_SIGNED_A16 ***********************************************/ + +static void +FETCH(signed_a16)(const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel) +{ + const GLshort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1); + texel[RCOMP] = 0.0F; + texel[GCOMP] = 0.0F; + texel[BCOMP] = 0.0F; + texel[ACOMP] = SHORT_TO_FLOAT_TEX( s ); +} + +#if DIM == 3 +static void +store_texel_signed_a16(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLshort *rgba = (const GLshort *) texel; + GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 1); + *dst = rgba[ACOMP]; +} +#endif + + +/* MESA_FORMAT_SIGNED_L16 ***********************************************/ + +static void +FETCH(signed_l16)(const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel) +{ + const GLshort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1); + texel[RCOMP] = + texel[GCOMP] = + texel[BCOMP] = SHORT_TO_FLOAT_TEX( s ); + texel[ACOMP] = 1.0F; +} + +#if DIM == 3 +static void +store_texel_signed_l16(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLshort *rgba = (const GLshort *) texel; + GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 1); + *dst = rgba[RCOMP]; +} +#endif + + +/* MESA_FORMAT_SIGNED_I16 ***********************************************/ static void -FETCH(signed_rg_16)(const struct gl_texture_image *texImage, +FETCH(signed_i16)(const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel) +{ + const GLshort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1); + texel[RCOMP] = + texel[GCOMP] = + texel[BCOMP] = + texel[ACOMP] = SHORT_TO_FLOAT_TEX( s ); +} + +#if DIM == 3 +static void +store_texel_signed_i16(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLshort *rgba = (const GLshort *) texel; + GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 1); + *dst = rgba[RCOMP]; +} +#endif + + +/* MESA_FORMAT_SIGNED_RG1616 ***********************************************/ + +static void +FETCH(signed_rg1616)(const struct gl_texture_image *texImage, GLint i, GLint j, GLint k, GLfloat *texel) { const GLshort *s = TEXEL_ADDR(GLshort, texImage, i, j, k, 2); @@ -1803,7 +2074,7 @@ FETCH(signed_rg_16)(const struct gl_texture_image *texImage, #if DIM == 3 static void -store_texel_signed_rg_16(struct gl_texture_image *texImage, +store_texel_signed_rg1616(struct gl_texture_image *texImage, GLint i, GLint j, GLint k, const void *texel) { const GLshort *rgba = (const GLshort *) texel; @@ -1814,7 +2085,33 @@ store_texel_signed_rg_16(struct gl_texture_image *texImage, #endif -/* MESA_FORMAT_SIGNED_RGBA_16 ***********************************************/ +/* MESA_FORMAT_SIGNED_AL1616 ***********************************************/ + +static void +FETCH(signed_al1616)(const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel) +{ + const GLshort *s = TEXEL_ADDR(GLshort, texImage, i, j, k, 2); + texel[RCOMP] = + texel[GCOMP] = + texel[BCOMP] = SHORT_TO_FLOAT_TEX( s[0] ); + texel[ACOMP] = SHORT_TO_FLOAT_TEX( s[1] ); +} + +#if DIM == 3 +static void +store_texel_signed_al1616(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLshort *rgba = (const GLshort *) texel; + GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 2); + dst[0] = rgba[RCOMP]; + dst[1] = rgba[ACOMP]; +} +#endif + + +/* MESA_FORMAT_SIGNED_RGB_16 ***********************************************/ static void FETCH(signed_rgb_16)(const struct gl_texture_image *texImage, diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c index 5eabf2aa527..c85a7c05030 100644 --- a/src/mesa/main/texformat.c +++ b/src/mesa/main/texformat.c @@ -327,36 +327,52 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat, switch (internalFormat) { case GL_ALPHA16F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_FLOAT16); + RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_ALPHA32F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_LUMINANCE16F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_FLOAT16); + RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_LUMINANCE32F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_LUMINANCE_ALPHA16F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16); + RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_LUMINANCE_ALPHA32F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_INTENSITY16F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_FLOAT16); + RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_INTENSITY32F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_RGB16F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_RGB_FLOAT16); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGB_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_RGB32F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_RGB_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_RGBA16F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_RGBA32F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); @@ -389,19 +405,7 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat, } } - if (ctx->Extensions.MESA_texture_signed_rgba) { - switch (internalFormat) { - case GL_RGBA_SNORM: - case GL_RGBA8_SNORM: - RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888); - RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV); - break; - default: - ; /* fallthrough */ - } - } - - if (ctx->VersionMajor * 10 + ctx->VersionMinor >= 31) { + if (ctx->Extensions.EXT_texture_snorm) { switch (internalFormat) { case GL_RED_SNORM: case GL_R8_SNORM: @@ -409,28 +413,77 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat, break; case GL_RG_SNORM: case GL_RG8_SNORM: - RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RG88); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RG88_REV); break; case GL_RGB_SNORM: case GL_RGB8_SNORM: RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBX8888); - break; + /* FALLTHROUGH */ case GL_RGBA_SNORM: case GL_RGBA8_SNORM: RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV); break; + case GL_ALPHA_SNORM: + case GL_ALPHA8_SNORM: + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_A8); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV); + break; + case GL_LUMINANCE_SNORM: + case GL_LUMINANCE8_SNORM: + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_L8); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBX8888); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV); + break; + case GL_LUMINANCE_ALPHA_SNORM: + case GL_LUMINANCE8_ALPHA8_SNORM: + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_AL88); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV); + break; + case GL_INTENSITY_SNORM: + case GL_INTENSITY8_SNORM: + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_I8); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV); + break; case GL_R16_SNORM: - RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_R_16); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_R16); break; case GL_RG16_SNORM: - RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RG_16); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_GR1616); break; case GL_RGB16_SNORM: RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGB_16); - break; + /* FALLTHROUGH */ case GL_RGBA16_SNORM: RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA_16); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV); break; + case GL_ALPHA16_SNORM: + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_A16); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA_16); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV); + break; + case GL_LUMINANCE16_SNORM: + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_L16); + /* FALLTHROUGH */ + case GL_LUMINANCE16_ALPHA16_SNORM: + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_AL1616); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA_16); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV); + break; + case GL_INTENSITY16_SNORM: + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_I16); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA_16); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV); + break; default: ; /* fall-through */ } @@ -591,6 +644,32 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat, } } + if (ctx->Extensions.ARB_texture_rg && ctx->Extensions.ARB_texture_float) { + switch (internalFormat) { + case GL_R16F: + RETURN_IF_SUPPORTED(MESA_FORMAT_R_FLOAT16); + RETURN_IF_SUPPORTED(MESA_FORMAT_R_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); + break; + case GL_R32F: + RETURN_IF_SUPPORTED(MESA_FORMAT_R_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); + break; + case GL_RG16F: + RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT16); + RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); + break; + case GL_RG32F: + RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); + break; + + default: + ; /* fallthrough */ + } + } + if (ctx->Extensions.EXT_texture_format_BGRA8888) { switch (internalFormat) { case GL_BGRA: diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c index 21d9140c550..7070a29fb9d 100644 --- a/src/mesa/main/texgetimage.c +++ b/src/mesa/main/texgetimage.c @@ -74,6 +74,7 @@ get_tex_color_index(struct gl_context *ctx, GLuint dimensions, const GLint width = texImage->Width; const GLint height = texImage->Height; const GLint depth = texImage->Depth; + const GLint rowstride = texImage->RowStride; const GLuint indexBits = _mesa_get_format_bits(texImage->TexFormat, GL_TEXTURE_INDEX_SIZE_EXT); const GLbitfield transferOps = 0x0; @@ -89,14 +90,14 @@ get_tex_color_index(struct gl_context *ctx, GLuint dimensions, if (indexBits == 8) { const GLubyte *src = (const GLubyte *) texImage->Data; - src += width * (img * texImage->Height + row); + src += rowstride * (img * height + row); for (col = 0; col < width; col++) { indexRow[col] = src[col]; } } else if (indexBits == 16) { const GLushort *src = (const GLushort *) texImage->Data; - src += width * (img * texImage->Height + row); + src += rowstride * (img * height + row); for (col = 0; col < width; col++) { indexRow[col] = src[col]; } @@ -159,6 +160,7 @@ get_tex_depth_stencil(struct gl_context *ctx, GLuint dimensions, const GLint width = texImage->Width; const GLint height = texImage->Height; const GLint depth = texImage->Depth; + const GLint rowstride = texImage->RowStride; const GLuint *src = (const GLuint *) texImage->Data; GLint img, row; @@ -172,7 +174,7 @@ get_tex_depth_stencil(struct gl_context *ctx, GLuint dimensions, _mesa_swap4((GLuint *) dest, width); } - src += width * row + width * height * img; + src += rowstride; } } } diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 2a3037f6189..8fb54c693e0 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -55,9 +55,7 @@ * In particular, we care about pixel transfer state and buffer state * (such as glReadBuffer to make sure we read from the right renderbuffer). */ -#define NEW_COPY_TEX_STATE (_MESA_NEW_TRANSFER_STATE | \ - _NEW_BUFFERS | \ - _NEW_PIXEL) +#define NEW_COPY_TEX_STATE (_NEW_BUFFERS | _NEW_PIXEL) @@ -313,11 +311,40 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint internalFormat ) } } - if (ctx->Extensions.MESA_texture_signed_rgba) { + if (ctx->Extensions.EXT_texture_snorm) { switch (internalFormat) { + case GL_RED_SNORM: + case GL_R8_SNORM: + case GL_R16_SNORM: + return GL_RED; + case GL_RG_SNORM: + case GL_RG8_SNORM: + case GL_RG16_SNORM: + return GL_RG; + case GL_RGB_SNORM: + case GL_RGB8_SNORM: + case GL_RGB16_SNORM: + return GL_RGB; case GL_RGBA_SNORM: case GL_RGBA8_SNORM: + case GL_RGBA16_SNORM: return GL_RGBA; + case GL_ALPHA_SNORM: + case GL_ALPHA8_SNORM: + case GL_ALPHA16_SNORM: + return GL_ALPHA; + case GL_LUMINANCE_SNORM: + case GL_LUMINANCE8_SNORM: + case GL_LUMINANCE16_SNORM: + return GL_LUMINANCE; + case GL_LUMINANCE_ALPHA_SNORM: + case GL_LUMINANCE8_ALPHA8_SNORM: + case GL_LUMINANCE16_ALPHA16_SNORM: + return GL_LUMINANCE_ALPHA; + case GL_INTENSITY_SNORM: + case GL_INTENSITY8_SNORM: + case GL_INTENSITY16_SNORM: + return GL_INTENSITY; default: ; /* fallthrough */ } @@ -654,8 +681,10 @@ _mesa_delete_texture_image(struct gl_context *ctx, GLboolean _mesa_is_proxy_texture(GLenum target) { - /* NUM_TEXTURE_TARGETS should match number of terms below */ - assert(NUM_TEXTURE_TARGETS == 7); + /* NUM_TEXTURE_TARGETS should match number of terms below, + * except there's no proxy for GL_TEXTURE_BUFFER. + */ + assert(NUM_TEXTURE_TARGETS == 8); return (target == GL_PROXY_TEXTURE_1D || target == GL_PROXY_TEXTURE_2D || @@ -767,6 +796,9 @@ _mesa_select_tex_object(struct gl_context *ctx, return arrayTex ? texUnit->CurrentTex[TEXTURE_2D_ARRAY_INDEX] : NULL; case GL_PROXY_TEXTURE_2D_ARRAY_EXT: return arrayTex ? ctx->Texture.ProxyTex[TEXTURE_2D_ARRAY_INDEX] : NULL; + case GL_TEXTURE_BUFFER: + return ctx->Extensions.ARB_texture_buffer_object + ? texUnit->CurrentTex[TEXTURE_BUFFER_INDEX] : NULL; default: _mesa_problem(NULL, "bad target in _mesa_select_tex_object()"); return NULL; @@ -954,6 +986,8 @@ _mesa_max_texture_levels(struct gl_context *ctx, GLenum target) return (ctx->Extensions.MESA_texture_array || ctx->Extensions.EXT_texture_array) ? ctx->Const.MaxTextureLevels : 0; + case GL_TEXTURE_BUFFER: + /* fall-through */ default: return 0; /* bad target */ } @@ -990,6 +1024,8 @@ _mesa_get_texture_dimensions(GLenum target) case GL_TEXTURE_2D_ARRAY: case GL_PROXY_TEXTURE_2D_ARRAY: return 3; + case GL_TEXTURE_BUFFER: + /* fall-through */ default: _mesa_problem(NULL, "invalid target 0x%x in get_texture_dimensions()", target); @@ -2224,7 +2260,7 @@ check_rtt_cb(GLuint key, void *data, void *userData) att->Texture == texObj && att->TextureLevel == level && att->CubeMapFace == face) { - ASSERT(att->Texture->Image[att->CubeMapFace][att->TextureLevel]); + ASSERT(_mesa_get_attachment_teximage(att)); /* Tell driver about the new renderbuffer texture */ ctx->Driver.RenderTexture(ctx, ctx->DrawBuffer, att); /* Mark fb status as indeterminate to force re-validation */ @@ -2434,7 +2470,7 @@ teximage(struct gl_context *ctx, GLuint dims, return; /* error was recorded */ } - if (ctx->NewState & _MESA_NEW_TRANSFER_STATE) + if (ctx->NewState & _NEW_PIXEL) _mesa_update_state(ctx); texObj = _mesa_get_current_tex_object(ctx, target); @@ -2580,7 +2616,7 @@ _mesa_EGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image) return; } - if (ctx->NewState & _MESA_NEW_TRANSFER_STATE) + if (ctx->NewState & _NEW_PIXEL) _mesa_update_state(ctx); texObj = _mesa_get_current_tex_object(ctx, target); @@ -2637,7 +2673,7 @@ texsubimage(struct gl_context *ctx, GLuint dims, GLenum target, GLint level, return; } - if (ctx->NewState & _MESA_NEW_TRANSFER_STATE) + if (ctx->NewState & _NEW_PIXEL) _mesa_update_state(ctx); if (subtexture_error_check(ctx, dims, target, level, xoffset, yoffset, zoffset, @@ -2997,6 +3033,7 @@ get_compressed_block_size(GLenum glformat, GLuint *bw, GLuint *bh) /** * Error checking for glCompressedTexImage[123]D(). + * \param reason returns reason for error, if any * \return error code or GL_NO_ERROR. */ static GLenum @@ -3004,36 +3041,49 @@ compressed_texture_error_check(struct gl_context *ctx, GLint dimensions, GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, - GLsizei imageSize) + GLsizei imageSize, char **reason) { const GLenum proxyTarget = get_proxy_target(target); const GLint maxLevels = _mesa_max_texture_levels(ctx, target); GLint expectedSize; + *reason = ""; /* no error */ + /* check level */ - if (level < 0 || level >= maxLevels) + if (level < 0 || level >= maxLevels) { + *reason = "level"; return GL_INVALID_VALUE; + } if (!target_can_be_compressed(ctx, target, internalFormat)) { + *reason = "target"; return GL_INVALID_ENUM; } /* This will detect any invalid internalFormat value */ - if (!_mesa_is_compressed_format(ctx, internalFormat)) + if (!_mesa_is_compressed_format(ctx, internalFormat)) { + *reason = "internalFormat"; return GL_INVALID_ENUM; + } /* This should really never fail */ - if (_mesa_base_tex_format(ctx, internalFormat) < 0) + if (_mesa_base_tex_format(ctx, internalFormat) < 0) { + *reason = "internalFormat"; return GL_INVALID_ENUM; + } /* No compressed formats support borders at this time */ - if (border != 0) + if (border != 0) { + *reason = "border != 0"; return GL_INVALID_VALUE; + } /* For cube map, width must equal height */ if (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB && - target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB && width != height) + target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB && width != height) { + *reason = "width != height"; return GL_INVALID_VALUE; + } /* check image size against compression block size */ { @@ -3050,6 +3100,7 @@ compressed_texture_error_check(struct gl_context *ctx, GLint dimensions, * generated [...] if any parameter combinations are not * supported by the specific compressed internal format. */ + *reason = "invalid width or height for compression format"; return GL_INVALID_OPERATION; } } @@ -3059,6 +3110,7 @@ compressed_texture_error_check(struct gl_context *ctx, GLint dimensions, internalFormat, GL_NONE, GL_NONE, width, height, depth, border)) { /* See error comment above */ + *reason = "invalid width, height or format"; return GL_INVALID_OPERATION; } @@ -3069,6 +3121,7 @@ compressed_texture_error_check(struct gl_context *ctx, GLint dimensions, * if <imageSize> is not consistent with the format, dimensions, and * contents of the specified image. */ + *reason = "imageSize inconsistant with width/height/format"; return GL_INVALID_VALUE; } @@ -3223,6 +3276,7 @@ compressedteximage(struct gl_context *ctx, GLuint dims, GLsizei imageSize, const GLvoid *data) { GLenum error; + char *reason = ""; ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); @@ -3243,15 +3297,15 @@ compressedteximage(struct gl_context *ctx, GLuint dims, error = compressed_texture_error_check(ctx, dims, target, level, internalFormat, width, height, depth, - border, imageSize); + border, imageSize, &reason); -#if FEATURE_ES - /* XXX this is kind of a hack */ if (error) { - _mesa_error(ctx, error, "glTexImage2D"); + _mesa_error(ctx, error, "glTexImage2D(%s)", reason); return; } +#if FEATURE_ES + /* XXX this is kind of a hack */ if (dims == 2) { switch (internalFormat) { case GL_PALETTE4_RGB8_OES: @@ -3524,3 +3578,272 @@ _mesa_CompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset, compressed_tex_sub_image(3, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); } + + +/** + * Helper for glTexBuffer(). Check if internalFormat is legal. If so, + * return the basic data type and number of components for the format. + * \param return GL_TRUE if internalFormat is legal, GL_FALSE otherwise + */ +static GLboolean +get_sized_format_info(const struct gl_context *ctx, GLenum internalFormat, + GLenum *datatype, GLuint *components) +{ + switch (internalFormat) { + case GL_ALPHA8: + *datatype = GL_UNSIGNED_BYTE; + *components = 1; + break; + case GL_ALPHA16: + *datatype = GL_UNSIGNED_SHORT; + *components = 1; + break; + case GL_ALPHA16F_ARB: + *datatype = GL_HALF_FLOAT; + *components = 1; + break; + case GL_ALPHA32F_ARB: + *datatype = GL_FLOAT; + *components = 1; + break; + case GL_ALPHA8I_EXT: + *datatype = GL_BYTE; + *components = 1; + break; + case GL_ALPHA16I_EXT: + *datatype = GL_SHORT; + *components = 1; + break; + case GL_ALPHA32I_EXT: + *datatype = GL_INT; + *components = 1; + break; + case GL_ALPHA8UI_EXT: + *datatype = GL_UNSIGNED_BYTE; + *components = 1; + break; + case GL_ALPHA16UI_EXT: + *datatype = GL_UNSIGNED_SHORT; + *components = 1; + break; + case GL_ALPHA32UI_EXT: + *datatype = GL_UNSIGNED_INT; + *components = 1; + break; + case GL_LUMINANCE8: + *datatype = GL_UNSIGNED_BYTE; + *components = 1; + break; + case GL_LUMINANCE16: + *datatype = GL_UNSIGNED_SHORT; + *components = 1; + break; + case GL_LUMINANCE16F_ARB: + *datatype = GL_HALF_FLOAT; + *components = 1; + break; + case GL_LUMINANCE32F_ARB: + *datatype = GL_FLOAT; + *components = 1; + break; + case GL_LUMINANCE8I_EXT: + *datatype = GL_BYTE; + *components = 1; + break; + case GL_LUMINANCE16I_EXT: + *datatype = GL_SHORT; + *components = 1; + break; + case GL_LUMINANCE32I_EXT: + *datatype = GL_INT; + *components = 1; + break; + case GL_LUMINANCE8UI_EXT: + *datatype = GL_UNSIGNED_BYTE; + *components = 1; + break; + case GL_LUMINANCE16UI_EXT: + *datatype = GL_UNSIGNED_SHORT; + *components = 1; + break; + case GL_LUMINANCE32UI_EXT: + *datatype = GL_UNSIGNED_INT; + *components = 1; + break; + case GL_LUMINANCE8_ALPHA8: + *datatype = GL_UNSIGNED_BYTE; + *components = 2; + break; + case GL_LUMINANCE16_ALPHA16: + *datatype = GL_UNSIGNED_SHORT; + *components = 2; + break; + case GL_LUMINANCE_ALPHA16F_ARB: + *datatype = GL_HALF_FLOAT; + *components = 2; + break; + case GL_LUMINANCE_ALPHA32F_ARB: + *datatype = GL_FLOAT; + *components = 2; + break; + case GL_LUMINANCE_ALPHA8I_EXT: + *datatype = GL_BYTE; + *components = 2; + break; + case GL_LUMINANCE_ALPHA16I_EXT: + *datatype = GL_SHORT; + *components = 2; + break; + case GL_LUMINANCE_ALPHA32I_EXT: + *datatype = GL_INT; + *components = 2; + break; + case GL_LUMINANCE_ALPHA8UI_EXT: + *datatype = GL_UNSIGNED_BYTE; + *components = 2; + break; + case GL_LUMINANCE_ALPHA16UI_EXT: + *datatype = GL_UNSIGNED_SHORT; + *components = 2; + break; + case GL_LUMINANCE_ALPHA32UI_EXT: + *datatype = GL_UNSIGNED_INT; + *components = 2; + break; + case GL_INTENSITY8: + *datatype = GL_UNSIGNED_BYTE; + *components = 1; + break; + case GL_INTENSITY16: + *datatype = GL_UNSIGNED_SHORT; + *components = 1; + break; + case GL_INTENSITY16F_ARB: + *datatype = GL_HALF_FLOAT; + *components = 1; + break; + case GL_INTENSITY32F_ARB: + *datatype = GL_FLOAT; + *components = 1; + break; + case GL_INTENSITY8I_EXT: + *datatype = GL_BYTE; + *components = 1; + break; + case GL_INTENSITY16I_EXT: + *datatype = GL_SHORT; + *components = 1; + break; + case GL_INTENSITY32I_EXT: + *datatype = GL_INT; + *components = 1; + break; + case GL_INTENSITY8UI_EXT: + *datatype = GL_UNSIGNED_BYTE; + *components = 1; + break; + case GL_INTENSITY16UI_EXT: + *datatype = GL_UNSIGNED_SHORT; + *components = 1; + break; + case GL_INTENSITY32UI_EXT: + *datatype = GL_UNSIGNED_INT; + *components = 1; + break; + case GL_RGBA8: + *datatype = GL_UNSIGNED_BYTE; + *components = 4; + break; + case GL_RGBA16: + *datatype = GL_UNSIGNED_SHORT; + *components = 4; + break; + case GL_RGBA16F_ARB: + *datatype = GL_HALF_FLOAT; + *components = 4; + break; + case GL_RGBA32F_ARB: + *datatype = GL_FLOAT; + *components = 4; + break; + case GL_RGBA8I_EXT: + *datatype = GL_BYTE; + *components = 4; + break; + case GL_RGBA16I_EXT: + *datatype = GL_SHORT; + *components = 4; + break; + case GL_RGBA32I_EXT: + *datatype = GL_INT; + *components = 4; + break; + case GL_RGBA8UI_EXT: + *datatype = GL_UNSIGNED_BYTE; + *components = 4; + break; + case GL_RGBA16UI_EXT: + *datatype = GL_UNSIGNED_SHORT; + *components = 4; + break; + case GL_RGBA32UI_EXT: + *datatype = GL_UNSIGNED_INT; + *components = 4; + break; + default: + return GL_FALSE; + } + + if (*datatype == GL_FLOAT && !ctx->Extensions.ARB_texture_float) + return GL_FALSE; + + if (*datatype == GL_HALF_FLOAT && !ctx->Extensions.ARB_half_float_pixel) + return GL_FALSE; + + return GL_TRUE; +} + + +/** GL_ARB_texture_buffer_object */ +void GLAPIENTRY +_mesa_TexBuffer(GLenum target, GLenum internalFormat, GLuint buffer) +{ + struct gl_texture_object *texObj; + struct gl_buffer_object *bufObj; + GLenum dataType; + GLuint comps; + + GET_CURRENT_CONTEXT(ctx); + ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); + + if (!ctx->Extensions.ARB_texture_buffer_object) { + _mesa_error(ctx, GL_INVALID_OPERATION, "glTexBuffer"); + return; + } + + if (target != GL_TEXTURE_BUFFER_ARB) { + _mesa_error(ctx, GL_INVALID_ENUM, "glTexBuffer(target)"); + return; + } + + if (!get_sized_format_info(ctx, internalFormat, &dataType, &comps)) { + _mesa_error(ctx, GL_INVALID_ENUM, "glTexBuffer(internalFormat 0x%x)", + internalFormat); + return; + } + + bufObj = _mesa_lookup_bufferobj(ctx, buffer); + if (buffer && !bufObj) { + _mesa_error(ctx, GL_INVALID_OPERATION, "glTexBuffer(buffer %u)", buffer); + return; + } + + texObj = _mesa_get_current_tex_object(ctx, target); + + _mesa_lock_texture(ctx, texObj); + { + _mesa_reference_buffer_object(ctx, &texObj->BufferObject, bufObj); + texObj->BufferObjectFormat = internalFormat; + } + _mesa_unlock_texture(ctx, texObj); +} diff --git a/src/mesa/main/teximage.h b/src/mesa/main/teximage.h index bb5509e5be6..19abc649898 100644 --- a/src/mesa/main/teximage.h +++ b/src/mesa/main/teximage.h @@ -59,7 +59,8 @@ _mesa_new_texture_image( struct gl_context *ctx ); extern void -_mesa_delete_texture_image( struct gl_context *ctx, struct gl_texture_image *teximage ); +_mesa_delete_texture_image( struct gl_context *ctx, + struct gl_texture_image *teximage ); extern void _mesa_free_texture_image_data( struct gl_context *ctx, @@ -82,7 +83,8 @@ _mesa_choose_texture_format(struct gl_context *ctx, extern void -_mesa_clear_texture_image(struct gl_context *ctx, struct gl_texture_image *texImage); +_mesa_clear_texture_image(struct gl_context *ctx, + struct gl_texture_image *texImage); extern void @@ -92,7 +94,8 @@ _mesa_set_tex_image(struct gl_texture_object *tObj, extern struct gl_texture_object * -_mesa_select_tex_object(struct gl_context *ctx, const struct gl_texture_unit *texUnit, +_mesa_select_tex_object(struct gl_context *ctx, + const struct gl_texture_unit *texUnit, GLenum target); extern struct gl_texture_object * @@ -100,7 +103,8 @@ _mesa_get_current_tex_object(struct gl_context *ctx, GLenum target); extern struct gl_texture_image * -_mesa_select_tex_image(struct gl_context *ctx, const struct gl_texture_object *texObj, +_mesa_select_tex_image(struct gl_context *ctx, + const struct gl_texture_object *texObj, GLenum target, GLint level); @@ -271,6 +275,11 @@ _mesa_CompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + +extern void GLAPIENTRY +_mesa_TexBuffer(GLenum target, GLenum internalFormat, GLuint buffer); + + /*@}*/ #endif diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c index c1e3e4dec79..43d6e52dfe9 100644 --- a/src/mesa/main/texobj.c +++ b/src/mesa/main/texobj.c @@ -29,6 +29,7 @@ #include "mfeatures.h" +#include "bufferobj.h" #include "colortab.h" #include "context.h" #include "enums.h" @@ -105,7 +106,8 @@ _mesa_initialize_texture_object( struct gl_texture_object *obj, target == GL_TEXTURE_CUBE_MAP_ARB || target == GL_TEXTURE_RECTANGLE_NV || target == GL_TEXTURE_1D_ARRAY_EXT || - target == GL_TEXTURE_2D_ARRAY_EXT); + target == GL_TEXTURE_2D_ARRAY_EXT || + target == GL_TEXTURE_BUFFER); memset(obj, 0, sizeof(*obj)); /* init the non-zero fields */ @@ -114,35 +116,37 @@ _mesa_initialize_texture_object( struct gl_texture_object *obj, obj->Name = name; obj->Target = target; obj->Priority = 1.0F; + obj->BaseLevel = 0; + obj->MaxLevel = 1000; + + /* sampler state */ if (target == GL_TEXTURE_RECTANGLE_NV) { - obj->WrapS = GL_CLAMP_TO_EDGE; - obj->WrapT = GL_CLAMP_TO_EDGE; - obj->WrapR = GL_CLAMP_TO_EDGE; - obj->MinFilter = GL_LINEAR; + obj->Sampler.WrapS = GL_CLAMP_TO_EDGE; + obj->Sampler.WrapT = GL_CLAMP_TO_EDGE; + obj->Sampler.WrapR = GL_CLAMP_TO_EDGE; + obj->Sampler.MinFilter = GL_LINEAR; } else { - obj->WrapS = GL_REPEAT; - obj->WrapT = GL_REPEAT; - obj->WrapR = GL_REPEAT; - obj->MinFilter = GL_NEAREST_MIPMAP_LINEAR; + obj->Sampler.WrapS = GL_REPEAT; + obj->Sampler.WrapT = GL_REPEAT; + obj->Sampler.WrapR = GL_REPEAT; + obj->Sampler.MinFilter = GL_NEAREST_MIPMAP_LINEAR; } - obj->MagFilter = GL_LINEAR; - obj->MinLod = -1000.0; - obj->MaxLod = 1000.0; - obj->LodBias = 0.0; - obj->BaseLevel = 0; - obj->MaxLevel = 1000; - obj->MaxAnisotropy = 1.0; - obj->CompareMode = GL_NONE; /* ARB_shadow */ - obj->CompareFunc = GL_LEQUAL; /* ARB_shadow */ - obj->CompareFailValue = 0.0F; /* ARB_shadow_ambient */ - obj->DepthMode = GL_LUMINANCE; /* ARB_depth_texture */ + obj->Sampler.MagFilter = GL_LINEAR; + obj->Sampler.MinLod = -1000.0; + obj->Sampler.MaxLod = 1000.0; + obj->Sampler.LodBias = 0.0; + obj->Sampler.MaxAnisotropy = 1.0; + obj->Sampler.CompareMode = GL_NONE; /* ARB_shadow */ + obj->Sampler.CompareFunc = GL_LEQUAL; /* ARB_shadow */ + obj->Sampler.CompareFailValue = 0.0F; /* ARB_shadow_ambient */ + obj->Sampler.DepthMode = GL_LUMINANCE; /* ARB_depth_texture */ obj->Swizzle[0] = GL_RED; obj->Swizzle[1] = GL_GREEN; obj->Swizzle[2] = GL_BLUE; obj->Swizzle[3] = GL_ALPHA; obj->_Swizzle = SWIZZLE_NOOP; - obj->sRGBDecode = GL_DECODE_EXT; + obj->Sampler.sRGBDecode = GL_DECODE_EXT; } @@ -158,10 +162,10 @@ finish_texture_init(struct gl_context *ctx, GLenum target, if (target == GL_TEXTURE_RECTANGLE_NV) { /* have to init wrap and filter state here - kind of klunky */ - obj->WrapS = GL_CLAMP_TO_EDGE; - obj->WrapT = GL_CLAMP_TO_EDGE; - obj->WrapR = GL_CLAMP_TO_EDGE; - obj->MinFilter = GL_LINEAR; + obj->Sampler.WrapS = GL_CLAMP_TO_EDGE; + obj->Sampler.WrapT = GL_CLAMP_TO_EDGE; + obj->Sampler.WrapR = GL_CLAMP_TO_EDGE; + obj->Sampler.MinFilter = GL_LINEAR; if (ctx->Driver.TexParameter) { static const GLfloat fparam_wrap[1] = {(GLfloat) GL_CLAMP_TO_EDGE}; static const GLfloat fparam_filter[1] = {(GLfloat) GL_LINEAR}; @@ -204,6 +208,8 @@ _mesa_delete_texture_object(struct gl_context *ctx, } } + _mesa_reference_buffer_object(ctx, &texObj->BufferObject, NULL); + /* destroy the mutex -- it may have allocated memory (eg on bsd) */ _glthread_DESTROY_MUTEX(texObj->Mutex); @@ -227,25 +233,25 @@ _mesa_copy_texture_object( struct gl_texture_object *dest, dest->Target = src->Target; dest->Name = src->Name; dest->Priority = src->Priority; - dest->BorderColor.f[0] = src->BorderColor.f[0]; - dest->BorderColor.f[1] = src->BorderColor.f[1]; - dest->BorderColor.f[2] = src->BorderColor.f[2]; - dest->BorderColor.f[3] = src->BorderColor.f[3]; - dest->WrapS = src->WrapS; - dest->WrapT = src->WrapT; - dest->WrapR = src->WrapR; - dest->MinFilter = src->MinFilter; - dest->MagFilter = src->MagFilter; - dest->MinLod = src->MinLod; - dest->MaxLod = src->MaxLod; - dest->LodBias = src->LodBias; + dest->Sampler.BorderColor.f[0] = src->Sampler.BorderColor.f[0]; + dest->Sampler.BorderColor.f[1] = src->Sampler.BorderColor.f[1]; + dest->Sampler.BorderColor.f[2] = src->Sampler.BorderColor.f[2]; + dest->Sampler.BorderColor.f[3] = src->Sampler.BorderColor.f[3]; + dest->Sampler.WrapS = src->Sampler.WrapS; + dest->Sampler.WrapT = src->Sampler.WrapT; + dest->Sampler.WrapR = src->Sampler.WrapR; + dest->Sampler.MinFilter = src->Sampler.MinFilter; + dest->Sampler.MagFilter = src->Sampler.MagFilter; + dest->Sampler.MinLod = src->Sampler.MinLod; + dest->Sampler.MaxLod = src->Sampler.MaxLod; + dest->Sampler.LodBias = src->Sampler.LodBias; dest->BaseLevel = src->BaseLevel; dest->MaxLevel = src->MaxLevel; - dest->MaxAnisotropy = src->MaxAnisotropy; - dest->CompareMode = src->CompareMode; - dest->CompareFunc = src->CompareFunc; - dest->CompareFailValue = src->CompareFailValue; - dest->DepthMode = src->DepthMode; + dest->Sampler.MaxAnisotropy = src->Sampler.MaxAnisotropy; + dest->Sampler.CompareMode = src->Sampler.CompareMode; + dest->Sampler.CompareFunc = src->Sampler.CompareFunc; + dest->Sampler.CompareFailValue = src->Sampler.CompareFailValue; + dest->Sampler.DepthMode = src->Sampler.DepthMode; dest->_MaxLevel = src->_MaxLevel; dest->_MaxLambda = src->_MaxLambda; dest->GenerateMipmap = src->GenerateMipmap; @@ -299,6 +305,7 @@ valid_texture_object(const struct gl_texture_object *tex) case GL_TEXTURE_RECTANGLE_NV: case GL_TEXTURE_1D_ARRAY_EXT: case GL_TEXTURE_2D_ARRAY_EXT: + case GL_TEXTURE_BUFFER: return GL_TRUE; case 0x99: _mesa_problem(NULL, "invalid reference to a deleted texture object"); @@ -501,7 +508,7 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, } /* extra checking for mipmaps */ - if (t->MinFilter != GL_NEAREST && t->MinFilter != GL_LINEAR) { + if (t->Sampler.MinFilter != GL_NEAREST && t->Sampler.MinFilter != GL_LINEAR) { /* * Mipmapping: determine if we have a complete set of mipmaps */ @@ -756,8 +763,8 @@ _mesa_get_fallback_texture(struct gl_context *ctx) /* create texture object */ texObj = ctx->Driver.NewTextureObject(ctx, 0, GL_TEXTURE_2D); assert(texObj->RefCount == 1); - texObj->MinFilter = GL_NEAREST; - texObj->MagFilter = GL_NEAREST; + texObj->Sampler.MinFilter = GL_NEAREST; + texObj->Sampler.MagFilter = GL_NEAREST; /* create level[0] texture image */ texImage = _mesa_get_tex_image(ctx, texObj, GL_TEXTURE_2D, 0); @@ -989,6 +996,8 @@ target_enum_to_index(GLenum target) return TEXTURE_1D_ARRAY_INDEX; case GL_TEXTURE_2D_ARRAY_EXT: return TEXTURE_2D_ARRAY_INDEX; + case GL_TEXTURE_BUFFER_ARB: + return TEXTURE_BUFFER_INDEX; default: return -1; } diff --git a/src/mesa/main/texobj.h b/src/mesa/main/texobj.h index 2461b063efd..476a17537a3 100644 --- a/src/mesa/main/texobj.h +++ b/src/mesa/main/texobj.h @@ -52,14 +52,16 @@ _mesa_initialize_texture_object( struct gl_texture_object *obj, GLuint name, GLenum target ); extern void -_mesa_delete_texture_object( struct gl_context *ctx, struct gl_texture_object *obj ); +_mesa_delete_texture_object( struct gl_context *ctx, + struct gl_texture_object *obj ); extern void _mesa_copy_texture_object( struct gl_texture_object *dest, const struct gl_texture_object *src ); extern void -_mesa_clear_texture_object(struct gl_context *ctx, struct gl_texture_object *obj); +_mesa_clear_texture_object(struct gl_context *ctx, + struct gl_texture_object *obj); extern void _mesa_reference_texobj(struct gl_texture_object **ptr, diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c index 6e14face4dd..3d56dac3f91 100644 --- a/src/mesa/main/texparam.c +++ b/src/mesa/main/texparam.c @@ -38,6 +38,7 @@ #include "main/macros.h" #include "main/mfeatures.h" #include "main/mtypes.h" +#include "main/state.h" #include "main/texcompress.h" #include "main/texparam.h" #include "main/teximage.h" @@ -215,13 +216,13 @@ set_tex_parameteri(struct gl_context *ctx, { switch (pname) { case GL_TEXTURE_MIN_FILTER: - if (texObj->MinFilter == params[0]) + if (texObj->Sampler.MinFilter == params[0]) return GL_FALSE; switch (params[0]) { case GL_NEAREST: case GL_LINEAR: incomplete(ctx, texObj); - texObj->MinFilter = params[0]; + texObj->Sampler.MinFilter = params[0]; return GL_TRUE; case GL_NEAREST_MIPMAP_NEAREST: case GL_LINEAR_MIPMAP_NEAREST: @@ -229,7 +230,7 @@ set_tex_parameteri(struct gl_context *ctx, case GL_LINEAR_MIPMAP_LINEAR: if (texObj->Target != GL_TEXTURE_RECTANGLE_NV) { incomplete(ctx, texObj); - texObj->MinFilter = params[0]; + texObj->Sampler.MinFilter = params[0]; return GL_TRUE; } /* fall-through */ @@ -239,13 +240,13 @@ set_tex_parameteri(struct gl_context *ctx, return GL_FALSE; case GL_TEXTURE_MAG_FILTER: - if (texObj->MagFilter == params[0]) + if (texObj->Sampler.MagFilter == params[0]) return GL_FALSE; switch (params[0]) { case GL_NEAREST: case GL_LINEAR: flush(ctx); /* does not effect completeness */ - texObj->MagFilter = params[0]; + texObj->Sampler.MagFilter = params[0]; return GL_TRUE; default: goto invalid_param; @@ -253,31 +254,31 @@ set_tex_parameteri(struct gl_context *ctx, return GL_FALSE; case GL_TEXTURE_WRAP_S: - if (texObj->WrapS == params[0]) + if (texObj->Sampler.WrapS == params[0]) return GL_FALSE; if (validate_texture_wrap_mode(ctx, texObj->Target, params[0])) { flush(ctx); - texObj->WrapS = params[0]; + texObj->Sampler.WrapS = params[0]; return GL_TRUE; } return GL_FALSE; case GL_TEXTURE_WRAP_T: - if (texObj->WrapT == params[0]) + if (texObj->Sampler.WrapT == params[0]) return GL_FALSE; if (validate_texture_wrap_mode(ctx, texObj->Target, params[0])) { flush(ctx); - texObj->WrapT = params[0]; + texObj->Sampler.WrapT = params[0]; return GL_TRUE; } return GL_FALSE; case GL_TEXTURE_WRAP_R: - if (texObj->WrapR == params[0]) + if (texObj->Sampler.WrapR == params[0]) return GL_FALSE; if (validate_texture_wrap_mode(ctx, texObj->Target, params[0])) { flush(ctx); - texObj->WrapR = params[0]; + texObj->Sampler.WrapR = params[0]; return GL_TRUE; } return GL_FALSE; @@ -317,12 +318,12 @@ set_tex_parameteri(struct gl_context *ctx, case GL_TEXTURE_COMPARE_MODE_ARB: if (ctx->Extensions.ARB_shadow) { - if (texObj->CompareMode == params[0]) + if (texObj->Sampler.CompareMode == params[0]) return GL_FALSE; if (params[0] == GL_NONE || params[0] == GL_COMPARE_R_TO_TEXTURE_ARB) { flush(ctx); - texObj->CompareMode = params[0]; + texObj->Sampler.CompareMode = params[0]; return GL_TRUE; } goto invalid_param; @@ -331,13 +332,13 @@ set_tex_parameteri(struct gl_context *ctx, case GL_TEXTURE_COMPARE_FUNC_ARB: if (ctx->Extensions.ARB_shadow) { - if (texObj->CompareFunc == params[0]) + if (texObj->Sampler.CompareFunc == params[0]) return GL_FALSE; switch (params[0]) { case GL_LEQUAL: case GL_GEQUAL: flush(ctx); - texObj->CompareFunc = params[0]; + texObj->Sampler.CompareFunc = params[0]; return GL_TRUE; case GL_EQUAL: case GL_NOTEQUAL: @@ -347,7 +348,7 @@ set_tex_parameteri(struct gl_context *ctx, case GL_NEVER: if (ctx->Extensions.EXT_shadow_funcs) { flush(ctx); - texObj->CompareFunc = params[0]; + texObj->Sampler.CompareFunc = params[0]; return GL_TRUE; } /* fall-through */ @@ -359,14 +360,14 @@ set_tex_parameteri(struct gl_context *ctx, case GL_DEPTH_TEXTURE_MODE_ARB: if (ctx->Extensions.ARB_depth_texture) { - if (texObj->DepthMode == params[0]) + if (texObj->Sampler.DepthMode == params[0]) return GL_FALSE; if (params[0] == GL_LUMINANCE || params[0] == GL_INTENSITY || params[0] == GL_ALPHA || (ctx->Extensions.ARB_texture_rg && params[0] == GL_RED)) { flush(ctx); - texObj->DepthMode = params[0]; + texObj->Sampler.DepthMode = params[0]; return GL_TRUE; } goto invalid_param; @@ -428,9 +429,9 @@ set_tex_parameteri(struct gl_context *ctx, if (ctx->Extensions.EXT_texture_sRGB_decode) { GLenum decode = params[0]; if (decode == GL_DECODE_EXT || decode == GL_SKIP_DECODE_EXT) { - if (texObj->sRGBDecode != decode) { + if (texObj->Sampler.sRGBDecode != decode) { flush(ctx); - texObj->sRGBDecode = decode; + texObj->Sampler.sRGBDecode = decode; _mesa_update_fetch_functions(texObj); } return GL_TRUE; @@ -465,17 +466,17 @@ set_tex_parameterf(struct gl_context *ctx, { switch (pname) { case GL_TEXTURE_MIN_LOD: - if (texObj->MinLod == params[0]) + if (texObj->Sampler.MinLod == params[0]) return GL_FALSE; flush(ctx); - texObj->MinLod = params[0]; + texObj->Sampler.MinLod = params[0]; return GL_TRUE; case GL_TEXTURE_MAX_LOD: - if (texObj->MaxLod == params[0]) + if (texObj->Sampler.MaxLod == params[0]) return GL_FALSE; flush(ctx); - texObj->MaxLod = params[0]; + texObj->Sampler.MaxLod = params[0]; return GL_TRUE; case GL_TEXTURE_PRIORITY: @@ -485,7 +486,7 @@ set_tex_parameterf(struct gl_context *ctx, case GL_TEXTURE_MAX_ANISOTROPY_EXT: if (ctx->Extensions.EXT_texture_filter_anisotropic) { - if (texObj->MaxAnisotropy == params[0]) + if (texObj->Sampler.MaxAnisotropy == params[0]) return GL_FALSE; if (params[0] < 1.0) { _mesa_error(ctx, GL_INVALID_VALUE, "glTexParameter(param)" ); @@ -493,7 +494,7 @@ set_tex_parameterf(struct gl_context *ctx, } flush(ctx); /* clamp to max, that's what NVIDIA does */ - texObj->MaxAnisotropy = MIN2(params[0], + texObj->Sampler.MaxAnisotropy = MIN2(params[0], ctx->Const.MaxTextureMaxAnisotropy); return GL_TRUE; } @@ -507,9 +508,9 @@ set_tex_parameterf(struct gl_context *ctx, case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB: if (ctx->Extensions.ARB_shadow_ambient) { - if (texObj->CompareFailValue != params[0]) { + if (texObj->Sampler.CompareFailValue != params[0]) { flush(ctx); - texObj->CompareFailValue = CLAMP(params[0], 0.0F, 1.0F); + texObj->Sampler.CompareFailValue = CLAMP(params[0], 0.0F, 1.0F); return GL_TRUE; } } @@ -522,9 +523,9 @@ set_tex_parameterf(struct gl_context *ctx, case GL_TEXTURE_LOD_BIAS: /* NOTE: this is really part of OpenGL 1.4, not EXT_texture_lod_bias */ if (ctx->Extensions.EXT_texture_lod_bias) { - if (texObj->LodBias != params[0]) { + if (texObj->Sampler.LodBias != params[0]) { flush(ctx); - texObj->LodBias = params[0]; + texObj->Sampler.LodBias = params[0]; return GL_TRUE; } return GL_FALSE; @@ -533,10 +534,18 @@ set_tex_parameterf(struct gl_context *ctx, case GL_TEXTURE_BORDER_COLOR: flush(ctx); - texObj->BorderColor.f[RCOMP] = params[0]; - texObj->BorderColor.f[GCOMP] = params[1]; - texObj->BorderColor.f[BCOMP] = params[2]; - texObj->BorderColor.f[ACOMP] = params[3]; + /* ARB_texture_float disables clamping */ + if (ctx->Extensions.ARB_texture_float) { + texObj->Sampler.BorderColor.f[RCOMP] = params[0]; + texObj->Sampler.BorderColor.f[GCOMP] = params[1]; + texObj->Sampler.BorderColor.f[BCOMP] = params[2]; + texObj->Sampler.BorderColor.f[ACOMP] = params[3]; + } else { + texObj->Sampler.BorderColor.f[RCOMP] = CLAMP(params[0], 0.0F, 1.0F); + texObj->Sampler.BorderColor.f[GCOMP] = CLAMP(params[1], 0.0F, 1.0F); + texObj->Sampler.BorderColor.f[BCOMP] = CLAMP(params[2], 0.0F, 1.0F); + texObj->Sampler.BorderColor.f[ACOMP] = CLAMP(params[3], 0.0F, 1.0F); + } return GL_TRUE; default: @@ -775,7 +784,7 @@ _mesa_TexParameterIiv(GLenum target, GLenum pname, const GLint *params) case GL_TEXTURE_BORDER_COLOR: FLUSH_VERTICES(ctx, _NEW_TEXTURE); /* set the integer-valued border color */ - COPY_4V(texObj->BorderColor.i, params); + COPY_4V(texObj->Sampler.BorderColor.i, params); break; default: _mesa_TexParameteriv(target, pname, params); @@ -805,7 +814,7 @@ _mesa_TexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) case GL_TEXTURE_BORDER_COLOR: FLUSH_VERTICES(ctx, _NEW_TEXTURE); /* set the unsigned integer-valued border color */ - COPY_4V(texObj->BorderColor.ui, params); + COPY_4V(texObj->Sampler.BorderColor.ui, params); break; default: _mesa_TexParameteriv(target, pname, (const GLint *) params); @@ -1092,25 +1101,37 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params ) _mesa_lock_texture(ctx, obj); switch (pname) { case GL_TEXTURE_MAG_FILTER: - *params = ENUM_TO_FLOAT(obj->MagFilter); + *params = ENUM_TO_FLOAT(obj->Sampler.MagFilter); break; case GL_TEXTURE_MIN_FILTER: - *params = ENUM_TO_FLOAT(obj->MinFilter); + *params = ENUM_TO_FLOAT(obj->Sampler.MinFilter); break; case GL_TEXTURE_WRAP_S: - *params = ENUM_TO_FLOAT(obj->WrapS); + *params = ENUM_TO_FLOAT(obj->Sampler.WrapS); break; case GL_TEXTURE_WRAP_T: - *params = ENUM_TO_FLOAT(obj->WrapT); + *params = ENUM_TO_FLOAT(obj->Sampler.WrapT); break; case GL_TEXTURE_WRAP_R: - *params = ENUM_TO_FLOAT(obj->WrapR); + *params = ENUM_TO_FLOAT(obj->Sampler.WrapR); break; case GL_TEXTURE_BORDER_COLOR: - params[0] = CLAMP(obj->BorderColor.f[0], 0.0F, 1.0F); - params[1] = CLAMP(obj->BorderColor.f[1], 0.0F, 1.0F); - params[2] = CLAMP(obj->BorderColor.f[2], 0.0F, 1.0F); - params[3] = CLAMP(obj->BorderColor.f[3], 0.0F, 1.0F); + if(ctx->NewState & (_NEW_BUFFERS | _NEW_FRAG_CLAMP)) + _mesa_update_state_locked(ctx); + if(ctx->Color._ClampFragmentColor) + { + params[0] = CLAMP(obj->Sampler.BorderColor.f[0], 0.0F, 1.0F); + params[1] = CLAMP(obj->Sampler.BorderColor.f[1], 0.0F, 1.0F); + params[2] = CLAMP(obj->Sampler.BorderColor.f[2], 0.0F, 1.0F); + params[3] = CLAMP(obj->Sampler.BorderColor.f[3], 0.0F, 1.0F); + } + else + { + params[0] = obj->Sampler.BorderColor.f[0]; + params[1] = obj->Sampler.BorderColor.f[1]; + params[2] = obj->Sampler.BorderColor.f[2]; + params[3] = obj->Sampler.BorderColor.f[3]; + } break; case GL_TEXTURE_RESIDENT: { @@ -1126,10 +1147,10 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params ) *params = obj->Priority; break; case GL_TEXTURE_MIN_LOD: - *params = obj->MinLod; + *params = obj->Sampler.MinLod; break; case GL_TEXTURE_MAX_LOD: - *params = obj->MaxLod; + *params = obj->Sampler.MaxLod; break; case GL_TEXTURE_BASE_LEVEL: *params = (GLfloat) obj->BaseLevel; @@ -1139,14 +1160,14 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params ) break; case GL_TEXTURE_MAX_ANISOTROPY_EXT: if (ctx->Extensions.EXT_texture_filter_anisotropic) { - *params = obj->MaxAnisotropy; + *params = obj->Sampler.MaxAnisotropy; } else error = GL_TRUE; break; case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB: if (ctx->Extensions.ARB_shadow_ambient) { - *params = obj->CompareFailValue; + *params = obj->Sampler.CompareFailValue; } else error = GL_TRUE; @@ -1156,28 +1177,28 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params ) break; case GL_TEXTURE_COMPARE_MODE_ARB: if (ctx->Extensions.ARB_shadow) { - *params = (GLfloat) obj->CompareMode; + *params = (GLfloat) obj->Sampler.CompareMode; } else error = GL_TRUE; break; case GL_TEXTURE_COMPARE_FUNC_ARB: if (ctx->Extensions.ARB_shadow) { - *params = (GLfloat) obj->CompareFunc; + *params = (GLfloat) obj->Sampler.CompareFunc; } else error = GL_TRUE; break; case GL_DEPTH_TEXTURE_MODE_ARB: if (ctx->Extensions.ARB_depth_texture) { - *params = (GLfloat) obj->DepthMode; + *params = (GLfloat) obj->Sampler.DepthMode; } else error = GL_TRUE; break; case GL_TEXTURE_LOD_BIAS: if (ctx->Extensions.EXT_texture_lod_bias) { - *params = obj->LodBias; + *params = obj->Sampler.LodBias; } else error = GL_TRUE; @@ -1244,27 +1265,27 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params ) _mesa_lock_texture(ctx, obj); switch (pname) { case GL_TEXTURE_MAG_FILTER: - *params = (GLint) obj->MagFilter; + *params = (GLint) obj->Sampler.MagFilter; break;; case GL_TEXTURE_MIN_FILTER: - *params = (GLint) obj->MinFilter; + *params = (GLint) obj->Sampler.MinFilter; break;; case GL_TEXTURE_WRAP_S: - *params = (GLint) obj->WrapS; + *params = (GLint) obj->Sampler.WrapS; break;; case GL_TEXTURE_WRAP_T: - *params = (GLint) obj->WrapT; + *params = (GLint) obj->Sampler.WrapT; break;; case GL_TEXTURE_WRAP_R: - *params = (GLint) obj->WrapR; + *params = (GLint) obj->Sampler.WrapR; break;; case GL_TEXTURE_BORDER_COLOR: { GLfloat b[4]; - b[0] = CLAMP(obj->BorderColor.f[0], 0.0F, 1.0F); - b[1] = CLAMP(obj->BorderColor.f[1], 0.0F, 1.0F); - b[2] = CLAMP(obj->BorderColor.f[2], 0.0F, 1.0F); - b[3] = CLAMP(obj->BorderColor.f[3], 0.0F, 1.0F); + b[0] = CLAMP(obj->Sampler.BorderColor.f[0], 0.0F, 1.0F); + b[1] = CLAMP(obj->Sampler.BorderColor.f[1], 0.0F, 1.0F); + b[2] = CLAMP(obj->Sampler.BorderColor.f[2], 0.0F, 1.0F); + b[3] = CLAMP(obj->Sampler.BorderColor.f[3], 0.0F, 1.0F); params[0] = FLOAT_TO_INT(b[0]); params[1] = FLOAT_TO_INT(b[1]); params[2] = FLOAT_TO_INT(b[2]); @@ -1285,10 +1306,10 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params ) *params = FLOAT_TO_INT(obj->Priority); break;; case GL_TEXTURE_MIN_LOD: - *params = (GLint) obj->MinLod; + *params = (GLint) obj->Sampler.MinLod; break;; case GL_TEXTURE_MAX_LOD: - *params = (GLint) obj->MaxLod; + *params = (GLint) obj->Sampler.MaxLod; break;; case GL_TEXTURE_BASE_LEVEL: *params = obj->BaseLevel; @@ -1298,7 +1319,7 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params ) break;; case GL_TEXTURE_MAX_ANISOTROPY_EXT: if (ctx->Extensions.EXT_texture_filter_anisotropic) { - *params = (GLint) obj->MaxAnisotropy; + *params = (GLint) obj->Sampler.MaxAnisotropy; } else { error = GL_TRUE; @@ -1306,7 +1327,7 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params ) break; case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB: if (ctx->Extensions.ARB_shadow_ambient) { - *params = (GLint) FLOAT_TO_INT(obj->CompareFailValue); + *params = (GLint) FLOAT_TO_INT(obj->Sampler.CompareFailValue); } else { error = GL_TRUE; @@ -1317,7 +1338,7 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params ) break; case GL_TEXTURE_COMPARE_MODE_ARB: if (ctx->Extensions.ARB_shadow) { - *params = (GLint) obj->CompareMode; + *params = (GLint) obj->Sampler.CompareMode; } else { error = GL_TRUE; @@ -1325,7 +1346,7 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params ) break; case GL_TEXTURE_COMPARE_FUNC_ARB: if (ctx->Extensions.ARB_shadow) { - *params = (GLint) obj->CompareFunc; + *params = (GLint) obj->Sampler.CompareFunc; } else { error = GL_TRUE; @@ -1333,7 +1354,7 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params ) break; case GL_DEPTH_TEXTURE_MODE_ARB: if (ctx->Extensions.ARB_depth_texture) { - *params = (GLint) obj->DepthMode; + *params = (GLint) obj->Sampler.DepthMode; } else { error = GL_TRUE; @@ -1341,7 +1362,7 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params ) break; case GL_TEXTURE_LOD_BIAS: if (ctx->Extensions.EXT_texture_lod_bias) { - *params = (GLint) obj->LodBias; + *params = (GLint) obj->Sampler.LodBias; } else { error = GL_TRUE; @@ -1401,7 +1422,7 @@ _mesa_GetTexParameterIiv(GLenum target, GLenum pname, GLint *params) switch (pname) { case GL_TEXTURE_BORDER_COLOR: - COPY_4V(params, texObj->BorderColor.i); + COPY_4V(params, texObj->Sampler.BorderColor.i); break; default: _mesa_GetTexParameteriv(target, pname, params); @@ -1421,7 +1442,7 @@ _mesa_GetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) switch (pname) { case GL_TEXTURE_BORDER_COLOR: - COPY_4V(params, texObj->BorderColor.i); + COPY_4V(params, texObj->Sampler.BorderColor.i); break; default: { diff --git a/src/mesa/main/texrender.c b/src/mesa/main/texrender.c index 8cec24c3e24..a7641a5f9a4 100644 --- a/src/mesa/main/texrender.c +++ b/src/mesa/main/texrender.c @@ -1,6 +1,7 @@ #include "context.h" #include "colormac.h" +#include "fbobject.h" #include "macros.h" #include "texfetch.h" #include "teximage.h" @@ -525,7 +526,7 @@ wrap_texture(struct gl_context *ctx, struct gl_renderbuffer_attachment *att) * update the internal format info, etc. */ static void -update_wrapper(struct gl_context *ctx, const struct gl_renderbuffer_attachment *att) +update_wrapper(struct gl_context *ctx, struct gl_renderbuffer_attachment *att) { struct texture_renderbuffer *trb = (struct texture_renderbuffer *) att->Renderbuffer; @@ -533,7 +534,7 @@ update_wrapper(struct gl_context *ctx, const struct gl_renderbuffer_attachment * (void) ctx; ASSERT(trb); - trb->TexImage = att->Texture->Image[att->CubeMapFace][att->TextureLevel]; + trb->TexImage = _mesa_get_attachment_teximage(att); ASSERT(trb->TexImage); trb->Store = _mesa_get_texel_store_func(trb->TexImage->TexFormat); diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c index 41d531f5976..1810b88b2bf 100644 --- a/src/mesa/main/texstate.c +++ b/src/mesa/main/texstate.c @@ -30,6 +30,7 @@ #include "glheader.h" #include "mfeatures.h" +#include "bufferobj.h" #include "colormac.h" #include "colortab.h" #include "context.h" @@ -406,7 +407,7 @@ update_tex_combine(struct gl_context *ctx, struct gl_texture_unit *texUnit) } else if (format == GL_DEPTH_COMPONENT || format == GL_DEPTH_STENCIL_EXT) { - format = texObj->DepthMode; + format = texObj->Sampler.DepthMode; } calculate_derived_texenv(&texUnit->_EnvMode, texUnit->EnvMode, format); texUnit->_CurrentCombine = & texUnit->_EnvMode; @@ -692,7 +693,8 @@ alloc_proxy_textures( struct gl_context *ctx ) GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_1D_ARRAY_EXT, - GL_TEXTURE_2D_ARRAY_EXT + GL_TEXTURE_2D_ARRAY_EXT, + GL_TEXTURE_BUFFER }; GLint tgt; @@ -793,6 +795,10 @@ _mesa_init_texture(struct gl_context *ctx) if (!alloc_proxy_textures( ctx )) return GL_FALSE; + /* GL_ARB_texture_buffer_object */ + _mesa_reference_buffer_object(ctx, &ctx->Texture.BufferObject, + ctx->Shared->NullBufferObj); + return GL_TRUE; } @@ -818,6 +824,15 @@ _mesa_free_texture_data(struct gl_context *ctx) /* Free proxy texture objects */ for (tgt = 0; tgt < NUM_TEXTURE_TARGETS; tgt++) ctx->Driver.DeleteTexture(ctx, ctx->Texture.ProxyTex[tgt]); + + /* GL_ARB_texture_buffer_object */ + _mesa_reference_buffer_object(ctx, &ctx->Texture.BufferObject, NULL); + +#if FEATURE_sampler_objects + for (u = 0; u < Elements(ctx->Texture.Unit); u++) { + _mesa_reference_sampler_object(ctx, &ctx->Texture.Unit[u].Sampler, NULL); + } +#endif } diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c index 591759149ad..9a690529a83 100644 --- a/src/mesa/main/texstore.c +++ b/src/mesa/main/texstore.c @@ -2186,8 +2186,11 @@ _mesa_texstore_unorm88(TEXSTORE_PARAMS) if (!ctx->_ImageTransferState && !srcPacking->SwapBytes && - (dstFormat == MESA_FORMAT_AL88 || dstFormat == MESA_FORMAT_RG88) && - baseInternalFormat == srcFormat && + ((dstFormat == MESA_FORMAT_AL88 && + baseInternalFormat == GL_LUMINANCE_ALPHA && + srcFormat == GL_LUMINANCE_ALPHA) || + (dstFormat == MESA_FORMAT_RG88 && + baseInternalFormat == srcFormat)) && srcType == GL_UNSIGNED_BYTE && littleEndian) { /* simple memcpy path */ @@ -2305,8 +2308,11 @@ _mesa_texstore_unorm1616(TEXSTORE_PARAMS) if (!ctx->_ImageTransferState && !srcPacking->SwapBytes && - (dstFormat == MESA_FORMAT_AL1616 || dstFormat == MESA_FORMAT_RG1616) && - baseInternalFormat == srcFormat && + ((dstFormat == MESA_FORMAT_AL1616 && + baseInternalFormat == GL_LUMINANCE_ALPHA && + srcFormat == GL_LUMINANCE_ALPHA) || + (dstFormat == MESA_FORMAT_RG1616 && + baseInternalFormat == srcFormat)) && srcType == GL_UNSIGNED_SHORT && littleEndian) { /* simple memcpy path */ @@ -2500,9 +2506,7 @@ _mesa_texstore_signed_rgba_16(TEXSTORE_PARAMS) const GLuint texelBytes = _mesa_get_format_bytes(dstFormat); const GLenum baseFormat = _mesa_get_format_base_format(dstFormat); - ASSERT(dstFormat == MESA_FORMAT_SIGNED_R_16 || - dstFormat == MESA_FORMAT_SIGNED_RG_16 || - dstFormat == MESA_FORMAT_SIGNED_RGB_16 || + ASSERT(dstFormat == MESA_FORMAT_SIGNED_RGB_16 || dstFormat == MESA_FORMAT_SIGNED_RGBA_16); if (!ctx->_ImageTransferState && @@ -2545,16 +2549,29 @@ _mesa_texstore_signed_rgba_16(TEXSTORE_PARAMS) + dstXoffset * texelBytes; for (row = 0; row < srcHeight; row++) { GLshort *dstRowS = (GLshort *) dstRow; - for (col = 0; col < srcWidth; col++) { - GLuint c; - for (c = 0; c < comps; c++) { - GLshort p; - UNCLAMPED_FLOAT_TO_SHORT(p, src[col * 4 + c]); - dstRowS[col * comps + c] = p; + if (dstFormat == MESA_FORMAT_SIGNED_RGBA_16) { + for (col = 0; col < srcWidth; col++) { + GLuint c; + for (c = 0; c < comps; c++) { + GLshort p; + UNCLAMPED_FLOAT_TO_SHORT(p, src[col * 4 + c]); + dstRowS[col * comps + c] = p; + } + } + dstRow += dstRowStride; + src += 4 * srcWidth; + } else { + for (col = 0; col < srcWidth; col++) { + GLuint c; + for (c = 0; c < comps; c++) { + GLshort p; + UNCLAMPED_FLOAT_TO_SHORT(p, src[col * 3 + c]); + dstRowS[col * comps + c] = p; + } } + dstRow += dstRowStride; + src += 3 * srcWidth; } - dstRow += dstRowStride; - src += 4 * srcWidth; } } free((void *) tempImage); @@ -2889,19 +2906,33 @@ _mesa_texstore_dudv8(TEXSTORE_PARAMS) /** - * Store a texture in MESA_FORMAT_SIGNED_R8 format. + * Store a texture in a signed normalized 8-bit format. */ static GLboolean -_mesa_texstore_signed_r8(TEXSTORE_PARAMS) +_mesa_texstore_snorm8(TEXSTORE_PARAMS) { const GLuint texelBytes = _mesa_get_format_bytes(dstFormat); const GLenum baseFormat = _mesa_get_format_base_format(dstFormat); - ASSERT(dstFormat == MESA_FORMAT_SIGNED_R8); + ASSERT(dstFormat == MESA_FORMAT_SIGNED_A8 || + dstFormat == MESA_FORMAT_SIGNED_L8 || + dstFormat == MESA_FORMAT_SIGNED_I8 || + dstFormat == MESA_FORMAT_SIGNED_R8); ASSERT(texelBytes == 1); - /* XXX look at adding optimized paths */ - { + if (!ctx->_ImageTransferState && + !srcPacking->SwapBytes && + baseInternalFormat == srcFormat && + srcType == GL_BYTE) { + /* simple memcpy path */ + memcpy_texture(ctx, dims, + dstFormat, dstAddr, dstXoffset, dstYoffset, dstZoffset, + dstRowStride, + dstImageOffsets, + srcWidth, srcHeight, srcDepth, srcFormat, srcType, + srcAddr, srcPacking); + } + else { /* general path */ const GLfloat *tempImage = _mesa_make_temp_float_image(ctx, dims, baseInternalFormat, @@ -2910,21 +2941,21 @@ _mesa_texstore_signed_r8(TEXSTORE_PARAMS) srcFormat, srcType, srcAddr, srcPacking, ctx->_ImageTransferState); - const GLfloat *srcRow = tempImage; + const GLfloat *src = tempImage; GLint img, row, col; if (!tempImage) return GL_FALSE; for (img = 0; img < srcDepth; img++) { - GLubyte *dstRow = (GLubyte *) dstAddr + GLbyte *dstRow = (GLbyte *) dstAddr + dstImageOffsets[dstZoffset + img] * texelBytes + dstYoffset * dstRowStride + dstXoffset * texelBytes; for (row = 0; row < srcHeight; row++) { - GLubyte *dstB = (GLubyte *) dstRow; for (col = 0; col < srcWidth; col++) { - dstB[col] = FLOAT_TO_BYTE_TEX(srcRow[RCOMP]); + dstRow[col] = FLOAT_TO_BYTE_TEX(src[col]); } dstRow += dstRowStride; + src += srcWidth; } } free((void *) tempImage); @@ -2934,19 +2965,33 @@ _mesa_texstore_signed_r8(TEXSTORE_PARAMS) /** - * Store a texture in MESA_FORMAT_SIGNED_RG88 format. + * Store a texture in a signed normalized two-channel 16-bit format. */ static GLboolean -_mesa_texstore_signed_rg88(TEXSTORE_PARAMS) +_mesa_texstore_snorm88(TEXSTORE_PARAMS) { + const GLboolean littleEndian = _mesa_little_endian(); const GLuint texelBytes = _mesa_get_format_bytes(dstFormat); const GLenum baseFormat = _mesa_get_format_base_format(dstFormat); - ASSERT(dstFormat == MESA_FORMAT_SIGNED_RG88); - ASSERT(texelBytes == 1); + ASSERT(dstFormat == MESA_FORMAT_SIGNED_AL88 || + dstFormat == MESA_FORMAT_SIGNED_RG88_REV); + ASSERT(texelBytes == 2); - /* XXX look at adding optimized paths */ - { + if (!ctx->_ImageTransferState && + !srcPacking->SwapBytes && + baseInternalFormat == srcFormat && + srcType == GL_BYTE && + littleEndian) { + /* simple memcpy path */ + memcpy_texture(ctx, dims, + dstFormat, dstAddr, dstXoffset, dstYoffset, dstZoffset, + dstRowStride, + dstImageOffsets, + srcWidth, srcHeight, srcDepth, srcFormat, srcType, + srcAddr, srcPacking); + } + else { /* general path */ const GLfloat *tempImage = _mesa_make_temp_float_image(ctx, dims, baseInternalFormat, @@ -2955,20 +3000,22 @@ _mesa_texstore_signed_rg88(TEXSTORE_PARAMS) srcFormat, srcType, srcAddr, srcPacking, ctx->_ImageTransferState); - const GLfloat *srcRow = tempImage; + const GLfloat *src = tempImage; GLint img, row, col; if (!tempImage) return GL_FALSE; for (img = 0; img < srcDepth; img++) { - GLubyte *dstRow = (GLubyte *) dstAddr + GLbyte *dstRow = (GLbyte *) dstAddr + dstImageOffsets[dstZoffset + img] * texelBytes + dstYoffset * dstRowStride + dstXoffset * texelBytes; for (row = 0; row < srcHeight; row++) { - GLushort *dstUS = (GLushort *) dstRow; + GLbyte *dst = dstRow; for (col = 0; col < srcWidth; col++) { - dstUS[col] = PACK_COLOR_88(FLOAT_TO_BYTE_TEX(srcRow[RCOMP]), - FLOAT_TO_BYTE_TEX(srcRow[GCOMP])); + dst[0] = FLOAT_TO_BYTE_TEX(src[0]); + dst[1] = FLOAT_TO_BYTE_TEX(src[1]); + src += 2; + dst += 2; } dstRow += dstRowStride; } @@ -2978,6 +3025,132 @@ _mesa_texstore_signed_rg88(TEXSTORE_PARAMS) return GL_TRUE; } +/* Texstore for signed R16, A16, L16, I16. */ +static GLboolean +_mesa_texstore_snorm16(TEXSTORE_PARAMS) +{ + const GLboolean littleEndian = _mesa_little_endian(); + const GLuint texelBytes = _mesa_get_format_bytes(dstFormat); + const GLenum baseFormat = _mesa_get_format_base_format(dstFormat); + + ASSERT(dstFormat == MESA_FORMAT_SIGNED_R16 || + dstFormat == MESA_FORMAT_SIGNED_A16 || + dstFormat == MESA_FORMAT_SIGNED_L16 || + dstFormat == MESA_FORMAT_SIGNED_I16); + ASSERT(texelBytes == 2); + + if (!ctx->_ImageTransferState && + !srcPacking->SwapBytes && + baseInternalFormat == srcFormat && + srcType == GL_SHORT && + littleEndian) { + /* simple memcpy path */ + memcpy_texture(ctx, dims, + dstFormat, dstAddr, dstXoffset, dstYoffset, dstZoffset, + dstRowStride, + dstImageOffsets, + srcWidth, srcHeight, srcDepth, srcFormat, srcType, + srcAddr, srcPacking); + } + else { + /* general path */ + const GLfloat *tempImage = _mesa_make_temp_float_image(ctx, dims, + baseInternalFormat, + baseFormat, + srcWidth, srcHeight, srcDepth, + srcFormat, srcType, srcAddr, + srcPacking, + ctx->_ImageTransferState); + const GLfloat *src = tempImage; + GLint img, row, col; + if (!tempImage) + return GL_FALSE; + for (img = 0; img < srcDepth; img++) { + GLubyte *dstRow = (GLubyte *) dstAddr + + dstImageOffsets[dstZoffset + img] * texelBytes + + dstYoffset * dstRowStride + + dstXoffset * texelBytes; + for (row = 0; row < srcHeight; row++) { + GLshort *dstUS = (GLshort *) dstRow; + for (col = 0; col < srcWidth; col++) { + GLushort r; + + UNCLAMPED_FLOAT_TO_SHORT(r, src[0]); + dstUS[col] = r; + src += 1; + } + dstRow += dstRowStride; + } + } + free((void *) tempImage); + } + return GL_TRUE; +} + +/** + * Do texstore for 2-channel, 16-bit/channel, signed normalized formats. + */ +static GLboolean +_mesa_texstore_snorm1616(TEXSTORE_PARAMS) +{ + const GLboolean littleEndian = _mesa_little_endian(); + const GLuint texelBytes = _mesa_get_format_bytes(dstFormat); + const GLenum baseFormat = _mesa_get_format_base_format(dstFormat); + + ASSERT(dstFormat == MESA_FORMAT_SIGNED_AL1616 || + dstFormat == MESA_FORMAT_SIGNED_GR1616); + ASSERT(texelBytes == 4); + + if (!ctx->_ImageTransferState && + !srcPacking->SwapBytes && + baseInternalFormat == srcFormat && + srcType == GL_SHORT && + littleEndian) { + /* simple memcpy path */ + memcpy_texture(ctx, dims, + dstFormat, dstAddr, dstXoffset, dstYoffset, dstZoffset, + dstRowStride, + dstImageOffsets, + srcWidth, srcHeight, srcDepth, srcFormat, srcType, + srcAddr, srcPacking); + } + else { + /* general path */ + const GLfloat *tempImage = _mesa_make_temp_float_image(ctx, dims, + baseInternalFormat, + baseFormat, + srcWidth, srcHeight, srcDepth, + srcFormat, srcType, srcAddr, + srcPacking, + ctx->_ImageTransferState); + const GLfloat *src = tempImage; + GLint img, row, col; + if (!tempImage) + return GL_FALSE; + for (img = 0; img < srcDepth; img++) { + GLubyte *dstRow = (GLubyte *) dstAddr + + dstImageOffsets[dstZoffset + img] * texelBytes + + dstYoffset * dstRowStride + + dstXoffset * texelBytes; + for (row = 0; row < srcHeight; row++) { + GLshort *dst = (GLshort *) dstRow; + for (col = 0; col < srcWidth; col++) { + GLushort l, a; + + UNCLAMPED_FLOAT_TO_SHORT(l, src[0]); + UNCLAMPED_FLOAT_TO_SHORT(a, src[1]); + dst[0] = l; + dst[1] = a; + src += 2; + dst += 2; + } + dstRow += dstRowStride; + } + } + free((void *) tempImage); + } + return GL_TRUE; +} /** * Store a texture in MESA_FORMAT_SIGNED_RGBX8888. @@ -3005,18 +3178,19 @@ _mesa_texstore_signed_rgbx8888(TEXSTORE_PARAMS) if (!tempImage) return GL_FALSE; for (img = 0; img < srcDepth; img++) { - GLubyte *dstRow = (GLubyte *) dstAddr + GLbyte *dstRow = (GLbyte *) dstAddr + dstImageOffsets[dstZoffset + img] * texelBytes + dstYoffset * dstRowStride + dstXoffset * texelBytes; for (row = 0; row < srcHeight; row++) { - GLuint *dstUI = (GLuint *) dstRow; + GLbyte *dst = dstRow; for (col = 0; col < srcWidth; col++) { - dstUI[col] = PACK_COLOR_8888( FLOAT_TO_BYTE_TEX(srcRow[RCOMP]), - FLOAT_TO_BYTE_TEX(srcRow[GCOMP]), - FLOAT_TO_BYTE_TEX(srcRow[BCOMP]), - 0xff ); - srcRow += 4; + dst[3] = FLOAT_TO_BYTE_TEX(srcRow[RCOMP]); + dst[2] = FLOAT_TO_BYTE_TEX(srcRow[GCOMP]); + dst[1] = FLOAT_TO_BYTE_TEX(srcRow[BCOMP]); + dst[0] = 127; + srcRow += 3; + dst += 4; } dstRow += dstRowStride; } @@ -3071,39 +3245,6 @@ _mesa_texstore_signed_rgba8888(TEXSTORE_PARAMS) srcWidth, srcHeight, srcDepth, srcFormat, srcType, srcAddr, srcPacking); } - else if (!ctx->_ImageTransferState && - (srcType == GL_BYTE) && - can_swizzle(baseInternalFormat) && - can_swizzle(srcFormat)) { - - GLubyte dstmap[4]; - - /* dstmap - how to swizzle from RGBA to dst format: - */ - if ((littleEndian && dstFormat == MESA_FORMAT_SIGNED_RGBA8888) || - (!littleEndian && dstFormat == MESA_FORMAT_SIGNED_RGBA8888_REV)) { - dstmap[3] = 0; - dstmap[2] = 1; - dstmap[1] = 2; - dstmap[0] = 3; - } - else { - dstmap[3] = 3; - dstmap[2] = 2; - dstmap[1] = 1; - dstmap[0] = 0; - } - - _mesa_swizzle_ubyte_image(ctx, dims, - srcFormat, - srcType, - baseInternalFormat, - dstmap, 4, - dstAddr, dstXoffset, dstYoffset, dstZoffset, - dstRowStride, dstImageOffsets, - srcWidth, srcHeight, srcDepth, srcAddr, - srcPacking); - } else { /* general path */ const GLfloat *tempImage = _mesa_make_temp_float_image(ctx, dims, @@ -3118,28 +3259,30 @@ _mesa_texstore_signed_rgba8888(TEXSTORE_PARAMS) if (!tempImage) return GL_FALSE; for (img = 0; img < srcDepth; img++) { - GLubyte *dstRow = (GLubyte *) dstAddr + GLbyte *dstRow = (GLbyte *) dstAddr + dstImageOffsets[dstZoffset + img] * texelBytes + dstYoffset * dstRowStride + dstXoffset * texelBytes; for (row = 0; row < srcHeight; row++) { - GLuint *dstUI = (GLuint *) dstRow; + GLbyte *dst = dstRow; if (dstFormat == MESA_FORMAT_SIGNED_RGBA8888) { for (col = 0; col < srcWidth; col++) { - dstUI[col] = PACK_COLOR_8888( FLOAT_TO_BYTE_TEX(srcRow[RCOMP]), - FLOAT_TO_BYTE_TEX(srcRow[GCOMP]), - FLOAT_TO_BYTE_TEX(srcRow[BCOMP]), - FLOAT_TO_BYTE_TEX(srcRow[ACOMP]) ); + dst[3] = FLOAT_TO_BYTE_TEX(srcRow[RCOMP]); + dst[2] = FLOAT_TO_BYTE_TEX(srcRow[GCOMP]); + dst[1] = FLOAT_TO_BYTE_TEX(srcRow[BCOMP]); + dst[0] = FLOAT_TO_BYTE_TEX(srcRow[ACOMP]); srcRow += 4; + dst += 4; } } else { for (col = 0; col < srcWidth; col++) { - dstUI[col] = PACK_COLOR_8888_REV( FLOAT_TO_BYTE_TEX(srcRow[RCOMP]), - FLOAT_TO_BYTE_TEX(srcRow[GCOMP]), - FLOAT_TO_BYTE_TEX(srcRow[BCOMP]), - FLOAT_TO_BYTE_TEX(srcRow[ACOMP]) ); + dst[0] = FLOAT_TO_BYTE_TEX(srcRow[RCOMP]); + dst[1] = FLOAT_TO_BYTE_TEX(srcRow[GCOMP]); + dst[2] = FLOAT_TO_BYTE_TEX(srcRow[BCOMP]); + dst[3] = FLOAT_TO_BYTE_TEX(srcRow[ACOMP]); srcRow += 4; + dst += 4; } } dstRow += dstRowStride; @@ -3392,13 +3535,17 @@ _mesa_texstore_rgba_float32(TEXSTORE_PARAMS) dstFormat == MESA_FORMAT_ALPHA_FLOAT32 || dstFormat == MESA_FORMAT_LUMINANCE_FLOAT32 || dstFormat == MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32 || - dstFormat == MESA_FORMAT_INTENSITY_FLOAT32); + dstFormat == MESA_FORMAT_INTENSITY_FLOAT32 || + dstFormat == MESA_FORMAT_R_FLOAT32 || + dstFormat == MESA_FORMAT_RG_FLOAT32); ASSERT(baseInternalFormat == GL_RGBA || baseInternalFormat == GL_RGB || baseInternalFormat == GL_ALPHA || baseInternalFormat == GL_LUMINANCE || baseInternalFormat == GL_LUMINANCE_ALPHA || - baseInternalFormat == GL_INTENSITY); + baseInternalFormat == GL_INTENSITY || + baseInternalFormat == GL_RED || + baseInternalFormat == GL_RG); ASSERT(texelBytes == components * sizeof(GLfloat)); if (!ctx->_ImageTransferState && @@ -3462,13 +3609,17 @@ _mesa_texstore_rgba_float16(TEXSTORE_PARAMS) dstFormat == MESA_FORMAT_ALPHA_FLOAT16 || dstFormat == MESA_FORMAT_LUMINANCE_FLOAT16 || dstFormat == MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16 || - dstFormat == MESA_FORMAT_INTENSITY_FLOAT16); + dstFormat == MESA_FORMAT_INTENSITY_FLOAT16 || + dstFormat == MESA_FORMAT_R_FLOAT16 || + dstFormat == MESA_FORMAT_RG_FLOAT16); ASSERT(baseInternalFormat == GL_RGBA || baseInternalFormat == GL_RGB || baseInternalFormat == GL_ALPHA || baseInternalFormat == GL_LUMINANCE || baseInternalFormat == GL_LUMINANCE_ALPHA || - baseInternalFormat == GL_INTENSITY); + baseInternalFormat == GL_INTENSITY || + baseInternalFormat == GL_RED || + baseInternalFormat == GL_RG); ASSERT(texelBytes == components * sizeof(GLhalfARB)); if (!ctx->_ImageTransferState && @@ -4109,6 +4260,10 @@ texstore_funcs[MESA_FORMAT_COUNT] = { MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16, _mesa_texstore_rgba_float16 }, { MESA_FORMAT_INTENSITY_FLOAT32, _mesa_texstore_rgba_float32 }, { MESA_FORMAT_INTENSITY_FLOAT16, _mesa_texstore_rgba_float16 }, + { MESA_FORMAT_R_FLOAT32, _mesa_texstore_rgba_float32 }, + { MESA_FORMAT_R_FLOAT16, _mesa_texstore_rgba_float16 }, + { MESA_FORMAT_RG_FLOAT32, _mesa_texstore_rgba_float32 }, + { MESA_FORMAT_RG_FLOAT16, _mesa_texstore_rgba_float16 }, { MESA_FORMAT_RGBA_INT8, _mesa_texstore_rgba_int8 }, { MESA_FORMAT_RGBA_INT16, _mesa_texstore_rgba_int16 }, @@ -4119,15 +4274,15 @@ texstore_funcs[MESA_FORMAT_COUNT] = { MESA_FORMAT_DUDV8, _mesa_texstore_dudv8 }, - { MESA_FORMAT_SIGNED_R8, _mesa_texstore_signed_r8 }, - { MESA_FORMAT_SIGNED_RG88, _mesa_texstore_signed_rg88 }, + { MESA_FORMAT_SIGNED_R8, _mesa_texstore_snorm8 }, + { MESA_FORMAT_SIGNED_RG88_REV, _mesa_texstore_snorm88 }, { MESA_FORMAT_SIGNED_RGBX8888, _mesa_texstore_signed_rgbx8888 }, { MESA_FORMAT_SIGNED_RGBA8888, _mesa_texstore_signed_rgba8888 }, { MESA_FORMAT_SIGNED_RGBA8888_REV, _mesa_texstore_signed_rgba8888 }, - { MESA_FORMAT_SIGNED_R_16, _mesa_texstore_signed_rgba_16 }, - { MESA_FORMAT_SIGNED_RG_16, _mesa_texstore_signed_rgba_16 }, + { MESA_FORMAT_SIGNED_R16, _mesa_texstore_snorm16 }, + { MESA_FORMAT_SIGNED_GR1616, _mesa_texstore_snorm1616 }, { MESA_FORMAT_SIGNED_RGB_16, _mesa_texstore_signed_rgba_16 }, { MESA_FORMAT_SIGNED_RGBA_16, _mesa_texstore_signed_rgba_16 }, { MESA_FORMAT_RGBA_16, _mesa_texstore_rgba_16 }, @@ -4142,7 +4297,17 @@ texstore_funcs[MESA_FORMAT_COUNT] = { MESA_FORMAT_L_LATC1, _mesa_texstore_red_rgtc1 }, { MESA_FORMAT_SIGNED_L_LATC1, _mesa_texstore_signed_red_rgtc1 }, { MESA_FORMAT_LA_LATC2, _mesa_texstore_rg_rgtc2 }, - { MESA_FORMAT_SIGNED_LA_LATC2, _mesa_texstore_signed_rg_rgtc2 } + { MESA_FORMAT_SIGNED_LA_LATC2, _mesa_texstore_signed_rg_rgtc2 }, + + { MESA_FORMAT_SIGNED_A8, _mesa_texstore_snorm8 }, + { MESA_FORMAT_SIGNED_L8, _mesa_texstore_snorm8 }, + { MESA_FORMAT_SIGNED_AL88, _mesa_texstore_snorm88 }, + { MESA_FORMAT_SIGNED_I8, _mesa_texstore_snorm8 }, + + { MESA_FORMAT_SIGNED_A16, _mesa_texstore_snorm16 }, + { MESA_FORMAT_SIGNED_L16, _mesa_texstore_snorm16 }, + { MESA_FORMAT_SIGNED_AL1616, _mesa_texstore_snorm1616 }, + { MESA_FORMAT_SIGNED_I16, _mesa_texstore_snorm16 }, }; diff --git a/src/mesa/main/uniforms.c b/src/mesa/main/uniforms.c index 1d74efafdf7..f984ce3bc56 100644 --- a/src/mesa/main/uniforms.c +++ b/src/mesa/main/uniforms.c @@ -82,254 +82,6 @@ base_uniform_type(GLenum type) } } -static struct gl_builtin_uniform_element gl_DepthRange_elements[] = { - {"near", {STATE_DEPTH_RANGE, 0, 0}, SWIZZLE_XXXX}, - {"far", {STATE_DEPTH_RANGE, 0, 0}, SWIZZLE_YYYY}, - {"diff", {STATE_DEPTH_RANGE, 0, 0}, SWIZZLE_ZZZZ}, -}; - -static struct gl_builtin_uniform_element gl_ClipPlane_elements[] = { - {NULL, {STATE_CLIPPLANE, 0, 0}, SWIZZLE_XYZW} -}; - -static struct gl_builtin_uniform_element gl_Point_elements[] = { - {"size", {STATE_POINT_SIZE}, SWIZZLE_XXXX}, - {"sizeMin", {STATE_POINT_SIZE}, SWIZZLE_YYYY}, - {"sizeMax", {STATE_POINT_SIZE}, SWIZZLE_ZZZZ}, - {"fadeThresholdSize", {STATE_POINT_SIZE}, SWIZZLE_WWWW}, - {"distanceConstantAttenuation", {STATE_POINT_ATTENUATION}, SWIZZLE_XXXX}, - {"distanceLinearAttenuation", {STATE_POINT_ATTENUATION}, SWIZZLE_YYYY}, - {"distanceQuadraticAttenuation", {STATE_POINT_ATTENUATION}, SWIZZLE_ZZZZ}, -}; - -static struct gl_builtin_uniform_element gl_FrontMaterial_elements[] = { - {"emission", {STATE_MATERIAL, 0, STATE_EMISSION}, SWIZZLE_XYZW}, - {"ambient", {STATE_MATERIAL, 0, STATE_AMBIENT}, SWIZZLE_XYZW}, - {"diffuse", {STATE_MATERIAL, 0, STATE_DIFFUSE}, SWIZZLE_XYZW}, - {"specular", {STATE_MATERIAL, 0, STATE_SPECULAR}, SWIZZLE_XYZW}, - {"shininess", {STATE_MATERIAL, 0, STATE_SHININESS}, SWIZZLE_XXXX}, -}; - -static struct gl_builtin_uniform_element gl_BackMaterial_elements[] = { - {"emission", {STATE_MATERIAL, 1, STATE_EMISSION}, SWIZZLE_XYZW}, - {"ambient", {STATE_MATERIAL, 1, STATE_AMBIENT}, SWIZZLE_XYZW}, - {"diffuse", {STATE_MATERIAL, 1, STATE_DIFFUSE}, SWIZZLE_XYZW}, - {"specular", {STATE_MATERIAL, 1, STATE_SPECULAR}, SWIZZLE_XYZW}, - {"shininess", {STATE_MATERIAL, 1, STATE_SHININESS}, SWIZZLE_XXXX}, -}; - -static struct gl_builtin_uniform_element gl_LightSource_elements[] = { - {"ambient", {STATE_LIGHT, 0, STATE_AMBIENT}, SWIZZLE_XYZW}, - {"diffuse", {STATE_LIGHT, 0, STATE_DIFFUSE}, SWIZZLE_XYZW}, - {"specular", {STATE_LIGHT, 0, STATE_SPECULAR}, SWIZZLE_XYZW}, - {"position", {STATE_LIGHT, 0, STATE_POSITION}, SWIZZLE_XYZW}, - {"halfVector", {STATE_LIGHT, 0, STATE_HALF_VECTOR}, SWIZZLE_XYZW}, - {"spotDirection", {STATE_LIGHT, 0, STATE_SPOT_DIRECTION}, - MAKE_SWIZZLE4(SWIZZLE_X, - SWIZZLE_Y, - SWIZZLE_Z, - SWIZZLE_Z)}, - {"spotCosCutoff", {STATE_LIGHT, 0, STATE_SPOT_DIRECTION}, SWIZZLE_WWWW}, - {"spotCutoff", {STATE_LIGHT, 0, STATE_SPOT_CUTOFF}, SWIZZLE_XXXX}, - {"spotExponent", {STATE_LIGHT, 0, STATE_ATTENUATION}, SWIZZLE_WWWW}, - {"constantAttenuation", {STATE_LIGHT, 0, STATE_ATTENUATION}, SWIZZLE_XXXX}, - {"linearAttenuation", {STATE_LIGHT, 0, STATE_ATTENUATION}, SWIZZLE_YYYY}, - {"quadraticAttenuation", {STATE_LIGHT, 0, STATE_ATTENUATION}, SWIZZLE_ZZZZ}, -}; - -static struct gl_builtin_uniform_element gl_LightModel_elements[] = { - {"ambient", {STATE_LIGHTMODEL_AMBIENT, 0}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_FrontLightModelProduct_elements[] = { - {"sceneColor", {STATE_LIGHTMODEL_SCENECOLOR, 0}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_BackLightModelProduct_elements[] = { - {"sceneColor", {STATE_LIGHTMODEL_SCENECOLOR, 1}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_FrontLightProduct_elements[] = { - {"ambient", {STATE_LIGHTPROD, 0, 0, STATE_AMBIENT}, SWIZZLE_XYZW}, - {"diffuse", {STATE_LIGHTPROD, 0, 0, STATE_DIFFUSE}, SWIZZLE_XYZW}, - {"specular", {STATE_LIGHTPROD, 0, 0, STATE_SPECULAR}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_BackLightProduct_elements[] = { - {"ambient", {STATE_LIGHTPROD, 0, 1, STATE_AMBIENT}, SWIZZLE_XYZW}, - {"diffuse", {STATE_LIGHTPROD, 0, 1, STATE_DIFFUSE}, SWIZZLE_XYZW}, - {"specular", {STATE_LIGHTPROD, 0, 1, STATE_SPECULAR}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_TextureEnvColor_elements[] = { - {NULL, {STATE_TEXENV_COLOR, 0}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_EyePlaneS_elements[] = { - {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_EYE_S}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_EyePlaneT_elements[] = { - {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_EYE_T}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_EyePlaneR_elements[] = { - {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_EYE_R}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_EyePlaneQ_elements[] = { - {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_EYE_Q}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_ObjectPlaneS_elements[] = { - {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_OBJECT_S}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_ObjectPlaneT_elements[] = { - {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_OBJECT_T}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_ObjectPlaneR_elements[] = { - {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_OBJECT_R}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_ObjectPlaneQ_elements[] = { - {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_OBJECT_Q}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_Fog_elements[] = { - {"color", {STATE_FOG_COLOR}, SWIZZLE_XYZW}, - {"density", {STATE_FOG_PARAMS}, SWIZZLE_XXXX}, - {"start", {STATE_FOG_PARAMS}, SWIZZLE_YYYY}, - {"end", {STATE_FOG_PARAMS}, SWIZZLE_ZZZZ}, - {"scale", {STATE_FOG_PARAMS}, SWIZZLE_WWWW}, -}; - -static struct gl_builtin_uniform_element gl_NormalScale_elements[] = { - {NULL, {STATE_NORMAL_SCALE}, SWIZZLE_XXXX}, -}; - -static struct gl_builtin_uniform_element gl_MESABumpRotMatrix0_elements[] = { - {NULL, {STATE_INTERNAL, STATE_ROT_MATRIX_0}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_MESABumpRotMatrix1_elements[] = { - {NULL, {STATE_INTERNAL, STATE_ROT_MATRIX_1}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_MESAFogParamsOptimized_elements[] = { - {NULL, {STATE_INTERNAL, STATE_FOG_PARAMS_OPTIMIZED}, SWIZZLE_XYZW}, -}; - -#define MATRIX(name, statevar, modifier) \ - static struct gl_builtin_uniform_element name ## _elements[] = { \ - { NULL, { statevar, 0, 0, 0, modifier}, SWIZZLE_XYZW }, \ - { NULL, { statevar, 0, 1, 1, modifier}, SWIZZLE_XYZW }, \ - { NULL, { statevar, 0, 2, 2, modifier}, SWIZZLE_XYZW }, \ - { NULL, { statevar, 0, 3, 3, modifier}, SWIZZLE_XYZW }, \ - } - -MATRIX(gl_ModelViewMatrix, - STATE_MODELVIEW_MATRIX, STATE_MATRIX_TRANSPOSE); -MATRIX(gl_ModelViewMatrixInverse, - STATE_MODELVIEW_MATRIX, STATE_MATRIX_INVTRANS); -MATRIX(gl_ModelViewMatrixTranspose, - STATE_MODELVIEW_MATRIX, 0); -MATRIX(gl_ModelViewMatrixInverseTranspose, - STATE_MODELVIEW_MATRIX, STATE_MATRIX_INVERSE); - -MATRIX(gl_ProjectionMatrix, - STATE_PROJECTION_MATRIX, STATE_MATRIX_TRANSPOSE); -MATRIX(gl_ProjectionMatrixInverse, - STATE_PROJECTION_MATRIX, STATE_MATRIX_INVTRANS); -MATRIX(gl_ProjectionMatrixTranspose, - STATE_PROJECTION_MATRIX, 0); -MATRIX(gl_ProjectionMatrixInverseTranspose, - STATE_PROJECTION_MATRIX, STATE_MATRIX_INVERSE); - -MATRIX(gl_ModelViewProjectionMatrix, - STATE_MVP_MATRIX, STATE_MATRIX_TRANSPOSE); -MATRIX(gl_ModelViewProjectionMatrixInverse, - STATE_MVP_MATRIX, STATE_MATRIX_INVTRANS); -MATRIX(gl_ModelViewProjectionMatrixTranspose, - STATE_MVP_MATRIX, 0); -MATRIX(gl_ModelViewProjectionMatrixInverseTranspose, - STATE_MVP_MATRIX, STATE_MATRIX_INVERSE); - -MATRIX(gl_TextureMatrix, - STATE_TEXTURE_MATRIX, STATE_MATRIX_TRANSPOSE); -MATRIX(gl_TextureMatrixInverse, - STATE_TEXTURE_MATRIX, STATE_MATRIX_INVTRANS); -MATRIX(gl_TextureMatrixTranspose, - STATE_TEXTURE_MATRIX, 0); -MATRIX(gl_TextureMatrixInverseTranspose, - STATE_TEXTURE_MATRIX, STATE_MATRIX_INVERSE); - -static struct gl_builtin_uniform_element gl_NormalMatrix_elements[] = { - { NULL, { STATE_MODELVIEW_MATRIX, 0, 0, 0, STATE_MATRIX_INVERSE}, - SWIZZLE_XYZW }, - { NULL, { STATE_MODELVIEW_MATRIX, 0, 1, 1, STATE_MATRIX_INVERSE}, - SWIZZLE_XYZW }, - { NULL, { STATE_MODELVIEW_MATRIX, 0, 2, 2, STATE_MATRIX_INVERSE}, - SWIZZLE_XYZW }, -}; - -#undef MATRIX - -#define STATEVAR(name) {#name, name ## _elements, Elements(name ## _elements)} - -const struct gl_builtin_uniform_desc _mesa_builtin_uniform_desc[] = { - STATEVAR(gl_DepthRange), - STATEVAR(gl_ClipPlane), - STATEVAR(gl_Point), - STATEVAR(gl_FrontMaterial), - STATEVAR(gl_BackMaterial), - STATEVAR(gl_LightSource), - STATEVAR(gl_LightModel), - STATEVAR(gl_FrontLightModelProduct), - STATEVAR(gl_BackLightModelProduct), - STATEVAR(gl_FrontLightProduct), - STATEVAR(gl_BackLightProduct), - STATEVAR(gl_TextureEnvColor), - STATEVAR(gl_EyePlaneS), - STATEVAR(gl_EyePlaneT), - STATEVAR(gl_EyePlaneR), - STATEVAR(gl_EyePlaneQ), - STATEVAR(gl_ObjectPlaneS), - STATEVAR(gl_ObjectPlaneT), - STATEVAR(gl_ObjectPlaneR), - STATEVAR(gl_ObjectPlaneQ), - STATEVAR(gl_Fog), - - STATEVAR(gl_ModelViewMatrix), - STATEVAR(gl_ModelViewMatrixInverse), - STATEVAR(gl_ModelViewMatrixTranspose), - STATEVAR(gl_ModelViewMatrixInverseTranspose), - - STATEVAR(gl_ProjectionMatrix), - STATEVAR(gl_ProjectionMatrixInverse), - STATEVAR(gl_ProjectionMatrixTranspose), - STATEVAR(gl_ProjectionMatrixInverseTranspose), - - STATEVAR(gl_ModelViewProjectionMatrix), - STATEVAR(gl_ModelViewProjectionMatrixInverse), - STATEVAR(gl_ModelViewProjectionMatrixTranspose), - STATEVAR(gl_ModelViewProjectionMatrixInverseTranspose), - - STATEVAR(gl_TextureMatrix), - STATEVAR(gl_TextureMatrixInverse), - STATEVAR(gl_TextureMatrixTranspose), - STATEVAR(gl_TextureMatrixInverseTranspose), - - STATEVAR(gl_NormalMatrix), - STATEVAR(gl_NormalScale), - - STATEVAR(gl_MESABumpRotMatrix0), - STATEVAR(gl_MESABumpRotMatrix1), - STATEVAR(gl_MESAFogParamsOptimized), - - {NULL, NULL, 0} -}; static GLboolean is_boolean_type(GLenum type) diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c index cfed4b506a5..d20e2c7193e 100644 --- a/src/mesa/main/varray.c +++ b/src/mesa/main/varray.c @@ -484,7 +484,7 @@ _mesa_DisableVertexAttribArrayARB(GLuint index) if (index >= ctx->Const.VertexProgram.MaxAttribs) { _mesa_error(ctx, GL_INVALID_VALUE, - "glEnableVertexAttribArrayARB(index)"); + "glDisableVertexAttribArrayARB(index)"); return; } diff --git a/src/mesa/main/varray.h b/src/mesa/main/varray.h index 53e68c89667..1c423200ffd 100644 --- a/src/mesa/main/varray.h +++ b/src/mesa/main/varray.h @@ -34,6 +34,37 @@ struct gl_client_array; struct gl_context; + +/** + * Compute the index of the last array element that can be safely accessed in + * a vertex array. We can really only do this when the array lives in a VBO. + * The array->_MaxElement field will be updated. + * Later in glDrawArrays/Elements/etc we can do some bounds checking. + */ +static INLINE void +_mesa_update_array_max_element(struct gl_client_array *array) +{ + assert(array->Enabled); + + if (array->BufferObj->Name) { + GLsizeiptrARB offset = (GLsizeiptrARB) array->Ptr; + GLsizeiptrARB bufSize = (GLsizeiptrARB) array->BufferObj->Size; + + if (offset < bufSize) { + array->_MaxElement = (bufSize - offset + array->StrideB + - array->_ElementSize) / array->StrideB; + } + else { + array->_MaxElement = 0; + } + } + else { + /* user-space array, no idea how big it is */ + array->_MaxElement = 2 * 1000 * 1000 * 1000; /* just a big number */ + } +} + + #if _HAVE_FULL_GL extern void GLAPIENTRY diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c index a10b86e761e..80fa0c244eb 100644 --- a/src/mesa/main/version.c +++ b/src/mesa/main/version.c @@ -25,6 +25,7 @@ #include "imports.h" #include "mtypes.h" #include "version.h" +#include "git_sha1.h" @@ -89,6 +90,8 @@ compute_version(struct gl_context *ctx) ctx->Extensions.EXT_pixel_buffer_object && ctx->Extensions.EXT_texture_sRGB); const GLboolean ver_3_0 = (ver_2_1 && + ctx->Extensions.ARB_color_buffer_float && + ctx->Extensions.ARB_depth_buffer_float && ctx->Extensions.ARB_half_float_pixel && ctx->Extensions.ARB_map_buffer_range && ctx->Extensions.ARB_texture_float && @@ -112,6 +115,7 @@ compute_version(struct gl_context *ctx) ctx->Extensions.ARB_draw_instanced && ctx->Extensions.ARB_texture_buffer_object && ctx->Extensions.ARB_uniform_buffer_object && + ctx->Extensions.EXT_texture_snorm && ctx->Extensions.NV_primitive_restart && ctx->Extensions.NV_texture_rectangle && ctx->Const.MaxVertexTextureImageUnits >= 16); @@ -182,7 +186,11 @@ compute_version(struct gl_context *ctx) ctx->VersionString = (char *) malloc(max); if (ctx->VersionString) { _mesa_snprintf(ctx->VersionString, max, - "%u.%u Mesa " MESA_VERSION_STRING, + "%u.%u Mesa " MESA_VERSION_STRING +#ifdef MESA_GIT_SHA1 + " (" MESA_GIT_SHA1 ")" +#endif + , ctx->VersionMajor, ctx->VersionMinor); } } diff --git a/src/mesa/program/arbprogparse.c b/src/mesa/program/arbprogparse.c index ca63e72c085..dffc8abf735 100644 --- a/src/mesa/program/arbprogparse.c +++ b/src/mesa/program/arbprogparse.c @@ -116,20 +116,11 @@ _mesa_parse_arb_fragment_program(struct gl_context* ctx, GLenum target, program->Base.SamplersUsed |= (1 << i); } program->Base.ShadowSamplers = prog.ShadowSamplers; - switch (state.option.Fog) { - case OPTION_FOG_EXP: program->FogOption = GL_EXP; break; - case OPTION_FOG_EXP2: program->FogOption = GL_EXP2; break; - case OPTION_FOG_LINEAR: program->FogOption = GL_LINEAR; break; - default: program->FogOption = GL_NONE; break; - } program->OriginUpperLeft = state.option.OriginUpperLeft; program->PixelCenterInteger = state.option.PixelCenterInteger; program->UsesKill = state.fragment.UsesKill; - if (program->FogOption) - program->Base.InputsRead |= FRAG_BIT_FOGC; - if (program->Base.Instructions) free(program->Base.Instructions); program->Base.Instructions = prog.Instructions; @@ -143,9 +134,15 @@ _mesa_parse_arb_fragment_program(struct gl_context* ctx, GLenum target, * there's no hardware that wants to do fog in a discrete stage separate * from the fragment shader. */ - if (program->FogOption != GL_NONE) { - _mesa_append_fog_code(ctx, program); - program->FogOption = GL_NONE; + if (state.option.Fog != OPTION_NONE) { + static const GLenum fog_modes[4] = { + GL_NONE, GL_EXP, GL_EXP2, GL_LINEAR + }; + + /* XXX: we should somehow recompile this to remove clamping if disabled + * On the ATI driver, this is unclampled if fragment clamping is disabled + */ + _mesa_append_fog_code(ctx, program, fog_modes[state.option.Fog], GL_TRUE); } #if DEBUG_FP diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp index 17e0f9953f9..3c9b9733832 100644 --- a/src/mesa/program/ir_to_mesa.cpp +++ b/src/mesa/program/ir_to_mesa.cpp @@ -56,16 +56,20 @@ extern "C" { #include "program/sampler.h" } +class src_reg; +class dst_reg; + static int swizzle_for_size(int size); /** * This struct is a corresponding struct to Mesa prog_src_register, with * wider fields. */ -typedef struct ir_to_mesa_src_reg { - ir_to_mesa_src_reg(int file, int index, const glsl_type *type) +class src_reg { +public: + src_reg(gl_register_file file, int index, const glsl_type *type) { - this->file = (gl_register_file) file; + this->file = file; this->index = index; if (type && (type->is_scalar() || type->is_vector() || type->is_matrix())) this->swizzle = swizzle_for_size(type->vector_elements); @@ -75,7 +79,7 @@ typedef struct ir_to_mesa_src_reg { this->reladdr = NULL; } - ir_to_mesa_src_reg() + src_reg() { this->file = PROGRAM_UNDEFINED; this->index = 0; @@ -84,24 +88,63 @@ typedef struct ir_to_mesa_src_reg { this->reladdr = NULL; } + explicit src_reg(dst_reg reg); + gl_register_file file; /**< PROGRAM_* from Mesa */ int index; /**< temporary index, VERT_ATTRIB_*, FRAG_ATTRIB_*, etc. */ GLuint swizzle; /**< SWIZZLE_XYZWONEZERO swizzles from Mesa. */ int negate; /**< NEGATE_XYZW mask from mesa */ /** Register index should be offset by the integer in this reg. */ - ir_to_mesa_src_reg *reladdr; -} ir_to_mesa_src_reg; + src_reg *reladdr; +}; + +class dst_reg { +public: + dst_reg(gl_register_file file, int writemask) + { + this->file = file; + this->index = 0; + this->writemask = writemask; + this->cond_mask = COND_TR; + this->reladdr = NULL; + } -typedef struct ir_to_mesa_dst_reg { - int file; /**< PROGRAM_* from Mesa */ + dst_reg() + { + this->file = PROGRAM_UNDEFINED; + this->index = 0; + this->writemask = 0; + this->cond_mask = COND_TR; + this->reladdr = NULL; + } + + explicit dst_reg(src_reg reg); + + gl_register_file file; /**< PROGRAM_* from Mesa */ int index; /**< temporary index, VERT_ATTRIB_*, FRAG_ATTRIB_*, etc. */ int writemask; /**< Bitfield of WRITEMASK_[XYZW] */ GLuint cond_mask:4; /** Register index should be offset by the integer in this reg. */ - ir_to_mesa_src_reg *reladdr; -} ir_to_mesa_dst_reg; + src_reg *reladdr; +}; -extern ir_to_mesa_src_reg ir_to_mesa_undef; +src_reg::src_reg(dst_reg reg) +{ + this->file = reg.file; + this->index = reg.index; + this->swizzle = SWIZZLE_XYZW; + this->negate = 0; + this->reladdr = NULL; +} + +dst_reg::dst_reg(src_reg reg) +{ + this->file = reg.file; + this->index = reg.index; + this->writemask = WRITEMASK_XYZW; + this->cond_mask = COND_TR; + this->reladdr = reg.reladdr; +} class ir_to_mesa_instruction : public exec_node { public: @@ -118,8 +161,8 @@ public: } enum prog_opcode op; - ir_to_mesa_dst_reg dst_reg; - ir_to_mesa_src_reg src_reg[3]; + dst_reg dst; + src_reg src[3]; /** Pointer to the ir source this tree came from for debugging */ ir_instruction *ir; GLboolean cond_update; @@ -174,7 +217,7 @@ public: int inst; /** Storage for the return value. */ - ir_to_mesa_src_reg return_reg; + src_reg return_reg; }; class ir_to_mesa_visitor : public ir_visitor { @@ -195,11 +238,10 @@ public: function_entry *get_function_signature(ir_function_signature *sig); - ir_to_mesa_src_reg get_temp(const glsl_type *type); - void reladdr_to_temp(ir_instruction *ir, - ir_to_mesa_src_reg *reg, int *num_reladdr); + src_reg get_temp(const glsl_type *type); + void reladdr_to_temp(ir_instruction *ir, src_reg *reg, int *num_reladdr); - struct ir_to_mesa_src_reg src_reg_for_float(float val); + src_reg src_reg_for_float(float val); /** * \name Visit methods @@ -228,7 +270,7 @@ public: virtual void visit(ir_if *); /*@}*/ - struct ir_to_mesa_src_reg result; + src_reg result; /** List of variable_storage */ exec_list variables; @@ -240,52 +282,35 @@ public: /** List of ir_to_mesa_instruction */ exec_list instructions; - ir_to_mesa_instruction *ir_to_mesa_emit_op0(ir_instruction *ir, - enum prog_opcode op); + ir_to_mesa_instruction *emit(ir_instruction *ir, enum prog_opcode op); - ir_to_mesa_instruction *ir_to_mesa_emit_op1(ir_instruction *ir, - enum prog_opcode op, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0); + ir_to_mesa_instruction *emit(ir_instruction *ir, enum prog_opcode op, + dst_reg dst, src_reg src0); - ir_to_mesa_instruction *ir_to_mesa_emit_op2(ir_instruction *ir, - enum prog_opcode op, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0, - ir_to_mesa_src_reg src1); + ir_to_mesa_instruction *emit(ir_instruction *ir, enum prog_opcode op, + dst_reg dst, src_reg src0, src_reg src1); - ir_to_mesa_instruction *ir_to_mesa_emit_op3(ir_instruction *ir, - enum prog_opcode op, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0, - ir_to_mesa_src_reg src1, - ir_to_mesa_src_reg src2); + ir_to_mesa_instruction *emit(ir_instruction *ir, enum prog_opcode op, + dst_reg dst, + src_reg src0, src_reg src1, src_reg src2); /** * Emit the correct dot-product instruction for the type of arguments - * - * \sa ir_to_mesa_emit_op2 */ - void ir_to_mesa_emit_dp(ir_instruction *ir, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0, - ir_to_mesa_src_reg src1, - unsigned elements); - - void ir_to_mesa_emit_scalar_op1(ir_instruction *ir, - enum prog_opcode op, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0); - - void ir_to_mesa_emit_scalar_op2(ir_instruction *ir, - enum prog_opcode op, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0, - ir_to_mesa_src_reg src1); + void emit_dp(ir_instruction *ir, + dst_reg dst, + src_reg src0, + src_reg src1, + unsigned elements); + + void emit_scalar(ir_instruction *ir, enum prog_opcode op, + dst_reg dst, src_reg src0); + + void emit_scalar(ir_instruction *ir, enum prog_opcode op, + dst_reg dst, src_reg src0, src_reg src1); void emit_scs(ir_instruction *ir, enum prog_opcode op, - ir_to_mesa_dst_reg dst, - const ir_to_mesa_src_reg &src); + dst_reg dst, const src_reg &src); GLboolean try_emit_mad(ir_expression *ir, int mul_operand); @@ -300,15 +325,11 @@ public: void *mem_ctx; }; -ir_to_mesa_src_reg ir_to_mesa_undef = ir_to_mesa_src_reg(PROGRAM_UNDEFINED, 0, NULL); +src_reg undef_src = src_reg(PROGRAM_UNDEFINED, 0, NULL); -ir_to_mesa_dst_reg ir_to_mesa_undef_dst = { - PROGRAM_UNDEFINED, 0, SWIZZLE_NOOP, COND_TR, NULL, -}; +dst_reg undef_dst = dst_reg(PROGRAM_UNDEFINED, SWIZZLE_NOOP); -ir_to_mesa_dst_reg ir_to_mesa_address_reg = { - PROGRAM_ADDRESS, 0, WRITEMASK_X, COND_TR, NULL -}; +dst_reg address_reg = dst_reg(PROGRAM_ADDRESS, WRITEMASK_X); static void fail_link(struct gl_shader_program *prog, const char *fmt, ...) PRINTFLIKE(2, 3); @@ -339,12 +360,9 @@ swizzle_for_size(int size) } ir_to_mesa_instruction * -ir_to_mesa_visitor::ir_to_mesa_emit_op3(ir_instruction *ir, - enum prog_opcode op, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0, - ir_to_mesa_src_reg src1, - ir_to_mesa_src_reg src2) +ir_to_mesa_visitor::emit(ir_instruction *ir, enum prog_opcode op, + dst_reg dst, + src_reg src0, src_reg src1, src_reg src2) { ir_to_mesa_instruction *inst = new(mem_ctx) ir_to_mesa_instruction(); int num_reladdr = 0; @@ -363,18 +381,16 @@ ir_to_mesa_visitor::ir_to_mesa_emit_op3(ir_instruction *ir, reladdr_to_temp(ir, &src0, &num_reladdr); if (dst.reladdr) { - ir_to_mesa_emit_op1(ir, OPCODE_ARL, ir_to_mesa_address_reg, - *dst.reladdr); - + emit(ir, OPCODE_ARL, address_reg, *dst.reladdr); num_reladdr--; } assert(num_reladdr == 0); inst->op = op; - inst->dst_reg = dst; - inst->src_reg[0] = src0; - inst->src_reg[1] = src1; - inst->src_reg[2] = src2; + inst->dst = dst; + inst->src[0] = src0; + inst->src[1] = src1; + inst->src[2] = src2; inst->ir = ir; inst->function = NULL; @@ -386,69 +402,36 @@ ir_to_mesa_visitor::ir_to_mesa_emit_op3(ir_instruction *ir, ir_to_mesa_instruction * -ir_to_mesa_visitor::ir_to_mesa_emit_op2(ir_instruction *ir, - enum prog_opcode op, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0, - ir_to_mesa_src_reg src1) +ir_to_mesa_visitor::emit(ir_instruction *ir, enum prog_opcode op, + dst_reg dst, src_reg src0, src_reg src1) { - return ir_to_mesa_emit_op3(ir, op, dst, src0, src1, ir_to_mesa_undef); + return emit(ir, op, dst, src0, src1, undef_src); } ir_to_mesa_instruction * -ir_to_mesa_visitor::ir_to_mesa_emit_op1(ir_instruction *ir, - enum prog_opcode op, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0) +ir_to_mesa_visitor::emit(ir_instruction *ir, enum prog_opcode op, + dst_reg dst, src_reg src0) { assert(dst.writemask != 0); - return ir_to_mesa_emit_op3(ir, op, dst, - src0, ir_to_mesa_undef, ir_to_mesa_undef); + return emit(ir, op, dst, src0, undef_src, undef_src); } ir_to_mesa_instruction * -ir_to_mesa_visitor::ir_to_mesa_emit_op0(ir_instruction *ir, - enum prog_opcode op) +ir_to_mesa_visitor::emit(ir_instruction *ir, enum prog_opcode op) { - return ir_to_mesa_emit_op3(ir, op, ir_to_mesa_undef_dst, - ir_to_mesa_undef, - ir_to_mesa_undef, - ir_to_mesa_undef); + return emit(ir, op, undef_dst, undef_src, undef_src, undef_src); } void -ir_to_mesa_visitor::ir_to_mesa_emit_dp(ir_instruction *ir, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0, - ir_to_mesa_src_reg src1, - unsigned elements) +ir_to_mesa_visitor::emit_dp(ir_instruction *ir, + dst_reg dst, src_reg src0, src_reg src1, + unsigned elements) { static const gl_inst_opcode dot_opcodes[] = { OPCODE_DP2, OPCODE_DP3, OPCODE_DP4 }; - ir_to_mesa_emit_op3(ir, dot_opcodes[elements - 2], - dst, src0, src1, ir_to_mesa_undef); -} - -inline ir_to_mesa_dst_reg -ir_to_mesa_dst_reg_from_src(ir_to_mesa_src_reg reg) -{ - ir_to_mesa_dst_reg dst_reg; - - dst_reg.file = reg.file; - dst_reg.index = reg.index; - dst_reg.writemask = WRITEMASK_XYZW; - dst_reg.cond_mask = COND_TR; - dst_reg.reladdr = reg.reladdr; - - return dst_reg; -} - -inline ir_to_mesa_src_reg -ir_to_mesa_src_reg_from_dst(ir_to_mesa_dst_reg reg) -{ - return ir_to_mesa_src_reg(reg.file, reg.index, NULL); + emit(ir, dot_opcodes[elements - 2], dst, src0, src1); } /** @@ -460,11 +443,9 @@ ir_to_mesa_src_reg_from_dst(ir_to_mesa_dst_reg reg) * to produce dest channels. */ void -ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op2(ir_instruction *ir, - enum prog_opcode op, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg orig_src0, - ir_to_mesa_src_reg orig_src1) +ir_to_mesa_visitor::emit_scalar(ir_instruction *ir, enum prog_opcode op, + dst_reg dst, + src_reg orig_src0, src_reg orig_src1) { int i, j; int done_mask = ~dst.writemask; @@ -476,8 +457,8 @@ ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op2(ir_instruction *ir, for (i = 0; i < 4; i++) { GLuint this_mask = (1 << i); ir_to_mesa_instruction *inst; - ir_to_mesa_src_reg src0 = orig_src0; - ir_to_mesa_src_reg src1 = orig_src1; + src_reg src0 = orig_src0; + src_reg src1 = orig_src1; if (done_mask & this_mask) continue; @@ -500,26 +481,21 @@ ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op2(ir_instruction *ir, src1.swizzle = MAKE_SWIZZLE4(src1_swiz, src1_swiz, src1_swiz, src1_swiz); - inst = ir_to_mesa_emit_op2(ir, op, - dst, - src0, - src1); - inst->dst_reg.writemask = this_mask; + inst = emit(ir, op, dst, src0, src1); + inst->dst.writemask = this_mask; done_mask |= this_mask; } } void -ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op1(ir_instruction *ir, - enum prog_opcode op, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0) +ir_to_mesa_visitor::emit_scalar(ir_instruction *ir, enum prog_opcode op, + dst_reg dst, src_reg src0) { - ir_to_mesa_src_reg undef = ir_to_mesa_undef; + src_reg undef = undef_src; undef.swizzle = SWIZZLE_XXXX; - ir_to_mesa_emit_scalar_op2(ir, op, dst, src0, undef); + emit_scalar(ir, op, dst, src0, undef); } /** @@ -538,20 +514,20 @@ ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op1(ir_instruction *ir, */ void ir_to_mesa_visitor::emit_scs(ir_instruction *ir, enum prog_opcode op, - ir_to_mesa_dst_reg dst, - const ir_to_mesa_src_reg &src) + dst_reg dst, + const src_reg &src) { /* Vertex programs cannot use the SCS opcode. */ if (this->prog->Target == GL_VERTEX_PROGRAM_ARB) { - ir_to_mesa_emit_scalar_op1(ir, op, dst, src); + emit_scalar(ir, op, dst, src); return; } const unsigned component = (op == OPCODE_SIN) ? 0 : 1; const unsigned scs_mask = (1U << component); int done_mask = ~dst.writemask; - ir_to_mesa_src_reg tmp; + src_reg tmp; assert(op == OPCODE_SIN || op == OPCODE_COS); @@ -564,7 +540,7 @@ ir_to_mesa_visitor::emit_scs(ir_instruction *ir, enum prog_opcode op, for (unsigned i = 0; i < 4; i++) { unsigned this_mask = (1U << i); - ir_to_mesa_src_reg src0 = src; + src_reg src0 = src; if ((done_mask & this_mask) != 0) continue; @@ -592,41 +568,40 @@ ir_to_mesa_visitor::emit_scs(ir_instruction *ir, enum prog_opcode op, if (this_mask != scs_mask) { ir_to_mesa_instruction *inst; - ir_to_mesa_dst_reg tmp_dst = ir_to_mesa_dst_reg_from_src(tmp); + dst_reg tmp_dst = dst_reg(tmp); /* Emit the SCS instruction. */ - inst = ir_to_mesa_emit_op1(ir, OPCODE_SCS, tmp_dst, src0); - inst->dst_reg.writemask = scs_mask; + inst = emit(ir, OPCODE_SCS, tmp_dst, src0); + inst->dst.writemask = scs_mask; /* Move the result of the SCS instruction to the desired location in * the destination. */ tmp.swizzle = MAKE_SWIZZLE4(component, component, component, component); - inst = ir_to_mesa_emit_op1(ir, OPCODE_SCS, dst, tmp); - inst->dst_reg.writemask = this_mask; + inst = emit(ir, OPCODE_SCS, dst, tmp); + inst->dst.writemask = this_mask; } else { /* Emit the SCS instruction to write directly to the destination. */ - ir_to_mesa_instruction *inst = - ir_to_mesa_emit_op1(ir, OPCODE_SCS, dst, src0); - inst->dst_reg.writemask = scs_mask; + ir_to_mesa_instruction *inst = emit(ir, OPCODE_SCS, dst, src0); + inst->dst.writemask = scs_mask; } done_mask |= this_mask; } } -struct ir_to_mesa_src_reg +struct src_reg ir_to_mesa_visitor::src_reg_for_float(float val) { - ir_to_mesa_src_reg src_reg(PROGRAM_CONSTANT, -1, NULL); + src_reg src(PROGRAM_CONSTANT, -1, NULL); - src_reg.index = _mesa_add_unnamed_constant(this->prog->Parameters, - &val, 1, &src_reg.swizzle); + src.index = _mesa_add_unnamed_constant(this->prog->Parameters, + &val, 1, &src.swizzle); - return src_reg; + return src; } static int @@ -676,31 +651,31 @@ type_size(const struct glsl_type *type) * storage). Actual register allocation for the Mesa VM occurs in a * pass over the Mesa IR later. */ -ir_to_mesa_src_reg +src_reg ir_to_mesa_visitor::get_temp(const glsl_type *type) { - ir_to_mesa_src_reg src_reg; + src_reg src; int swizzle[4]; int i; - src_reg.file = PROGRAM_TEMPORARY; - src_reg.index = next_temp; - src_reg.reladdr = NULL; + src.file = PROGRAM_TEMPORARY; + src.index = next_temp; + src.reladdr = NULL; next_temp += type_size(type); if (type->is_array() || type->is_record()) { - src_reg.swizzle = SWIZZLE_NOOP; + src.swizzle = SWIZZLE_NOOP; } else { for (i = 0; i < type->vector_elements; i++) swizzle[i] = i; for (; i < 4; i++) swizzle[i] = type->vector_elements - 1; - src_reg.swizzle = MAKE_SWIZZLE4(swizzle[0], swizzle[1], - swizzle[2], swizzle[3]); + src.swizzle = MAKE_SWIZZLE4(swizzle[0], swizzle[1], + swizzle[2], swizzle[3]); } - src_reg.negate = 0; + src.negate = 0; - return src_reg; + return src; } variable_storage * @@ -754,27 +729,8 @@ ir_to_mesa_visitor::visit(ir_variable *ir) if (ir->mode == ir_var_uniform && strncmp(ir->name, "gl_", 3) == 0) { unsigned int i; - const struct gl_builtin_uniform_desc *statevar; - - for (i = 0; _mesa_builtin_uniform_desc[i].name; i++) { - if (strcmp(ir->name, _mesa_builtin_uniform_desc[i].name) == 0) - break; - } - - if (!_mesa_builtin_uniform_desc[i].name) { - fail_link(this->shader_program, - "Failed to find builtin uniform `%s'\n", ir->name); - return; - } - - statevar = &_mesa_builtin_uniform_desc[i]; - - int array_count; - if (ir->type->is_array()) { - array_count = ir->type->length; - } else { - array_count = 1; - } + const ir_state_slot *const slots = ir->state_slots; + assert(ir->state_slots != NULL); /* Check if this statevar's setup in the STATE file exactly * matches how we'll want to reference it as a @@ -782,63 +738,57 @@ ir_to_mesa_visitor::visit(ir_variable *ir) * temporary storage and hope that it'll get copy-propagated * out. */ - for (i = 0; i < statevar->num_elements; i++) { - if (statevar->elements[i].swizzle != SWIZZLE_XYZW) { + for (i = 0; i < ir->num_state_slots; i++) { + if (slots[i].swizzle != SWIZZLE_XYZW) { break; } } struct variable_storage *storage; - ir_to_mesa_dst_reg dst; - if (i == statevar->num_elements) { + dst_reg dst; + if (i == ir->num_state_slots) { /* We'll set the index later. */ storage = new(mem_ctx) variable_storage(ir, PROGRAM_STATE_VAR, -1); this->variables.push_tail(storage); - dst = ir_to_mesa_undef_dst; + dst = undef_dst; } else { + /* The variable_storage constructor allocates slots based on the size + * of the type. However, this had better match the number of state + * elements that we're going to copy into the new temporary. + */ + assert((int) ir->num_state_slots == type_size(ir->type)); + storage = new(mem_ctx) variable_storage(ir, PROGRAM_TEMPORARY, this->next_temp); this->variables.push_tail(storage); this->next_temp += type_size(ir->type); - dst = ir_to_mesa_dst_reg_from_src(ir_to_mesa_src_reg(PROGRAM_TEMPORARY, - storage->index, - NULL)); + dst = dst_reg(src_reg(PROGRAM_TEMPORARY, storage->index, NULL)); } - for (int a = 0; a < array_count; a++) { - for (unsigned int i = 0; i < statevar->num_elements; i++) { - struct gl_builtin_uniform_element *element = &statevar->elements[i]; - int tokens[STATE_LENGTH]; - - memcpy(tokens, element->tokens, sizeof(element->tokens)); - if (ir->type->is_array()) { - tokens[1] = a; - } - - int index = _mesa_add_state_reference(this->prog->Parameters, - (gl_state_index *)tokens); + for (unsigned int i = 0; i < ir->num_state_slots; i++) { + int index = _mesa_add_state_reference(this->prog->Parameters, + (gl_state_index *)slots[i].tokens); - if (storage->file == PROGRAM_STATE_VAR) { - if (storage->index == -1) { - storage->index = index; - } else { - assert(index == - (int)(storage->index + a * statevar->num_elements + i)); - } + if (storage->file == PROGRAM_STATE_VAR) { + if (storage->index == -1) { + storage->index = index; } else { - ir_to_mesa_src_reg src(PROGRAM_STATE_VAR, index, NULL); - src.swizzle = element->swizzle; - ir_to_mesa_emit_op1(ir, OPCODE_MOV, dst, src); - /* even a float takes up a whole vec4 reg in a struct/array. */ - dst.index++; + assert(index == storage->index + (int)i); } + } else { + src_reg src(PROGRAM_STATE_VAR, index, NULL); + src.swizzle = slots[i].swizzle; + emit(ir, OPCODE_MOV, dst, src); + /* even a float takes up a whole vec4 reg in a struct/array. */ + dst.index++; } } + if (storage->file == PROGRAM_TEMPORARY && - dst.index != storage->index + type_size(ir->type)) { + dst.index != storage->index + (int) ir->num_state_slots) { fail_link(this->shader_program, "failed to load builtin uniform `%s' (%d/%d regs loaded)\n", ir->name, dst.index - storage->index, @@ -864,7 +814,7 @@ ir_to_mesa_visitor::visit(ir_loop *ir) delete a; } - ir_to_mesa_emit_op0(NULL, OPCODE_BGNLOOP); + emit(NULL, OPCODE_BGNLOOP); if (ir->to) { ir_expression *e = @@ -897,7 +847,7 @@ ir_to_mesa_visitor::visit(ir_loop *ir) delete e; } - ir_to_mesa_emit_op0(NULL, OPCODE_ENDLOOP); + emit(NULL, OPCODE_ENDLOOP); } void @@ -905,10 +855,10 @@ ir_to_mesa_visitor::visit(ir_loop_jump *ir) { switch (ir->mode) { case ir_loop_jump::jump_break: - ir_to_mesa_emit_op0(NULL, OPCODE_BRK); + emit(NULL, OPCODE_BRK); break; case ir_loop_jump::jump_continue: - ir_to_mesa_emit_op0(NULL, OPCODE_CONT); + emit(NULL, OPCODE_CONT); break; } } @@ -947,7 +897,7 @@ GLboolean ir_to_mesa_visitor::try_emit_mad(ir_expression *ir, int mul_operand) { int nonmul_operand = 1 - mul_operand; - ir_to_mesa_src_reg a, b, c; + src_reg a, b, c; ir_expression *expr = ir->operands[mul_operand]->as_expression(); if (!expr || expr->operation != ir_binop_mul) @@ -961,8 +911,7 @@ ir_to_mesa_visitor::try_emit_mad(ir_expression *ir, int mul_operand) c = this->result; this->result = get_temp(ir->type); - ir_to_mesa_emit_op3(ir, OPCODE_MAD, - ir_to_mesa_dst_reg_from_src(this->result), a, b, c); + emit(ir, OPCODE_MAD, dst_reg(this->result), a, b, c); return true; } @@ -981,13 +930,11 @@ ir_to_mesa_visitor::try_emit_sat(ir_expression *ir) return false; sat_src->accept(this); - ir_to_mesa_src_reg src = this->result; + src_reg src = this->result; this->result = get_temp(ir->type); ir_to_mesa_instruction *inst; - inst = ir_to_mesa_emit_op1(ir, OPCODE_MOV, - ir_to_mesa_dst_reg_from_src(this->result), - src); + inst = emit(ir, OPCODE_MOV, dst_reg(this->result), src); inst->saturate = true; return true; @@ -995,18 +942,17 @@ ir_to_mesa_visitor::try_emit_sat(ir_expression *ir) void ir_to_mesa_visitor::reladdr_to_temp(ir_instruction *ir, - ir_to_mesa_src_reg *reg, int *num_reladdr) + src_reg *reg, int *num_reladdr) { if (!reg->reladdr) return; - ir_to_mesa_emit_op1(ir, OPCODE_ARL, ir_to_mesa_address_reg, *reg->reladdr); + emit(ir, OPCODE_ARL, address_reg, *reg->reladdr); if (*num_reladdr != 1) { - ir_to_mesa_src_reg temp = get_temp(glsl_type::vec4_type); + src_reg temp = get_temp(glsl_type::vec4_type); - ir_to_mesa_emit_op1(ir, OPCODE_MOV, - ir_to_mesa_dst_reg_from_src(temp), *reg); + emit(ir, OPCODE_MOV, dst_reg(temp), *reg); *reg = temp; } @@ -1102,7 +1048,7 @@ ir_to_mesa_visitor::emit_swz(ir_expression *ir) exit(1); } - ir_to_mesa_src_reg src; + src_reg src; src = this->result; src.swizzle = MAKE_SWIZZLE4(components[0], @@ -1117,8 +1063,8 @@ ir_to_mesa_visitor::emit_swz(ir_expression *ir) /* Storage for our result. Ideally for an assignment we'd be using the * actual storage for the result here, instead. */ - const ir_to_mesa_src_reg result_src = get_temp(ir->type); - ir_to_mesa_dst_reg result_dst = ir_to_mesa_dst_reg_from_src(result_src); + const src_reg result_src = get_temp(ir->type); + dst_reg result_dst = dst_reg(result_src); /* Limit writes to the channels that will be used by result_src later. * This does limit this temp's use as a temporary for multi-instruction @@ -1126,7 +1072,7 @@ ir_to_mesa_visitor::emit_swz(ir_expression *ir) */ result_dst.writemask = (1 << ir->type->vector_elements) - 1; - ir_to_mesa_emit_op1(ir, OPCODE_SWZ, result_dst, src); + emit(ir, OPCODE_SWZ, result_dst, src); this->result = result_src; } @@ -1134,9 +1080,9 @@ void ir_to_mesa_visitor::visit(ir_expression *ir) { unsigned int operand; - struct ir_to_mesa_src_reg op[Elements(ir->operands)]; - struct ir_to_mesa_src_reg result_src; - struct ir_to_mesa_dst_reg result_dst; + src_reg op[Elements(ir->operands)]; + src_reg result_src; + dst_reg result_dst; /* Quick peephole: Emit OPCODE_MAD(a, b, c) instead of ADD(MUL(a, b), c) */ @@ -1184,7 +1130,7 @@ ir_to_mesa_visitor::visit(ir_expression *ir) */ result_src = get_temp(ir->type); /* convenience for the emit functions below. */ - result_dst = ir_to_mesa_dst_reg_from_src(result_src); + result_dst = dst_reg(result_src); /* Limit writes to the channels that will be used by result_src later. * This does limit this temp's use as a temporary for multi-instruction * sequences. @@ -1193,38 +1139,37 @@ ir_to_mesa_visitor::visit(ir_expression *ir) switch (ir->operation) { case ir_unop_logic_not: - ir_to_mesa_emit_op2(ir, OPCODE_SEQ, result_dst, - op[0], src_reg_for_float(0.0)); + emit(ir, OPCODE_SEQ, result_dst, op[0], src_reg_for_float(0.0)); break; case ir_unop_neg: op[0].negate = ~op[0].negate; result_src = op[0]; break; case ir_unop_abs: - ir_to_mesa_emit_op1(ir, OPCODE_ABS, result_dst, op[0]); + emit(ir, OPCODE_ABS, result_dst, op[0]); break; case ir_unop_sign: - ir_to_mesa_emit_op1(ir, OPCODE_SSG, result_dst, op[0]); + emit(ir, OPCODE_SSG, result_dst, op[0]); break; case ir_unop_rcp: - ir_to_mesa_emit_scalar_op1(ir, OPCODE_RCP, result_dst, op[0]); + emit_scalar(ir, OPCODE_RCP, result_dst, op[0]); break; case ir_unop_exp2: - ir_to_mesa_emit_scalar_op1(ir, OPCODE_EX2, result_dst, op[0]); + emit_scalar(ir, OPCODE_EX2, result_dst, op[0]); break; case ir_unop_exp: case ir_unop_log: assert(!"not reached: should be handled by ir_explog_to_explog2"); break; case ir_unop_log2: - ir_to_mesa_emit_scalar_op1(ir, OPCODE_LG2, result_dst, op[0]); + emit_scalar(ir, OPCODE_LG2, result_dst, op[0]); break; case ir_unop_sin: - ir_to_mesa_emit_scalar_op1(ir, OPCODE_SIN, result_dst, op[0]); + emit_scalar(ir, OPCODE_SIN, result_dst, op[0]); break; case ir_unop_cos: - ir_to_mesa_emit_scalar_op1(ir, OPCODE_COS, result_dst, op[0]); + emit_scalar(ir, OPCODE_COS, result_dst, op[0]); break; case ir_unop_sin_reduced: emit_scs(ir, OPCODE_SIN, result_dst, op[0]); @@ -1234,10 +1179,10 @@ ir_to_mesa_visitor::visit(ir_expression *ir) break; case ir_unop_dFdx: - ir_to_mesa_emit_op1(ir, OPCODE_DDX, result_dst, op[0]); + emit(ir, OPCODE_DDX, result_dst, op[0]); break; case ir_unop_dFdy: - ir_to_mesa_emit_op1(ir, OPCODE_DDY, result_dst, op[0]); + emit(ir, OPCODE_DDY, result_dst, op[0]); break; case ir_unop_noise: { @@ -1246,19 +1191,19 @@ ir_to_mesa_visitor::visit(ir_expression *ir) + (ir->operands[0]->type->vector_elements) - 1); assert((opcode >= OPCODE_NOISE1) && (opcode <= OPCODE_NOISE4)); - ir_to_mesa_emit_op1(ir, opcode, result_dst, op[0]); + emit(ir, opcode, result_dst, op[0]); break; } case ir_binop_add: - ir_to_mesa_emit_op2(ir, OPCODE_ADD, result_dst, op[0], op[1]); + emit(ir, OPCODE_ADD, result_dst, op[0], op[1]); break; case ir_binop_sub: - ir_to_mesa_emit_op2(ir, OPCODE_SUB, result_dst, op[0], op[1]); + emit(ir, OPCODE_SUB, result_dst, op[0], op[1]); break; case ir_binop_mul: - ir_to_mesa_emit_op2(ir, OPCODE_MUL, result_dst, op[0], op[1]); + emit(ir, OPCODE_MUL, result_dst, op[0], op[1]); break; case ir_binop_div: assert(!"not reached: should be handled by ir_div_to_mul_rcp"); @@ -1267,100 +1212,88 @@ ir_to_mesa_visitor::visit(ir_expression *ir) break; case ir_binop_less: - ir_to_mesa_emit_op2(ir, OPCODE_SLT, result_dst, op[0], op[1]); + emit(ir, OPCODE_SLT, result_dst, op[0], op[1]); break; case ir_binop_greater: - ir_to_mesa_emit_op2(ir, OPCODE_SGT, result_dst, op[0], op[1]); + emit(ir, OPCODE_SGT, result_dst, op[0], op[1]); break; case ir_binop_lequal: - ir_to_mesa_emit_op2(ir, OPCODE_SLE, result_dst, op[0], op[1]); + emit(ir, OPCODE_SLE, result_dst, op[0], op[1]); break; case ir_binop_gequal: - ir_to_mesa_emit_op2(ir, OPCODE_SGE, result_dst, op[0], op[1]); + emit(ir, OPCODE_SGE, result_dst, op[0], op[1]); break; case ir_binop_equal: - ir_to_mesa_emit_op2(ir, OPCODE_SEQ, result_dst, op[0], op[1]); + emit(ir, OPCODE_SEQ, result_dst, op[0], op[1]); break; case ir_binop_nequal: - ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst, op[0], op[1]); + emit(ir, OPCODE_SNE, result_dst, op[0], op[1]); break; case ir_binop_all_equal: /* "==" operator producing a scalar boolean. */ if (ir->operands[0]->type->is_vector() || ir->operands[1]->type->is_vector()) { - ir_to_mesa_src_reg temp = get_temp(glsl_type::vec4_type); - ir_to_mesa_emit_op2(ir, OPCODE_SNE, - ir_to_mesa_dst_reg_from_src(temp), op[0], op[1]); - ir_to_mesa_emit_dp(ir, result_dst, temp, temp, vector_elements); - ir_to_mesa_emit_op2(ir, OPCODE_SEQ, - result_dst, result_src, src_reg_for_float(0.0)); + src_reg temp = get_temp(glsl_type::vec4_type); + emit(ir, OPCODE_SNE, dst_reg(temp), op[0], op[1]); + emit_dp(ir, result_dst, temp, temp, vector_elements); + emit(ir, OPCODE_SEQ, result_dst, result_src, src_reg_for_float(0.0)); } else { - ir_to_mesa_emit_op2(ir, OPCODE_SEQ, result_dst, op[0], op[1]); + emit(ir, OPCODE_SEQ, result_dst, op[0], op[1]); } break; case ir_binop_any_nequal: /* "!=" operator producing a scalar boolean. */ if (ir->operands[0]->type->is_vector() || ir->operands[1]->type->is_vector()) { - ir_to_mesa_src_reg temp = get_temp(glsl_type::vec4_type); - ir_to_mesa_emit_op2(ir, OPCODE_SNE, - ir_to_mesa_dst_reg_from_src(temp), op[0], op[1]); - ir_to_mesa_emit_dp(ir, result_dst, temp, temp, vector_elements); - ir_to_mesa_emit_op2(ir, OPCODE_SNE, - result_dst, result_src, src_reg_for_float(0.0)); + src_reg temp = get_temp(glsl_type::vec4_type); + emit(ir, OPCODE_SNE, dst_reg(temp), op[0], op[1]); + emit_dp(ir, result_dst, temp, temp, vector_elements); + emit(ir, OPCODE_SNE, result_dst, result_src, src_reg_for_float(0.0)); } else { - ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst, op[0], op[1]); + emit(ir, OPCODE_SNE, result_dst, op[0], op[1]); } break; case ir_unop_any: assert(ir->operands[0]->type->is_vector()); - ir_to_mesa_emit_dp(ir, result_dst, op[0], op[0], - ir->operands[0]->type->vector_elements); - ir_to_mesa_emit_op2(ir, OPCODE_SNE, - result_dst, result_src, src_reg_for_float(0.0)); + emit_dp(ir, result_dst, op[0], op[0], + ir->operands[0]->type->vector_elements); + emit(ir, OPCODE_SNE, result_dst, result_src, src_reg_for_float(0.0)); break; case ir_binop_logic_xor: - ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst, op[0], op[1]); + emit(ir, OPCODE_SNE, result_dst, op[0], op[1]); break; case ir_binop_logic_or: /* This could be a saturated add and skip the SNE. */ - ir_to_mesa_emit_op2(ir, OPCODE_ADD, - result_dst, - op[0], op[1]); - - ir_to_mesa_emit_op2(ir, OPCODE_SNE, - result_dst, - result_src, src_reg_for_float(0.0)); + emit(ir, OPCODE_ADD, result_dst, op[0], op[1]); + emit(ir, OPCODE_SNE, result_dst, result_src, src_reg_for_float(0.0)); break; case ir_binop_logic_and: /* the bool args are stored as float 0.0 or 1.0, so "mul" gives us "and". */ - ir_to_mesa_emit_op2(ir, OPCODE_MUL, - result_dst, - op[0], op[1]); + emit(ir, OPCODE_MUL, result_dst, op[0], op[1]); break; case ir_binop_dot: assert(ir->operands[0]->type->is_vector()); assert(ir->operands[0]->type == ir->operands[1]->type); - ir_to_mesa_emit_dp(ir, result_dst, op[0], op[1], - ir->operands[0]->type->vector_elements); + emit_dp(ir, result_dst, op[0], op[1], + ir->operands[0]->type->vector_elements); break; case ir_unop_sqrt: /* sqrt(x) = x * rsq(x). */ - ir_to_mesa_emit_scalar_op1(ir, OPCODE_RSQ, result_dst, op[0]); - ir_to_mesa_emit_op2(ir, OPCODE_MUL, result_dst, result_src, op[0]); + emit_scalar(ir, OPCODE_RSQ, result_dst, op[0]); + emit(ir, OPCODE_MUL, result_dst, result_src, op[0]); /* For incoming channels <= 0, set the result to 0. */ op[0].negate = ~op[0].negate; - ir_to_mesa_emit_op3(ir, OPCODE_CMP, result_dst, + emit(ir, OPCODE_CMP, result_dst, op[0], result_src, src_reg_for_float(0.0)); break; case ir_unop_rsq: - ir_to_mesa_emit_scalar_op1(ir, OPCODE_RSQ, result_dst, op[0]); + emit_scalar(ir, OPCODE_RSQ, result_dst, op[0]); break; case ir_unop_i2f: case ir_unop_b2f: @@ -1369,36 +1302,36 @@ ir_to_mesa_visitor::visit(ir_expression *ir) result_src = op[0]; break; case ir_unop_f2i: - ir_to_mesa_emit_op1(ir, OPCODE_TRUNC, result_dst, op[0]); + emit(ir, OPCODE_TRUNC, result_dst, op[0]); break; case ir_unop_f2b: case ir_unop_i2b: - ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst, + emit(ir, OPCODE_SNE, result_dst, op[0], src_reg_for_float(0.0)); break; case ir_unop_trunc: - ir_to_mesa_emit_op1(ir, OPCODE_TRUNC, result_dst, op[0]); + emit(ir, OPCODE_TRUNC, result_dst, op[0]); break; case ir_unop_ceil: op[0].negate = ~op[0].negate; - ir_to_mesa_emit_op1(ir, OPCODE_FLR, result_dst, op[0]); + emit(ir, OPCODE_FLR, result_dst, op[0]); result_src.negate = ~result_src.negate; break; case ir_unop_floor: - ir_to_mesa_emit_op1(ir, OPCODE_FLR, result_dst, op[0]); + emit(ir, OPCODE_FLR, result_dst, op[0]); break; case ir_unop_fract: - ir_to_mesa_emit_op1(ir, OPCODE_FRC, result_dst, op[0]); + emit(ir, OPCODE_FRC, result_dst, op[0]); break; case ir_binop_min: - ir_to_mesa_emit_op2(ir, OPCODE_MIN, result_dst, op[0], op[1]); + emit(ir, OPCODE_MIN, result_dst, op[0], op[1]); break; case ir_binop_max: - ir_to_mesa_emit_op2(ir, OPCODE_MAX, result_dst, op[0], op[1]); + emit(ir, OPCODE_MAX, result_dst, op[0], op[1]); break; case ir_binop_pow: - ir_to_mesa_emit_scalar_op2(ir, OPCODE_POW, result_dst, op[0], op[1]); + emit_scalar(ir, OPCODE_POW, result_dst, op[0], op[1]); break; case ir_unop_bit_not: @@ -1426,7 +1359,7 @@ ir_to_mesa_visitor::visit(ir_expression *ir) void ir_to_mesa_visitor::visit(ir_swizzle *ir) { - ir_to_mesa_src_reg src_reg; + src_reg src; int i; int swizzle[4]; @@ -1436,23 +1369,23 @@ ir_to_mesa_visitor::visit(ir_swizzle *ir) */ ir->val->accept(this); - src_reg = this->result; - assert(src_reg.file != PROGRAM_UNDEFINED); + src = this->result; + assert(src.file != PROGRAM_UNDEFINED); for (i = 0; i < 4; i++) { if (i < ir->type->vector_elements) { switch (i) { case 0: - swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.x); + swizzle[i] = GET_SWZ(src.swizzle, ir->mask.x); break; case 1: - swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.y); + swizzle[i] = GET_SWZ(src.swizzle, ir->mask.y); break; case 2: - swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.z); + swizzle[i] = GET_SWZ(src.swizzle, ir->mask.z); break; case 3: - swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.w); + swizzle[i] = GET_SWZ(src.swizzle, ir->mask.w); break; } } else { @@ -1463,12 +1396,9 @@ ir_to_mesa_visitor::visit(ir_swizzle *ir) } } - src_reg.swizzle = MAKE_SWIZZLE4(swizzle[0], - swizzle[1], - swizzle[2], - swizzle[3]); + src.swizzle = MAKE_SWIZZLE4(swizzle[0], swizzle[1], swizzle[2], swizzle[3]); - this->result = src_reg; + this->result = src; } void @@ -1533,54 +1463,53 @@ ir_to_mesa_visitor::visit(ir_dereference_variable *ir) } } - this->result = ir_to_mesa_src_reg(entry->file, entry->index, var->type); + this->result = src_reg(entry->file, entry->index, var->type); } void ir_to_mesa_visitor::visit(ir_dereference_array *ir) { ir_constant *index; - ir_to_mesa_src_reg src_reg; + src_reg src; int element_size = type_size(ir->type); index = ir->array_index->constant_expression_value(); ir->array->accept(this); - src_reg = this->result; + src = this->result; if (index) { - src_reg.index += index->value.i[0] * element_size; + src.index += index->value.i[0] * element_size; } else { - ir_to_mesa_src_reg array_base = this->result; + src_reg array_base = this->result; /* Variable index array dereference. It eats the "vec4" of the * base of the array and an index that offsets the Mesa register * index. */ ir->array_index->accept(this); - ir_to_mesa_src_reg index_reg; + src_reg index_reg; if (element_size == 1) { index_reg = this->result; } else { index_reg = get_temp(glsl_type::float_type); - ir_to_mesa_emit_op2(ir, OPCODE_MUL, - ir_to_mesa_dst_reg_from_src(index_reg), - this->result, src_reg_for_float(element_size)); + emit(ir, OPCODE_MUL, dst_reg(index_reg), + this->result, src_reg_for_float(element_size)); } - src_reg.reladdr = ralloc(mem_ctx, ir_to_mesa_src_reg); - memcpy(src_reg.reladdr, &index_reg, sizeof(index_reg)); + src.reladdr = ralloc(mem_ctx, src_reg); + memcpy(src.reladdr, &index_reg, sizeof(index_reg)); } /* If the type is smaller than a vec4, replicate the last channel out. */ if (ir->type->is_scalar() || ir->type->is_vector()) - src_reg.swizzle = swizzle_for_size(ir->type->vector_elements); + src.swizzle = swizzle_for_size(ir->type->vector_elements); else - src_reg.swizzle = SWIZZLE_NOOP; + src.swizzle = SWIZZLE_NOOP; - this->result = src_reg; + this->result = src; } void @@ -1612,7 +1541,7 @@ ir_to_mesa_visitor::visit(ir_dereference_record *ir) * instead of potentially using a temporary like we might with the * ir_dereference handler. */ -static struct ir_to_mesa_dst_reg +static dst_reg get_assignment_lhs(ir_dereference *ir, ir_to_mesa_visitor *v) { /* The LHS must be a dereference. If the LHS is a variable indexed array @@ -1629,7 +1558,7 @@ get_assignment_lhs(ir_dereference *ir, ir_to_mesa_visitor *v) * swizzles in it and write swizzles using writemask, though. */ ir->accept(v); - return ir_to_mesa_dst_reg_from_src(v->result); + return dst_reg(v->result); } /** @@ -1722,8 +1651,8 @@ ir_to_mesa_visitor::process_move_condition(ir_rvalue *ir) void ir_to_mesa_visitor::visit(ir_assignment *ir) { - struct ir_to_mesa_dst_reg l; - struct ir_to_mesa_src_reg r; + dst_reg l; + src_reg r; int i; ir->rhs->accept(this); @@ -1779,15 +1708,13 @@ ir_to_mesa_visitor::visit(ir_assignment *ir) if (ir->condition) { const bool switch_order = this->process_move_condition(ir->condition); - ir_to_mesa_src_reg condition = this->result; + src_reg condition = this->result; for (i = 0; i < type_size(ir->lhs->type); i++) { if (switch_order) { - ir_to_mesa_emit_op3(ir, OPCODE_CMP, l, - condition, ir_to_mesa_src_reg_from_dst(l), r); + emit(ir, OPCODE_CMP, l, condition, src_reg(l), r); } else { - ir_to_mesa_emit_op3(ir, OPCODE_CMP, l, - condition, r, ir_to_mesa_src_reg_from_dst(l)); + emit(ir, OPCODE_CMP, l, condition, r, src_reg(l)); } l.index++; @@ -1795,7 +1722,7 @@ ir_to_mesa_visitor::visit(ir_assignment *ir) } } else { for (i = 0; i < type_size(ir->lhs->type); i++) { - ir_to_mesa_emit_op1(ir, OPCODE_MOV, l, r); + emit(ir, OPCODE_MOV, l, r); l.index++; r.index++; } @@ -1806,7 +1733,7 @@ ir_to_mesa_visitor::visit(ir_assignment *ir) void ir_to_mesa_visitor::visit(ir_constant *ir) { - ir_to_mesa_src_reg src_reg; + src_reg src; GLfloat stack_vals[4] = { 0 }; GLfloat *values = stack_vals; unsigned int i; @@ -1818,8 +1745,8 @@ ir_to_mesa_visitor::visit(ir_constant *ir) */ if (ir->type->base_type == GLSL_TYPE_STRUCT) { - ir_to_mesa_src_reg temp_base = get_temp(ir->type); - ir_to_mesa_dst_reg temp = ir_to_mesa_dst_reg_from_src(temp_base); + src_reg temp_base = get_temp(ir->type); + dst_reg temp = dst_reg(temp_base); foreach_iter(exec_list_iterator, iter, ir->components) { ir_constant *field_value = (ir_constant *)iter.get(); @@ -1828,12 +1755,12 @@ ir_to_mesa_visitor::visit(ir_constant *ir) assert(size > 0); field_value->accept(this); - src_reg = this->result; + src = this->result; for (i = 0; i < (unsigned int)size; i++) { - ir_to_mesa_emit_op1(ir, OPCODE_MOV, temp, src_reg); + emit(ir, OPCODE_MOV, temp, src); - src_reg.index++; + src.index++; temp.index++; } } @@ -1842,19 +1769,19 @@ ir_to_mesa_visitor::visit(ir_constant *ir) } if (ir->type->is_array()) { - ir_to_mesa_src_reg temp_base = get_temp(ir->type); - ir_to_mesa_dst_reg temp = ir_to_mesa_dst_reg_from_src(temp_base); + src_reg temp_base = get_temp(ir->type); + dst_reg temp = dst_reg(temp_base); int size = type_size(ir->type->fields.array); assert(size > 0); for (i = 0; i < ir->type->length; i++) { ir->array_elements[i]->accept(this); - src_reg = this->result; + src = this->result; for (int j = 0; j < size; j++) { - ir_to_mesa_emit_op1(ir, OPCODE_MOV, temp, src_reg); + emit(ir, OPCODE_MOV, temp, src); - src_reg.index++; + src.index++; temp.index++; } } @@ -1863,19 +1790,19 @@ ir_to_mesa_visitor::visit(ir_constant *ir) } if (ir->type->is_matrix()) { - ir_to_mesa_src_reg mat = get_temp(ir->type); - ir_to_mesa_dst_reg mat_column = ir_to_mesa_dst_reg_from_src(mat); + src_reg mat = get_temp(ir->type); + dst_reg mat_column = dst_reg(mat); for (i = 0; i < ir->type->matrix_columns; i++) { assert(ir->type->base_type == GLSL_TYPE_FLOAT); values = &ir->value.f[i * ir->type->vector_elements]; - src_reg = ir_to_mesa_src_reg(PROGRAM_CONSTANT, -1, NULL); - src_reg.index = _mesa_add_unnamed_constant(this->prog->Parameters, + src = src_reg(PROGRAM_CONSTANT, -1, NULL); + src.index = _mesa_add_unnamed_constant(this->prog->Parameters, values, ir->type->vector_elements, - &src_reg.swizzle); - ir_to_mesa_emit_op1(ir, OPCODE_MOV, mat_column, src_reg); + &src.swizzle); + emit(ir, OPCODE_MOV, mat_column, src); mat_column.index++; } @@ -1884,7 +1811,7 @@ ir_to_mesa_visitor::visit(ir_constant *ir) return; } - src_reg.file = PROGRAM_CONSTANT; + src.file = PROGRAM_CONSTANT; switch (ir->type->base_type) { case GLSL_TYPE_FLOAT: values = &ir->value.f[0]; @@ -1908,7 +1835,7 @@ ir_to_mesa_visitor::visit(ir_constant *ir) assert(!"Non-float/uint/int/bool constant"); } - this->result = ir_to_mesa_src_reg(PROGRAM_CONSTANT, -1, ir->type); + this->result = src_reg(PROGRAM_CONSTANT, -1, ir->type); this->result.index = _mesa_add_unnamed_constant(this->prog->Parameters, values, ir->type->vector_elements, @@ -1950,7 +1877,7 @@ ir_to_mesa_visitor::get_function_signature(ir_function_signature *sig) if (!sig->return_type->is_void()) { entry->return_reg = get_temp(sig->return_type); } else { - entry->return_reg = ir_to_mesa_undef; + entry->return_reg = undef_src; } this->function_signatures.push_tail(entry); @@ -1977,9 +1904,9 @@ ir_to_mesa_visitor::visit(ir_call *ir) assert(storage); param_rval->accept(this); - ir_to_mesa_src_reg r = this->result; + src_reg r = this->result; - ir_to_mesa_dst_reg l; + dst_reg l; l.file = storage->file; l.index = storage->index; l.reladdr = NULL; @@ -1987,7 +1914,7 @@ ir_to_mesa_visitor::visit(ir_call *ir) l.cond_mask = COND_TR; for (i = 0; i < type_size(param->type); i++) { - ir_to_mesa_emit_op1(ir, OPCODE_MOV, l, r); + emit(ir, OPCODE_MOV, l, r); l.index++; r.index++; } @@ -1998,8 +1925,7 @@ ir_to_mesa_visitor::visit(ir_call *ir) assert(!sig_iter.has_next()); /* Emit call instruction */ - call_inst = ir_to_mesa_emit_op1(ir, OPCODE_CAL, - ir_to_mesa_undef_dst, ir_to_mesa_undef); + call_inst = emit(ir, OPCODE_CAL); call_inst->function = entry; /* Process out parameters. */ @@ -2013,7 +1939,7 @@ ir_to_mesa_visitor::visit(ir_call *ir) variable_storage *storage = find_variable_storage(param); assert(storage); - ir_to_mesa_src_reg r; + src_reg r; r.file = storage->file; r.index = storage->index; r.reladdr = NULL; @@ -2021,10 +1947,10 @@ ir_to_mesa_visitor::visit(ir_call *ir) r.negate = 0; param_rval->accept(this); - ir_to_mesa_dst_reg l = ir_to_mesa_dst_reg_from_src(this->result); + dst_reg l = dst_reg(this->result); for (i = 0; i < type_size(param->type); i++) { - ir_to_mesa_emit_op1(ir, OPCODE_MOV, l, r); + emit(ir, OPCODE_MOV, l, r); l.index++; r.index++; } @@ -2041,8 +1967,8 @@ ir_to_mesa_visitor::visit(ir_call *ir) void ir_to_mesa_visitor::visit(ir_texture *ir) { - ir_to_mesa_src_reg result_src, coord, lod_info, projector; - ir_to_mesa_dst_reg result_dst, coord_dst; + src_reg result_src, coord, lod_info, projector; + dst_reg result_dst, coord_dst; ir_to_mesa_instruction *inst = NULL; prog_opcode opcode = OPCODE_NOP; @@ -2054,9 +1980,8 @@ ir_to_mesa_visitor::visit(ir_texture *ir) * handle cleaning up our mess in that case. */ coord = get_temp(glsl_type::vec4_type); - coord_dst = ir_to_mesa_dst_reg_from_src(coord); - ir_to_mesa_emit_op1(ir, OPCODE_MOV, coord_dst, - this->result); + coord_dst = dst_reg(coord); + emit(ir, OPCODE_MOV, coord_dst, this->result); if (ir->projector) { ir->projector->accept(this); @@ -2067,7 +1992,7 @@ ir_to_mesa_visitor::visit(ir_texture *ir) * the actual storage for the result here, instead. */ result_src = get_temp(glsl_type::vec4_type); - result_dst = ir_to_mesa_dst_reg_from_src(result_src); + result_dst = dst_reg(result_src); switch (ir->op) { case ir_tex: @@ -2093,11 +2018,11 @@ ir_to_mesa_visitor::visit(ir_texture *ir) if (opcode == OPCODE_TEX) { /* Slot the projector in as the last component of the coord. */ coord_dst.writemask = WRITEMASK_W; - ir_to_mesa_emit_op1(ir, OPCODE_MOV, coord_dst, projector); + emit(ir, OPCODE_MOV, coord_dst, projector); coord_dst.writemask = WRITEMASK_XYZW; opcode = OPCODE_TXP; } else { - ir_to_mesa_src_reg coord_w = coord; + src_reg coord_w = coord; coord_w.swizzle = SWIZZLE_WWWW; /* For the other TEX opcodes there's no projective version @@ -2105,34 +2030,58 @@ ir_to_mesa_visitor::visit(ir_texture *ir) * projective divide now. */ coord_dst.writemask = WRITEMASK_W; - ir_to_mesa_emit_op1(ir, OPCODE_RCP, coord_dst, projector); + emit(ir, OPCODE_RCP, coord_dst, projector); + + /* In the case where we have to project the coordinates "by hand," + * the shadow comparitor value must also be projected. + */ + src_reg tmp_src = coord; + if (ir->shadow_comparitor) { + /* Slot the shadow value in as the second to last component of the + * coord. + */ + ir->shadow_comparitor->accept(this); + + tmp_src = get_temp(glsl_type::vec4_type); + dst_reg tmp_dst = dst_reg(tmp_src); + + tmp_dst.writemask = WRITEMASK_Z; + emit(ir, OPCODE_MOV, tmp_dst, this->result); + + tmp_dst.writemask = WRITEMASK_XY; + emit(ir, OPCODE_MOV, tmp_dst, coord); + } coord_dst.writemask = WRITEMASK_XYZ; - ir_to_mesa_emit_op2(ir, OPCODE_MUL, coord_dst, coord, coord_w); + emit(ir, OPCODE_MUL, coord_dst, tmp_src, coord_w); coord_dst.writemask = WRITEMASK_XYZW; coord.swizzle = SWIZZLE_XYZW; } } - if (ir->shadow_comparitor) { + /* If projection is done and the opcode is not OPCODE_TXP, then the shadow + * comparitor was put in the correct place (and projected) by the code, + * above, that handles by-hand projection. + */ + if (ir->shadow_comparitor && (!ir->projector || opcode == OPCODE_TXP)) { /* Slot the shadow value in as the second to last component of the * coord. */ ir->shadow_comparitor->accept(this); coord_dst.writemask = WRITEMASK_Z; - ir_to_mesa_emit_op1(ir, OPCODE_MOV, coord_dst, this->result); + emit(ir, OPCODE_MOV, coord_dst, this->result); coord_dst.writemask = WRITEMASK_XYZW; } if (opcode == OPCODE_TXL || opcode == OPCODE_TXB) { /* Mesa IR stores lod or lod bias in the last channel of the coords. */ coord_dst.writemask = WRITEMASK_W; - ir_to_mesa_emit_op1(ir, OPCODE_MOV, coord_dst, lod_info); + emit(ir, OPCODE_MOV, coord_dst, lod_info); coord_dst.writemask = WRITEMASK_XYZW; } - inst = ir_to_mesa_emit_op1(ir, opcode, result_dst, coord); + inst = emit(ir, opcode, result_dst, coord); if (ir->shadow_comparitor) inst->tex_shadow = GL_TRUE; @@ -2175,24 +2124,24 @@ void ir_to_mesa_visitor::visit(ir_return *ir) { if (ir->get_value()) { - ir_to_mesa_dst_reg l; + dst_reg l; int i; assert(current_function); ir->get_value()->accept(this); - ir_to_mesa_src_reg r = this->result; + src_reg r = this->result; - l = ir_to_mesa_dst_reg_from_src(current_function->return_reg); + l = dst_reg(current_function->return_reg); for (i = 0; i < type_size(current_function->sig->return_type); i++) { - ir_to_mesa_emit_op1(ir, OPCODE_MOV, l, r); + emit(ir, OPCODE_MOV, l, r); l.index++; r.index++; } } - ir_to_mesa_emit_op0(ir, OPCODE_RET); + emit(ir, OPCODE_RET); } void @@ -2203,9 +2152,9 @@ ir_to_mesa_visitor::visit(ir_discard *ir) if (ir->condition) { ir->condition->accept(this); this->result.negate = ~this->result.negate; - ir_to_mesa_emit_op1(ir, OPCODE_KIL, ir_to_mesa_undef_dst, this->result); + emit(ir, OPCODE_KIL, undef_dst, this->result); } else { - ir_to_mesa_emit_op0(ir, OPCODE_KIL_NV); + emit(ir, OPCODE_KIL_NV); } fp->UsesKill = GL_TRUE; @@ -2230,19 +2179,15 @@ ir_to_mesa_visitor::visit(ir_if *ir) * have something to set cond_update on. */ if (cond_inst == prev_inst) { - ir_to_mesa_src_reg temp = get_temp(glsl_type::bool_type); - cond_inst = ir_to_mesa_emit_op1(ir->condition, OPCODE_MOV, - ir_to_mesa_dst_reg_from_src(temp), - result); + src_reg temp = get_temp(glsl_type::bool_type); + cond_inst = emit(ir->condition, OPCODE_MOV, dst_reg(temp), result); } cond_inst->cond_update = GL_TRUE; - if_inst = ir_to_mesa_emit_op0(ir->condition, OPCODE_IF); - if_inst->dst_reg.cond_mask = COND_NE; + if_inst = emit(ir->condition, OPCODE_IF); + if_inst->dst.cond_mask = COND_NE; } else { - if_inst = ir_to_mesa_emit_op1(ir->condition, - OPCODE_IF, ir_to_mesa_undef_dst, - this->result); + if_inst = emit(ir->condition, OPCODE_IF, undef_dst, this->result); } this->instructions.push_tail(if_inst); @@ -2250,12 +2195,11 @@ ir_to_mesa_visitor::visit(ir_if *ir) visit_exec_list(&ir->then_instructions, this); if (!ir->else_instructions.is_empty()) { - else_inst = ir_to_mesa_emit_op0(ir->condition, OPCODE_ELSE); + else_inst = emit(ir->condition, OPCODE_ELSE); visit_exec_list(&ir->else_instructions, this); } - if_inst = ir_to_mesa_emit_op1(ir->condition, OPCODE_ENDIF, - ir_to_mesa_undef_dst, ir_to_mesa_undef); + if_inst = emit(ir->condition, OPCODE_ENDIF); } ir_to_mesa_visitor::ir_to_mesa_visitor() @@ -2273,7 +2217,7 @@ ir_to_mesa_visitor::~ir_to_mesa_visitor() } static struct prog_src_register -mesa_src_reg_from_ir_src_reg(ir_to_mesa_src_reg reg) +mesa_src_reg_from_ir_src_reg(src_reg reg) { struct prog_src_register mesa_reg; @@ -2730,17 +2674,17 @@ ir_to_mesa_visitor::copy_propagate(void) foreach_iter(exec_list_iterator, iter, this->instructions) { ir_to_mesa_instruction *inst = (ir_to_mesa_instruction *)iter.get(); - assert(inst->dst_reg.file != PROGRAM_TEMPORARY - || inst->dst_reg.index < this->next_temp); + assert(inst->dst.file != PROGRAM_TEMPORARY + || inst->dst.index < this->next_temp); /* First, do any copy propagation possible into the src regs. */ for (int r = 0; r < 3; r++) { ir_to_mesa_instruction *first = NULL; bool good = true; - int acp_base = inst->src_reg[r].index * 4; + int acp_base = inst->src[r].index * 4; - if (inst->src_reg[r].file != PROGRAM_TEMPORARY || - inst->src_reg[r].reladdr) + if (inst->src[r].file != PROGRAM_TEMPORARY || + inst->src[r].reladdr) continue; /* See if we can find entries in the ACP consisting of MOVs @@ -2748,7 +2692,7 @@ ir_to_mesa_visitor::copy_propagate(void) * of this src register reference. */ for (int i = 0; i < 4; i++) { - int src_chan = GET_SWZ(inst->src_reg[r].swizzle, i); + int src_chan = GET_SWZ(inst->src[r].swizzle, i); ir_to_mesa_instruction *copy_chan = acp[acp_base + src_chan]; if (!copy_chan) { @@ -2761,8 +2705,8 @@ ir_to_mesa_visitor::copy_propagate(void) if (!first) { first = copy_chan; } else { - if (first->src_reg[0].file != copy_chan->src_reg[0].file || - first->src_reg[0].index != copy_chan->src_reg[0].index) { + if (first->src[0].file != copy_chan->src[0].file || + first->src[0].index != copy_chan->src[0].index) { good = false; break; } @@ -2773,17 +2717,17 @@ ir_to_mesa_visitor::copy_propagate(void) /* We've now validated that we can copy-propagate to * replace this src register reference. Do it. */ - inst->src_reg[r].file = first->src_reg[0].file; - inst->src_reg[r].index = first->src_reg[0].index; + inst->src[r].file = first->src[0].file; + inst->src[r].index = first->src[0].index; int swizzle = 0; for (int i = 0; i < 4; i++) { - int src_chan = GET_SWZ(inst->src_reg[r].swizzle, i); + int src_chan = GET_SWZ(inst->src[r].swizzle, i); ir_to_mesa_instruction *copy_inst = acp[acp_base + src_chan]; - swizzle |= (GET_SWZ(copy_inst->src_reg[0].swizzle, src_chan) << + swizzle |= (GET_SWZ(copy_inst->src[0].swizzle, src_chan) << (3 * i)); } - inst->src_reg[r].swizzle = swizzle; + inst->src[r].swizzle = swizzle; } } @@ -2820,13 +2764,13 @@ ir_to_mesa_visitor::copy_propagate(void) /* Continuing the block, clear any written channels from * the ACP. */ - if (inst->dst_reg.file == PROGRAM_TEMPORARY && inst->dst_reg.reladdr) { + if (inst->dst.file == PROGRAM_TEMPORARY && inst->dst.reladdr) { /* Any temporary might be written, so no copy propagation * across this instruction. */ memset(acp, 0, sizeof(*acp) * this->next_temp * 4); - } else if (inst->dst_reg.file == PROGRAM_OUTPUT && - inst->dst_reg.reladdr) { + } else if (inst->dst.file == PROGRAM_OUTPUT && + inst->dst.reladdr) { /* Any output might be written, so no copy propagation * from outputs across this instruction. */ @@ -2835,17 +2779,17 @@ ir_to_mesa_visitor::copy_propagate(void) if (!acp[4 * r + c]) continue; - if (acp[4 * r + c]->src_reg[0].file == PROGRAM_OUTPUT) + if (acp[4 * r + c]->src[0].file == PROGRAM_OUTPUT) acp[4 * r + c] = NULL; } } - } else if (inst->dst_reg.file == PROGRAM_TEMPORARY || - inst->dst_reg.file == PROGRAM_OUTPUT) { + } else if (inst->dst.file == PROGRAM_TEMPORARY || + inst->dst.file == PROGRAM_OUTPUT) { /* Clear where it's used as dst. */ - if (inst->dst_reg.file == PROGRAM_TEMPORARY) { + if (inst->dst.file == PROGRAM_TEMPORARY) { for (int c = 0; c < 4; c++) { - if (inst->dst_reg.writemask & (1 << c)) { - acp[4 * inst->dst_reg.index + c] = NULL; + if (inst->dst.writemask & (1 << c)) { + acp[4 * inst->dst.index + c] = NULL; } } } @@ -2856,11 +2800,11 @@ ir_to_mesa_visitor::copy_propagate(void) if (!acp[4 * r + c]) continue; - int src_chan = GET_SWZ(acp[4 * r + c]->src_reg[0].swizzle, c); + int src_chan = GET_SWZ(acp[4 * r + c]->src[0].swizzle, c); - if (acp[4 * r + c]->src_reg[0].file == inst->dst_reg.file && - acp[4 * r + c]->src_reg[0].index == inst->dst_reg.index && - inst->dst_reg.writemask & (1 << src_chan)) + if (acp[4 * r + c]->src[0].file == inst->dst.file && + acp[4 * r + c]->src[0].index == inst->dst.index && + inst->dst.writemask & (1 << src_chan)) { acp[4 * r + c] = NULL; } @@ -2872,15 +2816,15 @@ ir_to_mesa_visitor::copy_propagate(void) /* If this is a copy, add it to the ACP. */ if (inst->op == OPCODE_MOV && - inst->dst_reg.file == PROGRAM_TEMPORARY && - !inst->dst_reg.reladdr && + inst->dst.file == PROGRAM_TEMPORARY && + !inst->dst.reladdr && !inst->saturate && - !inst->src_reg[0].reladdr && - !inst->src_reg[0].negate) { + !inst->src[0].reladdr && + !inst->src[0].negate) { for (int i = 0; i < 4; i++) { - if (inst->dst_reg.writemask & (1 << i)) { - acp[4 * inst->dst_reg.index + i] = inst; - acp_level[4 * inst->dst_reg.index + i] = level; + if (inst->dst.writemask & (1 << i)) { + acp[4 * inst->dst.index + i] = inst; + acp_level[4 * inst->dst.index + i] = level; } } } @@ -2945,7 +2889,7 @@ get_mesa_program(struct gl_context *ctx, /* Emit Mesa IR for main(). */ visit_exec_list(shader->ir, &v); - v.ir_to_mesa_emit_op0(NULL, OPCODE_END); + v.emit(NULL, OPCODE_END); /* Now emit bodies for any functions that were used. */ do { @@ -2957,7 +2901,7 @@ get_mesa_program(struct gl_context *ctx, if (!entry->bgn_inst) { v.current_function = entry; - entry->bgn_inst = v.ir_to_mesa_emit_op0(NULL, OPCODE_BGNSUB); + entry->bgn_inst = v.emit(NULL, OPCODE_BGNSUB); entry->bgn_inst->function = entry; visit_exec_list(&entry->sig->body, &v); @@ -2965,10 +2909,10 @@ get_mesa_program(struct gl_context *ctx, ir_to_mesa_instruction *last; last = (ir_to_mesa_instruction *)v.instructions.get_tail(); if (last->op != OPCODE_RET) - v.ir_to_mesa_emit_op0(NULL, OPCODE_RET); + v.emit(NULL, OPCODE_RET); ir_to_mesa_instruction *end; - end = v.ir_to_mesa_emit_op0(NULL, OPCODE_ENDSUB); + end = v.emit(NULL, OPCODE_ENDSUB); end->function = entry; progress = GL_TRUE; @@ -3002,14 +2946,14 @@ get_mesa_program(struct gl_context *ctx, mesa_inst->CondUpdate = inst->cond_update; if (inst->saturate) mesa_inst->SaturateMode = SATURATE_ZERO_ONE; - mesa_inst->DstReg.File = inst->dst_reg.file; - mesa_inst->DstReg.Index = inst->dst_reg.index; - mesa_inst->DstReg.CondMask = inst->dst_reg.cond_mask; - mesa_inst->DstReg.WriteMask = inst->dst_reg.writemask; - mesa_inst->DstReg.RelAddr = inst->dst_reg.reladdr != NULL; - mesa_inst->SrcReg[0] = mesa_src_reg_from_ir_src_reg(inst->src_reg[0]); - mesa_inst->SrcReg[1] = mesa_src_reg_from_ir_src_reg(inst->src_reg[1]); - mesa_inst->SrcReg[2] = mesa_src_reg_from_ir_src_reg(inst->src_reg[2]); + mesa_inst->DstReg.File = inst->dst.file; + mesa_inst->DstReg.Index = inst->dst.index; + mesa_inst->DstReg.CondMask = inst->dst.cond_mask; + mesa_inst->DstReg.WriteMask = inst->dst.writemask; + mesa_inst->DstReg.RelAddr = inst->dst.reladdr != NULL; + mesa_inst->SrcReg[0] = mesa_src_reg_from_ir_src_reg(inst->src[0]); + mesa_inst->SrcReg[1] = mesa_src_reg_from_ir_src_reg(inst->src[1]); + mesa_inst->SrcReg[2] = mesa_src_reg_from_ir_src_reg(inst->src[2]); mesa_inst->TexSrcUnit = inst->sampler; mesa_inst->TexSrcTarget = inst->tex_target; mesa_inst->TexShadow = inst->tex_shadow; diff --git a/src/mesa/program/prog_optimize.c b/src/mesa/program/prog_optimize.c index 96971f2eda4..11debc485eb 100644 --- a/src/mesa/program/prog_optimize.c +++ b/src/mesa/program/prog_optimize.c @@ -74,6 +74,17 @@ get_src_arg_mask(const struct prog_instruction *inst, case OPCODE_MAD: case OPCODE_MUL: case OPCODE_SUB: + case OPCODE_CMP: + case OPCODE_FLR: + case OPCODE_FRC: + case OPCODE_LRP: + case OPCODE_SEQ: + case OPCODE_SGE: + case OPCODE_SGT: + case OPCODE_SLE: + case OPCODE_SLT: + case OPCODE_SNE: + case OPCODE_SSG: channel_mask = inst->DstReg.WriteMask & dst_mask; break; case OPCODE_RCP: @@ -937,24 +948,35 @@ update_interval(GLint intBegin[], GLint intEnd[], GLuint index, GLuint ic) { int i; + GLuint begin = ic; + GLuint end = ic; /* If the register is used in a loop, extend its lifetime through the end * of the outermost loop that doesn't contain its definition. */ for (i = 0; i < loopStackDepth; i++) { if (intBegin[index] < loopStack[i].Start) { - ic = loopStack[i].End; + end = loopStack[i].End; break; } } + /* Variables that are live at the end of a loop will also be live at the + * beginning, so an instruction inside of a loop should have its live + * interval begin at the start of the outermost loop. + */ + if (loopStackDepth > 0 && ic > loopStack[0].Start && ic < loopStack[0].End) { + begin = loopStack[0].Start; + } + ASSERT(index < REG_ALLOCATE_MAX_PROGRAM_TEMPS); if (intBegin[index] == -1) { ASSERT(intEnd[index] == -1); - intBegin[index] = intEnd[index] = ic; + intBegin[index] = begin; + intEnd[index] = end; } else { - intEnd[index] = ic; + intEnd[index] = end; } } @@ -1224,6 +1246,83 @@ print_it(struct gl_context *ctx, struct gl_program *program, const char *txt) { } #endif +/** + * This pass replaces CMP T0, T1 T2 T0 with MOV T0, T2 when the CMP + * instruction is the first instruction to write to register T0. The are + * several lowering passes done in GLSL IR (e.g. branches and + * relative addressing) that create a large number of conditional assignments + * that ir_to_mesa converts to CMP instructions like the one mentioned above. + * + * Here is why this conversion is safe: + * CMP T0, T1 T2 T0 can be expanded to: + * if (T1 < 0.0) + * MOV T0, T2; + * else + * MOV T0, T0; + * + * If (T1 < 0.0) evaluates to true then our replacement MOV T0, T2 is the same + * as the original program. If (T1 < 0.0) evaluates to false, executing + * MOV T0, T0 will store a garbage value in T0 since T0 is uninitialized. + * Therefore, it doesn't matter that we are replacing MOV T0, T0 with MOV T0, T2 + * because any instruction that was going to read from T0 after this was going + * to read a garbage value anyway. + */ +static void +_mesa_simplify_cmp(struct gl_program * program) +{ + GLuint tempWrites[REG_ALLOCATE_MAX_PROGRAM_TEMPS]; + GLuint outputWrites[MAX_PROGRAM_OUTPUTS]; + GLuint i; + + if (dbg) { + printf("Optimize: Begin reads without writes\n"); + _mesa_print_program(program); + } + + for (i = 0; i < REG_ALLOCATE_MAX_PROGRAM_TEMPS; i++) { + tempWrites[i] = 0; + } + + for (i = 0; i < MAX_PROGRAM_OUTPUTS; i++) { + outputWrites[i] = 0; + } + + for (i = 0; i < program->NumInstructions; i++) { + struct prog_instruction *inst = program->Instructions + i; + GLuint prevWriteMask; + + /* Give up if we encounter relative addressing or flow control. */ + if (_mesa_is_flow_control_opcode(inst->Opcode) || inst->DstReg.RelAddr) { + return; + } + + if (inst->DstReg.File == PROGRAM_OUTPUT) { + assert(inst->DstReg.Index < MAX_PROGRAM_OUTPUTS); + prevWriteMask = outputWrites[inst->DstReg.Index]; + outputWrites[inst->DstReg.Index] |= inst->DstReg.WriteMask; + } else if (inst->DstReg.File == PROGRAM_TEMPORARY) { + assert(inst->DstReg.Index < REG_ALLOCATE_MAX_PROGRAM_TEMPS); + prevWriteMask = tempWrites[inst->DstReg.Index]; + tempWrites[inst->DstReg.Index] |= inst->DstReg.WriteMask; + } + + /* For a CMP to be considered a conditional write, the destination + * register and source register two must be the same. */ + if (inst->Opcode == OPCODE_CMP + && !(inst->DstReg.WriteMask & prevWriteMask) + && inst->SrcReg[2].File == inst->DstReg.File + && inst->SrcReg[2].Index == inst->DstReg.Index + && inst->DstReg.WriteMask == get_src_arg_mask(inst, 2, NO_MASK)) { + + inst->Opcode = OPCODE_MOV; + inst->SrcReg[0] = inst->SrcReg[1]; + } + } + if (dbg) { + printf("Optimize: End reads without writes\n"); + _mesa_print_program(program); + } +} /** * Apply optimizations to the given program to eliminate unnecessary @@ -1234,6 +1333,7 @@ _mesa_optimize_program(struct gl_context *ctx, struct gl_program *program) { GLboolean any_change; + _mesa_simplify_cmp(program); /* Stop when no modifications were output */ do { any_change = GL_FALSE; diff --git a/src/mesa/program/prog_statevars.c b/src/mesa/program/prog_statevars.c index c310acb01d4..1fd26f44d56 100644 --- a/src/mesa/program/prog_statevars.c +++ b/src/mesa/program/prog_statevars.c @@ -237,11 +237,17 @@ _mesa_fetch_state(struct gl_context *ctx, const gl_state_index state[], { /* state[1] is the texture unit */ const GLuint unit = (GLuint) state[1]; - COPY_4V(value, ctx->Texture.Unit[unit].EnvColor); + if(ctx->Color._ClampFragmentColor) + COPY_4V(value, ctx->Texture.Unit[unit].EnvColor); + else + COPY_4V(value, ctx->Texture.Unit[unit].EnvColorUnclamped); } return; case STATE_FOG_COLOR: - COPY_4V(value, ctx->Fog.Color); + if(ctx->Color._ClampFragmentColor) + COPY_4V(value, ctx->Fog.Color); + else + COPY_4V(value, ctx->Fog.ColorUnclamped); return; case STATE_FOG_PARAMS: value[0] = ctx->Fog.Density; @@ -399,6 +405,22 @@ _mesa_fetch_state(struct gl_context *ctx, const gl_state_index state[], } return; + case STATE_CURRENT_ATTRIB_MAYBE_VP_CLAMPED: + { + const GLuint idx = (GLuint) state[2]; + if(ctx->Light._ClampVertexColor && + (idx == VERT_ATTRIB_COLOR0 || + idx == VERT_ATTRIB_COLOR1)) { + value[0] = CLAMP(ctx->Current.Attrib[idx][0], 0.0f, 1.0f); + value[1] = CLAMP(ctx->Current.Attrib[idx][1], 0.0f, 1.0f); + value[2] = CLAMP(ctx->Current.Attrib[idx][2], 0.0f, 1.0f); + value[3] = CLAMP(ctx->Current.Attrib[idx][3], 0.0f, 1.0f); + } + else + COPY_4V(value, ctx->Current.Attrib[idx]); + } + return; + case STATE_NORMAL_SCALE: ASSIGN_4V(value, ctx->_ModelViewInvScale, @@ -560,7 +582,7 @@ _mesa_fetch_state(struct gl_context *ctx, const gl_state_index state[], value[0] = value[1] = value[2] = - value[3] = texObj->CompareFailValue; + value[3] = texObj->Sampler.CompareFailValue; } } return; @@ -649,10 +671,12 @@ _mesa_program_state_flags(const gl_state_index state[STATE_LENGTH]) return _NEW_LIGHT; case STATE_TEXGEN: - case STATE_TEXENV_COLOR: return _NEW_TEXTURE; + case STATE_TEXENV_COLOR: + return _NEW_TEXTURE | _NEW_BUFFERS | _NEW_FRAG_CLAMP; case STATE_FOG_COLOR: + return _NEW_FOG | _NEW_BUFFERS | _NEW_FRAG_CLAMP; case STATE_FOG_PARAMS: return _NEW_FOG; @@ -688,6 +712,8 @@ _mesa_program_state_flags(const gl_state_index state[STATE_LENGTH]) switch (state[1]) { case STATE_CURRENT_ATTRIB: return _NEW_CURRENT_ATTRIB; + case STATE_CURRENT_ATTRIB_MAYBE_VP_CLAMPED: + return _NEW_CURRENT_ATTRIB | _NEW_LIGHT | _NEW_BUFFERS; case STATE_NORMAL_SCALE: return _NEW_MODELVIEW; diff --git a/src/mesa/program/prog_statevars.h b/src/mesa/program/prog_statevars.h index f2407af9c87..9fe8d81b3dd 100644 --- a/src/mesa/program/prog_statevars.h +++ b/src/mesa/program/prog_statevars.h @@ -106,6 +106,7 @@ typedef enum gl_state_index_ { STATE_INTERNAL, /* Mesa additions */ STATE_CURRENT_ATTRIB, /* ctx->Current vertex attrib value */ + STATE_CURRENT_ATTRIB_MAYBE_VP_CLAMPED, /* ctx->Current vertex attrib value after passthrough vertex processing */ STATE_NORMAL_SCALE, STATE_TEXRECT_SCALE, STATE_FOG_PARAMS_OPTIMIZED, /* for faster fog calc */ diff --git a/src/mesa/program/program.c b/src/mesa/program/program.c index 79034ab26f2..78efca9f122 100644 --- a/src/mesa/program/program.c +++ b/src/mesa/program/program.c @@ -75,10 +75,10 @@ _mesa_init_program(struct gl_context *ctx) ASSERT(ctx->Const.FragmentProgram.MaxAddressOffset <= (1 << INST_INDEX_BITS)); /* If this fails, increase prog_instruction::TexSrcUnit size */ - ASSERT(MAX_TEXTURE_UNITS < (1 << 5)); + ASSERT(MAX_TEXTURE_UNITS <= (1 << 5)); /* If this fails, increase prog_instruction::TexSrcTarget size */ - ASSERT(NUM_TEXTURE_TARGETS < (1 << 3)); + ASSERT(NUM_TEXTURE_TARGETS <= (1 << 3)); ctx->Program.ErrorPos = -1; ctx->Program.ErrorString = _mesa_strdup(""); @@ -557,7 +557,6 @@ _mesa_clone_program(struct gl_context *ctx, const struct gl_program *prog) const struct gl_fragment_program *fp = (const struct gl_fragment_program *) prog; struct gl_fragment_program *fpc = (struct gl_fragment_program *) clone; - fpc->FogOption = fp->FogOption; fpc->UsesKill = fp->UsesKill; fpc->OriginUpperLeft = fp->OriginUpperLeft; fpc->PixelCenterInteger = fp->PixelCenterInteger; diff --git a/src/mesa/program/program_parse.y b/src/mesa/program/program_parse.y index 19aa8ccdb53..b35bc5a7cae 100644 --- a/src/mesa/program/program_parse.y +++ b/src/mesa/program/program_parse.y @@ -2064,6 +2064,34 @@ optResultFaceType: ? VERT_RESULT_COL0 : FRAG_RESULT_COLOR; } + | '[' INTEGER ']' + { + if (state->mode == ARB_vertex) { + yyerror(& @1, state, "invalid program result name"); + YYERROR; + } else { + if (!state->option.DrawBuffers) { + /* From the ARB_draw_buffers spec (same text exists + * for ATI_draw_buffers): + * + * If this option is not specified, a fragment + * program that attempts to bind + * "result.color[n]" will fail to load, and only + * "result.color" will be allowed. + */ + yyerror(& @1, state, + "result.color[] used without " + "`OPTION ARB_draw_buffers' or " + "`OPTION ATI_draw_buffers'"); + YYERROR; + } else if ($2 >= state->MaxDrawBuffers) { + yyerror(& @1, state, + "result.color[] exceeds MAX_DRAW_BUFFERS_ARB"); + YYERROR; + } + $$ = FRAG_RESULT_DATA0 + $2; + } + } | FRONT { if (state->mode == ARB_vertex) { @@ -2681,6 +2709,7 @@ _mesa_parse_arb_program(struct gl_context *ctx, GLenum target, const GLubyte *st state->MaxClipPlanes = ctx->Const.MaxClipPlanes; state->MaxLights = ctx->Const.MaxLights; state->MaxProgramMatrices = ctx->Const.MaxProgramMatrices; + state->MaxDrawBuffers = ctx->Const.MaxDrawBuffers; state->state_param_enum = (target == GL_VERTEX_PROGRAM_ARB) ? STATE_VERTEX_PROGRAM : STATE_FRAGMENT_PROGRAM; diff --git a/src/mesa/program/program_parse_extra.c b/src/mesa/program/program_parse_extra.c index ae98b782b70..4d928483e16 100644 --- a/src/mesa/program/program_parse_extra.c +++ b/src/mesa/program/program_parse_extra.c @@ -229,6 +229,16 @@ _mesa_ARBfp_parse_option(struct asm_parser_state *state, const char *option) } } } + } else if (strncmp(option, "ATI_", 4) == 0) { + option += 4; + + if (strcmp(option, "draw_buffers") == 0) { + /* Don't need to check extension availability because all Mesa-based + * drivers support GL_ATI_draw_buffers. + */ + state->option.DrawBuffers = 1; + return 1; + } } else if (strncmp(option, "NV_fragment_program", 19) == 0) { option += 19; diff --git a/src/mesa/program/program_parser.h b/src/mesa/program/program_parser.h index d689eef7958..8e5aaee95e5 100644 --- a/src/mesa/program/program_parser.h +++ b/src/mesa/program/program_parser.h @@ -173,6 +173,7 @@ struct asm_parser_state { unsigned MaxClipPlanes; unsigned MaxLights; unsigned MaxProgramMatrices; + unsigned MaxDrawBuffers; /*@}*/ /** diff --git a/src/mesa/program/programopt.c b/src/mesa/program/programopt.c index f92881f8337..a239da2c609 100644 --- a/src/mesa/program/programopt.c +++ b/src/mesa/program/programopt.c @@ -230,15 +230,25 @@ _mesa_insert_mvp_code(struct gl_context *ctx, struct gl_vertex_program *vprog) /** - * Append extra instructions onto the given fragment program to implement - * the fog mode specified by fprog->FogOption. - * The fragment.fogcoord input is used to compute the fog blend factor. + * Append instructions to implement fog * - * XXX with a little work, this function could be adapted to add fog code + * The \c fragment.fogcoord input is used to compute the fog blend factor. + * + * \param ctx The GL context + * \param fprog Fragment program that fog instructions will be appended to. + * \param fog_mode Fog mode. One of \c GL_EXP, \c GL_EXP2, or \c GL_LINEAR. + * \param saturate True if writes to color outputs should be clamped to [0, 1] + * + * \note + * This function sets \c FRAG_BIT_FOGC in \c fprog->Base.InputsRead. + * + * \todo With a little work, this function could be adapted to add fog code * to vertex programs too. */ void -_mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog) +_mesa_append_fog_code(struct gl_context *ctx, + struct gl_fragment_program *fprog, GLenum fog_mode, + GLboolean saturate) { static const gl_state_index fogPStateOpt[STATE_LENGTH] = { STATE_INTERNAL, STATE_FOG_PARAMS_OPTIMIZED, 0, 0, 0 }; @@ -251,9 +261,9 @@ _mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog) GLint fogPRefOpt, fogColorRef; /* state references */ GLuint colorTemp, fogFactorTemp; /* temporary registerss */ - if (fprog->FogOption == GL_NONE) { + if (fog_mode == GL_NONE) { _mesa_problem(ctx, "_mesa_append_fog_code() called for fragment program" - " with FogOption == GL_NONE"); + " with fog_mode == GL_NONE"); return; } @@ -290,7 +300,7 @@ _mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog) /* change the instruction to write to colorTemp w/ clamping */ inst->DstReg.File = PROGRAM_TEMPORARY; inst->DstReg.Index = colorTemp; - inst->SaturateMode = SATURATE_ZERO_ONE; + inst->SaturateMode = saturate; /* don't break (may be several writes to result.color) */ } inst++; @@ -300,7 +310,8 @@ _mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog) _mesa_init_instructions(inst, 5); /* emit instructions to compute fog blending factor */ - if (fprog->FogOption == GL_LINEAR) { + /* this is always clamped to [0, 1] regardless of fragment clamping */ + if (fog_mode == GL_LINEAR) { /* MAD fogFactorTemp.x, fragment.fogcoord.x, fogPRefOpt.x, fogPRefOpt.y; */ inst->Opcode = OPCODE_MAD; inst->DstReg.File = PROGRAM_TEMPORARY; @@ -319,7 +330,7 @@ _mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog) inst++; } else { - ASSERT(fprog->FogOption == GL_EXP || fprog->FogOption == GL_EXP2); + ASSERT(fog_mode == GL_EXP || fog_mode == GL_EXP2); /* fogPRefOpt.z = d/ln(2), fogPRefOpt.w = d/sqrt(ln(2) */ /* EXP: MUL fogFactorTemp.x, fogPRefOpt.z, fragment.fogcoord.x; */ /* EXP2: MUL fogFactorTemp.x, fogPRefOpt.w, fragment.fogcoord.x; */ @@ -330,12 +341,12 @@ _mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog) inst->SrcReg[0].File = PROGRAM_STATE_VAR; inst->SrcReg[0].Index = fogPRefOpt; inst->SrcReg[0].Swizzle - = (fprog->FogOption == GL_EXP) ? SWIZZLE_ZZZZ : SWIZZLE_WWWW; + = (fog_mode == GL_EXP) ? SWIZZLE_ZZZZ : SWIZZLE_WWWW; inst->SrcReg[1].File = PROGRAM_INPUT; inst->SrcReg[1].Index = FRAG_ATTRIB_FOGC; inst->SrcReg[1].Swizzle = SWIZZLE_XXXX; inst++; - if (fprog->FogOption == GL_EXP2) { + if (fog_mode == GL_EXP2) { /* MUL fogFactorTemp.x, fogFactorTemp.x, fogFactorTemp.x; */ inst->Opcode = OPCODE_MUL; inst->DstReg.File = PROGRAM_TEMPORARY; @@ -396,7 +407,6 @@ _mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog) fprog->Base.Instructions = newInst; fprog->Base.NumInstructions = inst - newInst; fprog->Base.InputsRead |= FRAG_BIT_FOGC; - /* XXX do this? fprog->FogOption = GL_NONE; */ } diff --git a/src/mesa/program/programopt.h b/src/mesa/program/programopt.h index ef6f1bd0794..b9205823c29 100644 --- a/src/mesa/program/programopt.h +++ b/src/mesa/program/programopt.h @@ -32,7 +32,9 @@ extern void _mesa_insert_mvp_code(struct gl_context *ctx, struct gl_vertex_program *vprog); extern void -_mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog); +_mesa_append_fog_code(struct gl_context *ctx, + struct gl_fragment_program *fprog, GLenum fog_mode, + GLboolean saturate); extern void _mesa_count_texture_indirections(struct gl_program *prog); diff --git a/src/mesa/sources.mak b/src/mesa/sources.mak index fcf8ab2e794..9b2cb1a3c14 100644 --- a/src/mesa/sources.mak +++ b/src/mesa/sources.mak @@ -71,6 +71,7 @@ MAIN_SOURCES = \ main/readpix.c \ main/remap.c \ main/renderbuffer.c \ + main/samplerobj.c \ main/scissor.c \ main/shaderapi.c \ main/shaderobj.c \ diff --git a/src/mesa/state_tracker/st_atom_blend.c b/src/mesa/state_tracker/st_atom_blend.c index fb1c7a4efee..d1844e1066f 100644 --- a/src/mesa/state_tracker/st_atom_blend.c +++ b/src/mesa/state_tracker/st_atom_blend.c @@ -286,7 +286,7 @@ update_blend( struct st_context *st ) { struct pipe_blend_color bc; - COPY_4FV(bc.color, st->ctx->Color.BlendColor); + COPY_4FV(bc.color, st->ctx->Color.BlendColorUnclamped); cso_set_blend_color(st->cso_context, &bc); } } diff --git a/src/mesa/state_tracker/st_atom_depth.c b/src/mesa/state_tracker/st_atom_depth.c index aaee432a216..6c51b1ac1a2 100644 --- a/src/mesa/state_tracker/st_atom_depth.c +++ b/src/mesa/state_tracker/st_atom_depth.c @@ -142,7 +142,7 @@ update_depth_stencil_alpha(struct st_context *st) if (ctx->Color.AlphaEnabled) { dsa->alpha.enabled = 1; dsa->alpha.func = st_compare_func_to_pipe(ctx->Color.AlphaFunc); - dsa->alpha.ref_value = ctx->Color.AlphaRef; + dsa->alpha.ref_value = ctx->Color.AlphaRefUnclamped; } cso_set_depth_stencil_alpha(st->cso_context, dsa); diff --git a/src/mesa/state_tracker/st_atom_rasterizer.c b/src/mesa/state_tracker/st_atom_rasterizer.c index 8bccceeec53..250cbb2260c 100644 --- a/src/mesa/state_tracker/st_atom_rasterizer.c +++ b/src/mesa/state_tracker/st_atom_rasterizer.c @@ -112,6 +112,8 @@ static void update_raster_state( struct st_context *st ) raster->light_twoside = 1; } + raster->clamp_vertex_color = ctx->Light._ClampVertexColor; + /* _NEW_POLYGON */ if (ctx->Polygon.CullFlag) { @@ -252,6 +254,9 @@ static void update_raster_state( struct st_context *st ) if (ctx->Scissor.Enabled) raster->scissor = 1; + /* _NEW_FRAG_CLAMP */ + raster->clamp_fragment_color = ctx->Color._ClampFragmentColor; + raster->gl_rasterization_rules = 1; cso_set_rasterizer(st->cso_context, raster); @@ -267,7 +272,8 @@ const struct st_tracked_state st_update_rasterizer = { _NEW_POINT | _NEW_POLYGON | _NEW_PROGRAM | - _NEW_SCISSOR), /* mesa state dependencies*/ + _NEW_SCISSOR | + _NEW_FRAG_CLAMP), /* mesa state dependencies*/ ST_NEW_VERTEX_PROGRAM, /* state tracker dependencies */ }, update_raster_state /* update function */ diff --git a/src/mesa/state_tracker/st_atom_sampler.c b/src/mesa/state_tracker/st_atom_sampler.c index 474cbd5897d..808aa73a083 100644 --- a/src/mesa/state_tracker/st_atom_sampler.c +++ b/src/mesa/state_tracker/st_atom_sampler.c @@ -38,6 +38,7 @@ #include "st_cb_texture.h" #include "st_format.h" #include "st_atom.h" +#include "st_texture.h" #include "pipe/p_context.h" #include "pipe/p_defines.h" @@ -138,6 +139,7 @@ update_samplers(struct st_context *st) if (samplersUsed & (1 << su)) { struct gl_texture_object *texobj; struct gl_texture_image *teximg; + struct gl_sampler_object *msamp; GLuint texUnit; if (fprog->Base.SamplersUsed & (1 << su)) @@ -152,25 +154,27 @@ update_samplers(struct st_context *st) teximg = texobj->Image[0][texobj->BaseLevel]; - sampler->wrap_s = gl_wrap_xlate(texobj->WrapS); - sampler->wrap_t = gl_wrap_xlate(texobj->WrapT); - sampler->wrap_r = gl_wrap_xlate(texobj->WrapR); + msamp = st_get_mesa_sampler(st->ctx, texUnit); - sampler->min_img_filter = gl_filter_to_img_filter(texobj->MinFilter); - sampler->min_mip_filter = gl_filter_to_mip_filter(texobj->MinFilter); - sampler->mag_img_filter = gl_filter_to_img_filter(texobj->MagFilter); + sampler->wrap_s = gl_wrap_xlate(msamp->WrapS); + sampler->wrap_t = gl_wrap_xlate(msamp->WrapT); + sampler->wrap_r = gl_wrap_xlate(msamp->WrapR); + + sampler->min_img_filter = gl_filter_to_img_filter(msamp->MinFilter); + sampler->min_mip_filter = gl_filter_to_mip_filter(msamp->MinFilter); + sampler->mag_img_filter = gl_filter_to_img_filter(msamp->MagFilter); if (texobj->Target != GL_TEXTURE_RECTANGLE_ARB) sampler->normalized_coords = 1; - sampler->lod_bias = st->ctx->Texture.Unit[su].LodBias; - - sampler->min_lod = texobj->BaseLevel + texobj->MinLod; - if (sampler->min_lod < texobj->BaseLevel) - sampler->min_lod = texobj->BaseLevel; + sampler->lod_bias = st->ctx->Texture.Unit[texUnit].LodBias + + msamp->LodBias; - sampler->max_lod = MIN2((GLfloat) texobj->MaxLevel, - (texobj->MaxLod + texobj->BaseLevel)); + sampler->min_lod = CLAMP(msamp->MinLod, + 0.0f, + (GLfloat) texobj->MaxLevel - texobj->BaseLevel); + sampler->max_lod = MIN2((GLfloat) texobj->MaxLevel - texobj->BaseLevel, + msamp->MaxLod); if (sampler->max_lod < sampler->min_lod) { /* The GL spec doesn't seem to specify what to do in this case. * Swap the values. @@ -181,17 +185,18 @@ update_samplers(struct st_context *st) assert(sampler->min_lod <= sampler->max_lod); } - st_translate_color(texobj->BorderColor.f, + st_translate_color(msamp->BorderColor.f, teximg ? teximg->_BaseFormat : GL_RGBA, sampler->border_color); - sampler->max_anisotropy = (texobj->MaxAnisotropy == 1.0 ? 0 : (GLuint)texobj->MaxAnisotropy); + sampler->max_anisotropy = (msamp->MaxAnisotropy == 1.0 ? + 0 : (GLuint) msamp->MaxAnisotropy); /* only care about ARB_shadow, not SGI shadow */ - if (texobj->CompareMode == GL_COMPARE_R_TO_TEXTURE) { + if (msamp->CompareMode == GL_COMPARE_R_TO_TEXTURE) { sampler->compare_mode = PIPE_TEX_COMPARE_R_TO_TEXTURE; sampler->compare_func - = st_compare_func_to_pipe(texobj->CompareFunc); + = st_compare_func_to_pipe(msamp->CompareFunc); } st->state.num_samplers = su + 1; diff --git a/src/mesa/state_tracker/st_atom_texture.c b/src/mesa/state_tracker/st_atom_texture.c index fd03669e660..19ad2e8cc4a 100644 --- a/src/mesa/state_tracker/st_atom_texture.c +++ b/src/mesa/state_tracker/st_atom_texture.c @@ -138,16 +138,18 @@ check_sampler_swizzle(struct pipe_sampler_view *sv, static INLINE struct pipe_sampler_view * st_create_texture_sampler_view_from_stobj(struct pipe_context *pipe, struct st_texture_object *stObj, + const struct gl_sampler_object *samp, enum pipe_format format) { struct pipe_sampler_view templ; GLuint swizzle = apply_depthmode(stObj->pt->format, stObj->base._Swizzle, - stObj->base.DepthMode); + samp->DepthMode); u_sampler_view_default_template(&templ, stObj->pt, format); + templ.u.tex.first_level = stObj->base.BaseLevel; if (swizzle != SWIZZLE_NOOP) { templ.swizzle_r = GET_SWZ(swizzle, 0); @@ -163,6 +165,7 @@ st_create_texture_sampler_view_from_stobj(struct pipe_context *pipe, static INLINE struct pipe_sampler_view * st_get_texture_sampler_view_from_stobj(struct st_texture_object *stObj, struct pipe_context *pipe, + const struct gl_sampler_object *samp, enum pipe_format format) { if (!stObj || !stObj->pt) { @@ -171,7 +174,7 @@ st_get_texture_sampler_view_from_stobj(struct st_texture_object *stObj, if (!stObj->sampler_view) { stObj->sampler_view = - st_create_texture_sampler_view_from_stobj(pipe, stObj, format); + st_create_texture_sampler_view_from_stobj(pipe, stObj, samp, format); } return stObj->sampler_view; @@ -199,16 +202,20 @@ update_textures(struct st_context *st) struct st_texture_object *stObj; GLboolean retval; GLuint texUnit; + const struct gl_sampler_object *samp; if (fprog->Base.SamplersUsed & (1 << su)) texUnit = fprog->Base.SamplerUnits[su]; else texUnit = vprog->Base.SamplerUnits[su]; + samp = st_get_mesa_sampler(st->ctx, texUnit); + texObj = st->ctx->Texture.Unit[texUnit]._Current; if (!texObj) { texObj = st_get_default_texture(st); + samp = &texObj->Sampler; } stObj = st_texture_object(texObj); @@ -227,7 +234,7 @@ update_textures(struct st_context *st) enum pipe_format firstImageFormat = st_mesa_format_to_pipe_format(texFormat); - if ((stObj->base.sRGBDecode == GL_SKIP_DECODE_EXT) && + if ((samp->sRGBDecode == GL_SKIP_DECODE_EXT) && (_mesa_get_format_color_encoding(texFormat) == GL_SRGB)) { /* don't do sRGB->RGB conversion. Interpret the texture * texture data as linear values. @@ -244,14 +251,19 @@ update_textures(struct st_context *st) st->state.num_textures = su + 1; /* if sampler view has changed dereference it */ - if (stObj->sampler_view) + if (stObj->sampler_view) { if (check_sampler_swizzle(stObj->sampler_view, stObj->base._Swizzle, - stObj->base.DepthMode) || - (st_view_format != stObj->sampler_view->format)) + samp->DepthMode) || + (st_view_format != stObj->sampler_view->format) || + stObj->base.BaseLevel != stObj->sampler_view->u.tex.first_level) { pipe_sampler_view_reference(&stObj->sampler_view, NULL); + } + } - sampler_view = st_get_texture_sampler_view_from_stobj(stObj, pipe, st_view_format); + sampler_view = st_get_texture_sampler_view_from_stobj(stObj, pipe, + samp, + st_view_format); } pipe_sampler_view_reference(&st->state.sampler_views[su], sampler_view); } @@ -259,10 +271,12 @@ update_textures(struct st_context *st) cso_set_fragment_sampler_views(st->cso_context, st->state.num_textures, st->state.sampler_views); + if (st->ctx->Const.MaxVertexTextureImageUnits > 0) { + GLuint numUnits = MIN2(st->state.num_textures, + st->ctx->Const.MaxVertexTextureImageUnits); cso_set_vertex_sampler_views(st->cso_context, - MIN2(st->state.num_textures, - st->ctx->Const.MaxVertexTextureImageUnits), + numUnits, st->state.sampler_views); } } diff --git a/src/mesa/state_tracker/st_cb_blit.c b/src/mesa/state_tracker/st_cb_blit.c index 6d02a7dccd4..25c95c7b9dc 100644 --- a/src/mesa/state_tracker/st_cb_blit.c +++ b/src/mesa/state_tracker/st_cb_blit.c @@ -39,6 +39,7 @@ #include "st_texture.h" #include "st_cb_blit.h" #include "st_cb_fbo.h" +#include "st_atom.h" #include "util/u_blit.h" @@ -75,6 +76,8 @@ st_BlitFramebuffer(struct gl_context *ctx, struct gl_framebuffer *readFB = ctx->ReadBuffer; struct gl_framebuffer *drawFB = ctx->DrawBuffer; + st_validate_state(st); + if (!_mesa_clip_blit(ctx, &srcX0, &srcY0, &srcX1, &srcY1, &dstX0, &dstY0, &dstX1, &dstY1)) { return; /* nothing to draw/blit */ diff --git a/src/mesa/state_tracker/st_cb_bufferobjects.c b/src/mesa/state_tracker/st_cb_bufferobjects.c index b9b606d539c..1e489b29d93 100644 --- a/src/mesa/state_tracker/st_cb_bufferobjects.c +++ b/src/mesa/state_tracker/st_cb_bufferobjects.c @@ -408,9 +408,7 @@ st_copy_buffer_subdata(struct gl_context *ctx, struct pipe_context *pipe = st_context(ctx)->pipe; struct st_buffer_object *srcObj = st_buffer_object(src); struct st_buffer_object *dstObj = st_buffer_object(dst); - struct pipe_transfer *src_transfer; - struct pipe_transfer *dst_transfer; - ubyte *srcPtr, *dstPtr; + struct pipe_box box; if(!size) return; @@ -419,23 +417,10 @@ st_copy_buffer_subdata(struct gl_context *ctx, assert(!src->Pointer); assert(!dst->Pointer); - srcPtr = (ubyte *) pipe_buffer_map_range(pipe, - srcObj->buffer, - readOffset, size, - PIPE_TRANSFER_READ, - &src_transfer); + u_box_1d(readOffset, size, &box); - dstPtr = (ubyte *) pipe_buffer_map_range(pipe, - dstObj->buffer, - writeOffset, size, - PIPE_TRANSFER_WRITE, - &dst_transfer); - - if (srcPtr && dstPtr) - memcpy(dstPtr + writeOffset, srcPtr + readOffset, size); - - pipe_buffer_unmap(pipe, src_transfer); - pipe_buffer_unmap(pipe, dst_transfer); + pipe->resource_copy_region(pipe, dstObj->buffer, 0, writeOffset, 0, 0, + srcObj->buffer, 0, &box); } diff --git a/src/mesa/state_tracker/st_cb_clear.c b/src/mesa/state_tracker/st_cb_clear.c index 1eb748e0d5d..181fedd2b99 100644 --- a/src/mesa/state_tracker/st_cb_clear.c +++ b/src/mesa/state_tracker/st_cb_clear.c @@ -323,7 +323,7 @@ clear_with_quad(struct gl_context *ctx, set_vertex_shader(st); if (ctx->DrawBuffer->_ColorDrawBuffers[0]) { - st_translate_color(ctx->Color.ClearColor, + st_translate_color(ctx->Color.ClearColorUnclamped, ctx->DrawBuffer->_ColorDrawBuffers[0]->_BaseFormat, clearColor); } @@ -585,7 +585,7 @@ st_Clear(struct gl_context *ctx, GLbitfield mask) clearColor); } - st->pipe->clear(st->pipe, clear_buffers, ctx->Color.ClearColor, + st->pipe->clear(st->pipe, clear_buffers, ctx->Color.ClearColorUnclamped, ctx->Depth.Clear, ctx->Stencil.Clear); } if (mask & BUFFER_BIT_ACCUM) diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c index eccc207579b..1707f827cc8 100644 --- a/src/mesa/state_tracker/st_cb_drawpixels.c +++ b/src/mesa/state_tracker/st_cb_drawpixels.c @@ -296,7 +296,7 @@ base_format(GLenum format) * of the given format and type. */ static GLenum -internal_format(GLenum format, GLenum type) +internal_format(struct gl_context *ctx, GLenum format, GLenum type) { switch (format) { case GL_DEPTH_COMPONENT: @@ -326,7 +326,53 @@ internal_format(GLenum format, GLenum type) } } else { - return GL_RGBA; + switch (type) { + case GL_UNSIGNED_BYTE: + case GL_UNSIGNED_INT_8_8_8_8: + case GL_UNSIGNED_INT_8_8_8_8_REV: + default: + return GL_RGBA8; + + case GL_UNSIGNED_BYTE_3_3_2: + case GL_UNSIGNED_BYTE_2_3_3_REV: + case GL_UNSIGNED_SHORT_4_4_4_4: + case GL_UNSIGNED_SHORT_4_4_4_4_REV: + return GL_RGBA4; + + case GL_UNSIGNED_SHORT_5_6_5: + case GL_UNSIGNED_SHORT_5_6_5_REV: + case GL_UNSIGNED_SHORT_5_5_5_1: + case GL_UNSIGNED_SHORT_1_5_5_5_REV: + return GL_RGB5_A1; + + case GL_UNSIGNED_INT_10_10_10_2: + case GL_UNSIGNED_INT_2_10_10_10_REV: + return GL_RGB10_A2; + + case GL_UNSIGNED_SHORT: + case GL_UNSIGNED_INT: + return GL_RGBA16; + + case GL_BYTE: + return + ctx->Extensions.EXT_texture_snorm ? GL_RGBA8_SNORM : GL_RGBA8; + + case GL_SHORT: + case GL_INT: + return + ctx->Extensions.EXT_texture_snorm ? GL_RGBA16_SNORM : GL_RGBA16; + + case GL_HALF_FLOAT_ARB: + return + ctx->Extensions.ARB_texture_float ? GL_RGBA16F : + ctx->Extensions.EXT_texture_snorm ? GL_RGBA16_SNORM : GL_RGBA16; + + case GL_FLOAT: + case GL_DOUBLE: + return + ctx->Extensions.ARB_texture_float ? GL_RGBA32F : + ctx->Extensions.EXT_texture_snorm ? GL_RGBA16_SNORM : GL_RGBA16; + } } } } @@ -369,7 +415,7 @@ make_texture(struct st_context *st, GLenum baseFormat, intFormat; baseFormat = base_format(format); - intFormat = internal_format(format, type); + intFormat = internal_format(ctx, format, type); mformat = st_ChooseTextureFormat_renderable(ctx, intFormat, format, type, GL_FALSE); @@ -582,6 +628,7 @@ draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z, { struct pipe_rasterizer_state rasterizer; memset(&rasterizer, 0, sizeof(rasterizer)); + rasterizer.clamp_fragment_color = ctx->Color._ClampFragmentColor; rasterizer.gl_rasterization_rules = 1; rasterizer.scissor = ctx->Scissor.Enabled; cso_set_rasterizer(cso, &rasterizer); diff --git a/src/mesa/state_tracker/st_cb_fbo.c b/src/mesa/state_tracker/st_cb_fbo.c index 0df04287ae6..e632d816542 100644 --- a/src/mesa/state_tracker/st_cb_fbo.c +++ b/src/mesa/state_tracker/st_cb_fbo.c @@ -353,7 +353,7 @@ st_render_texture(struct gl_context *ctx, return; /* get pointer to texture image we're rendeing to */ - texImage = att->Texture->Image[att->CubeMapFace][att->TextureLevel]; + texImage = _mesa_get_attachment_teximage(att); /* create new renderbuffer which wraps the texture image */ rb = st_new_renderbuffer(ctx, 0); @@ -471,8 +471,7 @@ st_validate_attachment(struct gl_context *ctx, return GL_FALSE; format = stObj->pt->format; - texFormat = - stObj->base.Image[att->CubeMapFace][att->TextureLevel]->TexFormat; + texFormat = _mesa_get_attachment_teximage_const(att)->TexFormat; /* If the encoding is sRGB and sRGB rendering cannot be enabled, * check for linear format support instead. @@ -529,6 +528,9 @@ st_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb) const struct gl_renderbuffer_attachment *stencil = &fb->Attachment[BUFFER_STENCIL]; GLuint i; + enum pipe_format first_format = PIPE_FORMAT_NONE; + boolean mixed_formats = + screen->get_param(screen, PIPE_CAP_MIXED_COLORBUFFER_FORMATS) != 0; if (depth->Type && stencil->Type && depth->Type != stencil->Type) { fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT; @@ -562,13 +564,33 @@ st_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb) return; } for (i = 0; i < ctx->Const.MaxColorAttachments; i++) { + struct gl_renderbuffer_attachment *att = + &fb->Attachment[BUFFER_COLOR0 + i]; + enum pipe_format format; + if (!st_validate_attachment(ctx, screen, - &fb->Attachment[BUFFER_COLOR0 + i], + att, PIPE_BIND_RENDER_TARGET)) { fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT; return; } + + if (!mixed_formats) { + /* Disallow mixed formats. */ + if (att->Type != GL_NONE) { + format = st_renderbuffer(att->Renderbuffer)->surface->format; + } else { + continue; + } + + if (first_format == PIPE_FORMAT_NONE) { + first_format = format; + } else if (format != first_format) { + fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT; + return; + } + } } } diff --git a/src/mesa/state_tracker/st_cb_readpixels.c b/src/mesa/state_tracker/st_cb_readpixels.c index f8da2a4d158..2a63799bdbc 100644 --- a/src/mesa/state_tracker/st_cb_readpixels.c +++ b/src/mesa/state_tracker/st_cb_readpixels.c @@ -198,27 +198,39 @@ st_fast_readpixels(struct gl_context *ctx, struct st_renderbuffer *strb, const struct gl_pixelstore_attrib *pack, GLvoid *dest) { + GLubyte alphaORoperand; enum combination { A8R8G8B8_UNORM_TO_RGBA_UBYTE, A8R8G8B8_UNORM_TO_RGB_UBYTE, - A8R8G8B8_UNORM_TO_BGRA_UINT + A8R8G8B8_UNORM_TO_BGRA_UINT, + A8R8G8B8_UNORM_TO_RGBA_UINT } combo; if (ctx->_ImageTransferState) return GL_FALSE; - if (strb->format == PIPE_FORMAT_B8G8R8A8_UNORM && - format == GL_RGBA && type == GL_UNSIGNED_BYTE) { + if (strb->format == PIPE_FORMAT_B8G8R8A8_UNORM) { + alphaORoperand = 0; + } + else if (strb->format == PIPE_FORMAT_B8G8R8X8_UNORM ) { + alphaORoperand = 0xff; + } + else { + return GL_FALSE; + } + + if (format == GL_RGBA && type == GL_UNSIGNED_BYTE) { combo = A8R8G8B8_UNORM_TO_RGBA_UBYTE; } - else if (strb->format == PIPE_FORMAT_B8G8R8A8_UNORM && - format == GL_RGB && type == GL_UNSIGNED_BYTE) { + else if (format == GL_RGB && type == GL_UNSIGNED_BYTE) { combo = A8R8G8B8_UNORM_TO_RGB_UBYTE; } - else if (strb->format == PIPE_FORMAT_B8G8R8A8_UNORM && - format == GL_BGRA && type == GL_UNSIGNED_INT_8_8_8_8_REV) { + else if (format == GL_BGRA && type == GL_UNSIGNED_INT_8_8_8_8_REV) { combo = A8R8G8B8_UNORM_TO_BGRA_UINT; } + else if (format == GL_RGBA && type == GL_UNSIGNED_INT_8_8_8_8) { + combo = A8R8G8B8_UNORM_TO_RGBA_UINT; + } else { return GL_FALSE; } @@ -278,7 +290,7 @@ st_fast_readpixels(struct gl_context *ctx, struct st_renderbuffer *strb, dst[col*4+0] = (pixel >> 16) & 0xff; dst[col*4+1] = (pixel >> 8) & 0xff; dst[col*4+2] = (pixel >> 0) & 0xff; - dst[col*4+3] = (pixel >> 24) & 0xff; + dst[col*4+3] = ((pixel >> 24) & 0xff) | alphaORoperand; } dst += dstStride; y += dy; @@ -301,6 +313,26 @@ st_fast_readpixels(struct gl_context *ctx, struct st_renderbuffer *strb, for (row = 0; row < height; row++) { const GLubyte *src = map + y * trans->stride; memcpy(dst, src, 4 * width); + if (alphaORoperand) { + assert(alphaORoperand == 0xff); + for (col = 0; col < width; col++) { + dst[col*4+3] = 0xff; + } + } + dst += dstStride; + y += dy; + } + break; + case A8R8G8B8_UNORM_TO_RGBA_UINT: + for (row = 0; row < height; row++) { + const GLubyte *src = map + y * trans->stride; + for (col = 0; col < width; col++) { + GLuint pixel = ((GLuint *) src)[col]; + dst[col*4+0] = ((pixel >> 24) & 0xff) | alphaORoperand; + dst[col*4+1] = (pixel >> 0) & 0xff; + dst[col*4+2] = (pixel >> 8) & 0xff; + dst[col*4+3] = (pixel >> 16) & 0xff; + } dst += dstStride; y += dy; } @@ -331,7 +363,7 @@ st_readpixels(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei h struct st_context *st = st_context(ctx); struct pipe_context *pipe = st->pipe; GLfloat (*temp)[4]; - const GLbitfield transferOps = ctx->_ImageTransferState; + GLbitfield transferOps = ctx->_ImageTransferState; GLsizei i, j; GLint yStep, dfStride; GLfloat *df; @@ -391,7 +423,10 @@ st_readpixels(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei h return; } - if (format == GL_RGBA && type == GL_FLOAT) { + if(ctx->Color._ClampReadColor) + transferOps |= IMAGE_CLAMP_BIT; + + if (format == GL_RGBA && type == GL_FLOAT && !transferOps) { /* write tile(row) directly into user's buffer */ df = (GLfloat *) _mesa_image_address2d(&clippedPacking, dest, width, height, format, type, 0, 0); diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index 9d5eb113ff7..ab7f6a51684 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -87,6 +87,8 @@ gl_target_to_pipe(GLenum target) return PIPE_TEXTURE_1D_ARRAY; case GL_TEXTURE_2D_ARRAY_EXT: return PIPE_TEXTURE_2D_ARRAY; + case GL_TEXTURE_BUFFER: + return PIPE_BUFFER; default: assert(0); return 0; @@ -245,6 +247,7 @@ get_texture_dims(GLenum target) switch (target) { case GL_TEXTURE_1D: case GL_TEXTURE_1D_ARRAY_EXT: + case GL_TEXTURE_BUFFER: return 1; case GL_TEXTURE_2D: case GL_TEXTURE_CUBE_MAP_ARB: @@ -359,8 +362,8 @@ guess_and_alloc_texture(struct st_context *st, * to re-allocating a texture buffer with space for more (or fewer) * mipmap levels later. */ - if ((stObj->base.MinFilter == GL_NEAREST || - stObj->base.MinFilter == GL_LINEAR || + if ((stObj->base.Sampler.MinFilter == GL_NEAREST || + stObj->base.Sampler.MinFilter == GL_LINEAR || stImage->base._BaseFormat == GL_DEPTH_COMPONENT || stImage->base._BaseFormat == GL_DEPTH_STENCIL_EXT) && !stObj->base.GenerateMipmap && @@ -597,7 +600,12 @@ st_TexImage(struct gl_context * ctx, * memory or malloc space for it. */ if (stImage->pt) { - /* Store the image in the gallium texture memory buffer */ + if (!pixels) { + /* We've allocated texture resource, but have no pixel data - all done. */ + goto done; + } + + /* Store the image in the gallium transfer object */ if (format == GL_DEPTH_COMPONENT && util_format_is_depth_and_stencil(stImage->pt->format)) transfer_usage = PIPE_TRANSFER_READ_WRITE; @@ -1678,7 +1686,7 @@ copy_image_data_to_texture(struct st_context *st, /* debug checks */ { const struct gl_texture_image *dstImage = - stObj->base.Image[stImage->face][stImage->level]; + stObj->base.Image[stImage->face][dstLevel]; assert(dstImage); assert(dstImage->Width == stImage->base.Width); assert(dstImage->Height == stImage->base.Height); @@ -1739,8 +1747,8 @@ st_finalize_texture(struct gl_context *ctx, * incomplete. In that case, we'll have set stObj->lastLevel before * we get here. */ - if (stObj->base.MinFilter == GL_LINEAR || - stObj->base.MinFilter == GL_NEAREST) + if (stObj->base.Sampler.MinFilter == GL_LINEAR || + stObj->base.Sampler.MinFilter == GL_NEAREST) stObj->lastLevel = stObj->base.BaseLevel; else stObj->lastLevel = stObj->base._MaxLevel; @@ -1835,7 +1843,12 @@ st_finalize_texture(struct gl_context *ctx, /* Need to import images in main memory or held in other textures. */ if (stImage && stObj->pt != stImage->pt) { - copy_image_data_to_texture(st, stObj, level, stImage); + if (stImage->base.Width == u_minify(stObj->width0, level) && + stImage->base.Height == u_minify(stObj->height0, level) && + stImage->base.Depth == u_minify(stObj->depth0, level)) { + /* src image fits expected dest mipmap level size */ + copy_image_data_to_texture(st, stObj, level, stImage); + } } } } @@ -1887,8 +1900,8 @@ st_get_default_texture(struct st_context *st) texObj, texImg, 0, 0); - texObj->MinFilter = GL_NEAREST; - texObj->MagFilter = GL_NEAREST; + texObj->Sampler.MinFilter = GL_NEAREST; + texObj->Sampler.MagFilter = GL_NEAREST; texObj->_Complete = GL_TRUE; st->default_texture = texObj; diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index 5a39ab0a110..ce78956e359 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -27,6 +27,7 @@ #include "main/imports.h" #include "main/context.h" +#include "main/samplerobj.h" #include "main/shaderobj.h" #include "program/prog_cache.h" #include "vbo/vbo.h" @@ -206,8 +207,8 @@ static void st_destroy_context_priv( struct st_context *st ) st_destroy_drawtex(st); /* Unreference any user vertex buffers. */ - for (i = 0; i < st->num_user_vbs; i++) { - pipe_resource_reference(&st->user_vb[i], NULL); + for (i = 0; i < st->num_user_attribs; i++) { + pipe_resource_reference(&st->user_attrib[i].buffer, NULL); } for (i = 0; i < Elements(st->state.sampler_views); i++) { @@ -269,6 +270,7 @@ void st_destroy_context( struct st_context *st ) void st_init_driver_functions(struct dd_function_table *functions) { _mesa_init_shader_object_functions(functions); + _mesa_init_sampler_object_functions(functions); st_init_accum_functions(functions); st_init_blit_functions(functions); diff --git a/src/mesa/state_tracker/st_context.h b/src/mesa/state_tracker/st_context.h index 77765f02379..1fc9c1051a0 100644 --- a/src/mesa/state_tracker/st_context.h +++ b/src/mesa/state_tracker/st_context.h @@ -187,9 +187,16 @@ struct st_context void *winsys_drawable_handle; /* User vertex buffers. */ - struct pipe_resource *user_vb[PIPE_MAX_ATTRIBS]; - unsigned user_vb_stride[PIPE_MAX_ATTRIBS]; - unsigned num_user_vbs; + struct { + struct pipe_resource *buffer; + + /** Element size */ + GLuint element_size; + + /** Attribute stride */ + GLsizei stride; + } user_attrib[PIPE_MAX_ATTRIBS]; + unsigned num_user_attribs; }; diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c index 40afa436292..d27043ec296 100644 --- a/src/mesa/state_tracker/st_draw.c +++ b/src/mesa/state_tracker/st_draw.c @@ -181,7 +181,7 @@ static GLuint fixed_types[4] = { /** * Return a PIPE_FORMAT_x for the given GL datatype and size. */ -GLuint +enum pipe_format st_pipe_vertex_format(GLenum type, GLuint size, GLenum format, GLboolean normalized) { @@ -211,7 +211,7 @@ st_pipe_vertex_format(GLenum type, GLuint size, GLenum format, case GL_UNSIGNED_BYTE: return ubyte_types_norm[size-1]; case GL_FIXED: return fixed_types[size-1]; default: assert(0); return 0; - } + } } else { switch (type) { @@ -226,15 +226,13 @@ st_pipe_vertex_format(GLenum type, GLuint size, GLenum format, case GL_UNSIGNED_BYTE: return ubyte_types_scale[size-1]; case GL_FIXED: return fixed_types[size-1]; default: assert(0); return 0; - } + } } - return 0; /* silence compiler warning */ + return PIPE_FORMAT_NONE; /* silence compiler warning */ } - - /** * Examine the active arrays to determine if we have interleaved * vertex arrays all living in one VBO, or all living in user space. @@ -253,8 +251,9 @@ is_interleaved_arrays(const struct st_vertex_program *vp, for (attr = 0; attr < vpv->num_inputs; attr++) { const GLuint mesaAttr = vp->index_to_input[attr]; - const struct gl_buffer_object *bufObj = arrays[mesaAttr]->BufferObj; - const GLsizei stride = arrays[mesaAttr]->StrideB; /* in bytes */ + const struct gl_client_array *array = arrays[mesaAttr]; + const struct gl_buffer_object *bufObj = array->BufferObj; + const GLsizei stride = array->StrideB; /* in bytes */ if (firstStride < 0) { firstStride = stride; @@ -272,9 +271,9 @@ is_interleaved_arrays(const struct st_vertex_program *vp, return GL_FALSE; } if (!client_addr) { - client_addr = arrays[mesaAttr]->Ptr; + client_addr = array->Ptr; } - else if (abs(arrays[mesaAttr]->Ptr - client_addr) > firstStride) { + else if (abs(array->Ptr - client_addr) > firstStride) { /* arrays start too far apart */ return GL_FALSE; } @@ -315,8 +314,8 @@ setup_interleaved_attribs(struct gl_context *ctx, GLuint attr; const GLubyte *low_addr = NULL; - /* Find the lowest address. */ - if(vpv->num_inputs) { + /* Find the lowest address of the arrays we're drawing */ + if (vpv->num_inputs) { low_addr = arrays[vp->index_to_input[0]]->Ptr; for (attr = 1; attr < vpv->num_inputs; attr++) { @@ -327,41 +326,48 @@ setup_interleaved_attribs(struct gl_context *ctx, for (attr = 0; attr < vpv->num_inputs; attr++) { const GLuint mesaAttr = vp->index_to_input[attr]; - struct gl_buffer_object *bufobj = arrays[mesaAttr]->BufferObj; + const struct gl_client_array *array = arrays[mesaAttr]; + struct gl_buffer_object *bufobj = array->BufferObj; struct st_buffer_object *stobj = st_buffer_object(bufobj); - GLsizei stride = arrays[mesaAttr]->StrideB; + unsigned src_offset = (unsigned) (array->Ptr - low_addr); + GLuint element_size = array->_ElementSize; + GLsizei stride = array->StrideB; + + assert(element_size == array->Size * _mesa_sizeof_type(array->Type)); if (attr == 0) { if (bufobj && bufobj->Name) { vbuffer->buffer = NULL; pipe_resource_reference(&vbuffer->buffer, stobj->buffer); vbuffer->buffer_offset = pointer_to_offset(low_addr); - } else { - uint divisor = arrays[mesaAttr]->InstanceDivisor; - uint length = (divisor ? num_instances / divisor : max_index) + 1; - vbuffer->buffer = - pipe_user_buffer_create(pipe->screen, (void*)low_addr, - stride * length, - PIPE_BIND_VERTEX_BUFFER); + } + else { + uint divisor = array->InstanceDivisor; + uint last_index = divisor ? num_instances / divisor : max_index; + uint bytes = src_offset + stride * last_index + element_size; + + vbuffer->buffer = pipe_user_buffer_create(pipe->screen, + (void*) low_addr, + bytes, + PIPE_BIND_VERTEX_BUFFER); vbuffer->buffer_offset = 0; /* Track user vertex buffers. */ - pipe_resource_reference(&st->user_vb[0], vbuffer->buffer); - st->user_vb_stride[0] = stride; - st->num_user_vbs = 1; + pipe_resource_reference(&st->user_attrib[0].buffer, vbuffer->buffer); + st->user_attrib[0].element_size = element_size; + st->user_attrib[0].stride = stride; + st->num_user_attribs = 1; } vbuffer->stride = stride; /* in bytes */ } - velements[attr].src_offset = - (unsigned) (arrays[mesaAttr]->Ptr - low_addr); - velements[attr].instance_divisor = arrays[mesaAttr]->InstanceDivisor; + velements[attr].src_offset = src_offset; + velements[attr].instance_divisor = array->InstanceDivisor; velements[attr].vertex_buffer_index = 0; - velements[attr].src_format = - st_pipe_vertex_format(arrays[mesaAttr]->Type, - arrays[mesaAttr]->Size, - arrays[mesaAttr]->Format, - arrays[mesaAttr]->Normalized); + velements[attr].src_format = st_pipe_vertex_format(array->Type, + array->Size, + array->Format, + array->Normalized); assert(velements[attr].src_format); } } @@ -389,8 +395,12 @@ setup_non_interleaved_attribs(struct gl_context *ctx, for (attr = 0; attr < vpv->num_inputs; attr++) { const GLuint mesaAttr = vp->index_to_input[attr]; - struct gl_buffer_object *bufobj = arrays[mesaAttr]->BufferObj; - GLsizei stride = arrays[mesaAttr]->StrideB; + const struct gl_client_array *array = arrays[mesaAttr]; + struct gl_buffer_object *bufobj = array->BufferObj; + GLuint element_size = array->_ElementSize; + GLsizei stride = array->StrideB; + + assert(element_size == array->Size * _mesa_sizeof_type(array->Type)); if (bufobj && bufobj->Name) { /* Attribute data is in a VBO. @@ -402,49 +412,54 @@ setup_non_interleaved_attribs(struct gl_context *ctx, vbuffer[attr].buffer = NULL; pipe_resource_reference(&vbuffer[attr].buffer, stobj->buffer); - vbuffer[attr].buffer_offset = pointer_to_offset(arrays[mesaAttr]->Ptr); + vbuffer[attr].buffer_offset = pointer_to_offset(array->Ptr); } else { /* wrap user data */ - if (arrays[mesaAttr]->Ptr) { - uint divisor = arrays[mesaAttr]->InstanceDivisor; - uint length = (divisor ? num_instances / divisor : max_index) + 1; - vbuffer[attr].buffer = - pipe_user_buffer_create(pipe->screen, - (void *) arrays[mesaAttr]->Ptr, - stride * length, - PIPE_BIND_VERTEX_BUFFER); + uint bytes; + void *ptr; + + if (array->Ptr) { + uint divisor = array->InstanceDivisor; + uint last_index = divisor ? num_instances / divisor : max_index; + + bytes = stride * last_index + element_size; + + ptr = (void *) array->Ptr; } else { /* no array, use ctx->Current.Attrib[] value */ - uint bytes = sizeof(ctx->Current.Attrib[0]); - vbuffer[attr].buffer = - pipe_user_buffer_create(pipe->screen, - (void *) ctx->Current.Attrib[mesaAttr], - bytes, - PIPE_BIND_VERTEX_BUFFER); + bytes = element_size = sizeof(ctx->Current.Attrib[0]); + ptr = (void *) ctx->Current.Attrib[mesaAttr]; stride = 0; } + assert(ptr); + assert(bytes); + + vbuffer[attr].buffer = + pipe_user_buffer_create(pipe->screen, ptr, bytes, + PIPE_BIND_VERTEX_BUFFER); + vbuffer[attr].buffer_offset = 0; /* Track user vertex buffers. */ - pipe_resource_reference(&st->user_vb[attr], vbuffer[attr].buffer); - st->user_vb_stride[attr] = stride; - st->num_user_vbs = MAX2(st->num_user_vbs, attr+1); + pipe_resource_reference(&st->user_attrib[attr].buffer, vbuffer[attr].buffer); + st->user_attrib[attr].element_size = element_size; + st->user_attrib[attr].stride = stride; + st->num_user_attribs = MAX2(st->num_user_attribs, attr + 1); } /* common-case setup */ vbuffer[attr].stride = stride; /* in bytes */ velements[attr].src_offset = 0; - velements[attr].instance_divisor = arrays[mesaAttr]->InstanceDivisor; + velements[attr].instance_divisor = array->InstanceDivisor; velements[attr].vertex_buffer_index = attr; - velements[attr].src_format - = st_pipe_vertex_format(arrays[mesaAttr]->Type, - arrays[mesaAttr]->Size, - arrays[mesaAttr]->Format, - arrays[mesaAttr]->Normalized); + velements[attr].src_format = st_pipe_vertex_format(array->Type, + array->Size, + array->Format, + array->Normalized); assert(velements[attr].src_format); } } @@ -575,10 +590,10 @@ st_validate_varrays(struct gl_context *ctx, memset(velements, 0, sizeof(struct pipe_vertex_element) * vpv->num_inputs); /* Unreference any user vertex buffers. */ - for (i = 0; i < st->num_user_vbs; i++) { - pipe_resource_reference(&st->user_vb[i], NULL); + for (i = 0; i < st->num_user_attribs; i++) { + pipe_resource_reference(&st->user_attrib[i].buffer, NULL); } - st->num_user_vbs = 0; + st->num_user_attribs = 0; /* * Setup the vbuffer[] and velements[] arrays. @@ -594,7 +609,8 @@ st_validate_varrays(struct gl_context *ctx, } else { setup_non_interleaved_attribs(ctx, vp, vpv, arrays, - vbuffer, velements, max_index, num_instances); + vbuffer, velements, max_index, + num_instances); num_vbuffers = vpv->num_inputs; num_velements = vpv->num_inputs; } @@ -647,7 +663,8 @@ st_draw_vbo(struct gl_context *ctx, for (i = 0; i < nr_prims; i++) { num_instances = MAX2(num_instances, prims[i].num_instances); } - } else { + } + else { /* Get min/max index for non-indexed drawing. */ min_index = ~0; max_index = 0; @@ -690,20 +707,20 @@ st_draw_vbo(struct gl_context *ctx, /* Notify the driver that the content of user buffers may have been * changed. */ - if (!new_array && st->num_user_vbs) { - for (i = 0; i < st->num_user_vbs; i++) { - if (st->user_vb[i]) { - unsigned stride = st->user_vb_stride[i]; - - if (stride) { - pipe->redefine_user_buffer(pipe, st->user_vb[i], - min_index * stride, - (max_index + 1 - min_index) * stride); - } else { - /* stride == 0 */ - pipe->redefine_user_buffer(pipe, st->user_vb[i], - 0, st->user_vb[i]->width0); - } + assert(max_index >= min_index); + if (!new_array && st->num_user_attribs) { + for (i = 0; i < st->num_user_attribs; i++) { + if (st->user_attrib[i].buffer) { + unsigned element_size = st->user_attrib[i].element_size; + unsigned stride = st->user_attrib[i].stride; + unsigned min_offset = min_index * stride; + unsigned max_offset = max_index * stride + element_size; + + assert(max_offset > min_offset); + + pipe->redefine_user_buffer(pipe, st->user_attrib[i].buffer, + min_offset, + max_offset - min_offset); } } } @@ -743,7 +760,8 @@ st_draw_vbo(struct gl_context *ctx, } -void st_init_draw( struct st_context *st ) +void +st_init_draw(struct st_context *st) { struct gl_context *ctx = st->ctx; @@ -763,11 +781,10 @@ void st_init_draw( struct st_context *st ) } -void st_destroy_draw( struct st_context *st ) +void +st_destroy_draw(struct st_context *st) { #if FEATURE_feedback || FEATURE_rastpos draw_destroy(st->draw); #endif } - - diff --git a/src/mesa/state_tracker/st_draw.h b/src/mesa/state_tracker/st_draw.h index 5d3c278228f..a7b50ce977a 100644 --- a/src/mesa/state_tracker/st_draw.h +++ b/src/mesa/state_tracker/st_draw.h @@ -69,7 +69,7 @@ st_feedback_draw_vbo(struct gl_context *ctx, /* Internal function: */ -extern GLuint +extern enum pipe_format st_pipe_vertex_format(GLenum type, GLuint size, GLenum format, GLboolean normalized); diff --git a/src/mesa/state_tracker/st_draw_feedback.c b/src/mesa/state_tracker/st_draw_feedback.c index 1e1220bfe52..96a08b39100 100644 --- a/src/mesa/state_tracker/st_draw_feedback.c +++ b/src/mesa/state_tracker/st_draw_feedback.c @@ -111,6 +111,7 @@ st_feedback_draw_vbo(struct gl_context *ctx, struct pipe_transfer *vb_transfer[PIPE_MAX_ATTRIBS]; struct pipe_transfer *ib_transfer = NULL; GLuint attr, i; + const GLubyte *low_addr = NULL; const void *mapped_indices = NULL; assert(draw); @@ -141,6 +142,16 @@ st_feedback_draw_vbo(struct gl_context *ctx, draw_bind_vertex_shader(draw, st->vp_variant->draw_shader); set_feedback_vertex_format(ctx); + /* Find the lowest address of the arrays we're drawing */ + if (vp->num_inputs) { + low_addr = arrays[vp->index_to_input[0]]->Ptr; + + for (attr = 1; attr < vp->num_inputs; attr++) { + const GLubyte *start = arrays[vp->index_to_input[attr]]->Ptr; + low_addr = MIN2(low_addr, start); + } + } + /* loop over TGSI shader inputs to determine vertex buffer * and attribute info */ @@ -159,8 +170,8 @@ st_feedback_draw_vbo(struct gl_context *ctx, vbuffers[attr].buffer = NULL; pipe_resource_reference(&vbuffers[attr].buffer, stobj->buffer); - vbuffers[attr].buffer_offset = pointer_to_offset(arrays[0]->Ptr); - velements[attr].src_offset = arrays[mesaAttr]->Ptr - arrays[0]->Ptr; + vbuffers[attr].buffer_offset = pointer_to_offset(low_addr); + velements[attr].src_offset = arrays[mesaAttr]->Ptr - low_addr; } else { /* attribute data is in user-space memory, not a VBO */ diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index bbcae3b02e9..bdc08949dd4 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -228,6 +228,7 @@ void st_init_extensions(struct st_context *st) ctx->Extensions.ARB_half_float_pixel = GL_TRUE; ctx->Extensions.ARB_map_buffer_range = GL_TRUE; ctx->Extensions.ARB_multisample = GL_TRUE; + ctx->Extensions.ARB_sampler_objects = GL_TRUE; ctx->Extensions.ARB_texture_border_clamp = GL_TRUE; /* XXX temp */ ctx->Extensions.ARB_texture_compression = GL_TRUE; ctx->Extensions.ARB_texture_cube_map = GL_TRUE; @@ -381,6 +382,18 @@ void st_init_extensions(struct st_context *st) ctx->Extensions.EXT_packed_depth_stencil = GL_TRUE; } + /* float support - assume nothing exclusively supports 64-bit floats */ + if (screen->is_format_supported(screen, PIPE_FORMAT_R32G32B32A32_FLOAT, + PIPE_TEXTURE_2D, 0, + PIPE_BIND_SAMPLER_VIEW | + PIPE_BIND_RENDER_TARGET) && + screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_TEXTURE_2D, 0, + PIPE_BIND_SAMPLER_VIEW | + PIPE_BIND_RENDER_TARGET)) { + ctx->Extensions.ARB_texture_float = GL_TRUE; + } + /* sRGB support */ if (screen->is_format_supported(screen, PIPE_FORMAT_A8B8G8R8_SRGB, PIPE_TEXTURE_2D, 0, @@ -453,6 +466,12 @@ void st_init_extensions(struct st_context *st) ctx->Extensions.ATI_texture_compression_3dc = GL_TRUE; } + if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_SNORM, + PIPE_TEXTURE_2D, 0, + PIPE_BIND_SAMPLER_VIEW)) { + ctx->Extensions.EXT_texture_snorm = GL_TRUE; + } + /* ycbcr support */ if (screen->is_format_supported(screen, PIPE_FORMAT_UYVY, PIPE_TEXTURE_2D, 0, @@ -508,6 +527,35 @@ void st_init_extensions(struct st_context *st) ctx->Extensions.ARB_depth_clamp = GL_TRUE; } + /* This extension does not actually require support of floating point + * render targets, just clamping controls. + * Advertise this extension if either fragment color clamping is supported + * or no render targets having color values outside of the range [0, 1] + * are supported, in which case the fragment color clamping has no effect + * on rendering. + */ + if (screen->get_param(screen, PIPE_CAP_FRAGMENT_COLOR_CLAMP_CONTROL) || + (!screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_SNORM, + PIPE_TEXTURE_2D, 0, + PIPE_BIND_RENDER_TARGET) && + !screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_SNORM, + PIPE_TEXTURE_2D, 0, + PIPE_BIND_RENDER_TARGET) && + !screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_TEXTURE_2D, 0, + PIPE_BIND_RENDER_TARGET) && + !screen->is_format_supported(screen, PIPE_FORMAT_R32G32B32A32_FLOAT, + PIPE_TEXTURE_2D, 0, + PIPE_BIND_RENDER_TARGET) && + !screen->is_format_supported(screen, PIPE_FORMAT_R11G11B10_FLOAT, + PIPE_TEXTURE_2D, 0, + PIPE_BIND_RENDER_TARGET) && + !screen->is_format_supported(screen, PIPE_FORMAT_R9G9B9E5_FLOAT, + PIPE_TEXTURE_2D, 0, + PIPE_BIND_RENDER_TARGET))) { + ctx->Extensions.ARB_color_buffer_float = GL_TRUE; + } + if (screen->get_param(screen, PIPE_CAP_SHADER_STENCIL_EXPORT)) { ctx->Extensions.ARB_shader_stencil_export = GL_TRUE; } diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c index 3d8637ab37e..bbaa84d7fdf 100644 --- a/src/mesa/state_tracker/st_format.c +++ b/src/mesa/state_tracker/st_format.c @@ -214,6 +214,39 @@ st_mesa_format_to_pipe_format(gl_format mesaFormat) case MESA_FORMAT_SARGB8: return PIPE_FORMAT_B8G8R8A8_SRGB; #endif + case MESA_FORMAT_RGBA_FLOAT32: + return PIPE_FORMAT_R32G32B32A32_FLOAT; + case MESA_FORMAT_RGBA_FLOAT16: + return PIPE_FORMAT_R16G16B16A16_FLOAT; + case MESA_FORMAT_RGB_FLOAT32: + return PIPE_FORMAT_R32G32B32_FLOAT; + case MESA_FORMAT_RGB_FLOAT16: + return PIPE_FORMAT_R16G16B16_FLOAT; + case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32: + return PIPE_FORMAT_L32A32_FLOAT; + case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16: + return PIPE_FORMAT_L16A16_FLOAT; + case MESA_FORMAT_LUMINANCE_FLOAT32: + return PIPE_FORMAT_L32_FLOAT; + case MESA_FORMAT_LUMINANCE_FLOAT16: + return PIPE_FORMAT_L16_FLOAT; + case MESA_FORMAT_ALPHA_FLOAT32: + return PIPE_FORMAT_A32_FLOAT; + case MESA_FORMAT_ALPHA_FLOAT16: + return PIPE_FORMAT_A16_FLOAT; + case MESA_FORMAT_INTENSITY_FLOAT32: + return PIPE_FORMAT_I32_FLOAT; + case MESA_FORMAT_INTENSITY_FLOAT16: + return PIPE_FORMAT_I16_FLOAT; + case MESA_FORMAT_R_FLOAT32: + return PIPE_FORMAT_R32_FLOAT; + case MESA_FORMAT_R_FLOAT16: + return PIPE_FORMAT_R16_FLOAT; + case MESA_FORMAT_RG_FLOAT32: + return PIPE_FORMAT_R32G32_FLOAT; + case MESA_FORMAT_RG_FLOAT16: + return PIPE_FORMAT_R16G16_FLOAT; + case MESA_FORMAT_R8: return PIPE_FORMAT_R8_UNORM; case MESA_FORMAT_R16: @@ -259,6 +292,39 @@ st_mesa_format_to_pipe_format(gl_format mesaFormat) case MESA_FORMAT_SIGNED_LA_LATC2: return PIPE_FORMAT_LATC2_SNORM; + /* signed normalized formats */ + case MESA_FORMAT_SIGNED_R8: + return PIPE_FORMAT_R8_SNORM; + case MESA_FORMAT_SIGNED_RG88_REV: + return PIPE_FORMAT_R8G8_SNORM; + case MESA_FORMAT_SIGNED_RGBA8888_REV: + return PIPE_FORMAT_R8G8B8A8_SNORM; + + case MESA_FORMAT_SIGNED_A8: + return PIPE_FORMAT_A8_SNORM; + case MESA_FORMAT_SIGNED_L8: + return PIPE_FORMAT_L8_SNORM; + case MESA_FORMAT_SIGNED_AL88: + return PIPE_FORMAT_L8A8_SNORM; + case MESA_FORMAT_SIGNED_I8: + return PIPE_FORMAT_I8_SNORM; + + case MESA_FORMAT_SIGNED_R16: + return PIPE_FORMAT_R16_SNORM; + case MESA_FORMAT_SIGNED_GR1616: + return PIPE_FORMAT_R16G16_SNORM; + case MESA_FORMAT_SIGNED_RGBA_16: + return PIPE_FORMAT_R16G16B16A16_SNORM; + + case MESA_FORMAT_SIGNED_A16: + return PIPE_FORMAT_A16_SNORM; + case MESA_FORMAT_SIGNED_L16: + return PIPE_FORMAT_L16_SNORM; + case MESA_FORMAT_SIGNED_AL1616: + return PIPE_FORMAT_L16A16_SNORM; + case MESA_FORMAT_SIGNED_I16: + return PIPE_FORMAT_I16_SNORM; + default: assert(0); return PIPE_FORMAT_NONE; @@ -318,8 +384,6 @@ st_pipe_format_to_mesa_format(enum pipe_format format) case PIPE_FORMAT_R16G16B16A16_UNORM: return MESA_FORMAT_RGBA_16; - case PIPE_FORMAT_R16G16B16A16_SNORM: - return MESA_FORMAT_SIGNED_RGBA_16; case PIPE_FORMAT_Z16_UNORM: return MESA_FORMAT_Z16; @@ -372,6 +436,38 @@ st_pipe_format_to_mesa_format(enum pipe_format format) case PIPE_FORMAT_B8G8R8A8_SRGB: return MESA_FORMAT_SARGB8; #endif + case PIPE_FORMAT_R32G32B32A32_FLOAT: + return MESA_FORMAT_RGBA_FLOAT32; + case PIPE_FORMAT_R16G16B16A16_FLOAT: + return MESA_FORMAT_RGBA_FLOAT16; + case PIPE_FORMAT_R32G32B32_FLOAT: + return MESA_FORMAT_RGB_FLOAT32; + case PIPE_FORMAT_R16G16B16_FLOAT: + return MESA_FORMAT_RGB_FLOAT16; + case PIPE_FORMAT_L32A32_FLOAT: + return MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32; + case PIPE_FORMAT_L16A16_FLOAT: + return MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16; + case PIPE_FORMAT_L32_FLOAT: + return MESA_FORMAT_LUMINANCE_FLOAT32; + case PIPE_FORMAT_L16_FLOAT: + return MESA_FORMAT_LUMINANCE_FLOAT16; + case PIPE_FORMAT_A32_FLOAT: + return MESA_FORMAT_ALPHA_FLOAT32; + case PIPE_FORMAT_A16_FLOAT: + return MESA_FORMAT_ALPHA_FLOAT16; + case PIPE_FORMAT_I32_FLOAT: + return MESA_FORMAT_INTENSITY_FLOAT32; + case PIPE_FORMAT_I16_FLOAT: + return MESA_FORMAT_INTENSITY_FLOAT16; + case PIPE_FORMAT_R32_FLOAT: + return MESA_FORMAT_R_FLOAT32; + case PIPE_FORMAT_R16_FLOAT: + return MESA_FORMAT_R_FLOAT16; + case PIPE_FORMAT_R32G32_FLOAT: + return MESA_FORMAT_RG_FLOAT32; + case PIPE_FORMAT_R16G16_FLOAT: + return MESA_FORMAT_RG_FLOAT16; case PIPE_FORMAT_R8_UNORM: return MESA_FORMAT_R8; @@ -416,6 +512,39 @@ st_pipe_format_to_mesa_format(enum pipe_format format) //case PIPE_FORMAT_LATC2_SNORM: // return MESA_FORMAT_SIGNED_LA_LATC2; + /* signed normalized formats */ + case PIPE_FORMAT_R8_SNORM: + return MESA_FORMAT_SIGNED_R8; + case PIPE_FORMAT_R8G8_SNORM: + return MESA_FORMAT_SIGNED_RG88_REV; + case PIPE_FORMAT_R8G8B8A8_SNORM: + return MESA_FORMAT_SIGNED_RGBA8888_REV; + + case PIPE_FORMAT_A8_SNORM: + return MESA_FORMAT_SIGNED_A8; + case PIPE_FORMAT_L8_SNORM: + return MESA_FORMAT_SIGNED_L8; + case PIPE_FORMAT_L8A8_SNORM: + return MESA_FORMAT_SIGNED_AL88; + case PIPE_FORMAT_I8_SNORM: + return MESA_FORMAT_SIGNED_I8; + + case PIPE_FORMAT_R16_SNORM: + return MESA_FORMAT_SIGNED_R16; + case PIPE_FORMAT_R16G16_SNORM: + return MESA_FORMAT_SIGNED_GR1616; + case PIPE_FORMAT_R16G16B16A16_SNORM: + return MESA_FORMAT_SIGNED_RGBA_16; + + case PIPE_FORMAT_A16_SNORM: + return MESA_FORMAT_SIGNED_A16; + case PIPE_FORMAT_L16_SNORM: + return MESA_FORMAT_SIGNED_L16; + case PIPE_FORMAT_L16A16_SNORM: + return MESA_FORMAT_SIGNED_AL1616; + case PIPE_FORMAT_I16_SNORM: + return MESA_FORMAT_SIGNED_I16; + default: assert(0); return MESA_FORMAT_NONE; @@ -823,6 +952,178 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat, return PIPE_FORMAT_L8_SRGB; return default_srgba_format( screen, target, sample_count, bindings); + /* prefer formats in order of data size, choosing 16-bit ones if equal sized */ + case GL_RGBA16F_ARB: + case GL_RGB16F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_LUMINANCE_ALPHA16F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_L16A16_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_FORMAT_L32A32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_ALPHA16F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_A16_FLOAT, + PIPE_FORMAT_L16A16_FLOAT, + PIPE_FORMAT_A32_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_FORMAT_L32A32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_INTENSITY16F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_I16_FLOAT, + PIPE_FORMAT_L16A16_FLOAT, + PIPE_FORMAT_I32_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_FORMAT_L32A32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_LUMINANCE16F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_L16_FLOAT, + PIPE_FORMAT_L16A16_FLOAT, + PIPE_FORMAT_L32_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_FORMAT_L32A32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_R16F: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R16_FLOAT, + PIPE_FORMAT_R16G16_FLOAT, + PIPE_FORMAT_R32_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_FORMAT_R32G32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_RG16F: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R16G16_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_FORMAT_R32G32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + /* try a 32-bit format if available, otherwise fallback to a 16-bit one */ + case GL_RGBA32F_ARB: + case GL_RGB32F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R32G32B32A32_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_LUMINANCE_ALPHA32F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_L32A32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT, + PIPE_FORMAT_L16A16_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_ALPHA32F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_A32_FLOAT, + PIPE_FORMAT_L32A32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT, + PIPE_FORMAT_A16_FLOAT, + PIPE_FORMAT_L16A16_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_INTENSITY32F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_I32_FLOAT, + PIPE_FORMAT_L32A32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT, + PIPE_FORMAT_I16_FLOAT, + PIPE_FORMAT_L16A16_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_LUMINANCE32F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_L32_FLOAT, + PIPE_FORMAT_L32A32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT, + PIPE_FORMAT_L16_FLOAT, + PIPE_FORMAT_L16A16_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_R32F: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R32_FLOAT, + PIPE_FORMAT_R32G32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT, + PIPE_FORMAT_R16_FLOAT, + PIPE_FORMAT_R16G16_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_RG32F: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R32G32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT, + PIPE_FORMAT_R16G16_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_RED: case GL_R8: if (screen->is_format_supported(screen, PIPE_FORMAT_R8_UNORM, target, @@ -999,6 +1300,170 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat, return PIPE_FORMAT_R32G32B32A32_USCALED; return PIPE_FORMAT_NONE; + /* signed normalized formats */ + case GL_RED_SNORM: + case GL_R8_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R8_SNORM, + PIPE_FORMAT_R8G8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_R16_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R16_SNORM, + PIPE_FORMAT_R16G16_SNORM, + PIPE_FORMAT_R16G16B16A16_SNORM, + PIPE_FORMAT_R8_SNORM, + PIPE_FORMAT_R8G8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_RG_SNORM: + case GL_RG8_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R8G8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_RG16_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R16G16_SNORM, + PIPE_FORMAT_R16G16B16A16_SNORM, + PIPE_FORMAT_R8G8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_RGB_SNORM: + case GL_RGB8_SNORM: + case GL_RGBA_SNORM: + case GL_RGBA8_SNORM: + if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_SNORM, + target, + sample_count, bindings)) + return PIPE_FORMAT_R8G8B8A8_SNORM; + return PIPE_FORMAT_NONE; + + case GL_RGB16_SNORM: + case GL_RGBA16_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R16G16B16A16_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + + case GL_ALPHA_SNORM: + case GL_ALPHA8_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_A8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_ALPHA16_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_A16_SNORM, + PIPE_FORMAT_R16G16B16A16_SNORM, + PIPE_FORMAT_A8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_LUMINANCE_SNORM: + case GL_LUMINANCE8_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_L8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_LUMINANCE16_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_L16_SNORM, + PIPE_FORMAT_R16G16B16A16_SNORM, + PIPE_FORMAT_L8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_LUMINANCE_ALPHA_SNORM: + case GL_LUMINANCE8_ALPHA8_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_L8A8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_LUMINANCE16_ALPHA16_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_L16A16_SNORM, + PIPE_FORMAT_R16G16B16A16_SNORM, + PIPE_FORMAT_L8A8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_INTENSITY_SNORM: + case GL_INTENSITY8_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_I8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_INTENSITY16_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_I16_SNORM, + PIPE_FORMAT_R16G16B16A16_SNORM, + PIPE_FORMAT_I8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + default: return PIPE_FORMAT_NONE; } diff --git a/src/mesa/state_tracker/st_texture.h b/src/mesa/state_tracker/st_texture.h index d50c3c9af79..903e30df52f 100644 --- a/src/mesa/state_tracker/st_texture.h +++ b/src/mesa/state_tracker/st_texture.h @@ -163,6 +163,21 @@ st_get_texture_sampler_view(struct st_texture_object *stObj, } +/** + * Get pointer to the active sampler object for the given texture unit. + * This will either be a user-defined sampler object or the texture + * object's own sampler state. + */ +static INLINE struct gl_sampler_object * +st_get_mesa_sampler(const struct gl_context *ctx, GLuint unit) +{ + if (ctx->Texture.Unit[unit].Sampler) + return ctx->Texture.Unit[unit].Sampler; + else + return &ctx->Texture.Unit[unit]._Current->Sampler; +} + + extern struct pipe_resource * st_texture_create(struct st_context *st, enum pipe_texture_target target, diff --git a/src/mesa/swrast/s_aatriangle.c b/src/mesa/swrast/s_aatriangle.c index 2c02a01327f..2e8767a33d9 100644 --- a/src/mesa/swrast/s_aatriangle.c +++ b/src/mesa/swrast/s_aatriangle.c @@ -215,12 +215,7 @@ compute_coveragef(const GLfloat v0[3], const GLfloat v1[3], GLint stop = 4, i; GLfloat insideCount = 16.0F; -#ifdef DEBUG - { - const GLfloat area = dx0 * dy1 - dx1 * dy0; - ASSERT(area >= 0.0); - } -#endif + ASSERT(dx0 * dy1 - dx1 * dy0 >= 0.0); /* area >= 0.0 */ for (i = 0; i < stop; i++) { const GLfloat sx = x + samples[i][0]; diff --git a/src/mesa/swrast/s_context.c b/src/mesa/swrast/s_context.c index 491fcfcdbbf..b3e39689cfa 100644 --- a/src/mesa/swrast/s_context.c +++ b/src/mesa/swrast/s_context.c @@ -248,18 +248,11 @@ _swrast_update_fog_state( struct gl_context *ctx ) SWcontext *swrast = SWRAST_CONTEXT(ctx); const struct gl_fragment_program *fp = ctx->FragmentProgram._Current; + assert((fp == NULL) || (fp->Base.Target == GL_FRAGMENT_PROGRAM_ARB)); + /* determine if fog is needed, and if so, which fog mode */ - swrast->_FogEnabled = GL_FALSE; - if (fp && fp->Base.Target == GL_FRAGMENT_PROGRAM_ARB) { - if (fp->FogOption != GL_NONE) { - swrast->_FogEnabled = GL_TRUE; - swrast->_FogMode = fp->FogOption; - } - } - else if (ctx->Fog.Enabled) { - swrast->_FogEnabled = GL_TRUE; - swrast->_FogMode = ctx->Fog.Mode; - } + swrast->_FogEnabled = (fp == NULL && ctx->Fog.Enabled); + swrast->_FogMode = ctx->Fog.Mode; } diff --git a/src/mesa/swrast/s_fragprog.c b/src/mesa/swrast/s_fragprog.c index e391043f4d9..b6bfeaed4a9 100644 --- a/src/mesa/swrast/s_fragprog.c +++ b/src/mesa/swrast/s_fragprog.c @@ -71,7 +71,7 @@ fetch_texel_lod( struct gl_context *ctx, const GLfloat texcoord[4], GLfloat lamb SWcontext *swrast = SWRAST_CONTEXT(ctx); GLfloat rgba[4]; - lambda = CLAMP(lambda, texObj->MinLod, texObj->MaxLod); + lambda = CLAMP(lambda, texObj->Sampler.MinLod, texObj->Sampler.MaxLod); swrast->TextureSample[unit](ctx, texObj, 1, (const GLfloat (*)[4]) texcoord, @@ -115,9 +115,9 @@ fetch_texel_deriv( struct gl_context *ctx, const GLfloat texcoord[4], texcoord[0], texcoord[1], texcoord[3], 1.0F / texcoord[3]); - lambda += lodBias + texUnit->LodBias + texObj->LodBias; + lambda += lodBias + texUnit->LodBias + texObj->Sampler.LodBias; - lambda = CLAMP(lambda, texObj->MinLod, texObj->MaxLod); + lambda = CLAMP(lambda, texObj->Sampler.MinLod, texObj->Sampler.MaxLod); swrast->TextureSample[unit](ctx, texObj, 1, (const GLfloat (*)[4]) texcoord, diff --git a/src/mesa/swrast/s_readpix.c b/src/mesa/swrast/s_readpix.c index 5c8d7e9c5cf..214f2ea1aaa 100644 --- a/src/mesa/swrast/s_readpix.c +++ b/src/mesa/swrast/s_readpix.c @@ -191,7 +191,13 @@ fast_read_rgba_pixels( struct gl_context *ctx, if (!rb) return GL_FALSE; - ASSERT(rb->_BaseFormat == GL_RGBA || rb->_BaseFormat == GL_RGB || + ASSERT(rb->_BaseFormat == GL_RGBA || + rb->_BaseFormat == GL_RGB || + rb->_BaseFormat == GL_RG || + rb->_BaseFormat == GL_RED || + rb->_BaseFormat == GL_LUMINANCE || + rb->_BaseFormat == GL_INTENSITY || + rb->_BaseFormat == GL_LUMINANCE_ALPHA || rb->_BaseFormat == GL_ALPHA); /* clipping should have already been done */ @@ -312,12 +318,12 @@ read_rgba_pixels( struct gl_context *ctx, if (!rb) return; - if (type == GL_FLOAT && ((ctx->Color.ClampReadColor == GL_TRUE) || - (ctx->Color.ClampReadColor == GL_FIXED_ONLY_ARB && - rb->DataType != GL_FLOAT))) + if ((ctx->Color._ClampReadColor == GL_TRUE || type != GL_FLOAT) && + !_mesa_is_integer_format(format)) { transferOps |= IMAGE_CLAMP_BIT; + } - /* Try optimized path first */ + /* Try the optimized path first. */ if (fast_read_rgba_pixels(ctx, x, y, width, height, format, type, pixels, packing, transferOps)) { return; /* done! */ @@ -341,9 +347,9 @@ read_rgba_pixels( struct gl_context *ctx, _swrast_read_rgba_span(ctx, rb, width, x, y, GL_FLOAT, rgba); /* apply fudge factor for shallow color buffers */ - if (fb->Visual.redBits < 8 || - fb->Visual.greenBits < 8 || - fb->Visual.blueBits < 8) { + if ((fb->Visual.redBits < 8 && fb->Visual.redBits != 0) || + (fb->Visual.greenBits < 8 && fb->Visual.greenBits != 0) || + (fb->Visual.blueBits < 8 && fb->Visual.blueBits != 0)) { adjust_colors(fb, width, rgba); } diff --git a/src/mesa/swrast/s_span.c b/src/mesa/swrast/s_span.c index ef38a6b22b8..f0524e0610e 100644 --- a/src/mesa/swrast/s_span.c +++ b/src/mesa/swrast/s_span.c @@ -490,7 +490,7 @@ interpolate_texcoords(struct gl_context *ctx, SWspan *span) if (obj) { const struct gl_texture_image *img = obj->Image[0][obj->BaseLevel]; - needLambda = (obj->MinFilter != obj->MagFilter) + needLambda = (obj->Sampler.MinFilter != obj->Sampler.MagFilter) || ctx->FragmentProgram._Current; texW = img->WidthScale; texH = img->HeightScale; @@ -1348,7 +1348,13 @@ _swrast_read_rgba_span( struct gl_context *ctx, struct gl_renderbuffer *rb, ASSERT(rb); ASSERT(rb->GetRow); - ASSERT(rb->_BaseFormat == GL_RGB || rb->_BaseFormat == GL_RGBA || + ASSERT(rb->_BaseFormat == GL_RGBA || + rb->_BaseFormat == GL_RGB || + rb->_BaseFormat == GL_RG || + rb->_BaseFormat == GL_RED || + rb->_BaseFormat == GL_LUMINANCE || + rb->_BaseFormat == GL_INTENSITY || + rb->_BaseFormat == GL_LUMINANCE_ALPHA || rb->_BaseFormat == GL_ALPHA); if (rb->DataType == dstType) { diff --git a/src/mesa/swrast/s_texcombine.c b/src/mesa/swrast/s_texcombine.c index 0c8cc9ff37b..7f49b6ffa50 100644 --- a/src/mesa/swrast/s_texcombine.c +++ b/src/mesa/swrast/s_texcombine.c @@ -631,9 +631,9 @@ _swrast_texture_span( struct gl_context *ctx, SWspan *span ) /* adjust texture lod (lambda) */ if (span->arrayMask & SPAN_LAMBDA) { - if (texUnit->LodBias + curObj->LodBias != 0.0F) { + if (texUnit->LodBias + curObj->Sampler.LodBias != 0.0F) { /* apply LOD bias, but don't clamp yet */ - const GLfloat bias = CLAMP(texUnit->LodBias + curObj->LodBias, + const GLfloat bias = CLAMP(texUnit->LodBias + curObj->Sampler.LodBias, -ctx->Const.MaxTextureLodBias, ctx->Const.MaxTextureLodBias); GLuint i; @@ -642,10 +642,11 @@ _swrast_texture_span( struct gl_context *ctx, SWspan *span ) } } - if (curObj->MinLod != -1000.0 || curObj->MaxLod != 1000.0) { + if (curObj->Sampler.MinLod != -1000.0 || + curObj->Sampler.MaxLod != 1000.0) { /* apply LOD clamping to lambda */ - const GLfloat min = curObj->MinLod; - const GLfloat max = curObj->MaxLod; + const GLfloat min = curObj->Sampler.MinLod; + const GLfloat max = curObj->Sampler.MaxLod; GLuint i; for (i = 0; i < span->end; i++) { GLfloat l = lambda[i]; @@ -686,9 +687,9 @@ _swrast_texture_span( struct gl_context *ctx, SWspan *span ) /* adjust texture lod (lambda) */ if (span->arrayMask & SPAN_LAMBDA) { - if (texUnit->LodBias + curObj->LodBias != 0.0F) { + if (texUnit->LodBias + curObj->Sampler.LodBias != 0.0F) { /* apply LOD bias, but don't clamp yet */ - const GLfloat bias = CLAMP(texUnit->LodBias + curObj->LodBias, + const GLfloat bias = CLAMP(texUnit->LodBias + curObj->Sampler.LodBias, -ctx->Const.MaxTextureLodBias, ctx->Const.MaxTextureLodBias); GLuint i; @@ -697,10 +698,11 @@ _swrast_texture_span( struct gl_context *ctx, SWspan *span ) } } - if (curObj->MinLod != -1000.0 || curObj->MaxLod != 1000.0) { + if (curObj->Sampler.MinLod != -1000.0 || + curObj->Sampler.MaxLod != 1000.0) { /* apply LOD clamping to lambda */ - const GLfloat min = curObj->MinLod; - const GLfloat max = curObj->MaxLod; + const GLfloat min = curObj->Sampler.MinLod; + const GLfloat max = curObj->Sampler.MaxLod; GLuint i; for (i = 0; i < span->end; i++) { GLfloat l = lambda[i]; diff --git a/src/mesa/swrast/s_texfilter.c b/src/mesa/swrast/s_texfilter.c index 42785400c0e..106f8b75f9e 100644 --- a/src/mesa/swrast/s_texfilter.c +++ b/src/mesa/swrast/s_texfilter.c @@ -505,28 +505,28 @@ nearest_texcoord(const struct gl_texture_object *texObj, switch (texObj->Target) { case GL_TEXTURE_RECTANGLE_ARB: - *i = clamp_rect_coord_nearest(texObj->WrapS, texcoord[0], width); - *j = clamp_rect_coord_nearest(texObj->WrapT, texcoord[1], height); + *i = clamp_rect_coord_nearest(texObj->Sampler.WrapS, texcoord[0], width); + *j = clamp_rect_coord_nearest(texObj->Sampler.WrapT, texcoord[1], height); *k = 0; break; case GL_TEXTURE_1D: - *i = nearest_texel_location(texObj->WrapS, img, width, texcoord[0]); + *i = nearest_texel_location(texObj->Sampler.WrapS, img, width, texcoord[0]); *j = 0; *k = 0; break; case GL_TEXTURE_2D: - *i = nearest_texel_location(texObj->WrapS, img, width, texcoord[0]); - *j = nearest_texel_location(texObj->WrapT, img, height, texcoord[1]); + *i = nearest_texel_location(texObj->Sampler.WrapS, img, width, texcoord[0]); + *j = nearest_texel_location(texObj->Sampler.WrapT, img, height, texcoord[1]); *k = 0; break; case GL_TEXTURE_1D_ARRAY_EXT: - *i = nearest_texel_location(texObj->WrapS, img, width, texcoord[0]); + *i = nearest_texel_location(texObj->Sampler.WrapS, img, width, texcoord[0]); *j = tex_array_slice(texcoord[1], height); *k = 0; break; case GL_TEXTURE_2D_ARRAY_EXT: - *i = nearest_texel_location(texObj->WrapS, img, width, texcoord[0]); - *j = nearest_texel_location(texObj->WrapT, img, height, texcoord[1]); + *i = nearest_texel_location(texObj->Sampler.WrapS, img, width, texcoord[0]); + *j = nearest_texel_location(texObj->Sampler.WrapT, img, height, texcoord[1]); *k = tex_array_slice(texcoord[2], depth); break; default: @@ -553,24 +553,24 @@ linear_texcoord(const struct gl_texture_object *texObj, switch (texObj->Target) { case GL_TEXTURE_RECTANGLE_ARB: - clamp_rect_coord_linear(texObj->WrapS, texcoord[0], + clamp_rect_coord_linear(texObj->Sampler.WrapS, texcoord[0], width, i0, i1, wi); - clamp_rect_coord_linear(texObj->WrapT, texcoord[1], + clamp_rect_coord_linear(texObj->Sampler.WrapT, texcoord[1], height, j0, j1, wj); *slice = 0; break; case GL_TEXTURE_1D: case GL_TEXTURE_2D: - linear_texel_locations(texObj->WrapS, img, width, + linear_texel_locations(texObj->Sampler.WrapS, img, width, texcoord[0], i0, i1, wi); - linear_texel_locations(texObj->WrapT, img, height, + linear_texel_locations(texObj->Sampler.WrapT, img, height, texcoord[1], j0, j1, wj); *slice = 0; break; case GL_TEXTURE_1D_ARRAY_EXT: - linear_texel_locations(texObj->WrapS, img, width, + linear_texel_locations(texObj->Sampler.WrapS, img, width, texcoord[0], i0, i1, wi); *j0 = tex_array_slice(texcoord[1], height); *j1 = *j0; @@ -578,9 +578,9 @@ linear_texcoord(const struct gl_texture_object *texObj, break; case GL_TEXTURE_2D_ARRAY_EXT: - linear_texel_locations(texObj->WrapS, img, width, + linear_texel_locations(texObj->Sampler.WrapS, img, width, texcoord[0], i0, i1, wi); - linear_texel_locations(texObj->WrapT, img, height, + linear_texel_locations(texObj->Sampler.WrapT, img, height, texcoord[1], j0, j1, wj); *slice = tex_array_slice(texcoord[2], depth); break; @@ -656,12 +656,12 @@ compute_min_mag_ranges(const struct gl_texture_object *tObj, GLfloat minMagThresh; /* we shouldn't be here if minfilter == magfilter */ - ASSERT(tObj->MinFilter != tObj->MagFilter); + ASSERT(tObj->Sampler.MinFilter != tObj->Sampler.MagFilter); /* This bit comes from the OpenGL spec: */ - if (tObj->MagFilter == GL_LINEAR - && (tObj->MinFilter == GL_NEAREST_MIPMAP_NEAREST || - tObj->MinFilter == GL_NEAREST_MIPMAP_LINEAR)) { + if (tObj->Sampler.MagFilter == GL_LINEAR + && (tObj->Sampler.MinFilter == GL_NEAREST_MIPMAP_NEAREST || + tObj->Sampler.MinFilter == GL_NEAREST_MIPMAP_LINEAR)) { minMagThresh = 0.5F; } else { @@ -763,28 +763,28 @@ get_border_color(const struct gl_texture_object *tObj, { switch (img->_BaseFormat) { case GL_RGB: - rgba[0] = tObj->BorderColor.f[0]; - rgba[1] = tObj->BorderColor.f[1]; - rgba[2] = tObj->BorderColor.f[2]; + rgba[0] = tObj->Sampler.BorderColor.f[0]; + rgba[1] = tObj->Sampler.BorderColor.f[1]; + rgba[2] = tObj->Sampler.BorderColor.f[2]; rgba[3] = 1.0F; break; case GL_ALPHA: rgba[0] = rgba[1] = rgba[2] = 0.0; - rgba[3] = tObj->BorderColor.f[3]; + rgba[3] = tObj->Sampler.BorderColor.f[3]; break; case GL_LUMINANCE: - rgba[0] = rgba[1] = rgba[2] = tObj->BorderColor.f[0]; + rgba[0] = rgba[1] = rgba[2] = tObj->Sampler.BorderColor.f[0]; rgba[3] = 1.0; break; case GL_LUMINANCE_ALPHA: - rgba[0] = rgba[1] = rgba[2] = tObj->BorderColor.f[0]; - rgba[3] = tObj->BorderColor.f[3]; + rgba[0] = rgba[1] = rgba[2] = tObj->Sampler.BorderColor.f[0]; + rgba[3] = tObj->Sampler.BorderColor.f[3]; break; case GL_INTENSITY: - rgba[0] = rgba[1] = rgba[2] = rgba[3] = tObj->BorderColor.f[0]; + rgba[0] = rgba[1] = rgba[2] = rgba[3] = tObj->Sampler.BorderColor.f[0]; break; default: - COPY_4V(rgba, tObj->BorderColor.f); + COPY_4V(rgba, tObj->Sampler.BorderColor.f); } } @@ -804,7 +804,7 @@ sample_1d_nearest(struct gl_context *ctx, { const GLint width = img->Width2; /* without border, power of two */ GLint i; - i = nearest_texel_location(tObj->WrapS, img, width, texcoord[0]); + i = nearest_texel_location(tObj->Sampler.WrapS, img, width, texcoord[0]); /* skip over the border, if any */ i += img->Border; if (i < 0 || i >= (GLint) img->Width) { @@ -832,7 +832,7 @@ sample_1d_linear(struct gl_context *ctx, GLfloat a; GLfloat t0[4], t1[4]; /* texels */ - linear_texel_locations(tObj->WrapS, img, width, texcoord[0], &i0, &i1, &a); + linear_texel_locations(tObj->Sampler.WrapS, img, width, texcoord[0], &i0, &i1, &a); if (img->Border) { i0 += img->Border; @@ -991,7 +991,7 @@ sample_lambda_1d( struct gl_context *ctx, if (minStart < minEnd) { /* do the minified texels */ const GLuint m = minEnd - minStart; - switch (tObj->MinFilter) { + switch (tObj->Sampler.MinFilter) { case GL_NEAREST: for (i = minStart; i < minEnd; i++) sample_1d_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], @@ -1026,7 +1026,7 @@ sample_lambda_1d( struct gl_context *ctx, if (magStart < magEnd) { /* do the magnified texels */ - switch (tObj->MagFilter) { + switch (tObj->Sampler.MagFilter) { case GL_NEAREST: for (i = magStart; i < magEnd; i++) sample_1d_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], @@ -1065,8 +1065,8 @@ sample_2d_nearest(struct gl_context *ctx, GLint i, j; (void) ctx; - i = nearest_texel_location(tObj->WrapS, img, width, texcoord[0]); - j = nearest_texel_location(tObj->WrapT, img, height, texcoord[1]); + i = nearest_texel_location(tObj->Sampler.WrapS, img, width, texcoord[0]); + j = nearest_texel_location(tObj->Sampler.WrapT, img, height, texcoord[1]); /* skip over the border, if any */ i += img->Border; @@ -1100,8 +1100,8 @@ sample_2d_linear(struct gl_context *ctx, GLfloat a, b; GLfloat t00[4], t10[4], t01[4], t11[4]; /* sampled texel colors */ - linear_texel_locations(tObj->WrapS, img, width, texcoord[0], &i0, &i1, &a); - linear_texel_locations(tObj->WrapT, img, height, texcoord[1], &j0, &j1, &b); + linear_texel_locations(tObj->Sampler.WrapS, img, width, texcoord[0], &i0, &i1, &a); + linear_texel_locations(tObj->Sampler.WrapT, img, height, texcoord[1], &j0, &j1, &b); if (img->Border) { i0 += img->Border; @@ -1165,8 +1165,8 @@ sample_2d_linear_repeat(struct gl_context *ctx, (void) ctx; - ASSERT(tObj->WrapS == GL_REPEAT); - ASSERT(tObj->WrapT == GL_REPEAT); + ASSERT(tObj->Sampler.WrapS == GL_REPEAT); + ASSERT(tObj->Sampler.WrapT == GL_REPEAT); ASSERT(img->Border == 0); ASSERT(img->_BaseFormat != GL_COLOR_INDEX); ASSERT(img->_IsPowerOfTwo); @@ -1270,8 +1270,8 @@ sample_2d_linear_mipmap_linear_repeat(struct gl_context *ctx, { GLuint i; ASSERT(lambda != NULL); - ASSERT(tObj->WrapS == GL_REPEAT); - ASSERT(tObj->WrapT == GL_REPEAT); + ASSERT(tObj->Sampler.WrapS == GL_REPEAT); + ASSERT(tObj->Sampler.WrapT == GL_REPEAT); for (i = 0; i < n; i++) { GLint level = linear_mipmap_level(tObj, lambda[i]); if (level >= tObj->_MaxLevel) { @@ -1317,8 +1317,8 @@ sample_linear_2d(struct gl_context *ctx, GLuint i; struct gl_texture_image *image = tObj->Image[0][tObj->BaseLevel]; (void) lambda; - if (tObj->WrapS == GL_REPEAT && - tObj->WrapT == GL_REPEAT && + if (tObj->Sampler.WrapS == GL_REPEAT && + tObj->Sampler.WrapT == GL_REPEAT && image->_IsPowerOfTwo && image->Border == 0) { for (i = 0; i < n; i++) { @@ -1356,8 +1356,8 @@ opt_sample_rgb_2d(struct gl_context *ctx, GLuint k; (void) ctx; (void) lambda; - ASSERT(tObj->WrapS==GL_REPEAT); - ASSERT(tObj->WrapT==GL_REPEAT); + ASSERT(tObj->Sampler.WrapS==GL_REPEAT); + ASSERT(tObj->Sampler.WrapT==GL_REPEAT); ASSERT(img->Border==0); ASSERT(img->TexFormat == MESA_FORMAT_RGB888); ASSERT(img->_IsPowerOfTwo); @@ -1398,8 +1398,8 @@ opt_sample_rgba_2d(struct gl_context *ctx, GLuint i; (void) ctx; (void) lambda; - ASSERT(tObj->WrapS==GL_REPEAT); - ASSERT(tObj->WrapT==GL_REPEAT); + ASSERT(tObj->Sampler.WrapS==GL_REPEAT); + ASSERT(tObj->Sampler.WrapT==GL_REPEAT); ASSERT(img->Border==0); ASSERT(img->TexFormat == MESA_FORMAT_RGBA8888); ASSERT(img->_IsPowerOfTwo); @@ -1428,8 +1428,8 @@ sample_lambda_2d(struct gl_context *ctx, GLuint minStart, minEnd; /* texels with minification */ GLuint magStart, magEnd; /* texels with magnification */ - const GLboolean repeatNoBorderPOT = (tObj->WrapS == GL_REPEAT) - && (tObj->WrapT == GL_REPEAT) + const GLboolean repeatNoBorderPOT = (tObj->Sampler.WrapS == GL_REPEAT) + && (tObj->Sampler.WrapT == GL_REPEAT) && (tImg->Border == 0 && (tImg->Width == tImg->RowStride)) && (tImg->_BaseFormat != GL_COLOR_INDEX) && tImg->_IsPowerOfTwo; @@ -1441,7 +1441,7 @@ sample_lambda_2d(struct gl_context *ctx, if (minStart < minEnd) { /* do the minified texels */ const GLuint m = minEnd - minStart; - switch (tObj->MinFilter) { + switch (tObj->Sampler.MinFilter) { case GL_NEAREST: if (repeatNoBorderPOT) { switch (tImg->TexFormat) { @@ -1498,7 +1498,7 @@ sample_lambda_2d(struct gl_context *ctx, /* do the magnified texels */ const GLuint m = magEnd - magStart; - switch (tObj->MagFilter) { + switch (tObj->Sampler.MagFilter) { case GL_NEAREST: if (repeatNoBorderPOT) { switch (tImg->TexFormat) { @@ -1552,9 +1552,9 @@ sample_3d_nearest(struct gl_context *ctx, GLint i, j, k; (void) ctx; - i = nearest_texel_location(tObj->WrapS, img, width, texcoord[0]); - j = nearest_texel_location(tObj->WrapT, img, height, texcoord[1]); - k = nearest_texel_location(tObj->WrapR, img, depth, texcoord[2]); + i = nearest_texel_location(tObj->Sampler.WrapS, img, width, texcoord[0]); + j = nearest_texel_location(tObj->Sampler.WrapT, img, height, texcoord[1]); + k = nearest_texel_location(tObj->Sampler.WrapR, img, depth, texcoord[2]); if (i < 0 || i >= (GLint) img->Width || j < 0 || j >= (GLint) img->Height || @@ -1587,9 +1587,9 @@ sample_3d_linear(struct gl_context *ctx, GLfloat t000[4], t010[4], t001[4], t011[4]; GLfloat t100[4], t110[4], t101[4], t111[4]; - linear_texel_locations(tObj->WrapS, img, width, texcoord[0], &i0, &i1, &a); - linear_texel_locations(tObj->WrapT, img, height, texcoord[1], &j0, &j1, &b); - linear_texel_locations(tObj->WrapR, img, depth, texcoord[2], &k0, &k1, &c); + linear_texel_locations(tObj->Sampler.WrapS, img, width, texcoord[0], &i0, &i1, &a); + linear_texel_locations(tObj->Sampler.WrapT, img, height, texcoord[1], &j0, &j1, &b); + linear_texel_locations(tObj->Sampler.WrapR, img, depth, texcoord[2], &k0, &k1, &c); if (img->Border) { i0 += img->Border; @@ -1794,7 +1794,7 @@ sample_lambda_3d(struct gl_context *ctx, if (minStart < minEnd) { /* do the minified texels */ GLuint m = minEnd - minStart; - switch (tObj->MinFilter) { + switch (tObj->Sampler.MinFilter) { case GL_NEAREST: for (i = minStart; i < minEnd; i++) sample_3d_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], @@ -1829,7 +1829,7 @@ sample_lambda_3d(struct gl_context *ctx, if (magStart < magEnd) { /* do the magnified texels */ - switch (tObj->MagFilter) { + switch (tObj->Sampler.MagFilter) { case GL_NEAREST: for (i = magStart; i < magEnd; i++) sample_3d_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], @@ -2091,7 +2091,7 @@ sample_lambda_cube(struct gl_context *ctx, if (minStart < minEnd) { /* do the minified texels */ const GLuint m = minEnd - minStart; - switch (tObj->MinFilter) { + switch (tObj->Sampler.MinFilter) { case GL_NEAREST: sample_nearest_cube(ctx, tObj, m, texcoords + minStart, lambda + minStart, rgba + minStart); @@ -2128,7 +2128,7 @@ sample_lambda_cube(struct gl_context *ctx, if (magStart < magEnd) { /* do the magnified texels */ const GLuint m = magEnd - magStart; - switch (tObj->MagFilter) { + switch (tObj->Sampler.MagFilter) { case GL_NEAREST: sample_nearest_cube(ctx, tObj, m, texcoords + magStart, lambda + magStart, rgba + magStart); @@ -2163,18 +2163,18 @@ sample_nearest_rect(struct gl_context *ctx, (void) ctx; (void) lambda; - ASSERT(tObj->WrapS == GL_CLAMP || - tObj->WrapS == GL_CLAMP_TO_EDGE || - tObj->WrapS == GL_CLAMP_TO_BORDER); - ASSERT(tObj->WrapT == GL_CLAMP || - tObj->WrapT == GL_CLAMP_TO_EDGE || - tObj->WrapT == GL_CLAMP_TO_BORDER); + ASSERT(tObj->Sampler.WrapS == GL_CLAMP || + tObj->Sampler.WrapS == GL_CLAMP_TO_EDGE || + tObj->Sampler.WrapS == GL_CLAMP_TO_BORDER); + ASSERT(tObj->Sampler.WrapT == GL_CLAMP || + tObj->Sampler.WrapT == GL_CLAMP_TO_EDGE || + tObj->Sampler.WrapT == GL_CLAMP_TO_BORDER); ASSERT(img->_BaseFormat != GL_COLOR_INDEX); for (i = 0; i < n; i++) { GLint row, col; - col = clamp_rect_coord_nearest(tObj->WrapS, texcoords[i][0], width); - row = clamp_rect_coord_nearest(tObj->WrapT, texcoords[i][1], height); + col = clamp_rect_coord_nearest(tObj->Sampler.WrapS, texcoords[i][0], width); + row = clamp_rect_coord_nearest(tObj->Sampler.WrapT, texcoords[i][1], height); if (col < 0 || col >= width || row < 0 || row >= height) get_border_color(tObj, img, rgba[i]); else @@ -2197,12 +2197,12 @@ sample_linear_rect(struct gl_context *ctx, (void) ctx; (void) lambda; - ASSERT(tObj->WrapS == GL_CLAMP || - tObj->WrapS == GL_CLAMP_TO_EDGE || - tObj->WrapS == GL_CLAMP_TO_BORDER); - ASSERT(tObj->WrapT == GL_CLAMP || - tObj->WrapT == GL_CLAMP_TO_EDGE || - tObj->WrapT == GL_CLAMP_TO_BORDER); + ASSERT(tObj->Sampler.WrapS == GL_CLAMP || + tObj->Sampler.WrapS == GL_CLAMP_TO_EDGE || + tObj->Sampler.WrapS == GL_CLAMP_TO_BORDER); + ASSERT(tObj->Sampler.WrapT == GL_CLAMP || + tObj->Sampler.WrapT == GL_CLAMP_TO_EDGE || + tObj->Sampler.WrapT == GL_CLAMP_TO_BORDER); ASSERT(img->_BaseFormat != GL_COLOR_INDEX); for (i = 0; i < n; i++) { @@ -2211,9 +2211,9 @@ sample_linear_rect(struct gl_context *ctx, GLfloat a, b; GLbitfield useBorderColor = 0x0; - clamp_rect_coord_linear(tObj->WrapS, texcoords[i][0], width, + clamp_rect_coord_linear(tObj->Sampler.WrapS, texcoords[i][0], width, &i0, &i1, &a); - clamp_rect_coord_linear(tObj->WrapT, texcoords[i][1], height, + clamp_rect_coord_linear(tObj->Sampler.WrapT, texcoords[i][1], height, &j0, &j1, &b); /* compute integer rows/columns */ @@ -2264,7 +2264,7 @@ sample_lambda_rect(struct gl_context *ctx, &minStart, &minEnd, &magStart, &magEnd); if (minStart < minEnd) { - if (tObj->MinFilter == GL_NEAREST) { + if (tObj->Sampler.MinFilter == GL_NEAREST) { sample_nearest_rect(ctx, tObj, minEnd - minStart, texcoords + minStart, NULL, rgba + minStart); } @@ -2274,7 +2274,7 @@ sample_lambda_rect(struct gl_context *ctx, } } if (magStart < magEnd) { - if (tObj->MagFilter == GL_NEAREST) { + if (tObj->Sampler.MagFilter == GL_NEAREST) { sample_nearest_rect(ctx, tObj, magEnd - magStart, texcoords + magStart, NULL, rgba + magStart); } @@ -2307,8 +2307,8 @@ sample_2d_array_nearest(struct gl_context *ctx, GLint array; (void) ctx; - i = nearest_texel_location(tObj->WrapS, img, width, texcoord[0]); - j = nearest_texel_location(tObj->WrapT, img, height, texcoord[1]); + i = nearest_texel_location(tObj->Sampler.WrapS, img, width, texcoord[0]); + j = nearest_texel_location(tObj->Sampler.WrapT, img, height, texcoord[1]); array = tex_array_slice(texcoord[2], depth); if (i < 0 || i >= (GLint) img->Width || @@ -2342,12 +2342,12 @@ sample_2d_array_linear(struct gl_context *ctx, GLfloat a, b; GLfloat t00[4], t01[4], t10[4], t11[4]; - linear_texel_locations(tObj->WrapS, img, width, texcoord[0], &i0, &i1, &a); - linear_texel_locations(tObj->WrapT, img, height, texcoord[1], &j0, &j1, &b); + linear_texel_locations(tObj->Sampler.WrapS, img, width, texcoord[0], &i0, &i1, &a); + linear_texel_locations(tObj->Sampler.WrapT, img, height, texcoord[1], &j0, &j1, &b); array = tex_array_slice(texcoord[2], depth); if (array < 0 || array >= depth) { - COPY_4V(rgba, tObj->BorderColor.f); + COPY_4V(rgba, tObj->Sampler.BorderColor.f); } else { if (img->Border) { @@ -2532,7 +2532,7 @@ sample_lambda_2d_array(struct gl_context *ctx, if (minStart < minEnd) { /* do the minified texels */ GLuint m = minEnd - minStart; - switch (tObj->MinFilter) { + switch (tObj->Sampler.MinFilter) { case GL_NEAREST: for (i = minStart; i < minEnd; i++) sample_2d_array_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], @@ -2575,7 +2575,7 @@ sample_lambda_2d_array(struct gl_context *ctx, if (magStart < magEnd) { /* do the magnified texels */ - switch (tObj->MagFilter) { + switch (tObj->Sampler.MagFilter) { case GL_NEAREST: for (i = magStart; i < magEnd; i++) sample_2d_array_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], @@ -2616,7 +2616,7 @@ sample_1d_array_nearest(struct gl_context *ctx, GLint array; (void) ctx; - i = nearest_texel_location(tObj->WrapS, img, width, texcoord[0]); + i = nearest_texel_location(tObj->Sampler.WrapS, img, width, texcoord[0]); array = tex_array_slice(texcoord[1], height); if (i < 0 || i >= (GLint) img->Width || @@ -2648,7 +2648,7 @@ sample_1d_array_linear(struct gl_context *ctx, GLfloat a; GLfloat t0[4], t1[4]; - linear_texel_locations(tObj->WrapS, img, width, texcoord[0], &i0, &i1, &a); + linear_texel_locations(tObj->Sampler.WrapS, img, width, texcoord[0], &i0, &i1, &a); array = tex_array_slice(texcoord[1], height); if (img->Border) { @@ -2813,7 +2813,7 @@ sample_lambda_1d_array(struct gl_context *ctx, if (minStart < minEnd) { /* do the minified texels */ GLuint m = minEnd - minStart; - switch (tObj->MinFilter) { + switch (tObj->Sampler.MinFilter) { case GL_NEAREST: for (i = minStart; i < minEnd; i++) sample_1d_array_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], @@ -2852,7 +2852,7 @@ sample_lambda_1d_array(struct gl_context *ctx, if (magStart < magEnd) { /* do the magnified texels */ - switch (tObj->MagFilter) { + switch (tObj->Sampler.MagFilter) { case GL_NEAREST: for (i = magStart; i < magEnd; i++) sample_1d_array_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], @@ -2975,13 +2975,13 @@ choose_depth_texture_level(const struct gl_texture_object *tObj, GLfloat lambda) { GLint level; - if (tObj->MinFilter == GL_NEAREST || tObj->MinFilter == GL_LINEAR) { + if (tObj->Sampler.MinFilter == GL_NEAREST || tObj->Sampler.MinFilter == GL_LINEAR) { /* no mipmapping - use base level */ level = tObj->BaseLevel; } else { /* choose mipmap level */ - lambda = CLAMP(lambda, tObj->MinLod, tObj->MaxLod); + lambda = CLAMP(lambda, tObj->Sampler.MinLod, tObj->Sampler.MaxLod); level = (GLint) lambda; level = CLAMP(level, tObj->BaseLevel, tObj->_MaxLevel); } @@ -3020,14 +3020,14 @@ sample_depth_texture( struct gl_context *ctx, tObj->Target == GL_TEXTURE_1D_ARRAY_EXT || tObj->Target == GL_TEXTURE_2D_ARRAY_EXT); - ambient = tObj->CompareFailValue; + ambient = tObj->Sampler.CompareFailValue; - /* XXXX if tObj->MinFilter != tObj->MagFilter, we're ignoring lambda */ + /* XXXX if tObj->Sampler.MinFilter != tObj->Sampler.MagFilter, we're ignoring lambda */ - function = (tObj->CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) ? - tObj->CompareFunc : GL_NONE; + function = (tObj->Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) ? + tObj->Sampler.CompareFunc : GL_NONE; - if (tObj->MagFilter == GL_NEAREST) { + if (tObj->Sampler.MagFilter == GL_NEAREST) { GLuint i; for (i = 0; i < n; i++) { GLfloat depthSample, depthRef; @@ -3040,14 +3040,14 @@ sample_depth_texture( struct gl_context *ctx, img->FetchTexelf(img, col, row, slice, &depthSample); } else { - depthSample = tObj->BorderColor.f[0]; + depthSample = tObj->Sampler.BorderColor.f[0]; } depthRef = CLAMP(texcoords[i][compare_coord], 0.0F, 1.0F); result = shadow_compare(function, depthRef, depthSample, ambient); - switch (tObj->DepthMode) { + switch (tObj->Sampler.DepthMode) { case GL_LUMINANCE: ASSIGN_4V(texel[i], result, result, result, 1.0F); break; @@ -3067,7 +3067,7 @@ sample_depth_texture( struct gl_context *ctx, } else { GLuint i; - ASSERT(tObj->MagFilter == GL_LINEAR); + ASSERT(tObj->Sampler.MagFilter == GL_LINEAR); for (i = 0; i < n; i++) { GLfloat depth00, depth01, depth10, depth11, depthRef; GLint i0, i1, j0, j1; @@ -3095,21 +3095,21 @@ sample_depth_texture( struct gl_context *ctx, } if (slice < 0 || slice >= (GLint) depth) { - depth00 = tObj->BorderColor.f[0]; - depth01 = tObj->BorderColor.f[0]; - depth10 = tObj->BorderColor.f[0]; - depth11 = tObj->BorderColor.f[0]; + depth00 = tObj->Sampler.BorderColor.f[0]; + depth01 = tObj->Sampler.BorderColor.f[0]; + depth10 = tObj->Sampler.BorderColor.f[0]; + depth11 = tObj->Sampler.BorderColor.f[0]; } else { /* get four depth samples from the texture */ if (useBorderTexel & (I0BIT | J0BIT)) { - depth00 = tObj->BorderColor.f[0]; + depth00 = tObj->Sampler.BorderColor.f[0]; } else { img->FetchTexelf(img, i0, j0, slice, &depth00); } if (useBorderTexel & (I1BIT | J0BIT)) { - depth10 = tObj->BorderColor.f[0]; + depth10 = tObj->Sampler.BorderColor.f[0]; } else { img->FetchTexelf(img, i1, j0, slice, &depth10); @@ -3117,13 +3117,13 @@ sample_depth_texture( struct gl_context *ctx, if (tObj->Target != GL_TEXTURE_1D_ARRAY_EXT) { if (useBorderTexel & (I0BIT | J1BIT)) { - depth01 = tObj->BorderColor.f[0]; + depth01 = tObj->Sampler.BorderColor.f[0]; } else { img->FetchTexelf(img, i0, j1, slice, &depth01); } if (useBorderTexel & (I1BIT | J1BIT)) { - depth11 = tObj->BorderColor.f[0]; + depth11 = tObj->Sampler.BorderColor.f[0]; } else { img->FetchTexelf(img, i1, j1, slice, &depth11); @@ -3141,7 +3141,7 @@ sample_depth_texture( struct gl_context *ctx, depth00, depth01, depth10, depth11, ambient, wi, wj); - switch (tObj->DepthMode) { + switch (tObj->Sampler.DepthMode) { case GL_LUMINANCE: ASSIGN_4V(texel[i], result, result, result, 1.0F); break; @@ -3197,7 +3197,8 @@ _swrast_choose_texture_sample_func( struct gl_context *ctx, return &null_sample_func; } else { - const GLboolean needLambda = (GLboolean) (t->MinFilter != t->MagFilter); + const GLboolean needLambda = + (GLboolean) (t->Sampler.MinFilter != t->Sampler.MagFilter); const GLenum format = t->Image[0][t->BaseLevel]->_BaseFormat; switch (t->Target) { @@ -3208,11 +3209,11 @@ _swrast_choose_texture_sample_func( struct gl_context *ctx, else if (needLambda) { return &sample_lambda_1d; } - else if (t->MinFilter == GL_LINEAR) { + else if (t->Sampler.MinFilter == GL_LINEAR) { return &sample_linear_1d; } else { - ASSERT(t->MinFilter == GL_NEAREST); + ASSERT(t->Sampler.MinFilter == GL_NEAREST); return &sample_nearest_1d; } case GL_TEXTURE_2D: @@ -3222,22 +3223,22 @@ _swrast_choose_texture_sample_func( struct gl_context *ctx, else if (needLambda) { return &sample_lambda_2d; } - else if (t->MinFilter == GL_LINEAR) { + else if (t->Sampler.MinFilter == GL_LINEAR) { return &sample_linear_2d; } else { /* check for a few optimized cases */ const struct gl_texture_image *img = t->Image[0][t->BaseLevel]; - ASSERT(t->MinFilter == GL_NEAREST); - if (t->WrapS == GL_REPEAT && - t->WrapT == GL_REPEAT && + ASSERT(t->Sampler.MinFilter == GL_NEAREST); + if (t->Sampler.WrapS == GL_REPEAT && + t->Sampler.WrapT == GL_REPEAT && img->_IsPowerOfTwo && img->Border == 0 && img->TexFormat == MESA_FORMAT_RGB888) { return &opt_sample_rgb_2d; } - else if (t->WrapS == GL_REPEAT && - t->WrapT == GL_REPEAT && + else if (t->Sampler.WrapS == GL_REPEAT && + t->Sampler.WrapT == GL_REPEAT && img->_IsPowerOfTwo && img->Border == 0 && img->TexFormat == MESA_FORMAT_RGBA8888) { @@ -3251,22 +3252,22 @@ _swrast_choose_texture_sample_func( struct gl_context *ctx, if (needLambda) { return &sample_lambda_3d; } - else if (t->MinFilter == GL_LINEAR) { + else if (t->Sampler.MinFilter == GL_LINEAR) { return &sample_linear_3d; } else { - ASSERT(t->MinFilter == GL_NEAREST); + ASSERT(t->Sampler.MinFilter == GL_NEAREST); return &sample_nearest_3d; } case GL_TEXTURE_CUBE_MAP: if (needLambda) { return &sample_lambda_cube; } - else if (t->MinFilter == GL_LINEAR) { + else if (t->Sampler.MinFilter == GL_LINEAR) { return &sample_linear_cube; } else { - ASSERT(t->MinFilter == GL_NEAREST); + ASSERT(t->Sampler.MinFilter == GL_NEAREST); return &sample_nearest_cube; } case GL_TEXTURE_RECTANGLE_NV: @@ -3276,33 +3277,33 @@ _swrast_choose_texture_sample_func( struct gl_context *ctx, else if (needLambda) { return &sample_lambda_rect; } - else if (t->MinFilter == GL_LINEAR) { + else if (t->Sampler.MinFilter == GL_LINEAR) { return &sample_linear_rect; } else { - ASSERT(t->MinFilter == GL_NEAREST); + ASSERT(t->Sampler.MinFilter == GL_NEAREST); return &sample_nearest_rect; } case GL_TEXTURE_1D_ARRAY_EXT: if (needLambda) { return &sample_lambda_1d_array; } - else if (t->MinFilter == GL_LINEAR) { + else if (t->Sampler.MinFilter == GL_LINEAR) { return &sample_linear_1d_array; } else { - ASSERT(t->MinFilter == GL_NEAREST); + ASSERT(t->Sampler.MinFilter == GL_NEAREST); return &sample_nearest_1d_array; } case GL_TEXTURE_2D_ARRAY_EXT: if (needLambda) { return &sample_lambda_2d_array; } - else if (t->MinFilter == GL_LINEAR) { + else if (t->Sampler.MinFilter == GL_LINEAR) { return &sample_linear_2d_array; } else { - ASSERT(t->MinFilter == GL_NEAREST); + ASSERT(t->Sampler.MinFilter == GL_NEAREST); return &sample_nearest_2d_array; } default: diff --git a/src/mesa/swrast/s_triangle.c b/src/mesa/swrast/s_triangle.c index d07a4ef7513..8a9671aa08a 100644 --- a/src/mesa/swrast/s_triangle.c +++ b/src/mesa/swrast/s_triangle.c @@ -540,7 +540,7 @@ affine_span(struct gl_context *ctx, SWspan *span, info.smask = texImg->Width - 1; \ info.tmask = texImg->Height - 1; \ info.format = texImg->TexFormat; \ - info.filter = obj->MinFilter; \ + info.filter = obj->Sampler.MinFilter; \ info.envmode = unit->EnvMode; \ info.er = 0; \ info.eg = 0; \ @@ -805,7 +805,7 @@ fast_persp_span(struct gl_context *ctx, SWspan *span, info.smask = texImg->Width - 1; \ info.tmask = texImg->Height - 1; \ info.format = texImg->TexFormat; \ - info.filter = obj->MinFilter; \ + info.filter = obj->Sampler.MinFilter; \ info.envmode = unit->EnvMode; \ info.er = 0; \ info.eg = 0; \ @@ -1044,8 +1044,8 @@ _swrast_choose_triangle( struct gl_context *ctx ) texImg = texObj2D ? texObj2D->Image[0][texObj2D->BaseLevel] : NULL; format = texImg ? texImg->TexFormat : MESA_FORMAT_NONE; - minFilter = texObj2D ? texObj2D->MinFilter : GL_NONE; - magFilter = texObj2D ? texObj2D->MagFilter : GL_NONE; + minFilter = texObj2D ? texObj2D->Sampler.MinFilter : GL_NONE; + magFilter = texObj2D ? texObj2D->Sampler.MagFilter : GL_NONE; envMode = ctx->Texture.Unit[0].EnvMode; /* First see if we can use an optimized 2-D texture function */ @@ -1054,8 +1054,8 @@ _swrast_choose_triangle( struct gl_context *ctx ) && !ctx->ATIFragmentShader._Enabled && ctx->Texture._EnabledUnits == 0x1 && ctx->Texture.Unit[0]._ReallyEnabled == TEXTURE_2D_BIT - && texObj2D->WrapS == GL_REPEAT - && texObj2D->WrapT == GL_REPEAT + && texObj2D->Sampler.WrapS == GL_REPEAT + && texObj2D->Sampler.WrapT == GL_REPEAT && texObj2D->_Swizzle == SWIZZLE_NOOP && texImg->_IsPowerOfTwo && texImg->Border == 0 diff --git a/src/mesa/tnl/t_context.c b/src/mesa/tnl/t_context.c index 5f5e2663b5f..a6da8cafe5a 100644 --- a/src/mesa/tnl/t_context.c +++ b/src/mesa/tnl/t_context.c @@ -138,16 +138,12 @@ _tnl_InvalidateState( struct gl_context *ctx, GLuint new_state ) } } - if (ctx->Fog.Enabled) { - /* fixed-function fog */ + if (ctx->Fog.Enabled + || (fp != NULL && (fp->Base.InputsRead & FRAG_BIT_FOGC) != 0)) { + /* Either fixed-function fog or a fragment program needs fog coord. + */ RENDERINPUTS_SET( tnl->render_inputs_bitset, _TNL_ATTRIB_FOG ); } - else if (fp) { - if (fp->FogOption != GL_NONE || (fp->Base.InputsRead & FRAG_BIT_FOGC)) { - /* fragment program needs fog coord */ - RENDERINPUTS_SET( tnl->render_inputs_bitset, _TNL_ATTRIB_FOG ); - } - } if (ctx->Polygon.FrontMode != GL_FILL || ctx->Polygon.BackMode != GL_FILL) diff --git a/src/mesa/vbo/vbo_context.c b/src/mesa/vbo/vbo_context.c index 6656ed89816..9de770d0bcf 100644 --- a/src/mesa/vbo/vbo_context.c +++ b/src/mesa/vbo/vbo_context.c @@ -72,6 +72,7 @@ static void init_legacy_currval(struct gl_context *ctx) cl->Type = GL_FLOAT; cl->Format = GL_RGBA; cl->Ptr = (const void *)ctx->Current.Attrib[i]; + cl->_ElementSize = cl->Size * sizeof(GLfloat); _mesa_reference_buffer_object(ctx, &cl->BufferObj, ctx->Shared->NullBufferObj); } @@ -98,6 +99,7 @@ static void init_generic_currval(struct gl_context *ctx) cl->Stride = 0; cl->StrideB = 0; cl->Enabled = 1; + cl->_ElementSize = cl->Size * sizeof(GLfloat); _mesa_reference_buffer_object(ctx, &cl->BufferObj, ctx->Shared->NullBufferObj); } @@ -143,6 +145,7 @@ static void init_mat_currval(struct gl_context *ctx) cl->Stride = 0; cl->StrideB = 0; cl->Enabled = 1; + cl->_ElementSize = cl->Size * sizeof(GLfloat); _mesa_reference_buffer_object(ctx, &cl->BufferObj, ctx->Shared->NullBufferObj); } diff --git a/src/mesa/vbo/vbo_exec_api.c b/src/mesa/vbo/vbo_exec_api.c index fcd544de763..3c7c439b64c 100644 --- a/src/mesa/vbo/vbo_exec_api.c +++ b/src/mesa/vbo/vbo_exec_api.c @@ -168,6 +168,8 @@ static void vbo_exec_copy_to_current( struct vbo_exec_context *exec ) * directly. */ vbo->currval[i].Size = exec->vtx.attrsz[i]; + assert(vbo->currval[i].Type == GL_FLOAT); + vbo->currval[i]._ElementSize = vbo->currval[i].Size * sizeof(GLfloat); /* This triggers rather too much recalculation of Mesa state * that doesn't get used (eg light positions). diff --git a/src/mesa/vbo/vbo_exec_array.c b/src/mesa/vbo/vbo_exec_array.c index 98d6badc47a..a49cd5017a3 100644 --- a/src/mesa/vbo/vbo_exec_array.c +++ b/src/mesa/vbo/vbo_exec_array.c @@ -585,15 +585,11 @@ vbo_draw_arrays(struct gl_context *ctx, GLenum mode, GLint start, if (ctx->NewState) _mesa_update_state(ctx); + /* init most fields to zero */ + memset(prim, 0, sizeof(prim)); prim[0].begin = 1; prim[0].end = 1; - prim[0].weak = 0; - prim[0].pad = 0; prim[0].mode = mode; - prim[0].start = 0; /* filled in below */ - prim[0].count = 0; /* filled in below */ - prim[0].indexed = 0; - prim[0].basevertex = 0; prim[0].num_instances = numInstances; /* Implement the primitive restart index */ @@ -943,8 +939,13 @@ vbo_exec_DrawRangeElementsBaseVertex(GLenum mode, /* Set 'end' to the max possible legal value */ assert(ctx->Array.ArrayObj->_MaxElement >= 1); end = ctx->Array.ArrayObj->_MaxElement - 1; + + if (end < start) { + return; + } } - else if (0) { + + if (0) { printf("glDraw[Range]Elements{,BaseVertex}" "(start %u, end %u, type 0x%x, count %d) ElemBuf %u, " "base %d\n", diff --git a/src/mesa/vbo/vbo_exec_draw.c b/src/mesa/vbo/vbo_exec_draw.c index 539658021e3..7e8d8602093 100644 --- a/src/mesa/vbo/vbo_exec_draw.c +++ b/src/mesa/vbo/vbo_exec_draw.c @@ -239,6 +239,7 @@ vbo_exec_bind_arrays( struct gl_context *ctx ) arrays[attr].Type = GL_FLOAT; arrays[attr].Format = GL_RGBA; arrays[attr].Enabled = 1; + arrays[attr]._ElementSize = arrays[attr].Size * sizeof(GLfloat); _mesa_reference_buffer_object(ctx, &arrays[attr].BufferObj, exec->vtx.bufferobj); diff --git a/src/mesa/vbo/vbo_save_draw.c b/src/mesa/vbo/vbo_save_draw.c index 634a6d3f84b..ca4cff38a89 100644 --- a/src/mesa/vbo/vbo_save_draw.c +++ b/src/mesa/vbo/vbo_save_draw.c @@ -90,6 +90,8 @@ _playback_copy_to_current(struct gl_context *ctx, memcpy(current, tmp, 4 * sizeof(GLfloat)); vbo->currval[i].Size = node->attrsz[i]; + assert(vbo->currval[i].Type == GL_FLOAT); + vbo->currval[i]._ElementSize = vbo->currval[i].Size * sizeof(GLfloat); if (i >= VBO_ATTRIB_FIRST_MATERIAL && i <= VBO_ATTRIB_LAST_MATERIAL) @@ -193,6 +195,7 @@ static void vbo_bind_vertex_list(struct gl_context *ctx, arrays[attr].Type = GL_FLOAT; arrays[attr].Format = GL_RGBA; arrays[attr].Enabled = 1; + arrays[attr]._ElementSize = arrays[attr].Size * sizeof(GLfloat); _mesa_reference_buffer_object(ctx, &arrays[attr].BufferObj, node->vertex_store->bufferobj); diff --git a/src/mesa/vbo/vbo_split_copy.c b/src/mesa/vbo/vbo_split_copy.c index 8c981f93e5c..ecca1171673 100644 --- a/src/mesa/vbo/vbo_split_copy.c +++ b/src/mesa/vbo/vbo_split_copy.c @@ -519,6 +519,7 @@ replay_init( struct copy_context *copy ) dst->Enabled = GL_TRUE; dst->Normalized = src->Normalized; dst->BufferObj = ctx->Shared->NullBufferObj; + dst->_ElementSize = src->_ElementSize; dst->_MaxElement = copy->dstbuf_size; /* may be less! */ offset += copy->varying[i].size; diff --git a/src/mesa/vf/vf.c b/src/mesa/vf/vf.c deleted file mode 100644 index defb7cbe2c6..00000000000 --- a/src/mesa/vf/vf.c +++ /dev/null @@ -1,372 +0,0 @@ -/* - * Copyright 2003 Tungsten Graphics, inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * TUNGSTEN GRAPHICS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Authors: - * Keith Whitwell <[email protected]> - */ - -#include "main/glheader.h" -#include "main/context.h" -#include "main/colormac.h" - -#include "vf.h" - -#define DBG 0 - - - -static GLboolean match_fastpath( struct vertex_fetch *vf, - const struct vf_fastpath *fp) -{ - GLuint j; - - if (vf->attr_count != fp->attr_count) - return GL_FALSE; - - for (j = 0; j < vf->attr_count; j++) - if (vf->attr[j].format != fp->attr[j].format || - vf->attr[j].inputsize != fp->attr[j].size || - vf->attr[j].vertoffset != fp->attr[j].offset) - return GL_FALSE; - - if (fp->match_strides) { - if (vf->vertex_stride != fp->vertex_stride) - return GL_FALSE; - - for (j = 0; j < vf->attr_count; j++) - if (vf->attr[j].inputstride != fp->attr[j].stride) - return GL_FALSE; - } - - return GL_TRUE; -} - -static GLboolean search_fastpath_emit( struct vertex_fetch *vf ) -{ - struct vf_fastpath *fp = vf->fastpath; - - for ( ; fp ; fp = fp->next) { - if (match_fastpath(vf, fp)) { - vf->emit = fp->func; - return GL_TRUE; - } - } - - return GL_FALSE; -} - -void vf_register_fastpath( struct vertex_fetch *vf, - GLboolean match_strides ) -{ - struct vf_fastpath *fastpath = CALLOC_STRUCT(vf_fastpath); - GLuint i; - - fastpath->vertex_stride = vf->vertex_stride; - fastpath->attr_count = vf->attr_count; - fastpath->match_strides = match_strides; - fastpath->func = vf->emit; - fastpath->attr = (struct vf_attr_type *) - malloc(vf->attr_count * sizeof(fastpath->attr[0])); - - for (i = 0; i < vf->attr_count; i++) { - fastpath->attr[i].format = vf->attr[i].format; - fastpath->attr[i].stride = vf->attr[i].inputstride; - fastpath->attr[i].size = vf->attr[i].inputsize; - fastpath->attr[i].offset = vf->attr[i].vertoffset; - } - - fastpath->next = vf->fastpath; - vf->fastpath = fastpath; -} - - - - -/*********************************************************************** - * Build codegen functions or return generic ones: - */ -static void choose_emit_func( struct vertex_fetch *vf, - GLuint count, - GLubyte *dest) -{ - vf->emit = NULL; - - /* Does this match an existing (hardwired, codegen or known-bad) - * fastpath? - */ - if (search_fastpath_emit(vf)) { - /* Use this result. If it is null, then it is already known - * that the current state will fail for codegen and there is no - * point trying again. - */ - } - else if (vf->codegen_emit) { - vf->codegen_emit( vf ); - } - - if (!vf->emit) { - vf_generate_hardwired_emit(vf); - } - - /* Otherwise use the generic version: - */ - if (!vf->emit) - vf->emit = vf_generic_emit; - - vf->emit( vf, count, dest ); -} - - - - - -/*********************************************************************** - * Public entrypoints, mostly dispatch to the above: - */ - - - -GLuint vf_set_vertex_attributes( struct vertex_fetch *vf, - const struct vf_attr_map *map, - GLuint nr, - GLuint vertex_stride ) -{ - GLuint offset = 0; - GLuint i, j; - - assert(nr < VF_ATTRIB_MAX); - - memset(vf->lookup, 0, sizeof(vf->lookup)); - - for (j = 0, i = 0; i < nr; i++) { - const GLuint format = map[i].format; - if (format == EMIT_PAD) { - if (DBG) - printf("%d: pad %d, offset %d\n", i, - map[i].offset, offset); - - offset += map[i].offset; - - } - else { - assert(vf->lookup[map[i].attrib] == 0); - vf->lookup[map[i].attrib] = &vf->attr[j]; - - vf->attr[j].attrib = map[i].attrib; - vf->attr[j].format = format; - vf->attr[j].insert = vf_format_info[format].insert; - vf->attr[j].extract = vf_format_info[format].extract; - vf->attr[j].vertattrsize = vf_format_info[format].attrsize; - vf->attr[j].vertoffset = offset; - - if (DBG) - printf("%d: %s, offset %d\n", i, - vf_format_info[format].name, - vf->attr[j].vertoffset); - - offset += vf_format_info[format].attrsize; - j++; - } - } - - vf->attr_count = j; - vf->vertex_stride = vertex_stride ? vertex_stride : offset; - vf->emit = choose_emit_func; - - assert(vf->vertex_stride >= offset); - return vf->vertex_stride; -} - - - -void vf_set_vp_matrix( struct vertex_fetch *vf, - const GLfloat *viewport ) -{ - assert(vf->allow_viewport_emits); - - /* scale */ - vf->vp[0] = viewport[MAT_SX]; - vf->vp[1] = viewport[MAT_SY]; - vf->vp[2] = viewport[MAT_SZ]; - vf->vp[3] = 1.0; - - /* translate */ - vf->vp[4] = viewport[MAT_TX]; - vf->vp[5] = viewport[MAT_TY]; - vf->vp[6] = viewport[MAT_TZ]; - vf->vp[7] = 0.0; -} - -void vf_set_vp_scale_translate( struct vertex_fetch *vf, - const GLfloat *scale, - const GLfloat *translate ) -{ - assert(vf->allow_viewport_emits); - - vf->vp[0] = scale[0]; - vf->vp[1] = scale[1]; - vf->vp[2] = scale[2]; - vf->vp[3] = scale[3]; - - vf->vp[4] = translate[0]; - vf->vp[5] = translate[1]; - vf->vp[6] = translate[2]; - vf->vp[7] = translate[3]; -} - - -/* Set attribute pointers, adjusted for start position: - */ -void vf_set_sources( struct vertex_fetch *vf, - GLvector4f * const sources[], - GLuint start ) -{ - struct vf_attr *a = vf->attr; - GLuint j; - - for (j = 0; j < vf->attr_count; j++) { - const GLvector4f *vptr = sources[a[j].attrib]; - - if ((a[j].inputstride != vptr->stride) || - (a[j].inputsize != vptr->size)) - vf->emit = choose_emit_func; - - a[j].inputstride = vptr->stride; - a[j].inputsize = vptr->size; - a[j].do_insert = a[j].insert[vptr->size - 1]; - a[j].inputptr = ((GLubyte *)vptr->data) + start * vptr->stride; - } -} - - - -/* Emit count VB vertices to dest. - */ -void vf_emit_vertices( struct vertex_fetch *vf, - GLuint count, - void *dest ) -{ - vf->emit( vf, count, (GLubyte*) dest ); -} - - -/* Extract a named attribute from a hardware vertex. Will have to - * reverse any viewport transformation, swizzling or other conversions - * which may have been applied. - * - * This is mainly required for on-the-fly vertex translations to - * swrast format. - */ -void vf_get_attr( struct vertex_fetch *vf, - const void *vertex, - GLenum attr, - const GLfloat *dflt, - GLfloat *dest ) -{ - const struct vf_attr *a = vf->attr; - const GLuint attr_count = vf->attr_count; - GLuint j; - - for (j = 0; j < attr_count; j++) { - if (a[j].attrib == attr) { - a[j].extract( &a[j], dest, (GLubyte *)vertex + a[j].vertoffset ); - return; - } - } - - /* Else return the value from ctx->Current. - */ - memcpy( dest, dflt, 4*sizeof(GLfloat)); -} - - - - -struct vertex_fetch *vf_create( GLboolean allow_viewport_emits ) -{ - struct vertex_fetch *vf = CALLOC_STRUCT(vertex_fetch); - GLuint i; - - for (i = 0; i < VF_ATTRIB_MAX; i++) - vf->attr[i].vf = vf; - - vf->allow_viewport_emits = allow_viewport_emits; - - switch(CHAN_TYPE) { - case GL_UNSIGNED_BYTE: - vf->chan_scale[0] = 255.0; - vf->chan_scale[1] = 255.0; - vf->chan_scale[2] = 255.0; - vf->chan_scale[3] = 255.0; - break; - case GL_UNSIGNED_SHORT: - vf->chan_scale[0] = 65535.0; - vf->chan_scale[1] = 65535.0; - vf->chan_scale[2] = 65535.0; - vf->chan_scale[3] = 65535.0; - break; - default: - vf->chan_scale[0] = 1.0; - vf->chan_scale[1] = 1.0; - vf->chan_scale[2] = 1.0; - vf->chan_scale[3] = 1.0; - break; - } - - vf->identity[0] = 0.0; - vf->identity[1] = 0.0; - vf->identity[2] = 0.0; - vf->identity[3] = 1.0; - - vf->codegen_emit = NULL; - -#ifdef USE_SSE_ASM - if (!_mesa_getenv("MESA_NO_CODEGEN")) - vf->codegen_emit = vf_generate_sse_emit; -#endif - - return vf; -} - - -void vf_destroy( struct vertex_fetch *vf ) -{ - struct vf_fastpath *fp, *tmp; - - for (fp = vf->fastpath ; fp ; fp = tmp) { - tmp = fp->next; - FREE(fp->attr); - - /* KW: At the moment, fp->func is constrained to be allocated by - * _mesa_exec_alloc(), as the hardwired fastpaths in - * t_vertex_generic.c are handled specially. It would be nice - * to unify them, but this probably won't change until this - * module gets another overhaul. - */ - _mesa_exec_free((void *) fp->func); - FREE(fp); - } - - vf->fastpath = NULL; - FREE(vf); -} diff --git a/src/mesa/vf/vf.h b/src/mesa/vf/vf.h deleted file mode 100644 index 5fe392bbe51..00000000000 --- a/src/mesa/vf/vf.h +++ /dev/null @@ -1,234 +0,0 @@ -/* - * Copyright 2003 Tungsten Graphics, inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * TUNGSTEN GRAPHICS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Authors: - * Keith Whitwell <[email protected]> - */ - -#ifndef VF_VERTEX_H -#define VF_VERTEX_H - -#include "main/glheader.h" -#include "math/m_vector.h" - -enum { - VF_ATTRIB_POS = 0, - VF_ATTRIB_WEIGHT = 1, - VF_ATTRIB_NORMAL = 2, - VF_ATTRIB_COLOR0 = 3, - VF_ATTRIB_COLOR1 = 4, - VF_ATTRIB_FOG = 5, - VF_ATTRIB_COLOR_INDEX = 6, - VF_ATTRIB_EDGEFLAG = 7, - VF_ATTRIB_TEX0 = 8, - VF_ATTRIB_TEX1 = 9, - VF_ATTRIB_TEX2 = 10, - VF_ATTRIB_TEX3 = 11, - VF_ATTRIB_TEX4 = 12, - VF_ATTRIB_TEX5 = 13, - VF_ATTRIB_TEX6 = 14, - VF_ATTRIB_TEX7 = 15, - VF_ATTRIB_VAR0 = 16, - VF_ATTRIB_VAR1 = 17, - VF_ATTRIB_VAR2 = 18, - VF_ATTRIB_VAR3 = 19, - VF_ATTRIB_VAR4 = 20, - VF_ATTRIB_VAR5 = 21, - VF_ATTRIB_VAR6 = 22, - VF_ATTRIB_VAR7 = 23, - VF_ATTRIB_POINTSIZE = 24, - VF_ATTRIB_BFC0 = 25, - VF_ATTRIB_BFC1 = 26, - VF_ATTRIB_CLIP_POS = 27, - VF_ATTRIB_VERTEX_HEADER = 28, - VF_ATTRIB_MAX = 29 -}; - - -enum vf_attr_format { - EMIT_1F, - EMIT_2F, - EMIT_3F, - EMIT_4F, - EMIT_2F_VIEWPORT, /* do viewport transform and emit */ - EMIT_3F_VIEWPORT, /* do viewport transform and emit */ - EMIT_4F_VIEWPORT, /* do viewport transform and emit */ - EMIT_3F_XYW, /* for projective texture */ - EMIT_1UB_1F, /* for fog coordinate */ - EMIT_3UB_3F_RGB, /* for specular color */ - EMIT_3UB_3F_BGR, /* for specular color */ - EMIT_4UB_4F_RGBA, /* for color */ - EMIT_4UB_4F_BGRA, /* for color */ - EMIT_4UB_4F_ARGB, /* for color */ - EMIT_4UB_4F_ABGR, /* for color */ - EMIT_4CHAN_4F_RGBA, /* for swrast color */ - EMIT_PAD, /* leave a hole of 'offset' bytes */ - EMIT_MAX -}; - -struct vf_attr_map { - GLuint attrib; - enum vf_attr_format format; - GLuint offset; -}; - -struct vertex_fetch; - -void vf_set_vp_matrix( struct vertex_fetch *vf, - const GLfloat *viewport ); - -void vf_set_vp_scale_translate( struct vertex_fetch *vf, - const GLfloat *scale, - const GLfloat *translate ); - -GLuint vf_set_vertex_attributes( struct vertex_fetch *vf, - const struct vf_attr_map *map, - GLuint nr, - GLuint vertex_stride ); - -void vf_set_sources( struct vertex_fetch *vf, - GLvector4f * const attrib[], - GLuint start ); - -void vf_emit_vertices( struct vertex_fetch *vf, - GLuint count, - void *dest ); - -void vf_get_attr( struct vertex_fetch *vf, - const void *vertex, - GLenum attr, - const GLfloat *dflt, - GLfloat *dest ); - -struct vertex_fetch *vf_create( GLboolean allow_viewport_emits ); - -void vf_destroy( struct vertex_fetch *vf ); - - - -/*********************************************************************** - * Internal functions and structs: - */ - -struct vf_attr; - -typedef void (*vf_extract_func)( const struct vf_attr *a, - GLfloat *out, - const GLubyte *v ); - -typedef void (*vf_insert_func)( const struct vf_attr *a, - GLubyte *v, - const GLfloat *in ); - -typedef void (*vf_emit_func)( struct vertex_fetch *vf, - GLuint count, - GLubyte *dest ); - - - -/* Describes how to convert/move a vertex attribute from a vertex - * array to a vertex structure. - */ -struct vf_attr -{ - struct vertex_fetch *vf; - - GLuint format; - GLuint inputsize; - GLuint inputstride; - GLuint vertoffset; /* position of the attrib in the vertex struct */ - - GLuint attrib; /* which vertex attrib (0=position, etc) */ - GLuint vertattrsize; /* size of the attribute in bytes */ - - GLubyte *inputptr; - const vf_insert_func *insert; - vf_insert_func do_insert; - vf_extract_func extract; -}; - -struct vertex_fetch -{ - struct vf_attr attr[VF_ATTRIB_MAX]; - GLuint attr_count; - GLuint vertex_stride; - - struct vf_attr *lookup[VF_ATTRIB_MAX]; - - vf_emit_func emit; - - /* Parameters and constants for codegen: - */ - GLboolean allow_viewport_emits; - GLfloat vp[8]; - GLfloat chan_scale[4]; - GLfloat identity[4]; - - struct vf_fastpath *fastpath; - - void (*codegen_emit)( struct vertex_fetch *vf ); -}; - - -struct vf_attr_type { - GLuint format; - GLuint size; - GLuint stride; - GLuint offset; -}; - -struct vf_fastpath { - GLuint vertex_stride; - GLuint attr_count; - GLboolean match_strides; - - struct vf_attr_type *attr; - - vf_emit_func func; - struct vf_fastpath *next; -}; - - -void vf_register_fastpath( struct vertex_fetch *vtx, - GLboolean match_strides ); - -void vf_generic_emit( struct vertex_fetch *vf, - GLuint count, - GLubyte *v ); - -void vf_generate_hardwired_emit( struct vertex_fetch *vf ); - -void vf_generate_sse_emit( struct vertex_fetch *vf ); - - -struct vf_format_info { - const char *name; - vf_extract_func extract; - vf_insert_func insert[4]; - const GLuint attrsize; -}; - -const struct vf_format_info vf_format_info[EMIT_MAX]; - - -#endif diff --git a/src/mesa/vf/vf_generic.c b/src/mesa/vf/vf_generic.c deleted file mode 100644 index 95a317e99db..00000000000 --- a/src/mesa/vf/vf_generic.c +++ /dev/null @@ -1,982 +0,0 @@ - -/* - * Copyright 2003 Tungsten Graphics, inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * TUNGSTEN GRAPHICS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Authors: - * Keith Whitwell <[email protected]> - */ - -#include "main/glheader.h" -#include "main/context.h" -#include "main/colormac.h" -#include "main/macros.h" -#include "main/simple_list.h" - -#include "vf/vf.h" - - -/* - * These functions take the NDC coordinates pointed to by 'in', apply the - * NDC->Viewport mapping and store the results at 'v'. - */ - -static INLINE void insert_4f_viewport_4( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = scale[0] * in[0] + trans[0]; - out[1] = scale[1] * in[1] + trans[1]; - out[2] = scale[2] * in[2] + trans[2]; - out[3] = in[3]; -} - -static INLINE void insert_4f_viewport_3( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = scale[0] * in[0] + trans[0]; - out[1] = scale[1] * in[1] + trans[1]; - out[2] = scale[2] * in[2] + trans[2]; - out[3] = 1; -} - -static INLINE void insert_4f_viewport_2( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = scale[0] * in[0] + trans[0]; - out[1] = scale[1] * in[1] + trans[1]; - out[2] = trans[2]; - out[3] = 1; -} - -static INLINE void insert_4f_viewport_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = scale[0] * in[0] + trans[0]; - out[1] = trans[1]; - out[2] = trans[2]; - out[3] = 1; -} - -static INLINE void insert_3f_viewport_3( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = scale[0] * in[0] + trans[0]; - out[1] = scale[1] * in[1] + trans[1]; - out[2] = scale[2] * in[2] + trans[2]; -} - -static INLINE void insert_3f_viewport_2( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = scale[0] * in[0] + trans[0]; - out[1] = scale[1] * in[1] + trans[1]; - out[2] = scale[2] * in[2] + trans[2]; -} - -static INLINE void insert_3f_viewport_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = scale[0] * in[0] + trans[0]; - out[1] = trans[1]; - out[2] = trans[2]; -} - -static INLINE void insert_2f_viewport_2( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = scale[0] * in[0] + trans[0]; - out[1] = scale[1] * in[1] + trans[1]; -} - -static INLINE void insert_2f_viewport_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = scale[0] * in[0] + trans[0]; - out[1] = trans[1]; -} - - -/* - * These functions do the same as above, except for the viewport mapping. - */ - -static INLINE void insert_4f_4( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; - out[1] = in[1]; - out[2] = in[2]; - out[3] = in[3]; -} - -static INLINE void insert_4f_3( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; - out[1] = in[1]; - out[2] = in[2]; - out[3] = 1; -} - -static INLINE void insert_4f_2( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; - out[1] = in[1]; - out[2] = 0; - out[3] = 1; -} - -static INLINE void insert_4f_1( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; - out[1] = 0; - out[2] = 0; - out[3] = 1; -} - -static INLINE void insert_3f_xyw_4( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; - out[1] = in[1]; - out[2] = in[3]; -} - -static INLINE void insert_3f_xyw_err( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - (void) a; (void) v; (void) in; - exit(1); -} - -static INLINE void insert_3f_3( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; - out[1] = in[1]; - out[2] = in[2]; -} - -static INLINE void insert_3f_2( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; - out[1] = in[1]; - out[2] = 0; -} - -static INLINE void insert_3f_1( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; - out[1] = 0; - out[2] = 0; -} - - -static INLINE void insert_2f_2( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; - out[1] = in[1]; -} - -static INLINE void insert_2f_1( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; - out[1] = 0; -} - -static INLINE void insert_1f_1( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; -} - -static INLINE void insert_null( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - (void) a; (void) v; (void) in; -} - -static INLINE void insert_4chan_4f_rgba_4( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLchan *c = (GLchan *)v; - (void) a; - UNCLAMPED_FLOAT_TO_CHAN(c[0], in[0]); - UNCLAMPED_FLOAT_TO_CHAN(c[1], in[1]); - UNCLAMPED_FLOAT_TO_CHAN(c[2], in[2]); - UNCLAMPED_FLOAT_TO_CHAN(c[3], in[3]); -} - -static INLINE void insert_4chan_4f_rgba_3( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLchan *c = (GLchan *)v; - (void) a; - UNCLAMPED_FLOAT_TO_CHAN(c[0], in[0]); - UNCLAMPED_FLOAT_TO_CHAN(c[1], in[1]); - UNCLAMPED_FLOAT_TO_CHAN(c[2], in[2]); - c[3] = CHAN_MAX; -} - -static INLINE void insert_4chan_4f_rgba_2( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLchan *c = (GLchan *)v; - (void) a; - UNCLAMPED_FLOAT_TO_CHAN(c[0], in[0]); - UNCLAMPED_FLOAT_TO_CHAN(c[1], in[1]); - c[2] = 0; - c[3] = CHAN_MAX; -} - -static INLINE void insert_4chan_4f_rgba_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLchan *c = (GLchan *)v; - (void) a; - UNCLAMPED_FLOAT_TO_CHAN(c[0], in[0]); - c[1] = 0; - c[2] = 0; - c[3] = CHAN_MAX; -} - -static INLINE void insert_4ub_4f_rgba_4( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[2]); - UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[3]); -} - -static INLINE void insert_4ub_4f_rgba_3( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[2]); - v[3] = 0xff; -} - -static INLINE void insert_4ub_4f_rgba_2( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); - v[2] = 0; - v[3] = 0xff; -} - -static INLINE void insert_4ub_4f_rgba_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); - v[1] = 0; - v[2] = 0; - v[3] = 0xff; -} - -static INLINE void insert_4ub_4f_bgra_4( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[2]); - UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[3]); -} - -static INLINE void insert_4ub_4f_bgra_3( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[2]); - v[3] = 0xff; -} - -static INLINE void insert_4ub_4f_bgra_2( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); - v[0] = 0; - v[3] = 0xff; -} - -static INLINE void insert_4ub_4f_bgra_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]); - v[1] = 0; - v[0] = 0; - v[3] = 0xff; -} - -static INLINE void insert_4ub_4f_argb_4( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]); - UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[2]); - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[3]); -} - -static INLINE void insert_4ub_4f_argb_3( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]); - UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[2]); - v[0] = 0xff; -} - -static INLINE void insert_4ub_4f_argb_2( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]); - v[3] = 0x00; - v[0] = 0xff; -} - -static INLINE void insert_4ub_4f_argb_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[0]); - v[2] = 0x00; - v[3] = 0x00; - v[0] = 0xff; -} - -static INLINE void insert_4ub_4f_abgr_4( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[2]); - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[3]); -} - -static INLINE void insert_4ub_4f_abgr_3( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[2]); - v[0] = 0xff; -} - -static INLINE void insert_4ub_4f_abgr_2( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]); - v[1] = 0x00; - v[0] = 0xff; -} - -static INLINE void insert_4ub_4f_abgr_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[0]); - v[2] = 0x00; - v[1] = 0x00; - v[0] = 0xff; -} - -static INLINE void insert_3ub_3f_rgb_3( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[2]); -} - -static INLINE void insert_3ub_3f_rgb_2( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); - v[2] = 0; -} - -static INLINE void insert_3ub_3f_rgb_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); - v[1] = 0; - v[2] = 0; -} - -static INLINE void insert_3ub_3f_bgr_3( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[2]); -} - -static INLINE void insert_3ub_3f_bgr_2( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); - v[0] = 0; -} - -static INLINE void insert_3ub_3f_bgr_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]); - v[1] = 0; - v[0] = 0; -} - - -static INLINE void insert_1ub_1f_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); -} - - -/*********************************************************************** - * Functions to perform the reverse operations to the above, for - * swrast translation and clip-interpolation. - * - * Currently always extracts a full 4 floats. - */ - -static void extract_4f_viewport( const struct vf_attr *a, GLfloat *out, - const GLubyte *v ) -{ - const GLfloat *in = (const GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - /* Although included for completeness, the position coordinate is - * usually handled differently during clipping. - */ - out[0] = (in[0] - trans[0]) / scale[0]; - out[1] = (in[1] - trans[1]) / scale[1]; - out[2] = (in[2] - trans[2]) / scale[2]; - out[3] = in[3]; -} - -static void extract_3f_viewport( const struct vf_attr *a, GLfloat *out, - const GLubyte *v ) -{ - const GLfloat *in = (const GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = (in[0] - trans[0]) / scale[0]; - out[1] = (in[1] - trans[1]) / scale[1]; - out[2] = (in[2] - trans[2]) / scale[2]; - out[3] = 1; -} - - -static void extract_2f_viewport( const struct vf_attr *a, GLfloat *out, - const GLubyte *v ) -{ - const GLfloat *in = (const GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = (in[0] - trans[0]) / scale[0]; - out[1] = (in[1] - trans[1]) / scale[1]; - out[2] = 0; - out[3] = 1; -} - - -static void extract_4f( const struct vf_attr *a, GLfloat *out, const GLubyte *v ) -{ - const GLfloat *in = (const GLfloat *)v; - (void) a; - - out[0] = in[0]; - out[1] = in[1]; - out[2] = in[2]; - out[3] = in[3]; -} - -static void extract_3f_xyw( const struct vf_attr *a, GLfloat *out, const GLubyte *v ) -{ - const GLfloat *in = (const GLfloat *)v; - (void) a; - - out[0] = in[0]; - out[1] = in[1]; - out[2] = 0; - out[3] = in[2]; -} - - -static void extract_3f( const struct vf_attr *a, GLfloat *out, const GLubyte *v ) -{ - const GLfloat *in = (const GLfloat *)v; - (void) a; - - out[0] = in[0]; - out[1] = in[1]; - out[2] = in[2]; - out[3] = 1; -} - - -static void extract_2f( const struct vf_attr *a, GLfloat *out, const GLubyte *v ) -{ - const GLfloat *in = (const GLfloat *)v; - (void) a; - - out[0] = in[0]; - out[1] = in[1]; - out[2] = 0; - out[3] = 1; -} - -static void extract_1f( const struct vf_attr *a, GLfloat *out, const GLubyte *v ) -{ - const GLfloat *in = (const GLfloat *)v; - (void) a; - - out[0] = in[0]; - out[1] = 0; - out[2] = 0; - out[3] = 1; -} - -static void extract_4chan_4f_rgba( const struct vf_attr *a, GLfloat *out, - const GLubyte *v ) -{ - GLchan *c = (GLchan *)v; - (void) a; - - out[0] = CHAN_TO_FLOAT(c[0]); - out[1] = CHAN_TO_FLOAT(c[1]); - out[2] = CHAN_TO_FLOAT(c[2]); - out[3] = CHAN_TO_FLOAT(c[3]); -} - -static void extract_4ub_4f_rgba( const struct vf_attr *a, GLfloat *out, - const GLubyte *v ) -{ - (void) a; - out[0] = UBYTE_TO_FLOAT(v[0]); - out[1] = UBYTE_TO_FLOAT(v[1]); - out[2] = UBYTE_TO_FLOAT(v[2]); - out[3] = UBYTE_TO_FLOAT(v[3]); -} - -static void extract_4ub_4f_bgra( const struct vf_attr *a, GLfloat *out, - const GLubyte *v ) -{ - (void) a; - out[2] = UBYTE_TO_FLOAT(v[0]); - out[1] = UBYTE_TO_FLOAT(v[1]); - out[0] = UBYTE_TO_FLOAT(v[2]); - out[3] = UBYTE_TO_FLOAT(v[3]); -} - -static void extract_4ub_4f_argb( const struct vf_attr *a, GLfloat *out, - const GLubyte *v ) -{ - (void) a; - out[3] = UBYTE_TO_FLOAT(v[0]); - out[0] = UBYTE_TO_FLOAT(v[1]); - out[1] = UBYTE_TO_FLOAT(v[2]); - out[2] = UBYTE_TO_FLOAT(v[3]); -} - -static void extract_4ub_4f_abgr( const struct vf_attr *a, GLfloat *out, - const GLubyte *v ) -{ - (void) a; - out[3] = UBYTE_TO_FLOAT(v[0]); - out[2] = UBYTE_TO_FLOAT(v[1]); - out[1] = UBYTE_TO_FLOAT(v[2]); - out[0] = UBYTE_TO_FLOAT(v[3]); -} - -static void extract_3ub_3f_rgb( const struct vf_attr *a, GLfloat *out, - const GLubyte *v ) -{ - (void) a; - out[0] = UBYTE_TO_FLOAT(v[0]); - out[1] = UBYTE_TO_FLOAT(v[1]); - out[2] = UBYTE_TO_FLOAT(v[2]); - out[3] = 1; -} - -static void extract_3ub_3f_bgr( const struct vf_attr *a, GLfloat *out, - const GLubyte *v ) -{ - (void) a; - out[2] = UBYTE_TO_FLOAT(v[0]); - out[1] = UBYTE_TO_FLOAT(v[1]); - out[0] = UBYTE_TO_FLOAT(v[2]); - out[3] = 1; -} - -static void extract_1ub_1f( const struct vf_attr *a, GLfloat *out, const GLubyte *v ) -{ - (void) a; - out[0] = UBYTE_TO_FLOAT(v[0]); - out[1] = 0; - out[2] = 0; - out[3] = 1; -} - - -const struct vf_format_info vf_format_info[EMIT_MAX] = -{ - { "1f", - extract_1f, - { insert_1f_1, insert_1f_1, insert_1f_1, insert_1f_1 }, - sizeof(GLfloat) }, - - { "2f", - extract_2f, - { insert_2f_1, insert_2f_2, insert_2f_2, insert_2f_2 }, - 2 * sizeof(GLfloat) }, - - { "3f", - extract_3f, - { insert_3f_1, insert_3f_2, insert_3f_3, insert_3f_3 }, - 3 * sizeof(GLfloat) }, - - { "4f", - extract_4f, - { insert_4f_1, insert_4f_2, insert_4f_3, insert_4f_4 }, - 4 * sizeof(GLfloat) }, - - { "2f_viewport", - extract_2f_viewport, - { insert_2f_viewport_1, insert_2f_viewport_2, insert_2f_viewport_2, - insert_2f_viewport_2 }, - 2 * sizeof(GLfloat) }, - - { "3f_viewport", - extract_3f_viewport, - { insert_3f_viewport_1, insert_3f_viewport_2, insert_3f_viewport_3, - insert_3f_viewport_3 }, - 3 * sizeof(GLfloat) }, - - { "4f_viewport", - extract_4f_viewport, - { insert_4f_viewport_1, insert_4f_viewport_2, insert_4f_viewport_3, - insert_4f_viewport_4 }, - 4 * sizeof(GLfloat) }, - - { "3f_xyw", - extract_3f_xyw, - { insert_3f_xyw_err, insert_3f_xyw_err, insert_3f_xyw_err, - insert_3f_xyw_4 }, - 3 * sizeof(GLfloat) }, - - { "1ub_1f", - extract_1ub_1f, - { insert_1ub_1f_1, insert_1ub_1f_1, insert_1ub_1f_1, insert_1ub_1f_1 }, - sizeof(GLubyte) }, - - { "3ub_3f_rgb", - extract_3ub_3f_rgb, - { insert_3ub_3f_rgb_1, insert_3ub_3f_rgb_2, insert_3ub_3f_rgb_3, - insert_3ub_3f_rgb_3 }, - 3 * sizeof(GLubyte) }, - - { "3ub_3f_bgr", - extract_3ub_3f_bgr, - { insert_3ub_3f_bgr_1, insert_3ub_3f_bgr_2, insert_3ub_3f_bgr_3, - insert_3ub_3f_bgr_3 }, - 3 * sizeof(GLubyte) }, - - { "4ub_4f_rgba", - extract_4ub_4f_rgba, - { insert_4ub_4f_rgba_1, insert_4ub_4f_rgba_2, insert_4ub_4f_rgba_3, - insert_4ub_4f_rgba_4 }, - 4 * sizeof(GLubyte) }, - - { "4ub_4f_bgra", - extract_4ub_4f_bgra, - { insert_4ub_4f_bgra_1, insert_4ub_4f_bgra_2, insert_4ub_4f_bgra_3, - insert_4ub_4f_bgra_4 }, - 4 * sizeof(GLubyte) }, - - { "4ub_4f_argb", - extract_4ub_4f_argb, - { insert_4ub_4f_argb_1, insert_4ub_4f_argb_2, insert_4ub_4f_argb_3, - insert_4ub_4f_argb_4 }, - 4 * sizeof(GLubyte) }, - - { "4ub_4f_abgr", - extract_4ub_4f_abgr, - { insert_4ub_4f_abgr_1, insert_4ub_4f_abgr_2, insert_4ub_4f_abgr_3, - insert_4ub_4f_abgr_4 }, - 4 * sizeof(GLubyte) }, - - { "4chan_4f_rgba", - extract_4chan_4f_rgba, - { insert_4chan_4f_rgba_1, insert_4chan_4f_rgba_2, insert_4chan_4f_rgba_3, - insert_4chan_4f_rgba_4 }, - 4 * sizeof(GLchan) }, - - { "pad", - NULL, - { NULL, NULL, NULL, NULL }, - 0 } - -}; - - - - -/*********************************************************************** - * Hardwired fastpaths for emitting whole vertices or groups of - * vertices - */ -#define EMIT5(NR, F0, F1, F2, F3, F4, NAME) \ -static void NAME( struct vertex_fetch *vf, \ - GLuint count, \ - GLubyte *v ) \ -{ \ - struct vf_attr *a = vf->attr; \ - GLuint i; \ - \ - for (i = 0 ; i < count ; i++, v += vf->vertex_stride) { \ - if (NR > 0) { \ - F0( &a[0], v + a[0].vertoffset, (GLfloat *)a[0].inputptr ); \ - a[0].inputptr += a[0].inputstride; \ - } \ - \ - if (NR > 1) { \ - F1( &a[1], v + a[1].vertoffset, (GLfloat *)a[1].inputptr ); \ - a[1].inputptr += a[1].inputstride; \ - } \ - \ - if (NR > 2) { \ - F2( &a[2], v + a[2].vertoffset, (GLfloat *)a[2].inputptr ); \ - a[2].inputptr += a[2].inputstride; \ - } \ - \ - if (NR > 3) { \ - F3( &a[3], v + a[3].vertoffset, (GLfloat *)a[3].inputptr ); \ - a[3].inputptr += a[3].inputstride; \ - } \ - \ - if (NR > 4) { \ - F4( &a[4], v + a[4].vertoffset, (GLfloat *)a[4].inputptr ); \ - a[4].inputptr += a[4].inputstride; \ - } \ - } \ -} - - -#define EMIT2(F0, F1, NAME) EMIT5(2, F0, F1, insert_null, \ - insert_null, insert_null, NAME) - -#define EMIT3(F0, F1, F2, NAME) EMIT5(3, F0, F1, F2, insert_null, \ - insert_null, NAME) - -#define EMIT4(F0, F1, F2, F3, NAME) EMIT5(4, F0, F1, F2, F3, \ - insert_null, NAME) - - -EMIT2(insert_3f_viewport_3, insert_4ub_4f_rgba_4, emit_viewport3_rgba4) -EMIT2(insert_3f_viewport_3, insert_4ub_4f_bgra_4, emit_viewport3_bgra4) -EMIT2(insert_3f_3, insert_4ub_4f_rgba_4, emit_xyz3_rgba4) - -EMIT3(insert_4f_viewport_4, insert_4ub_4f_rgba_4, insert_2f_2, emit_viewport4_rgba4_st2) -EMIT3(insert_4f_viewport_4, insert_4ub_4f_bgra_4, insert_2f_2, emit_viewport4_bgra4_st2) -EMIT3(insert_4f_4, insert_4ub_4f_rgba_4, insert_2f_2, emit_xyzw4_rgba4_st2) - -EMIT4(insert_4f_viewport_4, insert_4ub_4f_rgba_4, insert_2f_2, insert_2f_2, emit_viewport4_rgba4_st2_st2) -EMIT4(insert_4f_viewport_4, insert_4ub_4f_bgra_4, insert_2f_2, insert_2f_2, emit_viewport4_bgra4_st2_st2) -EMIT4(insert_4f_4, insert_4ub_4f_rgba_4, insert_2f_2, insert_2f_2, emit_xyzw4_rgba4_st2_st2) - - -/* Use the codegen paths to select one of a number of hardwired - * fastpaths. - */ -void vf_generate_hardwired_emit( struct vertex_fetch *vf ) -{ - vf_emit_func func = NULL; - - /* Does it fit a hardwired fastpath? Help! this is growing out of - * control! - */ - switch (vf->attr_count) { - case 2: - if (vf->attr[0].do_insert == insert_3f_viewport_3) { - if (vf->attr[1].do_insert == insert_4ub_4f_bgra_4) - func = emit_viewport3_bgra4; - else if (vf->attr[1].do_insert == insert_4ub_4f_rgba_4) - func = emit_viewport3_rgba4; - } - else if (vf->attr[0].do_insert == insert_3f_3 && - vf->attr[1].do_insert == insert_4ub_4f_rgba_4) { - func = emit_xyz3_rgba4; - } - break; - case 3: - if (vf->attr[2].do_insert == insert_2f_2) { - if (vf->attr[1].do_insert == insert_4ub_4f_rgba_4) { - if (vf->attr[0].do_insert == insert_4f_viewport_4) - func = emit_viewport4_rgba4_st2; - else if (vf->attr[0].do_insert == insert_4f_4) - func = emit_xyzw4_rgba4_st2; - } - else if (vf->attr[1].do_insert == insert_4ub_4f_bgra_4 && - vf->attr[0].do_insert == insert_4f_viewport_4) - func = emit_viewport4_bgra4_st2; - } - break; - case 4: - if (vf->attr[2].do_insert == insert_2f_2 && - vf->attr[3].do_insert == insert_2f_2) { - if (vf->attr[1].do_insert == insert_4ub_4f_rgba_4) { - if (vf->attr[0].do_insert == insert_4f_viewport_4) - func = emit_viewport4_rgba4_st2_st2; - else if (vf->attr[0].do_insert == insert_4f_4) - func = emit_xyzw4_rgba4_st2_st2; - } - else if (vf->attr[1].do_insert == insert_4ub_4f_bgra_4 && - vf->attr[0].do_insert == insert_4f_viewport_4) - func = emit_viewport4_bgra4_st2_st2; - } - break; - } - - vf->emit = func; -} - -/*********************************************************************** - * Generic (non-codegen) functions for whole vertices or groups of - * vertices - */ - -void vf_generic_emit( struct vertex_fetch *vf, - GLuint count, - GLubyte *v ) -{ - struct vf_attr *a = vf->attr; - const GLuint attr_count = vf->attr_count; - const GLuint stride = vf->vertex_stride; - GLuint i, j; - - for (i = 0 ; i < count ; i++, v += stride) { - for (j = 0; j < attr_count; j++) { - GLfloat *in = (GLfloat *)a[j].inputptr; - a[j].inputptr += a[j].inputstride; - a[j].do_insert( &a[j], v + a[j].vertoffset, in ); - } - } -} - - diff --git a/src/mesa/vf/vf_sse.c b/src/mesa/vf/vf_sse.c deleted file mode 100644 index 7b947b74a65..00000000000 --- a/src/mesa/vf/vf_sse.c +++ /dev/null @@ -1,662 +0,0 @@ -/* - * Copyright 2003 Tungsten Graphics, inc. - * All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, and/or sell copies of the Software, and to permit persons to whom - * the Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL - * TUNGSTEN GRAPHICS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - * USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * Authors: - * Keith Whitwell <[email protected]> - */ - -#include "main/glheader.h" -#include "main/colormac.h" -#include "main/simple_list.h" -#include "main/enums.h" - -#include "vf/vf.h" - -#if defined(USE_SSE_ASM) - -#include "x86/rtasm/x86sse.h" -#include "x86/common_x86_asm.h" - - -#define X 0 -#define Y 1 -#define Z 2 -#define W 3 - - -struct x86_program { - struct x86_function func; - - struct vertex_fetch *vf; - GLboolean inputs_safe; - GLboolean outputs_safe; - GLboolean have_sse2; - - struct x86_reg identity; - struct x86_reg chan0; -}; - - -static struct x86_reg get_identity( struct x86_program *p ) -{ - return p->identity; -} - -static void emit_load4f_4( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - sse_movups(&p->func, dest, arg0); -} - -static void emit_load4f_3( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - /* Have to jump through some hoops: - * - * c 0 0 0 - * c 0 0 1 - * 0 0 c 1 - * a b c 1 - */ - sse_movss(&p->func, dest, x86_make_disp(arg0, 8)); - sse_shufps(&p->func, dest, get_identity(p), SHUF(X,Y,Z,W) ); - sse_shufps(&p->func, dest, dest, SHUF(Y,Z,X,W) ); - sse_movlps(&p->func, dest, arg0); -} - -static void emit_load4f_2( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - /* Initialize from identity, then pull in low two words: - */ - sse_movups(&p->func, dest, get_identity(p)); - sse_movlps(&p->func, dest, arg0); -} - -static void emit_load4f_1( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - /* Pull in low word, then swizzle in identity */ - sse_movss(&p->func, dest, arg0); - sse_shufps(&p->func, dest, get_identity(p), SHUF(X,Y,Z,W) ); -} - - - -static void emit_load3f_3( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - /* Over-reads by 1 dword - potential SEGV if input is a vertex - * array. - */ - if (p->inputs_safe) { - sse_movups(&p->func, dest, arg0); - } - else { - /* c 0 0 0 - * c c c c - * a b c c - */ - sse_movss(&p->func, dest, x86_make_disp(arg0, 8)); - sse_shufps(&p->func, dest, dest, SHUF(X,X,X,X)); - sse_movlps(&p->func, dest, arg0); - } -} - -static void emit_load3f_2( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - emit_load4f_2(p, dest, arg0); -} - -static void emit_load3f_1( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - emit_load4f_1(p, dest, arg0); -} - -static void emit_load2f_2( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - sse_movlps(&p->func, dest, arg0); -} - -static void emit_load2f_1( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - emit_load4f_1(p, dest, arg0); -} - -static void emit_load1f_1( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - sse_movss(&p->func, dest, arg0); -} - -static void (*load[4][4])( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) = { - { emit_load1f_1, - emit_load1f_1, - emit_load1f_1, - emit_load1f_1 }, - - { emit_load2f_1, - emit_load2f_2, - emit_load2f_2, - emit_load2f_2 }, - - { emit_load3f_1, - emit_load3f_2, - emit_load3f_3, - emit_load3f_3 }, - - { emit_load4f_1, - emit_load4f_2, - emit_load4f_3, - emit_load4f_4 } -}; - -static void emit_load( struct x86_program *p, - struct x86_reg dest, - GLuint sz, - struct x86_reg src, - GLuint src_sz) -{ - load[sz-1][src_sz-1](p, dest, src); -} - -static void emit_store4f( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - sse_movups(&p->func, dest, arg0); -} - -static void emit_store3f( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - if (p->outputs_safe) { - /* Emit the extra dword anyway. This may hurt writecombining, - * may cause other problems. - */ - sse_movups(&p->func, dest, arg0); - } - else { - /* Alternate strategy - emit two, shuffle, emit one. - */ - sse_movlps(&p->func, dest, arg0); - sse_shufps(&p->func, arg0, arg0, SHUF(Z,Z,Z,Z) ); /* NOTE! destructive */ - sse_movss(&p->func, x86_make_disp(dest,8), arg0); - } -} - -static void emit_store2f( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - sse_movlps(&p->func, dest, arg0); -} - -static void emit_store1f( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - sse_movss(&p->func, dest, arg0); -} - - -static void (*store[4])( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) = -{ - emit_store1f, - emit_store2f, - emit_store3f, - emit_store4f -}; - -static void emit_store( struct x86_program *p, - struct x86_reg dest, - GLuint sz, - struct x86_reg temp ) - -{ - store[sz-1](p, dest, temp); -} - -static void emit_pack_store_4ub( struct x86_program *p, - struct x86_reg dest, - struct x86_reg temp ) -{ - /* Scale by 255.0 - */ - sse_mulps(&p->func, temp, p->chan0); - - if (p->have_sse2) { - sse2_cvtps2dq(&p->func, temp, temp); - sse2_packssdw(&p->func, temp, temp); - sse2_packuswb(&p->func, temp, temp); - sse_movss(&p->func, dest, temp); - } - else { - struct x86_reg mmx0 = x86_make_reg(file_MMX, 0); - struct x86_reg mmx1 = x86_make_reg(file_MMX, 1); - sse_cvtps2pi(&p->func, mmx0, temp); - sse_movhlps(&p->func, temp, temp); - sse_cvtps2pi(&p->func, mmx1, temp); - mmx_packssdw(&p->func, mmx0, mmx1); - mmx_packuswb(&p->func, mmx0, mmx0); - mmx_movd(&p->func, dest, mmx0); - } -} - -static GLint get_offset( const void *a, const void *b ) -{ - return (const char *)b - (const char *)a; -} - -/* Not much happens here. Eventually use this function to try and - * avoid saving/reloading the source pointers each vertex (if some of - * them can fit in registers). - */ -static void get_src_ptr( struct x86_program *p, - struct x86_reg srcREG, - struct x86_reg vfREG, - struct vf_attr *a ) -{ - struct vertex_fetch *vf = p->vf; - struct x86_reg ptr_to_src = x86_make_disp(vfREG, get_offset(vf, &a->inputptr)); - - /* Load current a[j].inputptr - */ - x86_mov(&p->func, srcREG, ptr_to_src); -} - -static void update_src_ptr( struct x86_program *p, - struct x86_reg srcREG, - struct x86_reg vfREG, - struct vf_attr *a ) -{ - if (a->inputstride) { - struct vertex_fetch *vf = p->vf; - struct x86_reg ptr_to_src = x86_make_disp(vfREG, get_offset(vf, &a->inputptr)); - - /* add a[j].inputstride (hardcoded value - could just as easily - * pull the stride value from memory each time). - */ - x86_lea(&p->func, srcREG, x86_make_disp(srcREG, a->inputstride)); - - /* save new value of a[j].inputptr - */ - x86_mov(&p->func, ptr_to_src, srcREG); - } -} - - -/* Lots of hardcoding - * - * EAX -- pointer to current output vertex - * ECX -- pointer to current attribute - * - */ -static GLboolean build_vertex_emit( struct x86_program *p ) -{ - struct vertex_fetch *vf = p->vf; - GLuint j = 0; - - struct x86_reg vertexEAX = x86_make_reg(file_REG32, reg_AX); - struct x86_reg srcECX = x86_make_reg(file_REG32, reg_CX); - struct x86_reg countEBP = x86_make_reg(file_REG32, reg_BP); - struct x86_reg vfESI = x86_make_reg(file_REG32, reg_SI); - struct x86_reg temp = x86_make_reg(file_XMM, 0); - struct x86_reg vp0 = x86_make_reg(file_XMM, 1); - struct x86_reg vp1 = x86_make_reg(file_XMM, 2); - GLubyte *fixup, *label; - - /* Push a few regs? - */ - x86_push(&p->func, countEBP); - x86_push(&p->func, vfESI); - - - /* Get vertex count, compare to zero - */ - x86_xor(&p->func, srcECX, srcECX); - x86_mov(&p->func, countEBP, x86_fn_arg(&p->func, 2)); - x86_cmp(&p->func, countEBP, srcECX); - fixup = x86_jcc_forward(&p->func, cc_E); - - /* Initialize destination register. - */ - x86_mov(&p->func, vertexEAX, x86_fn_arg(&p->func, 3)); - - /* Move argument 1 (vf) into a reg: - */ - x86_mov(&p->func, vfESI, x86_fn_arg(&p->func, 1)); - - - /* Possibly load vp0, vp1 for viewport calcs: - */ - if (vf->allow_viewport_emits) { - sse_movups(&p->func, vp0, x86_make_disp(vfESI, get_offset(vf, &vf->vp[0]))); - sse_movups(&p->func, vp1, x86_make_disp(vfESI, get_offset(vf, &vf->vp[4]))); - } - - /* always load, needed or not: - */ - sse_movups(&p->func, p->chan0, x86_make_disp(vfESI, get_offset(vf, &vf->chan_scale[0]))); - sse_movups(&p->func, p->identity, x86_make_disp(vfESI, get_offset(vf, &vf->identity[0]))); - - /* Note address for loop jump */ - label = x86_get_label(&p->func); - - /* Emit code for each of the attributes. Currently routes - * everything through SSE registers, even when it might be more - * efficient to stick with regular old x86. No optimization or - * other tricks - enough new ground to cover here just getting - * things working. - */ - while (j < vf->attr_count) { - struct vf_attr *a = &vf->attr[j]; - struct x86_reg dest = x86_make_disp(vertexEAX, a->vertoffset); - - /* Now, load an XMM reg from src, perhaps transform, then save. - * Could be shortcircuited in specific cases: - */ - switch (a->format) { - case EMIT_1F: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 1, x86_deref(srcECX), a->inputsize); - emit_store(p, dest, 1, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case EMIT_2F: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 2, x86_deref(srcECX), a->inputsize); - emit_store(p, dest, 2, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case EMIT_3F: - /* Potentially the worst case - hardcode 2+1 copying: - */ - if (0) { - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 3, x86_deref(srcECX), a->inputsize); - emit_store(p, dest, 3, temp); - update_src_ptr(p, srcECX, vfESI, a); - } - else { - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 2, x86_deref(srcECX), a->inputsize); - emit_store(p, dest, 2, temp); - if (a->inputsize > 2) { - emit_load(p, temp, 1, x86_make_disp(srcECX, 8), 1); - emit_store(p, x86_make_disp(dest,8), 1, temp); - } - else { - sse_movss(&p->func, x86_make_disp(dest,8), get_identity(p)); - } - update_src_ptr(p, srcECX, vfESI, a); - } - break; - case EMIT_4F: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize); - emit_store(p, dest, 4, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case EMIT_2F_VIEWPORT: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 2, x86_deref(srcECX), a->inputsize); - sse_mulps(&p->func, temp, vp0); - sse_addps(&p->func, temp, vp1); - emit_store(p, dest, 2, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case EMIT_3F_VIEWPORT: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 3, x86_deref(srcECX), a->inputsize); - sse_mulps(&p->func, temp, vp0); - sse_addps(&p->func, temp, vp1); - emit_store(p, dest, 3, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case EMIT_4F_VIEWPORT: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize); - sse_mulps(&p->func, temp, vp0); - sse_addps(&p->func, temp, vp1); - emit_store(p, dest, 4, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case EMIT_3F_XYW: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize); - sse_shufps(&p->func, temp, temp, SHUF(X,Y,W,Z)); - emit_store(p, dest, 3, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - - case EMIT_1UB_1F: - /* Test for PAD3 + 1UB: - */ - if (j > 0 && - a[-1].vertoffset + a[-1].vertattrsize <= a->vertoffset - 3) - { - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 1, x86_deref(srcECX), a->inputsize); - sse_shufps(&p->func, temp, temp, SHUF(X,X,X,X)); - emit_pack_store_4ub(p, x86_make_disp(dest, -3), temp); /* overkill! */ - update_src_ptr(p, srcECX, vfESI, a); - } - else { - printf("Can't emit 1ub %x %x %d\n", a->vertoffset, a[-1].vertoffset, a[-1].vertattrsize ); - return GL_FALSE; - } - break; - case EMIT_3UB_3F_RGB: - case EMIT_3UB_3F_BGR: - /* Test for 3UB + PAD1: - */ - if (j == vf->attr_count - 1 || - a[1].vertoffset >= a->vertoffset + 4) { - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 3, x86_deref(srcECX), a->inputsize); - if (a->format == EMIT_3UB_3F_BGR) - sse_shufps(&p->func, temp, temp, SHUF(Z,Y,X,W)); - emit_pack_store_4ub(p, dest, temp); - update_src_ptr(p, srcECX, vfESI, a); - } - /* Test for 3UB + 1UB: - */ - else if (j < vf->attr_count - 1 && - a[1].format == EMIT_1UB_1F && - a[1].vertoffset == a->vertoffset + 3) { - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 3, x86_deref(srcECX), a->inputsize); - update_src_ptr(p, srcECX, vfESI, a); - - /* Make room for incoming value: - */ - sse_shufps(&p->func, temp, temp, SHUF(W,X,Y,Z)); - - get_src_ptr(p, srcECX, vfESI, &a[1]); - emit_load(p, temp, 1, x86_deref(srcECX), a[1].inputsize); - update_src_ptr(p, srcECX, vfESI, &a[1]); - - /* Rearrange and possibly do BGR conversion: - */ - if (a->format == EMIT_3UB_3F_BGR) - sse_shufps(&p->func, temp, temp, SHUF(W,Z,Y,X)); - else - sse_shufps(&p->func, temp, temp, SHUF(Y,Z,W,X)); - - emit_pack_store_4ub(p, dest, temp); - j++; /* NOTE: two attrs consumed */ - } - else { - printf("Can't emit 3ub\n"); - } - return GL_FALSE; /* add this later */ - break; - - case EMIT_4UB_4F_RGBA: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize); - emit_pack_store_4ub(p, dest, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case EMIT_4UB_4F_BGRA: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize); - sse_shufps(&p->func, temp, temp, SHUF(Z,Y,X,W)); - emit_pack_store_4ub(p, dest, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case EMIT_4UB_4F_ARGB: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize); - sse_shufps(&p->func, temp, temp, SHUF(W,X,Y,Z)); - emit_pack_store_4ub(p, dest, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case EMIT_4UB_4F_ABGR: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize); - sse_shufps(&p->func, temp, temp, SHUF(W,Z,Y,X)); - emit_pack_store_4ub(p, dest, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case EMIT_4CHAN_4F_RGBA: - switch (CHAN_TYPE) { - case GL_UNSIGNED_BYTE: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize); - emit_pack_store_4ub(p, dest, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case GL_FLOAT: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize); - emit_store(p, dest, 4, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case GL_UNSIGNED_SHORT: - default: - printf("unknown CHAN_TYPE %s\n", _mesa_lookup_enum_by_nr(CHAN_TYPE)); - return GL_FALSE; - } - break; - default: - printf("unknown a[%d].format %d\n", j, a->format); - return GL_FALSE; /* catch any new opcodes */ - } - - /* Increment j by at least 1 - may have been incremented above also: - */ - j++; - } - - /* Next vertex: - */ - x86_lea(&p->func, vertexEAX, x86_make_disp(vertexEAX, vf->vertex_stride)); - - /* decr count, loop if not zero - */ - x86_dec(&p->func, countEBP); - x86_test(&p->func, countEBP, countEBP); - x86_jcc(&p->func, cc_NZ, label); - - /* Exit mmx state? - */ - if (p->func.need_emms) - mmx_emms(&p->func); - - /* Land forward jump here: - */ - x86_fixup_fwd_jump(&p->func, fixup); - - /* Pop regs and return - */ - x86_pop(&p->func, x86_get_base_reg(vfESI)); - x86_pop(&p->func, countEBP); - x86_ret(&p->func); - - vf->emit = (vf_emit_func)x86_get_func(&p->func); - return GL_TRUE; -} - - - -void vf_generate_sse_emit( struct vertex_fetch *vf ) -{ - struct x86_program p; - - if (!cpu_has_xmm) { - vf->codegen_emit = NULL; - return; - } - - memset(&p, 0, sizeof(p)); - - p.vf = vf; - p.inputs_safe = 0; /* for now */ - p.outputs_safe = 0; /* for now */ - p.have_sse2 = cpu_has_xmm2; - p.identity = x86_make_reg(file_XMM, 6); - p.chan0 = x86_make_reg(file_XMM, 7); - - x86_init_func(&p.func); - - if (build_vertex_emit(&p)) { - vf_register_fastpath( vf, GL_TRUE ); - } - else { - /* Note the failure so that we don't keep trying to codegen an - * impossible state: - */ - vf_register_fastpath( vf, GL_FALSE ); - x86_release_func(&p.func); - } -} - -#else - -void vf_generate_sse_emit( struct vertex_fetch *vf ) -{ - /* Dummy version for when USE_SSE_ASM not defined */ -} - -#endif |