diff options
author | marha <marha@users.sourceforge.net> | 2014-03-04 12:18:13 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2014-03-04 12:23:48 +0100 |
commit | 45392e4a0642880b569ea5d4a350cdc395a2c7db (patch) | |
tree | c3c2a49de903a18c3f8e1bf79684c29337ebcf7c | |
parent | 5ec0616d4e3c4c6095f4975abbe9c21e5b6af967 (diff) | |
parent | 321c01267ae1c446f1bd22b642567fcafa016c02 (diff) | |
download | vcxsrv-45392e4a0642880b569ea5d4a350cdc395a2c7db.tar.gz vcxsrv-45392e4a0642880b569ea5d4a350cdc395a2c7db.tar.bz2 vcxsrv-45392e4a0642880b569ea5d4a350cdc395a2c7db.zip |
Merge remote-tracking branch 'origin/released'
* origin/released:
libX11 libxcb mesa xserver xcb-proto xkeyboard-config git update 4 Mar 2014
Conflicts:
mesalib/src/mapi/glapi/glapi.h
mesalib/src/mapi/glapi/glthread.c
mesalib/src/mesa/drivers/dri/common/dri_util.c
mesalib/src/mesa/main/bufferobj.c
xorg-server/dix/dispatch.c
xorg-server/hw/xwin/glx/gen_gl_wrappers.py
xorg-server/hw/xwin/winmultiwindowwm.c
299 files changed, 18298 insertions, 13220 deletions
diff --git a/X11/xtrans/Xtrans.c b/X11/xtrans/Xtrans.c index 0d6ebaa78..0d6ebaa78 100755..100644 --- a/X11/xtrans/Xtrans.c +++ b/X11/xtrans/Xtrans.c diff --git a/gl/glext.h b/gl/glext.h index 7d6033e10..7ea5a0d4d 100644 --- a/gl/glext.h +++ b/gl/glext.h @@ -6,7 +6,7 @@ extern "C" { #endif /* -** Copyright (c) 2013 The Khronos Group Inc. +** Copyright (c) 2013-2014 The Khronos Group Inc. ** ** Permission is hereby granted, free of charge, to any person obtaining a ** copy of this software and/or associated documentation files (the @@ -33,7 +33,7 @@ extern "C" { ** used to make the header, and the header can be found at ** http://www.opengl.org/registry/ ** -** Khronos $Revision: 24502 $ on $Date: 2013-12-12 13:14:39 -0800 (Thu, 12 Dec 2013) $ +** Khronos $Revision: 25406 $ on $Date: 2014-02-18 16:34:26 -0800 (Tue, 18 Feb 2014) $ */ #if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) @@ -53,7 +53,7 @@ extern "C" { #define GLAPI extern #endif -#define GL_GLEXT_VERSION 20131212 +#define GL_GLEXT_VERSION 20140218 /* Generated C header for: * API: gl @@ -1485,7 +1485,7 @@ typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum atta typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val); -typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask); +typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint maskNumber, GLbitfield mask); #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); @@ -1505,7 +1505,7 @@ GLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLui GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val); -GLAPI void APIENTRY glSampleMaski (GLuint index, GLbitfield mask); +GLAPI void APIENTRY glSampleMaski (GLuint maskNumber, GLbitfield mask); #endif #endif /* GL_VERSION_3_2 */ @@ -8126,6 +8126,52 @@ GLAPI void APIENTRY glTexCoordPointervINTEL (GLint size, GLenum type, const void #endif #endif /* GL_INTEL_parallel_arrays */ +#ifndef GL_INTEL_performance_query +#define GL_INTEL_performance_query 1 +#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000 +#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001 +#define GL_PERFQUERY_WAIT_INTEL 0x83FB +#define GL_PERFQUERY_FLUSH_INTEL 0x83FA +#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9 +#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0 +#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1 +#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2 +#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3 +#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4 +#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5 +#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8 +#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9 +#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA +#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB +#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC +#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD +#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE +#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF +#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500 +typedef void (APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle); +typedef void (APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId); +typedef void (APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId); +typedef void (APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +typedef void (APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten); +typedef void (APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId); +typedef void (APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle); +GLAPI void APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle); +GLAPI void APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle); +GLAPI void APIENTRY glEndPerfQueryINTEL (GLuint queryHandle); +GLAPI void APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId); +GLAPI void APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId); +GLAPI void APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +GLAPI void APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten); +GLAPI void APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId); +GLAPI void APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +#endif +#endif /* GL_INTEL_performance_query */ + #ifndef GL_MESAX_texture_stack #define GL_MESAX_texture_stack 1 #define GL_TEXTURE_1D_STACK_MESAX 0x8759 @@ -8220,6 +8266,15 @@ GLAPI void APIENTRY glEndConditionalRenderNVX (void); #endif #endif /* GL_NVX_conditional_render */ +#ifndef GL_NVX_gpu_memory_info +#define GL_NVX_gpu_memory_info 1 +#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047 +#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048 +#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049 +#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A +#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B +#endif /* GL_NVX_gpu_memory_info */ + #ifndef GL_NV_bindless_multi_draw_indirect #define GL_NV_bindless_multi_draw_indirect 1 typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); @@ -9647,7 +9702,7 @@ typedef void (APIENTRYP PFNGLVDPAUINITNVPROC) (const void *vdpDevice, const void typedef void (APIENTRYP PFNGLVDPAUFININVPROC) (void); typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); -typedef void (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface); +typedef GLboolean (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface); typedef void (APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface); typedef void (APIENTRYP PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); typedef void (APIENTRYP PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access); @@ -9658,7 +9713,7 @@ GLAPI void APIENTRY glVDPAUInitNV (const void *vdpDevice, const void *getProcAdd GLAPI void APIENTRY glVDPAUFiniNV (void); GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); -GLAPI void APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface); +GLAPI GLboolean APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface); GLAPI void APIENTRY glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface); GLAPI void APIENTRY glVDPAUGetSurfaceivNV (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); GLAPI void APIENTRY glVDPAUSurfaceAccessNV (GLvdpauSurfaceNV surface, GLenum access); diff --git a/gl/glxext.h b/gl/glxext.h index 8c642f354..826fda5b5 100644 --- a/gl/glxext.h +++ b/gl/glxext.h @@ -6,7 +6,7 @@ extern "C" { #endif /* -** Copyright (c) 2013 The Khronos Group Inc. +** Copyright (c) 2013-2014 The Khronos Group Inc. ** ** Permission is hereby granted, free of charge, to any person obtaining a ** copy of this software and/or associated documentation files (the @@ -33,10 +33,10 @@ extern "C" { ** used to make the header, and the header can be found at ** http://www.opengl.org/registry/ ** -** Khronos $Revision: 24777 $ on $Date: 2014-01-14 14:02:32 -0800 (Tue, 14 Jan 2014) $ +** Khronos $Revision: 25407 $ on $Date: 2014-02-18 16:51:56 -0800 (Tue, 18 Feb 2014) $ */ -#define GLX_GLXEXT_VERSION 20140114 +#define GLX_GLXEXT_VERSION 20140218 /* Generated C header for: * API: glx @@ -407,6 +407,32 @@ GLXPixmap glXCreateGLXPixmapMESA (Display *dpy, XVisualInfo *visual, Pixmap pixm #endif #endif /* GLX_MESA_pixmap_colormap */ +#ifndef GLX_MESA_query_renderer +#define GLX_MESA_query_renderer 1 +#define GLX_RENDERER_VENDOR_ID_MESA 0x8183 +#define GLX_RENDERER_DEVICE_ID_MESA 0x8184 +#define GLX_RENDERER_VERSION_MESA 0x8185 +#define GLX_RENDERER_ACCELERATED_MESA 0x8186 +#define GLX_RENDERER_VIDEO_MEMORY_MESA 0x8187 +#define GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA 0x8188 +#define GLX_RENDERER_PREFERRED_PROFILE_MESA 0x8189 +#define GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA 0x818A +#define GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA 0x818B +#define GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA 0x818C +#define GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA 0x818D +#define GLX_RENDERER_ID_MESA 0x818E +typedef Bool ( *PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC) (int attribute, unsigned int *value); +typedef const char *( *PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC) (int attribute); +typedef Bool ( *PFNGLXQUERYRENDERERINTEGERMESAPROC) (Display *dpy, int screen, int renderer, int attribute, unsigned int *value); +typedef const char *( *PFNGLXQUERYRENDERERSTRINGMESAPROC) (Display *dpy, int screen, int renderer, int attribute); +#ifdef GLX_GLXEXT_PROTOTYPES +Bool glXQueryCurrentRendererIntegerMESA (int attribute, unsigned int *value); +const char *glXQueryCurrentRendererStringMESA (int attribute); +Bool glXQueryRendererIntegerMESA (Display *dpy, int screen, int renderer, int attribute, unsigned int *value); +const char *glXQueryRendererStringMESA (Display *dpy, int screen, int renderer, int attribute); +#endif +#endif /* GLX_MESA_query_renderer */ + #ifndef GLX_MESA_release_buffers #define GLX_MESA_release_buffers 1 typedef Bool ( *PFNGLXRELEASEBUFFERSMESAPROC) (Display *dpy, GLXDrawable drawable); diff --git a/gl/internal/dri_interface.h b/gl/internal/dri_interface.h index 6b9e5ecbc..0fb645dd5 100644 --- a/gl/internal/dri_interface.h +++ b/gl/internal/dri_interface.h @@ -253,6 +253,8 @@ struct __DRItexBufferExtensionRec { * __DRIdrawable, including the required texture format attribute. * * For GLX_EXT_texture_from_pixmap with AIGLX. + * + * \since 2 */ void (*setTexBuffer2)(__DRIcontext *pDRICtx, GLint target, @@ -263,6 +265,8 @@ struct __DRItexBufferExtensionRec { * need this. * * For GLX_EXT_texture_from_pixmap with AIGLX. + * + * \since 3 */ void (*releaseTexBuffer)(__DRIcontext *pDRICtx, GLint target, @@ -468,6 +472,8 @@ struct __DRIswrastLoaderExtensionRec { /** * Put image to drawable + * + * \since 2 */ void (*putImage2)(__DRIdrawable *drawable, int op, int x, int y, int width, int height, int stride, @@ -852,6 +858,8 @@ struct __DRIdri2LoaderExtensionRec { * \param driDrawable Drawable whose front-buffer is to be flushed * \param loaderPrivate Loader's private data that was previously passed * into __DRIdri2ExtensionRec::createNewDrawable + * + * \since 2 */ void (*flushFrontBuffer)(__DRIdrawable *driDrawable, void *loaderPrivate); @@ -874,6 +882,8 @@ struct __DRIdri2LoaderExtensionRec { * \c attachments. * \param loaderPrivate Loader's private data that was previously passed * into __DRIdri2ExtensionRec::createNewDrawable. + * + * \since 3 */ __DRIbuffer *(*getBuffersWithFormat)(__DRIdrawable *driDrawable, int *width, int *height, diff --git a/libX11/man/xkb/XkbGetMap.man b/libX11/man/xkb/XkbGetMap.man index b51704c74..c78d4545d 100644 --- a/libX11/man/xkb/XkbGetMap.man +++ b/libX11/man/xkb/XkbGetMap.man @@ -106,7 +106,7 @@ in are undefined), or BadImplementation (a compatible version of the Xkb extension is not available in the server). To free the returned data, use -.I XkbFreeClientMap. +.I XkbFreeKeyboard. Xkb also provides convenience functions to get partial component definitions from the diff --git a/libX11/nls/km_KH.UTF-8/Compose.pre b/libX11/nls/km_KH.UTF-8/Compose.pre index 77651d085..dc89119ae 100644 --- a/libX11/nls/km_KH.UTF-8/Compose.pre +++ b/libX11/nls/km_KH.UTF-8/Compose.pre @@ -1,6 +1,6 @@ include "X11_LOCALEDATADIR/en_US.UTF-8/Compose" -# Khmer digraphs +XCOMM Khmer digraphs <U17ff> : "ាំ" <U17fe> : "ោះ" <U17fd> : "េះ" diff --git a/libX11/nls/sr_CS.UTF-8/Compose.pre b/libX11/nls/sr_CS.UTF-8/Compose.pre index 119e23ec4..b2397f7b3 100644 --- a/libX11/nls/sr_CS.UTF-8/Compose.pre +++ b/libX11/nls/sr_CS.UTF-8/Compose.pre @@ -1,17 +1,17 @@ include "X11_LOCALEDATADIR/en_US.UTF-8/Compose" -# Serbian accented Cyrillic -# а А - U+0430, U+0410 Cyrillic_a, Cyrillic_A -# е Е - U+0435, U+0415 Cyrillic_e, Cyrillic_E -# о О - U+043E, U+041E Cyrillic_o, Cyrillic_O -# у У - U+0443, U+0423 Cyrillic_u, Cyrillic_U -# и И - U+0438, U+0418 Cyrillic_i, Cyrillic_I -# -# ̀ - U+0300 <dead_grave>, <combining_grave>, <Multi_key> <grave> -# ́ - U+0301 <dead_acute>, <Multi_key> <acute>, <Multi_key> <apostrophe>, <combining_acute> -# ̂ - U+0302 <dead_circumflex>, <Multi_key> <asciicircum> -# ̏ - U+030F <dead_diaeresis>, <dead_doubleacute> -# ̀ - kratkouzlazni, U+0300 <dead_grave>, <combining_grave>, <Multi_key> <grave> +XCOMM Serbian accented Cyrillic +XCOMM а А - U+0430, U+0410 Cyrillic_a, Cyrillic_A +XCOMM е Е - U+0435, U+0415 Cyrillic_e, Cyrillic_E +XCOMM о О - U+043E, U+041E Cyrillic_o, Cyrillic_O +XCOMM у У - U+0443, U+0423 Cyrillic_u, Cyrillic_U +XCOMM и И - U+0438, U+0418 Cyrillic_i, Cyrillic_I +XCOMM +XCOMM ̀ - U+0300 <dead_grave>, <combining_grave>, <Multi_key> <grave> +XCOMM ́ - U+0301 <dead_acute>, <Multi_key> <acute>, <Multi_key> <apostrophe>, <combining_acute> +XCOMM ̂ - U+0302 <dead_circumflex>, <Multi_key> <asciicircum> +XCOMM ̏ - U+030F <dead_diaeresis>, <dead_doubleacute> +XCOMM ̀ - kratkouzlazni, U+0300 <dead_grave>, <combining_grave>, <Multi_key> <grave> <dead_grave> <Cyrillic_a> : "а̀" <combining_grave> <Cyrillic_a> : "а̀" <Multi_key> <grave> <Cyrillic_a> : "а̀" @@ -42,7 +42,7 @@ include "X11_LOCALEDATADIR/en_US.UTF-8/Compose" <dead_grave> <Cyrillic_U> : "У̀" <combining_grave> <Cyrillic_U> : "У̀" <Multi_key> <grave> <Cyrillic_U> : "У̀" -# ́ - dugouzlazni, U+0301 <dead_acute>, <Multi_key> <acute>, <Multi_key> <apostrophe>, <combining_acute> +XCOMM ́ - dugouzlazni, U+0301 <dead_acute>, <Multi_key> <acute>, <Multi_key> <apostrophe>, <combining_acute> <dead_acute> <Cyrillic_a> : "а́" <combining_acute> <Cyrillic_a> : "а́" <Multi_key> <acute> <Cyrillic_a> : "а́" @@ -83,7 +83,7 @@ include "X11_LOCALEDATADIR/en_US.UTF-8/Compose" <combining_acute> <Cyrillic_U> : "У́" <Multi_key> <acute> <Cyrillic_U> : "У́" <Multi_key> <apostrophe> <Cyrillic_U> : "У́" -# ̂ - dugosilazni, U+0302 <dead_circumflex>, <Multi_key> <asciicircum> +XCOMM ̂ - dugosilazni, U+0302 <dead_circumflex>, <Multi_key> <asciicircum> <dead_circumflex> <Cyrillic_a> : "а̂" <Multi_key> <asciicircum> <Cyrillic_a> : "а̂" <dead_circumflex> <Cyrillic_A> : "А̂" @@ -104,8 +104,8 @@ include "X11_LOCALEDATADIR/en_US.UTF-8/Compose" <Multi_key> <asciicircum> <Cyrillic_u> : "у̂" <dead_circumflex> <Cyrillic_U> : "У̂" <Multi_key> <asciicircum> <Cyrillic_U> : "У̂" -# ̏ - kratkosilazni, U+030F <dead_diaeresis>, <dead_doubleacute> -# there's no appropriate dead_doublegrave, so we use these two dead keys +XCOMM ̏ - kratkosilazni, U+030F <dead_diaeresis>, <dead_doubleacute> +XCOMM there's no appropriate dead_doublegrave, so we use these two dead keys <dead_diaeresis> <Cyrillic_a> : "а̏" <dead_doubleacute> <Cyrillic_a> : "а̏" <dead_diaeresis> <Cyrillic_A> : "А̏" diff --git a/libX11/src/KeyBind.c b/libX11/src/KeyBind.c index a49de3d78..f64f116b8 100644 --- a/libX11/src/KeyBind.c +++ b/libX11/src/KeyBind.c @@ -48,11 +48,6 @@ in this Software without prior written authorization from The Open Group. #include <X11/keysymdef.h> #include <stdio.h> -#ifdef USE_OWN_COMPOSE -#include "imComp.h" - -#endif - #include "Xresource.h" #include "Key.h" @@ -891,73 +886,6 @@ XLookupString ( &modifiers, &symbol)) return 0; -#ifdef USE_OWN_COMPOSE - if ( status ) { - static int been_here= 0; - if ( !been_here ) { - XimCompInitTables(); - been_here = 1; - } - if ( !XimCompLegalStatus(status) ) { - status->compose_ptr = NULL; - status->chars_matched = 0; - } - if ( ((status->chars_matched>0)&&(status->compose_ptr!=NULL)) || - XimCompIsComposeKey(symbol,event->keycode,status) ) { - XimCompRtrn rtrn; - switch (XimCompProcessSym(status,symbol,&rtrn)) { - case XIM_COMP_IGNORE: - break; - case XIM_COMP_IN_PROGRESS: - if ( keysym!=NULL ) - *keysym = NoSymbol; - return 0; - case XIM_COMP_FAIL: - { - int n = 0, len= 0; - for (n=len=0;rtrn.sym[n]!=XK_VoidSymbol;n++) { - if ( nbytes-len > 0 ) { - len+= _XTranslateKeySym(event->display,rtrn.sym[n], - event->state, - buffer+len,nbytes-len); - } - } - if ( keysym!=NULL ) { - if ( n==1 ) *keysym = rtrn.sym[0]; - else *keysym = NoSymbol; - } - return len; - } - case XIM_COMP_SUCCEED: - { - int len,n = 0; - - symbol = rtrn.matchSym; - if ( keysym!=NULL ) *keysym = symbol; - if ( rtrn.str[0]!='\0' ) { - strncpy(buffer,rtrn.str,nbytes-1); - buffer[nbytes-1]= '\0'; - len = strlen(buffer); - } - else { - len = _XTranslateKeySym(event->display,symbol, - event->state, - buffer,nbytes); - } - for (n=0;rtrn.sym[n]!=XK_VoidSymbol;n++) { - if ( nbytes-len > 0 ) { - len+= _XTranslateKeySym(event->display,rtrn.sym[n], - event->state, - buffer+len,nbytes-len); - } - } - return len; - } - } - } - } -#endif - if (keysym) *keysym = symbol; /* arguable whether to use (event->state & ~modifiers) here */ diff --git a/libX11/src/Xrm.c b/libX11/src/Xrm.c index 36b71d699..74495f25f 100644 --- a/libX11/src/Xrm.c +++ b/libX11/src/Xrm.c @@ -349,7 +349,7 @@ void XrmSetDatabase( XrmDatabase database) { LockDisplay(display); - /* destroy database if set up imlicitely by XGetDefault() */ + /* destroy database if set up implicitly by XGetDefault() */ if (display->db && (display->flags & XlibDisplayDfltRMDB)) { XrmDestroyDatabase(display->db); display->flags &= ~XlibDisplayDfltRMDB; @@ -508,7 +508,7 @@ static XrmDatabase NewDatabase(void) } /* move all values from ftable to ttable, and free ftable's buckets. - * ttable is quaranteed empty to start with. + * ttable is guaranteed empty to start with. */ static void MoveValues( LTable ftable, diff --git a/libX11/src/xkb/XKBBind.c b/libX11/src/xkb/XKBBind.c index b08e9d3ba..071e02f70 100644 --- a/libX11/src/xkb/XKBBind.c +++ b/libX11/src/xkb/XKBBind.c @@ -69,11 +69,6 @@ from The Open Group. #include <X11/extensions/XKBproto.h> #include "XKBlibint.h" -#ifdef USE_OWN_COMPOSE -#define COMPOSE_NO_CONST_MEMBERS -#include "imComp.h" -#endif - #define AllMods (ShiftMask|LockMask|ControlMask| \ Mod1Mask|Mod2Mask|Mod3Mask|Mod4Mask|Mod5Mask) @@ -753,103 +748,6 @@ XLookupString(register XKeyEvent *event, } } -#ifdef USE_OWN_COMPOSE - if (status) { - static int been_here = 0; - - if (!been_here) { - XimCompInitTables(); - been_here = 1; - } - if (!XimCompLegalStatus(status)) { - status->compose_ptr = NULL; - status->chars_matched = 0; - } - if (((status->chars_matched > 0) && (status->compose_ptr != NULL)) || - XimCompIsComposeKey(*keysym, event->keycode, status)) { - XimCompRtrn rtrn; - - switch (XimCompProcessSym(status, *keysym, &rtrn)) { - case XIM_COMP_IGNORE: - break; - case XIM_COMP_IN_PROGRESS: - if (keysym != NULL) - *keysym = NoSymbol; -#ifndef NO_COMPOSE_LED - if (dpy->xkb_info->xlib_ctrls & XkbLC_ComposeLED) { - XkbSetNamedIndicator(dpy, dpy->xkb_info->composeLED, - True, True, False, NULL); - } -#endif - return 0; - case XIM_COMP_FAIL: - { - static Atom _ComposeFail = None; - int n = 0, len = 0; - -#ifndef NO_COMPOSE_LED - if (dpy->xkb_info->xlib_ctrls & XkbLC_ComposeLED) { - XkbSetNamedIndicator(dpy, dpy->xkb_info->composeLED, - True, False, False, NULL); - } -#endif -#ifndef NO_BELL_ON_COMPOSE_FAIL - if (dpy->xkb_info->xlib_ctrls & XkbLC_BeepOnComposeFail) { - if (_ComposeFail == None) - _ComposeFail = XInternAtom(dpy, "ComposeFail", 0); - XkbBell(dpy, event->window, 0, _ComposeFail); - } -#endif - for (n = len = 0; rtrn.sym[n] != XK_VoidSymbol; n++) { - if (nbytes - len > 0) { - len += XkbTranslateKeySym(dpy, &rtrn.sym[n], new_mods, - buffer + len, nbytes - len, - NULL); - } - } - if (keysym != NULL) { - if (n == 1) - *keysym = rtrn.sym[0]; - else - *keysym = NoSymbol; - } - return len; - } - case XIM_COMP_SUCCEED: - { - int len, n = 0; - -#ifndef NO_COMPOSE_LED - if (dpy->xkb_info->xlib_ctrls & XkbLC_ComposeLED) { - XkbSetNamedIndicator(dpy, dpy->xkb_info->composeLED, - True, False, False, NULL); - } -#endif - *keysym = rtrn.matchSym; - if (rtrn.str[0] != '\0') { - strncpy(buffer, rtrn.str, nbytes - 1); - buffer[nbytes - 1] = '\0'; - len = (int) strlen(buffer); - } - else { - len = XkbTranslateKeySym(dpy, keysym, new_mods, - buffer, nbytes, NULL); - } - for (n = 0; rtrn.sym[n] != XK_VoidSymbol; n++) { - if (nbytes - len > 0) { - len += XkbTranslateKeySym(dpy, &rtrn.sym[n], - event->state, - buffer + len, nbytes - len, - NULL); - } - } - return len; - } - } - } - } -#endif - /* We *should* use the new_mods (which does not contain any modifiers */ /* that were used to compute the symbol here, but pre-XKB XLookupString */ /* did not and we have to remain compatible. Sigh. */ diff --git a/libxcb/src/xcb_conn.c b/libxcb/src/xcb_conn.c index 72c4af7c2..7a4ae5646 100644 --- a/libxcb/src/xcb_conn.c +++ b/libxcb/src/xcb_conn.c @@ -395,6 +395,9 @@ void _xcb_conn_shutdown(xcb_connection_t *c, int err) /* Return connection error state. * To make thread-safe, I need a seperate static * variable for every possible error. + * has_error is the first field in xcb_connection_t, so just + * return a casted int here; checking has_error (and only + * has_error) will be safe. */ xcb_connection_t *_xcb_conn_ret_error(int err) { diff --git a/libxcb/src/xcbint.h b/libxcb/src/xcbint.h index b25f03b3e..67cf5711e 100644 --- a/libxcb/src/xcbint.h +++ b/libxcb/src/xcbint.h @@ -192,6 +192,7 @@ void _xcb_ext_destroy(xcb_connection_t *c); /* xcb_conn.c */ struct xcb_connection_t { + /* This must be the first field; see _xcb_conn_ret_error(). */ int has_error; /* constant data */ diff --git a/libxcb/xcb-proto/xcbgen/matcher.py b/libxcb/xcb-proto/xcbgen/matcher.py index 6e45b236c..bfa315eb5 100644 --- a/libxcb/xcb-proto/xcbgen/matcher.py +++ b/libxcb/xcb-proto/xcbgen/matcher.py @@ -18,10 +18,12 @@ def import_(node, module, namespace): ''' # To avoid circular import error from xcbgen import state + module.import_level = module.import_level + 1 new_file = join(namespace.dir, '%s.xml' % node.text) new_root = parse(new_file).getroot() new_namespace = state.Namespace(new_file) execute(module, new_namespace) + module.import_level = module.import_level - 1 if not module.has_import(node.text): module.add_import(node.text, new_namespace) diff --git a/libxcb/xcb-proto/xcbgen/state.py b/libxcb/xcb-proto/xcbgen/state.py index 52b8d8da7..a6ad3a11e 100644 --- a/libxcb/xcb-proto/xcbgen/state.py +++ b/libxcb/xcb-proto/xcbgen/state.py @@ -65,6 +65,8 @@ class Module(object): self.output = output self.imports = [] + self.direct_imports = [] + self.import_level = 0 self.types = {} self.events = {} self.errors = {} @@ -107,6 +109,8 @@ class Module(object): # Keeps track of what's been imported so far. def add_import(self, name, namespace): + if self.import_level == 0: + self.direct_imports.append((name, namespace.header)) self.imports.append((name, namespace.header)) def has_import(self, name): diff --git a/mesalib/configure.ac b/mesalib/configure.ac index 8bf9b9441..d54cba36d 100644 --- a/mesalib/configure.ac +++ b/mesalib/configure.ac @@ -27,7 +27,7 @@ OSMESA_VERSION=8 AC_SUBST([OSMESA_VERSION]) dnl Versions for external dependencies -LIBDRM_REQUIRED=2.4.24 +LIBDRM_REQUIRED=2.4.38 LIBDRM_RADEON_REQUIRED=2.4.50 LIBDRM_INTEL_REQUIRED=2.4.52 LIBDRM_NVVIEUX_REQUIRED=2.4.33 @@ -38,6 +38,13 @@ DRI3PROTO_REQUIRED=1.0 PRESENTPROTO_REQUIRED=1.0 LIBUDEV_REQUIRED=151 GLPROTO_REQUIRED=1.4.14 +LIBOMXIL_BELLAGIO_REQUIRED=0.0 +VDPAU_REQUIRED=0.4.1 +WAYLAND_REQUIRED=1.2.0 +XCBDRI2_REQUIRED=1.8 +XCBGLX_REQUIRED=1.8.1 +XSHMFENCE_REQUIRED=1.1 +XVMC_REQUIRED=1.0.6 dnl Check for progs AC_PROG_CPP @@ -119,6 +126,11 @@ if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then GEN_ASM_OFFSETS=yes fi fi + +dnl Check for compiler builtins +AX_GCC_BUILTIN([__builtin_bswap32]) +AX_GCC_BUILTIN([__builtin_bswap64]) + AM_CONDITIONAL([GEN_ASM_OFFSETS], test "x$GEN_ASM_OFFSETS" = xyes) dnl Make sure the pkg-config macros are defined @@ -506,13 +518,15 @@ AC_ARG_ENABLE([selinux], [MESA_SELINUX="$enableval"], [MESA_SELINUX=no]) if test "x$enable_selinux" = "xyes"; then - AC_CHECK_HEADER([selinux/selinux.h],[], - [AC_MSG_ERROR([SELinux headers not found])]) - AC_CHECK_LIB([selinux],[is_selinux_enabled],[], - [AC_MSG_ERROR([SELinux library not found])]) - SELINUX_LIBS="-lselinux" + PKG_CHECK_MODULES([SELINUX], [libselinux], [], + [AC_CHECK_HEADER([selinux/selinux.h],[], + [AC_MSG_ERROR([SELinux headers not found])]) + AC_CHECK_LIB([selinux],[is_selinux_enabled],[], + [AC_MSG_ERROR([SELinux library not found])]) + SELINUX_LIBS="-lselinux"]) DEFINES="$DEFINES -DMESA_SELINUX" fi +AC_SUBST([SELINUX_CFLAGS]) AC_SUBST([SELINUX_LIBS]) dnl Options for APIs @@ -725,11 +739,20 @@ AC_ARG_ENABLE([shared-glapi], [AS_HELP_STRING([--enable-shared-glapi], [Enable shared glapi for OpenGL @<:@default=yes@:>@])], [enable_shared_glapi="$enableval"], - [enable_shared_glapi="$enable_dri"]) + [enable_shared_glapi=yes]) -# Shared GLAPI is only useful for DRI -if test "x$enable_dri" = xno; then - AC_MSG_NOTICE([Shared GLAPI is only useful for DRI, disabling]) +case "x$enable_opengl$enable_gles1$enable_gles2" in +x*yes*yes*) + if test "x$enable_shared_glapi" = xno; then + AC_MSG_ERROR([shared GLAPI required when building two or more of + the following APIs - opengl, gles1 gles2]) + fi + ;; +esac + +# Building Xlib-GLX requires shared glapi to be disabled. +if test "x$enable_xlib_glx" = xyes; then + AC_MSG_NOTICE([Shared GLAPI should not used with Xlib-GLX, disabling]) enable_shared_glapi=no fi @@ -845,10 +868,10 @@ xyesno) fi # find the DRI deps for libGL - dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx >= 1.8.1 xcb-dri2 >= 1.8" + dri_modules="x11 xext xdamage xfixes x11-xcb xcb-glx >= $XCBGLX_REQUIRED xcb-dri2 >= $XCBDRI2_REQUIRED" if test x"$enable_dri3" = xyes; then - dri_modules="$dri_modules xcb-dri3 xcb-present xcb-sync xshmfence >= 1.1" + dri_modules="$dri_modules xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED" fi # add xf86vidmode if available @@ -862,11 +885,6 @@ xyesno) X11_INCLUDES="$X11_INCLUDES $DRIGL_CFLAGS" GL_LIB_DEPS="$DRIGL_LIBS" - if test x"$enable_dri3$have_libudev" = xyesyes; then - X11_INCLUDES="$X11_INCLUDES $LIBUDEV_CFLAGS" - GL_LIB_DEPS="$GL_LIB_DEPS" - fi - # need DRM libs, $PTHREAD_LIBS, etc. GL_LIB_DEPS="$GL_LIB_DEPS $LIBDRM_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS" GL_PC_LIB_PRIV="-lm $PTHREAD_LIBS $DLOPEN_LIBS" @@ -948,40 +966,24 @@ AC_SUBST([DRI_DRIVER_SEARCH_DIR]) dnl Which drivers to build - default is chosen by platform AC_ARG_WITH([dri-drivers], [AS_HELP_STRING([--with-dri-drivers@<:@=DIRS...@:>@], - [comma delimited DRI drivers list, e.g. + [comma delimited classic DRI drivers list, e.g. "swrast,i965,radeon" @<:@default=auto@:>@])], [with_dri_drivers="$withval"], - [with_dri_drivers=yes]) -if test "x$with_dri_drivers" = x; then - with_dri_drivers=no -fi - -dnl If $with_dri_drivers is yes, directories will be added through -dnl platform checks -DRI_DIRS="" -case "$with_dri_drivers" in -no) ;; -yes) - # classic DRI drivers - if test "x$enable_opengl" = xyes; then - DRI_DIRS="yes" - fi - ;; -*) - # verify the requested driver directories exist - dri_drivers=`IFS=', '; echo $with_dri_drivers` - for driver in $dri_drivers; do - test -d "$srcdir/src/mesa/drivers/dri/$driver" || \ - AC_MSG_ERROR([DRI driver directory '$driver' does not exist]) - done - DRI_DIRS="$dri_drivers" - if test -n "$DRI_DIRS" -a "x$enable_opengl" != xyes; then - AC_MSG_ERROR([--with-dri-drivers requires OpenGL]) + [with_dri_drivers=auto]) + +if test "x$with_dri_drivers" = xauto; then + if test "x$enable_opengl" = xyes -a "x$enable_dri" = xyes; then + with_dri_drivers="yes" + else + with_dri_drivers="no" fi - ;; -esac +fi +if test "x$with_dri_drivers" = xno; then + with_dri_drivers='' +fi -dnl Set DRI_DIRS, DEFINES and LIB_DEPS +dnl If $with_dri_drivers is yes, drivers will be added through +dnl platform checks. Set DEFINES and LIB_DEPS if test "x$enable_dri" = xyes; then # Platform specific settings and drivers to build case "$host_os" in @@ -993,21 +995,10 @@ if test "x$enable_dri" = xyes; then fi case "$host_cpu" in - x86_64|amd64) - if test "x$DRI_DIRS" = "xyes"; then - DRI_DIRS="i915 i965 nouveau r200 radeon swrast" - fi - ;; - powerpc*) - # Build only the drivers for cards that exist on PowerPC. - if test "x$DRI_DIRS" = "xyes"; then - DRI_DIRS="r200 radeon swrast" - fi - ;; - sparc*) - # Build only the drivers for cards that exist on sparc - if test "x$DRI_DIRS" = "xyes"; then - DRI_DIRS="r200 radeon swrast" + powerpc* | sparc*) + # Build only the drivers for cards that exist on PowerPC/sparc + if test "x$with_dri_drivers" = "xyes"; then + with_dri_drivers="r200 radeon swrast" fi ;; esac @@ -1015,10 +1006,6 @@ if test "x$enable_dri" = xyes; then *freebsd* | dragonfly* | *netbsd* | openbsd*) DEFINES="$DEFINES -DHAVE_PTHREAD -DUSE_EXTERNAL_DXTN_LIB=1" DEFINES="$DEFINES -DHAVE_ALIAS" - - if test "x$DRI_DIRS" = "xyes"; then - DRI_DIRS="i915 i965 nouveau r200 radeon swrast" - fi ;; gnu*) DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1" @@ -1029,19 +1016,17 @@ if test "x$enable_dri" = xyes; then ;; cygwin*) DEFINES="$DEFINES -DUSE_EXTERNAL_DXTN_LIB=1" - if test "x$DRI_DIRS" = "xyes"; then - DRI_DIRS="swrast" + if test "x$with_dri_drivers" = "xyes"; then + with_dri_drivers="swrast" fi ;; esac # default drivers - if test "x$DRI_DIRS" = "xyes"; then - DRI_DIRS="i915 i965 nouveau r200 radeon swrast" + if test "x$with_dri_drivers" = "xyes"; then + with_dri_drivers="i915 i965 nouveau r200 radeon swrast" fi - DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'` - # Check for expat PKG_CHECK_EXISTS([EXPAT], [have_expat=yes], [have_expat=no]) if test "x$have_expat" = "xyes"; then @@ -1053,8 +1038,8 @@ if test "x$enable_dri" = xyes; then fi # If we are building any DRI driver other than swrast. - if test -n "$DRI_DIRS"; then - if test x"$DRI_DIRS" != xswrast; then + if test -n "$with_dri_drivers"; then + if test "x$with_dri_drivers" != xswrast; then # ... libdrm is required if test "x$have_libdrm" != xyes; then AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED]) @@ -1071,61 +1056,55 @@ if test "x$enable_dri" = xyes; then fi -AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS") -AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \ - "x$enable_osmesa" = xyes -o \ - -n "$DRI_DIRS") AC_SUBST([DRI_LIB_DEPS]) AC_SUBST([GALLIUM_DRI_LIB_DEPS]) -case $DRI_DIRS in -*i915*|*i965*) - PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) +DRI_DIRS='' +dnl Duplicates in DRI_DIRS are removed by sorting it at the end of this block +if test -n "$with_dri_drivers"; then + if test "x$enable_opengl" != xyes; then + AC_MSG_ERROR([--with-dri-drivers requires OpenGL]) + fi - for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do - case $d in - i915) + dri_drivers=`IFS=', '; echo $with_dri_drivers` + for driver in $dri_drivers; do + DRI_DIRS+="$driver " + case "x$driver" in + xi915) HAVE_I915_DRI=yes; + PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) ;; - i965) + xi965) HAVE_I965_DRI=yes; + PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) ;; - esac - done - - ;; -esac - -case $DRI_DIRS in -*nouveau*) - PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED]) - HAVE_NOUVEAU_DRI=yes; - ;; -esac - -case $DRI_DIRS in -*radeon*|*r200*) - PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED]) - - for d in $(echo $DRI_DIRS | sed 's/,/ /g'); do - case $d in - radeon) + xnouveau) + HAVE_NOUVEAU_DRI=yes; + PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED]) + ;; + xradeon) HAVE_RADEON_DRI=yes; + PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED]) ;; - r200) + xr200) HAVE_R200_DRI=yes; + PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED]) + ;; + xswrast) + HAVE_SWRAST_DRI=yes; + ;; + *) + AC_MSG_ERROR([classic DRI driver '$driver' does not exist]) ;; esac done + DRI_DIRS=`echo $DRI_DIRS|tr " " "\n"|sort -u|tr "\n" " "` +fi - ;; -esac - -case $DRI_DIRS in -*swrast*) - HAVE_SWRAST_DRI=yes; - ;; -esac +AM_CONDITIONAL(NEED_MEGADRIVER, test -n "$DRI_DIRS") +AM_CONDITIONAL(NEED_LIBMESA, test "x$enable_xlib_glx" = xyes -o \ + "x$enable_osmesa" = xyes -o \ + -n "$DRI_DIRS") dnl dnl OSMesa configuration @@ -1185,7 +1164,7 @@ if test "x$enable_gbm" = xauto; then fi if test "x$enable_gbm" = xyes; then if test x"$have_libudev" != xyes; then - AC_MSG_ERROR([gbm needs udev]) + AC_MSG_ERROR([gbm requires udev >= $LIBUDEV_REQUIRED]) fi if test "x$enable_dri" = xyes; then @@ -1196,7 +1175,7 @@ if test "x$enable_gbm" = xyes; then fi fi AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes) -GBM_PC_REQ_PRIV="libudev" +GBM_PC_REQ_PRIV="libudev >= $LIBUDEV_REQUIRED" GBM_PC_LIB_PRIV="$DLOPEN_LIBS" AC_SUBST([GBM_PC_REQ_PRIV]) AC_SUBST([GBM_PC_LIB_PRIV]) @@ -1225,7 +1204,7 @@ dnl dnl EGL Gallium configuration dnl if test "x$enable_gallium_egl" = xyes; then - if test "x$with_gallium_drivers" = x; then + if test -z "$with_gallium_drivers"; then AC_MSG_ERROR([cannot enable egl_gallium without Gallium]) fi if test "x$enable_egl" = xno; then @@ -1252,7 +1231,7 @@ if test "x$enable_gallium_gbm" = xauto; then esac fi if test "x$enable_gallium_gbm" = xyes; then - if test "x$with_gallium_drivers" = x; then + if test -z "$with_gallium_drivers"; then AC_MSG_ERROR([cannot enable gbm_gallium without Gallium]) fi if test "x$enable_gbm" = xno; then @@ -1273,7 +1252,16 @@ dnl dnl XA configuration dnl if test "x$enable_xa" = xyes; then + if test "x$with_gallium_drivers" = xswrast; then + AC_MSG_ERROR([ + Building xa requires at least one non swrast gallium driver. + If you are looking to use libxatracker.so with vmware's virtual gpu, + make sure to include svga in the gallium drivers list, apart from + enabling XA. + Example: ./configure --enable-xa --with-gallium-drivers=svga...]) + fi GALLIUM_STATE_TRACKERS_DIRS="xa $GALLIUM_STATE_TRACKERS_DIRS" + enable_gallium_loader=yes fi AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes) @@ -1286,7 +1274,7 @@ if test "x$enable_openvg" = xyes; then if test "x$enable_egl" = xno; then AC_MSG_ERROR([cannot enable OpenVG without EGL]) fi - if test "x$with_gallium_drivers" = x; then + if test -z "$with_gallium_drivers"; then AC_MSG_ERROR([cannot enable OpenVG without Gallium]) fi if test "x$enable_gallium_egl" = xno; then @@ -1319,19 +1307,20 @@ if test -n "$with_gallium_drivers"; then fi if test "x$enable_xvmc" = xyes; then - PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 x11-xcb xcb-dri2 >= 1.8]) + PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED]) GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc" fi AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes) if test "x$enable_vdpau" = xyes; then - PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1 x11-xcb xcb-dri2 >= 1.8]) + PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED], + [VDPAU_LIBS="`$PKG_CONFIG --libs x11-xcb xcb-dri2`"]) GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau" fi AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes) if test "x$enable_omx" = xyes; then - PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= 0.0 x11-xcb xcb-dri2 >= 1.8]) + PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED]) GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS omx" fi AM_CONDITIONAL(HAVE_ST_OMX, test "x$enable_omx" = xyes) @@ -1344,9 +1333,9 @@ AC_ARG_WITH([libclc-path], [AS_HELP_STRING([--with-libclc-path], [DEPRECATED: See http://dri.freedesktop.org/wiki/GalliumCompute#How_to_Install])], [LIBCLC_PATH="$withval"], - [LIBCLC_PATH=""]) + [LIBCLC_PATH='']) -if test "x$LIBCLC_PATH" != x; then +if test -n "$LIBCLC_PATH"; then AC_MSG_ERROR([The --with-libclc-path option has been deprecated. Please review the updated build instructions for clover: http://dri.freedesktop.org/wiki/GalliumCompute]) @@ -1357,12 +1346,12 @@ AC_ARG_WITH([clang-libdir], [AS_HELP_STRING([--with-clang-libdir], [Path to Clang libraries @<:@default=llvm-config --libdir@:>@])], [CLANG_LIBDIR="$withval"], - [CLANG_LIBDIR=""]) + [CLANG_LIBDIR='']) PKG_CHECK_EXISTS([libclc], [have_libclc=yes], [have_libclc=no]) if test "x$enable_opencl" = xyes; then - if test "x$with_gallium_drivers" = x; then + if test -z "$with_gallium_drivers"; then AC_MSG_ERROR([cannot enable OpenCL without Gallium]) fi @@ -1444,7 +1433,7 @@ egl_platforms=`IFS=', '; echo $with_egl_platforms` for plat in $egl_platforms; do case "$plat" in wayland) - PKG_CHECK_MODULES([WAYLAND], [wayland-client >= 1.2.0 wayland-server >= 1.2.0]) + PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED]) GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland" WAYLAND_PREFIX=`$PKG_CONFIG --variable=prefix wayland-client` @@ -1453,7 +1442,7 @@ for plat in $egl_platforms; do ;; x11) - PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 >= 1.8 xcb-xfixes]) + PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 >= $XCBDRI2_REQUIRED xcb-xfixes]) ;; drm) @@ -1473,7 +1462,7 @@ for plat in $egl_platforms; do case "$plat$have_libudev" in waylandno|drmno) - AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;; + AC_MSG_ERROR([cannot build $plat platform without udev >= $LIBUDEV_REQUIRED]) ;; esac done @@ -1487,6 +1476,7 @@ else fi if echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1; then + GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib" NEED_WINSYS_XLIB=yes fi AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1) @@ -1538,17 +1528,17 @@ AC_ARG_ENABLE([gallium-llvm], [enable_gallium_llvm="$enableval"], [enable_gallium_llvm=auto]) -AC_ARG_WITH([llvm-shared-libs], - [AS_HELP_STRING([--with-llvm-shared-libs], - [link with LLVM shared libraries @<:@default=disabled@:>@])], +AC_ARG_ENABLE([llvm-shared-libs], + [AS_HELP_STRING([--enable-llvm-shared-libs], + [link with LLVM shared libraries @<:@default=enabled@:>@])], [], - [with_llvm_shared_libs=no]) + [with_llvm_shared_libs=yes]) AC_ARG_WITH([llvm-prefix], [AS_HELP_STRING([--with-llvm-prefix], [Prefix for LLVM installations in non-standard locations])], [llvm_prefix="$withval"], - [llvm_prefix=""]) + [llvm_prefix='']) # Call this inside ` ` to get the return value. @@ -1562,12 +1552,19 @@ strip_unwanted_llvm_flags() { -e 's/-O.\>//g' \ -e 's/-g\>//g' \ -e 's/-Wall\>//g' \ + -e 's/-Wcast-qual\>//g' \ + -e 's/-Woverloaded-virtual\>//g' \ -e 's/-fcolor-diagnostics\>//g' \ - -e 's/-fomit-frame-pointer\>//g' + -e 's/-fdata-sections\>//g' \ + -e 's/-ffunction-sections\>//g' \ + -e 's/-fno-exceptions\>//g' \ + -e 's/-fomit-frame-pointer\>//g' \ + -e 's/-fvisibility-inlines-hidden\>//g' \ + -e 's/-fPIC\>//g' } -if test "x$with_gallium_drivers" = x; then +if test -z "$with_gallium_drivers"; then enable_gallium_llvm=no fi if test "x$enable_gallium_llvm" = xauto; then @@ -1576,7 +1573,7 @@ if test "x$enable_gallium_llvm" = xauto; then esac fi if test "x$enable_gallium_llvm" = xyes; then - if test "x$llvm_prefix" != x; then + if test -n "$llvm_prefix"; then AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"]) else AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no]) @@ -1591,13 +1588,14 @@ if test "x$enable_gallium_llvm" = xyes; then LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"` LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir` LLVM_LIBDIR=`$LLVM_CONFIG --libdir` + LLVM_LDFLAGS="-Wl,-rpath,$LLVM_LIBDIR $LLVM_LDFLAGS" AC_COMPUTE_INT([LLVM_VERSION_MAJOR], [LLVM_VERSION_MAJOR], [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"]) AC_COMPUTE_INT([LLVM_VERSION_MINOR], [LLVM_VERSION_MINOR], [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"]) - if test "x${LLVM_VERSION_MAJOR}" != x; then + if test -n "${LLVM_VERSION_MAJOR}"; then LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}" else LLVM_VERSION_INT=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/\10\2/g'` @@ -1624,7 +1622,7 @@ if test "x$enable_gallium_llvm" = xyes; then dnl Check for Clang internal headers if test "x$enable_opencl" = xyes; then - if test "x$CLANG_LIBDIR" = x; then + if test -z "$CLANG_LIBDIR"; then CLANG_LIBDIR=${LLVM_LIBDIR} fi CLANG_RESOURCE_DIR=$CLANG_LIBDIR/clang/${LLVM_VERSION} @@ -1694,20 +1692,20 @@ gallium_check_st() { fi GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS $1" fi - if test "x$enable_dri" = xyes && test "x$2" != x; then + if test "x$enable_dri" = xyes && test -n "$2"; then GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $2" fi - if test "x$enable_xa" = xyes && test "x$3" != x; then + if test "x$enable_xa" = xyes && test -n "$3"; then GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $3" fi - if test "x$enable_xvmc" = xyes && test "x$4" != x; then + if test "x$enable_xvmc" = xyes && test -n "$4"; then GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $4" fi - if test "x$enable_vdpau" = xyes && test "x$5" != x; then + if test "x$enable_vdpau" = xyes && test -n "$5"; then GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5" fi if test "x$enable_omx" = xyes && test "x$6" != x; then - GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7" + GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6" fi } @@ -1721,8 +1719,9 @@ gallium_require_llvm() { gallium_require_drm_loader() { if test "x$enable_gallium_loader" = xyes; then - PKG_CHECK_MODULES([LIBUDEV], [libudev], [], - AC_MSG_ERROR([Gallium drm loader requires libudev])) + if test "x$have_libudev" != xyes; then + AC_MSG_ERROR([Gallium drm loader requires libudev >= $LIBUDEV_REQUIRED]) + fi if test "x$have_libdrm" != xyes; then AC_MSG_ERROR([Gallium drm loader requires libdrm >= $LIBDRM_REQUIRED]) fi @@ -1731,10 +1730,13 @@ gallium_require_drm_loader() { } radeon_llvm_check() { + if test "x$enable_gallium_llvm" != "xyes"; then + AC_MSG_ERROR([--enable-gallium-llvm is required when building $1]) + fi LLVM_REQUIRED_VERSION_MAJOR="3" LLVM_REQUIRED_VERSION_MINOR="3" if test "$LLVM_VERSION_INT" -lt "${LLVM_REQUIRED_VERSION_MAJOR}0${LLVM_REQUIRED_VERSION_MINOR}"; then - AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer is required for r600g and radeonsi.]) + AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer is required for $1]) fi if test true && $LLVM_CONFIG --targets-built | grep -qvw 'R600' ; then AC_MSG_ERROR([LLVM R600 Target not enabled. You can enable it when building the LLVM @@ -1744,7 +1746,7 @@ radeon_llvm_check() { LLVM_COMPONENTS="${LLVM_COMPONENTS} r600 bitreader ipo" NEED_RADEON_LLVM=yes AC_CHECK_LIB([elf], [elf_memory], [ELF_LIB=-lelf], - [AC_MSG_ERROR([radeonsi and r600g require libelf when using LLVM])]) + [AC_MSG_ERROR([$1 requires libelf when using LLVM])]) } dnl Gallium drivers @@ -1755,18 +1757,20 @@ fi AM_CONDITIONAL(NEED_NONNULL_WINSYS, test "x$NEED_NONNULL_WINSYS" = xyes) dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block -if test "x$with_gallium_drivers" != x; then +if test -n "$with_gallium_drivers"; then gallium_drivers=`IFS=', '; echo $with_gallium_drivers` for driver in $gallium_drivers; do case "x$driver" in xsvga) HAVE_GALLIUM_SVGA=yes GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS svga softpipe" - gallium_check_st "svga/drm" "dri-vmwgfx" "xa-vmwgfx" + gallium_require_drm_loader + gallium_check_st "svga/drm" "dri-vmwgfx" "" ;; xi915) HAVE_GALLIUM_I915=yes PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) + gallium_require_drm_loader GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS i915 softpipe" if test "x$MESA_LLVM" = x1; then GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe" @@ -1786,6 +1790,7 @@ if test "x$with_gallium_drivers" != x; then xr300) HAVE_GALLIUM_R300=yes PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED]) + gallium_require_drm_loader gallium_require_llvm "Gallium R300" GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300" gallium_check_st "radeon/drm" "r300/dri" "" "" "" @@ -1797,7 +1802,7 @@ if test "x$with_gallium_drivers" != x; then gallium_require_drm_loader GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600" if test "x$enable_r600_llvm" = xyes -o "x$enable_opencl" = xyes; then - radeon_llvm_check + radeon_llvm_check "r600g" LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser" fi if test "x$enable_r600_llvm" = xyes; then @@ -1814,7 +1819,7 @@ if test "x$with_gallium_drivers" != x; then PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED]) gallium_require_drm_loader GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi" - radeon_llvm_check + radeon_llvm_check "radeonsi" gallium_check_st "radeon/drm" "radeonsi/dri" "" "" "radeonsi/vdpau" "radeonsi/omx" DRICOMMON_NEED_LIBDRM=yes ;; @@ -1914,22 +1919,39 @@ AM_CONDITIONAL(NEED_GALLIUM_LLVMPIPE_DRIVER, test "x$HAVE_GALLIUM_I915" = xyes - "x$HAVE_GALLIUM_SOFTPIPE" = xyes \ && test "x$MESA_LLVM" = x1) +# NOTE: anything using xcb or other client side libs ends up in separate +# _CLIENT variables. The pipe loader is built in two variants, +# one that is standalone and does not link any x client libs (for +# use by XA tracker in particular, but could be used in any case +# where communication with xserver is not desired). if test "x$enable_gallium_loader" = xyes; then GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null" + if test "x$enable_gallium_xlib_loader" = xyes; then + GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/xlib" + NEED_WINSYS_XLIB="yes" + GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB" + fi + if test "x$enable_gallium_drm_loader" = xyes; then GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM" PKG_CHECK_MODULES([GALLIUM_PIPE_LOADER_XCB], [xcb xcb-dri2], pipe_loader_have_xcb=yes, pipe_loader_have_xcb=no) if test "x$pipe_loader_have_xcb" = xyes; then - GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XCB" - GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS" + GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES -DHAVE_PIPE_LOADER_XCB" + GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_XCB_LIBS $LIBDRM_LIBS" fi fi + GALLIUM_PIPE_LOADER_CLIENT_DEFINES="$GALLIUM_PIPE_LOADER_CLIENT_DEFINES $GALLIUM_PIPE_LOADER_DEFINES" + GALLIUM_PIPE_LOADER_CLIENT_LIBS="$GALLIUM_PIPE_LOADER_CLIENT_LIBS $GALLIUM_PIPE_LOADER_LIBS" + AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES]) AC_SUBST([GALLIUM_PIPE_LOADER_LIBS]) + AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_DEFINES]) + AC_SUBST([GALLIUM_PIPE_LOADER_CLIENT_LIBS]) fi +AM_CONDITIONAL(NEED_PIPE_LOADER_XLIB, test "x$enable_gallium_xlib_loader" = xyes) AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes) AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes) @@ -1971,7 +1993,7 @@ AC_SUBST([XVMC_MAJOR], 1) AC_SUBST([XVMC_MINOR], 0) AC_SUBST([XA_MAJOR], 2) -AC_SUBST([XA_MINOR], 1) +AC_SUBST([XA_MINOR], 2) AC_SUBST([XA_TINY], 0) AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY") @@ -2028,8 +2050,8 @@ AC_CONFIG_FILES([Makefile src/gallium/state_trackers/egl/Makefile src/gallium/state_trackers/gbm/Makefile src/gallium/state_trackers/glx/xlib/Makefile - src/gallium/state_trackers/osmesa/Makefile src/gallium/state_trackers/omx/Makefile + src/gallium/state_trackers/osmesa/Makefile src/gallium/state_trackers/vdpau/Makefile src/gallium/state_trackers/vega/Makefile src/gallium/state_trackers/xa/Makefile @@ -2044,6 +2066,8 @@ AC_CONFIG_FILES([Makefile src/gallium/targets/egl-static/Makefile src/gallium/targets/gbm/Makefile src/gallium/targets/opencl/Makefile + src/gallium/targets/xa/Makefile + src/gallium/targets/xa/xatracker.pc src/gallium/targets/osmesa/Makefile src/gallium/targets/osmesa/osmesa.pc src/gallium/targets/pipe-loader/Makefile @@ -2057,8 +2081,6 @@ AC_CONFIG_FILES([Makefile src/gallium/targets/r600/xvmc/Makefile src/gallium/targets/libgl-xlib/Makefile src/gallium/targets/vdpau-nouveau/Makefile - src/gallium/targets/xa-vmwgfx/Makefile - src/gallium/targets/xa-vmwgfx/xatracker.pc src/gallium/targets/xvmc-nouveau/Makefile src/gallium/tests/trivial/Makefile src/gallium/tests/unit/Makefile @@ -2150,12 +2172,10 @@ xnono) esac if test "x$enable_dri" != xno; then - # cleanup the drivers var - dri_dirs=`echo $DRI_DIRS | $SED 's/^ *//;s/ */ /;s/ *$//'` - if test "x$DRI_DIRS" = x; then + if test -z "$DRI_DIRS"; then echo " DRI drivers: no" else - echo " DRI drivers: $dri_dirs" + echo " DRI drivers: $DRI_DIRS" fi echo " DRI driver dir: $DRI_DRIVER_INSTALL_DIR" fi diff --git a/mesalib/docs/GL3.txt b/mesalib/docs/GL3.txt index 09c8caa28..755a89c0f 100644 --- a/mesalib/docs/GL3.txt +++ b/mesalib/docs/GL3.txt @@ -30,7 +30,7 @@ GL 3.0 --- all DONE: i965, nv50, nvc0, r600, radeonsi GL_EXT_texture_shared_exponent DONE (swrast) Float depth buffers (GL_ARB_depth_buffer_float) DONE () Framebuffer objects (GL_ARB_framebuffer_object) DONE (r300, swrast) - GL_ARB_half_float_pixel DONE (r300, swrast) + GL_ARB_half_float_pixel DONE (all drivers) GL_ARB_half_float_vertex DONE (r300, swrast) GL_EXT_texture_integer DONE () GL_EXT_texture_array DONE () @@ -105,9 +105,9 @@ GL 4.0: GL_ARB_sample_shading DONE (i965) GL_ARB_shader_subroutine not started GL_ARB_tessellation_shader not started - GL_ARB_texture_buffer_object_rgb32 DONE (i965, r600, radeonsi, softpipe) - GL_ARB_texture_cube_map_array DONE (i965, nvc0, r600, softpipe) - GL_ARB_texture_gather DONE (i965) + GL_ARB_texture_buffer_object_rgb32 DONE (i965, nvc0, r600, radeonsi, softpipe) + GL_ARB_texture_cube_map_array DONE (i965, nv50, nvc0, r600, softpipe) + GL_ARB_texture_gather DONE (i965, nv50) GL_ARB_transform_feedback2 DONE (i965, nv50, nvc0, r600, radeonsi) GL_ARB_transform_feedback3 DONE (i965, nv50, nvc0, r600, radeonsi) @@ -120,7 +120,7 @@ GL 4.1: GL_ARB_separate_shader_objects started (Ian Romanick, Gregory Hainaut) GL_ARB_shader_precision not started GL_ARB_vertex_attrib_64bit not started - GL_ARB_viewport_array DONE (i965) + GL_ARB_viewport_array DONE (i965, nv50, r600) GL 4.2: @@ -170,7 +170,7 @@ GL 4.4: GLSL 4.4 not started GL_MAX_VERTEX_ATTRIB_STRIDE not started - GL_ARB_buffer_storage not started + GL_ARB_buffer_storage DONE (r300, r600, radeonsi) GL_ARB_clear_texture not started GL_ARB_enhanced_layouts not started GL_ARB_multi_bind started (Fredrik Höglund) diff --git a/mesalib/docs/README.VCE b/mesalib/docs/README.VCE new file mode 100644 index 000000000..d4b4cc5a1 --- /dev/null +++ b/mesalib/docs/README.VCE @@ -0,0 +1,43 @@ +The software may implement third party technologies (e.g. third party +libraries) that are not licensed to you by AMD and for which you may need +to obtain licenses from other parties. Unless explicitly stated otherwise, +these third party technologies are not licensed hereunder. Such third +party technologies include, but are not limited, to H.264, MPEG-2, MPEG-4, +AVC, and VC-1. + +For MPEG-2 Intermediate Products: ANY USE OF THIS PRODUCT IN ANY MANNER OTHER +THAN PERSONAL USE THAT COMPLIES WITH THE MPEG-2 STANDARD IS EXPRESSLY +PROHIBITED WITHOUT A LICENSE UNDER APPLICABLE PATENTS IN THE MPEG-2 PATENT +PORTFOLIO, WHICH LICENSES IS AVAILABLE FROM MPEG LA, LLC, 6312 S. Fiddlers +Green Circle, Suite 400E, Greenwood Village, Colorado 80111 U.S.A. + +WARRANTY DISCLAIMER: THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY +KIND. AMD DISCLAIMS ALL WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE, TITLE, NON-INFRINGEMENT, THAT THE SOFTWARE WILL RUN +UNINTERRUPTED OR ERROR-FREE OR WARRANTIES ARISING FROM CUSTOM OF TRADE OR +COURSE OF USAGE. THE ENTIRE RISK ASSOCIATED WITH THE USE OF THE SOFTWARE IS +ASSUMED BY YOU. Some jurisdictions do not allow the exclusion of implied +warranties, so the above exclusion may not apply to You. + +LIMITATION OF LIABILITY AND INDEMNIFICATION: AMD AND ITS LICENSORS WILL NOT, +UNDER ANY CIRCUMSTANCES BE LIABLE FOR ANY PUNITIVE, DIRECT, INCIDENTAL, +INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM USE OF THE SOFTWARE OR +THIS AGREEMENT EVEN IF AMD AND ITS LICENSORS HAVE BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. In no event shall AMD's total liability to You +for all damages, losses, and causes of action (whether in contract, tort +(including negligence) or otherwise) exceed the amount of $100 USD. You agree +to defend, indemnify and hold harmless AMD and its licensors, and any of their +directors, officers, employees, affiliates or agents from and against any and +all loss, damage, liability and other expenses (including reasonable +attorneys' fees), resulting from Your use of the Software or violation of the +terms and conditions of this Agreement. + +U.S. GOVERNMENT RESTRICTED RIGHTS: The Software is provided with "RESTRICTED +RIGHTS." Use, duplication, or disclosure by the Government is subject to the +restrictions as set forth in FAR 52.227-14 and DFAR252.227-7013, et seq., or +its successor. Use of the Software by the Government constitutes +acknowledgement of AMD's proprietary rights in them. + +EXPORT RESTRICTIONS: The Software may be subject to export restrictions as +stated in the Software License Agreement. diff --git a/mesalib/docs/relnotes/10.1.html b/mesalib/docs/relnotes/10.1.html index c9566adfc..8626b65fd 100644 --- a/mesalib/docs/relnotes/10.1.html +++ b/mesalib/docs/relnotes/10.1.html @@ -44,6 +44,7 @@ Note: some of the new features are only available with certain drivers. </p> <ul> +<li>GL_ARB_buffer_storage on r300, r600, and radeonsi</li> <li>GL_ARB_draw_indirect on i965.</li> <li>GL_ARB_clear_buffer_object</li> <li>GL_ARB_viewport_array on i965.</li> diff --git a/mesalib/docs/specs/MESA_query_renderer.spec b/mesalib/docs/specs/MESA_query_renderer.spec index bf0975669..dd45e02ba 100644 --- a/mesalib/docs/specs/MESA_query_renderer.spec +++ b/mesalib/docs/specs/MESA_query_renderer.spec @@ -16,11 +16,11 @@ IP Status Status - Incomplete. DO NOT SHIP. + Shipping as of Mesa 10.0 Version - Version 6, 7-November-2013 + Version 8, 14-February-2014 Number @@ -211,7 +211,7 @@ Additions to the GLX 1.4 Specification The attribute name GLX_RENDERER_ID_MESA specified the index of the render against which the context should be created. The default value of - GLX_RENDER_ID_MESA is 0. + GLX_RENDERER_ID_MESA is 0. [Add to list of errors for glXCreateContextAttribsARB in section section @@ -373,7 +373,7 @@ Issues should make every attempt to return as much information as is possible. For example, if the implementation is running on a non-PCI SoC with a Qualcomm GPU, GLX_RENDERER_VENDOR_ID_MESA should return - 0x168C, but GLX_RENDERER_DEVICE_ID_MESA will return 0x0000. + 0x5143, but GLX_RENDERER_DEVICE_ID_MESA will return 0xFFFFFFFF. Revision History @@ -403,3 +403,8 @@ Revision History Version 7, 2013/11/07 - Fix a couple more typos. Add issue #17 regarding the PCI queries on systems that don't have PCI. + + Version 8, 2014/02/14 - Fix a couple typos. GLX_RENDER_ID_MESA should + read GLX_RENDERER_ID_MESA. The VENDOR/DEVICE_ID + example given in issue #17 should be 0x5143 and + 0xFFFFFFFF respectively. diff --git a/mesalib/include/GL/glext.h b/mesalib/include/GL/glext.h index 7d6033e10..7ea5a0d4d 100644 --- a/mesalib/include/GL/glext.h +++ b/mesalib/include/GL/glext.h @@ -6,7 +6,7 @@ extern "C" { #endif /* -** Copyright (c) 2013 The Khronos Group Inc. +** Copyright (c) 2013-2014 The Khronos Group Inc. ** ** Permission is hereby granted, free of charge, to any person obtaining a ** copy of this software and/or associated documentation files (the @@ -33,7 +33,7 @@ extern "C" { ** used to make the header, and the header can be found at ** http://www.opengl.org/registry/ ** -** Khronos $Revision: 24502 $ on $Date: 2013-12-12 13:14:39 -0800 (Thu, 12 Dec 2013) $ +** Khronos $Revision: 25406 $ on $Date: 2014-02-18 16:34:26 -0800 (Tue, 18 Feb 2014) $ */ #if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) @@ -53,7 +53,7 @@ extern "C" { #define GLAPI extern #endif -#define GL_GLEXT_VERSION 20131212 +#define GL_GLEXT_VERSION 20140218 /* Generated C header for: * API: gl @@ -1485,7 +1485,7 @@ typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum atta typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVPROC) (GLenum pname, GLuint index, GLfloat *val); -typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask); +typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint maskNumber, GLbitfield mask); #ifdef GL_GLEXT_PROTOTYPES GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); @@ -1505,7 +1505,7 @@ GLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLui GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val); -GLAPI void APIENTRY glSampleMaski (GLuint index, GLbitfield mask); +GLAPI void APIENTRY glSampleMaski (GLuint maskNumber, GLbitfield mask); #endif #endif /* GL_VERSION_3_2 */ @@ -8126,6 +8126,52 @@ GLAPI void APIENTRY glTexCoordPointervINTEL (GLint size, GLenum type, const void #endif #endif /* GL_INTEL_parallel_arrays */ +#ifndef GL_INTEL_performance_query +#define GL_INTEL_performance_query 1 +#define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000 +#define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001 +#define GL_PERFQUERY_WAIT_INTEL 0x83FB +#define GL_PERFQUERY_FLUSH_INTEL 0x83FA +#define GL_PERFQUERY_DONOT_FLUSH_INTEL 0x83F9 +#define GL_PERFQUERY_COUNTER_EVENT_INTEL 0x94F0 +#define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1 +#define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2 +#define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3 +#define GL_PERFQUERY_COUNTER_RAW_INTEL 0x94F4 +#define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5 +#define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8 +#define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9 +#define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA +#define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB +#define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC +#define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD +#define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE +#define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF +#define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500 +typedef void (APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle); +typedef void (APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId); +typedef void (APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId); +typedef void (APIENTRYP PFNGLGETPERFCOUNTERINFOINTELPROC) (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +typedef void (APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten); +typedef void (APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId); +typedef void (APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle); +GLAPI void APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle); +GLAPI void APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle); +GLAPI void APIENTRY glEndPerfQueryINTEL (GLuint queryHandle); +GLAPI void APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId); +GLAPI void APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId); +GLAPI void APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +GLAPI void APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, GLvoid *data, GLuint *bytesWritten); +GLAPI void APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId); +GLAPI void APIENTRY glGetPerfQueryInfoINTEL (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +#endif +#endif /* GL_INTEL_performance_query */ + #ifndef GL_MESAX_texture_stack #define GL_MESAX_texture_stack 1 #define GL_TEXTURE_1D_STACK_MESAX 0x8759 @@ -8220,6 +8266,15 @@ GLAPI void APIENTRY glEndConditionalRenderNVX (void); #endif #endif /* GL_NVX_conditional_render */ +#ifndef GL_NVX_gpu_memory_info +#define GL_NVX_gpu_memory_info 1 +#define GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX 0x9047 +#define GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048 +#define GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049 +#define GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX 0x904A +#define GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX 0x904B +#endif /* GL_NVX_gpu_memory_info */ + #ifndef GL_NV_bindless_multi_draw_indirect #define GL_NV_bindless_multi_draw_indirect 1 typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTBINDLESSNVPROC) (GLenum mode, const void *indirect, GLsizei drawCount, GLsizei stride, GLint vertexBufferCount); @@ -9647,7 +9702,7 @@ typedef void (APIENTRYP PFNGLVDPAUINITNVPROC) (const void *vdpDevice, const void typedef void (APIENTRYP PFNGLVDPAUFININVPROC) (void); typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTERVIDEOSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); typedef GLvdpauSurfaceNV (APIENTRYP PFNGLVDPAUREGISTEROUTPUTSURFACENVPROC) (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); -typedef void (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface); +typedef GLboolean (APIENTRYP PFNGLVDPAUISSURFACENVPROC) (GLvdpauSurfaceNV surface); typedef void (APIENTRYP PFNGLVDPAUUNREGISTERSURFACENVPROC) (GLvdpauSurfaceNV surface); typedef void (APIENTRYP PFNGLVDPAUGETSURFACEIVNVPROC) (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); typedef void (APIENTRYP PFNGLVDPAUSURFACEACCESSNVPROC) (GLvdpauSurfaceNV surface, GLenum access); @@ -9658,7 +9713,7 @@ GLAPI void APIENTRY glVDPAUInitNV (const void *vdpDevice, const void *getProcAdd GLAPI void APIENTRY glVDPAUFiniNV (void); GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterVideoSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); GLAPI GLvdpauSurfaceNV APIENTRY glVDPAURegisterOutputSurfaceNV (const void *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); -GLAPI void APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface); +GLAPI GLboolean APIENTRY glVDPAUIsSurfaceNV (GLvdpauSurfaceNV surface); GLAPI void APIENTRY glVDPAUUnregisterSurfaceNV (GLvdpauSurfaceNV surface); GLAPI void APIENTRY glVDPAUGetSurfaceivNV (GLvdpauSurfaceNV surface, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values); GLAPI void APIENTRY glVDPAUSurfaceAccessNV (GLvdpauSurfaceNV surface, GLenum access); diff --git a/mesalib/include/GL/glxext.h b/mesalib/include/GL/glxext.h index 8c642f354..826fda5b5 100644 --- a/mesalib/include/GL/glxext.h +++ b/mesalib/include/GL/glxext.h @@ -6,7 +6,7 @@ extern "C" { #endif /* -** Copyright (c) 2013 The Khronos Group Inc. +** Copyright (c) 2013-2014 The Khronos Group Inc. ** ** Permission is hereby granted, free of charge, to any person obtaining a ** copy of this software and/or associated documentation files (the @@ -33,10 +33,10 @@ extern "C" { ** used to make the header, and the header can be found at ** http://www.opengl.org/registry/ ** -** Khronos $Revision: 24777 $ on $Date: 2014-01-14 14:02:32 -0800 (Tue, 14 Jan 2014) $ +** Khronos $Revision: 25407 $ on $Date: 2014-02-18 16:51:56 -0800 (Tue, 18 Feb 2014) $ */ -#define GLX_GLXEXT_VERSION 20140114 +#define GLX_GLXEXT_VERSION 20140218 /* Generated C header for: * API: glx @@ -407,6 +407,32 @@ GLXPixmap glXCreateGLXPixmapMESA (Display *dpy, XVisualInfo *visual, Pixmap pixm #endif #endif /* GLX_MESA_pixmap_colormap */ +#ifndef GLX_MESA_query_renderer +#define GLX_MESA_query_renderer 1 +#define GLX_RENDERER_VENDOR_ID_MESA 0x8183 +#define GLX_RENDERER_DEVICE_ID_MESA 0x8184 +#define GLX_RENDERER_VERSION_MESA 0x8185 +#define GLX_RENDERER_ACCELERATED_MESA 0x8186 +#define GLX_RENDERER_VIDEO_MEMORY_MESA 0x8187 +#define GLX_RENDERER_UNIFIED_MEMORY_ARCHITECTURE_MESA 0x8188 +#define GLX_RENDERER_PREFERRED_PROFILE_MESA 0x8189 +#define GLX_RENDERER_OPENGL_CORE_PROFILE_VERSION_MESA 0x818A +#define GLX_RENDERER_OPENGL_COMPATIBILITY_PROFILE_VERSION_MESA 0x818B +#define GLX_RENDERER_OPENGL_ES_PROFILE_VERSION_MESA 0x818C +#define GLX_RENDERER_OPENGL_ES2_PROFILE_VERSION_MESA 0x818D +#define GLX_RENDERER_ID_MESA 0x818E +typedef Bool ( *PFNGLXQUERYCURRENTRENDERERINTEGERMESAPROC) (int attribute, unsigned int *value); +typedef const char *( *PFNGLXQUERYCURRENTRENDERERSTRINGMESAPROC) (int attribute); +typedef Bool ( *PFNGLXQUERYRENDERERINTEGERMESAPROC) (Display *dpy, int screen, int renderer, int attribute, unsigned int *value); +typedef const char *( *PFNGLXQUERYRENDERERSTRINGMESAPROC) (Display *dpy, int screen, int renderer, int attribute); +#ifdef GLX_GLXEXT_PROTOTYPES +Bool glXQueryCurrentRendererIntegerMESA (int attribute, unsigned int *value); +const char *glXQueryCurrentRendererStringMESA (int attribute); +Bool glXQueryRendererIntegerMESA (Display *dpy, int screen, int renderer, int attribute, unsigned int *value); +const char *glXQueryRendererStringMESA (Display *dpy, int screen, int renderer, int attribute); +#endif +#endif /* GLX_MESA_query_renderer */ + #ifndef GLX_MESA_release_buffers #define GLX_MESA_release_buffers 1 typedef Bool ( *PFNGLXRELEASEBUFFERSMESAPROC) (Display *dpy, GLXDrawable drawable); diff --git a/mesalib/include/GL/internal/dri_interface.h b/mesalib/include/GL/internal/dri_interface.h index 6b9e5ecbc..0fb645dd5 100644 --- a/mesalib/include/GL/internal/dri_interface.h +++ b/mesalib/include/GL/internal/dri_interface.h @@ -253,6 +253,8 @@ struct __DRItexBufferExtensionRec { * __DRIdrawable, including the required texture format attribute. * * For GLX_EXT_texture_from_pixmap with AIGLX. + * + * \since 2 */ void (*setTexBuffer2)(__DRIcontext *pDRICtx, GLint target, @@ -263,6 +265,8 @@ struct __DRItexBufferExtensionRec { * need this. * * For GLX_EXT_texture_from_pixmap with AIGLX. + * + * \since 3 */ void (*releaseTexBuffer)(__DRIcontext *pDRICtx, GLint target, @@ -468,6 +472,8 @@ struct __DRIswrastLoaderExtensionRec { /** * Put image to drawable + * + * \since 2 */ void (*putImage2)(__DRIdrawable *drawable, int op, int x, int y, int width, int height, int stride, @@ -852,6 +858,8 @@ struct __DRIdri2LoaderExtensionRec { * \param driDrawable Drawable whose front-buffer is to be flushed * \param loaderPrivate Loader's private data that was previously passed * into __DRIdri2ExtensionRec::createNewDrawable + * + * \since 2 */ void (*flushFrontBuffer)(__DRIdrawable *driDrawable, void *loaderPrivate); @@ -874,6 +882,8 @@ struct __DRIdri2LoaderExtensionRec { * \c attachments. * \param loaderPrivate Loader's private data that was previously passed * into __DRIdri2ExtensionRec::createNewDrawable. + * + * \since 3 */ __DRIbuffer *(*getBuffersWithFormat)(__DRIdrawable *driDrawable, int *width, int *height, diff --git a/mesalib/include/GL/wglext.h b/mesalib/include/GL/wglext.h index dc73a01aa..cf9781ddd 100644 --- a/mesalib/include/GL/wglext.h +++ b/mesalib/include/GL/wglext.h @@ -6,7 +6,7 @@ extern "C" { #endif /* -** Copyright (c) 2013 The Khronos Group Inc. +** Copyright (c) 2013-2014 The Khronos Group Inc. ** ** Permission is hereby granted, free of charge, to any person obtaining a ** copy of this software and/or associated documentation files (the @@ -33,7 +33,7 @@ extern "C" { ** used to make the header, and the header can be found at ** http://www.opengl.org/registry/ ** -** Khronos $Revision: 23649 $ on $Date: 2013-10-23 00:21:49 -0700 (Wed, 23 Oct 2013) $ +** Khronos $Revision: 25401 $ on $Date: 2014-02-18 15:43:24 -0800 (Tue, 18 Feb 2014) $ */ #if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) @@ -41,7 +41,7 @@ extern "C" { #include <windows.h> #endif -#define WGL_WGLEXT_VERSION 20130916 +#define WGL_WGLEXT_VERSION 20140203 /* Generated C header for: * API: wgl diff --git a/mesalib/m4/ax_gcc_builtin.m4 b/mesalib/m4/ax_gcc_builtin.m4 new file mode 100644 index 000000000..b28a91b14 --- /dev/null +++ b/mesalib/m4/ax_gcc_builtin.m4 @@ -0,0 +1,168 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_gcc_builtin.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_GCC_BUILTIN(BUILTIN) +# +# DESCRIPTION +# +# This macro checks if the compiler supports one of GCC's built-in +# functions; many other compilers also provide those same built-ins. +# +# The BUILTIN parameter is the name of the built-in function. +# +# If BUILTIN is supported define HAVE_<BUILTIN>. Keep in mind that since +# builtins usually start with two underscores they will be copied over +# into the HAVE_<BUILTIN> definition (e.g. HAVE___BUILTIN_EXPECT for +# __builtin_expect()). +# +# The macro caches its result in the ax_cv_have_<BUILTIN> variable (e.g. +# ax_cv_have___builtin_expect). +# +# The macro currently supports the following built-in functions: +# +# __builtin_assume_aligned +# __builtin_bswap32 +# __builtin_bswap64 +# __builtin_choose_expr +# __builtin___clear_cache +# __builtin_clrsb +# __builtin_clrsbl +# __builtin_clrsbll +# __builtin_clz +# __builtin_clzl +# __builtin_clzll +# __builtin_complex +# __builtin_constant_p +# __builtin_ctz +# __builtin_ctzl +# __builtin_ctzll +# __builtin_expect +# __builtin_ffs +# __builtin_ffsl +# __builtin_ffsll +# __builtin_fpclassify +# __builtin_huge_val +# __builtin_huge_valf +# __builtin_huge_vall +# __builtin_inf +# __builtin_infd128 +# __builtin_infd32 +# __builtin_infd64 +# __builtin_inff +# __builtin_infl +# __builtin_isinf_sign +# __builtin_nan +# __builtin_nand128 +# __builtin_nand32 +# __builtin_nand64 +# __builtin_nanf +# __builtin_nanl +# __builtin_nans +# __builtin_nansf +# __builtin_nansl +# __builtin_object_size +# __builtin_parity +# __builtin_parityl +# __builtin_parityll +# __builtin_popcount +# __builtin_popcountl +# __builtin_popcountll +# __builtin_powi +# __builtin_powif +# __builtin_powil +# __builtin_prefetch +# __builtin_trap +# __builtin_types_compatible_p +# __builtin_unreachable +# +# Unsuppored built-ins will be tested with an empty parameter set and the +# result of the check might be wrong or meaningless so use with care. +# +# LICENSE +# +# Copyright (c) 2013 Gabriele Svelto <gabriele.svelto@gmail.com> +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 2 + +AC_DEFUN([AX_GCC_BUILTIN], [ + AS_VAR_PUSHDEF([ac_var], [ax_cv_have_$1]) + + AC_CACHE_CHECK([for $1], [ac_var], [ + AC_LINK_IFELSE([AC_LANG_PROGRAM([], [ + m4_case([$1], + [__builtin_assume_aligned], [$1("", 0)], + [__builtin_bswap32], [$1(0)], + [__builtin_bswap64], [$1(0)], + [__builtin_choose_expr], [$1(0, 0, 0)], + [__builtin___clear_cache], [$1("", "")], + [__builtin_clrsb], [$1(0)], + [__builtin_clrsbl], [$1(0)], + [__builtin_clrsbll], [$1(0)], + [__builtin_clz], [$1(0)], + [__builtin_clzl], [$1(0)], + [__builtin_clzll], [$1(0)], + [__builtin_complex], [$1(0.0, 0.0)], + [__builtin_constant_p], [$1(0)], + [__builtin_ctz], [$1(0)], + [__builtin_ctzl], [$1(0)], + [__builtin_ctzll], [$1(0)], + [__builtin_expect], [$1(0, 0)], + [__builtin_ffs], [$1(0)], + [__builtin_ffsl], [$1(0)], + [__builtin_ffsll], [$1(0)], + [__builtin_fpclassify], [$1(0, 1, 2, 3, 4, 0.0)], + [__builtin_huge_val], [$1()], + [__builtin_huge_valf], [$1()], + [__builtin_huge_vall], [$1()], + [__builtin_inf], [$1()], + [__builtin_infd128], [$1()], + [__builtin_infd32], [$1()], + [__builtin_infd64], [$1()], + [__builtin_inff], [$1()], + [__builtin_infl], [$1()], + [__builtin_isinf_sign], [$1(0.0)], + [__builtin_nan], [$1("")], + [__builtin_nand128], [$1("")], + [__builtin_nand32], [$1("")], + [__builtin_nand64], [$1("")], + [__builtin_nanf], [$1("")], + [__builtin_nanl], [$1("")], + [__builtin_nans], [$1("")], + [__builtin_nansf], [$1("")], + [__builtin_nansl], [$1("")], + [__builtin_object_size], [$1("", 0)], + [__builtin_parity], [$1(0)], + [__builtin_parityl], [$1(0)], + [__builtin_parityll], [$1(0)], + [__builtin_popcount], [$1(0)], + [__builtin_popcountl], [$1(0)], + [__builtin_popcountll], [$1(0)], + [__builtin_powi], [$1(0, 0)], + [__builtin_powif], [$1(0, 0)], + [__builtin_powil], [$1(0, 0)], + [__builtin_prefetch], [$1("")], + [__builtin_trap], [$1()], + [__builtin_types_compatible_p], [$1(int, int)], + [__builtin_unreachable], [$1()], + [m4_warn([syntax], [Unsupported built-in $1, the test may fail]) + $1()] + ) + ])], + [AS_VAR_SET([ac_var], [yes])], + [AS_VAR_SET([ac_var], [no])]) + ]) + + AS_IF([test yes = AS_VAR_GET([ac_var])], + [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$1), 1, + [Define to 1 if the system has the `$1' built-in function])], []) + + AS_VAR_POPDEF([ac_var]) +]) diff --git a/mesalib/scons/gallium.py b/mesalib/scons/gallium.py index 70ee89b0d..f505a62be 100644 --- a/mesalib/scons/gallium.py +++ b/mesalib/scons/gallium.py @@ -533,11 +533,9 @@ def generate(env): env.PkgCheckModules('X11', ['x11', 'xext', 'xdamage', 'xfixes']) env.PkgCheckModules('XCB', ['x11-xcb', 'xcb-glx >= 1.8.1']) env.PkgCheckModules('XF86VIDMODE', ['xxf86vm']) - env.PkgCheckModules('DRM', ['libdrm >= 2.4.24']) - env.PkgCheckModules('DRM_INTEL', ['libdrm_intel >= 2.4.30']) - env.PkgCheckModules('XORG', ['xorg-server >= 1.6.0']) - env.PkgCheckModules('KMS', ['libkms >= 2.4.24']) - env.PkgCheckModules('UDEV', ['libudev > 150']) + env.PkgCheckModules('DRM', ['libdrm >= 2.4.38']) + env.PkgCheckModules('DRM_INTEL', ['libdrm_intel >= 2.4.52']) + env.PkgCheckModules('UDEV', ['libudev >= 151']) env['dri'] = env['x11'] and env['drm'] diff --git a/mesalib/src/gallium/Automake.inc b/mesalib/src/gallium/Automake.inc index 1e4a34f5d..1acc99ef5 100644 --- a/mesalib/src/gallium/Automake.inc +++ b/mesalib/src/gallium/Automake.inc @@ -51,12 +51,14 @@ GALLIUM_VIDEO_CFLAGS = \ $(VISIBILITY_CFLAGS) -# TODO: add -export-symbols-regex +DRI_VERSION_SCRIPT ?= $(top_srcdir)/src/gallium/state_trackers/dri/dri.link + GALLIUM_DRI_LINKER_FLAGS = \ -module \ -avoid-version \ + -Wl,--version-script=$(DRI_VERSION_SCRIPT) \ -shared \ - -Wl,-Bsymbolic + -no-undefined GALLIUM_VDPAU_LINKER_FLAGS = \ -module \ @@ -76,7 +78,11 @@ GALLIUM_VDPAU_LIB_DEPS = \ $(top_builddir)/src/gallium/auxiliary/libgallium.la \ $(top_builddir)/src/gallium/state_trackers/vdpau/libvdpautracker.la \ $(VDPAU_LIBS) \ - $(LIBDRM_LIBS) + $(LIBDRM_LIBS) \ + -lm \ + $(CLOCK_LIB) \ + $(PTHREAD_LIBS) \ + $(DLOPEN_LIBS) GALLIUM_XVMC_LIB_DEPS = \ $(top_builddir)/src/gallium/auxiliary/libgallium.la \ diff --git a/mesalib/src/gallium/auxiliary/Makefile.sources b/mesalib/src/gallium/auxiliary/Makefile.sources index c89cbddd0..8919783c2 100644 --- a/mesalib/src/gallium/auxiliary/Makefile.sources +++ b/mesalib/src/gallium/auxiliary/Makefile.sources @@ -91,6 +91,7 @@ C_SOURCES := \ translate/translate_sse.c \ util/u_debug.c \ util/u_debug_describe.c \ + util/u_debug_flush.c \ util/u_debug_memory.c \ util/u_debug_refcnt.c \ util/u_debug_stack.c \ @@ -155,7 +156,8 @@ C_SOURCES := \ vl/vl_idct.c \ vl/vl_mc.c \ vl/vl_vertex_buffers.c \ - vl/vl_video_buffer.c + vl/vl_video_buffer.c \ + vl/vl_deint_filter.c GENERATED_SOURCES := \ indices/u_indices_gen.c \ diff --git a/mesalib/src/gallium/auxiliary/util/u_debug_flush.c b/mesalib/src/gallium/auxiliary/util/u_debug_flush.c new file mode 100644 index 000000000..9cf70db58 --- /dev/null +++ b/mesalib/src/gallium/auxiliary/util/u_debug_flush.c @@ -0,0 +1,391 @@ +/************************************************************************** + * + * Copyright 2012 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. + * + **************************************************************************/ + +/** + * @file + * u_debug_flush.c Debug flush and map-related issues: + * - Flush while synchronously mapped. + * - Command stream reference while synchronously mapped. + * - Synchronous map while referenced on command stream. + * - Recursive maps. + * - Unmap while not mapped. + * + * @author Thomas Hellstrom <thellstrom@vmware.com> + */ + +#ifdef DEBUG +#include "pipe/p_compiler.h" +#include "util/u_debug_stack.h" +#include "util/u_debug.h" +#include "util/u_memory.h" +#include "util/u_debug_flush.h" +#include "util/u_hash_table.h" +#include "util/u_double_list.h" +#include "util/u_inlines.h" +#include "os/os_thread.h" +#include <stdio.h> + +struct debug_flush_buf { + /* Atomic */ + struct pipe_reference reference; /* Must be the first member. */ + pipe_mutex mutex; + /* Immutable */ + boolean supports_unsync; + unsigned bt_depth; + /* Protected by mutex */ + boolean mapped; + boolean mapped_sync; + struct debug_stack_frame *map_frame; +}; + +struct debug_flush_item { + struct debug_flush_buf *fbuf; + unsigned bt_depth; + struct debug_stack_frame *ref_frame; +}; + +struct debug_flush_ctx { + /* Contexts are used by a single thread at a time */ + unsigned bt_depth; + boolean catch_map_of_referenced; + struct util_hash_table *ref_hash; + struct list_head head; +}; + +pipe_static_mutex(list_mutex); +static struct list_head ctx_list = {&ctx_list, &ctx_list}; + +static struct debug_stack_frame * +debug_flush_capture_frame(int start, int depth) +{ + struct debug_stack_frame *frames; + + frames = CALLOC(depth, sizeof(*frames)); + if (!frames) + return NULL; + + debug_backtrace_capture(frames, start, depth); + return frames; +} + +static int +debug_flush_pointer_compare(void *key1, void *key2) +{ + return (key1 == key2) ? 0 : 1; +} + +static unsigned +debug_flush_pointer_hash(void *key) +{ + return (unsigned) (unsigned long) key; +} + +struct debug_flush_buf * +debug_flush_buf_create(boolean supports_unsync, unsigned bt_depth) +{ + struct debug_flush_buf *fbuf = CALLOC_STRUCT(debug_flush_buf); + + if (!fbuf) + goto out_no_buf; + + fbuf->supports_unsync = supports_unsync; + fbuf->bt_depth = bt_depth; + pipe_reference_init(&fbuf->reference, 1); + pipe_mutex_init(fbuf->mutex); + + return fbuf; +out_no_buf: + debug_printf("Debug flush buffer creation failed.\n"); + debug_printf("Debug flush checking for this buffer will be incomplete.\n"); + return NULL; +} + +void +debug_flush_buf_reference(struct debug_flush_buf **dst, + struct debug_flush_buf *src) +{ + struct debug_flush_buf *fbuf = *dst; + + if (pipe_reference(&(*dst)->reference, &src->reference)) { + if (fbuf->map_frame) + FREE(fbuf->map_frame); + + FREE(fbuf); + } + + *dst = src; +} + +static void +debug_flush_item_destroy(struct debug_flush_item *item) +{ + debug_flush_buf_reference(&item->fbuf, NULL); + + if (item->ref_frame) + FREE(item->ref_frame); + + FREE(item); +} + +struct debug_flush_ctx * +debug_flush_ctx_create(boolean catch_reference_of_mapped, unsigned bt_depth) +{ + struct debug_flush_ctx *fctx = CALLOC_STRUCT(debug_flush_ctx); + + if (!fctx) + goto out_no_ctx; + + fctx->ref_hash = util_hash_table_create(debug_flush_pointer_hash, + debug_flush_pointer_compare); + + if (!fctx->ref_hash) + goto out_no_ref_hash; + + fctx->bt_depth = bt_depth; + pipe_mutex_lock(list_mutex); + list_addtail(&fctx->head, &ctx_list); + pipe_mutex_unlock(list_mutex); + + return fctx; + + out_no_ref_hash: + FREE(fctx); +out_no_ctx: + debug_printf("Debug flush context creation failed.\n"); + debug_printf("Debug flush checking for this context will be incomplete.\n"); + return NULL; +} + +static void +debug_flush_alert(const char *s, const char *op, + unsigned start, unsigned depth, + boolean continued, + boolean capture, + const struct debug_stack_frame *frame) +{ + if (capture) + frame = debug_flush_capture_frame(start, depth); + + if (s) + debug_printf("%s ", s); + if (frame) { + debug_printf("%s backtrace follows:\n", op); + debug_backtrace_dump(frame, depth); + } else + debug_printf("No %s backtrace was captured.\n", op); + + if (continued) + debug_printf("**********************************\n"); + else + debug_printf("*********END OF MESSAGE***********\n\n\n"); + + if (capture) + FREE((void *)frame); +} + + +void +debug_flush_map(struct debug_flush_buf *fbuf, unsigned flags) +{ + boolean mapped_sync = FALSE; + + if (!fbuf) + return; + + pipe_mutex_lock(fbuf->mutex); + if (fbuf->mapped) { + debug_flush_alert("Recursive map detected.", "Map", + 2, fbuf->bt_depth, TRUE, TRUE, NULL); + debug_flush_alert(NULL, "Previous map", 0, fbuf->bt_depth, FALSE, + FALSE, fbuf->map_frame); + } else if (!(flags & PIPE_TRANSFER_UNSYNCHRONIZED) || + !fbuf->supports_unsync) { + fbuf->mapped_sync = mapped_sync = TRUE; + } + fbuf->map_frame = debug_flush_capture_frame(1, fbuf->bt_depth); + fbuf->mapped = TRUE; + pipe_mutex_unlock(fbuf->mutex); + + if (mapped_sync) { + struct debug_flush_ctx *fctx; + + pipe_mutex_lock(list_mutex); + LIST_FOR_EACH_ENTRY(fctx, &ctx_list, head) { + struct debug_flush_item *item = + util_hash_table_get(fctx->ref_hash, fbuf); + + if (item && fctx->catch_map_of_referenced) { + debug_flush_alert("Already referenced map detected.", + "Map", 2, fbuf->bt_depth, TRUE, TRUE, NULL); + debug_flush_alert(NULL, "Reference", 0, item->bt_depth, + FALSE, FALSE, item->ref_frame); + } + } + pipe_mutex_unlock(list_mutex); + } +} + +void +debug_flush_unmap(struct debug_flush_buf *fbuf) +{ + if (!fbuf) + return; + + pipe_mutex_lock(fbuf->mutex); + if (!fbuf->mapped) + debug_flush_alert("Unmap not previously mapped detected.", "Map", + 2, fbuf->bt_depth, FALSE, TRUE, NULL); + + fbuf->mapped_sync = FALSE; + fbuf->mapped = FALSE; + if (fbuf->map_frame) { + FREE(fbuf->map_frame); + fbuf->map_frame = NULL; + } + pipe_mutex_unlock(fbuf->mutex); +} + +void +debug_flush_cb_reference(struct debug_flush_ctx *fctx, + struct debug_flush_buf *fbuf) +{ + struct debug_flush_item *item; + + if (!fctx || !fbuf) + return; + + item = util_hash_table_get(fctx->ref_hash, fbuf); + + pipe_mutex_lock(fbuf->mutex); + if (fbuf->mapped_sync) { + debug_flush_alert("Reference of mapped buffer detected.", "Reference", + 2, fctx->bt_depth, TRUE, TRUE, NULL); + debug_flush_alert(NULL, "Map", 0, fbuf->bt_depth, FALSE, + FALSE, fbuf->map_frame); + } + pipe_mutex_unlock(fbuf->mutex); + + if (!item) { + item = CALLOC_STRUCT(debug_flush_item); + if (item) { + debug_flush_buf_reference(&item->fbuf, fbuf); + item->bt_depth = fctx->bt_depth; + item->ref_frame = debug_flush_capture_frame(2, item->bt_depth); + if (util_hash_table_set(fctx->ref_hash, fbuf, item) != PIPE_OK) { + debug_flush_item_destroy(item); + goto out_no_item; + } + return; + } + goto out_no_item; + } + return; + +out_no_item: + debug_printf("Debug flush command buffer reference creation failed.\n"); + debug_printf("Debug flush checking will be incomplete " + "for this command batch.\n"); +} + +static enum pipe_error +debug_flush_might_flush_cb(void *key, void *value, void *data) +{ + struct debug_flush_item *item = + (struct debug_flush_item *) value; + struct debug_flush_buf *fbuf = item->fbuf; + const char *reason = (const char *) data; + char message[80]; + + snprintf(message, sizeof(message), + "%s referenced mapped buffer detected.", reason); + + pipe_mutex_lock(fbuf->mutex); + if (fbuf->mapped_sync) { + debug_flush_alert(message, reason, 3, item->bt_depth, TRUE, TRUE, NULL); + debug_flush_alert(NULL, "Map", 0, fbuf->bt_depth, TRUE, FALSE, + fbuf->map_frame); + debug_flush_alert(NULL, "First reference", 0, item->bt_depth, FALSE, + FALSE, item->ref_frame); + } + pipe_mutex_unlock(fbuf->mutex); + + return PIPE_OK; +} + +void +debug_flush_might_flush(struct debug_flush_ctx *fctx) +{ + if (!fctx) + return; + + util_hash_table_foreach(fctx->ref_hash, + debug_flush_might_flush_cb, + "Might flush"); +} + +static enum pipe_error +debug_flush_flush_cb(void *key, void *value, void *data) +{ + struct debug_flush_item *item = + (struct debug_flush_item *) value; + + debug_flush_item_destroy(item); + + return PIPE_OK; +} + + +void +debug_flush_flush(struct debug_flush_ctx *fctx) +{ + if (!fctx) + return; + + util_hash_table_foreach(fctx->ref_hash, + debug_flush_might_flush_cb, + "Flush"); + util_hash_table_foreach(fctx->ref_hash, + debug_flush_flush_cb, + NULL); + util_hash_table_clear(fctx->ref_hash); +} + +void +debug_flush_ctx_destroy(struct debug_flush_ctx *fctx) +{ + if (!fctx) + return; + + list_del(&fctx->head); + util_hash_table_foreach(fctx->ref_hash, + debug_flush_flush_cb, + NULL); + util_hash_table_clear(fctx->ref_hash); + util_hash_table_destroy(fctx->ref_hash); + FREE(fctx); +} +#endif diff --git a/mesalib/src/gallium/auxiliary/util/u_debug_flush.h b/mesalib/src/gallium/auxiliary/util/u_debug_flush.h new file mode 100644 index 000000000..a604167f0 --- /dev/null +++ b/mesalib/src/gallium/auxiliary/util/u_debug_flush.h @@ -0,0 +1,138 @@ +/************************************************************************** + * + * Copyright 2012 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. + * + **************************************************************************/ + +/** + * @file + * u_debug_flush.h - Header for debugging flush- and map- related issues. + * - Flush while synchronously mapped. + * - Command stream reference while synchronously mapped. + * - Synchronous map while referenced on command stream. + * - Recursive maps. + * - Unmap while not mapped. + * + * @author Thomas Hellstrom <thellstrom@vmware.com> + */ +#ifdef DEBUG + +#ifndef U_DEBUG_FLUSH_H_ +#define U_DEBUG_FLUSH_H_ + +struct debug_flush_buf; +struct debug_flush_ctx; + +/** + * Create a buffer (AKA allocation) representation. + * + * @param support_unsync Whether unsynchronous maps are truly supported. + * @param bt_depth Depth of backtrace to be captured for this buffer + * representation. + */ +struct debug_flush_buf * +debug_flush_buf_create(boolean supports_unsync, unsigned bt_depth); + +/** + * Reference a buffer representation. + * + * @param dst Pointer copy destination + * @param src Pointer copy source (may be NULL). + * + * Replace a pointer to a buffer representation with proper refcounting. + */ +void +debug_flush_buf_reference(struct debug_flush_buf **dst, + struct debug_flush_buf *src); + +/** + * Create a context representation. + * + * @param catch_map_of_referenced Whether to catch synchronous maps of buffers + * already present on the command stream. + * @param bt_depth Depth of backtrace to be captured for this context + * representation. + */ +struct debug_flush_ctx * +debug_flush_ctx_create(boolean catch_map_of_referenced, unsigned bt_depth); + +/** + * Destroy a context representation. + * + * @param fctx The context representation to destroy. + */ +void +debug_flush_ctx_destroy(struct debug_flush_ctx *fctx); + +/** + * Map annotation + * + * @param fbuf The buffer representation to map. + * @param flags Pipebuffer flags for the map. + * + * Used to annotate a map of the buffer described by the buffer representation. + */ +void debug_flush_map(struct debug_flush_buf *fbuf, unsigned flags); + +/** + * Unmap annotation + * + * @param fbuf The buffer representation to map. + * + * Used to annotate an unmap of the buffer described by the + * buffer representation. + */ +void debug_flush_unmap(struct debug_flush_buf *fbuf); + +/** + * Might flush annotation + * + * @param fctx The context representation that might be flushed. + * + * Used to annotate a conditional (possible) flush of the given context. + */ +void debug_flush_might_flush(struct debug_flush_ctx *fctx); + +/** + * Flush annotation + * + * @param fctx The context representation that is flushed. + * + * Used to annotate a real flush of the given context. + */ +void debug_flush_flush(struct debug_flush_ctx *fctx); + + +/** + * Flush annotation + * + * @param fctx The context representation that is flushed. + * + * Used to annotate a real flush of the given context. + */ +void debug_flush_cb_reference(struct debug_flush_ctx *fctx, + struct debug_flush_buf *fbuf); + +#endif +#endif diff --git a/mesalib/src/gallium/auxiliary/util/u_format.c b/mesalib/src/gallium/auxiliary/util/u_format.c index 6b602bf32..056f82f72 100644 --- a/mesalib/src/gallium/auxiliary/util/u_format.c +++ b/mesalib/src/gallium/auxiliary/util/u_format.c @@ -527,7 +527,7 @@ util_format_fits_8unorm(const struct util_format_description *format_desc) } -void +boolean util_format_translate(enum pipe_format dst_format, void *dst, unsigned dst_stride, unsigned dst_x, unsigned dst_y, @@ -555,7 +555,7 @@ util_format_translate(enum pipe_format dst_format, util_copy_rect(dst, dst_format, dst_stride, dst_x, dst_y, width, height, src, (int)src_stride, src_x, src_y); - return; + return TRUE; } assert(dst_x % dst_format_desc->block.width == 0); @@ -621,7 +621,7 @@ util_format_translate(enum pipe_format dst_format, FREE(tmp_z); - return; + return TRUE; } if (util_format_fits_8unorm(src_format_desc) || @@ -629,10 +629,15 @@ util_format_translate(enum pipe_format dst_format, unsigned tmp_stride; uint8_t *tmp_row; + if (!src_format_desc->unpack_rgba_8unorm || + !dst_format_desc->pack_rgba_8unorm) { + return FALSE; + } + tmp_stride = MAX2(width, x_step) * 4 * sizeof *tmp_row; tmp_row = MALLOC(y_step * tmp_stride); if (!tmp_row) - return; + return FALSE; while (height >= y_step) { src_format_desc->unpack_rgba_8unorm(tmp_row, tmp_stride, src_row, src_stride, width, y_step); @@ -654,10 +659,15 @@ util_format_translate(enum pipe_format dst_format, unsigned tmp_stride; float *tmp_row; + if (!src_format_desc->unpack_rgba_float || + !dst_format_desc->pack_rgba_float) { + return FALSE; + } + tmp_stride = MAX2(width, x_step) * 4 * sizeof *tmp_row; tmp_row = MALLOC(y_step * tmp_stride); if (!tmp_row) - return; + return FALSE; while (height >= y_step) { src_format_desc->unpack_rgba_float(tmp_row, tmp_stride, src_row, src_stride, width, y_step); @@ -675,6 +685,7 @@ util_format_translate(enum pipe_format dst_format, FREE(tmp_row); } + return TRUE; } void util_format_compose_swizzles(const unsigned char swz1[4], diff --git a/mesalib/src/gallium/auxiliary/util/u_format.h b/mesalib/src/gallium/auxiliary/util/u_format.h index 5f86e2d2c..e36a9e237 100644 --- a/mesalib/src/gallium/auxiliary/util/u_format.h +++ b/mesalib/src/gallium/auxiliary/util/u_format.h @@ -1190,7 +1190,7 @@ util_format_write_4i(enum pipe_format format, boolean util_format_fits_8unorm(const struct util_format_description *format_desc); -void +boolean util_format_translate(enum pipe_format dst_format, void *dst, unsigned dst_stride, unsigned dst_x, unsigned dst_y, diff --git a/mesalib/src/gallium/auxiliary/util/u_math.h b/mesalib/src/gallium/auxiliary/util/u_math.h index b5e06630a..ec03e4e58 100644 --- a/mesalib/src/gallium/auxiliary/util/u_math.h +++ b/mesalib/src/gallium/auxiliary/util/u_math.h @@ -112,10 +112,13 @@ static INLINE float logf( float f ) #define logf(x) ((float)log((double)(x))) #endif /* logf */ +#if _MSC_VER < 1800 #define isfinite(x) _finite((double)(x)) #define isnan(x) _isnan((double)(x)) +#endif /* _MSC_VER < 1800 */ #endif /* _MSC_VER < 1400 && !defined(__cplusplus) */ +#if _MSC_VER < 1800 static INLINE double log2( double x ) { const double invln2 = 1.442695041; @@ -133,6 +136,7 @@ roundf(float x) { return x >= 0.0f ? floorf(x + 0.5f) : ceilf(x - 0.5f); } +#endif #define INFINITY (DBL_MAX + DBL_MAX) #define NAN (INFINITY - INFINITY) @@ -717,13 +721,18 @@ util_bitcount(unsigned n) */ #ifdef PIPE_ARCH_BIG_ENDIAN +#define util_le64_to_cpu(x) util_bswap64(x) #define util_le32_to_cpu(x) util_bswap32(x) #define util_le16_to_cpu(x) util_bswap16(x) #else +#define util_le64_to_cpu(x) (x) #define util_le32_to_cpu(x) (x) #define util_le16_to_cpu(x) (x) #endif +#define util_cpu_to_le64(x) util_le64_to_cpu(x) +#define util_cpu_to_le32(x) util_le32_to_cpu(x) +#define util_cpu_to_le16(x) util_le16_to_cpu(x) /** * Reverse byte order of a 32 bit word. @@ -731,7 +740,8 @@ util_bitcount(unsigned n) static INLINE uint32_t util_bswap32(uint32_t n) { -#if defined(PIPE_CC_GCC) && (PIPE_CC_GCC_VERSION >= 403) +/* We need the gcc version checks for non-autoconf build system */ +#if defined(HAVE___BUILTIN_BSWAP32) || (defined(PIPE_CC_GCC) && (PIPE_CC_GCC_VERSION >= 403)) return __builtin_bswap32(n); #else return (n >> 24) | @@ -741,6 +751,20 @@ util_bswap32(uint32_t n) #endif } +/** + * Reverse byte order of a 64bit word. + */ +static INLINE uint64_t +util_bswap64(uint64_t n) +{ +#if defined(HAVE___BUILTIN_BSWAP64) + return __builtin_bswap64(n); +#else + return ((uint64_t)util_bswap32(n) << 32) | + util_bswap32((n >> 32)); +#endif +} + /** * Reverse byte order of a 16 bit word. diff --git a/mesalib/src/gallium/auxiliary/util/u_range.h b/mesalib/src/gallium/auxiliary/util/u_range.h index 4b1d0d1be..efe25ef5e 100644 --- a/mesalib/src/gallium/auxiliary/util/u_range.h +++ b/mesalib/src/gallium/auxiliary/util/u_range.h @@ -36,6 +36,8 @@ #include "os/os_thread.h" +#include "util/u_math.h" + struct util_range { unsigned start; /* inclusive */ unsigned end; /* exclusive */ diff --git a/mesalib/src/gallium/auxiliary/util/u_upload_mgr.c b/mesalib/src/gallium/auxiliary/util/u_upload_mgr.c index 7349d0068..744ea2e5e 100644 --- a/mesalib/src/gallium/auxiliary/util/u_upload_mgr.c +++ b/mesalib/src/gallium/auxiliary/util/u_upload_mgr.c @@ -44,11 +44,12 @@ struct u_upload_mgr { unsigned default_size; /* Minimum size of the upload buffer, in bytes. */ unsigned alignment; /* Alignment of each sub-allocation. */ unsigned bind; /* Bitmask of PIPE_BIND_* flags. */ + unsigned map_flags; /* Bitmask of PIPE_TRANSFER_* flags. */ + boolean map_persistent; /* If persistent mappings are supported. */ struct pipe_resource *buffer; /* Upload buffer. */ struct pipe_transfer *transfer; /* Transfer object for the upload buffer. */ uint8_t *map; /* Pointer to the mapped upload buffer. */ - unsigned size; /* Actual size of the upload buffer. */ unsigned offset; /* Aligned offset to the upload buffer, pointing * at the first unused byte. */ }; @@ -67,20 +68,39 @@ struct u_upload_mgr *u_upload_create( struct pipe_context *pipe, upload->default_size = default_size; upload->alignment = alignment; upload->bind = bind; - upload->buffer = NULL; + + upload->map_persistent = + pipe->screen->get_param(pipe->screen, + PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT); + + if (upload->map_persistent) { + upload->map_flags = PIPE_TRANSFER_WRITE | + PIPE_TRANSFER_PERSISTENT | + PIPE_TRANSFER_COHERENT; + } + else { + upload->map_flags = PIPE_TRANSFER_WRITE | + PIPE_TRANSFER_UNSYNCHRONIZED | + PIPE_TRANSFER_FLUSH_EXPLICIT; + } return upload; } -void u_upload_unmap( struct u_upload_mgr *upload ) + +static void upload_unmap_internal(struct u_upload_mgr *upload, boolean destroying) { + if (!destroying && upload->map_persistent) + return; + if (upload->transfer) { struct pipe_box *box = &upload->transfer->box; - if ((int) upload->offset > box->x) { + if (!upload->map_persistent && (int) upload->offset > box->x) { pipe_buffer_flush_mapped_range(upload->pipe, upload->transfer, box->x, upload->offset - box->x); } + pipe_transfer_unmap(upload->pipe, upload->transfer); upload->transfer = NULL; upload->map = NULL; @@ -88,12 +108,17 @@ void u_upload_unmap( struct u_upload_mgr *upload ) } +void u_upload_unmap( struct u_upload_mgr *upload ) +{ + upload_unmap_internal(upload, FALSE); +} + + static void u_upload_release_buffer(struct u_upload_mgr *upload) { /* Unmap and unreference the upload buffer. */ - u_upload_unmap(upload); + upload_unmap_internal(upload, TRUE); pipe_resource_reference( &upload->buffer, NULL ); - upload->size = 0; } @@ -108,6 +133,8 @@ static enum pipe_error u_upload_alloc_buffer( struct u_upload_mgr *upload, unsigned min_size ) { + struct pipe_screen *screen = upload->pipe->screen; + struct pipe_resource buffer; unsigned size; /* Release the old buffer, if present: @@ -118,28 +145,36 @@ u_upload_alloc_buffer( struct u_upload_mgr *upload, */ size = align(MAX2(upload->default_size, min_size), 4096); - upload->buffer = pipe_buffer_create( upload->pipe->screen, - upload->bind, - PIPE_USAGE_STREAM, - size ); + memset(&buffer, 0, sizeof buffer); + buffer.target = PIPE_BUFFER; + buffer.format = PIPE_FORMAT_R8_UNORM; /* want TYPELESS or similar */ + buffer.bind = upload->bind; + buffer.usage = PIPE_USAGE_STREAM; + buffer.width0 = size; + buffer.height0 = 1; + buffer.depth0 = 1; + buffer.array_size = 1; + + if (upload->map_persistent) { + buffer.flags = PIPE_RESOURCE_FLAG_MAP_PERSISTENT | + PIPE_RESOURCE_FLAG_MAP_COHERENT; + } + + upload->buffer = screen->resource_create(screen, &buffer); if (upload->buffer == NULL) { return PIPE_ERROR_OUT_OF_MEMORY; } /* Map the new buffer. */ upload->map = pipe_buffer_map_range(upload->pipe, upload->buffer, - 0, size, - PIPE_TRANSFER_WRITE | - PIPE_TRANSFER_FLUSH_EXPLICIT, + 0, size, upload->map_flags, &upload->transfer); if (upload->map == NULL) { upload->transfer = NULL; - upload->size = 0; pipe_resource_reference(&upload->buffer, NULL); return PIPE_ERROR_OUT_OF_MEMORY; } - upload->size = size; upload->offset = 0; return PIPE_OK; } @@ -164,7 +199,8 @@ enum pipe_error u_upload_alloc( struct u_upload_mgr *upload, /* Make sure we have enough space in the upload buffer * for the sub-allocation. */ - if (MAX2(upload->offset, alloc_offset) + alloc_size > upload->size) { + if (!upload->buffer || + MAX2(upload->offset, alloc_offset) + alloc_size > upload->buffer->width0) { enum pipe_error ret = u_upload_alloc_buffer(upload, alloc_offset + alloc_size); if (ret != PIPE_OK) @@ -175,10 +211,9 @@ enum pipe_error u_upload_alloc( struct u_upload_mgr *upload, if (!upload->map) { upload->map = pipe_buffer_map_range(upload->pipe, upload->buffer, - offset, upload->size - offset, - PIPE_TRANSFER_WRITE | - PIPE_TRANSFER_FLUSH_EXPLICIT | - PIPE_TRANSFER_UNSYNCHRONIZED, + offset, + upload->buffer->width0 - offset, + upload->map_flags, &upload->transfer); if (!upload->map) { upload->transfer = NULL; diff --git a/mesalib/src/glsl/Makefile.sources b/mesalib/src/glsl/Makefile.sources index e69c1ac61..5945590a5 100644 --- a/mesalib/src/glsl/Makefile.sources +++ b/mesalib/src/glsl/Makefile.sources @@ -67,6 +67,7 @@ LIBGLSL_FILES = \ $(GLSL_SRCDIR)/lower_jumps.cpp \ $(GLSL_SRCDIR)/lower_mat_op_to_vec.cpp \ $(GLSL_SRCDIR)/lower_noise.cpp \ + $(GLSL_SRCDIR)/lower_offset_array.cpp \ $(GLSL_SRCDIR)/lower_packed_varyings.cpp \ $(GLSL_SRCDIR)/lower_named_interface_blocks.cpp \ $(GLSL_SRCDIR)/lower_packing_builtins.cpp \ diff --git a/mesalib/src/glsl/ast.h b/mesalib/src/glsl/ast.h index e4c00a408..c7710e5d6 100644 --- a/mesalib/src/glsl/ast.h +++ b/mesalib/src/glsl/ast.h @@ -284,14 +284,14 @@ class ast_array_specifier : public ast_node { public: /** Unsized array specifier ([]) */ explicit ast_array_specifier(const struct YYLTYPE &locp) - : dimension_count(1), is_unsized_array(true) + : is_unsized_array(true) { set_location(locp); } /** Sized array specifier ([dim]) */ ast_array_specifier(const struct YYLTYPE &locp, ast_expression *dim) - : dimension_count(1), is_unsized_array(false) + : is_unsized_array(false) { set_location(locp); array_dimensions.push_tail(&dim->link); @@ -300,14 +300,10 @@ public: void add_dimension(ast_expression *dim) { array_dimensions.push_tail(&dim->link); - dimension_count++; } virtual void print(void) const; - /* Count including sized and unsized dimensions */ - unsigned dimension_count; - /* If true, this means that the array has an unsized outermost dimension. */ bool is_unsized_array; @@ -470,17 +466,36 @@ struct ast_type_qualifier { * local_size_x, and so on. */ unsigned local_size:3; + + /** \name Layout and memory qualifiers for ARB_shader_image_load_store. */ + /** \{ */ + unsigned early_fragment_tests:1; + unsigned explicit_image_format:1; + unsigned coherent:1; + unsigned _volatile:1; + unsigned restrict_flag:1; + unsigned read_only:1; /**< "readonly" qualifier. */ + unsigned write_only:1; /**< "writeonly" qualifier. */ + /** \} */ + + /** \name Layout qualifiers for GL_ARB_gpu_shader5 */ + /** \{ */ + unsigned invocations:1; + /** \} */ } /** \brief Set of flags, accessed by name. */ q; /** \brief Set of flags, accessed as a bitmask. */ - unsigned i; + uint64_t i; } flags; /** Precision of the type (highp/medium/lowp). */ unsigned precision:2; + /** Geometry shader invocations for GL_ARB_gpu_shader5. */ + int invocations; + /** * Location specified via GL_ARB_explicit_attrib_location layout * @@ -527,6 +542,25 @@ struct ast_type_qualifier { int local_size[3]; /** + * Image format specified with an ARB_shader_image_load_store + * layout qualifier. + * + * \note + * This field is only valid if \c explicit_image_format is set. + */ + GLenum image_format; + + /** + * Base type of the data read from or written to this image. Only + * the following enumerants are allowed: GLSL_TYPE_UINT, + * GLSL_TYPE_INT, GLSL_TYPE_FLOAT. + * + * \note + * This field is only valid if \c explicit_image_format is set. + */ + glsl_base_type image_base_type; + + /** * Return true if and only if an interpolation qualifier is present. */ bool has_interpolation() const; @@ -561,6 +595,12 @@ struct ast_type_qualifier { bool merge_qualifier(YYLTYPE *loc, _mesa_glsl_parse_state *state, ast_type_qualifier q); + + bool merge_in_qualifier(YYLTYPE *loc, + _mesa_glsl_parse_state *state, + ast_type_qualifier q, + ast_node* &node); + }; class ast_declarator_list; diff --git a/mesalib/src/glsl/ast_function.cpp b/mesalib/src/glsl/ast_function.cpp index 4c5b0e4aa..4b8447067 100644 --- a/mesalib/src/glsl/ast_function.cpp +++ b/mesalib/src/glsl/ast_function.cpp @@ -93,6 +93,57 @@ prototype_string(const glsl_type *return_type, const char *name, return str; } +static bool +verify_image_parameter(YYLTYPE *loc, _mesa_glsl_parse_state *state, + const ir_variable *formal, const ir_variable *actual) +{ + /** + * From the ARB_shader_image_load_store specification: + * + * "The values of image variables qualified with coherent, + * volatile, restrict, readonly, or writeonly may not be passed + * to functions whose formal parameters lack such + * qualifiers. [...] It is legal to have additional qualifiers + * on a formal parameter, but not to have fewer." + */ + if (actual->data.image.coherent && !formal->data.image.coherent) { + _mesa_glsl_error(loc, state, + "function call parameter `%s' drops " + "`coherent' qualifier", formal->name); + return false; + } + + if (actual->data.image._volatile && !formal->data.image._volatile) { + _mesa_glsl_error(loc, state, + "function call parameter `%s' drops " + "`volatile' qualifier", formal->name); + return false; + } + + if (actual->data.image.restrict_flag && !formal->data.image.restrict_flag) { + _mesa_glsl_error(loc, state, + "function call parameter `%s' drops " + "`restrict' qualifier", formal->name); + return false; + } + + if (actual->data.image.read_only && !formal->data.image.read_only) { + _mesa_glsl_error(loc, state, + "function call parameter `%s' drops " + "`readonly' qualifier", formal->name); + return false; + } + + if (actual->data.image.write_only && !formal->data.image.write_only) { + _mesa_glsl_error(loc, state, + "function call parameter `%s' drops " + "`writeonly' qualifier", formal->name); + return false; + } + + return true; +} + /** * Verify that 'out' and 'inout' actual parameters are lvalues. Also, verify * that 'const_in' formal parameters (an extension in our IR) correspond to @@ -180,6 +231,13 @@ verify_parameter_modes(_mesa_glsl_parse_state *state, } } + if (formal->type->is_image() && + actual->variable_referenced()) { + if (!verify_image_parameter(&loc, state, formal, + actual->variable_referenced())) + return false; + } + actual_ir_node = actual_ir_node->next; actual_ast_node = actual_ast_node->next; } diff --git a/mesalib/src/glsl/ast_to_hir.cpp b/mesalib/src/glsl/ast_to_hir.cpp index c89a26bf9..8f6e90174 100644 --- a/mesalib/src/glsl/ast_to_hir.cpp +++ b/mesalib/src/glsl/ast_to_hir.cpp @@ -969,6 +969,7 @@ do_comparison(void *mem_ctx, int operation, ir_rvalue *op0, ir_rvalue *op1) case GLSL_TYPE_ERROR: case GLSL_TYPE_VOID: case GLSL_TYPE_SAMPLER: + case GLSL_TYPE_IMAGE: case GLSL_TYPE_INTERFACE: case GLSL_TYPE_ATOMIC_UINT: /* I assume a comparison of a struct containing a sampler just @@ -1796,7 +1797,7 @@ ast_compound_statement::hir(exec_list *instructions, * Evaluate the given exec_node (which should be an ast_node representing * a single array dimension) and return its integer value. */ -static const unsigned +static unsigned process_array_size(exec_node *node, struct _mesa_glsl_parse_state *state) { @@ -2122,11 +2123,16 @@ validate_explicit_location(const struct ast_type_qualifier *qual, { bool fail = false; - /* In the vertex shader only shader inputs can be given explicit - * locations. + /* Between GL_ARB_explicit_attrib_location an + * GL_ARB_separate_shader_objects, the inputs and outputs of any shader + * stage can be assigned explicit locations. The checking here associates + * the correct extension with the correct stage's input / output: * - * In the fragment shader only shader outputs can be given explicit - * locations. + * input output + * ----- ------ + * vertex explicit_loc sso + * geometry sso sso + * fragment sso explicit_loc */ switch (state->stage) { case MESA_SHADER_VERTEX: @@ -2137,16 +2143,35 @@ validate_explicit_location(const struct ast_type_qualifier *qual, break; } + if (var->data.mode == ir_var_shader_out) { + if (!state->check_separate_shader_objects_allowed(loc, var)) + return; + + break; + } + fail = true; break; case MESA_SHADER_GEOMETRY: - _mesa_glsl_error(loc, state, - "geometry shader variables cannot be given " - "explicit locations"); - return; + if (var->data.mode == ir_var_shader_in || var->data.mode == ir_var_shader_out) { + if (!state->check_separate_shader_objects_allowed(loc, var)) + return; + + break; + } + + fail = true; + break; case MESA_SHADER_FRAGMENT: + if (var->data.mode == ir_var_shader_in) { + if (!state->check_separate_shader_objects_allowed(loc, var)) + return; + + break; + } + if (var->data.mode == ir_var_shader_out) { if (!state->check_explicit_attrib_location_allowed(loc, var)) return; @@ -2180,9 +2205,26 @@ validate_explicit_location(const struct ast_type_qualifier *qual, * ensures that negative values stay negative. */ if (qual->location >= 0) { - var->data.location = (state->stage == MESA_SHADER_VERTEX) - ? (qual->location + VERT_ATTRIB_GENERIC0) - : (qual->location + FRAG_RESULT_DATA0); + switch (state->stage) { + case MESA_SHADER_VERTEX: + var->data.location = (var->data.mode == ir_var_shader_in) + ? (qual->location + VERT_ATTRIB_GENERIC0) + : (qual->location + VARYING_SLOT_VAR0); + break; + + case MESA_SHADER_GEOMETRY: + var->data.location = qual->location + VARYING_SLOT_VAR0; + break; + + case MESA_SHADER_FRAGMENT: + var->data.location = (var->data.mode == ir_var_shader_out) + ? (qual->location + FRAG_RESULT_DATA0) + : (qual->location + VARYING_SLOT_VAR0); + break; + case MESA_SHADER_COMPUTE: + assert(!"Unexpected shader type"); + break; + } } else { var->data.location = qual->location; } @@ -2206,8 +2248,54 @@ validate_explicit_location(const struct ast_type_qualifier *qual, } } } +} + +static void +apply_image_qualifier_to_variable(const struct ast_type_qualifier *qual, + ir_variable *var, + struct _mesa_glsl_parse_state *state, + YYLTYPE *loc) +{ + const glsl_type *base_type = + (var->type->is_array() ? var->type->element_type() : var->type); + + if (base_type->is_image()) { + if (var->data.mode != ir_var_uniform && + var->data.mode != ir_var_function_in) { + _mesa_glsl_error(loc, state, "image variables may only be declared as " + "function parameters or uniform-qualified " + "global variables"); + } + + var->data.image.read_only |= qual->flags.q.read_only; + var->data.image.write_only |= qual->flags.q.write_only; + var->data.image.coherent |= qual->flags.q.coherent; + var->data.image._volatile |= qual->flags.q._volatile; + var->data.image.restrict_flag |= qual->flags.q.restrict_flag; + var->data.read_only = true; + + if (qual->flags.q.explicit_image_format) { + if (var->data.mode == ir_var_function_in) { + _mesa_glsl_error(loc, state, "format qualifiers cannot be " + "used on image function parameters"); + } + + if (qual->image_base_type != base_type->sampler_type) { + _mesa_glsl_error(loc, state, "format qualifier doesn't match the " + "base data type of the image"); + } + + var->data.image.format = qual->image_format; + } else { + if (var->data.mode == ir_var_uniform && !qual->flags.q.write_only) { + _mesa_glsl_error(loc, state, "uniforms not qualified with " + "`writeonly' must have a format layout " + "qualifier"); + } - return; + var->data.image.format = GL_NONE; + } + } } static void @@ -2500,6 +2588,9 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual, if (qual->flags.q.row_major || qual->flags.q.column_major) { validate_matrix_layout_for_type(state, loc, var->type, var); } + + if (var->type->contains_image()) + apply_image_qualifier_to_variable(qual, var, state, loc); } /** @@ -2659,9 +2750,15 @@ process_initializer(ir_variable *var, ast_declaration *decl, "cannot initialize uniforms"); } - if (var->type->is_sampler()) { + /* From section 4.1.7 of the GLSL 4.40 spec: + * + * "Opaque variables [...] are initialized only through the + * OpenGL API; they cannot be declared with an initializer in a + * shader." + */ + if (var->type->contains_opaque()) { _mesa_glsl_error(& initializer_loc, state, - "cannot initialize samplers"); + "cannot initialize opaque variable"); } if ((var->data.mode == ir_var_shader_in) && (state->current_function == NULL)) { @@ -2784,7 +2881,7 @@ handle_geometry_shader_input_decl(struct _mesa_glsl_parse_state *state, { unsigned num_vertices = 0; if (state->gs_input_prim_type_specified) { - num_vertices = vertices_per_prim(state->gs_input_prim_type); + num_vertices = vertices_per_prim(state->in_qualifier->prim_type); } /* Geometry shader input variables must be arrays. Caller should have @@ -2870,10 +2967,17 @@ validate_identifier(const char *identifier, YYLTYPE loc, * "In addition, all identifiers containing two * consecutive underscores (__) are reserved as * possible future keywords." + * + * The intention is that names containing __ are reserved for internal + * use by the implementation, and names prefixed with GL_ are reserved + * for use by Khronos. Names simply containing __ are dangerous to use, + * but should be allowed. + * + * A future version of the GLSL specification will clarify this. */ - _mesa_glsl_error(&loc, state, - "identifier `%s' uses reserved `__' string", - identifier); + _mesa_glsl_warning(&loc, state, + "identifier `%s' uses reserved `__' string", + identifier); } } @@ -3082,6 +3186,7 @@ ast_declarator_list::hir(exec_list *instructions, */ if (!state->is_version(130, 300) && !state->has_explicit_attrib_location() + && !state->has_separate_shader_objects() && !state->ARB_fragment_coord_conventions_enable) { if (this->type->qualifier.flags.q.out) { _mesa_glsl_error(& loc, state, @@ -3421,15 +3526,15 @@ ast_declarator_list::hir(exec_list *instructions, ", integer and sampler types"); } - /* From page 17 (page 23 of the PDF) of the GLSL 1.20 spec: + /* From section 4.1.7 of the GLSL 4.40 spec: * - * "[Sampler types] can only be declared as function - * parameters or uniform variables (see Section 4.3.5 - * "Uniform")". + * "[Opaque types] can only be declared as function + * parameters or uniform-qualified variables." */ - if (var_type->contains_sampler() && + if (var_type->contains_opaque() && !this->type->qualifier.flags.q.uniform) { - _mesa_glsl_error(&loc, state, "samplers must be declared uniform"); + _mesa_glsl_error(&loc, state, + "opaque variables must be declared uniform"); } /* Process the initializer and add its instructions to a temporary @@ -3621,15 +3726,16 @@ ast_parameter_declarator::hir(exec_list *instructions, apply_type_qualifier_to_variable(& this->type->qualifier, var, state, & loc, true); - /* From page 17 (page 23 of the PDF) of the GLSL 1.20 spec: + /* From section 4.1.7 of the GLSL 4.40 spec: * - * "Samplers cannot be treated as l-values; hence cannot be used - * as out or inout function parameters, nor can they be assigned - * into." + * "Opaque variables cannot be treated as l-values; hence cannot + * be used as out or inout function parameters, nor can they be + * assigned into." */ if ((var->data.mode == ir_var_function_inout || var->data.mode == ir_var_function_out) - && type->contains_sampler()) { - _mesa_glsl_error(&loc, state, "out and inout parameters cannot contain samplers"); + && type->contains_opaque()) { + _mesa_glsl_error(&loc, state, "out and inout parameters cannot " + "contain opaque variables"); type = glsl_type::error_type; } @@ -3784,15 +3890,15 @@ ast_function::hir(exec_list *instructions, "sized", name); } - /* From page 17 (page 23 of the PDF) of the GLSL 1.20 spec: + /* From section 4.1.7 of the GLSL 4.40 spec: * - * "[Sampler types] can only be declared as function parameters - * or uniform variables (see Section 4.3.5 "Uniform")". + * "[Opaque types] can only be declared as function parameters + * or uniform-qualified variables." */ - if (return_type->contains_sampler()) { + if (return_type->contains_opaque()) { YYLTYPE loc = this->get_location(); _mesa_glsl_error(&loc, state, - "function `%s' return type can't contain a sampler", + "function `%s' return type can't contain an opaque type", name); } @@ -4693,12 +4799,9 @@ ast_process_structure_or_interface_block(exec_list *instructions, if (!allow_reserved_names) validate_identifier(decl->identifier, loc, state); - /* From the GL_ARB_uniform_buffer_object spec: + /* From section 4.3.9 of the GLSL 4.40 spec: * - * "Sampler types are not allowed inside of uniform - * blocks. All other types, arrays, and structures - * allowed for uniforms are allowed within a uniform - * block." + * "[In interface blocks] opaque types are not allowed." * * It should be impossible for decl_type to be NULL here. Cases that * might naturally lead to decl_type being NULL, especially for the @@ -4708,10 +4811,11 @@ ast_process_structure_or_interface_block(exec_list *instructions, const struct glsl_type *field_type = decl_type != NULL ? decl_type : glsl_type::error_type; - if (is_interface && field_type->contains_sampler()) { + if (is_interface && field_type->contains_opaque()) { YYLTYPE loc = decl_list->get_location(); _mesa_glsl_error(&loc, state, - "uniform in non-default uniform block contains sampler"); + "uniform in non-default uniform block contains " + "opaque variable"); } if (field_type->contains_atomic()) { @@ -4725,6 +4829,16 @@ ast_process_structure_or_interface_block(exec_list *instructions, "uniform block"); } + if (field_type->contains_image()) { + /* FINISHME: Same problem as with atomic counters. + * FINISHME: Request clarification from Khronos and add + * FINISHME: spec quotation here. + */ + YYLTYPE loc = decl_list->get_location(); + _mesa_glsl_error(&loc, state, + "image in structure or uniform block"); + } + const struct ast_type_qualifier *const qual = & decl_list->type->qualifier; if (qual->flags.q.std140 || @@ -5258,7 +5372,7 @@ ast_gs_input_layout::hir(exec_list *instructions, * was consistent with this one. */ if (state->gs_input_prim_type_specified && - state->gs_input_prim_type != this->prim_type) { + state->in_qualifier->prim_type != this->prim_type) { _mesa_glsl_error(&loc, state, "geometry shader input layout does not match" " previous declaration"); @@ -5279,7 +5393,6 @@ ast_gs_input_layout::hir(exec_list *instructions, } state->gs_input_prim_type_specified = true; - state->gs_input_prim_type = this->prim_type; /* If any shader inputs occurred before this declaration and did not * specify an array size, their size is determined now. diff --git a/mesalib/src/glsl/ast_type.cpp b/mesalib/src/glsl/ast_type.cpp index bbc430808..0ee2c495a 100644 --- a/mesalib/src/glsl/ast_type.cpp +++ b/mesalib/src/glsl/ast_type.cpp @@ -190,6 +190,117 @@ ast_type_qualifier::merge_qualifier(YYLTYPE *loc, if (q.precision != ast_precision_none) this->precision = q.precision; + if (q.flags.q.explicit_image_format) { + this->image_format = q.image_format; + this->image_base_type = q.image_base_type; + } + return true; } +bool +ast_type_qualifier::merge_in_qualifier(YYLTYPE *loc, + _mesa_glsl_parse_state *state, + ast_type_qualifier q, + ast_node* &node) +{ + void *mem_ctx = state; + bool create_gs_ast = false; + bool create_cs_ast = false; + ast_type_qualifier valid_in_mask; + valid_in_mask.flags.i = 0; + + switch (state->stage) { + case MESA_SHADER_GEOMETRY: + if (q.flags.q.prim_type) { + /* Make sure this is a valid input primitive type. */ + switch (q.prim_type) { + case GL_POINTS: + case GL_LINES: + case GL_LINES_ADJACENCY: + case GL_TRIANGLES: + case GL_TRIANGLES_ADJACENCY: + break; + default: + _mesa_glsl_error(loc, state, + "invalid geometry shader input primitive type"); + break; + } + } + + create_gs_ast |= + q.flags.q.prim_type && + !state->in_qualifier->flags.q.prim_type; + + valid_in_mask.flags.q.prim_type = 1; + valid_in_mask.flags.q.invocations = 1; + break; + case MESA_SHADER_FRAGMENT: + if (q.flags.q.early_fragment_tests) { + state->early_fragment_tests = true; + } else { + _mesa_glsl_error(loc, state, "invalid input layout qualifier"); + } + break; + case MESA_SHADER_COMPUTE: + create_cs_ast |= + q.flags.q.local_size != 0 && + state->in_qualifier->flags.q.local_size == 0; + + valid_in_mask.flags.q.local_size = 1; + break; + default: + _mesa_glsl_error(loc, state, + "input layout qualifiers only valid in " + "geometry, fragment and compute shaders"); + break; + } + + /* Generate an error when invalid input layout qualifiers are used. */ + if ((q.flags.i & ~valid_in_mask.flags.i) != 0) { + _mesa_glsl_error(loc, state, + "invalid input layout qualifiers used"); + return false; + } + + /* Input layout qualifiers can be specified multiple + * times in separate declarations, as long as they match. + */ + if (this->flags.q.prim_type) { + if (q.flags.q.prim_type && + this->prim_type != q.prim_type) { + _mesa_glsl_error(loc, state, + "conflicting input primitive types specified"); + } + } else if (q.flags.q.prim_type) { + state->in_qualifier->flags.q.prim_type = 1; + state->in_qualifier->prim_type = q.prim_type; + } + + if (this->flags.q.invocations && + q.flags.q.invocations && + this->invocations != q.invocations) { + _mesa_glsl_error(loc, state, + "conflicting invocations counts specified"); + return false; + } else if (q.flags.q.invocations) { + this->flags.q.invocations = 1; + this->invocations = q.invocations; + } + + if (create_gs_ast) { + node = new(mem_ctx) ast_gs_input_layout(*loc, q.prim_type); + } else if (create_cs_ast) { + /* Infer a local_size of 1 for every unspecified dimension */ + unsigned local_size[3]; + for (int i = 0; i < 3; i++) { + if (q.flags.q.local_size & (1 << i)) + local_size[i] = q.local_size[i]; + else + local_size[i] = 1; + } + node = new(mem_ctx) ast_cs_input_layout(*loc, local_size); + } + + return true; +} diff --git a/mesalib/src/glsl/builtin_functions.cpp b/mesalib/src/glsl/builtin_functions.cpp index ed58ddddb..c4f39abb7 100755 --- a/mesalib/src/glsl/builtin_functions.cpp +++ b/mesalib/src/glsl/builtin_functions.cpp @@ -340,6 +340,13 @@ shader_trinary_minmax(const _mesa_glsl_parse_state *state) return state->AMD_shader_trinary_minmax_enable; } +static bool +shader_image_load_store(const _mesa_glsl_parse_state *state) +{ + return (state->is_version(420, 0) || + state->ARB_shader_image_load_store_enable); +} + /** @} */ /******************************************************************************/ @@ -413,6 +420,33 @@ private: /** Create a new function and add the given signatures. */ void add_function(const char *name, ...); + enum image_function_flags { + IMAGE_FUNCTION_EMIT_STUB = (1 << 0), + IMAGE_FUNCTION_RETURNS_VOID = (1 << 1), + IMAGE_FUNCTION_HAS_VECTOR_DATA_TYPE = (1 << 2), + IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE = (1 << 3), + IMAGE_FUNCTION_READ_ONLY = (1 << 4), + IMAGE_FUNCTION_WRITE_ONLY = (1 << 5) + }; + + /** + * Create a new image built-in function for all known image types. + * \p flags is a bitfield of \c image_function_flags flags. + */ + void add_image_function(const char *name, + const char *intrinsic_name, + unsigned num_arguments, + unsigned flags); + + /** + * Create new functions for all known image built-ins and types. + * If \p glsl is \c true, use the GLSL built-in names and emit code + * to call into the actual compiler intrinsic. If \p glsl is + * false, emit a function prototype with no body for each image + * intrinsic name. + */ + void add_image_functions(bool glsl); + ir_function_signature *new_sig(const glsl_type *return_type, builtin_available_predicate avail, int num_params, ...); @@ -580,6 +614,20 @@ private: B1(max3) B1(mid3) + ir_function_signature *_image_prototype(const glsl_type *image_type, + const char *intrinsic_name, + unsigned num_arguments, + unsigned flags); + ir_function_signature *_image(const glsl_type *image_type, + const char *intrinsic_name, + unsigned num_arguments, + unsigned flags); + + ir_function_signature *_memory_barrier_intrinsic( + builtin_available_predicate avail); + ir_function_signature *_memory_barrier( + builtin_available_predicate avail); + #undef B0 #undef B1 #undef B2 @@ -694,6 +742,12 @@ builtin_builder::create_intrinsics() add_function("__intrinsic_atomic_predecrement", _atomic_intrinsic(shader_atomic_counters), NULL); + + add_image_functions(false); + + add_function("__intrinsic_memory_barrier", + _memory_barrier_intrinsic(shader_image_load_store), + NULL); } /** @@ -2167,6 +2221,12 @@ builtin_builder::create_builtins() _mid3(glsl_type::uvec4_type), NULL); + add_image_functions(true); + + add_function("memoryBarrier", + _memory_barrier(shader_image_load_store), + NULL); + #undef F #undef FI #undef FIU @@ -2200,6 +2260,104 @@ builtin_builder::add_function(const char *name, ...) shader->symbols->add_function(f); } +void +builtin_builder::add_image_function(const char *name, + const char *intrinsic_name, + unsigned num_arguments, + unsigned flags) +{ + static const glsl_type *const types[] = { + glsl_type::image1D_type, + glsl_type::image2D_type, + glsl_type::image3D_type, + glsl_type::image2DRect_type, + glsl_type::imageCube_type, + glsl_type::imageBuffer_type, + glsl_type::image1DArray_type, + glsl_type::image2DArray_type, + glsl_type::imageCubeArray_type, + glsl_type::image2DMS_type, + glsl_type::image2DMSArray_type, + glsl_type::iimage1D_type, + glsl_type::iimage2D_type, + glsl_type::iimage3D_type, + glsl_type::iimage2DRect_type, + glsl_type::iimageCube_type, + glsl_type::iimageBuffer_type, + glsl_type::iimage1DArray_type, + glsl_type::iimage2DArray_type, + glsl_type::iimageCubeArray_type, + glsl_type::iimage2DMS_type, + glsl_type::iimage2DMSArray_type, + glsl_type::uimage1D_type, + glsl_type::uimage2D_type, + glsl_type::uimage3D_type, + glsl_type::uimage2DRect_type, + glsl_type::uimageCube_type, + glsl_type::uimageBuffer_type, + glsl_type::uimage1DArray_type, + glsl_type::uimage2DArray_type, + glsl_type::uimageCubeArray_type, + glsl_type::uimage2DMS_type, + glsl_type::uimage2DMSArray_type + }; + ir_function *f = new(mem_ctx) ir_function(name); + + for (unsigned i = 0; i < Elements(types); ++i) { + if (types[i]->sampler_type != GLSL_TYPE_FLOAT || + (flags & IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE)) + f->add_signature(_image(types[i], intrinsic_name, + num_arguments, flags)); + } + + shader->symbols->add_function(f); +} + +void +builtin_builder::add_image_functions(bool glsl) +{ + const unsigned flags = (glsl ? IMAGE_FUNCTION_EMIT_STUB : 0); + + add_image_function(glsl ? "imageLoad" : "__intrinsic_image_load", + "__intrinsic_image_load", 0, + (flags | IMAGE_FUNCTION_HAS_VECTOR_DATA_TYPE | + IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE | + IMAGE_FUNCTION_READ_ONLY)); + + add_image_function(glsl ? "imageStore" : "__intrinsic_image_store", + "__intrinsic_image_store", 1, + (flags | IMAGE_FUNCTION_RETURNS_VOID | + IMAGE_FUNCTION_HAS_VECTOR_DATA_TYPE | + IMAGE_FUNCTION_SUPPORTS_FLOAT_DATA_TYPE | + IMAGE_FUNCTION_WRITE_ONLY)); + + add_image_function(glsl ? "imageAtomicAdd" : "__intrinsic_image_atomic_add", + "__intrinsic_image_atomic_add", 1, flags); + + add_image_function(glsl ? "imageAtomicMin" : "__intrinsic_image_atomic_min", + "__intrinsic_image_atomic_min", 1, flags); + + add_image_function(glsl ? "imageAtomicMax" : "__intrinsic_image_atomic_max", + "__intrinsic_image_atomic_max", 1, flags); + + add_image_function(glsl ? "imageAtomicAnd" : "__intrinsic_image_atomic_and", + "__intrinsic_image_atomic_and", 1, flags); + + add_image_function(glsl ? "imageAtomicOr" : "__intrinsic_image_atomic_or", + "__intrinsic_image_atomic_or", 1, flags); + + add_image_function(glsl ? "imageAtomicXor" : "__intrinsic_image_atomic_xor", + "__intrinsic_image_atomic_xor", 1, flags); + + add_image_function((glsl ? "imageAtomicExchange" : + "__intrinsic_image_atomic_exchange"), + "__intrinsic_image_atomic_exchange", 1, flags); + + add_image_function((glsl ? "imageAtomicCompSwap" : + "__intrinsic_image_atomic_comp_swap"), + "__intrinsic_image_atomic_comp_swap", 2, flags); +} + ir_variable * builtin_builder::in_var(const glsl_type *type, const char *name) { @@ -3549,7 +3707,7 @@ builtin_builder::_texture(ir_texture_opcode opcode, ir_texture *tex = new(mem_ctx) ir_texture(opcode); tex->set_sampler(var_ref(s), return_type); - const int coord_size = sampler_type->sampler_coordinate_components(); + const int coord_size = sampler_type->coordinate_components(); if (coord_size == coord_type->vector_elements) { tex->coordinate = var_ref(P); @@ -4094,12 +4252,106 @@ builtin_builder::_mid3(const glsl_type *type) return sig; } +ir_function_signature * +builtin_builder::_image_prototype(const glsl_type *image_type, + const char *intrinsic_name, + unsigned num_arguments, + unsigned flags) +{ + const glsl_type *data_type = glsl_type::get_instance( + image_type->sampler_type, + (flags & IMAGE_FUNCTION_HAS_VECTOR_DATA_TYPE ? 4 : 1), + 1); + const glsl_type *ret_type = (flags & IMAGE_FUNCTION_RETURNS_VOID ? + glsl_type::void_type : data_type); + + /* Addressing arguments that are always present. */ + ir_variable *image = in_var(image_type, "image"); + ir_variable *coord = in_var( + glsl_type::ivec(image_type->coordinate_components()), "coord"); + + ir_function_signature *sig = new_sig( + ret_type, shader_image_load_store, 2, image, coord); + + /* Sample index for multisample images. */ + if (image_type->sampler_dimensionality == GLSL_SAMPLER_DIM_MS) + sig->parameters.push_tail(in_var(glsl_type::int_type, "sample")); + + /* Data arguments. */ + for (unsigned i = 0; i < num_arguments; ++i) + sig->parameters.push_tail(in_var(data_type, + ralloc_asprintf(NULL, "arg%d", i))); + + /* Set the maximal set of qualifiers allowed for this image + * built-in. Function calls with arguments having fewer + * qualifiers than present in the prototype are allowed by the + * spec, but not with more, i.e. this will make the compiler + * accept everything that needs to be accepted, and reject cases + * like loads from write-only or stores to read-only images. + */ + image->data.image.read_only = flags & IMAGE_FUNCTION_READ_ONLY; + image->data.image.write_only = flags & IMAGE_FUNCTION_WRITE_ONLY; + image->data.image.coherent = true; + image->data.image._volatile = true; + image->data.image.restrict_flag = true; + + return sig; +} + +ir_function_signature * +builtin_builder::_image(const glsl_type *image_type, + const char *intrinsic_name, + unsigned num_arguments, + unsigned flags) +{ + ir_function_signature *sig = _image_prototype(image_type, intrinsic_name, + num_arguments, flags); + + if (flags & IMAGE_FUNCTION_EMIT_STUB) { + ir_factory body(&sig->body, mem_ctx); + ir_function *f = shader->symbols->get_function(intrinsic_name); + + if (flags & IMAGE_FUNCTION_RETURNS_VOID) { + body.emit(call(f, NULL, sig->parameters)); + } else { + ir_variable *ret_val = + body.make_temp(sig->return_type, "_ret_val"); + body.emit(call(f, ret_val, sig->parameters)); + body.emit(ret(ret_val)); + } + + sig->is_defined = true; + + } else { + sig->is_intrinsic = true; + } + + return sig; +} + +ir_function_signature * +builtin_builder::_memory_barrier_intrinsic(builtin_available_predicate avail) +{ + MAKE_INTRINSIC(glsl_type::void_type, avail, 0); + return sig; +} + +ir_function_signature * +builtin_builder::_memory_barrier(builtin_available_predicate avail) +{ + MAKE_SIG(glsl_type::void_type, avail, 0); + body.emit(call(shader->symbols->get_function("__intrinsic_memory_barrier"), + NULL, sig->parameters)); + return sig; +} + /** @} */ /******************************************************************************/ /* The singleton instance of builtin_builder. */ static builtin_builder builtins; +static mtx_t builtins_lock = _MTX_INITIALIZER_NP; /** * External API (exposing the built-in module to the rest of the compiler): @@ -4108,20 +4360,28 @@ static builtin_builder builtins; void _mesa_glsl_initialize_builtin_functions() { + mtx_lock(&builtins_lock); builtins.initialize(); + mtx_unlock(&builtins_lock); } void _mesa_glsl_release_builtin_functions() { + mtx_lock(&builtins_lock); builtins.release(); + mtx_unlock(&builtins_lock); } ir_function_signature * _mesa_glsl_find_builtin_function(_mesa_glsl_parse_state *state, const char *name, exec_list *actual_parameters) { - return builtins.find(state, name, actual_parameters); + ir_function_signature * s; + mtx_lock(&builtins_lock); + s = builtins.find(state, name, actual_parameters); + mtx_unlock(&builtins_lock); + return s; } gl_shader * diff --git a/mesalib/src/glsl/builtin_type_macros.h b/mesalib/src/glsl/builtin_type_macros.h index 06b4dbd0f..236e1ce8c 100644 --- a/mesalib/src/glsl/builtin_type_macros.h +++ b/mesalib/src/glsl/builtin_type_macros.h @@ -64,51 +64,85 @@ DECL_TYPE(mat3x4, GL_FLOAT_MAT3x4, GLSL_TYPE_FLOAT, 4, 3) DECL_TYPE(mat4x2, GL_FLOAT_MAT4x2, GLSL_TYPE_FLOAT, 2, 4) DECL_TYPE(mat4x3, GL_FLOAT_MAT4x3, GLSL_TYPE_FLOAT, 3, 4) -DECL_TYPE(sampler1D, GL_SAMPLER_1D, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler2D, GL_SAMPLER_2D, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler3D, GL_SAMPLER_3D, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_FLOAT) -DECL_TYPE(samplerCube, GL_SAMPLER_CUBE, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler1DArray, GL_SAMPLER_1D_ARRAY, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler2DArray, GL_SAMPLER_2D_ARRAY, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_FLOAT) -DECL_TYPE(samplerCubeArray, GL_SAMPLER_CUBE_MAP_ARRAY, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler2DRect, GL_SAMPLER_2D_RECT, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_FLOAT) -DECL_TYPE(samplerBuffer, GL_SAMPLER_BUFFER, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler2DMS, GL_SAMPLER_2D_MULTISAMPLE, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler2DMSArray, GL_SAMPLER_2D_MULTISAMPLE_ARRAY, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_FLOAT) - -DECL_TYPE(isampler1D, GL_INT_SAMPLER_1D, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_INT) -DECL_TYPE(isampler2D, GL_INT_SAMPLER_2D, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_INT) -DECL_TYPE(isampler3D, GL_INT_SAMPLER_3D, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_INT) -DECL_TYPE(isamplerCube, GL_INT_SAMPLER_CUBE, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_INT) -DECL_TYPE(isampler1DArray, GL_INT_SAMPLER_1D_ARRAY, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_INT) -DECL_TYPE(isampler2DArray, GL_INT_SAMPLER_2D_ARRAY, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_INT) -DECL_TYPE(isamplerCubeArray, GL_INT_SAMPLER_CUBE_MAP_ARRAY, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_INT) -DECL_TYPE(isampler2DRect, GL_INT_SAMPLER_2D_RECT, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_INT) -DECL_TYPE(isamplerBuffer, GL_INT_SAMPLER_BUFFER, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_INT) -DECL_TYPE(isampler2DMS, GL_INT_SAMPLER_2D_MULTISAMPLE, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_INT) -DECL_TYPE(isampler2DMSArray, GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_INT) - -DECL_TYPE(usampler1D, GL_UNSIGNED_INT_SAMPLER_1D, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_UINT) -DECL_TYPE(usampler2D, GL_UNSIGNED_INT_SAMPLER_2D, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_UINT) -DECL_TYPE(usampler3D, GL_UNSIGNED_INT_SAMPLER_3D, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_UINT) -DECL_TYPE(usamplerCube, GL_UNSIGNED_INT_SAMPLER_CUBE, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_UINT) -DECL_TYPE(usampler1DArray, GL_UNSIGNED_INT_SAMPLER_1D_ARRAY, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_UINT) -DECL_TYPE(usampler2DArray, GL_UNSIGNED_INT_SAMPLER_2D_ARRAY, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_UINT) -DECL_TYPE(usamplerCubeArray, GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_UINT) -DECL_TYPE(usampler2DRect, GL_UNSIGNED_INT_SAMPLER_2D_RECT, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_UINT) -DECL_TYPE(usamplerBuffer, GL_UNSIGNED_INT_SAMPLER_BUFFER, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_UINT) -DECL_TYPE(usampler2DMS, GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_UINT) -DECL_TYPE(usampler2DMSArray, GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_UINT) - -DECL_TYPE(sampler1DShadow, GL_SAMPLER_1D_SHADOW, GLSL_SAMPLER_DIM_1D, 1, 0, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler2DShadow, GL_SAMPLER_2D_SHADOW, GLSL_SAMPLER_DIM_2D, 1, 0, GLSL_TYPE_FLOAT) -DECL_TYPE(samplerCubeShadow, GL_SAMPLER_CUBE_SHADOW, GLSL_SAMPLER_DIM_CUBE, 1, 0, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler1DArrayShadow, GL_SAMPLER_1D_ARRAY_SHADOW, GLSL_SAMPLER_DIM_1D, 1, 1, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler2DArrayShadow, GL_SAMPLER_2D_ARRAY_SHADOW, GLSL_SAMPLER_DIM_2D, 1, 1, GLSL_TYPE_FLOAT) -DECL_TYPE(samplerCubeArrayShadow, GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW, GLSL_SAMPLER_DIM_CUBE, 1, 1, GLSL_TYPE_FLOAT) -DECL_TYPE(sampler2DRectShadow, GL_SAMPLER_2D_RECT_SHADOW, GLSL_SAMPLER_DIM_RECT, 1, 0, GLSL_TYPE_FLOAT) - -DECL_TYPE(samplerExternalOES, GL_SAMPLER_EXTERNAL_OES, GLSL_SAMPLER_DIM_EXTERNAL, 0, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler1D, GL_SAMPLER_1D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler2D, GL_SAMPLER_2D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler3D, GL_SAMPLER_3D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(samplerCube, GL_SAMPLER_CUBE, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler1DArray, GL_SAMPLER_1D_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler2DArray, GL_SAMPLER_2D_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_FLOAT) +DECL_TYPE(samplerCubeArray, GL_SAMPLER_CUBE_MAP_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler2DRect, GL_SAMPLER_2D_RECT, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(samplerBuffer, GL_SAMPLER_BUFFER, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler2DMS, GL_SAMPLER_2D_MULTISAMPLE, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler2DMSArray, GL_SAMPLER_2D_MULTISAMPLE_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_FLOAT) + +DECL_TYPE(isampler1D, GL_INT_SAMPLER_1D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_INT) +DECL_TYPE(isampler2D, GL_INT_SAMPLER_2D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_INT) +DECL_TYPE(isampler3D, GL_INT_SAMPLER_3D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_INT) +DECL_TYPE(isamplerCube, GL_INT_SAMPLER_CUBE, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_INT) +DECL_TYPE(isampler1DArray, GL_INT_SAMPLER_1D_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_INT) +DECL_TYPE(isampler2DArray, GL_INT_SAMPLER_2D_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_INT) +DECL_TYPE(isamplerCubeArray, GL_INT_SAMPLER_CUBE_MAP_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_INT) +DECL_TYPE(isampler2DRect, GL_INT_SAMPLER_2D_RECT, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_INT) +DECL_TYPE(isamplerBuffer, GL_INT_SAMPLER_BUFFER, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_INT) +DECL_TYPE(isampler2DMS, GL_INT_SAMPLER_2D_MULTISAMPLE, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_INT) +DECL_TYPE(isampler2DMSArray, GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_INT) + +DECL_TYPE(usampler1D, GL_UNSIGNED_INT_SAMPLER_1D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_UINT) +DECL_TYPE(usampler2D, GL_UNSIGNED_INT_SAMPLER_2D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_UINT) +DECL_TYPE(usampler3D, GL_UNSIGNED_INT_SAMPLER_3D, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_UINT) +DECL_TYPE(usamplerCube, GL_UNSIGNED_INT_SAMPLER_CUBE, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_UINT) +DECL_TYPE(usampler1DArray, GL_UNSIGNED_INT_SAMPLER_1D_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_UINT) +DECL_TYPE(usampler2DArray, GL_UNSIGNED_INT_SAMPLER_2D_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_UINT) +DECL_TYPE(usamplerCubeArray, GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_UINT) +DECL_TYPE(usampler2DRect, GL_UNSIGNED_INT_SAMPLER_2D_RECT, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_UINT) +DECL_TYPE(usamplerBuffer, GL_UNSIGNED_INT_SAMPLER_BUFFER, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_UINT) +DECL_TYPE(usampler2DMS, GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_UINT) +DECL_TYPE(usampler2DMSArray, GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_UINT) + +DECL_TYPE(sampler1DShadow, GL_SAMPLER_1D_SHADOW, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 1, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler2DShadow, GL_SAMPLER_2D_SHADOW, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 1, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(samplerCubeShadow, GL_SAMPLER_CUBE_SHADOW, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 1, 0, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler1DArrayShadow, GL_SAMPLER_1D_ARRAY_SHADOW, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_1D, 1, 1, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler2DArrayShadow, GL_SAMPLER_2D_ARRAY_SHADOW, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_2D, 1, 1, GLSL_TYPE_FLOAT) +DECL_TYPE(samplerCubeArrayShadow, GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_CUBE, 1, 1, GLSL_TYPE_FLOAT) +DECL_TYPE(sampler2DRectShadow, GL_SAMPLER_2D_RECT_SHADOW, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_RECT, 1, 0, GLSL_TYPE_FLOAT) + +DECL_TYPE(samplerExternalOES, GL_SAMPLER_EXTERNAL_OES, GLSL_TYPE_SAMPLER, GLSL_SAMPLER_DIM_EXTERNAL, 0, 0, GLSL_TYPE_FLOAT) + +DECL_TYPE(image1D, GL_IMAGE_1D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_FLOAT); +DECL_TYPE(image2D, GL_IMAGE_2D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_FLOAT); +DECL_TYPE(image3D, GL_IMAGE_3D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_FLOAT); +DECL_TYPE(image2DRect, GL_IMAGE_2D_RECT, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_FLOAT); +DECL_TYPE(imageCube, GL_IMAGE_CUBE, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_FLOAT); +DECL_TYPE(imageBuffer, GL_IMAGE_BUFFER, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_FLOAT); +DECL_TYPE(image1DArray, GL_IMAGE_1D_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_FLOAT); +DECL_TYPE(image2DArray, GL_IMAGE_2D_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_FLOAT); +DECL_TYPE(imageCubeArray, GL_IMAGE_CUBE_MAP_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_FLOAT); +DECL_TYPE(image2DMS, GL_IMAGE_2D_MULTISAMPLE, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_FLOAT); +DECL_TYPE(image2DMSArray, GL_IMAGE_2D_MULTISAMPLE_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_FLOAT); +DECL_TYPE(iimage1D, GL_INT_IMAGE_1D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_INT); +DECL_TYPE(iimage2D, GL_INT_IMAGE_2D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_INT); +DECL_TYPE(iimage3D, GL_INT_IMAGE_3D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_INT); +DECL_TYPE(iimage2DRect, GL_INT_IMAGE_2D_RECT, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_INT); +DECL_TYPE(iimageCube, GL_INT_IMAGE_CUBE, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_INT); +DECL_TYPE(iimageBuffer, GL_INT_IMAGE_BUFFER, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_INT); +DECL_TYPE(iimage1DArray, GL_INT_IMAGE_1D_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_INT); +DECL_TYPE(iimage2DArray, GL_INT_IMAGE_2D_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_INT); +DECL_TYPE(iimageCubeArray, GL_INT_IMAGE_CUBE_MAP_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_INT); +DECL_TYPE(iimage2DMS, GL_INT_IMAGE_2D_MULTISAMPLE, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_INT); +DECL_TYPE(iimage2DMSArray, GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_INT); +DECL_TYPE(uimage1D, GL_UNSIGNED_INT_IMAGE_1D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_1D, 0, 0, GLSL_TYPE_UINT); +DECL_TYPE(uimage2D, GL_UNSIGNED_INT_IMAGE_2D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_2D, 0, 0, GLSL_TYPE_UINT); +DECL_TYPE(uimage3D, GL_UNSIGNED_INT_IMAGE_3D, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_3D, 0, 0, GLSL_TYPE_UINT); +DECL_TYPE(uimage2DRect, GL_UNSIGNED_INT_IMAGE_2D_RECT, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_RECT, 0, 0, GLSL_TYPE_UINT); +DECL_TYPE(uimageCube, GL_UNSIGNED_INT_IMAGE_CUBE, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_CUBE, 0, 0, GLSL_TYPE_UINT); +DECL_TYPE(uimageBuffer, GL_UNSIGNED_INT_IMAGE_BUFFER, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_BUF, 0, 0, GLSL_TYPE_UINT); +DECL_TYPE(uimage1DArray, GL_UNSIGNED_INT_IMAGE_1D_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_1D, 0, 1, GLSL_TYPE_UINT); +DECL_TYPE(uimage2DArray, GL_UNSIGNED_INT_IMAGE_2D_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_2D, 0, 1, GLSL_TYPE_UINT); +DECL_TYPE(uimageCubeArray, GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_CUBE, 0, 1, GLSL_TYPE_UINT); +DECL_TYPE(uimage2DMS, GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_MS, 0, 0, GLSL_TYPE_UINT); +DECL_TYPE(uimage2DMSArray, GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY, GLSL_TYPE_IMAGE, GLSL_SAMPLER_DIM_MS, 0, 1, GLSL_TYPE_UINT); DECL_TYPE(atomic_uint, GL_UNSIGNED_INT_ATOMIC_COUNTER, GLSL_TYPE_ATOMIC_UINT, 1, 1) diff --git a/mesalib/src/glsl/builtin_types.cpp b/mesalib/src/glsl/builtin_types.cpp index 92e386057..dd42ecb05 100644 --- a/mesalib/src/glsl/builtin_types.cpp +++ b/mesalib/src/glsl/builtin_types.cpp @@ -204,6 +204,40 @@ const static struct builtin_type_versions { T(struct_gl_DepthRangeParameters, 110, 100) + T(image1D, 420, 999) + T(image2D, 420, 999) + T(image3D, 420, 999) + T(image2DRect, 420, 999) + T(imageCube, 420, 999) + T(imageBuffer, 420, 999) + T(image1DArray, 420, 999) + T(image2DArray, 420, 999) + T(imageCubeArray, 420, 999) + T(image2DMS, 420, 999) + T(image2DMSArray, 420, 999) + T(iimage1D, 420, 999) + T(iimage2D, 420, 999) + T(iimage3D, 420, 999) + T(iimage2DRect, 420, 999) + T(iimageCube, 420, 999) + T(iimageBuffer, 420, 999) + T(iimage1DArray, 420, 999) + T(iimage2DArray, 420, 999) + T(iimageCubeArray, 420, 999) + T(iimage2DMS, 420, 999) + T(iimage2DMSArray, 420, 999) + T(uimage1D, 420, 999) + T(uimage2D, 420, 999) + T(uimage3D, 420, 999) + T(uimage2DRect, 420, 999) + T(uimageCube, 420, 999) + T(uimageBuffer, 420, 999) + T(uimage1DArray, 420, 999) + T(uimage2DArray, 420, 999) + T(uimageCubeArray, 420, 999) + T(uimage2DMS, 420, 999) + T(uimage2DMSArray, 420, 999) + T(atomic_uint, 420, 999) }; @@ -287,6 +321,42 @@ _mesa_glsl_initialize_types(struct _mesa_glsl_parse_state *state) add_type(symbols, glsl_type::sampler3D_type); } + if (state->ARB_shader_image_load_store_enable) { + add_type(symbols, glsl_type::image1D_type); + add_type(symbols, glsl_type::image2D_type); + add_type(symbols, glsl_type::image3D_type); + add_type(symbols, glsl_type::image2DRect_type); + add_type(symbols, glsl_type::imageCube_type); + add_type(symbols, glsl_type::imageBuffer_type); + add_type(symbols, glsl_type::image1DArray_type); + add_type(symbols, glsl_type::image2DArray_type); + add_type(symbols, glsl_type::imageCubeArray_type); + add_type(symbols, glsl_type::image2DMS_type); + add_type(symbols, glsl_type::image2DMSArray_type); + add_type(symbols, glsl_type::iimage1D_type); + add_type(symbols, glsl_type::iimage2D_type); + add_type(symbols, glsl_type::iimage3D_type); + add_type(symbols, glsl_type::iimage2DRect_type); + add_type(symbols, glsl_type::iimageCube_type); + add_type(symbols, glsl_type::iimageBuffer_type); + add_type(symbols, glsl_type::iimage1DArray_type); + add_type(symbols, glsl_type::iimage2DArray_type); + add_type(symbols, glsl_type::iimageCubeArray_type); + add_type(symbols, glsl_type::iimage2DMS_type); + add_type(symbols, glsl_type::iimage2DMSArray_type); + add_type(symbols, glsl_type::uimage1D_type); + add_type(symbols, glsl_type::uimage2D_type); + add_type(symbols, glsl_type::uimage3D_type); + add_type(symbols, glsl_type::uimage2DRect_type); + add_type(symbols, glsl_type::uimageCube_type); + add_type(symbols, glsl_type::uimageBuffer_type); + add_type(symbols, glsl_type::uimage1DArray_type); + add_type(symbols, glsl_type::uimage2DArray_type); + add_type(symbols, glsl_type::uimageCubeArray_type); + add_type(symbols, glsl_type::uimage2DMS_type); + add_type(symbols, glsl_type::uimage2DMSArray_type); + } + if (state->ARB_shader_atomic_counters_enable) { add_type(symbols, glsl_type::atomic_uint_type); } diff --git a/mesalib/src/glsl/builtin_variables.cpp b/mesalib/src/glsl/builtin_variables.cpp index cc423383d..4176ae6e6 100644 --- a/mesalib/src/glsl/builtin_variables.cpp +++ b/mesalib/src/glsl/builtin_variables.cpp @@ -711,6 +711,26 @@ builtin_variable_generator::generate_constants() * in ast_cs_input_layout::hir(). */ } + + if (state->is_version(420, 0) || + state->ARB_shader_image_load_store_enable) { + add_const("gl_MaxImageUnits", + state->Const.MaxImageUnits); + add_const("gl_MaxCombinedImageUnitsAndFragmentOutputs", + state->Const.MaxCombinedImageUnitsAndFragmentOutputs); + add_const("gl_MaxImageSamples", + state->Const.MaxImageSamples); + add_const("gl_MaxVertexImageUniforms", + state->Const.MaxVertexImageUniforms); + add_const("gl_MaxTessControlImageUniforms", 0); + add_const("gl_MaxTessEvaluationImageUniforms", 0); + add_const("gl_MaxGeometryImageUniforms", + state->Const.MaxGeometryImageUniforms); + add_const("gl_MaxFragmentImageUniforms", + state->Const.MaxFragmentImageUniforms); + add_const("gl_MaxCombinedImageUniforms", + state->Const.MaxCombinedImageUniforms); + } } @@ -834,6 +854,8 @@ builtin_variable_generator::generate_gs_special_vars() add_output(VARYING_SLOT_LAYER, int_t, "gl_Layer"); if (state->ARB_viewport_array_enable) add_output(VARYING_SLOT_VIEWPORT, int_t, "gl_ViewportIndex"); + if (state->ARB_gpu_shader5_enable) + add_system_value(SYSTEM_VALUE_INVOCATION_ID, int_t, "gl_InvocationID"); /* Although gl_PrimitiveID appears in tessellation control and tessellation * evaluation shaders, it has a different function there than it has in diff --git a/mesalib/src/glsl/glcpp/glcpp-parse.y b/mesalib/src/glsl/glcpp/glcpp-parse.y index eeafa4d39..f28d8531e 100644 --- a/mesalib/src/glsl/glcpp/glcpp-parse.y +++ b/mesalib/src/glsl/glcpp/glcpp-parse.y @@ -1770,11 +1770,27 @@ static void _check_for_reserved_macro_name (glcpp_parser_t *parser, YYLTYPE *loc, const char *identifier) { - /* According to the GLSL specification, macro names starting with "__" - * or "GL_" are reserved for future use. So, don't allow them. + /* Section 3.3 (Preprocessor) of the GLSL 1.30 spec (and later) and + * the GLSL ES spec (all versions) say: + * + * "All macro names containing two consecutive underscores ( __ ) + * are reserved for future use as predefined macro names. All + * macro names prefixed with "GL_" ("GL" followed by a single + * underscore) are also reserved." + * + * The intention is that names containing __ are reserved for internal + * use by the implementation, and names prefixed with GL_ are reserved + * for use by Khronos. Since every extension adds a name prefixed + * with GL_ (i.e., the name of the extension), that should be an + * error. Names simply containing __ are dangerous to use, but should + * be allowed. + * + * A future version of the GLSL specification will clarify this. */ if (strstr(identifier, "__")) { - glcpp_error (loc, parser, "Macro names containing \"__\" are reserved.\n"); + glcpp_warning(loc, parser, + "Macro names containing \"__\" are reserved " + "for use by the implementation.\n"); } if (strncmp(identifier, "GL_", 3) == 0) { glcpp_error (loc, parser, "Macro names starting with \"GL_\" are reserved.\n"); @@ -2118,6 +2134,9 @@ _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser, intmax_t versio if (extensions->ARB_texture_gather) add_builtin_define(parser, "GL_ARB_texture_gather", 1); + if (extensions->ARB_separate_shader_objects) + add_builtin_define(parser, "GL_ARB_separate_shader_objects", 1); + if (extensions->ARB_shader_atomic_counters) add_builtin_define(parser, "GL_ARB_shader_atomic_counters", 1); @@ -2126,6 +2145,9 @@ _glcpp_parser_handle_version_declaration(glcpp_parser_t *parser, intmax_t versio if (extensions->ARB_compute_shader) add_builtin_define(parser, "GL_ARB_compute_shader", 1); + + if (extensions->ARB_shader_image_load_store) + add_builtin_define(parser, "GL_ARB_shader_image_load_store", 1); } } diff --git a/mesalib/src/glsl/glcpp/glcpp.c b/mesalib/src/glsl/glcpp/glcpp.c index 0144be85b..0144be85b 100755..100644 --- a/mesalib/src/glsl/glcpp/glcpp.c +++ b/mesalib/src/glsl/glcpp/glcpp.c diff --git a/mesalib/src/glsl/glsl_lexer.ll b/mesalib/src/glsl/glsl_lexer.ll index 3208b32da..9fd9b80d3 100644 --- a/mesalib/src/glsl/glsl_lexer.ll +++ b/mesalib/src/glsl/glsl_lexer.ll @@ -337,6 +337,51 @@ samplerExternalOES { return IDENTIFIER; } + /* keywords available with ARB_shader_image_load_store */ +image1D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE1D); +image2D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2D); +image3D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE3D); +image2DRect KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DRECT); +imageCube KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGECUBE); +imageBuffer KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGEBUFFER); +image1DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE1DARRAY); +image2DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DARRAY); +imageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGECUBEARRAY); +image2DMS KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DMS); +image2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IMAGE2DMSARRAY); +iimage1D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE1D); +iimage2D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2D); +iimage3D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE3D); +iimage2DRect KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DRECT); +iimageCube KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGECUBE); +iimageBuffer KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGEBUFFER); +iimage1DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE1DARRAY); +iimage2DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DARRAY); +iimageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGECUBEARRAY); +iimage2DMS KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DMS); +iimage2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, IIMAGE2DMSARRAY); +uimage1D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE1D); +uimage2D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2D); +uimage3D KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE3D); +uimage2DRect KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DRECT); +uimageCube KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGECUBE); +uimageBuffer KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGEBUFFER); +uimage1DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE1DARRAY); +uimage2DArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DARRAY); +uimageCubeArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGECUBEARRAY); +uimage2DMS KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DMS); +uimage2DMSArray KEYWORD_WITH_ALT(130, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, UIMAGE2DMSARRAY); +image1DShadow KEYWORD(130, 300, 0, 0, IMAGE1DSHADOW); +image2DShadow KEYWORD(130, 300, 0, 0, IMAGE2DSHADOW); +image1DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE1DARRAYSHADOW); +image2DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE2DARRAYSHADOW); + +coherent KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, COHERENT); +volatile KEYWORD_WITH_ALT(110, 100, 420, 0, yyextra->ARB_shader_image_load_store_enable, VOLATILE); +restrict KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, RESTRICT); +readonly KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, READONLY); +writeonly KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_image_load_store_enable, WRITEONLY); + atomic_uint KEYWORD_WITH_ALT(420, 300, 420, 0, yyextra->ARB_shader_atomic_counters_enable, ATOMIC_UINT); struct return STRUCT; @@ -347,6 +392,7 @@ layout { || yyextra->AMD_conservative_depth_enable || yyextra->ARB_conservative_depth_enable || yyextra->ARB_explicit_attrib_location_enable + || yyextra->has_separate_shader_objects() || yyextra->ARB_uniform_buffer_object_enable || yyextra->ARB_fragment_coord_conventions_enable || yyextra->ARB_shading_language_420pack_enable @@ -436,7 +482,6 @@ switch KEYWORD(110, 100, 130, 300, SWITCH); default KEYWORD(110, 100, 130, 300, DEFAULT); inline KEYWORD(110, 100, 0, 0, INLINE_TOK); noinline KEYWORD(110, 100, 0, 0, NOINLINE); -volatile KEYWORD(110, 100, 0, 0, VOLATILE); public KEYWORD(110, 100, 0, 0, PUBLIC_TOK); static KEYWORD(110, 100, 0, 0, STATIC); extern KEYWORD(110, 100, 0, 0, EXTERN); @@ -481,31 +526,6 @@ active KEYWORD(130, 300, 0, 0, ACTIVE); superp KEYWORD(130, 100, 0, 0, SUPERP); samplerBuffer KEYWORD(130, 300, 140, 0, SAMPLERBUFFER); filter KEYWORD(130, 300, 0, 0, FILTER); -image1D KEYWORD(130, 300, 0, 0, IMAGE1D); -image2D KEYWORD(130, 300, 0, 0, IMAGE2D); -image3D KEYWORD(130, 300, 0, 0, IMAGE3D); -imageCube KEYWORD(130, 300, 0, 0, IMAGECUBE); -iimage1D KEYWORD(130, 300, 0, 0, IIMAGE1D); -iimage2D KEYWORD(130, 300, 0, 0, IIMAGE2D); -iimage3D KEYWORD(130, 300, 0, 0, IIMAGE3D); -iimageCube KEYWORD(130, 300, 0, 0, IIMAGECUBE); -uimage1D KEYWORD(130, 300, 0, 0, UIMAGE1D); -uimage2D KEYWORD(130, 300, 0, 0, UIMAGE2D); -uimage3D KEYWORD(130, 300, 0, 0, UIMAGE3D); -uimageCube KEYWORD(130, 300, 0, 0, UIMAGECUBE); -image1DArray KEYWORD(130, 300, 0, 0, IMAGE1DARRAY); -image2DArray KEYWORD(130, 300, 0, 0, IMAGE2DARRAY); -iimage1DArray KEYWORD(130, 300, 0, 0, IIMAGE1DARRAY); -iimage2DArray KEYWORD(130, 300, 0, 0, IIMAGE2DARRAY); -uimage1DArray KEYWORD(130, 300, 0, 0, UIMAGE1DARRAY); -uimage2DArray KEYWORD(130, 300, 0, 0, UIMAGE2DARRAY); -image1DShadow KEYWORD(130, 300, 0, 0, IMAGE1DSHADOW); -image2DShadow KEYWORD(130, 300, 0, 0, IMAGE2DSHADOW); -image1DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE1DARRAYSHADOW); -image2DArrayShadow KEYWORD(130, 300, 0, 0, IMAGE2DARRAYSHADOW); -imageBuffer KEYWORD(130, 300, 0, 0, IMAGEBUFFER); -iimageBuffer KEYWORD(130, 300, 0, 0, IIMAGEBUFFER); -uimageBuffer KEYWORD(130, 300, 0, 0, UIMAGEBUFFER); row_major KEYWORD_WITH_ALT(130, 0, 140, 0, yyextra->ARB_uniform_buffer_object_enable && !yyextra->es_shader, ROW_MAJOR); /* Additional reserved words in GLSL 1.40 */ @@ -515,10 +535,6 @@ isamplerBuffer KEYWORD(140, 300, 140, 0, ISAMPLERBUFFER); usamplerBuffer KEYWORD(140, 300, 140, 0, USAMPLERBUFFER); /* Additional reserved words in GLSL ES 3.00 */ -coherent KEYWORD(0, 300, 0, 0, COHERENT); -restrict KEYWORD(0, 300, 0, 0, RESTRICT); -readonly KEYWORD(0, 300, 0, 0, READONLY); -writeonly KEYWORD(0, 300, 0, 0, WRITEONLY); resource KEYWORD(0, 300, 0, 0, RESOURCE); patch KEYWORD(0, 300, 0, 0, PATCH); sample KEYWORD_WITH_ALT(400, 300, 400, 0, yyextra->ARB_gpu_shader5_enable, SAMPLE); diff --git a/mesalib/src/glsl/glsl_parser.yy b/mesalib/src/glsl/glsl_parser.yy index c4d01a8cd..8751524c2 100644 --- a/mesalib/src/glsl/glsl_parser.yy +++ b/mesalib/src/glsl/glsl_parser.yy @@ -146,6 +146,14 @@ static bool match_layout_qualifier(const char *s1, const char *s2, %token SAMPLER2DMS ISAMPLER2DMS USAMPLER2DMS %token SAMPLER2DMSARRAY ISAMPLER2DMSARRAY USAMPLER2DMSARRAY %token SAMPLEREXTERNALOES +%token IMAGE1D IMAGE2D IMAGE3D IMAGE2DRECT IMAGECUBE IMAGEBUFFER +%token IMAGE1DARRAY IMAGE2DARRAY IMAGECUBEARRAY IMAGE2DMS IMAGE2DMSARRAY +%token IIMAGE1D IIMAGE2D IIMAGE3D IIMAGE2DRECT IIMAGECUBE IIMAGEBUFFER +%token IIMAGE1DARRAY IIMAGE2DARRAY IIMAGECUBEARRAY IIMAGE2DMS IIMAGE2DMSARRAY +%token UIMAGE1D UIMAGE2D UIMAGE3D UIMAGE2DRECT UIMAGECUBE UIMAGEBUFFER +%token UIMAGE1DARRAY UIMAGE2DARRAY UIMAGECUBEARRAY UIMAGE2DMS UIMAGE2DMSARRAY +%token IMAGE1DSHADOW IMAGE2DSHADOW IMAGE1DARRAYSHADOW IMAGE2DARRAYSHADOW +%token COHERENT VOLATILE RESTRICT READONLY WRITEONLY %token ATOMIC_UINT %token STRUCT VOID_TOK WHILE %token <identifier> IDENTIFIER TYPE_IDENTIFIER NEW_IDENTIFIER @@ -171,23 +179,17 @@ static bool match_layout_qualifier(const char *s1, const char *s2, /* Reserved words that are not actually used in the grammar. */ %token ASM CLASS UNION ENUM TYPEDEF TEMPLATE THIS PACKED_TOK GOTO -%token INLINE_TOK NOINLINE VOLATILE PUBLIC_TOK STATIC EXTERN EXTERNAL +%token INLINE_TOK NOINLINE PUBLIC_TOK STATIC EXTERN EXTERNAL %token LONG_TOK SHORT_TOK DOUBLE_TOK HALF FIXED_TOK UNSIGNED INPUT_TOK OUPTUT %token HVEC2 HVEC3 HVEC4 DVEC2 DVEC3 DVEC4 FVEC2 FVEC3 FVEC4 %token SAMPLER3DRECT %token SIZEOF CAST NAMESPACE USING -%token COHERENT RESTRICT READONLY WRITEONLY RESOURCE PATCH SAMPLE +%token RESOURCE PATCH SAMPLE %token SUBROUTINE %token ERROR_TOK -%token COMMON PARTITION ACTIVE FILTER -%token IMAGE1D IMAGE2D IMAGE3D IMAGECUBE IMAGE1DARRAY IMAGE2DARRAY -%token IIMAGE1D IIMAGE2D IIMAGE3D IIMAGECUBE IIMAGE1DARRAY IIMAGE2DARRAY -%token UIMAGE1D UIMAGE2D UIMAGE3D UIMAGECUBE UIMAGE1DARRAY UIMAGE2DARRAY -%token IMAGE1DSHADOW IMAGE2DSHADOW IMAGEBUFFER IIMAGEBUFFER UIMAGEBUFFER -%token IMAGE1DARRAYSHADOW IMAGE2DARRAYSHADOW -%token ROW_MAJOR +%token COMMON PARTITION ACTIVE FILTER ROW_MAJOR %type <identifier> variable_identifier %type <node> statement @@ -1230,6 +1232,72 @@ layout_qualifier_id: } } + /* Layout qualifiers for ARB_shader_image_load_store. */ + if (state->ARB_shader_image_load_store_enable || + state->is_version(420, 0)) { + if (!$$.flags.i) { + static const struct { + const char *name; + GLenum format; + glsl_base_type base_type; + } map[] = { + { "rgba32f", GL_RGBA32F, GLSL_TYPE_FLOAT }, + { "rgba16f", GL_RGBA16F, GLSL_TYPE_FLOAT }, + { "rg32f", GL_RG32F, GLSL_TYPE_FLOAT }, + { "rg16f", GL_RG16F, GLSL_TYPE_FLOAT }, + { "r11f_g11f_b10f", GL_R11F_G11F_B10F, GLSL_TYPE_FLOAT }, + { "r32f", GL_R32F, GLSL_TYPE_FLOAT }, + { "r16f", GL_R16F, GLSL_TYPE_FLOAT }, + { "rgba32ui", GL_RGBA32UI, GLSL_TYPE_UINT }, + { "rgba16ui", GL_RGBA16UI, GLSL_TYPE_UINT }, + { "rgb10_a2ui", GL_RGB10_A2UI, GLSL_TYPE_UINT }, + { "rgba8ui", GL_RGBA8UI, GLSL_TYPE_UINT }, + { "rg32ui", GL_RG32UI, GLSL_TYPE_UINT }, + { "rg16ui", GL_RG16UI, GLSL_TYPE_UINT }, + { "rg8ui", GL_RG8UI, GLSL_TYPE_UINT }, + { "r32ui", GL_R32UI, GLSL_TYPE_UINT }, + { "r16ui", GL_R16UI, GLSL_TYPE_UINT }, + { "r8ui", GL_R8UI, GLSL_TYPE_UINT }, + { "rgba32i", GL_RGBA32I, GLSL_TYPE_INT }, + { "rgba16i", GL_RGBA16I, GLSL_TYPE_INT }, + { "rgba8i", GL_RGBA8I, GLSL_TYPE_INT }, + { "rg32i", GL_RG32I, GLSL_TYPE_INT }, + { "rg16i", GL_RG16I, GLSL_TYPE_INT }, + { "rg8i", GL_RG8I, GLSL_TYPE_INT }, + { "r32i", GL_R32I, GLSL_TYPE_INT }, + { "r16i", GL_R16I, GLSL_TYPE_INT }, + { "r8i", GL_R8I, GLSL_TYPE_INT }, + { "rgba16", GL_RGBA16, GLSL_TYPE_FLOAT }, + { "rgb10_a2", GL_RGB10_A2, GLSL_TYPE_FLOAT }, + { "rgba8", GL_RGBA8, GLSL_TYPE_FLOAT }, + { "rg16", GL_RG16, GLSL_TYPE_FLOAT }, + { "rg8", GL_RG8, GLSL_TYPE_FLOAT }, + { "r16", GL_R16, GLSL_TYPE_FLOAT }, + { "r8", GL_R8, GLSL_TYPE_FLOAT }, + { "rgba16_snorm", GL_RGBA16_SNORM, GLSL_TYPE_FLOAT }, + { "rgba8_snorm", GL_RGBA8_SNORM, GLSL_TYPE_FLOAT }, + { "rg16_snorm", GL_RG16_SNORM, GLSL_TYPE_FLOAT }, + { "rg8_snorm", GL_RG8_SNORM, GLSL_TYPE_FLOAT }, + { "r16_snorm", GL_R16_SNORM, GLSL_TYPE_FLOAT }, + { "r8_snorm", GL_R8_SNORM, GLSL_TYPE_FLOAT } + }; + + for (unsigned i = 0; i < Elements(map); i++) { + if (match_layout_qualifier($1, map[i].name, state) == 0) { + $$.flags.q.explicit_image_format = 1; + $$.image_format = map[i].format; + $$.image_base_type = map[i].base_type; + break; + } + } + } + + if (!$$.flags.i && + match_layout_qualifier($1, "early_fragment_tests", state) == 0) { + $$.flags.q.early_fragment_tests = 1; + } + } + if (!$$.flags.i) { _mesa_glsl_error(& @1, state, "unrecognized layout identifier " "`%s'", $1); @@ -1320,6 +1388,29 @@ layout_qualifier_id: } } + if (match_layout_qualifier("invocations", $1, state) == 0) { + $$.flags.q.invocations = 1; + + if ($3 <= 0) { + _mesa_glsl_error(& @3, state, + "invalid invocations %d specified", $3); + YYERROR; + } else if ($3 > MAX_GEOMETRY_SHADER_INVOCATIONS) { + _mesa_glsl_error(& @3, state, + "invocations (%d) exceeds " + "GL_MAX_GEOMETRY_SHADER_INVOCATIONS", $3); + YYERROR; + } else { + $$.invocations = $3; + if (!state->is_version(400, 0) && + !state->ARB_gpu_shader5_enable) { + _mesa_glsl_error(& @3, state, + "GL_ARB_gpu_shader5 invocations " + "qualifier specified", $3); + } + } + } + /* If the identifier didn't match any known layout identifiers, * emit an error. */ @@ -1574,6 +1665,32 @@ storage_qualifier: memset(& $$, 0, sizeof($$)); $$.flags.q.uniform = 1; } + | COHERENT + { + memset(& $$, 0, sizeof($$)); + $$.flags.q.coherent = 1; + } + | VOLATILE + { + memset(& $$, 0, sizeof($$)); + $$.flags.q._volatile = 1; + } + | RESTRICT + { + STATIC_ASSERT(sizeof($$.flags.q) <= sizeof($$.flags.i)); + memset(& $$, 0, sizeof($$)); + $$.flags.q.restrict_flag = 1; + } + | READONLY + { + memset(& $$, 0, sizeof($$)); + $$.flags.q.read_only = 1; + } + | WRITEONLY + { + memset(& $$, 0, sizeof($$)); + $$.flags.q.write_only = 1; + } ; array_specifier: @@ -1713,6 +1830,39 @@ basic_type_specifier_nonarray: | SAMPLER2DMSARRAY { $$ = "sampler2DMSArray"; } | ISAMPLER2DMSARRAY { $$ = "isampler2DMSArray"; } | USAMPLER2DMSARRAY { $$ = "usampler2DMSArray"; } + | IMAGE1D { $$ = "image1D"; } + | IMAGE2D { $$ = "image2D"; } + | IMAGE3D { $$ = "image3D"; } + | IMAGE2DRECT { $$ = "image2DRect"; } + | IMAGECUBE { $$ = "imageCube"; } + | IMAGEBUFFER { $$ = "imageBuffer"; } + | IMAGE1DARRAY { $$ = "image1DArray"; } + | IMAGE2DARRAY { $$ = "image2DArray"; } + | IMAGECUBEARRAY { $$ = "imageCubeArray"; } + | IMAGE2DMS { $$ = "image2DMS"; } + | IMAGE2DMSARRAY { $$ = "image2DMSArray"; } + | IIMAGE1D { $$ = "iimage1D"; } + | IIMAGE2D { $$ = "iimage2D"; } + | IIMAGE3D { $$ = "iimage3D"; } + | IIMAGE2DRECT { $$ = "iimage2DRect"; } + | IIMAGECUBE { $$ = "iimageCube"; } + | IIMAGEBUFFER { $$ = "iimageBuffer"; } + | IIMAGE1DARRAY { $$ = "iimage1DArray"; } + | IIMAGE2DARRAY { $$ = "iimage2DArray"; } + | IIMAGECUBEARRAY { $$ = "iimageCubeArray"; } + | IIMAGE2DMS { $$ = "iimage2DMS"; } + | IIMAGE2DMSARRAY { $$ = "iimage2DMSArray"; } + | UIMAGE1D { $$ = "uimage1D"; } + | UIMAGE2D { $$ = "uimage2D"; } + | UIMAGE3D { $$ = "uimage3D"; } + | UIMAGE2DRECT { $$ = "uimage2DRect"; } + | UIMAGECUBE { $$ = "uimageCube"; } + | UIMAGEBUFFER { $$ = "uimageBuffer"; } + | UIMAGE1DARRAY { $$ = "uimage1DArray"; } + | UIMAGE2DARRAY { $$ = "uimage2DArray"; } + | UIMAGECUBEARRAY { $$ = "uimageCubeArray"; } + | UIMAGE2DMS { $$ = "uimage2DMS"; } + | UIMAGE2DMSARRAY { $$ = "uimage2DMSArray"; } | ATOMIC_UINT { $$ = "atomic_uint"; } ; @@ -2229,7 +2379,7 @@ basic_interface_block: "an instance name are not allowed"); } - unsigned interface_type_mask; + uint64_t interface_type_mask; struct ast_type_qualifier temp_type_qualifier; /* Get a bitmask containing only the in/out/uniform flags, allowing us @@ -2245,7 +2395,7 @@ basic_interface_block: * production rule guarantees that only one bit will be set (and * it will be in/out/uniform). */ - unsigned block_interface_qualifier = $1.flags.i; + uint64_t block_interface_qualifier = $1.flags.i; block->layout.flags.i |= block_interface_qualifier; @@ -2361,55 +2511,9 @@ layout_defaults: | layout_qualifier IN_TOK ';' { - void *ctx = state; $$ = NULL; - switch (state->stage) { - case MESA_SHADER_GEOMETRY: { - if (!$1.flags.q.prim_type) { - _mesa_glsl_error(& @1, state, - "input layout qualifiers must specify a primitive" - " type"); - } else { - /* Make sure this is a valid input primitive type. */ - switch ($1.prim_type) { - case GL_POINTS: - case GL_LINES: - case GL_LINES_ADJACENCY: - case GL_TRIANGLES: - case GL_TRIANGLES_ADJACENCY: - $$ = new(ctx) ast_gs_input_layout(@1, $1.prim_type); - break; - default: - _mesa_glsl_error(&@1, state, - "invalid geometry shader input primitive type"); - break; - } - } - } - break; - case MESA_SHADER_COMPUTE: { - if ($1.flags.q.local_size == 0) { - _mesa_glsl_error(& @1, state, - "input layout qualifiers must specify a local " - "size"); - } else { - /* Infer a local_size of 1 for every unspecified dimension */ - unsigned local_size[3]; - for (int i = 0; i < 3; i++) { - if ($1.flags.q.local_size & (1 << i)) - local_size[i] = $1.local_size[i]; - else - local_size[i] = 1; - } - $$ = new(ctx) ast_cs_input_layout(@1, local_size); - } - } - break; - default: - _mesa_glsl_error(& @1, state, - "input layout qualifiers only valid in " - "geometry and compute shaders"); - break; + if (!state->in_qualifier->merge_in_qualifier(& @1, state, $1, $$)) { + YYERROR; } } diff --git a/mesalib/src/glsl/glsl_parser_extras.cpp b/mesalib/src/glsl/glsl_parser_extras.cpp index b822d2292..d7f5202fe 100644 --- a/mesalib/src/glsl/glsl_parser_extras.cpp +++ b/mesalib/src/glsl/glsl_parser_extras.cpp @@ -130,6 +130,14 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *_ctx, for (unsigned i = 0; i < Elements(this->Const.MaxComputeWorkGroupSize); i++) this->Const.MaxComputeWorkGroupSize[i] = ctx->Const.MaxComputeWorkGroupSize[i]; + this->Const.MaxImageUnits = ctx->Const.MaxImageUnits; + this->Const.MaxCombinedImageUnitsAndFragmentOutputs = ctx->Const.MaxCombinedImageUnitsAndFragmentOutputs; + this->Const.MaxImageSamples = ctx->Const.MaxImageSamples; + this->Const.MaxVertexImageUniforms = ctx->Const.Program[MESA_SHADER_VERTEX].MaxImageUniforms; + this->Const.MaxGeometryImageUniforms = ctx->Const.Program[MESA_SHADER_GEOMETRY].MaxImageUniforms; + this->Const.MaxFragmentImageUniforms = ctx->Const.Program[MESA_SHADER_FRAGMENT].MaxImageUniforms; + this->Const.MaxCombinedImageUniforms = ctx->Const.MaxCombinedImageUniforms; + this->current_function = NULL; this->toplevel_ir = NULL; this->found_return = false; @@ -194,9 +202,10 @@ _mesa_glsl_parse_state::_mesa_glsl_parse_state(struct gl_context *_ctx, this->default_uniform_qualifier->flags.q.column_major = 1; this->gs_input_prim_type_specified = false; - this->gs_input_prim_type = GL_POINTS; this->gs_input_size = 0; + this->in_qualifier = new(this) ast_type_qualifier(); this->out_qualifier = new(this) ast_type_qualifier(); + this->early_fragment_tests = false; memset(this->atomic_counter_offsets, 0, sizeof(this->atomic_counter_offsets)); } @@ -503,6 +512,7 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = { EXT(ARB_fragment_coord_conventions, true, false, ARB_fragment_coord_conventions), EXT(ARB_texture_rectangle, true, false, dummy_true), EXT(EXT_texture_array, true, false, EXT_texture_array), + EXT(ARB_separate_shader_objects, true, false, ARB_separate_shader_objects), EXT(ARB_shader_texture_lod, true, false, ARB_shader_texture_lod), EXT(ARB_shader_stencil_export, true, false, ARB_shader_stencil_export), EXT(AMD_conservative_depth, true, false, ARB_conservative_depth), @@ -527,6 +537,7 @@ static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = { EXT(AMD_shader_trinary_minmax, true, false, dummy_true), EXT(ARB_viewport_array, true, false, ARB_viewport_array), EXT(ARB_compute_shader, true, false, ARB_compute_shader), + EXT(ARB_shader_image_load_store, true, false, ARB_shader_image_load_store), }; #undef EXT @@ -1338,7 +1349,7 @@ set_shader_inout_layout(struct gl_shader *shader, { if (shader->Stage != MESA_SHADER_GEOMETRY) { /* Should have been prevented by the parser. */ - assert(!state->gs_input_prim_type_specified); + assert(!state->in_qualifier->flags.i); assert(!state->out_qualifier->flags.i); } @@ -1354,7 +1365,7 @@ set_shader_inout_layout(struct gl_shader *shader, shader->Geom.VerticesOut = state->out_qualifier->max_vertices; if (state->gs_input_prim_type_specified) { - shader->Geom.InputType = state->gs_input_prim_type; + shader->Geom.InputType = state->in_qualifier->prim_type; } else { shader->Geom.InputType = PRIM_UNKNOWN; } @@ -1364,6 +1375,10 @@ set_shader_inout_layout(struct gl_shader *shader, } else { shader->Geom.OutputType = PRIM_UNKNOWN; } + + shader->Geom.Invocations = 0; + if (state->in_qualifier->flags.q.invocations) + shader->Geom.Invocations = state->in_qualifier->invocations; break; case MESA_SHADER_COMPUTE: @@ -1419,7 +1434,7 @@ _mesa_glsl_compile_shader(struct gl_context *ctx, struct gl_shader *shader, /* Print out the unoptimized IR. */ if (dump_hir) { - _mesa_print_ir(shader->ir, state); + _mesa_print_ir(stdout, shader->ir, state); } } diff --git a/mesalib/src/glsl/glsl_parser_extras.h b/mesalib/src/glsl/glsl_parser_extras.h index 7b0fbbfa1..2e22c8c91 100644 --- a/mesalib/src/glsl/glsl_parser_extras.h +++ b/mesalib/src/glsl/glsl_parser_extras.h @@ -139,6 +139,23 @@ struct _mesa_glsl_parse_state { return true; } + bool check_separate_shader_objects_allowed(YYLTYPE *locp, + const ir_variable *var) + { + if (!this->has_separate_shader_objects()) { + const char *const requirement = this->es_shader + ? "GL_EXT_separate_shader_objects (not supported by this " + "implementation)" + : "GL_ARB_separate_shader_objects extension or GLSL 420"; + + _mesa_glsl_error(locp, this, "%s explicit location requires %s", + mode_string(var), requirement); + return false; + } + + return true; + } + bool has_explicit_attrib_location() const { return ARB_explicit_attrib_location_enable || is_version(330, 300); @@ -149,6 +166,11 @@ struct _mesa_glsl_parse_state { return ARB_uniform_buffer_object_enable || is_version(140, 300); } + bool has_separate_shader_objects() const + { + return ARB_separate_shader_objects_enable || is_version(410, 0); + } + void process_version_directive(YYLTYPE *locp, int version, const char *ident); @@ -194,11 +216,8 @@ struct _mesa_glsl_parse_state { */ bool gs_input_prim_type_specified; - /** - * If gs_input_prim_type_specified is true, the primitive type that was - * specified. Otherwise ignored. - */ - GLenum gs_input_prim_type; + /** Input layout qualifiers from GLSL 1.50. (geometry shader controls)*/ + struct ast_type_qualifier *in_qualifier; /** * True if a compute shader input local size was specified using a layout @@ -273,6 +292,15 @@ struct _mesa_glsl_parse_state { /* ARB_compute_shader */ unsigned MaxComputeWorkGroupCount[3]; unsigned MaxComputeWorkGroupSize[3]; + + /* ARB_shader_image_load_store */ + unsigned MaxImageUnits; + unsigned MaxCombinedImageUnitsAndFragmentOutputs; + unsigned MaxImageSamples; + unsigned MaxVertexImageUniforms; + unsigned MaxGeometryImageUniforms; + unsigned MaxFragmentImageUniforms; + unsigned MaxCombinedImageUniforms; } Const; /** @@ -333,6 +361,8 @@ struct _mesa_glsl_parse_state { bool ARB_texture_gather_warn; bool EXT_texture_array_enable; bool EXT_texture_array_warn; + bool ARB_separate_shader_objects_enable; + bool ARB_separate_shader_objects_warn; bool ARB_shader_texture_lod_enable; bool ARB_shader_texture_lod_warn; bool ARB_shader_stencil_export_enable; @@ -381,6 +411,8 @@ struct _mesa_glsl_parse_state { bool ARB_viewport_array_warn; bool ARB_compute_shader_enable; bool ARB_compute_shader_warn; + bool ARB_shader_image_load_store_enable; + bool ARB_shader_image_load_store_warn; /*@}*/ /** Extensions supported by the OpenGL implementation. */ @@ -397,6 +429,8 @@ struct _mesa_glsl_parse_state { */ unsigned gs_input_size; + bool early_fragment_tests; + /** Atomic counter offsets by binding */ unsigned atomic_counter_offsets[MAX_COMBINED_ATOMIC_BUFFERS]; }; diff --git a/mesalib/src/glsl/glsl_types.cpp b/mesalib/src/glsl/glsl_types.cpp index 1b0b3ef88..849a79af4 100644 --- a/mesalib/src/glsl/glsl_types.cpp +++ b/mesalib/src/glsl/glsl_types.cpp @@ -64,20 +64,26 @@ glsl_type::glsl_type(GLenum gl_type, memset(& fields, 0, sizeof(fields)); } -glsl_type::glsl_type(GLenum gl_type, +glsl_type::glsl_type(GLenum gl_type, glsl_base_type base_type, enum glsl_sampler_dim dim, bool shadow, bool array, unsigned type, const char *name) : gl_type(gl_type), - base_type(GLSL_TYPE_SAMPLER), + base_type(base_type), sampler_dimensionality(dim), sampler_shadow(shadow), sampler_array(array), sampler_type(type), interface_packing(0), - vector_elements(0), matrix_columns(0), length(0) { init_ralloc_type_ctx(); assert(name != NULL); this->name = ralloc_strdup(this->mem_ctx, name); memset(& fields, 0, sizeof(fields)); + + if (base_type == GLSL_TYPE_SAMPLER) { + /* Samplers take no storage whatsoever. */ + matrix_columns = vector_elements = 0; + } else { + matrix_columns = vector_elements = 1; + } } glsl_type::glsl_type(const glsl_struct_field *fields, unsigned num_fields, @@ -174,6 +180,7 @@ bool glsl_type::contains_opaque() const { switch (base_type) { case GLSL_TYPE_SAMPLER: + case GLSL_TYPE_IMAGE: case GLSL_TYPE_ATOMIC_UINT: return true; case GLSL_TYPE_ARRAY: @@ -219,6 +226,21 @@ glsl_type::sampler_index() const } } +bool +glsl_type::contains_image() const +{ + if (this->is_array()) { + return this->fields.array->contains_image(); + } else if (this->is_record()) { + for (unsigned int i = 0; i < this->length; i++) { + if (this->fields.structure[i].type->contains_image()) + return true; + } + return false; + } else { + return this->is_image(); + } +} const glsl_type *glsl_type::get_base_type() const { @@ -642,6 +664,9 @@ glsl_type::component_slots() const case GLSL_TYPE_ARRAY: return this->length * this->fields.array->component_slots(); + case GLSL_TYPE_IMAGE: + return 1; + case GLSL_TYPE_SAMPLER: case GLSL_TYPE_ATOMIC_UINT: case GLSL_TYPE_VOID: @@ -932,6 +957,7 @@ glsl_type::count_attribute_slots() const return this->length * this->fields.array->count_attribute_slots(); case GLSL_TYPE_SAMPLER: + case GLSL_TYPE_IMAGE: case GLSL_TYPE_ATOMIC_UINT: case GLSL_TYPE_VOID: case GLSL_TYPE_ERROR: @@ -944,10 +970,8 @@ glsl_type::count_attribute_slots() const } int -glsl_type::sampler_coordinate_components() const +glsl_type::coordinate_components() const { - assert(is_sampler()); - int size; switch (sampler_dimensionality) { diff --git a/mesalib/src/glsl/glsl_types.h b/mesalib/src/glsl/glsl_types.h index f88758a9a..ae3829f30 100644 --- a/mesalib/src/glsl/glsl_types.h +++ b/mesalib/src/glsl/glsl_types.h @@ -53,6 +53,7 @@ enum glsl_base_type { GLSL_TYPE_FLOAT, GLSL_TYPE_BOOL, GLSL_TYPE_SAMPLER, + GLSL_TYPE_IMAGE, GLSL_TYPE_ATOMIC_UINT, GLSL_TYPE_STRUCT, GLSL_TYPE_INTERFACE, @@ -89,8 +90,9 @@ struct glsl_type { unsigned sampler_dimensionality:3; /**< \see glsl_sampler_dim */ unsigned sampler_shadow:1; unsigned sampler_array:1; - unsigned sampler_type:2; /**< Type of data returned using this sampler. - * only \c GLSL_TYPE_FLOAT, \c GLSL_TYPE_INT, + unsigned sampler_type:2; /**< Type of data returned using this + * sampler or image. Only \c + * GLSL_TYPE_FLOAT, \c GLSL_TYPE_INT, * and \c GLSL_TYPE_UINT are valid. */ unsigned interface_packing:2; @@ -402,6 +404,20 @@ struct glsl_type { gl_texture_index sampler_index() const; /** + * Query whether or not type is an image, or for struct and array + * types, contains an image. + */ + bool contains_image() const; + + /** + * Query whether or not a type is an image + */ + bool is_image() const + { + return base_type == GLSL_TYPE_IMAGE; + } + + /** * Query whether or not a type is an array */ bool is_array() const @@ -531,7 +547,8 @@ struct glsl_type { } /** - * Return the number of coordinate components needed for this sampler type. + * Return the number of coordinate components needed for this + * sampler or image type. * * This is based purely on the sampler's dimensionality. For example, this * returns 1 for sampler1D, and 3 for sampler2DArray. @@ -540,7 +557,7 @@ struct glsl_type { * a texturing built-in function, since those pack additional values (such * as the shadow comparitor or projector) into the coordinate type. */ - int sampler_coordinate_components() const; + int coordinate_components() const; /** * Compare a record type against another record type. @@ -564,8 +581,8 @@ private: glsl_base_type base_type, unsigned vector_elements, unsigned matrix_columns, const char *name); - /** Constructor for sampler types */ - glsl_type(GLenum gl_type, + /** Constructor for sampler or image types */ + glsl_type(GLenum gl_type, glsl_base_type base_type, enum glsl_sampler_dim dim, bool shadow, bool array, unsigned type, const char *name); diff --git a/mesalib/src/glsl/ir.cpp b/mesalib/src/glsl/ir.cpp index 77638ef26..85fbfa9c4 100644 --- a/mesalib/src/glsl/ir.cpp +++ b/mesalib/src/glsl/ir.cpp @@ -1311,13 +1311,13 @@ ir_dereference::is_lvalue() const if ((var == NULL) || var->data.read_only) return false; - /* From page 17 (page 23 of the PDF) of the GLSL 1.20 spec: + /* From section 4.1.7 of the GLSL 4.40 spec: * - * "Samplers cannot be treated as l-values; hence cannot be used - * as out or inout function parameters, nor can they be - * assigned into." + * "Opaque variables cannot be treated as l-values; hence cannot + * be used as out or inout function parameters, nor can they be + * assigned into." */ - if (this->type->contains_sampler()) + if (this->type->contains_opaque()) return false; return true; @@ -1554,6 +1554,11 @@ ir_variable::ir_variable(const struct glsl_type *type, const char *name, this->data.max_array_access = 0; this->data.atomic.buffer_index = 0; this->data.atomic.offset = 0; + this->data.image.read_only = false; + this->data.image.write_only = false; + this->data.image.coherent = false; + this->data.image._volatile = false; + this->data.image.restrict_flag = false; if (type != NULL) { if (type->base_type == GLSL_TYPE_SAMPLER) @@ -1658,7 +1663,12 @@ ir_function_signature::qualifiers_match(exec_list *params) !modes_match(a->data.mode, b->data.mode) || a->data.interpolation != b->data.interpolation || a->data.centroid != b->data.centroid || - a->data.sample != b->data.sample) { + a->data.sample != b->data.sample || + a->data.image.read_only != b->data.image.read_only || + a->data.image.write_only != b->data.image.write_only || + a->data.image.coherent != b->data.image.coherent || + a->data.image._volatile != b->data.image._volatile || + a->data.image.restrict_flag != b->data.image.restrict_flag) { /* parameter a's qualifiers don't match */ return a->name; diff --git a/mesalib/src/glsl/ir.h b/mesalib/src/glsl/ir.h index e266328b2..ed3f086ce 100644 --- a/mesalib/src/glsl/ir.h +++ b/mesalib/src/glsl/ir.h @@ -106,6 +106,7 @@ public: /** ir_print_visitor helper for debugging. */ void print(void) const; + void fprint(FILE *f) const; virtual void accept(ir_visitor *) = 0; virtual ir_visitor_status accept(ir_hierarchical_visitor *) = 0; @@ -691,6 +692,20 @@ public: } atomic; /** + * ARB_shader_image_load_store qualifiers. + */ + struct { + bool read_only; /**< "readonly" qualifier. */ + bool write_only; /**< "writeonly" qualifier. */ + bool coherent; + bool _volatile; + bool restrict_flag; + + /** Image internal format if specified explicitly, otherwise GL_NONE. */ + GLenum format; + } image; + + /** * Highest element accessed with a constant expression array index * * Not used for non-array variables. @@ -1444,6 +1459,18 @@ public: } /** + * Return whether the expression operates on vectors horizontally. + */ + bool is_horizontal() const + { + return operation == ir_binop_all_equal || + operation == ir_binop_any_nequal || + operation == ir_unop_any || + operation == ir_binop_dot || + operation == ir_quadop_vector; + } + + /** * Return a string representing this expression's operator. */ const char *operator_string(); @@ -2339,7 +2366,7 @@ mode_string(const ir_variable *var); extern "C" { #endif /* __cplusplus */ -extern void _mesa_print_ir(struct exec_list *instructions, +extern void _mesa_print_ir(FILE *f, struct exec_list *instructions, struct _mesa_glsl_parse_state *state); #ifdef __cplusplus diff --git a/mesalib/src/glsl/ir_builder.h b/mesalib/src/glsl/ir_builder.h index f00e6f3b3..f00e6f3b3 100755..100644 --- a/mesalib/src/glsl/ir_builder.h +++ b/mesalib/src/glsl/ir_builder.h diff --git a/mesalib/src/glsl/ir_clone.cpp b/mesalib/src/glsl/ir_clone.cpp index cb732a51a..311c992be 100644 --- a/mesalib/src/glsl/ir_clone.cpp +++ b/mesalib/src/glsl/ir_clone.cpp @@ -373,6 +373,7 @@ ir_constant::clone(void *mem_ctx, struct hash_table *ht) const } case GLSL_TYPE_SAMPLER: + case GLSL_TYPE_IMAGE: case GLSL_TYPE_ATOMIC_UINT: case GLSL_TYPE_VOID: case GLSL_TYPE_ERROR: diff --git a/mesalib/src/glsl/ir_optimization.h b/mesalib/src/glsl/ir_optimization.h index 055d65547..5f4a2f405 100644 --- a/mesalib/src/glsl/ir_optimization.h +++ b/mesalib/src/glsl/ir_optimization.h @@ -36,9 +36,8 @@ #define LOG_TO_LOG2 0x10 #define MOD_TO_FRACT 0x20 #define INT_DIV_TO_MUL_RCP 0x40 -#define LRP_TO_ARITH 0x80 -#define BITFIELD_INSERT_TO_BFM_BFI 0x100 -#define LDEXP_TO_ARITH 0x200 +#define BITFIELD_INSERT_TO_BFM_BFI 0x80 +#define LDEXP_TO_ARITH 0x100 /** * \see class lower_packing_builtins_visitor @@ -120,6 +119,7 @@ bool lower_vector_insert(exec_list *instructions, bool lower_nonconstant_index); void lower_named_interface_blocks(void *mem_ctx, gl_shader *shader); bool optimize_redundant_jumps(exec_list *instructions); bool optimize_split_arrays(exec_list *instructions, bool linked); +bool lower_offset_arrays(exec_list *instructions); ir_rvalue * compare_index_block(exec_list *instructions, ir_variable *index, diff --git a/mesalib/src/glsl/ir_print_visitor.cpp b/mesalib/src/glsl/ir_print_visitor.cpp index 935782184..c7786ba9f 100644 --- a/mesalib/src/glsl/ir_print_visitor.cpp +++ b/mesalib/src/glsl/ir_print_visitor.cpp @@ -27,52 +27,59 @@ #include "main/macros.h" #include "program/hash_table.h" -static void print_type(const glsl_type *t); +static void print_type(FILE *f, const glsl_type *t); void ir_instruction::print(void) const { + this->fprint(stdout); +} + +void +ir_instruction::fprint(FILE *f) const +{ ir_instruction *deconsted = const_cast<ir_instruction *>(this); - ir_print_visitor v; + ir_print_visitor v(f); deconsted->accept(&v); } extern "C" { void -_mesa_print_ir(exec_list *instructions, +_mesa_print_ir(FILE *f, exec_list *instructions, struct _mesa_glsl_parse_state *state) { if (state) { for (unsigned i = 0; i < state->num_user_structures; i++) { const glsl_type *const s = state->user_structures[i]; - printf("(structure (%s) (%s@%p) (%u) (\n", - s->name, s->name, (void *) s, s->length); + fprintf(f, "(structure (%s) (%s@%p) (%u) (\n", + s->name, s->name, (void *) s, s->length); for (unsigned j = 0; j < s->length; j++) { - printf("\t(("); - print_type(s->fields.structure[j].type); - printf(")(%s))\n", s->fields.structure[j].name); + fprintf(f, "\t(("); + print_type(f, s->fields.structure[j].type); + fprintf(f, ")(%s))\n", s->fields.structure[j].name); } - printf(")\n"); + fprintf(f, ")\n"); } } - printf("(\n"); + fprintf(f, "(\n"); foreach_list(n, instructions) { ir_instruction *ir = (ir_instruction *) n; - ir->print(); + ir->fprint(f); if (ir->ir_type != ir_type_function) - printf("\n"); + fprintf(f, "\n"); } - printf("\n)"); + fprintf(f, "\n)"); } } /* extern "C" */ -ir_print_visitor::ir_print_visitor() +ir_print_visitor::ir_print_visitor(FILE *f) + : f(f) { indentation = 0; printable_names = @@ -91,7 +98,7 @@ ir_print_visitor::~ir_print_visitor() void ir_print_visitor::indent(void) { for (int i = 0; i < indentation; i++) - printf(" "); + fprintf(f, " "); } const char * @@ -125,28 +132,28 @@ ir_print_visitor::unique_name(ir_variable *var) } static void -print_type(const glsl_type *t) +print_type(FILE *f, const glsl_type *t) { if (t->base_type == GLSL_TYPE_ARRAY) { - printf("(array "); - print_type(t->fields.array); - printf(" %u)", t->length); + fprintf(f, "(array "); + print_type(f, t->fields.array); + fprintf(f, " %u)", t->length); } else if ((t->base_type == GLSL_TYPE_STRUCT) && (strncmp("gl_", t->name, 3) != 0)) { - printf("%s@%p", t->name, (void *) t); + fprintf(f, "%s@%p", t->name, (void *) t); } else { - printf("%s", t->name); + fprintf(f, "%s", t->name); } } void ir_print_visitor::visit(ir_rvalue *ir) { - printf("error"); + fprintf(f, "error"); } void ir_print_visitor::visit(ir_variable *ir) { - printf("(declare "); + fprintf(f, "(declare "); const char *const cent = (ir->data.centroid) ? "centroid " : ""; const char *const samp = (ir->data.sample) ? "sample " : ""; @@ -158,25 +165,25 @@ void ir_print_visitor::visit(ir_variable *ir) const char *const interp[] = { "", "smooth", "flat", "noperspective" }; STATIC_ASSERT(ARRAY_SIZE(interp) == INTERP_QUALIFIER_COUNT); - printf("(%s%s%s%s%s) ", + fprintf(f, "(%s%s%s%s%s) ", cent, samp, inv, mode[ir->data.mode], interp[ir->data.interpolation]); - print_type(ir->type); - printf(" %s)", unique_name(ir)); + print_type(f, ir->type); + fprintf(f, " %s)", unique_name(ir)); } void ir_print_visitor::visit(ir_function_signature *ir) { _mesa_symbol_table_push_scope(symbols); - printf("(signature "); + fprintf(f, "(signature "); indentation++; - print_type(ir->return_type); - printf("\n"); + print_type(f, ir->return_type); + fprintf(f, "\n"); indent(); - printf("(parameters\n"); + fprintf(f, "(parameters\n"); indentation++; foreach_list(n, &ir->parameters) { @@ -184,16 +191,16 @@ void ir_print_visitor::visit(ir_function_signature *ir) indent(); inst->accept(this); - printf("\n"); + fprintf(f, "\n"); } indentation--; indent(); - printf(")\n"); + fprintf(f, ")\n"); indent(); - printf("(\n"); + fprintf(f, "(\n"); indentation++; foreach_list(n, &ir->body) { @@ -201,11 +208,11 @@ void ir_print_visitor::visit(ir_function_signature *ir) indent(); inst->accept(this); - printf("\n"); + fprintf(f, "\n"); } indentation--; indent(); - printf("))\n"); + fprintf(f, "))\n"); indentation--; _mesa_symbol_table_pop_scope(symbols); } @@ -213,58 +220,58 @@ void ir_print_visitor::visit(ir_function_signature *ir) void ir_print_visitor::visit(ir_function *ir) { - printf("(function %s\n", ir->name); + fprintf(f, "(function %s\n", ir->name); indentation++; foreach_list(n, &ir->signatures) { ir_function_signature *const sig = (ir_function_signature *) n; indent(); sig->accept(this); - printf("\n"); + fprintf(f, "\n"); } indentation--; indent(); - printf(")\n\n"); + fprintf(f, ")\n\n"); } void ir_print_visitor::visit(ir_expression *ir) { - printf("(expression "); + fprintf(f, "(expression "); - print_type(ir->type); + print_type(f, ir->type); - printf(" %s ", ir->operator_string()); + fprintf(f, " %s ", ir->operator_string()); for (unsigned i = 0; i < ir->get_num_operands(); i++) { ir->operands[i]->accept(this); } - printf(") "); + fprintf(f, ") "); } void ir_print_visitor::visit(ir_texture *ir) { - printf("(%s ", ir->opcode_string()); + fprintf(f, "(%s ", ir->opcode_string()); - print_type(ir->type); - printf(" "); + print_type(f, ir->type); + fprintf(f, " "); ir->sampler->accept(this); - printf(" "); + fprintf(f, " "); if (ir->op != ir_txs && ir->op != ir_query_levels) { ir->coordinate->accept(this); - printf(" "); + fprintf(f, " "); if (ir->offset != NULL) { ir->offset->accept(this); } else { - printf("0"); + fprintf(f, "0"); } - printf(" "); + fprintf(f, " "); } if (ir->op != ir_txf && ir->op != ir_txf_ms && @@ -273,17 +280,17 @@ void ir_print_visitor::visit(ir_texture *ir) if (ir->projector) ir->projector->accept(this); else - printf("1"); + fprintf(f, "1"); if (ir->shadow_comparitor) { - printf(" "); + fprintf(f, " "); ir->shadow_comparitor->accept(this); } else { - printf(" ()"); + fprintf(f, " ()"); } } - printf(" "); + fprintf(f, " "); switch (ir->op) { case ir_tex: @@ -302,17 +309,17 @@ void ir_print_visitor::visit(ir_texture *ir) ir->lod_info.sample_index->accept(this); break; case ir_txd: - printf("("); + fprintf(f, "("); ir->lod_info.grad.dPdx->accept(this); - printf(" "); + fprintf(f, " "); ir->lod_info.grad.dPdy->accept(this); - printf(")"); + fprintf(f, ")"); break; case ir_tg4: ir->lod_info.component->accept(this); break; }; - printf(")"); + fprintf(f, ")"); } @@ -325,43 +332,43 @@ void ir_print_visitor::visit(ir_swizzle *ir) ir->mask.w, }; - printf("(swiz "); + fprintf(f, "(swiz "); for (unsigned i = 0; i < ir->mask.num_components; i++) { - printf("%c", "xyzw"[swiz[i]]); + fprintf(f, "%c", "xyzw"[swiz[i]]); } - printf(" "); + fprintf(f, " "); ir->val->accept(this); - printf(")"); + fprintf(f, ")"); } void ir_print_visitor::visit(ir_dereference_variable *ir) { ir_variable *var = ir->variable_referenced(); - printf("(var_ref %s) ", unique_name(var)); + fprintf(f, "(var_ref %s) ", unique_name(var)); } void ir_print_visitor::visit(ir_dereference_array *ir) { - printf("(array_ref "); + fprintf(f, "(array_ref "); ir->array->accept(this); ir->array_index->accept(this); - printf(") "); + fprintf(f, ") "); } void ir_print_visitor::visit(ir_dereference_record *ir) { - printf("(record_ref "); + fprintf(f, "(record_ref "); ir->record->accept(this); - printf(" %s) ", ir->field); + fprintf(f, " %s) ", ir->field); } void ir_print_visitor::visit(ir_assignment *ir) { - printf("(assign "); + fprintf(f, "(assign "); if (ir->condition) ir->condition->accept(this); @@ -377,22 +384,22 @@ void ir_print_visitor::visit(ir_assignment *ir) } mask[j] = '\0'; - printf(" (%s) ", mask); + fprintf(f, " (%s) ", mask); ir->lhs->accept(this); - printf(" "); + fprintf(f, " "); ir->rhs->accept(this); - printf(") "); + fprintf(f, ") "); } void ir_print_visitor::visit(ir_constant *ir) { - printf("(constant "); - print_type(ir->type); - printf(" ("); + fprintf(f, "(constant "); + print_type(f, ir->type); + fprintf(f, " ("); if (ir->type->is_array()) { for (unsigned i = 0; i < ir->type->length; i++) @@ -400,91 +407,91 @@ void ir_print_visitor::visit(ir_constant *ir) } else if (ir->type->is_record()) { ir_constant *value = (ir_constant *) ir->components.get_head(); for (unsigned i = 0; i < ir->type->length; i++) { - printf("(%s ", ir->type->fields.structure[i].name); + fprintf(f, "(%s ", ir->type->fields.structure[i].name); value->accept(this); - printf(")"); + fprintf(f, ")"); value = (ir_constant *) value->next; } } else { for (unsigned i = 0; i < ir->type->components(); i++) { if (i != 0) - printf(" "); + fprintf(f, " "); switch (ir->type->base_type) { - case GLSL_TYPE_UINT: printf("%u", ir->value.u[i]); break; - case GLSL_TYPE_INT: printf("%d", ir->value.i[i]); break; + case GLSL_TYPE_UINT: fprintf(f, "%u", ir->value.u[i]); break; + case GLSL_TYPE_INT: fprintf(f, "%d", ir->value.i[i]); break; case GLSL_TYPE_FLOAT: if (ir->value.f[i] == 0.0f) /* 0.0 == -0.0, so print with %f to get the proper sign. */ - printf("%.1f", ir->value.f[i]); + fprintf(f, "%.1f", ir->value.f[i]); else if (fabs(ir->value.f[i]) < 0.000001f) - printf("%a", ir->value.f[i]); + fprintf(f, "%a", ir->value.f[i]); else if (fabs(ir->value.f[i]) > 1000000.0f) - printf("%e", ir->value.f[i]); + fprintf(f, "%e", ir->value.f[i]); else - printf("%f", ir->value.f[i]); + fprintf(f, "%f", ir->value.f[i]); break; - case GLSL_TYPE_BOOL: printf("%d", ir->value.b[i]); break; + case GLSL_TYPE_BOOL: fprintf(f, "%d", ir->value.b[i]); break; default: assert(0); } } } - printf(")) "); + fprintf(f, ")) "); } void ir_print_visitor::visit(ir_call *ir) { - printf("(call %s ", ir->callee_name()); + fprintf(f, "(call %s ", ir->callee_name()); if (ir->return_deref) ir->return_deref->accept(this); - printf(" ("); + fprintf(f, " ("); foreach_list(n, &ir->actual_parameters) { ir_rvalue *const param = (ir_rvalue *) n; param->accept(this); } - printf("))\n"); + fprintf(f, "))\n"); } void ir_print_visitor::visit(ir_return *ir) { - printf("(return"); + fprintf(f, "(return"); ir_rvalue *const value = ir->get_value(); if (value) { - printf(" "); + fprintf(f, " "); value->accept(this); } - printf(")"); + fprintf(f, ")"); } void ir_print_visitor::visit(ir_discard *ir) { - printf("(discard "); + fprintf(f, "(discard "); if (ir->condition != NULL) { - printf(" "); + fprintf(f, " "); ir->condition->accept(this); } - printf(")"); + fprintf(f, ")"); } void ir_print_visitor::visit(ir_if *ir) { - printf("(if "); + fprintf(f, "(if "); ir->condition->accept(this); - printf("(\n"); + fprintf(f, "(\n"); indentation++; foreach_list(n, &ir->then_instructions) { @@ -492,16 +499,16 @@ ir_print_visitor::visit(ir_if *ir) indent(); inst->accept(this); - printf("\n"); + fprintf(f, "\n"); } indentation--; indent(); - printf(")\n"); + fprintf(f, ")\n"); indent(); if (!ir->else_instructions.is_empty()) { - printf("(\n"); + fprintf(f, "(\n"); indentation++; foreach_list(n, &ir->else_instructions) { @@ -509,13 +516,13 @@ ir_print_visitor::visit(ir_if *ir) indent(); inst->accept(this); - printf("\n"); + fprintf(f, "\n"); } indentation--; indent(); - printf("))\n"); + fprintf(f, "))\n"); } else { - printf("())\n"); + fprintf(f, "())\n"); } } @@ -523,7 +530,7 @@ ir_print_visitor::visit(ir_if *ir) void ir_print_visitor::visit(ir_loop *ir) { - printf("(loop (\n"); + fprintf(f, "(loop (\n"); indentation++; foreach_list(n, &ir->body_instructions) { @@ -531,28 +538,28 @@ ir_print_visitor::visit(ir_loop *ir) indent(); inst->accept(this); - printf("\n"); + fprintf(f, "\n"); } indentation--; indent(); - printf("))\n"); + fprintf(f, "))\n"); } void ir_print_visitor::visit(ir_loop_jump *ir) { - printf("%s", ir->is_break() ? "break" : "continue"); + fprintf(f, "%s", ir->is_break() ? "break" : "continue"); } void ir_print_visitor::visit(ir_emit_vertex *ir) { - printf("(emit-vertex)"); + fprintf(f, "(emit-vertex)"); } void ir_print_visitor::visit(ir_end_primitive *ir) { - printf("(end-primitive)"); + fprintf(f, "(end-primitive)"); } diff --git a/mesalib/src/glsl/ir_print_visitor.h b/mesalib/src/glsl/ir_print_visitor.h index 865376fe0..98f041d1a 100644 --- a/mesalib/src/glsl/ir_print_visitor.h +++ b/mesalib/src/glsl/ir_print_visitor.h @@ -38,7 +38,7 @@ extern "C" { */ class ir_print_visitor : public ir_visitor { public: - ir_print_visitor(); + ir_print_visitor(FILE *f); virtual ~ir_print_visitor(); void indent(void); @@ -87,6 +87,7 @@ private: _mesa_symbol_table *symbols; void *mem_ctx; + FILE *f; int indentation; }; diff --git a/mesalib/src/glsl/ir_uniform.h b/mesalib/src/glsl/ir_uniform.h index f678c2c5c..7508f795d 100644 --- a/mesalib/src/glsl/ir_uniform.h +++ b/mesalib/src/glsl/ir_uniform.h @@ -78,6 +78,26 @@ struct gl_uniform_driver_storage { void *data; }; +struct gl_opaque_uniform_index { + /** + * Base opaque uniform index + * + * If \c gl_uniform_storage::base_type is an opaque type, this + * represents its uniform index. If \c + * gl_uniform_storage::array_elements is not zero, the array will + * use opaque uniform indices \c index through \c index + \c + * gl_uniform_storage::array_elements - 1, inclusive. + * + * Note that the index may be different in each shader stage. + */ + uint8_t index; + + /** + * Whether this opaque uniform is used in this shader stage. + */ + bool active; +}; + struct gl_uniform_storage { char *name; /** Type of this uniform data stored. @@ -99,24 +119,9 @@ struct gl_uniform_storage { */ bool initialized; - struct { - /** - * Base sampler index - * - * If \c ::base_type is \c GLSL_TYPE_SAMPLER, this represents the index - * of this sampler. If \c ::array_elements is not zero, the array will - * use sampler indices \c ::sampler through \c ::sampler + - * \c ::array_elements - 1, inclusive. - * - * Note that the index may be different in each shader stage. - */ - uint8_t index; - - /** - * Whether this sampler is used in this shader stage. - */ - bool active; - } sampler[MESA_SHADER_STAGES]; + struct gl_opaque_uniform_index sampler[MESA_SHADER_STAGES]; + + struct gl_opaque_uniform_index image[MESA_SHADER_STAGES]; /** * Storage used by the driver for the uniform diff --git a/mesalib/src/glsl/link_uniform_initializers.cpp b/mesalib/src/glsl/link_uniform_initializers.cpp index 7d5c1472d..9d6977d57 100644 --- a/mesalib/src/glsl/link_uniform_initializers.cpp +++ b/mesalib/src/glsl/link_uniform_initializers.cpp @@ -69,6 +69,7 @@ copy_constant_to_storage(union gl_constant_value *storage, break; case GLSL_TYPE_ARRAY: case GLSL_TYPE_STRUCT: + case GLSL_TYPE_IMAGE: case GLSL_TYPE_ATOMIC_UINT: case GLSL_TYPE_INTERFACE: case GLSL_TYPE_VOID: diff --git a/mesalib/src/glsl/link_uniforms.cpp b/mesalib/src/glsl/link_uniforms.cpp index 2255f7e6e..8d38324fb 100644 --- a/mesalib/src/glsl/link_uniforms.cpp +++ b/mesalib/src/glsl/link_uniforms.cpp @@ -240,7 +240,8 @@ class count_uniform_size : public program_resource_visitor { public: count_uniform_size(struct string_to_uint_map *map) : num_active_uniforms(0), num_values(0), num_shader_samplers(0), - num_shader_uniform_components(0), is_ubo_var(false), map(map) + num_shader_images(0), num_shader_uniform_components(0), + is_ubo_var(false), map(map) { /* empty */ } @@ -248,6 +249,7 @@ public: void start_shader() { this->num_shader_samplers = 0; + this->num_shader_images = 0; this->num_shader_uniform_components = 0; } @@ -277,6 +279,11 @@ public: unsigned num_shader_samplers; /** + * Number of images used + */ + unsigned num_shader_images; + + /** * Number of uniforms used in the current shader */ unsigned num_shader_uniform_components; @@ -303,6 +310,15 @@ private: if (type->contains_sampler()) { this->num_shader_samplers += type->is_array() ? type->array_size() : 1; + } else if (type->contains_image()) { + this->num_shader_images += values; + + /* As drivers are likely to represent image uniforms as + * scalar indices, count them against the limit of uniform + * components in the default block. The spec allows image + * uniforms to use up no more than one scalar slot. + */ + this->num_shader_uniform_components += values; } else { /* Accumulate the total number of uniform slots used by this shader. * Note that samplers do not count against this limit because they @@ -364,6 +380,7 @@ public: this->shader_samplers_used = 0; this->shader_shadow_samplers = 0; this->next_sampler = 0; + this->next_image = 0; memset(this->targets, 0, sizeof(this->targets)); } @@ -460,6 +477,24 @@ private: } } + void handle_images(const glsl_type *base_type, + struct gl_uniform_storage *uniform) + { + if (base_type->is_image()) { + uniform->image[shader_type].index = this->next_image; + uniform->image[shader_type].active = true; + + /* Increment the image index by 1 for non-arrays and by the + * number of array elements for arrays. + */ + this->next_image += MAX2(1, uniform->array_elements); + + } else { + uniform->image[shader_type].index = ~0; + uniform->image[shader_type].active = false; + } + } + virtual void visit_field(const glsl_type *type, const char *name, bool row_major) { @@ -495,8 +530,9 @@ private: base_type = type; } - /* This assigns sampler uniforms to sampler units. */ + /* This assigns uniform indices to sampler and image uniforms. */ handle_samplers(base_type, &this->uniforms[id]); + handle_images(base_type, &this->uniforms[id]); /* If there is already storage associated with this uniform, it means * that it was set while processing an earlier shader stage. For @@ -554,6 +590,7 @@ private: struct gl_uniform_storage *uniforms; unsigned next_sampler; + unsigned next_image; public: union gl_constant_value *values; @@ -720,6 +757,40 @@ link_assign_uniform_block_offsets(struct gl_shader *shader) } } +/** + * Scan the program for image uniforms and store image unit access + * information into the gl_shader data structure. + */ +static void +link_set_image_access_qualifiers(struct gl_shader_program *prog) +{ + for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) { + gl_shader *sh = prog->_LinkedShaders[i]; + + if (sh == NULL) + continue; + + foreach_list(node, sh->ir) { + ir_variable *var = ((ir_instruction *) node)->as_variable(); + + if (var && var->data.mode == ir_var_uniform && + var->type->contains_image()) { + unsigned id; + bool found = prog->UniformHash->get(id, var->name); + assert(found); + const gl_uniform_storage *storage = &prog->UniformStorage[id]; + const unsigned index = storage->image[i].index; + const GLenum access = (var->data.image.read_only ? GL_READ_ONLY : + var->data.image.write_only ? GL_WRITE_ONLY : + GL_READ_WRITE); + + for (unsigned j = 0; j < MAX2(1, storage->array_elements); ++j) + sh->ImageAccess[index + j] = access; + } + } + } +} + void link_assign_uniform_locations(struct gl_shader_program *prog) { @@ -757,6 +828,7 @@ link_assign_uniform_locations(struct gl_shader_program *prog) * types cannot have initializers." */ memset(sh->SamplerUnits, 0, sizeof(sh->SamplerUnits)); + memset(sh->ImageUnits, 0, sizeof(sh->ImageUnits)); link_update_uniform_buffer_variables(sh); @@ -782,6 +854,7 @@ link_assign_uniform_locations(struct gl_shader_program *prog) } sh->num_samplers = uniform_size.num_shader_samplers; + sh->NumImages = uniform_size.num_shader_images; sh->num_uniform_components = uniform_size.num_shader_uniform_components; sh->num_combined_uniform_components = sh->num_uniform_components; @@ -861,6 +934,7 @@ link_assign_uniform_locations(struct gl_shader_program *prog) prog->NumUserUniformStorage = num_user_uniforms; prog->UniformStorage = uniforms; + link_set_image_access_qualifiers(prog); link_set_uniform_initializers(prog); return; diff --git a/mesalib/src/glsl/linker.cpp b/mesalib/src/glsl/linker.cpp index bcd739476..f6b266185 100644 --- a/mesalib/src/glsl/linker.cpp +++ b/mesalib/src/glsl/linker.cpp @@ -1206,6 +1206,7 @@ link_gs_inout_layout_qualifiers(struct gl_shader_program *prog, unsigned num_shaders) { linked_shader->Geom.VerticesOut = 0; + linked_shader->Geom.Invocations = 0; linked_shader->Geom.InputType = PRIM_UNKNOWN; linked_shader->Geom.OutputType = PRIM_UNKNOWN; @@ -1259,6 +1260,18 @@ link_gs_inout_layout_qualifiers(struct gl_shader_program *prog, } linked_shader->Geom.VerticesOut = shader->Geom.VerticesOut; } + + if (shader->Geom.Invocations != 0) { + if (linked_shader->Geom.Invocations != 0 && + linked_shader->Geom.Invocations != shader->Geom.Invocations) { + linker_error(prog, "geometry shader defined with conflicting " + "invocation count (%d and %d)\n", + linked_shader->Geom.Invocations, + shader->Geom.Invocations); + return; + } + linked_shader->Geom.Invocations = shader->Geom.Invocations; + } } /* Just do the intrastage -> interstage propagation right now, @@ -1285,6 +1298,11 @@ link_gs_inout_layout_qualifiers(struct gl_shader_program *prog, return; } prog->Geom.VerticesOut = linked_shader->Geom.VerticesOut; + + if (linked_shader->Geom.Invocations == 0) + linked_shader->Geom.Invocations = 1; + + prog->Geom.Invocations = linked_shader->Geom.Invocations; } @@ -2031,6 +2049,46 @@ check_resources(struct gl_context *ctx, struct gl_shader_program *prog) } } +/** + * Validate shader image resources. + */ +static void +check_image_resources(struct gl_context *ctx, struct gl_shader_program *prog) +{ + unsigned total_image_units = 0; + unsigned fragment_outputs = 0; + + if (!ctx->Extensions.ARB_shader_image_load_store) + return; + + for (unsigned i = 0; i < MESA_SHADER_STAGES; i++) { + struct gl_shader *sh = prog->_LinkedShaders[i]; + + if (sh) { + if (sh->NumImages > ctx->Const.Program[i].MaxImageUniforms) + linker_error(prog, "Too many %s shader image uniforms", + _mesa_shader_stage_to_string(i)); + + total_image_units += sh->NumImages; + + if (i == MESA_SHADER_FRAGMENT) { + foreach_list(node, sh->ir) { + ir_variable *var = ((ir_instruction *)node)->as_variable(); + if (var && var->data.mode == ir_var_shader_out) + fragment_outputs += var->type->count_attribute_slots(); + } + } + } + } + + if (total_image_units > ctx->Const.MaxCombinedImageUniforms) + linker_error(prog, "Too many combined image uniforms"); + + if (total_image_units + fragment_outputs > + ctx->Const.MaxCombinedImageUnitsAndFragmentOutputs) + linker_error(prog, "Too many combined image uniforms and fragment outputs"); +} + void link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) { @@ -2394,17 +2452,19 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) store_fragdepth_layout(prog); check_resources(ctx, prog); + check_image_resources(ctx, prog); link_check_atomic_counter_resources(ctx, prog); if (!prog->LinkStatus) goto done; /* OpenGL ES requires that a vertex shader and a fragment shader both be - * present in a linked program. By checking prog->IsES, we also - * catch the GL_ARB_ES2_compatibility case. + * present in a linked program. GL_ARB_ES2_compatibility doesn't say + * anything about shader linking when one of the shaders (vertex or + * fragment shader) is absent. So, the extension shouldn't change the + * behavior specified in GLSL specification. */ - if (!prog->InternalSeparateShader && - (ctx->API == API_OPENGLES2 || prog->IsES)) { + if (!prog->InternalSeparateShader && ctx->API == API_OPENGLES2) { if (prog->_LinkedShaders[MESA_SHADER_VERTEX] == NULL) { linker_error(prog, "program lacks a vertex shader\n"); } else if (prog->_LinkedShaders[MESA_SHADER_FRAGMENT] == NULL) { diff --git a/mesalib/src/glsl/lower_instructions.cpp b/mesalib/src/glsl/lower_instructions.cpp index 44a6e8021..01ea0f01f 100644 --- a/mesalib/src/glsl/lower_instructions.cpp +++ b/mesalib/src/glsl/lower_instructions.cpp @@ -38,7 +38,6 @@ * - LOG_TO_LOG2 * - MOD_TO_FRACT * - LDEXP_TO_ARITH - * - LRP_TO_ARITH * - BITFIELD_INSERT_TO_BFM_BFI * * SUB_TO_ADD_NEG: @@ -87,10 +86,6 @@ * ------------- * Converts ir_binop_ldexp to arithmetic and bit operations. * - * LRP_TO_ARITH: - * ------------- - * Converts ir_triop_lrp to (op0 * (1.0f - op2)) + (op1 * op2). - * * BITFIELD_INSERT_TO_BFM_BFI: * --------------------------- * Breaks ir_quadop_bitfield_insert into ir_binop_bfm (bitfield mask) and @@ -130,7 +125,6 @@ private: void exp_to_exp2(ir_expression *); void pow_to_exp2(ir_expression *); void log_to_log2(ir_expression *); - void lrp_to_arith(ir_expression *); void bitfield_insert_to_bfm_bfi(ir_expression *); void ldexp_to_arith(ir_expression *); }; @@ -299,27 +293,6 @@ lower_instructions_visitor::mod_to_fract(ir_expression *ir) } void -lower_instructions_visitor::lrp_to_arith(ir_expression *ir) -{ - /* (lrp x y a) -> x*(1-a) + y*a */ - - /* Save op2 */ - ir_variable *temp = new(ir) ir_variable(ir->operands[2]->type, "lrp_factor", - ir_var_temporary); - this->base_ir->insert_before(temp); - this->base_ir->insert_before(assign(temp, ir->operands[2])); - - ir_constant *one = new(ir) ir_constant(1.0f); - - ir->operation = ir_binop_add; - ir->operands[0] = mul(ir->operands[0], sub(one, temp)); - ir->operands[1] = mul(ir->operands[1], temp); - ir->operands[2] = NULL; - - this->progress = true; -} - -void lower_instructions_visitor::bitfield_insert_to_bfm_bfi(ir_expression *ir) { /* Translates @@ -499,11 +472,6 @@ lower_instructions_visitor::visit_leave(ir_expression *ir) pow_to_exp2(ir); break; - case ir_triop_lrp: - if (lowering(LRP_TO_ARITH)) - lrp_to_arith(ir); - break; - case ir_quadop_bitfield_insert: if (lowering(BITFIELD_INSERT_TO_BFM_BFI)) bitfield_insert_to_bfm_bfi(ir); diff --git a/mesalib/src/glsl/lower_offset_array.cpp b/mesalib/src/glsl/lower_offset_array.cpp new file mode 100644 index 000000000..0c235eda3 --- /dev/null +++ b/mesalib/src/glsl/lower_offset_array.cpp @@ -0,0 +1,90 @@ +/* + * Copyright © 2013 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +/** + * \file brw_lower_offset_array.cpp + * + * IR lower pass to decompose ir_texture ir_tg4 with an array of offsets + * into four ir_tg4s with a single ivec2 offset, select the .w component of each, + * and return those four values packed into a gvec4. + * + * \author Chris Forbes <chrisf@ijw.co.nz> + */ + +#include "glsl_types.h" +#include "ir.h" +#include "ir_builder.h" +#include "ir_optimization.h" +#include "ir_rvalue_visitor.h" + +using namespace ir_builder; + +class brw_lower_offset_array_visitor : public ir_rvalue_visitor { +public: + brw_lower_offset_array_visitor() + { + progress = false; + } + + void handle_rvalue(ir_rvalue **rv); + + bool progress; +}; + +void +brw_lower_offset_array_visitor::handle_rvalue(ir_rvalue **rv) +{ + if (*rv == NULL || (*rv)->ir_type != ir_type_texture) + return; + + ir_texture *ir = (ir_texture *) *rv; + if (ir->op != ir_tg4 || !ir->offset || !ir->offset->type->is_array()) + return; + + void *mem_ctx = ralloc_parent(ir); + + ir_variable *var = new (mem_ctx) ir_variable(ir->type, "result", ir_var_auto); + base_ir->insert_before(var); + + for (int i = 0; i < 4; i++) { + ir_texture *tex = ir->clone(mem_ctx, NULL); + tex->offset = new (mem_ctx) ir_dereference_array(tex->offset, + new (mem_ctx) ir_constant(i)); + + base_ir->insert_before(assign(var, swizzle_w(tex), 1 << i)); + } + + *rv = new (mem_ctx) ir_dereference_variable(var); + + progress = true; +} + +bool +lower_offset_arrays(exec_list *instructions) +{ + brw_lower_offset_array_visitor v; + + visit_list_elements(&v, instructions); + + return v.progress; +} diff --git a/mesalib/src/glsl/main.cpp b/mesalib/src/glsl/main.cpp index 48ab1c73a..0d8c01f6a 100644 --- a/mesalib/src/glsl/main.cpp +++ b/mesalib/src/glsl/main.cpp @@ -305,7 +305,7 @@ compile_shader(struct gl_context *ctx, struct gl_shader *shader) /* Print out the resulting IR */ if (!state->error && dump_lir) { - _mesa_print_ir(shader->ir, state); + _mesa_print_ir(stdout, shader->ir, state); } return; diff --git a/mesalib/src/glsl/opt_algebraic.cpp b/mesalib/src/glsl/opt_algebraic.cpp index 1b4d31936..5c49a785c 100644 --- a/mesalib/src/glsl/opt_algebraic.cpp +++ b/mesalib/src/glsl/opt_algebraic.cpp @@ -568,6 +568,12 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir) return ir->operands[1]; } else if (ir->operands[0]->equals(ir->operands[1])) { return ir->operands[0]; + } else if (is_vec_zero(op_const[0])) { + return mul(ir->operands[1], ir->operands[2]); + } else if (is_vec_zero(op_const[1])) { + unsigned op2_components = ir->operands[2]->type->vector_elements; + ir_constant *one = new(mem_ctx) ir_constant(1.0f, op2_components); + return mul(ir->operands[0], add(one, neg(ir->operands[2]))); } break; diff --git a/mesalib/src/glsl/opt_array_splitting.cpp b/mesalib/src/glsl/opt_array_splitting.cpp index f37d09022..97d3a57e9 100644 --- a/mesalib/src/glsl/opt_array_splitting.cpp +++ b/mesalib/src/glsl/opt_array_splitting.cpp @@ -400,7 +400,7 @@ optimize_split_arrays(exec_list *instructions, bool linked) visit_list_elements(&split, instructions); if (debug) - _mesa_print_ir(instructions, NULL); + _mesa_print_ir(stdout, instructions, NULL); ralloc_free(mem_ctx); diff --git a/mesalib/src/glsl/opt_vectorize.cpp b/mesalib/src/glsl/opt_vectorize.cpp index 8ee81f1a3..13faac05e 100644 --- a/mesalib/src/glsl/opt_vectorize.cpp +++ b/mesalib/src/glsl/opt_vectorize.cpp @@ -82,6 +82,8 @@ public: virtual ir_visitor_status visit_enter(ir_assignment *); virtual ir_visitor_status visit_enter(ir_swizzle *); + virtual ir_visitor_status visit_enter(ir_dereference_array *); + virtual ir_visitor_status visit_enter(ir_expression *); virtual ir_visitor_status visit_enter(ir_if *); virtual ir_visitor_status visit_enter(ir_loop *); @@ -289,6 +291,33 @@ ir_vectorize_visitor::visit_enter(ir_swizzle *ir) return visit_continue; } +/* Upon entering an ir_array_dereference, remove the current assignment from + * further consideration. Since the index of an array dereference must scalar, + * we are not able to vectorize it. + * + * FINISHME: If all of scalar indices are identical we could vectorize. + */ +ir_visitor_status +ir_vectorize_visitor::visit_enter(ir_dereference_array *ir) +{ + this->current_assignment = NULL; + return visit_continue_with_parent; +} + +/** + * Upon entering an ir_expression, remove the current assignment from further + * consideration if the expression operates horizontally on vectors. + */ +ir_visitor_status +ir_vectorize_visitor::visit_enter(ir_expression *ir) +{ + if (ir->is_horizontal()) { + this->current_assignment = NULL; + return visit_continue_with_parent; + } + return visit_continue; +} + /* Since there is no statement to visit between the "then" and "else" * instructions try to vectorize before, in between, and after them to avoid * combining statements from different basic blocks. diff --git a/mesalib/src/glsl/test_optpass.cpp b/mesalib/src/glsl/test_optpass.cpp index 1a15f3c63..f1b9579cd 100644 --- a/mesalib/src/glsl/test_optpass.cpp +++ b/mesalib/src/glsl/test_optpass.cpp @@ -235,7 +235,7 @@ int test_optpass(int argc, char **argv) /* Print out the initial IR */ if (!state->error && !quiet) { printf("*** pre-optimization IR:\n"); - _mesa_print_ir(shader->ir, state); + _mesa_print_ir(stdout, shader->ir, state); printf("\n--\n"); } @@ -255,7 +255,7 @@ int test_optpass(int argc, char **argv) if (!quiet) { printf("*** resulting IR:\n"); } - _mesa_print_ir(shader->ir, state); + _mesa_print_ir(stdout, shader->ir, state); if (!quiet) { printf("\n--\n"); } diff --git a/mesalib/src/loader/loader.c b/mesalib/src/loader/loader.c index 811f8a257..811f8a257 100755..100644 --- a/mesalib/src/loader/loader.c +++ b/mesalib/src/loader/loader.c diff --git a/mesalib/src/mapi/glapi/Makefile.am b/mesalib/src/mapi/glapi/Makefile.am index bf653a305..e425bacea 100644 --- a/mesalib/src/mapi/glapi/Makefile.am +++ b/mesalib/src/mapi/glapi/Makefile.am @@ -27,6 +27,7 @@ include ../Makefile.sources AM_CPPFLAGS = \ $(DEFINES) \ + $(SELINUX_CFLAGS) \ -I$(top_srcdir)/include \ -I$(top_srcdir)/src/mapi \ -I$(top_builddir)/src/mapi \ diff --git a/mesalib/src/mapi/glapi/Makefile.sources b/mesalib/src/mapi/glapi/Makefile.sources index 58d28c52c..100e6347e 100644 --- a/mesalib/src/mapi/glapi/Makefile.sources +++ b/mesalib/src/mapi/glapi/Makefile.sources @@ -6,7 +6,6 @@ GLAPI_SOURCES = \ glapi_gentable.c \ glapi_getproc.c \ glapi_nop.c \ - glthread.c \ glapi.c X86_API = \ diff --git a/mesalib/src/mapi/glapi/SConscript b/mesalib/src/mapi/glapi/SConscript index 152818d22..bc1c43aa8 100644 --- a/mesalib/src/mapi/glapi/SConscript +++ b/mesalib/src/mapi/glapi/SConscript @@ -34,7 +34,6 @@ glapi_sources = [ 'glapi_entrypoint.c', 'glapi_getproc.c', 'glapi_nop.c', - 'glthread.c', 'glapi.c', ] diff --git a/mesalib/src/mapi/glapi/gen/ARB_separate_shader_objects.xml b/mesalib/src/mapi/glapi/gen/ARB_separate_shader_objects.xml new file mode 100644 index 000000000..80234ea5e --- /dev/null +++ b/mesalib/src/mapi/glapi/gen/ARB_separate_shader_objects.xml @@ -0,0 +1,401 @@ +<?xml version="1.0"?> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd"> + +<!-- Note: no GLX protocol info yet. --> + +<OpenGLAPI> + <category name="ARB_separate_shader_objects" number="97"> + <enum name="ACTIVE_PROGRAM" value="0x8259"/> + <enum name="PROGRAM_PIPELINE_BINDING" value="0x825A"/> + <enum name="VERTEX_SHADER_BIT" value="0x00000001"/> + <enum name="FRAGMENT_SHADER_BIT" value="0x00000002"/> + <enum name="GEOMETRY_SHADER_BIT" value="0x00000004"/> + <enum name="TESS_CONTROL_SHADER_BIT" value="0x00000008"/> + <enum name="TESS_EVALUATION_SHADER_BIT" value="0x00000010"/> + <enum name="ALL_SHADER_BITS" value="0xFFFFFFFF"/> + <enum name="PROGRAM_SEPARABLE" value="0x8258"/> + + <function name="UseProgramStages" offset="assign"> + <param name="pipeline" type="GLuint" /> + <param name="stages" type="GLbitfield" /> + <param name="program" type="GLuint" /> + </function> + <function name="ActiveShaderProgram" offset="assign"> + <param name="pipeline" type="GLuint" /> + <param name="program" type="GLuint" /> + </function> + <function name="CreateShaderProgramv" offset="assign"> + <param name="type" type="GLenum" /> + <param name="count" type="GLsizei" /> + <param name="strings" type="const GLchar * const *" /> + <return type="GLuint"/> + </function> + <function name="BindProgramPipeline" offset="assign"> + <param name="pipeline" type="GLuint" /> + </function> + <function name="DeleteProgramPipelines" offset="assign"> + <param name="n" type="GLsizei" /> + <param name="pipelines" type="const GLuint *" /> + </function> + <function name="GenProgramPipelines" offset="assign"> + <param name="n" type="GLsizei" /> + <param name="pipelines" type="GLuint *" /> + </function> + <function name="IsProgramPipeline" offset="assign"> + <param name="pipeline" type="GLuint" /> + <return type="GLboolean"/> + </function> + <!-- Function already included on ARB_get_program_binary.xml. Keep a commented + version here for completeness --> + <!-- + <function name="ProgramParameteri" offset="assign" es2="3.0"> + <param name="program" type="GLuint"/> + <param name="pname" type="GLenum"/> + <param name="value" type="GLint"/> + </function> + --> + <function name="GetProgramPipelineiv" offset="assign"> + <param name="pipeline" type="GLuint" /> + <param name="pname" type="GLenum" /> + <param name="params" type="GLint *" /> + </function> + <function name="ProgramUniform1i" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="x" type="GLint" /> + </function> + <function name="ProgramUniform2i" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="x" type="GLint" /> + <param name="y" type="GLint" /> + </function> + <function name="ProgramUniform3i" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="x" type="GLint" /> + <param name="y" type="GLint" /> + <param name="z" type="GLint" /> + </function> + <function name="ProgramUniform4i" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="x" type="GLint" /> + <param name="y" type="GLint" /> + <param name="z" type="GLint" /> + <param name="w" type="GLint" /> + </function> + <function name="ProgramUniform1ui" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="x" type="GLuint" /> + </function> + <function name="ProgramUniform2ui" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="x" type="GLuint" /> + <param name="y" type="GLuint" /> + </function> + <function name="ProgramUniform3ui" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="x" type="GLuint" /> + <param name="y" type="GLuint" /> + <param name="z" type="GLuint" /> + </function> + <function name="ProgramUniform4ui" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="x" type="GLuint" /> + <param name="y" type="GLuint" /> + <param name="z" type="GLuint" /> + <param name="w" type="GLuint" /> + </function> + <function name="ProgramUniform1f" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="x" type="GLfloat" /> + </function> + <function name="ProgramUniform2f" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="x" type="GLfloat" /> + <param name="y" type="GLfloat" /> + </function> + <function name="ProgramUniform3f" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="x" type="GLfloat" /> + <param name="y" type="GLfloat" /> + <param name="z" type="GLfloat" /> + </function> + <function name="ProgramUniform4f" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="x" type="GLfloat" /> + <param name="y" type="GLfloat" /> + <param name="z" type="GLfloat" /> + <param name="w" type="GLfloat" /> + </function> + <function name="ProgramUniform1iv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="value" type="const GLint *" /> + </function> + <function name="ProgramUniform2iv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="value" type="const GLint *" /> + </function> + <function name="ProgramUniform3iv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="value" type="const GLint *" /> + </function> + <function name="ProgramUniform4iv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="value" type="const GLint *" /> + </function> + <function name="ProgramUniform1uiv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="value" type="const GLuint *" /> + </function> + <function name="ProgramUniform2uiv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="value" type="const GLuint *" /> + </function> + <function name="ProgramUniform3uiv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="value" type="const GLuint *" /> + </function> + <function name="ProgramUniform4uiv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="value" type="const GLuint *" /> + </function> + <function name="ProgramUniform1fv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="value" type="const GLfloat *" /> + </function> + <function name="ProgramUniform2fv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="value" type="const GLfloat *" /> + </function> + <function name="ProgramUniform3fv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="value" type="const GLfloat *" /> + </function> + <function name="ProgramUniform4fv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="value" type="const GLfloat *" /> + </function> + <function name="ProgramUniformMatrix2fv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="transpose" type="GLboolean" /> + <param name="value" type="const GLfloat *" /> + </function> + <function name="ProgramUniformMatrix3fv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="transpose" type="GLboolean" /> + <param name="value" type="const GLfloat *" /> + </function> + <function name="ProgramUniformMatrix4fv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="transpose" type="GLboolean" /> + <param name="value" type="const GLfloat *" /> + </function> + <function name="ProgramUniformMatrix2x3fv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="transpose" type="GLboolean" /> + <param name="value" type="const GLfloat *" /> + </function> + <function name="ProgramUniformMatrix3x2fv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="transpose" type="GLboolean" /> + <param name="value" type="const GLfloat *" /> + </function> + <function name="ProgramUniformMatrix2x4fv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="transpose" type="GLboolean" /> + <param name="value" type="const GLfloat *" /> + </function> + <function name="ProgramUniformMatrix4x2fv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="transpose" type="GLboolean" /> + <param name="value" type="const GLfloat *" /> + </function> + <function name="ProgramUniformMatrix3x4fv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="transpose" type="GLboolean" /> + <param name="value" type="const GLfloat *" /> + </function> + <function name="ProgramUniformMatrix4x3fv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="transpose" type="GLboolean" /> + <param name="value" type="const GLfloat *" /> + </function> + <function name="ValidateProgramPipeline" offset="assign"> + <param name="pipeline" type="GLuint" /> + </function> + <function name="GetProgramPipelineInfoLog" offset="assign"> + <param name="pipeline" type="GLuint" /> + <param name="bufSize" type="GLsizei" /> + <param name="length" type="GLsizei *" /> + <param name="infoLog" type="GLchar *" /> + </function> + + <!-- depends on GL_ARB_gpu_shader_fp64 + <function name="ProgramUniform1d" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="x" type="GLdouble" /> + </function> + <function name="ProgramUniform2d" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="x" type="GLdouble" /> + <param name="y" type="GLdouble" /> + </function> + <function name="ProgramUniform3d" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="x" type="GLdouble" /> + <param name="y" type="GLdouble" /> + <param name="z" type="GLdouble" /> + </function> + <function name="ProgramUniform4d" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="x" type="GLdouble" /> + <param name="y" type="GLdouble" /> + <param name="z" type="GLdouble" /> + <param name="w" type="GLdouble" /> + </function> + <function name="ProgramUniformMatrix2x3dv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="transpose" type="GLboolean" /> + <param name="value" type="const GLdouble *" /> + </function> + <function name="ProgramUniformMatrix3x2dv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="transpose" type="GLboolean" /> + <param name="value" type="const GLdouble *" /> + </function> + <function name="ProgramUniformMatrix2x4dv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="transpose" type="GLboolean" /> + <param name="value" type="const GLdouble *" /> + </function> + <function name="ProgramUniformMatrix4x2dv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="transpose" type="GLboolean" /> + <param name="value" type="const GLdouble *" /> + </function> + <function name="ProgramUniformMatrix3x4dv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="transpose" type="GLboolean" /> + <param name="value" type="const GLdouble *" /> + </function> + <function name="ProgramUniformMatrix4x3dv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="transpose" type="GLboolean" /> + <param name="value" type="const GLdouble *" /> + </function> + <function name="ProgramUniformMatrix2dv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="transpose" type="GLboolean" /> + <param name="value" type="const GLdouble *" /> + </function> + <function name="ProgramUniformMatrix3dv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="transpose" type="GLboolean" /> + <param name="value" type="const GLdouble *" /> + </function> + <function name="ProgramUniformMatrix4dv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="transpose" type="GLboolean" /> + <param name="value" type="const GLdouble *" /> + </function> + <function name="ProgramUniform1dv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="value" type="const GLdouble *" /> + </function> + <function name="ProgramUniform2dv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="value" type="const GLdouble *" /> + </function> + <function name="ProgramUniform3dv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="value" type="const GLdouble *" /> + </function> + <function name="ProgramUniform4dv" offset="assign"> + <param name="program" type="GLuint" /> + <param name="location" type="GLint" /> + <param name="count" type="GLsizei" /> + <param name="value" type="const GLdouble *" /> + </function> + --> + </category> +</OpenGLAPI> diff --git a/mesalib/src/mapi/glapi/gen/Makefile.am b/mesalib/src/mapi/glapi/gen/Makefile.am index 9e6fe5261..7b3c118f0 100644 --- a/mesalib/src/mapi/glapi/gen/Makefile.am +++ b/mesalib/src/mapi/glapi/gen/Makefile.am @@ -113,6 +113,7 @@ API_XML = \ ARB_sample_shading.xml \ ARB_sampler_objects.xml \ ARB_seamless_cube_map.xml \ + ARB_separate_shader_objects.xml \ ARB_shader_atomic_counters.xml \ ARB_shader_image_load_store.xml \ ARB_sync.xml \ diff --git a/mesalib/src/mapi/glapi/gen/NV_vdpau_interop.xml b/mesalib/src/mapi/glapi/gen/NV_vdpau_interop.xml index cf5f0eddd..0b19e1a85 100644 --- a/mesalib/src/mapi/glapi/gen/NV_vdpau_interop.xml +++ b/mesalib/src/mapi/glapi/gen/NV_vdpau_interop.xml @@ -29,6 +29,7 @@ </function> <function name="VDPAUIsSurfaceNV" offset="assign"> + <return type="GLboolean"/> <param name="surface" type="GLintptr"/> </function> diff --git a/mesalib/src/mapi/glapi/gen/glX_proto_recv.py b/mesalib/src/mapi/glapi/gen/glX_proto_recv.py index 84526581a..086fc97d7 100755 --- a/mesalib/src/mapi/glapi/gen/glX_proto_recv.py +++ b/mesalib/src/mapi/glapi/gen/glX_proto_recv.py @@ -97,7 +97,6 @@ class PrintGlxDispatchFunctions(glX_proto_common.glx_print_proto): print '#include "singlesize.h"' print '#include "glapi.h"' print '#include "glapitable.h"' - print '#include "glthread.h"' print '#include "dispatch.h"' print '' print '#define __GLX_PAD(x) (((x) + 3) & ~3)' diff --git a/mesalib/src/mapi/glapi/gen/glX_proto_send.py b/mesalib/src/mapi/glapi/gen/glX_proto_send.py index 8b804418b..a98f63e99 100755 --- a/mesalib/src/mapi/glapi/gen/glX_proto_send.py +++ b/mesalib/src/mapi/glapi/gen/glX_proto_send.py @@ -167,7 +167,6 @@ class PrintGlxProtoStubs(glX_proto_common.glx_print_proto): print '#include "glxclient.h"' print '#include "indirect_size.h"' print '#include "glapi.h"' - print '#include "glthread.h"' print '#include <GL/glxproto.h>' print '#include <X11/Xlib-xcb.h>' print '#include <xcb/xcb.h>' diff --git a/mesalib/src/mapi/glapi/gen/gl_API.xml b/mesalib/src/mapi/glapi/gen/gl_API.xml index d5467a823..8f175e6be 100755 --- a/mesalib/src/mapi/glapi/gen/gl_API.xml +++ b/mesalib/src/mapi/glapi/gen/gl_API.xml @@ -8275,7 +8275,11 @@ </function> </category> -<!-- ARB extensions #95...#108 --> +<!-- ARB extensions #95...#96 --> + +<xi:include href="ARB_separate_shader_objects.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> + +<!-- ARB extensions #98...#108 --> <xi:include href="ARB_ES2_compatibility.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> @@ -8492,6 +8496,25 @@ <xi:include href="ARB_texture_storage_multisample.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> +<!-- ARB extension 142 - 143. --> + +<category name="GL_ARB_buffer_storage" number="144"> + <enum name="MAP_PERSISTENT_BIT" value="0x40" /> + <enum name="MAP_COHERENT_BIT" value="0x80" /> + <enum name="DYNAMIC_STORAGE_BIT" value="0x100" /> + <enum name="CLIENT_STORAGE_BIT" value="0x200" /> + <enum name="BUFFER_IMMUTABLE_STORAGE" value="0x821F" /> + <enum name="BUFFER_STORAGE_FLAGS" value="0x8220" /> + <enum name="CLIENT_MAPPED_BUFFER_BARRIER_BIT" value="0x4000" /> + + <function name="BufferStorage" offset="assign"> + <param name="target" type="GLenum"/> + <param name="size" type="GLsizeiptr"/> + <param name="data" type="const GLvoid *"/> + <param name="flags" type="GLbitfield"/> + </function> +</category> + <!-- Non-ARB extensions sorted by extension number. --> <category name="GL_EXT_blend_color" number="2"> diff --git a/mesalib/src/mapi/glapi/gen/gl_functions.py b/mesalib/src/mapi/glapi/gen/gl_functions.py index 3db72bba8..cd408ade2 100755 --- a/mesalib/src/mapi/glapi/gen/gl_functions.py +++ b/mesalib/src/mapi/glapi/gen/gl_functions.py @@ -43,7 +43,7 @@ class PrintFunctionTable(gl_XML.gl_print_base): print """ #include "glapitable.h" #include "glapi.h" -#include "glthread.h" +#include "u_thread.h" #include "dispatch.h" """ return diff --git a/mesalib/src/mapi/glapi/gen/gl_genexec.py b/mesalib/src/mapi/glapi/gen/gl_genexec.py index 1765a51ad..460919397 100644 --- a/mesalib/src/mapi/glapi/gen/gl_genexec.py +++ b/mesalib/src/mapi/glapi/gen/gl_genexec.py @@ -86,6 +86,7 @@ header = """/** #include "main/multisample.h" #include "main/objectlabel.h" #include "main/performance_monitor.h" +#include "main/pipelineobj.h" #include "main/pixel.h" #include "main/pixelstore.h" #include "main/points.h" diff --git a/mesalib/src/mapi/glapi/glapi.h b/mesalib/src/mapi/glapi/glapi.h index b10f19a63..67bf1f42e 100644 --- a/mesalib/src/mapi/glapi/glapi.h +++ b/mesalib/src/mapi/glapi/glapi.h @@ -44,13 +44,14 @@ #ifndef _GLAPI_H #define _GLAPI_H -#include "glthread.h" +#include "u_thread.h" #ifdef __cplusplus extern "C" { #endif + #ifdef _GLAPI_NO_EXPORTS # define _GLAPI_EXPORT #else /* _GLAPI_NO_EXPORTS */ @@ -69,7 +70,6 @@ extern "C" { #include "GL/gl.h" #include "GL/glext.h" -#include "glthread.h" struct _glapi_table; @@ -84,8 +84,8 @@ typedef void (*_glapi_warning_func)(void *ctx, const char *str, ...); #define _glapi_get_dispatch _mglapi_get_dispatch #define _glapi_set_context _mglapi_set_context #define _glapi_get_context _mglapi_get_context -#define _glapi_Context _mglapi_Context #define _glapi_Dispatch _mglapi_Dispatch +#define _glapi_Context _mglapi_Context #endif /* @@ -100,12 +100,14 @@ typedef void (*_glapi_warning_func)(void *ctx, const char *str, ...); **/ #if defined (GLX_USE_TLS) -_GLAPI_EXPORT extern __thread struct _glapi_table * _glapi_tls_Dispatch; +_GLAPI_EXPORT extern __thread struct _glapi_table * _glapi_tls_Dispatch + ; -_GLAPI_EXPORT extern const void *_glapi_Context; -_GLAPI_EXPORT extern const struct _glapi_table *_glapi_Dispatch; +_GLAPI_EXPORT extern __thread void * _glapi_tls_Context + ; -_GLAPI_EXPORT extern __thread void * _glapi_tls_Context; +_GLAPI_EXPORT extern const struct _glapi_table *_glapi_Dispatch; +_GLAPI_EXPORT extern const void *_glapi_Context; # define GET_DISPATCH() _glapi_tls_Dispatch # define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) _glapi_tls_Context @@ -118,20 +120,22 @@ _GLAPI_EXPORT extern __thread void * _glapi_tls_Context; #define SERVEXTERN _declspec(dllexport) #endif -SERVEXTERN void *_glapi_Context; SERVEXTERN struct _glapi_table *_glapi_Dispatch; +SERVEXTERN void *_glapi_Context; # ifdef THREADS # define GET_DISPATCH() \ (likely(_glapi_Dispatch) ? _glapi_Dispatch : _glapi_get_dispatch()) - # define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) \ (likely(_glapi_Context) ? _glapi_Context : _glapi_get_context()) + # else + # define GET_DISPATCH() _glapi_Dispatch # define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) _glapi_Context + # endif #endif /* defined (GLX_USE_TLS) */ @@ -183,8 +187,10 @@ _glapi_get_proc_address(const char *funcName); extern struct _glapi_table * _glapi_create_table_from_handle(void *handle, const char *symbol_prefix); -#endif + #ifdef __cplusplus } #endif + +#endif /* _GLAPI_H */ diff --git a/mesalib/src/mapi/glapi/glthread.c b/mesalib/src/mapi/glapi/glthread.c deleted file mode 100644 index 239090ecf..000000000 --- a/mesalib/src/mapi/glapi/glthread.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "glapi/glapi.h" - -unsigned long _GLAPI_EXPORT -_glthread_GetID(void) -{ - return u_thread_self(); -} diff --git a/mesalib/src/mapi/glapi/glthread.h b/mesalib/src/mapi/glapi/glthread.h deleted file mode 100644 index 2399abb2b..000000000 --- a/mesalib/src/mapi/glapi/glthread.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef GLTHREAD_H -#define GLTHREAD_H - -#include "u_thread.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define _glthread_DECLARE_STATIC_MUTEX(name) u_mutex_declare_static(name) -#define _glthread_INIT_MUTEX(name) u_mutex_init(name) -#define _glthread_DESTROY_MUTEX(name) u_mutex_destroy(name) -#define _glthread_LOCK_MUTEX(name) u_mutex_lock(name) -#define _glthread_UNLOCK_MUTEX(name) u_mutex_unlock(name) - -#define _glthread_InitTSD(tsd) u_tsd_init(tsd); -#define _glthread_DestroyTSD(tsd) u_tsd_destroy(tsd); -#define _glthread_GetTSD(tsd) u_tsd_get(tsd); -#define _glthread_SetTSD(tsd, ptr) u_tsd_set(tsd, ptr); - -typedef struct u_tsd _glthread_TSD; -typedef u_mutex _glthread_Mutex; - -#ifdef __cplusplus -} -#endif - -#endif /* GLTHREAD_H */ diff --git a/mesalib/src/mesa/Makefile.sources b/mesalib/src/mesa/Makefile.sources index bd02d3ee8..f6f4062a4 100644 --- a/mesalib/src/mesa/Makefile.sources +++ b/mesalib/src/mesa/Makefile.sources @@ -69,6 +69,7 @@ MAIN_FILES = \ $(SRCDIR)main/pack.c \ $(SRCDIR)main/pbo.c \ $(SRCDIR)main/performance_monitor.c \ + $(SRCDIR)main/pipelineobj.c \ $(SRCDIR)main/pixel.c \ $(SRCDIR)main/pixelstore.c \ $(SRCDIR)main/pixeltransfer.c \ @@ -319,6 +320,7 @@ SPARC_FILES = \ COMMON_DRIVER_FILES = \ $(SRCDIR)drivers/common/driverfuncs.c \ + $(SRCDIR)drivers/common/meta_blit.c \ $(SRCDIR)drivers/common/meta.c diff --git a/mesalib/src/mesa/SConscript b/mesalib/src/mesa/SConscript index b52bbdc23..7f4e41983 100644 --- a/mesalib/src/mesa/SConscript +++ b/mesalib/src/mesa/SConscript @@ -98,6 +98,7 @@ main_sources = [ 'main/pack.c', 'main/pbo.c', 'main/performance_monitor.c', + 'main/pipelineobj.c', 'main/pixel.c', 'main/pixelstore.c', 'main/pixeltransfer.c', @@ -325,6 +326,7 @@ program_sources = [ common_driver_sources = [ 'drivers/common/driverfuncs.c', 'drivers/common/meta.c', + 'drivers/common/meta_blit.c' ] mesa_sources = ( diff --git a/mesalib/src/mesa/drivers/common/meta.c b/mesalib/src/mesa/drivers/common/meta.c index f12bcaab1..cde34f99f 100644 --- a/mesalib/src/mesa/drivers/common/meta.c +++ b/mesalib/src/mesa/drivers/common/meta.c @@ -51,6 +51,8 @@ #include "main/macros.h" #include "main/matrix.h" #include "main/mipmap.h" +#include "main/multisample.h" +#include "main/objectlabel.h" #include "main/pixel.h" #include "main/pbo.h" #include "main/polygon.h" @@ -82,283 +84,18 @@ /** Return offset in bytes of the field within a vertex struct */ #define OFFSET(FIELD) ((void *) offsetof(struct vertex, FIELD)) -/** - * State which we may save/restore across meta ops. - * XXX this may be incomplete... - */ -struct save_state -{ - GLbitfield SavedState; /**< bitmask of MESA_META_* flags */ - - /** MESA_META_CLEAR (and others?) */ - struct gl_query_object *CurrentOcclusionObject; - - /** MESA_META_ALPHA_TEST */ - GLboolean AlphaEnabled; - GLenum AlphaFunc; - GLclampf AlphaRef; - - /** MESA_META_BLEND */ - GLbitfield BlendEnabled; - GLboolean ColorLogicOpEnabled; - - /** MESA_META_COLOR_MASK */ - GLubyte ColorMask[MAX_DRAW_BUFFERS][4]; - - /** MESA_META_DEPTH_TEST */ - struct gl_depthbuffer_attrib Depth; - - /** MESA_META_FOG */ - GLboolean Fog; - - /** MESA_META_PIXEL_STORE */ - struct gl_pixelstore_attrib Pack, Unpack; - - /** MESA_META_PIXEL_TRANSFER */ - GLfloat RedBias, RedScale; - GLfloat GreenBias, GreenScale; - GLfloat BlueBias, BlueScale; - GLfloat AlphaBias, AlphaScale; - GLfloat DepthBias, DepthScale; - GLboolean MapColorFlag; - - /** MESA_META_RASTERIZATION */ - GLenum FrontPolygonMode, BackPolygonMode; - GLboolean PolygonOffset; - GLboolean PolygonSmooth; - GLboolean PolygonStipple; - GLboolean PolygonCull; - - /** MESA_META_SCISSOR */ - struct gl_scissor_attrib Scissor; - - /** MESA_META_SHADER */ - GLboolean VertexProgramEnabled; - struct gl_vertex_program *VertexProgram; - GLboolean FragmentProgramEnabled; - struct gl_fragment_program *FragmentProgram; - GLboolean ATIFragmentShaderEnabled; - struct gl_shader_program *Shader[MESA_SHADER_STAGES]; - struct gl_shader_program *ActiveShader; - - /** MESA_META_STENCIL_TEST */ - struct gl_stencil_attrib Stencil; - - /** MESA_META_TRANSFORM */ - GLenum MatrixMode; - GLfloat ModelviewMatrix[16]; - GLfloat ProjectionMatrix[16]; - GLfloat TextureMatrix[16]; - - /** MESA_META_CLIP */ - GLbitfield ClipPlanesEnabled; - - /** MESA_META_TEXTURE */ - GLuint ActiveUnit; - GLuint ClientActiveUnit; - /** for unit[0] only */ - struct gl_texture_object *CurrentTexture[NUM_TEXTURE_TARGETS]; - /** mask of TEXTURE_2D_BIT, etc */ - GLbitfield TexEnabled[MAX_TEXTURE_UNITS]; - GLbitfield TexGenEnabled[MAX_TEXTURE_UNITS]; - GLuint EnvMode; /* unit[0] only */ - - /** MESA_META_VERTEX */ - struct gl_vertex_array_object *VAO; - struct gl_buffer_object *ArrayBufferObj; - - /** MESA_META_VIEWPORT */ - GLfloat ViewportX, ViewportY, ViewportW, ViewportH; - GLclampd DepthNear, DepthFar; - - /** MESA_META_CLAMP_FRAGMENT_COLOR */ - GLenum ClampFragmentColor; - - /** MESA_META_CLAMP_VERTEX_COLOR */ - GLenum ClampVertexColor; - - /** MESA_META_CONDITIONAL_RENDER */ - struct gl_query_object *CondRenderQuery; - GLenum CondRenderMode; - - /** MESA_META_SELECT_FEEDBACK */ - GLenum RenderMode; - struct gl_selection Select; - struct gl_feedback Feedback; - - /** MESA_META_MULTISAMPLE */ - GLboolean MultisampleEnabled; - - /** MESA_META_FRAMEBUFFER_SRGB */ - GLboolean sRGBEnabled; - - /** Miscellaneous (always disabled) */ - GLboolean Lighting; - GLboolean RasterDiscard; - GLboolean TransformFeedbackNeedsResume; -}; - -/** - * Temporary texture used for glBlitFramebuffer, glDrawPixels, etc. - * This is currently shared by all the meta ops. But we could create a - * separate one for each of glDrawPixel, glBlitFramebuffer, glCopyPixels, etc. - */ -struct temp_texture -{ - GLuint TexObj; - GLenum Target; /**< GL_TEXTURE_2D or GL_TEXTURE_RECTANGLE */ - GLsizei MinSize; /**< Min texture size to allocate */ - GLsizei MaxSize; /**< Max possible texture size */ - GLboolean NPOT; /**< Non-power of two size OK? */ - GLsizei Width, Height; /**< Current texture size */ - GLenum IntFormat; - GLfloat Sright, Ttop; /**< right, top texcoords */ -}; - - -/** - * State for glBlitFramebufer() - */ -struct blit_state -{ - GLuint VAO; - GLuint VBO; - GLuint DepthFP; - GLuint ShaderProg; - GLuint RectShaderProg; - struct temp_texture depthTex; -}; - - -/** - * State for glClear() - */ -struct clear_state -{ - GLuint VAO; - GLuint VBO; - GLuint ShaderProg; - GLint ColorLocation; - GLint LayerLocation; - - GLuint IntegerShaderProg; - GLint IntegerColorLocation; - GLint IntegerLayerLocation; -}; +static struct blit_shader * +choose_blit_shader(GLenum target, struct blit_shader_table *table); - -/** - * State for glCopyPixels() - */ -struct copypix_state -{ - GLuint VAO; - GLuint VBO; -}; - - -/** - * State for glDrawPixels() - */ -struct drawpix_state -{ - GLuint VAO; - - GLuint StencilFP; /**< Fragment program for drawing stencil images */ - GLuint DepthFP; /**< Fragment program for drawing depth images */ -}; - - -/** - * State for glBitmap() - */ -struct bitmap_state -{ - GLuint VAO; - GLuint VBO; - struct temp_texture Tex; /**< separate texture from other meta ops */ -}; - -/** - * State for GLSL texture sampler which is used to generate fragment - * shader in _mesa_meta_generate_mipmap(). - */ -struct glsl_sampler { - const char *type; - const char *func; - const char *texcoords; - GLuint shader_prog; -}; - -/** - * State for _mesa_meta_generate_mipmap() - */ -struct gen_mipmap_state -{ - GLuint VAO; - GLuint VBO; - GLuint FBO; - GLuint Sampler; - GLuint ShaderProg; - struct glsl_sampler sampler_1d; - struct glsl_sampler sampler_2d; - struct glsl_sampler sampler_3d; - struct glsl_sampler sampler_cubemap; - struct glsl_sampler sampler_1d_array; - struct glsl_sampler sampler_2d_array; -}; - -/** - * State for texture decompression - */ -struct decompress_state -{ - GLuint VAO; - GLuint VBO, FBO, RBO, Sampler; - GLint Width, Height; -}; - -/** - * State for glDrawTex() - */ -struct drawtex_state -{ - GLuint VAO; - GLuint VBO; -}; - -#define MAX_META_OPS_DEPTH 8 -/** - * All per-context meta state. - */ -struct gl_meta_state -{ - /** Stack of state saved during meta-ops */ - struct save_state Save[MAX_META_OPS_DEPTH]; - /** Save stack depth */ - GLuint SaveStackDepth; - - struct temp_texture TempTex; - - struct blit_state Blit; /**< For _mesa_meta_BlitFramebuffer() */ - struct clear_state Clear; /**< For _mesa_meta_Clear() */ - struct copypix_state CopyPix; /**< For _mesa_meta_CopyPixels() */ - struct drawpix_state DrawPix; /**< For _mesa_meta_DrawPixels() */ - struct bitmap_state Bitmap; /**< For _mesa_meta_Bitmap() */ - struct gen_mipmap_state Mipmap; /**< For _mesa_meta_GenerateMipmap() */ - struct decompress_state Decompress; /**< For texture decompression */ - struct drawtex_state DrawTex; /**< For _mesa_meta_DrawTex() */ -}; - -static void meta_glsl_blit_cleanup(struct blit_state *blit); static void cleanup_temp_texture(struct temp_texture *tex); static void meta_glsl_clear_cleanup(struct clear_state *clear); static void meta_glsl_generate_mipmap_cleanup(struct gen_mipmap_state *mipmap); static void meta_decompress_cleanup(struct decompress_state *decompress); static void meta_drawpix_cleanup(struct drawpix_state *drawpix); -static GLuint -compile_shader_with_debug(struct gl_context *ctx, GLenum target, const GLcharARB *source) +GLuint +_mesa_meta_compile_shader_with_debug(struct gl_context *ctx, GLenum target, + const GLcharARB *source) { GLuint shader; GLint ok, size; @@ -384,7 +121,7 @@ compile_shader_with_debug(struct gl_context *ctx, GLenum target, const GLcharARB return 0; } - _mesa_GetProgramInfoLog(shader, size, NULL, info); + _mesa_GetShaderInfoLog(shader, size, NULL, info); _mesa_problem(ctx, "meta program compile failed:\n%s\n" "source:\n%s\n", @@ -396,8 +133,8 @@ compile_shader_with_debug(struct gl_context *ctx, GLenum target, const GLcharARB return 0; } -static GLuint -link_program_with_debug(struct gl_context *ctx, GLuint program) +GLuint +_mesa_meta_link_program_with_debug(struct gl_context *ctx, GLuint program) { GLint ok, size; GLchar *info; @@ -425,6 +162,182 @@ link_program_with_debug(struct gl_context *ctx, GLuint program) } /** + * Generate a generic shader to blit from a texture to a framebuffer + * + * \param ctx Current GL context + * \param texTarget Texture target that will be the source of the blit + * + * \returns a handle to a shader program on success or zero on failure. + */ +void +_mesa_meta_setup_blit_shader(struct gl_context *ctx, + GLenum target, + struct blit_shader_table *table) +{ + const char *vs_source; + char *fs_source; + GLuint vs, fs; + void *const mem_ctx = ralloc_context(NULL); + struct blit_shader *shader = choose_blit_shader(target, table); + char *name; + + assert(shader != NULL); + + if (shader->shader_prog != 0) { + _mesa_UseProgram(shader->shader_prog); + return; + } + + if (ctx->Const.GLSLVersion < 130) { + vs_source = + "attribute vec2 position;\n" + "attribute vec4 textureCoords;\n" + "varying vec4 texCoords;\n" + "void main()\n" + "{\n" + " texCoords = textureCoords;\n" + " gl_Position = vec4(position, 0.0, 1.0);\n" + "}\n"; + + fs_source = ralloc_asprintf(mem_ctx, + "#extension GL_EXT_texture_array : enable\n" + "#extension GL_ARB_texture_cube_map_array: enable\n" + "uniform %s texSampler;\n" + "varying vec4 texCoords;\n" + "void main()\n" + "{\n" + " gl_FragColor = %s(texSampler, %s);\n" + " gl_FragDepth = gl_FragColor.x;\n" + "}\n", + shader->type, + shader->func, shader->texcoords); + } + else { + vs_source = ralloc_asprintf(mem_ctx, + "#version 130\n" + "in vec2 position;\n" + "in vec4 textureCoords;\n" + "out vec4 texCoords;\n" + "void main()\n" + "{\n" + " texCoords = textureCoords;\n" + " gl_Position = vec4(position, 0.0, 1.0);\n" + "}\n"); + fs_source = ralloc_asprintf(mem_ctx, + "#version 130\n" + "#extension GL_ARB_texture_cube_map_array: enable\n" + "uniform %s texSampler;\n" + "in vec4 texCoords;\n" + "out vec4 out_color;\n" + "\n" + "void main()\n" + "{\n" + " out_color = texture(texSampler, %s);\n" + " gl_FragDepth = out_color.x;\n" + "}\n", + shader->type, + shader->texcoords); + } + + vs = _mesa_meta_compile_shader_with_debug(ctx, GL_VERTEX_SHADER, vs_source); + fs = _mesa_meta_compile_shader_with_debug(ctx, GL_FRAGMENT_SHADER, fs_source); + + shader->shader_prog = _mesa_CreateProgramObjectARB(); + _mesa_AttachShader(shader->shader_prog, fs); + _mesa_DeleteObjectARB(fs); + _mesa_AttachShader(shader->shader_prog, vs); + _mesa_DeleteObjectARB(vs); + _mesa_BindAttribLocation(shader->shader_prog, 0, "position"); + _mesa_BindAttribLocation(shader->shader_prog, 1, "texcoords"); + _mesa_meta_link_program_with_debug(ctx, shader->shader_prog); + name = ralloc_asprintf(mem_ctx, "%s blit", shader->type); + _mesa_ObjectLabel(GL_PROGRAM, shader->shader_prog, -1, name); + ralloc_free(mem_ctx); + + _mesa_UseProgram(shader->shader_prog); +} + +/** + * Configure vertex buffer and vertex array objects for tests + * + * Regardless of whether a new VAO and new VBO are created, the objects + * referenced by \c VAO and \c VBO will be bound into the GL state vector + * when this function terminates. + * + * \param VAO Storage for vertex array object handle. If 0, a new VAO + * will be created. + * \param VBO Storage for vertex buffer object handle. If 0, a new VBO + * will be created. The new VBO will have storage for 4 + * \c vertex structures. + * \param use_generic_attributes Should generic attributes 0 and 1 be used, + * or should traditional, fixed-function color and texture + * coordinate be used? + * \param vertex_size Number of components for attribute 0 / vertex. + * \param texcoord_size Number of components for attribute 1 / texture + * coordinate. If this is 0, attribute 1 will not be set or + * enabled. + * \param color_size Number of components for attribute 1 / primary color. + * If this is 0, attribute 1 will not be set or enabled. + * + * \note If \c use_generic_attributes is \c true, \c color_size must be zero. + * Use \c texcoord_size instead. + */ +void +_mesa_meta_setup_vertex_objects(GLuint *VAO, GLuint *VBO, + bool use_generic_attributes, + unsigned vertex_size, unsigned texcoord_size, + unsigned color_size) +{ + if (*VAO == 0) { + assert(*VBO == 0); + + /* create vertex array object */ + _mesa_GenVertexArrays(1, VAO); + _mesa_BindVertexArray(*VAO); + + /* create vertex array buffer */ + _mesa_GenBuffers(1, VBO); + _mesa_BindBuffer(GL_ARRAY_BUFFER, *VBO); + _mesa_BufferData(GL_ARRAY_BUFFER, 4 * sizeof(struct vertex), NULL, + GL_DYNAMIC_DRAW); + + /* setup vertex arrays */ + if (use_generic_attributes) { + assert(color_size == 0); + + _mesa_VertexAttribPointer(0, vertex_size, GL_FLOAT, GL_FALSE, + sizeof(struct vertex), OFFSET(x)); + _mesa_EnableVertexAttribArray(0); + + if (texcoord_size > 0) { + _mesa_VertexAttribPointer(1, texcoord_size, GL_FLOAT, GL_FALSE, + sizeof(struct vertex), OFFSET(tex)); + _mesa_EnableVertexAttribArray(1); + } + } else { + _mesa_VertexPointer(vertex_size, GL_FLOAT, sizeof(struct vertex), + OFFSET(x)); + _mesa_EnableClientState(GL_VERTEX_ARRAY); + + if (texcoord_size > 0) { + _mesa_TexCoordPointer(texcoord_size, GL_FLOAT, + sizeof(struct vertex), OFFSET(tex)); + _mesa_EnableClientState(GL_TEXTURE_COORD_ARRAY); + } + + if (color_size > 0) { + _mesa_ColorPointer(color_size, GL_FLOAT, + sizeof(struct vertex), OFFSET(r)); + _mesa_EnableClientState(GL_COLOR_ARRAY); + } + } + } else { + _mesa_BindVertexArray(*VAO); + _mesa_BindBuffer(GL_ARRAY_BUFFER, *VBO); + } +} + +/** * Initialize meta-ops for a context. * To be called once during context creation. */ @@ -446,7 +359,7 @@ _mesa_meta_free(struct gl_context *ctx) { GET_CURRENT_CONTEXT(old_context); _mesa_make_current(ctx, NULL, NULL); - meta_glsl_blit_cleanup(&ctx->Meta->Blit); + _mesa_meta_glsl_blit_cleanup(&ctx->Meta->Blit); meta_glsl_clear_cleanup(&ctx->Meta->Clear); meta_glsl_generate_mipmap_cleanup(&ctx->Meta->Mipmap); cleanup_temp_texture(&ctx->Meta->TempTex); @@ -480,6 +393,13 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state) memset(save, 0, sizeof(*save)); save->SavedState = state; + /* We always push into desktop GL mode and pop out at the end. No sense in + * writing our shaders varying based on the user's context choice, when + * Mesa can handle either. + */ + save->API = ctx->API; + ctx->API = API_OPENGL_COMPAT; + /* Pausing transform feedback needs to be done early, or else we won't be * able to change other state. */ @@ -539,9 +459,7 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state) _mesa_set_enable(ctx, GL_DEPTH_TEST, GL_FALSE); } - if ((state & MESA_META_FOG) - && ctx->API != API_OPENGL_CORE - && ctx->API != API_OPENGLES2) { + if (state & MESA_META_FOG) { save->Fog = ctx->Fog.Enabled; if (ctx->Fog.Enabled) _mesa_set_enable(ctx, GL_FOG, GL_FALSE); @@ -586,10 +504,8 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state) save->PolygonCull = ctx->Polygon.CullFlag; _mesa_PolygonMode(GL_FRONT_AND_BACK, GL_FILL); _mesa_set_enable(ctx, GL_POLYGON_OFFSET_FILL, GL_FALSE); - if (ctx->API == API_OPENGL_COMPAT) { - _mesa_set_enable(ctx, GL_POLYGON_SMOOTH, GL_FALSE); - _mesa_set_enable(ctx, GL_POLYGON_STIPPLE, GL_FALSE); - } + _mesa_set_enable(ctx, GL_POLYGON_SMOOTH, GL_FALSE); + _mesa_set_enable(ctx, GL_POLYGON_STIPPLE, GL_FALSE); _mesa_set_enable(ctx, GL_CULL_FACE, GL_FALSE); } @@ -601,21 +517,21 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state) if (state & MESA_META_SHADER) { int i; - if (ctx->API == API_OPENGL_COMPAT && ctx->Extensions.ARB_vertex_program) { + if (ctx->Extensions.ARB_vertex_program) { save->VertexProgramEnabled = ctx->VertexProgram.Enabled; _mesa_reference_vertprog(ctx, &save->VertexProgram, ctx->VertexProgram.Current); _mesa_set_enable(ctx, GL_VERTEX_PROGRAM_ARB, GL_FALSE); } - if (ctx->API == API_OPENGL_COMPAT && ctx->Extensions.ARB_fragment_program) { + if (ctx->Extensions.ARB_fragment_program) { save->FragmentProgramEnabled = ctx->FragmentProgram.Enabled; _mesa_reference_fragprog(ctx, &save->FragmentProgram, ctx->FragmentProgram.Current); _mesa_set_enable(ctx, GL_FRAGMENT_PROGRAM_ARB, GL_FALSE); } - if (ctx->API == API_OPENGL_COMPAT && ctx->Extensions.ATI_fragment_shader) { + if (ctx->Extensions.ATI_fragment_shader) { save->ATIFragmentShaderEnabled = ctx->ATIFragmentShader.Enabled; _mesa_set_enable(ctx, GL_FRAGMENT_SHADER_ATI, GL_FALSE); } @@ -645,33 +561,24 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state) save->EnvMode = ctx->Texture.Unit[0].EnvMode; /* Disable all texture units */ - if (ctx->API == API_OPENGL_COMPAT || ctx->API == API_OPENGLES) { - for (u = 0; u < ctx->Const.MaxTextureUnits; u++) { - save->TexEnabled[u] = ctx->Texture.Unit[u].Enabled; - save->TexGenEnabled[u] = ctx->Texture.Unit[u].TexGenEnabled; - if (ctx->Texture.Unit[u].Enabled || - ctx->Texture.Unit[u].TexGenEnabled) { - _mesa_ActiveTexture(GL_TEXTURE0 + u); - _mesa_set_enable(ctx, GL_TEXTURE_2D, GL_FALSE); - if (ctx->Extensions.ARB_texture_cube_map) - _mesa_set_enable(ctx, GL_TEXTURE_CUBE_MAP, GL_FALSE); - if (_mesa_is_gles(ctx) && - ctx->Extensions.OES_EGL_image_external) - _mesa_set_enable(ctx, GL_TEXTURE_EXTERNAL_OES, GL_FALSE); - - if (ctx->API == API_OPENGL_COMPAT) { - _mesa_set_enable(ctx, GL_TEXTURE_1D, GL_FALSE); - _mesa_set_enable(ctx, GL_TEXTURE_3D, GL_FALSE); - if (ctx->Extensions.NV_texture_rectangle) - _mesa_set_enable(ctx, GL_TEXTURE_RECTANGLE, GL_FALSE); - _mesa_set_enable(ctx, GL_TEXTURE_GEN_S, GL_FALSE); - _mesa_set_enable(ctx, GL_TEXTURE_GEN_T, GL_FALSE); - _mesa_set_enable(ctx, GL_TEXTURE_GEN_R, GL_FALSE); - _mesa_set_enable(ctx, GL_TEXTURE_GEN_Q, GL_FALSE); - } else { - _mesa_set_enable(ctx, GL_TEXTURE_GEN_STR_OES, GL_FALSE); - } - } + for (u = 0; u < ctx->Const.MaxTextureUnits; u++) { + save->TexEnabled[u] = ctx->Texture.Unit[u].Enabled; + save->TexGenEnabled[u] = ctx->Texture.Unit[u].TexGenEnabled; + if (ctx->Texture.Unit[u].Enabled || + ctx->Texture.Unit[u].TexGenEnabled) { + _mesa_ActiveTexture(GL_TEXTURE0 + u); + _mesa_set_enable(ctx, GL_TEXTURE_2D, GL_FALSE); + if (ctx->Extensions.ARB_texture_cube_map) + _mesa_set_enable(ctx, GL_TEXTURE_CUBE_MAP, GL_FALSE); + + _mesa_set_enable(ctx, GL_TEXTURE_1D, GL_FALSE); + _mesa_set_enable(ctx, GL_TEXTURE_3D, GL_FALSE); + if (ctx->Extensions.NV_texture_rectangle) + _mesa_set_enable(ctx, GL_TEXTURE_RECTANGLE, GL_FALSE); + _mesa_set_enable(ctx, GL_TEXTURE_GEN_S, GL_FALSE); + _mesa_set_enable(ctx, GL_TEXTURE_GEN_T, GL_FALSE); + _mesa_set_enable(ctx, GL_TEXTURE_GEN_R, GL_FALSE); + _mesa_set_enable(ctx, GL_TEXTURE_GEN_Q, GL_FALSE); } } @@ -684,9 +591,7 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state) /* set defaults for unit[0] */ _mesa_ActiveTexture(GL_TEXTURE0); _mesa_ClientActiveTexture(GL_TEXTURE0); - if (ctx->API == API_OPENGL_COMPAT || ctx->API == API_OPENGLES) { - _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - } + _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); } if (state & MESA_META_TRANSFORM) { @@ -799,9 +704,20 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state) } if (state & MESA_META_MULTISAMPLE) { - save->MultisampleEnabled = ctx->Multisample.Enabled; + save->Multisample = ctx->Multisample; /* struct copy */ + if (ctx->Multisample.Enabled) _mesa_set_multisample(ctx, GL_FALSE); + if (ctx->Multisample.SampleCoverage) + _mesa_set_enable(ctx, GL_SAMPLE_COVERAGE, GL_FALSE); + if (ctx->Multisample.SampleAlphaToCoverage) + _mesa_set_enable(ctx, GL_SAMPLE_ALPHA_TO_COVERAGE, GL_FALSE); + if (ctx->Multisample.SampleAlphaToOne) + _mesa_set_enable(ctx, GL_SAMPLE_ALPHA_TO_ONE, GL_FALSE); + if (ctx->Multisample.SampleShading) + _mesa_set_enable(ctx, GL_SAMPLE_SHADING, GL_FALSE); + if (ctx->Multisample.SampleMask) + _mesa_set_enable(ctx, GL_SAMPLE_MASK, GL_FALSE); } if (state & MESA_META_FRAMEBUFFER_SRGB) { @@ -892,9 +808,7 @@ _mesa_meta_end(struct gl_context *ctx) _mesa_DepthMask(save->Depth.Mask); } - if ((state & MESA_META_FOG) - && ctx->API != API_OPENGL_CORE - && ctx->API != API_OPENGLES2) { + if (state & MESA_META_FOG) { _mesa_set_enable(ctx, GL_FOG, save->Fog); } @@ -918,18 +832,10 @@ _mesa_meta_end(struct gl_context *ctx) } if (state & MESA_META_RASTERIZATION) { - /* Core context requires that front and back mode be the same. - */ - if (ctx->API == API_OPENGL_CORE) { - _mesa_PolygonMode(GL_FRONT_AND_BACK, save->FrontPolygonMode); - } else { - _mesa_PolygonMode(GL_FRONT, save->FrontPolygonMode); - _mesa_PolygonMode(GL_BACK, save->BackPolygonMode); - } - if (ctx->API == API_OPENGL_COMPAT) { - _mesa_set_enable(ctx, GL_POLYGON_STIPPLE, save->PolygonStipple); - _mesa_set_enable(ctx, GL_POLYGON_SMOOTH, save->PolygonSmooth); - } + _mesa_PolygonMode(GL_FRONT, save->FrontPolygonMode); + _mesa_PolygonMode(GL_BACK, save->BackPolygonMode); + _mesa_set_enable(ctx, GL_POLYGON_STIPPLE, save->PolygonStipple); + _mesa_set_enable(ctx, GL_POLYGON_SMOOTH, save->PolygonSmooth); _mesa_set_enable(ctx, GL_POLYGON_OFFSET_FILL, save->PolygonOffset); _mesa_set_enable(ctx, GL_CULL_FACE, save->PolygonCull); } @@ -949,7 +855,7 @@ _mesa_meta_end(struct gl_context *ctx) } if (state & MESA_META_SHADER) { - if (ctx->API == API_OPENGL_COMPAT && ctx->Extensions.ARB_vertex_program) { + if (ctx->Extensions.ARB_vertex_program) { _mesa_set_enable(ctx, GL_VERTEX_PROGRAM_ARB, save->VertexProgramEnabled); _mesa_reference_vertprog(ctx, &ctx->VertexProgram.Current, @@ -957,7 +863,7 @@ _mesa_meta_end(struct gl_context *ctx) _mesa_reference_vertprog(ctx, &save->VertexProgram, NULL); } - if (ctx->API == API_OPENGL_COMPAT && ctx->Extensions.ARB_fragment_program) { + if (ctx->Extensions.ARB_fragment_program) { _mesa_set_enable(ctx, GL_FRAGMENT_PROGRAM_ARB, save->FragmentProgramEnabled); _mesa_reference_fragprog(ctx, &ctx->FragmentProgram.Current, @@ -965,7 +871,7 @@ _mesa_meta_end(struct gl_context *ctx) _mesa_reference_fragprog(ctx, &save->FragmentProgram, NULL); } - if (ctx->API == API_OPENGL_COMPAT && ctx->Extensions.ATI_fragment_shader) { + if (ctx->Extensions.ATI_fragment_shader) { _mesa_set_enable(ctx, GL_FRAGMENT_SHADER_ATI, save->ATIFragmentShaderEnabled); } @@ -996,7 +902,7 @@ _mesa_meta_end(struct gl_context *ctx) _mesa_set_enable(ctx, GL_STENCIL_TEST, stencil->Enabled); _mesa_ClearStencil(stencil->Clear); - if (ctx->API == API_OPENGL_COMPAT && ctx->Extensions.EXT_stencil_two_side) { + if (ctx->Extensions.EXT_stencil_two_side) { _mesa_set_enable(ctx, GL_STENCIL_TEST_TWO_SIDE_EXT, stencil->TestTwoSide); _mesa_ActiveStencilFaceEXT(stencil->ActiveFace @@ -1028,9 +934,7 @@ _mesa_meta_end(struct gl_context *ctx) ASSERT(ctx->Texture.CurrentUnit == 0); /* restore texenv for unit[0] */ - if (ctx->API == API_OPENGL_COMPAT || ctx->API == API_OPENGLES) { - _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, save->EnvMode); - } + _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, save->EnvMode); /* restore texture objects for unit[0] only */ for (tgt = 0; tgt < NUM_TEXTURE_TARGETS; tgt++) { @@ -1043,17 +947,15 @@ _mesa_meta_end(struct gl_context *ctx) } /* Restore fixed function texture enables, texgen */ - if (ctx->API == API_OPENGL_COMPAT || ctx->API == API_OPENGLES) { - for (u = 0; u < ctx->Const.MaxTextureUnits; u++) { - if (ctx->Texture.Unit[u].Enabled != save->TexEnabled[u]) { - FLUSH_VERTICES(ctx, _NEW_TEXTURE); - ctx->Texture.Unit[u].Enabled = save->TexEnabled[u]; - } + for (u = 0; u < ctx->Const.MaxTextureUnits; u++) { + if (ctx->Texture.Unit[u].Enabled != save->TexEnabled[u]) { + FLUSH_VERTICES(ctx, _NEW_TEXTURE); + ctx->Texture.Unit[u].Enabled = save->TexEnabled[u]; + } - if (ctx->Texture.Unit[u].TexGenEnabled != save->TexGenEnabled[u]) { - FLUSH_VERTICES(ctx, _NEW_TEXTURE); - ctx->Texture.Unit[u].TexGenEnabled = save->TexGenEnabled[u]; - } + if (ctx->Texture.Unit[u].TexGenEnabled != save->TexGenEnabled[u]) { + FLUSH_VERTICES(ctx, _NEW_TEXTURE); + ctx->Texture.Unit[u].TexGenEnabled = save->TexGenEnabled[u]; } } @@ -1137,8 +1039,30 @@ _mesa_meta_end(struct gl_context *ctx) } if (state & MESA_META_MULTISAMPLE) { - if (ctx->Multisample.Enabled != save->MultisampleEnabled) - _mesa_set_multisample(ctx, save->MultisampleEnabled); + struct gl_multisample_attrib *ctx_ms = &ctx->Multisample; + struct gl_multisample_attrib *save_ms = &save->Multisample; + + if (ctx_ms->Enabled != save_ms->Enabled) + _mesa_set_multisample(ctx, save_ms->Enabled); + if (ctx_ms->SampleCoverage != save_ms->SampleCoverage) + _mesa_set_enable(ctx, GL_SAMPLE_COVERAGE, save_ms->SampleCoverage); + if (ctx_ms->SampleAlphaToCoverage != save_ms->SampleAlphaToCoverage) + _mesa_set_enable(ctx, GL_SAMPLE_ALPHA_TO_COVERAGE, save_ms->SampleAlphaToCoverage); + if (ctx_ms->SampleAlphaToOne != save_ms->SampleAlphaToOne) + _mesa_set_enable(ctx, GL_SAMPLE_ALPHA_TO_ONE, save_ms->SampleAlphaToOne); + if (ctx_ms->SampleCoverageValue != save_ms->SampleCoverageValue || + ctx_ms->SampleCoverageInvert != save_ms->SampleCoverageInvert) { + _mesa_SampleCoverage(save_ms->SampleCoverageValue, + save_ms->SampleCoverageInvert); + } + if (ctx_ms->SampleShading != save_ms->SampleShading) + _mesa_set_enable(ctx, GL_SAMPLE_SHADING, save_ms->SampleShading); + if (ctx_ms->SampleMask != save_ms->SampleMask) + _mesa_set_enable(ctx, GL_SAMPLE_MASK, save_ms->SampleMask); + if (ctx_ms->SampleMaskValue != save_ms->SampleMaskValue) + _mesa_SampleMaski(0, save_ms->SampleMaskValue); + if (ctx_ms->MinSampleShadingValue != save_ms->MinSampleShadingValue) + _mesa_MinSampleShading(save_ms->MinSampleShadingValue); } if (state & MESA_META_FRAMEBUFFER_SRGB) { @@ -1157,6 +1081,8 @@ _mesa_meta_end(struct gl_context *ctx) _mesa_ResumeTransformFeedback(); ctx->Meta->SaveStackDepth--; + + ctx->API = save->API; } @@ -1224,8 +1150,8 @@ cleanup_temp_texture(struct temp_texture *tex) * Return pointer to temp_texture info for non-bitmap ops. * This does some one-time init if needed. */ -static struct temp_texture * -get_temp_texture(struct gl_context *ctx) +struct temp_texture * +_mesa_meta_get_temp_texture(struct gl_context *ctx) { struct temp_texture *tex = &ctx->Meta->TempTex; @@ -1258,8 +1184,8 @@ get_bitmap_temp_texture(struct gl_context *ctx) * Return pointer to depth temp_texture. * This does some one-time init if needed. */ -static struct temp_texture * -get_temp_depth_texture(struct gl_context *ctx) +struct temp_texture * +_mesa_meta_get_temp_depth_texture(struct gl_context *ctx) { struct temp_texture *tex = &ctx->Meta->Blit.depthTex; @@ -1279,9 +1205,9 @@ get_temp_depth_texture(struct gl_context *ctx) * * \return GL_TRUE if new texture is needed, GL_FALSE otherwise */ -static GLboolean -alloc_texture(struct temp_texture *tex, - GLsizei width, GLsizei height, GLenum intFormat) +GLboolean +_mesa_meta_alloc_texture(struct temp_texture *tex, + GLsizei width, GLsizei height, GLenum intFormat) { GLboolean newTex = GL_FALSE; @@ -1332,19 +1258,22 @@ alloc_texture(struct temp_texture *tex, /** * Setup/load texture for glCopyPixels or glBlitFramebuffer. */ -static void -setup_copypix_texture(struct gl_context *ctx, - struct temp_texture *tex, - GLboolean newTex, - GLint srcX, GLint srcY, - GLsizei width, GLsizei height, GLenum intFormat, - GLenum filter) +void +_mesa_meta_setup_copypix_texture(struct gl_context *ctx, + struct temp_texture *tex, + GLint srcX, GLint srcY, + GLsizei width, GLsizei height, + GLenum intFormat, + GLenum filter) { + bool newTex; + _mesa_BindTexture(tex->Target, tex->TexObj); _mesa_TexParameteri(tex->Target, GL_TEXTURE_MIN_FILTER, filter); _mesa_TexParameteri(tex->Target, GL_TEXTURE_MAG_FILTER, filter); - if (ctx->API == API_OPENGL_COMPAT || ctx->API == API_OPENGLES) - _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + + newTex = _mesa_meta_alloc_texture(tex, width, height, intFormat); /* copy framebuffer image to texture */ if (newTex) { @@ -1375,20 +1304,18 @@ setup_copypix_texture(struct gl_context *ctx, /** * Setup/load texture for glDrawPixels. */ -static void -setup_drawpix_texture(struct gl_context *ctx, - struct temp_texture *tex, - GLboolean newTex, - GLenum texIntFormat, - GLsizei width, GLsizei height, - GLenum format, GLenum type, - const GLvoid *pixels) +void +_mesa_meta_setup_drawpix_texture(struct gl_context *ctx, + struct temp_texture *tex, + GLboolean newTex, + GLsizei width, GLsizei height, + GLenum format, GLenum type, + const GLvoid *pixels) { _mesa_BindTexture(tex->Target, tex->TexObj); _mesa_TexParameteri(tex->Target, GL_TEXTURE_MIN_FILTER, GL_NEAREST); _mesa_TexParameteri(tex->Target, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - if (ctx->API == API_OPENGL_COMPAT || ctx->API == API_OPENGLES) - _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); /* copy pixel data to texture */ if (newTex) { @@ -1422,617 +1349,24 @@ setup_drawpix_texture(struct gl_context *ctx, } } - - -/** - * One-time init for drawing depth pixels. - */ -static void -init_blit_depth_pixels(struct gl_context *ctx) -{ - static const char *program = - "!!ARBfp1.0\n" - "TEX result.depth, fragment.texcoord[0], texture[0], %s; \n" - "END \n"; - char program2[200]; - struct blit_state *blit = &ctx->Meta->Blit; - struct temp_texture *tex = get_temp_texture(ctx); - const char *texTarget; - - assert(blit->DepthFP == 0); - - /* replace %s with "RECT" or "2D" */ - assert(strlen(program) + 4 < sizeof(program2)); - if (tex->Target == GL_TEXTURE_RECTANGLE) - texTarget = "RECT"; - else - texTarget = "2D"; - _mesa_snprintf(program2, sizeof(program2), program, texTarget); - - _mesa_GenProgramsARB(1, &blit->DepthFP); - _mesa_BindProgramARB(GL_FRAGMENT_PROGRAM_ARB, blit->DepthFP); - _mesa_ProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, - strlen(program2), (const GLubyte *) program2); -} - -static void -setup_ff_blit_framebuffer(struct blit_state *blit) +void +_mesa_meta_setup_ff_tnl_for_blit(GLuint *VAO, GLuint *VBO, + unsigned texcoord_size) { - struct vertex { - GLfloat x, y, s, t; - }; - struct vertex verts[4]; - - if (blit->VAO == 0) { - /* one-time setup */ - - /* create vertex array object */ - _mesa_GenVertexArrays(1, &blit->VAO); - _mesa_BindVertexArray(blit->VAO); - - /* create vertex array buffer */ - _mesa_GenBuffers(1, &blit->VBO); - _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, blit->VBO); - _mesa_BufferData(GL_ARRAY_BUFFER_ARB, sizeof(verts), - NULL, GL_DYNAMIC_DRAW_ARB); - - /* setup vertex arrays */ - _mesa_VertexPointer(2, GL_FLOAT, sizeof(struct vertex), OFFSET(x)); - _mesa_TexCoordPointer(2, GL_FLOAT, sizeof(struct vertex), OFFSET(s)); - _mesa_EnableClientState(GL_VERTEX_ARRAY); - _mesa_EnableClientState(GL_TEXTURE_COORD_ARRAY); - } + _mesa_meta_setup_vertex_objects(VAO, VBO, false, 2, texcoord_size, 0); /* setup projection matrix */ _mesa_MatrixMode(GL_PROJECTION); _mesa_LoadIdentity(); - _mesa_Ortho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); - -} - -static void -setup_glsl_blit_framebuffer(struct gl_context *ctx, - struct blit_state *blit, - GLenum target) -{ - struct vertex { - GLfloat x, y, s, t; - }; - struct vertex verts[4]; - const char *vs_source; - char *fs_source; - GLuint vs, fs; - void *mem_ctx; - GLuint ShaderProg; - GLboolean texture_2d = (target == GL_TEXTURE_2D); - - /* target = GL_TEXTURE_RECTANGLE is not supported in GLES 3.0 */ - assert(_mesa_is_desktop_gl(ctx) || texture_2d); - - /* Check if already initialized */ - if (blit->VAO == 0) { - - /* create vertex array object */ - _mesa_GenVertexArrays(1, &blit->VAO); - _mesa_BindVertexArray(blit->VAO); - - /* create vertex array buffer */ - _mesa_GenBuffers(1, &blit->VBO); - _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, blit->VBO); - _mesa_BufferData(GL_ARRAY_BUFFER_ARB, sizeof(verts), - NULL, GL_DYNAMIC_DRAW_ARB); - - /* setup vertex arrays */ - _mesa_VertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, - sizeof(struct vertex), OFFSET(x)); - _mesa_VertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, - sizeof(struct vertex), OFFSET(s)); - - _mesa_EnableVertexAttribArray(0); - _mesa_EnableVertexAttribArray(1); - } - - /* Generate a relevant fragment shader program for the texture target */ - if ((target == GL_TEXTURE_2D && blit->ShaderProg != 0) || - (target == GL_TEXTURE_RECTANGLE && blit->RectShaderProg != 0)) { - return; - } - - mem_ctx = ralloc_context(NULL); - - if (ctx->Const.GLSLVersion < 130) { - vs_source = - "attribute vec2 position;\n" - "attribute vec2 textureCoords;\n" - "varying vec2 texCoords;\n" - "void main()\n" - "{\n" - " texCoords = textureCoords;\n" - " gl_Position = vec4(position, 0.0, 1.0);\n" - "}\n"; - - fs_source = ralloc_asprintf(mem_ctx, - "#ifdef GL_ES\n" - "precision highp float;\n" - "#endif\n" - "uniform %s texSampler;\n" - "varying vec2 texCoords;\n" - "void main()\n" - "{\n" - " gl_FragColor = %s(texSampler, texCoords);\n" - " gl_FragDepth = gl_FragColor.r;\n" - "}\n", - texture_2d ? "sampler2D" : "sampler2DRect", - texture_2d ? "texture2D" : "texture2DRect"); - } - else { - vs_source = ralloc_asprintf(mem_ctx, - "#version %s\n" - "in vec2 position;\n" - "in vec2 textureCoords;\n" - "out vec2 texCoords;\n" - "void main()\n" - "{\n" - " texCoords = textureCoords;\n" - " gl_Position = vec4(position, 0.0, 1.0);\n" - "}\n", - _mesa_is_desktop_gl(ctx) ? "130" : "300 es"); - fs_source = ralloc_asprintf(mem_ctx, - "#version %s\n" - "#ifdef GL_ES\n" - "precision highp float;\n" - "#endif\n" - "uniform %s texSampler;\n" - "in vec2 texCoords;\n" - "out vec4 out_color;\n" - "\n" - "void main()\n" - "{\n" - " out_color = %s(texSampler, texCoords);\n" - " gl_FragDepth = out_color.r;\n" - "}\n", - _mesa_is_desktop_gl(ctx) ? "130" : "300 es", - texture_2d ? "sampler2D" : "sampler2DRect", - texture_2d ? "texture" : "texture2DRect"); - } - - vs = compile_shader_with_debug(ctx, GL_VERTEX_SHADER, vs_source); - fs = compile_shader_with_debug(ctx, GL_FRAGMENT_SHADER, fs_source); - - ShaderProg = _mesa_CreateProgramObjectARB(); - _mesa_AttachShader(ShaderProg, fs); - _mesa_DeleteObjectARB(fs); - _mesa_AttachShader(ShaderProg, vs); - _mesa_DeleteObjectARB(vs); - _mesa_BindAttribLocation(ShaderProg, 0, "position"); - _mesa_BindAttribLocation(ShaderProg, 1, "texcoords"); - link_program_with_debug(ctx, ShaderProg); - ralloc_free(mem_ctx); - if (texture_2d) - blit->ShaderProg = ShaderProg; - else - blit->RectShaderProg = ShaderProg; } /** - * Try to do a glBlitFramebuffer using no-copy texturing. - * We can do this when the src renderbuffer is actually a texture. - * But if the src buffer == dst buffer we cannot do this. - * - * \return new buffer mask indicating the buffers left to blit using the - * normal path. - */ -static GLbitfield -blitframebuffer_texture(struct gl_context *ctx, - GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, - GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, - GLbitfield mask, GLenum filter, GLint flipX, - GLint flipY, GLboolean glsl_version) -{ - if (mask & GL_COLOR_BUFFER_BIT) { - const struct gl_framebuffer *drawFb = ctx->DrawBuffer; - const struct gl_framebuffer *readFb = ctx->ReadBuffer; - const struct gl_renderbuffer_attachment *drawAtt; - const struct gl_renderbuffer_attachment *readAtt = - &readFb->Attachment[readFb->_ColorReadBufferIndex]; - - if (readAtt && readAtt->Texture) { - struct blit_state *blit = &ctx->Meta->Blit; - const GLint dstX = MIN2(dstX0, dstX1); - const GLint dstY = MIN2(dstY0, dstY1); - const GLint dstW = abs(dstX1 - dstX0); - const GLint dstH = abs(dstY1 - dstY0); - const struct gl_texture_object *texObj = readAtt->Texture; - const GLuint srcLevel = readAtt->TextureLevel; - const GLint baseLevelSave = texObj->BaseLevel; - const GLint maxLevelSave = texObj->MaxLevel; - const GLenum target = texObj->Target; - GLuint sampler, samplerSave = - ctx->Texture.Unit[ctx->Texture.CurrentUnit].Sampler ? - ctx->Texture.Unit[ctx->Texture.CurrentUnit].Sampler->Name : 0; - int i; - - /* Iterate through all draw buffers */ - for (i = 0; i < ctx->DrawBuffer->_NumColorDrawBuffers; i++) { - int idx = ctx->DrawBuffer->_ColorDrawBufferIndexes[i]; - if (idx == -1) - continue; - drawAtt = &drawFb->Attachment[idx]; - - if (drawAtt->Texture == readAtt->Texture) { - /* Can't use same texture as both the source and dest. We need - * to handle overlapping blits and besides, some hw may not - * support this. - */ - return mask; - } - } - - if (target != GL_TEXTURE_2D && target != GL_TEXTURE_RECTANGLE_ARB) { - /* Can't handle other texture types at this time */ - return mask; - } - - /* Choose between glsl version and fixed function version of - * BlitFramebuffer function. - */ - if (glsl_version) { - setup_glsl_blit_framebuffer(ctx, blit, target); - if (target == GL_TEXTURE_2D) - _mesa_UseProgram(blit->ShaderProg); - else - _mesa_UseProgram(blit->RectShaderProg); - } - else { - setup_ff_blit_framebuffer(&ctx->Meta->Blit); - } - - _mesa_BindVertexArray(blit->VAO); - _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, blit->VBO); - - _mesa_GenSamplers(1, &sampler); - _mesa_BindSampler(ctx->Texture.CurrentUnit, sampler); - - /* - printf("Blit from texture!\n"); - printf(" srcAtt %p dstAtt %p\n", readAtt, drawAtt); - printf(" srcTex %p dstText %p\n", texObj, drawAtt->Texture); - */ - - /* Prepare src texture state */ - _mesa_BindTexture(target, texObj->Name); - _mesa_SamplerParameteri(sampler, GL_TEXTURE_MIN_FILTER, filter); - _mesa_SamplerParameteri(sampler, GL_TEXTURE_MAG_FILTER, filter); - if (target != GL_TEXTURE_RECTANGLE_ARB) { - _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, srcLevel); - _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, srcLevel); - } - _mesa_SamplerParameteri(sampler, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - _mesa_SamplerParameteri(sampler, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - - /* Always do our blits with no sRGB decode or encode. Note that - * GL_FRAMEBUFFER_SRGB has already been disabled by - * _mesa_meta_begin(). - */ - if (ctx->Extensions.EXT_texture_sRGB_decode) { - _mesa_SamplerParameteri(sampler, GL_TEXTURE_SRGB_DECODE_EXT, - GL_SKIP_DECODE_EXT); - } - - if (ctx->API == API_OPENGL_COMPAT || ctx->API == API_OPENGLES) { - _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - _mesa_set_enable(ctx, target, GL_TRUE); - } - - /* Prepare vertex data (the VBO was previously created and bound) */ - { - struct vertex { - GLfloat x, y, s, t; - }; - struct vertex verts[4]; - GLfloat s0, t0, s1, t1; - - if (target == GL_TEXTURE_2D) { - const struct gl_texture_image *texImage - = _mesa_select_tex_image(ctx, texObj, target, srcLevel); - s0 = srcX0 / (float) texImage->Width; - s1 = srcX1 / (float) texImage->Width; - t0 = srcY0 / (float) texImage->Height; - t1 = srcY1 / (float) texImage->Height; - } - else { - assert(target == GL_TEXTURE_RECTANGLE_ARB); - s0 = (float) srcX0; - s1 = (float) srcX1; - t0 = (float) srcY0; - t1 = (float) srcY1; - } - - /* setup vertex positions */ - verts[0].x = -1.0F * flipX; - verts[0].y = -1.0F * flipY; - verts[1].x = 1.0F * flipX; - verts[1].y = -1.0F * flipY; - verts[2].x = 1.0F * flipX; - verts[2].y = 1.0F * flipY; - verts[3].x = -1.0F * flipX; - verts[3].y = 1.0F * flipY; - - verts[0].s = s0; - verts[0].t = t0; - verts[1].s = s1; - verts[1].t = t0; - verts[2].s = s1; - verts[2].t = t1; - verts[3].s = s0; - verts[3].t = t1; - - _mesa_BufferSubData(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts); - } - - /* setup viewport */ - _mesa_set_viewport(ctx, 0, dstX, dstY, dstW, dstH); - _mesa_ColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - _mesa_DepthMask(GL_FALSE); - _mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4); - - /* Restore texture object state, the texture binding will - * be restored by _mesa_meta_end(). - */ - if (target != GL_TEXTURE_RECTANGLE_ARB) { - _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, baseLevelSave); - _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, maxLevelSave); - } - - _mesa_BindSampler(ctx->Texture.CurrentUnit, samplerSave); - _mesa_DeleteSamplers(1, &sampler); - - /* Done with color buffer */ - mask &= ~GL_COLOR_BUFFER_BIT; - } - } - - return mask; -} - - -/** - * Meta implementation of ctx->Driver.BlitFramebuffer() in terms - * of texture mapping and polygon rendering. - */ -void -_mesa_meta_BlitFramebuffer(struct gl_context *ctx, - GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, - GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, - GLbitfield mask, GLenum filter) -{ - struct blit_state *blit = &ctx->Meta->Blit; - struct temp_texture *tex = get_temp_texture(ctx); - struct temp_texture *depthTex = get_temp_depth_texture(ctx); - const GLsizei maxTexSize = tex->MaxSize; - const GLint srcX = MIN2(srcX0, srcX1); - const GLint srcY = MIN2(srcY0, srcY1); - const GLint srcW = abs(srcX1 - srcX0); - const GLint srcH = abs(srcY1 - srcY0); - const GLint dstX = MIN2(dstX0, dstX1); - const GLint dstY = MIN2(dstY0, dstY1); - const GLint dstW = abs(dstX1 - dstX0); - const GLint dstH = abs(dstY1 - dstY0); - const GLint srcFlipX = (srcX1 - srcX0) / srcW; - const GLint srcFlipY = (srcY1 - srcY0) / srcH; - const GLint dstFlipX = (dstX1 - dstX0) / dstW; - const GLint dstFlipY = (dstY1 - dstY0) / dstH; - const GLint flipX = srcFlipX * dstFlipX; - const GLint flipY = srcFlipY * dstFlipY; - - struct vertex { - GLfloat x, y, s, t; - }; - struct vertex verts[4]; - GLboolean newTex; - const GLboolean use_glsl_version = ctx->Extensions.ARB_vertex_shader && - ctx->Extensions.ARB_fragment_shader && - (ctx->API != API_OPENGLES); - - /* In addition to falling back if the blit size is larger than the maximum - * texture size, fallback if the source is multisampled. This fallback can - * be removed once Mesa gets support ARB_texture_multisample. - */ - if (srcW > maxTexSize || srcH > maxTexSize - || ctx->ReadBuffer->Visual.samples > 0) { - /* XXX avoid this fallback */ - _swrast_BlitFramebuffer(ctx, srcX0, srcY0, srcX1, srcY1, - dstX0, dstY0, dstX1, dstY1, mask, filter); - return; - } - - /* only scissor effects blit so save/clear all other relevant state */ - _mesa_meta_begin(ctx, ~MESA_META_SCISSOR); - - /* Try faster, direct texture approach first */ - mask = blitframebuffer_texture(ctx, srcX0, srcY0, srcX1, srcY1, - dstX0, dstY0, dstX1, dstY1, mask, filter, - dstFlipX, dstFlipY, use_glsl_version); - if (mask == 0x0) { - _mesa_meta_end(ctx); - return; - } - - /* Choose between glsl version and fixed function version of - * BlitFramebuffer function. - */ - if (use_glsl_version) { - setup_glsl_blit_framebuffer(ctx, blit, tex->Target); - if (tex->Target == GL_TEXTURE_2D) - _mesa_UseProgram(blit->ShaderProg); - else - _mesa_UseProgram(blit->RectShaderProg); - } - else { - setup_ff_blit_framebuffer(blit); - } - - _mesa_BindVertexArray(blit->VAO); - _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, blit->VBO); - - /* Continue with "normal" approach which involves copying the src rect - * into a temporary texture and is "blitted" by drawing a textured quad. - */ - { - /* setup vertex positions */ - verts[0].x = -1.0F * flipX; - verts[0].y = -1.0F * flipY; - verts[1].x = 1.0F * flipX; - verts[1].y = -1.0F * flipY; - verts[2].x = 1.0F * flipX; - verts[2].y = 1.0F * flipY; - verts[3].x = -1.0F * flipX; - verts[3].y = 1.0F * flipY; - - } - - /* glEnable() in gles2 and gles3 doesn't allow GL_TEXTURE_{1D, 2D, etc.} - * tokens. - */ - if (_mesa_is_desktop_gl(ctx) || ctx->API == API_OPENGLES) - _mesa_set_enable(ctx, tex->Target, GL_TRUE); - - if (mask & GL_COLOR_BUFFER_BIT) { - const struct gl_framebuffer *readFb = ctx->ReadBuffer; - const struct gl_renderbuffer *colorReadRb = readFb->_ColorReadBuffer; - const GLenum rb_base_format = - _mesa_base_tex_format(ctx, colorReadRb->InternalFormat); - - /* Using the exact source rectangle to create the texture does incorrect - * linear filtering along the edges. So, allocate the texture extended along - * edges by one pixel in x, y directions. - */ - newTex = alloc_texture(tex, srcW + 2, srcH + 2, rb_base_format); - setup_copypix_texture(ctx, tex, newTex, - srcX - 1, srcY - 1, srcW + 2, srcH + 2, - rb_base_format, filter); - /* texcoords (after texture allocation!) */ - { - verts[0].s = 1.0F; - verts[0].t = 1.0F; - verts[1].s = tex->Sright - 1.0F; - verts[1].t = 1.0F; - verts[2].s = tex->Sright - 1.0F; - verts[2].t = tex->Ttop - 1.0F; - verts[3].s = 1.0F; - verts[3].t = tex->Ttop - 1.0F; - - /* upload new vertex data */ - _mesa_BufferSubData(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts); - } - - _mesa_set_viewport(ctx, 0, dstX, dstY, dstW, dstH); - _mesa_ColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); - _mesa_set_enable(ctx, GL_DEPTH_TEST, GL_FALSE); - _mesa_DepthMask(GL_FALSE); - _mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4); - mask &= ~GL_COLOR_BUFFER_BIT; - } - - if ((mask & GL_DEPTH_BUFFER_BIT) && - _mesa_is_desktop_gl(ctx) && - ctx->Extensions.ARB_depth_texture && - ctx->Extensions.ARB_fragment_program) { - - GLuint *tmp = malloc(srcW * srcH * sizeof(GLuint)); - - if (tmp) { - - newTex = alloc_texture(depthTex, srcW, srcH, GL_DEPTH_COMPONENT); - _mesa_ReadPixels(srcX, srcY, srcW, srcH, GL_DEPTH_COMPONENT, - GL_UNSIGNED_INT, tmp); - setup_drawpix_texture(ctx, depthTex, newTex, GL_DEPTH_COMPONENT, - srcW, srcH, GL_DEPTH_COMPONENT, - GL_UNSIGNED_INT, tmp); - - /* texcoords (after texture allocation!) */ - { - verts[0].s = 0.0F; - verts[0].t = 0.0F; - verts[1].s = depthTex->Sright; - verts[1].t = 0.0F; - verts[2].s = depthTex->Sright; - verts[2].t = depthTex->Ttop; - verts[3].s = 0.0F; - verts[3].t = depthTex->Ttop; - - /* upload new vertex data */ - _mesa_BufferSubData(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts); - } - - if (!blit->DepthFP) - init_blit_depth_pixels(ctx); - - _mesa_BindProgramARB(GL_FRAGMENT_PROGRAM_ARB, blit->DepthFP); - _mesa_set_enable(ctx, GL_FRAGMENT_PROGRAM_ARB, GL_TRUE); - _mesa_ColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); - _mesa_set_enable(ctx, GL_DEPTH_TEST, GL_TRUE); - _mesa_DepthFunc(GL_ALWAYS); - _mesa_DepthMask(GL_TRUE); - - _mesa_set_viewport(ctx, 0, dstX, dstY, dstW, dstH); - _mesa_BufferSubData(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts); - _mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4); - mask &= ~GL_DEPTH_BUFFER_BIT; - - free(tmp); - } - } - - if (mask & GL_STENCIL_BUFFER_BIT) { - /* XXX can't easily do stencil */ - } - - if (_mesa_is_desktop_gl(ctx) || ctx->API == API_OPENGLES) - _mesa_set_enable(ctx, tex->Target, GL_FALSE); - - _mesa_meta_end(ctx); - - if (mask) { - _swrast_BlitFramebuffer(ctx, srcX0, srcY0, srcX1, srcY1, - dstX0, dstY0, dstX1, dstY1, mask, filter); - } -} - -static void -meta_glsl_blit_cleanup(struct blit_state *blit) -{ - if (blit->VAO) { - _mesa_DeleteVertexArrays(1, &blit->VAO); - blit->VAO = 0; - _mesa_DeleteBuffers(1, &blit->VBO); - blit->VBO = 0; - } - if (blit->DepthFP) { - _mesa_DeleteProgramsARB(1, &blit->DepthFP); - blit->DepthFP = 0; - } - - _mesa_DeleteObjectARB(blit->ShaderProg); - blit->ShaderProg = 0; - _mesa_DeleteObjectARB(blit->RectShaderProg); - blit->RectShaderProg = 0; - - _mesa_DeleteTextures(1, &blit->depthTex.TexObj); - blit->depthTex.TexObj = 0; -} - - -/** * Meta implementation of ctx->Driver.Clear() in terms of polygon rendering. */ void _mesa_meta_Clear(struct gl_context *ctx, GLbitfield buffers) { struct clear_state *clear = &ctx->Meta->Clear; - struct vertex { - GLfloat x, y, z, r, g, b, a; - }; struct vertex verts[4]; /* save all state but scissor, pixel pack/unpack */ GLbitfield metaSave = (MESA_META_ALL - @@ -2049,27 +1383,7 @@ _mesa_meta_Clear(struct gl_context *ctx, GLbitfield buffers) _mesa_meta_begin(ctx, metaSave); - if (clear->VAO == 0) { - /* one-time setup */ - - /* create vertex array object */ - _mesa_GenVertexArrays(1, &clear->VAO); - _mesa_BindVertexArray(clear->VAO); - - /* create vertex array buffer */ - _mesa_GenBuffers(1, &clear->VBO); - _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, clear->VBO); - - /* setup vertex arrays */ - _mesa_VertexPointer(3, GL_FLOAT, sizeof(struct vertex), OFFSET(x)); - _mesa_ColorPointer(4, GL_FLOAT, sizeof(struct vertex), OFFSET(r)); - _mesa_EnableClientState(GL_VERTEX_ARRAY); - _mesa_EnableClientState(GL_COLOR_ARRAY); - } - else { - _mesa_BindVertexArray(clear->VAO); - _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, clear->VBO); - } + _mesa_meta_setup_vertex_objects(&clear->VAO, &clear->VBO, false, 3, 0, 4); /* GL_COLOR_BUFFER_BIT */ if (buffers & BUFFER_BITS_COLOR) { @@ -2171,9 +1485,6 @@ meta_glsl_clear_init(struct gl_context *ctx, struct clear_state *clear) " }\n" "}\n"; const char *fs_source = - "#ifdef GL_ES\n" - "precision highp float;\n" - "#endif\n" "uniform vec4 color;\n" "void main()\n" "{\n" @@ -2182,20 +1493,10 @@ meta_glsl_clear_init(struct gl_context *ctx, struct clear_state *clear) GLuint vs, gs = 0, fs; bool has_integer_textures; - if (clear->VAO != 0) - return; - - /* create vertex array object */ - _mesa_GenVertexArrays(1, &clear->VAO); - _mesa_BindVertexArray(clear->VAO); - - /* create vertex array buffer */ - _mesa_GenBuffers(1, &clear->VBO); - _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, clear->VBO); + _mesa_meta_setup_vertex_objects(&clear->VAO, &clear->VBO, true, 3, 0, 0); - /* setup vertex arrays */ - _mesa_VertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void *)0); - _mesa_EnableVertexAttribArray(0); + if (clear->ShaderProg != 0) + return; vs = _mesa_CreateShaderObjectARB(GL_VERTEX_SHADER); _mesa_ShaderSource(vs, 1, &vs_source, NULL); @@ -2235,30 +1536,27 @@ meta_glsl_clear_init(struct gl_context *ctx, struct clear_state *clear) void *shader_source_mem_ctx = ralloc_context(NULL); const char *vs_int_source = ralloc_asprintf(shader_source_mem_ctx, - "#version %s\n" + "#version 130\n" "in vec4 position;\n" "void main()\n" "{\n" " gl_Position = position;\n" - "}\n", - _mesa_is_desktop_gl(ctx) ? "130" : "300 es"); + "}\n"); const char *fs_int_source = ralloc_asprintf(shader_source_mem_ctx, - "#version %s\n" - "#ifdef GL_ES\n" - "precision highp float;\n" - "#endif\n" + "#version 130\n" "uniform ivec4 color;\n" "out ivec4 out_color;\n" "\n" "void main()\n" "{\n" " out_color = color;\n" - "}\n", - _mesa_is_desktop_gl(ctx) ? "130" : "300 es"); + "}\n"); - vs = compile_shader_with_debug(ctx, GL_VERTEX_SHADER, vs_int_source); - fs = compile_shader_with_debug(ctx, GL_FRAGMENT_SHADER, fs_int_source); + vs = _mesa_meta_compile_shader_with_debug(ctx, GL_VERTEX_SHADER, + vs_int_source); + fs = _mesa_meta_compile_shader_with_debug(ctx, GL_FRAGMENT_SHADER, + fs_int_source); ralloc_free(shader_source_mem_ctx); clear->IntegerShaderProg = _mesa_CreateProgramObjectARB(); @@ -2275,7 +1573,9 @@ meta_glsl_clear_init(struct gl_context *ctx, struct clear_state *clear) * BindFragDataLocation to 0. */ - link_program_with_debug(ctx, clear->IntegerShaderProg); + _mesa_ObjectLabel(GL_PROGRAM, clear->IntegerShaderProg, -1, + "integer clear"); + _mesa_meta_link_program_with_debug(ctx, clear->IntegerShaderProg); clear->IntegerColorLocation = _mesa_GetUniformLocation(clear->IntegerShaderProg, "color"); @@ -2321,9 +1621,7 @@ _mesa_meta_glsl_Clear(struct gl_context *ctx, GLbitfield buffers) const float x1 = ((float)fb->_Xmax / fb->Width) * 2.0f - 1.0f; const float y1 = ((float)fb->_Ymax / fb->Height) * 2.0f - 1.0f; const float z = -invert_z(ctx->Depth.Clear); - struct vertex { - GLfloat x, y, z; - } verts[4]; + struct vertex verts[4]; metaSave = (MESA_META_ALPHA_TEST | MESA_META_BLEND | @@ -2359,9 +1657,6 @@ _mesa_meta_glsl_Clear(struct gl_context *ctx, GLbitfield buffers) ctx->Color.ClearColor.f); } - _mesa_BindVertexArray(clear->VAO); - _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, clear->VBO); - /* GL_COLOR_BUFFER_BIT */ if (buffers & BUFFER_BITS_COLOR) { /* leave colormask, glDrawBuffer state as-is */ @@ -2443,13 +1738,8 @@ _mesa_meta_CopyPixels(struct gl_context *ctx, GLint srcX, GLint srcY, GLint dstX, GLint dstY, GLenum type) { struct copypix_state *copypix = &ctx->Meta->CopyPix; - struct temp_texture *tex = get_temp_texture(ctx); - struct vertex { - GLfloat x, y, z, s, t; - }; + struct temp_texture *tex = _mesa_meta_get_temp_texture(ctx); struct vertex verts[4]; - GLboolean newTex; - GLenum intFormat = GL_RGBA; if (type != GL_COLOR || ctx->_ImageTransferState || @@ -2472,31 +1762,15 @@ _mesa_meta_CopyPixels(struct gl_context *ctx, GLint srcX, GLint srcY, MESA_META_VERTEX | MESA_META_VIEWPORT)); - if (copypix->VAO == 0) { - /* one-time setup */ + _mesa_meta_setup_vertex_objects(©pix->VAO, ©pix->VBO, false, + 3, 2, 0); - /* create vertex array object */ - _mesa_GenVertexArrays(1, ©pix->VAO); - _mesa_BindVertexArray(copypix->VAO); - - /* create vertex array buffer */ - _mesa_GenBuffers(1, ©pix->VBO); - _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, copypix->VBO); - _mesa_BufferData(GL_ARRAY_BUFFER_ARB, sizeof(verts), - NULL, GL_DYNAMIC_DRAW_ARB); + /* Silence valgrind warnings about reading uninitialized stack. */ + memset(verts, 0, sizeof(verts)); - /* setup vertex arrays */ - _mesa_VertexPointer(3, GL_FLOAT, sizeof(struct vertex), OFFSET(x)); - _mesa_TexCoordPointer(2, GL_FLOAT, sizeof(struct vertex), OFFSET(s)); - _mesa_EnableClientState(GL_VERTEX_ARRAY); - _mesa_EnableClientState(GL_TEXTURE_COORD_ARRAY); - } - else { - _mesa_BindVertexArray(copypix->VAO); - _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, copypix->VBO); - } - - newTex = alloc_texture(tex, width, height, intFormat); + /* Alloc/setup texture */ + _mesa_meta_setup_copypix_texture(ctx, tex, srcX, srcY, width, height, + GL_RGBA, GL_NEAREST); /* vertex positions, texcoords (after texture allocation!) */ { @@ -2509,32 +1783,28 @@ _mesa_meta_CopyPixels(struct gl_context *ctx, GLint srcX, GLint srcY, verts[0].x = dstX0; verts[0].y = dstY0; verts[0].z = z; - verts[0].s = 0.0F; - verts[0].t = 0.0F; + verts[0].tex[0] = 0.0F; + verts[0].tex[1] = 0.0F; verts[1].x = dstX1; verts[1].y = dstY0; verts[1].z = z; - verts[1].s = tex->Sright; - verts[1].t = 0.0F; + verts[1].tex[0] = tex->Sright; + verts[1].tex[1] = 0.0F; verts[2].x = dstX1; verts[2].y = dstY1; verts[2].z = z; - verts[2].s = tex->Sright; - verts[2].t = tex->Ttop; + verts[2].tex[0] = tex->Sright; + verts[2].tex[1] = tex->Ttop; verts[3].x = dstX0; verts[3].y = dstY1; verts[3].z = z; - verts[3].s = 0.0F; - verts[3].t = tex->Ttop; + verts[3].tex[0] = 0.0F; + verts[3].tex[1] = tex->Ttop; /* upload new vertex data */ _mesa_BufferSubData(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts); } - /* Alloc/setup texture */ - setup_copypix_texture(ctx, tex, newTex, srcX, srcY, width, height, - GL_RGBA, GL_NEAREST); - _mesa_set_enable(ctx, tex->Target, GL_TRUE); /* draw textured quad */ @@ -2551,6 +1821,9 @@ meta_drawpix_cleanup(struct drawpix_state *drawpix) if (drawpix->VAO != 0) { _mesa_DeleteVertexArrays(1, &drawpix->VAO); drawpix->VAO = 0; + + _mesa_DeleteBuffers(1, &drawpix->VBO); + drawpix->VBO = 0; } if (drawpix->StencilFP != 0) { @@ -2646,7 +1919,7 @@ init_draw_stencil_pixels(struct gl_context *ctx) "END \n"; char program2[1000]; struct drawpix_state *drawpix = &ctx->Meta->DrawPix; - struct temp_texture *tex = get_temp_texture(ctx); + struct temp_texture *tex = _mesa_meta_get_temp_texture(ctx); const char *texTarget; assert(drawpix->StencilFP == 0); @@ -2680,7 +1953,7 @@ init_draw_depth_pixels(struct gl_context *ctx) "END \n"; char program2[200]; struct drawpix_state *drawpix = &ctx->Meta->DrawPix; - struct temp_texture *tex = get_temp_texture(ctx); + struct temp_texture *tex = _mesa_meta_get_temp_texture(ctx); const char *texTarget; assert(drawpix->DepthFP == 0); @@ -2712,17 +1985,13 @@ _mesa_meta_DrawPixels(struct gl_context *ctx, const GLvoid *pixels) { struct drawpix_state *drawpix = &ctx->Meta->DrawPix; - struct temp_texture *tex = get_temp_texture(ctx); + struct temp_texture *tex = _mesa_meta_get_temp_texture(ctx); const struct gl_pixelstore_attrib unpackSave = ctx->Unpack; const GLuint origStencilMask = ctx->Stencil.WriteMask[0]; - struct vertex { - GLfloat x, y, z, s, t; - }; struct vertex verts[4]; GLenum texIntFormat; GLboolean fallback, newTex; GLbitfield metaExtraSave = 0x0; - GLuint vbo; /* * Determine if we can do the glDrawPixels with texture mapping. @@ -2812,7 +2081,13 @@ _mesa_meta_DrawPixels(struct gl_context *ctx, MESA_META_VIEWPORT | metaExtraSave)); - newTex = alloc_texture(tex, width, height, texIntFormat); + newTex = _mesa_meta_alloc_texture(tex, width, height, texIntFormat); + + _mesa_meta_setup_vertex_objects(&drawpix->VAO, &drawpix->VBO, false, + 3, 2, 0); + + /* Silence valgrind warnings about reading uninitialized stack. */ + memset(verts, 0, sizeof(verts)); /* vertex positions, texcoords (after texture allocation!) */ { @@ -2825,43 +2100,29 @@ _mesa_meta_DrawPixels(struct gl_context *ctx, verts[0].x = x0; verts[0].y = y0; verts[0].z = z; - verts[0].s = 0.0F; - verts[0].t = 0.0F; + verts[0].tex[0] = 0.0F; + verts[0].tex[1] = 0.0F; verts[1].x = x1; verts[1].y = y0; verts[1].z = z; - verts[1].s = tex->Sright; - verts[1].t = 0.0F; + verts[1].tex[0] = tex->Sright; + verts[1].tex[1] = 0.0F; verts[2].x = x1; verts[2].y = y1; verts[2].z = z; - verts[2].s = tex->Sright; - verts[2].t = tex->Ttop; + verts[2].tex[0] = tex->Sright; + verts[2].tex[1] = tex->Ttop; verts[3].x = x0; verts[3].y = y1; verts[3].z = z; - verts[3].s = 0.0F; - verts[3].t = tex->Ttop; - } - - if (drawpix->VAO == 0) { - /* one-time setup: create vertex array object */ - _mesa_GenVertexArrays(1, &drawpix->VAO); + verts[3].tex[0] = 0.0F; + verts[3].tex[1] = tex->Ttop; } - _mesa_BindVertexArray(drawpix->VAO); - /* create vertex array buffer */ - _mesa_GenBuffers(1, &vbo); - _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, vbo); + /* upload new vertex data */ _mesa_BufferData(GL_ARRAY_BUFFER_ARB, sizeof(verts), verts, GL_DYNAMIC_DRAW_ARB); - /* setup vertex arrays */ - _mesa_VertexPointer(3, GL_FLOAT, sizeof(struct vertex), OFFSET(x)); - _mesa_TexCoordPointer(2, GL_FLOAT, sizeof(struct vertex), OFFSET(s)); - _mesa_EnableClientState(GL_VERTEX_ARRAY); - _mesa_EnableClientState(GL_TEXTURE_COORD_ARRAY); - /* set given unpack params */ ctx->Unpack = *unpack; @@ -2874,8 +2135,8 @@ _mesa_meta_DrawPixels(struct gl_context *ctx, if (!drawpix->StencilFP) init_draw_stencil_pixels(ctx); - setup_drawpix_texture(ctx, tex, newTex, texIntFormat, width, height, - GL_ALPHA, type, pixels); + _mesa_meta_setup_drawpix_texture(ctx, tex, newTex, width, height, + GL_ALPHA, type, pixels); _mesa_ColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); @@ -2917,22 +2178,20 @@ _mesa_meta_DrawPixels(struct gl_context *ctx, _mesa_ProgramLocalParameter4fvARB(GL_FRAGMENT_PROGRAM_ARB, 0, ctx->Current.RasterColor); - setup_drawpix_texture(ctx, tex, newTex, texIntFormat, width, height, - format, type, pixels); + _mesa_meta_setup_drawpix_texture(ctx, tex, newTex, width, height, + format, type, pixels); _mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4); } else { /* Drawing RGBA */ - setup_drawpix_texture(ctx, tex, newTex, texIntFormat, width, height, - format, type, pixels); + _mesa_meta_setup_drawpix_texture(ctx, tex, newTex, width, height, + format, type, pixels); _mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4); } _mesa_set_enable(ctx, tex->Target, GL_FALSE); - _mesa_DeleteBuffers(1, &vbo); - /* restore unpack params */ ctx->Unpack = unpackSave; @@ -2984,9 +2243,6 @@ _mesa_meta_Bitmap(struct gl_context *ctx, const GLenum texIntFormat = GL_ALPHA; const struct gl_pixelstore_attrib unpackSave = *unpack; GLubyte fg, bg; - struct vertex { - GLfloat x, y, z, s, t, r, g, b, a; - }; struct vertex verts[4]; GLboolean newTex; GLubyte *bitmap8; @@ -3020,33 +2276,12 @@ _mesa_meta_Bitmap(struct gl_context *ctx, MESA_META_VERTEX | MESA_META_VIEWPORT)); - if (bitmap->VAO == 0) { - /* one-time setup */ + _mesa_meta_setup_vertex_objects(&bitmap->VAO, &bitmap->VBO, false, 3, 2, 4); - /* create vertex array object */ - _mesa_GenVertexArrays(1, &bitmap->VAO); - _mesa_BindVertexArray(bitmap->VAO); + newTex = _mesa_meta_alloc_texture(tex, width, height, texIntFormat); - /* create vertex array buffer */ - _mesa_GenBuffers(1, &bitmap->VBO); - _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, bitmap->VBO); - _mesa_BufferData(GL_ARRAY_BUFFER_ARB, sizeof(verts), - NULL, GL_DYNAMIC_DRAW_ARB); - - /* setup vertex arrays */ - _mesa_VertexPointer(3, GL_FLOAT, sizeof(struct vertex), OFFSET(x)); - _mesa_TexCoordPointer(2, GL_FLOAT, sizeof(struct vertex), OFFSET(s)); - _mesa_ColorPointer(4, GL_FLOAT, sizeof(struct vertex), OFFSET(r)); - _mesa_EnableClientState(GL_VERTEX_ARRAY); - _mesa_EnableClientState(GL_TEXTURE_COORD_ARRAY); - _mesa_EnableClientState(GL_COLOR_ARRAY); - } - else { - _mesa_BindVertexArray(bitmap->VAO); - _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, bitmap->VBO); - } - - newTex = alloc_texture(tex, width, height, texIntFormat); + /* Silence valgrind warnings about reading uninitialized stack. */ + memset(verts, 0, sizeof(verts)); /* vertex positions, texcoords, colors (after texture allocation!) */ { @@ -3060,23 +2295,23 @@ _mesa_meta_Bitmap(struct gl_context *ctx, verts[0].x = x0; verts[0].y = y0; verts[0].z = z; - verts[0].s = 0.0F; - verts[0].t = 0.0F; + verts[0].tex[0] = 0.0F; + verts[0].tex[1] = 0.0F; verts[1].x = x1; verts[1].y = y0; verts[1].z = z; - verts[1].s = tex->Sright; - verts[1].t = 0.0F; + verts[1].tex[0] = tex->Sright; + verts[1].tex[1] = 0.0F; verts[2].x = x1; verts[2].y = y1; verts[2].z = z; - verts[2].s = tex->Sright; - verts[2].t = tex->Ttop; + verts[2].tex[0] = tex->Sright; + verts[2].tex[1] = tex->Ttop; verts[3].x = x0; verts[3].y = y1; verts[3].z = z; - verts[3].s = 0.0F; - verts[3].t = tex->Ttop; + verts[3].tex[0] = 0.0F; + verts[3].tex[1] = tex->Ttop; for (i = 0; i < 4; i++) { verts[i].r = ctx->Current.RasterColor[0]; @@ -3110,8 +2345,8 @@ _mesa_meta_Bitmap(struct gl_context *ctx, _mesa_set_enable(ctx, GL_ALPHA_TEST, GL_TRUE); _mesa_AlphaFunc(GL_NOTEQUAL, UBYTE_TO_FLOAT(bg)); - setup_drawpix_texture(ctx, tex, newTex, texIntFormat, width, height, - GL_ALPHA, GL_UNSIGNED_BYTE, bitmap8); + _mesa_meta_setup_drawpix_texture(ctx, tex, newTex, width, height, + GL_ALPHA, GL_UNSIGNED_BYTE, bitmap8); _mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4); @@ -3236,10 +2471,10 @@ setup_texture_coords(GLenum faceTarget, GLint width, GLint height, GLint depth, - GLfloat coords0[3], - GLfloat coords1[3], - GLfloat coords2[3], - GLfloat coords3[3]) + GLfloat coords0[4], + GLfloat coords1[4], + GLfloat coords2[4], + GLfloat coords3[4]) { static const GLfloat st[4][2] = { {0.0f, 0.0f}, {1.0f, 0.0f}, {1.0f, 1.0f}, {0.0f, 1.0f} @@ -3247,6 +2482,13 @@ setup_texture_coords(GLenum faceTarget, GLuint i; GLfloat r; + /* Currently all texture targets want the W component to be 1.0. + */ + coords0[3] = 1.0F; + coords1[3] = 1.0F; + coords2[3] = 1.0F; + coords3[3] = 1.0F; + switch (faceTarget) { case GL_TEXTURE_1D: case GL_TEXTURE_2D: @@ -3337,6 +2579,8 @@ setup_texture_coords(GLenum faceTarget, assert(0); } + coord[3] = (float) (slice / 6); + switch (faceTarget) { case GL_TEXTURE_CUBE_MAP_POSITIVE_X: coord[0] = 1.0f; @@ -3378,74 +2622,53 @@ setup_texture_coords(GLenum faceTarget, } } - -static void -setup_ff_generate_mipmap(struct gen_mipmap_state *mipmap) -{ - struct vertex { - GLfloat x, y, tex[3]; - }; - - if (mipmap->VAO == 0) { - /* one-time setup */ - /* create vertex array object */ - _mesa_GenVertexArrays(1, &mipmap->VAO); - _mesa_BindVertexArray(mipmap->VAO); - - /* create vertex array buffer */ - _mesa_GenBuffers(1, &mipmap->VBO); - _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, mipmap->VBO); - /* setup vertex arrays */ - _mesa_VertexPointer(2, GL_FLOAT, sizeof(struct vertex), OFFSET(x)); - _mesa_TexCoordPointer(3, GL_FLOAT, sizeof(struct vertex), OFFSET(tex)); - _mesa_EnableClientState(GL_VERTEX_ARRAY); - _mesa_EnableClientState(GL_TEXTURE_COORD_ARRAY); - } - - /* setup projection matrix */ - _mesa_MatrixMode(GL_PROJECTION); - _mesa_LoadIdentity(); - _mesa_Ortho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); -} - - -static struct glsl_sampler * -setup_texture_sampler(GLenum target, struct gen_mipmap_state *mipmap) +static struct blit_shader * +choose_blit_shader(GLenum target, struct blit_shader_table *table) { switch(target) { case GL_TEXTURE_1D: - mipmap->sampler_1d.type = "sampler1D"; - mipmap->sampler_1d.func = "texture1D"; - mipmap->sampler_1d.texcoords = "texCoords.x"; - return &mipmap->sampler_1d; + table->sampler_1d.type = "sampler1D"; + table->sampler_1d.func = "texture1D"; + table->sampler_1d.texcoords = "texCoords.x"; + return &table->sampler_1d; case GL_TEXTURE_2D: - mipmap->sampler_2d.type = "sampler2D"; - mipmap->sampler_2d.func = "texture2D"; - mipmap->sampler_2d.texcoords = "texCoords.xy"; - return &mipmap->sampler_2d; + table->sampler_2d.type = "sampler2D"; + table->sampler_2d.func = "texture2D"; + table->sampler_2d.texcoords = "texCoords.xy"; + return &table->sampler_2d; + case GL_TEXTURE_RECTANGLE: + table->sampler_rect.type = "sampler2DRect"; + table->sampler_rect.func = "texture2DRect"; + table->sampler_rect.texcoords = "texCoords.xy"; + return &table->sampler_rect; case GL_TEXTURE_3D: /* Code for mipmap generation with 3D textures is not used yet. * It's a sw fallback. */ - mipmap->sampler_3d.type = "sampler3D"; - mipmap->sampler_3d.func = "texture3D"; - mipmap->sampler_3d.texcoords = "texCoords"; - return &mipmap->sampler_3d; + table->sampler_3d.type = "sampler3D"; + table->sampler_3d.func = "texture3D"; + table->sampler_3d.texcoords = "texCoords.xyz"; + return &table->sampler_3d; case GL_TEXTURE_CUBE_MAP: - mipmap->sampler_cubemap.type = "samplerCube"; - mipmap->sampler_cubemap.func = "textureCube"; - mipmap->sampler_cubemap.texcoords = "texCoords"; - return &mipmap->sampler_cubemap; + table->sampler_cubemap.type = "samplerCube"; + table->sampler_cubemap.func = "textureCube"; + table->sampler_cubemap.texcoords = "texCoords.xyz"; + return &table->sampler_cubemap; case GL_TEXTURE_1D_ARRAY: - mipmap->sampler_1d_array.type = "sampler1DArray"; - mipmap->sampler_1d_array.func = "texture1DArray"; - mipmap->sampler_1d_array.texcoords = "texCoords.xy"; - return &mipmap->sampler_1d_array; + table->sampler_1d_array.type = "sampler1DArray"; + table->sampler_1d_array.func = "texture1DArray"; + table->sampler_1d_array.texcoords = "texCoords.xy"; + return &table->sampler_1d_array; case GL_TEXTURE_2D_ARRAY: - mipmap->sampler_2d_array.type = "sampler2DArray"; - mipmap->sampler_2d_array.func = "texture2DArray"; - mipmap->sampler_2d_array.texcoords = "texCoords"; - return &mipmap->sampler_2d_array; + table->sampler_2d_array.type = "sampler2DArray"; + table->sampler_2d_array.func = "texture2DArray"; + table->sampler_2d_array.texcoords = "texCoords.xyz"; + return &table->sampler_2d_array; + case GL_TEXTURE_CUBE_MAP_ARRAY: + table->sampler_cubemap_array.type = "samplerCubeArray"; + table->sampler_cubemap_array.func = "textureCubeArray"; + table->sampler_cubemap_array.texcoords = "texCoords.xyzw"; + return &table->sampler_cubemap_array; default: _mesa_problem(NULL, "Unexpected texture target 0x%x in" " setup_texture_sampler()\n", target); @@ -3453,122 +2676,28 @@ setup_texture_sampler(GLenum target, struct gen_mipmap_state *mipmap) } } - -static void -setup_glsl_generate_mipmap(struct gl_context *ctx, - struct gen_mipmap_state *mipmap, - GLenum target) +void +_mesa_meta_blit_shader_table_cleanup(struct blit_shader_table *table) { - struct vertex { - GLfloat x, y, tex[3]; - }; - struct glsl_sampler *sampler; - const char *vs_source; - char *fs_source; - GLuint vs, fs; - void *mem_ctx; - - /* Check if already initialized */ - if (mipmap->VAO == 0) { - - /* create vertex array object */ - _mesa_GenVertexArrays(1, &mipmap->VAO); - _mesa_BindVertexArray(mipmap->VAO); - - /* create vertex array buffer */ - _mesa_GenBuffers(1, &mipmap->VBO); - _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, mipmap->VBO); - - /* setup vertex arrays */ - _mesa_VertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, - sizeof(struct vertex), OFFSET(x)); - _mesa_VertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, - sizeof(struct vertex), OFFSET(tex)); - _mesa_EnableVertexAttribArray(0); - _mesa_EnableVertexAttribArray(1); - } - - /* Generate a fragment shader program appropriate for the texture target */ - sampler = setup_texture_sampler(target, mipmap); - assert(sampler != NULL); - if (sampler->shader_prog != 0) { - mipmap->ShaderProg = sampler->shader_prog; - return; - } - - mem_ctx = ralloc_context(NULL); - - if (ctx->API == API_OPENGLES2 || ctx->Const.GLSLVersion < 130) { - vs_source = - "attribute vec2 position;\n" - "attribute vec3 textureCoords;\n" - "varying vec3 texCoords;\n" - "void main()\n" - "{\n" - " texCoords = textureCoords;\n" - " gl_Position = vec4(position, 0.0, 1.0);\n" - "}\n"; - - fs_source = ralloc_asprintf(mem_ctx, - "#extension GL_EXT_texture_array : enable\n" - "#ifdef GL_ES\n" - "precision highp float;\n" - "#endif\n" - "uniform %s texSampler;\n" - "varying vec3 texCoords;\n" - "void main()\n" - "{\n" - " gl_FragColor = %s(texSampler, %s);\n" - "}\n", - sampler->type, - sampler->func, sampler->texcoords); - } - else { - vs_source = ralloc_asprintf(mem_ctx, - "#version %s\n" - "in vec2 position;\n" - "in vec3 textureCoords;\n" - "out vec3 texCoords;\n" - "void main()\n" - "{\n" - " texCoords = textureCoords;\n" - " gl_Position = vec4(position, 0.0, 1.0);\n" - "}\n", - _mesa_is_desktop_gl(ctx) ? "130" : "300 es"); - fs_source = ralloc_asprintf(mem_ctx, - "#version %s\n" - "#ifdef GL_ES\n" - "precision highp float;\n" - "#endif\n" - "uniform %s texSampler;\n" - "in vec3 texCoords;\n" - "out vec4 out_color;\n" - "\n" - "void main()\n" - "{\n" - " out_color = texture(texSampler, %s);\n" - "}\n", - _mesa_is_desktop_gl(ctx) ? "130" : "300 es", - sampler->type, - sampler->texcoords); - } - - vs = compile_shader_with_debug(ctx, GL_VERTEX_SHADER, vs_source); - fs = compile_shader_with_debug(ctx, GL_FRAGMENT_SHADER, fs_source); - - mipmap->ShaderProg = _mesa_CreateProgramObjectARB(); - _mesa_AttachShader(mipmap->ShaderProg, fs); - _mesa_DeleteObjectARB(fs); - _mesa_AttachShader(mipmap->ShaderProg, vs); - _mesa_DeleteObjectARB(vs); - _mesa_BindAttribLocation(mipmap->ShaderProg, 0, "position"); - _mesa_BindAttribLocation(mipmap->ShaderProg, 1, "texcoords"); - link_program_with_debug(ctx, mipmap->ShaderProg); - sampler->shader_prog = mipmap->ShaderProg; - ralloc_free(mem_ctx); + _mesa_DeleteObjectARB(table->sampler_1d.shader_prog); + _mesa_DeleteObjectARB(table->sampler_2d.shader_prog); + _mesa_DeleteObjectARB(table->sampler_3d.shader_prog); + _mesa_DeleteObjectARB(table->sampler_rect.shader_prog); + _mesa_DeleteObjectARB(table->sampler_cubemap.shader_prog); + _mesa_DeleteObjectARB(table->sampler_1d_array.shader_prog); + _mesa_DeleteObjectARB(table->sampler_2d_array.shader_prog); + _mesa_DeleteObjectARB(table->sampler_cubemap_array.shader_prog); + + table->sampler_1d.shader_prog = 0; + table->sampler_2d.shader_prog = 0; + table->sampler_3d.shader_prog = 0; + table->sampler_rect.shader_prog = 0; + table->sampler_cubemap.shader_prog = 0; + table->sampler_1d_array.shader_prog = 0; + table->sampler_2d_array.shader_prog = 0; + table->sampler_cubemap_array.shader_prog = 0; } - static void meta_glsl_generate_mipmap_cleanup(struct gen_mipmap_state *mipmap) { @@ -3579,19 +2708,7 @@ meta_glsl_generate_mipmap_cleanup(struct gen_mipmap_state *mipmap) _mesa_DeleteBuffers(1, &mipmap->VBO); mipmap->VBO = 0; - _mesa_DeleteObjectARB(mipmap->sampler_1d.shader_prog); - _mesa_DeleteObjectARB(mipmap->sampler_2d.shader_prog); - _mesa_DeleteObjectARB(mipmap->sampler_3d.shader_prog); - _mesa_DeleteObjectARB(mipmap->sampler_cubemap.shader_prog); - _mesa_DeleteObjectARB(mipmap->sampler_1d_array.shader_prog); - _mesa_DeleteObjectARB(mipmap->sampler_2d_array.shader_prog); - - mipmap->sampler_1d.shader_prog = 0; - mipmap->sampler_2d.shader_prog = 0; - mipmap->sampler_3d.shader_prog = 0; - mipmap->sampler_cubemap.shader_prog = 0; - mipmap->sampler_1d_array.shader_prog = 0; - mipmap->sampler_2d_array.shader_prog = 0; + _mesa_meta_blit_shader_table_cleanup(&mipmap->shaders); } @@ -3605,9 +2722,6 @@ _mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj) { struct gen_mipmap_state *mipmap = &ctx->Meta->Mipmap; - struct vertex { - GLfloat x, y, tex[3]; - }; struct vertex verts[4]; const GLuint baseLevel = texObj->BaseLevel; const GLuint maxLevel = texObj->MaxLevel; @@ -3616,8 +2730,7 @@ _mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target, const GLuint fboSave = ctx->DrawBuffer->Name; const GLuint currentTexUnitSave = ctx->Texture.CurrentUnit; const GLboolean use_glsl_version = ctx->Extensions.ARB_vertex_shader && - ctx->Extensions.ARB_fragment_shader && - (ctx->API != API_OPENGLES); + ctx->Extensions.ARB_fragment_shader; GLenum faceTarget; GLuint dstLevel; const GLint slice = 0; @@ -3643,17 +2756,15 @@ _mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target, * GenerateMipmap function. */ if (use_glsl_version) { - setup_glsl_generate_mipmap(ctx, mipmap, target); - _mesa_UseProgram(mipmap->ShaderProg); + _mesa_meta_setup_vertex_objects(&mipmap->VAO, &mipmap->VBO, true, + 2, 3, 0); + _mesa_meta_setup_blit_shader(ctx, target, &mipmap->shaders); } else { - setup_ff_generate_mipmap(mipmap); + _mesa_meta_setup_ff_tnl_for_blit(&mipmap->VAO, &mipmap->VBO, 3); _mesa_set_enable(ctx, target, GL_TRUE); } - _mesa_BindVertexArray(mipmap->VAO); - _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, mipmap->VBO); - samplerSave = ctx->Texture.Unit[ctx->Texture.CurrentUnit].Sampler ? ctx->Texture.Unit[ctx->Texture.CurrentUnit].Sampler->Name : 0; @@ -3691,10 +2802,10 @@ _mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target, _mesa_BindFramebuffer(GL_FRAMEBUFFER_EXT, mipmap->FBO); - if (ctx->API == API_OPENGL_COMPAT || ctx->API == API_OPENGLES) - _mesa_TexParameteri(target, GL_GENERATE_MIPMAP, GL_FALSE); - else - assert(!genMipmapSave); + _mesa_TexParameteri(target, GL_GENERATE_MIPMAP, GL_FALSE); + + /* Silence valgrind warnings about reading uninitialized stack. */ + memset(verts, 0, sizeof(verts)); /* Setup texture coordinates */ setup_texture_coords(faceTarget, @@ -3895,6 +3006,12 @@ _mesa_meta_CopyTexSubImage(struct gl_context *ctx, GLuint dims, GLint bpp; void *buf; + /* The gl_renderbuffer is part of the interface for + * dd_function_table::CopyTexSubImage, but this implementation does not use + * it. + */ + (void) rb; + /* Choose format/type for temporary image buffer */ format = _mesa_get_format_base_format(texImage->TexFormat); if (format == GL_LUMINANCE || @@ -4004,17 +3121,17 @@ decompress_texture_image(struct gl_context *ctx, const GLint depth = texImage->Height; const GLenum target = texObj->Target; GLenum faceTarget; - struct vertex { - GLfloat x, y, tex[3]; - }; struct vertex verts[4]; GLuint fboDrawSave, fboReadSave; GLuint rbSave; GLuint samplerSave; + const bool use_glsl_version = ctx->Extensions.ARB_vertex_shader && + ctx->Extensions.ARB_fragment_shader; if (slice > 0) { assert(target == GL_TEXTURE_3D || - target == GL_TEXTURE_2D_ARRAY); + target == GL_TEXTURE_2D_ARRAY || + target == GL_TEXTURE_CUBE_MAP_ARRAY); } switch (target) { @@ -4027,10 +3144,9 @@ decompress_texture_image(struct gl_context *ctx, assert(!"No compressed 3D textures."); return; - case GL_TEXTURE_2D_ARRAY: case GL_TEXTURE_CUBE_MAP_ARRAY: - /* These targets are just broken currently. */ - return; + faceTarget = GL_TEXTURE_CUBE_MAP_POSITIVE_X + (slice % 6); + break; case GL_TEXTURE_CUBE_MAP: faceTarget = GL_TEXTURE_CUBE_MAP_POSITIVE_X + texImage->Face; @@ -4075,27 +3191,13 @@ decompress_texture_image(struct gl_context *ctx, decompress->Height = height; } - /* setup VBO data */ - if (decompress->VAO == 0) { - /* create vertex array object */ - _mesa_GenVertexArrays(1, &decompress->VAO); - _mesa_BindVertexArray(decompress->VAO); - - /* create vertex array buffer */ - _mesa_GenBuffers(1, &decompress->VBO); - _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, decompress->VBO); - _mesa_BufferData(GL_ARRAY_BUFFER_ARB, sizeof(verts), - NULL, GL_DYNAMIC_DRAW_ARB); + if (use_glsl_version) { + _mesa_meta_setup_vertex_objects(&decompress->VAO, &decompress->VBO, true, + 2, 4, 0); - /* setup vertex arrays */ - _mesa_VertexPointer(2, GL_FLOAT, sizeof(struct vertex), OFFSET(x)); - _mesa_TexCoordPointer(3, GL_FLOAT, sizeof(struct vertex), OFFSET(tex)); - _mesa_EnableClientState(GL_VERTEX_ARRAY); - _mesa_EnableClientState(GL_TEXTURE_COORD_ARRAY); - } - else { - _mesa_BindVertexArray(decompress->VAO); - _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, decompress->VBO); + _mesa_meta_setup_blit_shader(ctx, target, &decompress->shaders); + } else { + _mesa_meta_setup_ff_tnl_for_blit(&decompress->VAO, &decompress->VBO, 3); } if (!decompress->Sampler) { @@ -4114,6 +3216,9 @@ decompress_texture_image(struct gl_context *ctx, _mesa_BindSampler(ctx->Texture.CurrentUnit, decompress->Sampler); } + /* Silence valgrind warnings about reading uninitialized stack. */ + memset(verts, 0, sizeof(verts)); + setup_texture_coords(faceTarget, slice, width, height, depth, verts[0].tex, verts[1].tex, @@ -4130,8 +3235,6 @@ decompress_texture_image(struct gl_context *ctx, verts[3].x = -1.0F; verts[3].y = 1.0F; - _mesa_MatrixMode(GL_PROJECTION); - _mesa_LoadIdentity(); _mesa_set_viewport(ctx, 0, 0, 0, width, height); /* upload new vertex data */ @@ -4139,7 +3242,9 @@ decompress_texture_image(struct gl_context *ctx, /* setup texture state */ _mesa_BindTexture(target, texObj->Name); - _mesa_set_enable(ctx, target, GL_TRUE); + + if (!use_glsl_version) + _mesa_set_enable(ctx, target, GL_TRUE); { /* save texture object state */ @@ -4199,7 +3304,8 @@ decompress_texture_image(struct gl_context *ctx, } /* disable texture unit */ - _mesa_set_enable(ctx, target, GL_FALSE); + if (!use_glsl_version) + _mesa_set_enable(ctx, target, GL_FALSE); _mesa_BindSampler(ctx->Texture.CurrentUnit, samplerSave); @@ -4231,8 +3337,7 @@ _mesa_meta_GetTexImage(struct gl_context *ctx, * unsigned, normalized values. We could handle signed and unnormalized * with floating point renderbuffers... */ - if (texImage->TexObject->Target != GL_TEXTURE_CUBE_MAP_ARRAY - && _mesa_is_format_compressed(texImage->TexFormat) && + if (_mesa_is_format_compressed(texImage->TexFormat) && _mesa_get_format_datatype(texImage->TexFormat) == GL_UNSIGNED_NORMALIZED) { struct gl_texture_object *texObj = texImage->TexObject; @@ -4241,7 +3346,8 @@ _mesa_meta_GetTexImage(struct gl_context *ctx, _mesa_unlock_texture(ctx, texObj); for (slice = 0; slice < texImage->Depth; slice++) { void *dst; - if (texImage->TexObject->Target == GL_TEXTURE_2D_ARRAY) { + if (texImage->TexObject->Target == GL_TEXTURE_2D_ARRAY + || texImage->TexObject->Target == GL_TEXTURE_CUBE_MAP_ARRAY) { /* Setup pixel packing. SkipPixels and SkipRows will be applied * in the decompress_texture_image() function's call to * glReadPixels but we need to compute the dest slice's address diff --git a/mesalib/src/mesa/drivers/common/meta.h b/mesalib/src/mesa/drivers/common/meta.h index 53d7b8ab5..fcf45c403 100644 --- a/mesalib/src/mesa/drivers/common/meta.h +++ b/mesalib/src/mesa/drivers/common/meta.h @@ -60,6 +60,311 @@ #define MESA_META_OCCLUSION_QUERY 0x400000 /**\}*/ +/** + * State which we may save/restore across meta ops. + * XXX this may be incomplete... + */ +struct save_state +{ + GLbitfield SavedState; /**< bitmask of MESA_META_* flags */ + + /* Always saved/restored with meta. */ + gl_api API; + + /** MESA_META_CLEAR (and others?) */ + struct gl_query_object *CurrentOcclusionObject; + + /** MESA_META_ALPHA_TEST */ + GLboolean AlphaEnabled; + GLenum AlphaFunc; + GLclampf AlphaRef; + + /** MESA_META_BLEND */ + GLbitfield BlendEnabled; + GLboolean ColorLogicOpEnabled; + + /** MESA_META_COLOR_MASK */ + GLubyte ColorMask[MAX_DRAW_BUFFERS][4]; + + /** MESA_META_DEPTH_TEST */ + struct gl_depthbuffer_attrib Depth; + + /** MESA_META_FOG */ + GLboolean Fog; + + /** MESA_META_PIXEL_STORE */ + struct gl_pixelstore_attrib Pack, Unpack; + + /** MESA_META_PIXEL_TRANSFER */ + GLfloat RedBias, RedScale; + GLfloat GreenBias, GreenScale; + GLfloat BlueBias, BlueScale; + GLfloat AlphaBias, AlphaScale; + GLfloat DepthBias, DepthScale; + GLboolean MapColorFlag; + + /** MESA_META_RASTERIZATION */ + GLenum FrontPolygonMode, BackPolygonMode; + GLboolean PolygonOffset; + GLboolean PolygonSmooth; + GLboolean PolygonStipple; + GLboolean PolygonCull; + + /** MESA_META_SCISSOR */ + struct gl_scissor_attrib Scissor; + + /** MESA_META_SHADER */ + GLboolean VertexProgramEnabled; + struct gl_vertex_program *VertexProgram; + GLboolean FragmentProgramEnabled; + struct gl_fragment_program *FragmentProgram; + GLboolean ATIFragmentShaderEnabled; + struct gl_shader_program *Shader[MESA_SHADER_STAGES]; + struct gl_shader_program *ActiveShader; + + /** MESA_META_STENCIL_TEST */ + struct gl_stencil_attrib Stencil; + + /** MESA_META_TRANSFORM */ + GLenum MatrixMode; + GLfloat ModelviewMatrix[16]; + GLfloat ProjectionMatrix[16]; + GLfloat TextureMatrix[16]; + + /** MESA_META_CLIP */ + GLbitfield ClipPlanesEnabled; + + /** MESA_META_TEXTURE */ + GLuint ActiveUnit; + GLuint ClientActiveUnit; + /** for unit[0] only */ + struct gl_texture_object *CurrentTexture[NUM_TEXTURE_TARGETS]; + /** mask of TEXTURE_2D_BIT, etc */ + GLbitfield TexEnabled[MAX_TEXTURE_UNITS]; + GLbitfield TexGenEnabled[MAX_TEXTURE_UNITS]; + GLuint EnvMode; /* unit[0] only */ + + /** MESA_META_VERTEX */ + struct gl_vertex_array_object *VAO; + struct gl_buffer_object *ArrayBufferObj; + + /** MESA_META_VIEWPORT */ + GLfloat ViewportX, ViewportY, ViewportW, ViewportH; + GLclampd DepthNear, DepthFar; + + /** MESA_META_CLAMP_FRAGMENT_COLOR */ + GLenum ClampFragmentColor; + + /** MESA_META_CLAMP_VERTEX_COLOR */ + GLenum ClampVertexColor; + + /** MESA_META_CONDITIONAL_RENDER */ + struct gl_query_object *CondRenderQuery; + GLenum CondRenderMode; + + /** MESA_META_SELECT_FEEDBACK */ + GLenum RenderMode; + struct gl_selection Select; + struct gl_feedback Feedback; + + /** MESA_META_MULTISAMPLE */ + struct gl_multisample_attrib Multisample; + + /** MESA_META_FRAMEBUFFER_SRGB */ + GLboolean sRGBEnabled; + + /** Miscellaneous (always disabled) */ + GLboolean Lighting; + GLboolean RasterDiscard; + GLboolean TransformFeedbackNeedsResume; +}; + +/** + * Temporary texture used for glBlitFramebuffer, glDrawPixels, etc. + * This is currently shared by all the meta ops. But we could create a + * separate one for each of glDrawPixel, glBlitFramebuffer, glCopyPixels, etc. + */ +struct temp_texture +{ + GLuint TexObj; + GLenum Target; /**< GL_TEXTURE_2D or GL_TEXTURE_RECTANGLE */ + GLsizei MinSize; /**< Min texture size to allocate */ + GLsizei MaxSize; /**< Max possible texture size */ + GLboolean NPOT; /**< Non-power of two size OK? */ + GLsizei Width, Height; /**< Current texture size */ + GLenum IntFormat; + GLfloat Sright, Ttop; /**< right, top texcoords */ +}; + +/** + * State for GLSL texture sampler which is used to generate fragment + * shader in _mesa_meta_generate_mipmap(). + */ +struct blit_shader { + const char *type; + const char *func; + const char *texcoords; + GLuint shader_prog; +}; + +/** + * Table of all sampler types and shaders for accessing them. + */ +struct blit_shader_table { + struct blit_shader sampler_1d; + struct blit_shader sampler_2d; + struct blit_shader sampler_3d; + struct blit_shader sampler_rect; + struct blit_shader sampler_cubemap; + struct blit_shader sampler_1d_array; + struct blit_shader sampler_2d_array; + struct blit_shader sampler_cubemap_array; +}; + +/** + * Indices in the blit_state->msaa_shaders[] array + * + * Note that setup_glsl_msaa_blit_shader() assumes that the _INT enums are one + * more than the non-_INT version and _UINT is one beyond that. + */ +enum blit_msaa_shader { + BLIT_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE, + BLIT_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE_INT, + BLIT_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE_UINT, + BLIT_MSAA_SHADER_2D_MULTISAMPLE_COPY, + BLIT_MSAA_SHADER_2D_MULTISAMPLE_COPY_INT, + BLIT_MSAA_SHADER_2D_MULTISAMPLE_COPY_UINT, + BLIT_MSAA_SHADER_2D_MULTISAMPLE_DEPTH_RESOLVE, + BLIT_MSAA_SHADER_2D_MULTISAMPLE_DEPTH_COPY, + BLIT_MSAA_SHADER_COUNT, +}; + +/** + * State for glBlitFramebufer() + */ +struct blit_state +{ + GLuint VAO; + GLuint VBO; + GLuint DepthFP; + struct blit_shader_table shaders; + GLuint msaa_shaders[BLIT_MSAA_SHADER_COUNT]; + struct temp_texture depthTex; +}; + + +/** + * State for glClear() + */ +struct clear_state +{ + GLuint VAO; + GLuint VBO; + GLuint ShaderProg; + GLint ColorLocation; + GLint LayerLocation; + + GLuint IntegerShaderProg; + GLint IntegerColorLocation; + GLint IntegerLayerLocation; +}; + + +/** + * State for glCopyPixels() + */ +struct copypix_state +{ + GLuint VAO; + GLuint VBO; +}; + + +/** + * State for glDrawPixels() + */ +struct drawpix_state +{ + GLuint VAO; + GLuint VBO; + + GLuint StencilFP; /**< Fragment program for drawing stencil images */ + GLuint DepthFP; /**< Fragment program for drawing depth images */ +}; + + +/** + * State for glBitmap() + */ +struct bitmap_state +{ + GLuint VAO; + GLuint VBO; + struct temp_texture Tex; /**< separate texture from other meta ops */ +}; + +/** + * State for _mesa_meta_generate_mipmap() + */ +struct gen_mipmap_state +{ + GLuint VAO; + GLuint VBO; + GLuint FBO; + GLuint Sampler; + + struct blit_shader_table shaders; +}; + +/** + * State for texture decompression + */ +struct decompress_state +{ + GLuint VAO; + GLuint VBO, FBO, RBO, Sampler; + GLint Width, Height; + + struct blit_shader_table shaders; +}; + +/** + * State for glDrawTex() + */ +struct drawtex_state +{ + GLuint VAO; + GLuint VBO; +}; + +#define MAX_META_OPS_DEPTH 8 +/** + * All per-context meta state. + */ +struct gl_meta_state +{ + /** Stack of state saved during meta-ops */ + struct save_state Save[MAX_META_OPS_DEPTH]; + /** Save stack depth */ + GLuint SaveStackDepth; + + struct temp_texture TempTex; + + struct blit_state Blit; /**< For _mesa_meta_BlitFramebuffer() */ + struct clear_state Clear; /**< For _mesa_meta_Clear() */ + struct copypix_state CopyPix; /**< For _mesa_meta_CopyPixels() */ + struct drawpix_state DrawPix; /**< For _mesa_meta_DrawPixels() */ + struct bitmap_state Bitmap; /**< For _mesa_meta_Bitmap() */ + struct gen_mipmap_state Mipmap; /**< For _mesa_meta_GenerateMipmap() */ + struct decompress_state Decompress; /**< For texture decompression */ + struct drawtex_state DrawTex; /**< For _mesa_meta_DrawTex() */ +}; + +struct vertex { + GLfloat x, y, z, tex[4]; + GLfloat r, g, b, a; +}; + extern void _mesa_meta_init(struct gl_context *ctx); @@ -130,4 +435,60 @@ extern void _mesa_meta_DrawTex(struct gl_context *ctx, GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height); +/* meta-internal functions */ +GLuint +_mesa_meta_compile_shader_with_debug(struct gl_context *ctx, GLenum target, + const GLcharARB *source); + + +GLuint +_mesa_meta_link_program_with_debug(struct gl_context *ctx, GLuint program); + +GLboolean +_mesa_meta_alloc_texture(struct temp_texture *tex, + GLsizei width, GLsizei height, GLenum intFormat); + +struct temp_texture * +_mesa_meta_get_temp_texture(struct gl_context *ctx); + +struct temp_texture * +_mesa_meta_get_temp_depth_texture(struct gl_context *ctx); + +void +_mesa_meta_setup_vertex_objects(GLuint *VAO, GLuint *VBO, + bool use_generic_attributes, + unsigned vertex_size, unsigned texcoord_size, + unsigned color_size); + +void +_mesa_meta_setup_ff_tnl_for_blit(GLuint *VAO, GLuint *VBO, + unsigned texcoord_size); + +void +_mesa_meta_setup_drawpix_texture(struct gl_context *ctx, + struct temp_texture *tex, + GLboolean newTex, + GLsizei width, GLsizei height, + GLenum format, GLenum type, + const GLvoid *pixels); + +void +_mesa_meta_setup_copypix_texture(struct gl_context *ctx, + struct temp_texture *tex, + GLint srcX, GLint srcY, + GLsizei width, GLsizei height, + GLenum intFormat, + GLenum filter); + +void +_mesa_meta_setup_blit_shader(struct gl_context *ctx, + GLenum target, + struct blit_shader_table *table); + +void +_mesa_meta_glsl_blit_cleanup(struct blit_state *blit); + +void +_mesa_meta_blit_shader_table_cleanup(struct blit_shader_table *table); + #endif /* META_H */ diff --git a/mesalib/src/mesa/drivers/common/meta_blit.c b/mesalib/src/mesa/drivers/common/meta_blit.c new file mode 100644 index 000000000..907c2cdf3 --- /dev/null +++ b/mesalib/src/mesa/drivers/common/meta_blit.c @@ -0,0 +1,825 @@ +/* + * Mesa 3-D graphics library + * + * Copyright (C) 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, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "main/glheader.h" +#include "main/mtypes.h" +#include "main/imports.h" +#include "main/arbprogram.h" +#include "main/arrayobj.h" +#include "main/blend.h" +#include "main/condrender.h" +#include "main/depth.h" +#include "main/enable.h" +#include "main/enums.h" +#include "main/fbobject.h" +#include "main/macros.h" +#include "main/matrix.h" +#include "main/multisample.h" +#include "main/objectlabel.h" +#include "main/readpix.h" +#include "main/shaderapi.h" +#include "main/texobj.h" +#include "main/texenv.h" +#include "main/teximage.h" +#include "main/texparam.h" +#include "main/varray.h" +#include "main/viewport.h" +#include "swrast/swrast.h" +#include "drivers/common/meta.h" +#include "../glsl/ralloc.h" + +/** Return offset in bytes of the field within a vertex struct */ +#define OFFSET(FIELD) ((void *) offsetof(struct vertex, FIELD)) + +/** + * One-time init for drawing depth pixels. + */ +static void +init_blit_depth_pixels(struct gl_context *ctx) +{ + static const char *program = + "!!ARBfp1.0\n" + "TEX result.depth, fragment.texcoord[0], texture[0], %s; \n" + "END \n"; + char program2[200]; + struct blit_state *blit = &ctx->Meta->Blit; + struct temp_texture *tex = _mesa_meta_get_temp_texture(ctx); + const char *texTarget; + + assert(blit->DepthFP == 0); + + /* replace %s with "RECT" or "2D" */ + assert(strlen(program) + 4 < sizeof(program2)); + if (tex->Target == GL_TEXTURE_RECTANGLE) + texTarget = "RECT"; + else + texTarget = "2D"; + _mesa_snprintf(program2, sizeof(program2), program, texTarget); + + _mesa_GenProgramsARB(1, &blit->DepthFP); + _mesa_BindProgramARB(GL_FRAGMENT_PROGRAM_ARB, blit->DepthFP); + _mesa_ProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, + strlen(program2), (const GLubyte *) program2); +} + +static void +setup_glsl_msaa_blit_shader(struct gl_context *ctx, + struct blit_state *blit, + struct gl_renderbuffer *src_rb, + GLenum target) +{ + const char *vs_source; + char *fs_source; + GLuint vs, fs; + void *mem_ctx; + enum blit_msaa_shader shader_index; + bool dst_is_msaa = false; + GLenum src_datatype; + const char *vec4_prefix; + char *name; + + if (src_rb) { + src_datatype = _mesa_get_format_datatype(src_rb->Format); + } else { + /* depth-or-color glCopyTexImage fallback path that passes a NULL rb and + * doesn't handle integer. + */ + src_datatype = GL_UNSIGNED_NORMALIZED; + } + + if (ctx->DrawBuffer->Visual.samples > 1) { + /* If you're calling meta_BlitFramebuffer with the destination + * multisampled, this is the only path that will work -- swrast and + * CopyTexImage won't work on it either. + */ + assert(ctx->Extensions.ARB_sample_shading); + + dst_is_msaa = true; + + /* We need shader invocation per sample, not per pixel */ + _mesa_set_enable(ctx, GL_MULTISAMPLE, GL_TRUE); + _mesa_set_enable(ctx, GL_SAMPLE_SHADING, GL_TRUE); + _mesa_MinSampleShading(1.0); + } + + switch (target) { + case GL_TEXTURE_2D_MULTISAMPLE: + if (src_rb->_BaseFormat == GL_DEPTH_COMPONENT || + src_rb->_BaseFormat == GL_DEPTH_STENCIL) { + if (dst_is_msaa) + shader_index = BLIT_MSAA_SHADER_2D_MULTISAMPLE_DEPTH_COPY; + else + shader_index = BLIT_MSAA_SHADER_2D_MULTISAMPLE_DEPTH_RESOLVE; + } else { + if (dst_is_msaa) + shader_index = BLIT_MSAA_SHADER_2D_MULTISAMPLE_COPY; + else + shader_index = BLIT_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE; + } + break; + default: + _mesa_problem(ctx, "Unkown texture target %s\n", + _mesa_lookup_enum_by_nr(target)); + shader_index = BLIT_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE; + } + + /* We rely on the enum being sorted this way. */ + STATIC_ASSERT(BLIT_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE_INT == + BLIT_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE + 1); + STATIC_ASSERT(BLIT_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE_UINT == + BLIT_MSAA_SHADER_2D_MULTISAMPLE_RESOLVE + 2); + if (src_datatype == GL_INT) { + shader_index++; + vec4_prefix = "i"; + } else if (src_datatype == GL_UNSIGNED_INT) { + shader_index += 2; + vec4_prefix = "u"; + } else { + vec4_prefix = ""; + } + + if (blit->msaa_shaders[shader_index]) { + _mesa_UseProgram(blit->msaa_shaders[shader_index]); + return; + } + + mem_ctx = ralloc_context(NULL); + + if (shader_index == BLIT_MSAA_SHADER_2D_MULTISAMPLE_DEPTH_RESOLVE || + shader_index == BLIT_MSAA_SHADER_2D_MULTISAMPLE_DEPTH_COPY) { + char *sample_index; + const char *arb_sample_shading_extension_string; + + if (dst_is_msaa) { + arb_sample_shading_extension_string = "#extension GL_ARB_sample_shading : enable"; + sample_index = "gl_SampleID"; + name = "depth MSAA copy"; + } else { + /* Don't need that extension, since we're drawing to a single-sampled + * destination. + */ + arb_sample_shading_extension_string = ""; + /* From the GL 4.3 spec: + * + * "If there is a multisample buffer (the value of SAMPLE_BUFFERS + * is one), then values are obtained from the depth samples in + * this buffer. It is recommended that the depth value of the + * centermost sample be used, though implementations may choose + * any function of the depth sample values at each pixel. + * + * We're slacking and instead of choosing centermost, we've got 0. + */ + sample_index = "0"; + name = "depth MSAA resolve"; + } + + vs_source = ralloc_asprintf(mem_ctx, + "#version 130\n" + "in vec2 position;\n" + "in vec2 textureCoords;\n" + "out vec2 texCoords;\n" + "void main()\n" + "{\n" + " texCoords = textureCoords;\n" + " gl_Position = vec4(position, 0.0, 1.0);\n" + "}\n"); + fs_source = ralloc_asprintf(mem_ctx, + "#version 130\n" + "#extension GL_ARB_texture_multisample : enable\n" + "%s\n" + "uniform sampler2DMS texSampler;\n" + "in vec2 texCoords;\n" + "out vec4 out_color;\n" + "\n" + "void main()\n" + "{\n" + " gl_FragDepth = texelFetch(texSampler, ivec2(texCoords), %s).r;\n" + "}\n", + arb_sample_shading_extension_string, + sample_index); + } else { + /* You can create 2D_MULTISAMPLE textures with 0 sample count (meaning 1 + * sample). Yes, this is ridiculous. + */ + int samples; + char *sample_resolve; + const char *arb_sample_shading_extension_string; + const char *merge_function; + name = ralloc_asprintf(mem_ctx, "%svec4 MSAA %s", + vec4_prefix, + dst_is_msaa ? "copy" : "resolve"); + + samples = MAX2(src_rb->NumSamples, 1); + + if (dst_is_msaa) { + arb_sample_shading_extension_string = "#extension GL_ARB_sample_shading : enable"; + sample_resolve = ralloc_asprintf(mem_ctx, " out_color = texelFetch(texSampler, ivec2(texCoords), gl_SampleID);"); + merge_function = ""; + } else { + int i; + int step; + + if (src_datatype == GL_INT || src_datatype == GL_UNSIGNED_INT) { + merge_function = + "gvec4 merge(gvec4 a, gvec4 b) { return (a >> gvec4(1)) + (b >> gvec4(1)) + (a & b & gvec4(1)); }\n"; + } else { + /* The divide will happen at the end for floats. */ + merge_function = + "vec4 merge(vec4 a, vec4 b) { return (a + b); }\n"; + } + + arb_sample_shading_extension_string = ""; + + /* We're assuming power of two samples for this resolution procedure. + * + * To avoid losing any floating point precision if the samples all + * happen to have the same value, we merge pairs of values at a time + * (so the floating point exponent just gets increased), rather than + * doing a naive sum and dividing. + */ + assert((samples & (samples - 1)) == 0); + /* Fetch each individual sample. */ + sample_resolve = rzalloc_size(mem_ctx, 1); + for (i = 0; i < samples; i++) { + ralloc_asprintf_append(&sample_resolve, + " gvec4 sample_1_%d = texelFetch(texSampler, ivec2(texCoords), %d);\n", + i, i); + } + /* Now, merge each pair of samples, then merge each pair of those, + * etc. + */ + for (step = 2; step <= samples; step *= 2) { + for (i = 0; i < samples; i += step) { + ralloc_asprintf_append(&sample_resolve, + " gvec4 sample_%d_%d = merge(sample_%d_%d, sample_%d_%d);\n", + step, i, + step / 2, i, + step / 2, i + step / 2); + } + } + + /* Scale the final result. */ + if (src_datatype == GL_UNSIGNED_INT || src_datatype == GL_INT) { + ralloc_asprintf_append(&sample_resolve, + " out_color = sample_%d_0;\n", + samples); + } else { + ralloc_asprintf_append(&sample_resolve, + " out_color = sample_%d_0 / %f;\n", + samples, (float)samples); + } + } + + vs_source = ralloc_asprintf(mem_ctx, + "#version 130\n" + "in vec2 position;\n" + "in vec2 textureCoords;\n" + "out vec2 texCoords;\n" + "void main()\n" + "{\n" + " texCoords = textureCoords;\n" + " gl_Position = vec4(position, 0.0, 1.0);\n" + "}\n"); + fs_source = ralloc_asprintf(mem_ctx, + "#version 130\n" + "#extension GL_ARB_texture_multisample : enable\n" + "%s\n" + "#define gvec4 %svec4\n" + "uniform %ssampler2DMS texSampler;\n" + "in vec2 texCoords;\n" + "out gvec4 out_color;\n" + "\n" + "%s" /* merge_function */ + "void main()\n" + "{\n" + "%s\n" /* sample_resolve */ + "}\n", + arb_sample_shading_extension_string, + vec4_prefix, + vec4_prefix, + merge_function, + sample_resolve); + } + + vs = _mesa_meta_compile_shader_with_debug(ctx, GL_VERTEX_SHADER, vs_source); + fs = _mesa_meta_compile_shader_with_debug(ctx, GL_FRAGMENT_SHADER, fs_source); + + blit->msaa_shaders[shader_index] = _mesa_CreateProgramObjectARB(); + _mesa_AttachShader(blit->msaa_shaders[shader_index], fs); + _mesa_DeleteObjectARB(fs); + _mesa_AttachShader(blit->msaa_shaders[shader_index], vs); + _mesa_DeleteObjectARB(vs); + _mesa_BindAttribLocation(blit->msaa_shaders[shader_index], 0, "position"); + _mesa_BindAttribLocation(blit->msaa_shaders[shader_index], 1, "texcoords"); + _mesa_meta_link_program_with_debug(ctx, blit->msaa_shaders[shader_index]); + _mesa_ObjectLabel(GL_PROGRAM, blit->msaa_shaders[shader_index], -1, name); + ralloc_free(mem_ctx); + + _mesa_UseProgram(blit->msaa_shaders[shader_index]); +} + +static void +setup_glsl_blit_framebuffer(struct gl_context *ctx, + struct blit_state *blit, + struct gl_renderbuffer *src_rb, + GLenum target) +{ + /* target = GL_TEXTURE_RECTANGLE is not supported in GLES 3.0 */ + assert(_mesa_is_desktop_gl(ctx) || target == GL_TEXTURE_2D); + + _mesa_meta_setup_vertex_objects(&blit->VAO, &blit->VBO, true, 2, 2, 0); + + if (target == GL_TEXTURE_2D_MULTISAMPLE) { + setup_glsl_msaa_blit_shader(ctx, blit, src_rb, target); + } else { + _mesa_meta_setup_blit_shader(ctx, target, &blit->shaders); + } +} + +/** + * Try to do a color or depth glBlitFramebuffer using texturing. + * + * We can do this when the src renderbuffer is actually a texture, or when the + * driver exposes BindRenderbufferTexImage(). + */ +static bool +blitframebuffer_texture(struct gl_context *ctx, + GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, + GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, + GLenum filter, GLint flipX, GLint flipY, + GLboolean glsl_version, GLboolean do_depth) +{ + const struct gl_framebuffer *readFb = ctx->ReadBuffer; + int att_index = do_depth ? BUFFER_DEPTH : readFb->_ColorReadBufferIndex; + const struct gl_renderbuffer_attachment *readAtt = + &readFb->Attachment[att_index]; + struct blit_state *blit = &ctx->Meta->Blit; + const GLint dstX = MIN2(dstX0, dstX1); + const GLint dstY = MIN2(dstY0, dstY1); + const GLint dstW = abs(dstX1 - dstX0); + const GLint dstH = abs(dstY1 - dstY0); + struct gl_texture_object *texObj; + GLuint srcLevel; + GLint baseLevelSave; + GLint maxLevelSave; + GLenum target; + GLuint sampler, samplerSave = + ctx->Texture.Unit[ctx->Texture.CurrentUnit].Sampler ? + ctx->Texture.Unit[ctx->Texture.CurrentUnit].Sampler->Name : 0; + GLuint tempTex = 0; + struct gl_renderbuffer *rb = readAtt->Renderbuffer; + + if (rb->NumSamples && !ctx->Extensions.ARB_texture_multisample) + return false; + + if (filter == GL_SCALED_RESOLVE_FASTEST_EXT || + filter == GL_SCALED_RESOLVE_NICEST_EXT) { + filter = GL_LINEAR; + } + + if (readAtt->Texture) { + /* If there's a texture attached of a type we can handle, then just use + * it directly. + */ + srcLevel = readAtt->TextureLevel; + texObj = readAtt->Texture; + target = texObj->Target; + + switch (target) { + case GL_TEXTURE_2D: + case GL_TEXTURE_RECTANGLE: + case GL_TEXTURE_2D_MULTISAMPLE: + break; + default: + return false; + } + } else if (ctx->Driver.BindRenderbufferTexImage) { + /* Otherwise, we need the driver to be able to bind a renderbuffer as + * a texture image. + */ + struct gl_texture_image *texImage; + + if (rb->NumSamples > 1) + target = GL_TEXTURE_2D_MULTISAMPLE; + else + target = GL_TEXTURE_2D; + + _mesa_GenTextures(1, &tempTex); + _mesa_BindTexture(target, tempTex); + srcLevel = 0; + texObj = _mesa_lookup_texture(ctx, tempTex); + texImage = _mesa_get_tex_image(ctx, texObj, target, srcLevel); + + if (!ctx->Driver.BindRenderbufferTexImage(ctx, rb, texImage)) { + _mesa_DeleteTextures(1, &tempTex); + return false; + } else { + if (ctx->Driver.FinishRenderTexture && + !rb->NeedsFinishRenderTexture) { + rb->NeedsFinishRenderTexture = true; + ctx->Driver.FinishRenderTexture(ctx, rb); + } + + if (_mesa_is_winsys_fbo(readFb)) { + GLint temp = srcY0; + srcY0 = rb->Height - srcY1; + srcY1 = rb->Height - temp; + flipY = -flipY; + } + } + } else { + return false; + } + + baseLevelSave = texObj->BaseLevel; + maxLevelSave = texObj->MaxLevel; + + if (glsl_version) { + setup_glsl_blit_framebuffer(ctx, blit, rb, target); + } + else { + _mesa_meta_setup_ff_tnl_for_blit(&ctx->Meta->Blit.VAO, + &ctx->Meta->Blit.VBO, + 2); + } + + _mesa_GenSamplers(1, &sampler); + _mesa_BindSampler(ctx->Texture.CurrentUnit, sampler); + + /* + printf("Blit from texture!\n"); + printf(" srcAtt %p dstAtt %p\n", readAtt, drawAtt); + printf(" srcTex %p dstText %p\n", texObj, drawAtt->Texture); + */ + + /* Prepare src texture state */ + _mesa_BindTexture(target, texObj->Name); + _mesa_SamplerParameteri(sampler, GL_TEXTURE_MIN_FILTER, filter); + _mesa_SamplerParameteri(sampler, GL_TEXTURE_MAG_FILTER, filter); + if (target != GL_TEXTURE_RECTANGLE_ARB) { + _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, srcLevel); + _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, srcLevel); + } + _mesa_SamplerParameteri(sampler, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + _mesa_SamplerParameteri(sampler, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + + /* Always do our blits with no net sRGB decode or encode. + * + * However, if both the src and dst can be srgb decode/encoded, enable them + * so that we do any blending (from scaling or from MSAA resolves) in the + * right colorspace. + * + * Our choice of not doing any net encode/decode is from the GL 3.0 + * specification: + * + * "Blit operations bypass the fragment pipeline. The only fragment + * operations which affect a blit are the pixel ownership test and the + * scissor test." + * + * The GL 4.4 specification disagrees and says that the sRGB part of the + * fragment pipeline applies, but this was found to break applications. + */ + if (ctx->Extensions.EXT_texture_sRGB_decode) { + if (_mesa_get_format_color_encoding(rb->Format) == GL_SRGB && + ctx->DrawBuffer->Visual.sRGBCapable) { + _mesa_SamplerParameteri(sampler, GL_TEXTURE_SRGB_DECODE_EXT, + GL_DECODE_EXT); + _mesa_set_framebuffer_srgb(ctx, GL_TRUE); + } else { + _mesa_SamplerParameteri(sampler, GL_TEXTURE_SRGB_DECODE_EXT, + GL_SKIP_DECODE_EXT); + /* set_framebuffer_srgb was set by _mesa_meta_begin(). */ + } + } + + if (!glsl_version) { + _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + _mesa_set_enable(ctx, target, GL_TRUE); + } + + /* Prepare vertex data (the VBO was previously created and bound) */ + { + struct vertex verts[4]; + GLfloat s0, t0, s1, t1; + + if (target == GL_TEXTURE_2D) { + const struct gl_texture_image *texImage + = _mesa_select_tex_image(ctx, texObj, target, srcLevel); + s0 = srcX0 / (float) texImage->Width; + s1 = srcX1 / (float) texImage->Width; + t0 = srcY0 / (float) texImage->Height; + t1 = srcY1 / (float) texImage->Height; + } + else { + assert(target == GL_TEXTURE_RECTANGLE_ARB || + target == GL_TEXTURE_2D_MULTISAMPLE); + s0 = (float) srcX0; + s1 = (float) srcX1; + t0 = (float) srcY0; + t1 = (float) srcY1; + } + + /* Silence valgrind warnings about reading uninitialized stack. */ + memset(verts, 0, sizeof(verts)); + + /* setup vertex positions */ + verts[0].x = -1.0F * flipX; + verts[0].y = -1.0F * flipY; + verts[1].x = 1.0F * flipX; + verts[1].y = -1.0F * flipY; + verts[2].x = 1.0F * flipX; + verts[2].y = 1.0F * flipY; + verts[3].x = -1.0F * flipX; + verts[3].y = 1.0F * flipY; + + verts[0].tex[0] = s0; + verts[0].tex[1] = t0; + verts[1].tex[0] = s1; + verts[1].tex[1] = t0; + verts[2].tex[0] = s1; + verts[2].tex[1] = t1; + verts[3].tex[0] = s0; + verts[3].tex[1] = t1; + + _mesa_BufferSubData(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts); + } + + /* setup viewport */ + _mesa_set_viewport(ctx, 0, dstX, dstY, dstW, dstH); + _mesa_ColorMask(!do_depth, !do_depth, !do_depth, !do_depth); + _mesa_set_enable(ctx, GL_DEPTH_TEST, do_depth); + _mesa_DepthMask(do_depth); + _mesa_DepthFunc(GL_ALWAYS); + + _mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4); + + /* Restore texture object state, the texture binding will + * be restored by _mesa_meta_end(). + */ + if (target != GL_TEXTURE_RECTANGLE_ARB) { + _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, baseLevelSave); + _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, maxLevelSave); + } + + _mesa_BindSampler(ctx->Texture.CurrentUnit, samplerSave); + _mesa_DeleteSamplers(1, &sampler); + if (tempTex) + _mesa_DeleteTextures(1, &tempTex); + + return true; +} + +/** + * Meta implementation of ctx->Driver.BlitFramebuffer() in terms + * of texture mapping and polygon rendering. + */ +void +_mesa_meta_BlitFramebuffer(struct gl_context *ctx, + GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, + GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, + GLbitfield mask, GLenum filter) +{ + struct blit_state *blit = &ctx->Meta->Blit; + struct temp_texture *tex = _mesa_meta_get_temp_texture(ctx); + struct temp_texture *depthTex = _mesa_meta_get_temp_depth_texture(ctx); + const GLsizei maxTexSize = tex->MaxSize; + const GLint srcX = MIN2(srcX0, srcX1); + const GLint srcY = MIN2(srcY0, srcY1); + const GLint srcW = abs(srcX1 - srcX0); + const GLint srcH = abs(srcY1 - srcY0); + const GLint dstX = MIN2(dstX0, dstX1); + const GLint dstY = MIN2(dstY0, dstY1); + const GLint dstW = abs(dstX1 - dstX0); + const GLint dstH = abs(dstY1 - dstY0); + const GLint srcFlipX = (srcX1 - srcX0) / srcW; + const GLint srcFlipY = (srcY1 - srcY0) / srcH; + const GLint dstFlipX = (dstX1 - dstX0) / dstW; + const GLint dstFlipY = (dstY1 - dstY0) / dstH; + const GLint flipX = srcFlipX * dstFlipX; + const GLint flipY = srcFlipY * dstFlipY; + + struct vertex verts[4]; + GLboolean newTex; + const GLboolean use_glsl_version = ctx->Extensions.ARB_vertex_shader && + ctx->Extensions.ARB_fragment_shader; + + /* In addition to falling back if the blit size is larger than the maximum + * texture size, fallback if the source is multisampled. This fallback can + * be removed once Mesa gets support ARB_texture_multisample. + */ + if (srcW > maxTexSize || srcH > maxTexSize) { + /* XXX avoid this fallback */ + goto fallback; + } + + /* Multisample texture blit support requires texture multisample. */ + if (ctx->ReadBuffer->Visual.samples > 0 && + !ctx->Extensions.ARB_texture_multisample) { + goto fallback; + } + + /* only scissor effects blit so save/clear all other relevant state */ + _mesa_meta_begin(ctx, ~MESA_META_SCISSOR); + + /* Try faster, direct texture approach first */ + if (mask & GL_COLOR_BUFFER_BIT) { + if (blitframebuffer_texture(ctx, srcX0, srcY0, srcX1, srcY1, + dstX0, dstY0, dstX1, dstY1, + filter, dstFlipX, dstFlipY, + use_glsl_version, false)) { + mask &= ~GL_COLOR_BUFFER_BIT; + if (mask == 0x0) { + _mesa_meta_end(ctx); + return; + } + } + } + + if (mask & GL_DEPTH_BUFFER_BIT && use_glsl_version) { + if (blitframebuffer_texture(ctx, srcX0, srcY0, srcX1, srcY1, + dstX0, dstY0, dstX1, dstY1, + filter, dstFlipX, dstFlipY, + use_glsl_version, true)) { + mask &= ~GL_DEPTH_BUFFER_BIT; + if (mask == 0x0) { + _mesa_meta_end(ctx); + return; + } + } + } + + /* Choose between glsl version and fixed function version of + * BlitFramebuffer function. + */ + if (use_glsl_version) { + setup_glsl_blit_framebuffer(ctx, blit, NULL, tex->Target); + } + else { + _mesa_meta_setup_ff_tnl_for_blit(&blit->VAO, &blit->VBO, 2); + } + + /* Silence valgrind warnings about reading uninitialized stack. */ + memset(verts, 0, sizeof(verts)); + + /* Continue with "normal" approach which involves copying the src rect + * into a temporary texture and is "blitted" by drawing a textured quad. + */ + { + /* setup vertex positions */ + verts[0].x = -1.0F * flipX; + verts[0].y = -1.0F * flipY; + verts[1].x = 1.0F * flipX; + verts[1].y = -1.0F * flipY; + verts[2].x = 1.0F * flipX; + verts[2].y = 1.0F * flipY; + verts[3].x = -1.0F * flipX; + verts[3].y = 1.0F * flipY; + + } + + if (!use_glsl_version) + _mesa_set_enable(ctx, tex->Target, GL_TRUE); + + if (mask & GL_COLOR_BUFFER_BIT) { + const struct gl_framebuffer *readFb = ctx->ReadBuffer; + const struct gl_renderbuffer *colorReadRb = readFb->_ColorReadBuffer; + const GLenum rb_base_format = + _mesa_base_tex_format(ctx, colorReadRb->InternalFormat); + + /* Using the exact source rectangle to create the texture does incorrect + * linear filtering along the edges. So, allocate the texture extended along + * edges by one pixel in x, y directions. + */ + _mesa_meta_setup_copypix_texture(ctx, tex, + srcX - 1, srcY - 1, srcW + 2, srcH + 2, + rb_base_format, filter); + /* texcoords (after texture allocation!) */ + { + verts[0].tex[0] = 1.0F; + verts[0].tex[1] = 1.0F; + verts[1].tex[0] = tex->Sright - 1.0F; + verts[1].tex[1] = 1.0F; + verts[2].tex[0] = tex->Sright - 1.0F; + verts[2].tex[1] = tex->Ttop - 1.0F; + verts[3].tex[0] = 1.0F; + verts[3].tex[1] = tex->Ttop - 1.0F; + + /* upload new vertex data */ + _mesa_BufferSubData(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts); + } + + _mesa_set_viewport(ctx, 0, dstX, dstY, dstW, dstH); + _mesa_ColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); + _mesa_set_enable(ctx, GL_DEPTH_TEST, GL_FALSE); + _mesa_DepthMask(GL_FALSE); + _mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4); + mask &= ~GL_COLOR_BUFFER_BIT; + } + + if ((mask & GL_DEPTH_BUFFER_BIT) && + _mesa_is_desktop_gl(ctx) && + ctx->Extensions.ARB_depth_texture && + ctx->Extensions.ARB_fragment_program) { + + GLuint *tmp = malloc(srcW * srcH * sizeof(GLuint)); + + if (tmp) { + + newTex = _mesa_meta_alloc_texture(depthTex, srcW, srcH, + GL_DEPTH_COMPONENT); + _mesa_ReadPixels(srcX, srcY, srcW, srcH, GL_DEPTH_COMPONENT, + GL_UNSIGNED_INT, tmp); + _mesa_meta_setup_drawpix_texture(ctx, depthTex, newTex, + srcW, srcH, GL_DEPTH_COMPONENT, + GL_UNSIGNED_INT, tmp); + + /* texcoords (after texture allocation!) */ + { + verts[0].tex[0] = 0.0F; + verts[0].tex[1] = 0.0F; + verts[1].tex[0] = depthTex->Sright; + verts[1].tex[1] = 0.0F; + verts[2].tex[0] = depthTex->Sright; + verts[2].tex[1] = depthTex->Ttop; + verts[3].tex[0] = 0.0F; + verts[3].tex[1] = depthTex->Ttop; + + /* upload new vertex data */ + _mesa_BufferSubData(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts); + } + + if (!blit->DepthFP) + init_blit_depth_pixels(ctx); + + _mesa_BindProgramARB(GL_FRAGMENT_PROGRAM_ARB, blit->DepthFP); + _mesa_set_enable(ctx, GL_FRAGMENT_PROGRAM_ARB, GL_TRUE); + _mesa_ColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); + _mesa_set_enable(ctx, GL_DEPTH_TEST, GL_TRUE); + _mesa_DepthFunc(GL_ALWAYS); + _mesa_DepthMask(GL_TRUE); + + _mesa_set_viewport(ctx, 0, dstX, dstY, dstW, dstH); + _mesa_BufferSubData(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts); + _mesa_DrawArrays(GL_TRIANGLE_FAN, 0, 4); + mask &= ~GL_DEPTH_BUFFER_BIT; + + free(tmp); + } + } + + if (mask & GL_STENCIL_BUFFER_BIT) { + /* XXX can't easily do stencil */ + } + + if (!use_glsl_version) + _mesa_set_enable(ctx, tex->Target, GL_FALSE); + + _mesa_meta_end(ctx); + +fallback: + if (mask) { + _swrast_BlitFramebuffer(ctx, srcX0, srcY0, srcX1, srcY1, + dstX0, dstY0, dstX1, dstY1, mask, filter); + } +} + +void +_mesa_meta_glsl_blit_cleanup(struct blit_state *blit) +{ + if (blit->VAO) { + _mesa_DeleteVertexArrays(1, &blit->VAO); + blit->VAO = 0; + _mesa_DeleteBuffers(1, &blit->VBO); + blit->VBO = 0; + } + if (blit->DepthFP) { + _mesa_DeleteProgramsARB(1, &blit->DepthFP); + blit->DepthFP = 0; + } + + _mesa_meta_blit_shader_table_cleanup(&blit->shaders); + + _mesa_DeleteTextures(1, &blit->depthTex.TexObj); + blit->depthTex.TexObj = 0; +} diff --git a/mesalib/src/mesa/drivers/dri/common/dri_util.c b/mesalib/src/mesa/drivers/dri/common/dri_util.c index 22c0848c8..78cfcf536 100644 --- a/mesalib/src/mesa/drivers/dri/common/dri_util.c +++ b/mesalib/src/mesa/drivers/dri/common/dri_util.c @@ -49,6 +49,7 @@ #include "../glsl/glsl_parser_extras.h" #include "main/mtypes.h" #include "main/version.h" +#include "main/errors.h" #include "main/macros.h" PUBLIC const char __dri2ConfigOptions[] = @@ -452,8 +453,11 @@ driContextSetFlags(struct gl_context *ctx, uint32_t flags) if ((flags & __DRI_CTX_FLAG_FORWARD_COMPATIBLE) != 0) ctx->Const.ContextFlags |= GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT; if ((flags & __DRI_CTX_FLAG_DEBUG) != 0) { + struct gl_debug_state *debug = _mesa_get_debug_state(ctx); + if (debug) { + debug->DebugOutput = GL_TRUE; + } ctx->Const.ContextFlags |= GL_CONTEXT_FLAG_DEBUG_BIT; - ctx->Debug.DebugOutput = GL_TRUE; } } @@ -768,12 +772,13 @@ const __DRIdri2Extension driDRI2Extension = { }; const __DRIswrastExtension driSWRastExtension = { - { __DRI_SWRAST, 4 }, - driSWRastCreateNewScreen, - driCreateNewDrawable, - driCreateNewContextForAPI, - driCreateContextAttribs, - driSWRastCreateNewScreen2, + .base = { __DRI_SWRAST, 4 }, + + .createNewScreen = driSWRastCreateNewScreen, + .createNewDrawable = driCreateNewDrawable, + .createNewContextForAPI = driCreateNewContextForAPI, + .createContextAttribs = driCreateContextAttribs, + .createNewScreen2 = driSWRastCreateNewScreen2, }; const __DRI2configQueryExtension dri2ConfigQueryExtension = { @@ -873,7 +878,7 @@ driImageFormatToGLFormat(uint32_t image_format) /** Image driver interface */ const __DRIimageDriverExtension driImageDriverExtension = { - /*.base = */{ __DRI_IMAGE_DRIVER, __DRI_IMAGE_DRIVER_VERSION }, + /*.base =*/ { __DRI_IMAGE_DRIVER, 1 }, /*.createNewScreen2 =*/ driCreateNewScreen2, /*.createNewDrawable =*/ driCreateNewDrawable, @@ -892,6 +897,7 @@ static void driCopySubBuffer(__DRIdrawable *pdp, int x, int y, /* for swrast only */ const __DRIcopySubBufferExtension driCopySubBufferExtension = { - { __DRI_COPY_SUB_BUFFER, 1 }, - /*.copySubBuffer =*/ driCopySubBuffer, + /*.base =*/ { __DRI_COPY_SUB_BUFFER, 1 }, + + /*.copySubBuffer =*/ driCopySubBuffer, }; diff --git a/mesalib/src/mesa/main/api_arrayelt.c b/mesalib/src/mesa/main/api_arrayelt.c index 29a57c8e5..05cbc0f1f 100644 --- a/mesalib/src/mesa/main/api_arrayelt.c +++ b/mesalib/src/mesa/main/api_arrayelt.c @@ -1458,7 +1458,8 @@ _ae_destroy_context(struct gl_context *ctx) static void check_vbo(AEcontext *actx, struct gl_buffer_object *vbo) { - if (_mesa_is_bufferobj(vbo) && !_mesa_bufferobj_mapped(vbo)) { + if (_mesa_is_bufferobj(vbo) && + !_mesa_bufferobj_mapped(vbo, MAP_INTERNAL)) { GLuint i; for (i = 0; i < actx->nr_vbos; i++) if (actx->vbo[i] == vbo) @@ -1633,7 +1634,8 @@ _ae_map_vbos(struct gl_context *ctx) ctx->Driver.MapBufferRange(ctx, 0, actx->vbo[i]->Size, GL_MAP_READ_BIT, - actx->vbo[i]); + actx->vbo[i], + MAP_INTERNAL); if (actx->nr_vbos) actx->mapped_vbos = GL_TRUE; @@ -1655,7 +1657,7 @@ _ae_unmap_vbos(struct gl_context *ctx) assert (!actx->NewState); for (i = 0; i < actx->nr_vbos; i++) - ctx->Driver.UnmapBuffer(ctx, actx->vbo[i]); + ctx->Driver.UnmapBuffer(ctx, actx->vbo[i], MAP_INTERNAL); actx->mapped_vbos = GL_FALSE; } @@ -1701,7 +1703,8 @@ _ae_ArrayElement(GLint elt) /* emit generic attribute elements */ for (at = actx->attribs; at->func; at++) { const GLubyte *src - = ADD_POINTERS(at->array->BufferObj->Pointer, at->array->Ptr) + = ADD_POINTERS(at->array->BufferObj->Mappings[MAP_INTERNAL].Pointer, + at->array->Ptr) + elt * at->array->StrideB; at->func(at->index, src); } @@ -1709,7 +1712,8 @@ _ae_ArrayElement(GLint elt) /* emit conventional arrays elements */ for (aa = actx->arrays; aa->offset != -1 ; aa++) { const GLubyte *src - = ADD_POINTERS(aa->array->BufferObj->Pointer, aa->array->Ptr) + = ADD_POINTERS(aa->array->BufferObj->Mappings[MAP_INTERNAL].Pointer, + aa->array->Ptr) + elt * aa->array->StrideB; CALL_by_offset(disp, (array_func), aa->offset, ((const void *) src)); } diff --git a/mesalib/src/mesa/main/api_loopback.c b/mesalib/src/mesa/main/api_loopback.c index 8a04174c7..d10ae15ea 100644 --- a/mesalib/src/mesa/main/api_loopback.c +++ b/mesalib/src/mesa/main/api_loopback.c @@ -34,7 +34,6 @@ #include "api_loopback.h" #include "mtypes.h" #include "glapi/glapi.h" -#include "glapi/glthread.h" #include "main/dispatch.h" #include "main/context.h" diff --git a/mesalib/src/mesa/main/api_loopback.h b/mesalib/src/mesa/main/api_loopback.h index 0b014ad5a..2195e01e3 100644 --- a/mesalib/src/mesa/main/api_loopback.h +++ b/mesalib/src/mesa/main/api_loopback.h @@ -32,7 +32,6 @@ #include "main/macros.h" // ? #include "main/mtypes.h" // ? #include "glapi/glapi.h" // ? -#include "glapi/glthread.h" // ? #include "main/dispatch.h" // ? #include "main/context.h" // ? diff --git a/mesalib/src/mesa/main/api_validate.c b/mesalib/src/mesa/main/api_validate.c index af469e046..f3fd1a475 100644 --- a/mesalib/src/mesa/main/api_validate.c +++ b/mesalib/src/mesa/main/api_validate.c @@ -69,7 +69,8 @@ _mesa_max_buffer_index(struct gl_context *ctx, GLuint count, GLenum type, if (_mesa_is_bufferobj(elementBuf)) { /* elements are in a user-defined buffer object. need to map it */ map = ctx->Driver.MapBufferRange(ctx, 0, elementBuf->Size, - GL_MAP_READ_BIT, elementBuf); + GL_MAP_READ_BIT, elementBuf, + MAP_INTERNAL); /* Actual address is the sum of pointers */ indices = (const GLvoid *) ADD_POINTERS(map, (const GLubyte *) indices); } @@ -92,7 +93,7 @@ _mesa_max_buffer_index(struct gl_context *ctx, GLuint count, GLenum type, } if (map) { - ctx->Driver.UnmapBuffer(ctx, elementBuf); + ctx->Driver.UnmapBuffer(ctx, elementBuf, MAP_INTERNAL); } return max; @@ -865,7 +866,7 @@ valid_draw_indirect(struct gl_context *ctx, return GL_FALSE; } - if (_mesa_bufferobj_mapped(ctx->DrawIndirectBuffer)) { + if (_mesa_check_disallowed_mapping(ctx->DrawIndirectBuffer)) { _mesa_error(ctx, GL_INVALID_OPERATION, "%s(DRAW_INDIRECT_BUFFER is mapped)", name); return GL_FALSE; diff --git a/mesalib/src/mesa/main/arrayobj.c b/mesalib/src/mesa/main/arrayobj.c index b33ba8016..efb993012 100644 --- a/mesalib/src/mesa/main/arrayobj.c +++ b/mesalib/src/mesa/main/arrayobj.c @@ -119,7 +119,7 @@ _mesa_delete_vao(struct gl_context *ctx, struct gl_vertex_array_object *obj) { unbind_array_object_vbos(ctx, obj); _mesa_reference_buffer_object(ctx, &obj->IndexBufferObj, NULL); - _glthread_DESTROY_MUTEX(obj->Mutex); + mtx_destroy(&obj->Mutex); free(obj->Label); free(obj); } @@ -142,7 +142,7 @@ _mesa_reference_vao_(struct gl_context *ctx, GLboolean deleteFlag = GL_FALSE; struct gl_vertex_array_object *oldObj = *ptr; - _glthread_LOCK_MUTEX(oldObj->Mutex); + mtx_lock(&oldObj->Mutex); ASSERT(oldObj->RefCount > 0); oldObj->RefCount--; #if 0 @@ -150,7 +150,7 @@ _mesa_reference_vao_(struct gl_context *ctx, (void *) oldObj, oldObj->Name, oldObj->RefCount); #endif deleteFlag = (oldObj->RefCount == 0); - _glthread_UNLOCK_MUTEX(oldObj->Mutex); + mtx_unlock(&oldObj->Mutex); if (deleteFlag) { ASSERT(ctx->Driver.DeleteArrayObject); @@ -163,7 +163,7 @@ _mesa_reference_vao_(struct gl_context *ctx, if (vao) { /* reference new array object */ - _glthread_LOCK_MUTEX(vao->Mutex); + mtx_lock(&vao->Mutex); if (vao->RefCount == 0) { /* this array's being deleted (look just above) */ /* Not sure this can every really happen. Warn if it does. */ @@ -178,7 +178,7 @@ _mesa_reference_vao_(struct gl_context *ctx, #endif *ptr = vao; } - _glthread_UNLOCK_MUTEX(vao->Mutex); + mtx_unlock(&vao->Mutex); } } @@ -226,7 +226,7 @@ _mesa_initialize_vao(struct gl_context *ctx, obj->Name = name; - _glthread_INIT_MUTEX(obj->Mutex); + mtx_init(&obj->Mutex, mtx_plain); obj->RefCount = 1; /* Init the individual arrays */ diff --git a/mesalib/src/mesa/main/attrib.c b/mesalib/src/mesa/main/attrib.c index 004528044..5a626f2f4 100644 --- a/mesalib/src/mesa/main/attrib.c +++ b/mesalib/src/mesa/main/attrib.c @@ -1457,6 +1457,7 @@ copy_array_object(struct gl_context *ctx, /* _Enabled must be the same than on push */ dest->_Enabled = src->_Enabled; + dest->NewArrays = src->NewArrays; dest->_MaxElement = src->_MaxElement; } diff --git a/mesalib/src/mesa/main/bufferobj.c b/mesalib/src/mesa/main/bufferobj.c index 966e61c4c..c4417c922 100644 --- a/mesalib/src/mesa/main/bufferobj.c +++ b/mesalib/src/mesa/main/bufferobj.c @@ -207,11 +207,12 @@ static bool bufferobj_range_mapped(const struct gl_buffer_object *obj, GLintptr offset, GLsizeiptr size) { - if (_mesa_bufferobj_mapped(obj)) { + if (_mesa_bufferobj_mapped(obj, MAP_USER)) { const GLintptr end = offset + size; - const GLintptr mapEnd = obj->Offset + obj->Length; + const GLintptr mapEnd = obj->Mappings[MAP_USER].Offset + + obj->Mappings[MAP_USER].Length; - if (!(end <= obj->Offset || offset >= mapEnd)) { + if (!(end <= obj->Mappings[MAP_USER].Offset || offset >= mapEnd)) { return true; } } @@ -269,6 +270,9 @@ buffer_object_subdata_range_good(struct gl_context * ctx, GLenum target, return NULL; } + if (bufObj->Mappings[MAP_USER].AccessFlags & GL_MAP_PERSISTENT_BIT) + return bufObj; + if (mappedRange) { if (bufferobj_range_mapped(bufObj, offset, size)) { _mesa_error(ctx, GL_INVALID_OPERATION, "%s", caller); @@ -276,7 +280,7 @@ buffer_object_subdata_range_good(struct gl_context * ctx, GLenum target, } } else { - if (_mesa_bufferobj_mapped(bufObj)) { + if (_mesa_bufferobj_mapped(bufObj, MAP_USER)) { _mesa_error(ctx, GL_INVALID_OPERATION, "%s", caller); return NULL; } @@ -413,7 +417,7 @@ _mesa_delete_buffer_object(struct gl_context *ctx, bufObj->RefCount = -1000; bufObj->Name = ~0; - _glthread_DESTROY_MUTEX(bufObj->Mutex); + mtx_destroy(&bufObj->Mutex); free(bufObj->Label); free(bufObj); } @@ -435,7 +439,7 @@ _mesa_reference_buffer_object_(struct gl_context *ctx, GLboolean deleteFlag = GL_FALSE; struct gl_buffer_object *oldObj = *ptr; - _glthread_LOCK_MUTEX(oldObj->Mutex); + mtx_lock(&oldObj->Mutex); ASSERT(oldObj->RefCount > 0); oldObj->RefCount--; #if 0 @@ -443,7 +447,7 @@ _mesa_reference_buffer_object_(struct gl_context *ctx, (void *) oldObj, oldObj->Name, oldObj->RefCount); #endif deleteFlag = (oldObj->RefCount == 0); - _glthread_UNLOCK_MUTEX(oldObj->Mutex); + mtx_unlock(&oldObj->Mutex); if (deleteFlag) { @@ -465,7 +469,7 @@ _mesa_reference_buffer_object_(struct gl_context *ctx, if (bufObj) { /* reference new buffer */ - _glthread_LOCK_MUTEX(bufObj->Mutex); + mtx_lock(&bufObj->Mutex); if (bufObj->RefCount == 0) { /* this buffer's being deleted (look just above) */ /* Not sure this can every really happen. Warn if it does. */ @@ -480,7 +484,7 @@ _mesa_reference_buffer_object_(struct gl_context *ctx, #endif *ptr = bufObj; } - _glthread_UNLOCK_MUTEX(bufObj->Mutex); + mtx_unlock(&bufObj->Mutex); } } @@ -496,11 +500,10 @@ _mesa_initialize_buffer_object( struct gl_context *ctx, (void) target; memset(obj, 0, sizeof(struct gl_buffer_object)); - _glthread_INIT_MUTEX(obj->Mutex); + mtx_init(&obj->Mutex, mtx_plain); obj->RefCount = 1; obj->Name = name; obj->Usage = GL_STATIC_DRAW_ARB; - obj->AccessFlags = 0; } @@ -555,21 +558,21 @@ _mesa_total_buffer_object_memory(struct gl_context *ctx) */ GLboolean _mesa_buffer_data( struct gl_context *ctx, GLenum target, GLsizeiptrARB size, - const GLvoid * data, GLenum usage, + const GLvoid * data, GLenum usage, GLenum storageFlags, struct gl_buffer_object * bufObj ) { void * new_data; (void) target; - if (bufObj->Data) - _mesa_align_free( bufObj->Data ); + _mesa_align_free( bufObj->Data ); new_data = _mesa_align_malloc( size, ctx->Const.MinMapBufferAlignment ); if (new_data) { bufObj->Data = (GLubyte *) new_data; bufObj->Size = size; bufObj->Usage = usage; + bufObj->StorageFlags = storageFlags; if (data) { memcpy( bufObj->Data, data, size ); @@ -672,33 +675,11 @@ _mesa_buffer_clear_subdata(struct gl_context *ctx, GLsizeiptr i; GLubyte *dest; - if (_mesa_bufferobj_mapped(bufObj)) { - GLubyte *data = malloc(size); - GLubyte *dataStart = data; - if (data == NULL) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glClearBuffer[Sub]Data"); - return; - } - - if (clearValue == NULL) { - /* Clear with zeros, per the spec */ - memset(data, 0, size); - } - else { - for (i = 0; i < size/clearValueSize; ++i) { - memcpy(data, clearValue, clearValueSize); - data += clearValueSize; - } - } - ctx->Driver.BufferSubData(ctx, offset, size, dataStart, bufObj); - return; - } - ASSERT(ctx->Driver.MapBufferRange); dest = ctx->Driver.MapBufferRange(ctx, offset, size, GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_RANGE_BIT, - bufObj); + bufObj, MAP_INTERNAL); if (!dest) { _mesa_error(ctx, GL_OUT_OF_MEMORY, "glClearBuffer[Sub]Data"); @@ -708,7 +689,7 @@ _mesa_buffer_clear_subdata(struct gl_context *ctx, if (clearValue == NULL) { /* Clear with zeros, per the spec */ memset(dest, 0, size); - ctx->Driver.UnmapBuffer(ctx, bufObj); + ctx->Driver.UnmapBuffer(ctx, bufObj, MAP_INTERNAL); return; } @@ -717,7 +698,7 @@ _mesa_buffer_clear_subdata(struct gl_context *ctx, dest += clearValueSize; } - ctx->Driver.UnmapBuffer(ctx, bufObj); + ctx->Driver.UnmapBuffer(ctx, bufObj, MAP_INTERNAL); } @@ -728,16 +709,17 @@ _mesa_buffer_clear_subdata(struct gl_context *ctx, static void * _mesa_buffer_map_range( struct gl_context *ctx, GLintptr offset, GLsizeiptr length, GLbitfield access, - struct gl_buffer_object *bufObj ) + struct gl_buffer_object *bufObj, + gl_map_buffer_index index) { (void) ctx; - assert(!_mesa_bufferobj_mapped(bufObj)); + assert(!_mesa_bufferobj_mapped(bufObj, index)); /* Just return a direct pointer to the data */ - bufObj->Pointer = bufObj->Data + offset; - bufObj->Length = length; - bufObj->Offset = offset; - bufObj->AccessFlags = access; - return bufObj->Pointer; + bufObj->Mappings[index].Pointer = bufObj->Data + offset; + bufObj->Mappings[index].Length = length; + bufObj->Mappings[index].Offset = offset; + bufObj->Mappings[index].AccessFlags = access; + return bufObj->Mappings[index].Pointer; } @@ -748,7 +730,8 @@ _mesa_buffer_map_range( struct gl_context *ctx, GLintptr offset, static void _mesa_buffer_flush_mapped_range( struct gl_context *ctx, GLintptr offset, GLsizeiptr length, - struct gl_buffer_object *obj ) + struct gl_buffer_object *obj, + gl_map_buffer_index index) { (void) ctx; (void) offset; @@ -766,14 +749,15 @@ _mesa_buffer_flush_mapped_range( struct gl_context *ctx, * \sa glUnmapBufferARB, dd_function_table::UnmapBuffer */ GLboolean -_mesa_buffer_unmap( struct gl_context *ctx, struct gl_buffer_object *bufObj ) +_mesa_buffer_unmap(struct gl_context *ctx, struct gl_buffer_object *bufObj, + gl_map_buffer_index index) { (void) ctx; /* XXX we might assert here that bufObj->Pointer is non-null */ - bufObj->Pointer = NULL; - bufObj->Length = 0; - bufObj->Offset = 0; - bufObj->AccessFlags = 0x0; + bufObj->Mappings[index].Pointer = NULL; + bufObj->Mappings[index].Length = 0; + bufObj->Mappings[index].Offset = 0; + bufObj->Mappings[index].AccessFlags = 0x0; return GL_TRUE; } @@ -791,14 +775,11 @@ _mesa_copy_buffer_subdata(struct gl_context *ctx, { GLubyte *srcPtr, *dstPtr; - /* the buffers should not be mapped */ - assert(!_mesa_bufferobj_mapped(src)); - assert(!_mesa_bufferobj_mapped(dst)); - if (src == dst) { srcPtr = dstPtr = ctx->Driver.MapBufferRange(ctx, 0, src->Size, GL_MAP_READ_BIT | - GL_MAP_WRITE_BIT, src); + GL_MAP_WRITE_BIT, src, + MAP_INTERNAL); if (!srcPtr) return; @@ -807,10 +788,12 @@ _mesa_copy_buffer_subdata(struct gl_context *ctx, dstPtr += writeOffset; } else { srcPtr = ctx->Driver.MapBufferRange(ctx, readOffset, size, - GL_MAP_READ_BIT, src); + GL_MAP_READ_BIT, src, + MAP_INTERNAL); dstPtr = ctx->Driver.MapBufferRange(ctx, writeOffset, size, (GL_MAP_WRITE_BIT | - GL_MAP_INVALIDATE_RANGE_BIT), dst); + GL_MAP_INVALIDATE_RANGE_BIT), dst, + MAP_INTERNAL); } /* Note: the src and dst regions will never overlap. Trying to do so @@ -819,9 +802,9 @@ _mesa_copy_buffer_subdata(struct gl_context *ctx, if (srcPtr && dstPtr) memcpy(dstPtr, srcPtr, size); - ctx->Driver.UnmapBuffer(ctx, src); + ctx->Driver.UnmapBuffer(ctx, src, MAP_INTERNAL); if (dst != src) - ctx->Driver.UnmapBuffer(ctx, dst); + ctx->Driver.UnmapBuffer(ctx, dst, MAP_INTERNAL); } @@ -835,7 +818,7 @@ _mesa_init_buffer_objects( struct gl_context *ctx ) GLuint i; memset(&DummyBufferObject, 0, sizeof(DummyBufferObject)); - _glthread_INIT_MUTEX(DummyBufferObject.Mutex); + mtx_init(&DummyBufferObject.Mutex, mtx_plain); DummyBufferObject.RefCount = 1000*1000*1000; /* never delete */ _mesa_reference_buffer_object(ctx, &ctx->Array.ArrayBufferObj, @@ -955,10 +938,6 @@ bind_buffer_object(struct gl_context *ctx, GLenum target, GLuint buffer) /* bind new buffer */ _mesa_reference_buffer_object(ctx, bindTarget, newBufObj); - - /* Pass BindBuffer call to device driver */ - if (ctx->Driver.BindBuffer) - ctx->Driver.BindBuffer( ctx, target, newBufObj ); } @@ -1023,7 +1002,6 @@ _mesa_init_buffer_object_functions(struct dd_function_table *driver) /* GL_ARB_vertex/pixel_buffer_object */ driver->NewBufferObject = _mesa_new_buffer_object; driver->DeleteBuffer = _mesa_delete_buffer_object; - driver->BindBuffer = NULL; driver->BufferData = _mesa_buffer_data; driver->BufferSubData = _mesa_buffer_subdata; driver->GetBufferSubData = _mesa_buffer_get_subdata; @@ -1041,6 +1019,21 @@ _mesa_init_buffer_object_functions(struct dd_function_table *driver) } +void +_mesa_buffer_unmap_all_mappings(struct gl_context *ctx, + struct gl_buffer_object *bufObj) +{ + int i; + + for (i = 0; i < MAP_COUNT; i++) { + if (_mesa_bufferobj_mapped(bufObj, i)) { + ctx->Driver.UnmapBuffer(ctx, bufObj, i); + ASSERT(bufObj->Mappings[i].Pointer == NULL); + bufObj->Mappings[i].AccessFlags = 0; + } + } +} + /**********************************************************************/ /* API Functions */ @@ -1077,7 +1070,7 @@ _mesa_DeleteBuffers(GLsizei n, const GLuint *ids) return; } - _glthread_LOCK_MUTEX(ctx->Shared->Mutex); + mtx_lock(&ctx->Shared->Mutex); for (i = 0; i < n; i++) { struct gl_buffer_object *bufObj = _mesa_lookup_bufferobj(ctx, ids[i]); @@ -1087,12 +1080,7 @@ _mesa_DeleteBuffers(GLsizei n, const GLuint *ids) ASSERT(bufObj->Name == ids[i] || bufObj == &DummyBufferObject); - if (_mesa_bufferobj_mapped(bufObj)) { - /* if mapped, unmap it now */ - ctx->Driver.UnmapBuffer(ctx, bufObj); - bufObj->AccessFlags = 0; - bufObj->Pointer = NULL; - } + _mesa_buffer_unmap_all_mappings(ctx, bufObj); /* unbind any vertex pointers bound to this buffer */ for (j = 0; j < Elements(vao->VertexBinding); j++) { @@ -1169,7 +1157,7 @@ _mesa_DeleteBuffers(GLsizei n, const GLuint *ids) } } - _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); + mtx_unlock(&ctx->Shared->Mutex); } @@ -1201,7 +1189,7 @@ _mesa_GenBuffers(GLsizei n, GLuint *buffer) /* * This must be atomic (generation and allocation of buffer object IDs) */ - _glthread_LOCK_MUTEX(ctx->Shared->Mutex); + mtx_lock(&ctx->Shared->Mutex); first = _mesa_HashFindFreeKeyBlock(ctx->Shared->BufferObjects, n); @@ -1212,7 +1200,7 @@ _mesa_GenBuffers(GLsizei n, GLuint *buffer) buffer[i] = first + i; } - _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); + mtx_unlock(&ctx->Shared->Mutex); } @@ -1230,15 +1218,73 @@ _mesa_IsBuffer(GLuint id) GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE); - _glthread_LOCK_MUTEX(ctx->Shared->Mutex); + mtx_lock(&ctx->Shared->Mutex); bufObj = _mesa_lookup_bufferobj(ctx, id); - _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); + mtx_unlock(&ctx->Shared->Mutex); return bufObj && bufObj != &DummyBufferObject; } void GLAPIENTRY +_mesa_BufferStorage(GLenum target, GLsizeiptr size, const GLvoid *data, + GLbitfield flags) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_buffer_object *bufObj; + + if (size <= 0) { + _mesa_error(ctx, GL_INVALID_VALUE, "glBufferStorage(size <= 0)"); + return; + } + + if (flags & ~(GL_MAP_READ_BIT | + GL_MAP_WRITE_BIT | + GL_MAP_PERSISTENT_BIT | + GL_MAP_COHERENT_BIT | + GL_DYNAMIC_STORAGE_BIT | + GL_CLIENT_STORAGE_BIT)) { + _mesa_error(ctx, GL_INVALID_VALUE, "glBufferStorage(flags)"); + return; + } + + if (flags & GL_MAP_PERSISTENT_BIT && + !(flags & (GL_MAP_READ_BIT | GL_MAP_WRITE_BIT))) { + _mesa_error(ctx, GL_INVALID_VALUE, "glBufferStorage(flags!=READ/WRITE)"); + return; + } + + if (flags & GL_MAP_COHERENT_BIT && !(flags & GL_MAP_PERSISTENT_BIT)) { + _mesa_error(ctx, GL_INVALID_VALUE, "glBufferStorage(flags!=PERSISTENT)"); + return; + } + + bufObj = get_buffer(ctx, "glBufferStorage", target, GL_INVALID_OPERATION); + if (!bufObj) + return; + + if (bufObj->Immutable) { + _mesa_error(ctx, GL_INVALID_OPERATION, "glBufferStorage(immutable)"); + return; + } + + /* Unmap the existing buffer. We'll replace it now. Not an error. */ + _mesa_buffer_unmap_all_mappings(ctx, bufObj); + + FLUSH_VERTICES(ctx, _NEW_BUFFER_OBJECT); + + bufObj->Written = GL_TRUE; + bufObj->Immutable = GL_TRUE; + + ASSERT(ctx->Driver.BufferData); + if (!ctx->Driver.BufferData(ctx, target, size, data, GL_DYNAMIC_DRAW, + flags, bufObj)) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "glBufferStorage()"); + } +} + + +void GLAPIENTRY _mesa_BufferData(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage) { @@ -1290,12 +1336,13 @@ _mesa_BufferData(GLenum target, GLsizeiptrARB size, if (!bufObj) return; - if (_mesa_bufferobj_mapped(bufObj)) { - /* Unmap the existing buffer. We'll replace it now. Not an error. */ - ctx->Driver.UnmapBuffer(ctx, bufObj); - bufObj->AccessFlags = 0; - ASSERT(bufObj->Pointer == NULL); - } + if (bufObj->Immutable) { + _mesa_error(ctx, GL_INVALID_OPERATION, "glBufferData(immutable)"); + return; + } + + /* Unmap the existing buffer. We'll replace it now. Not an error. */ + _mesa_buffer_unmap_all_mappings(ctx, bufObj); FLUSH_VERTICES(ctx, _NEW_BUFFER_OBJECT); @@ -1311,7 +1358,11 @@ _mesa_BufferData(GLenum target, GLsizeiptrARB size, #endif ASSERT(ctx->Driver.BufferData); - if (!ctx->Driver.BufferData( ctx, target, size, data, usage, bufObj )) { + if (!ctx->Driver.BufferData(ctx, target, size, data, usage, + GL_MAP_READ_BIT | + GL_MAP_WRITE_BIT | + GL_DYNAMIC_STORAGE_BIT, + bufObj)) { _mesa_error(ctx, GL_OUT_OF_MEMORY, "glBufferDataARB()"); } } @@ -1332,6 +1383,12 @@ _mesa_BufferSubData(GLenum target, GLintptrARB offset, return; } + if (bufObj->Immutable && + !(bufObj->StorageFlags & GL_DYNAMIC_STORAGE_BIT)) { + _mesa_error(ctx, GL_INVALID_OPERATION, "glBufferSubData"); + return; + } + if (size == 0) return; @@ -1377,7 +1434,7 @@ _mesa_ClearBufferData(GLenum target, GLenum internalformat, GLenum format, return; } - if (_mesa_bufferobj_mapped(bufObj)) { + if (_mesa_check_disallowed_mapping(bufObj)) { _mesa_error(ctx, GL_INVALID_OPERATION, "glClearBufferData(buffer currently mapped)"); return; @@ -1451,8 +1508,10 @@ _mesa_ClearBufferSubData(GLenum target, GLenum internalformat, if (data == NULL) { /* clear to zeros, per the spec */ - ctx->Driver.ClearBufferSubData(ctx, offset, size, - NULL, 0, bufObj); + if (size > 0) { + ctx->Driver.ClearBufferSubData(ctx, offset, size, + NULL, 0, bufObj); + } return; } @@ -1462,8 +1521,10 @@ _mesa_ClearBufferSubData(GLenum target, GLenum internalformat, return; } - ctx->Driver.ClearBufferSubData(ctx, offset, size, - clearValue, clearValueSize, bufObj); + if (size > 0) { + ctx->Driver.ClearBufferSubData(ctx, offset, size, + clearValue, clearValueSize, bufObj); + } } @@ -1505,7 +1566,21 @@ _mesa_MapBuffer(GLenum target, GLenum access) if (!bufObj) return NULL; - if (_mesa_bufferobj_mapped(bufObj)) { + if (accessFlags & GL_MAP_READ_BIT && + !(bufObj->StorageFlags & GL_MAP_READ_BIT)) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glMapBuffer(invalid read flag)"); + return NULL; + } + + if (accessFlags & GL_MAP_WRITE_BIT && + !(bufObj->StorageFlags & GL_MAP_WRITE_BIT)) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glMapBuffer(invalid write flag)"); + return NULL; + } + + if (_mesa_bufferobj_mapped(bufObj, MAP_USER)) { _mesa_error(ctx, GL_INVALID_OPERATION, "glMapBufferARB(already mapped)"); return NULL; } @@ -1517,7 +1592,8 @@ _mesa_MapBuffer(GLenum target, GLenum access) } ASSERT(ctx->Driver.MapBufferRange); - map = ctx->Driver.MapBufferRange(ctx, 0, bufObj->Size, accessFlags, bufObj); + map = ctx->Driver.MapBufferRange(ctx, 0, bufObj->Size, accessFlags, bufObj, + MAP_USER); if (!map) { _mesa_error(ctx, GL_OUT_OF_MEMORY, "glMapBufferARB(map failed)"); return NULL; @@ -1527,10 +1603,10 @@ _mesa_MapBuffer(GLenum target, GLenum access) * This is important because other modules (like VBO) might call * the driver function directly. */ - ASSERT(bufObj->Pointer == map); - ASSERT(bufObj->Length == bufObj->Size); - ASSERT(bufObj->Offset == 0); - bufObj->AccessFlags = accessFlags; + ASSERT(bufObj->Mappings[MAP_USER].Pointer == map); + ASSERT(bufObj->Mappings[MAP_USER].Length == bufObj->Size); + ASSERT(bufObj->Mappings[MAP_USER].Offset == 0); + bufObj->Mappings[MAP_USER].AccessFlags = accessFlags; } if (access == GL_WRITE_ONLY_ARB || access == GL_READ_WRITE_ARB) @@ -1558,7 +1634,7 @@ _mesa_MapBuffer(GLenum target, GLenum access) } #endif - return bufObj->Pointer; + return bufObj->Mappings[MAP_USER].Pointer; } @@ -1574,7 +1650,7 @@ _mesa_UnmapBuffer(GLenum target) if (!bufObj) return GL_FALSE; - if (!_mesa_bufferobj_mapped(bufObj)) { + if (!_mesa_bufferobj_mapped(bufObj, MAP_USER)) { _mesa_error(ctx, GL_INVALID_OPERATION, "glUnmapBufferARB"); return GL_FALSE; } @@ -1615,11 +1691,11 @@ _mesa_UnmapBuffer(GLenum target) } #endif - status = ctx->Driver.UnmapBuffer( ctx, bufObj ); - bufObj->AccessFlags = 0; - ASSERT(bufObj->Pointer == NULL); - ASSERT(bufObj->Offset == 0); - ASSERT(bufObj->Length == 0); + status = ctx->Driver.UnmapBuffer(ctx, bufObj, MAP_USER); + bufObj->Mappings[MAP_USER].AccessFlags = 0; + ASSERT(bufObj->Mappings[MAP_USER].Pointer == NULL); + ASSERT(bufObj->Mappings[MAP_USER].Offset == 0); + ASSERT(bufObj->Mappings[MAP_USER].Length == 0); return status; } @@ -1644,25 +1720,36 @@ _mesa_GetBufferParameteriv(GLenum target, GLenum pname, GLint *params) *params = bufObj->Usage; return; case GL_BUFFER_ACCESS_ARB: - *params = simplified_access_mode(ctx, bufObj->AccessFlags); + *params = simplified_access_mode(ctx, + bufObj->Mappings[MAP_USER].AccessFlags); return; case GL_BUFFER_MAPPED_ARB: - *params = _mesa_bufferobj_mapped(bufObj); + *params = _mesa_bufferobj_mapped(bufObj, MAP_USER); return; case GL_BUFFER_ACCESS_FLAGS: if (!ctx->Extensions.ARB_map_buffer_range) goto invalid_pname; - *params = bufObj->AccessFlags; + *params = bufObj->Mappings[MAP_USER].AccessFlags; return; case GL_BUFFER_MAP_OFFSET: if (!ctx->Extensions.ARB_map_buffer_range) goto invalid_pname; - *params = (GLint) bufObj->Offset; + *params = (GLint) bufObj->Mappings[MAP_USER].Offset; return; case GL_BUFFER_MAP_LENGTH: if (!ctx->Extensions.ARB_map_buffer_range) goto invalid_pname; - *params = (GLint) bufObj->Length; + *params = (GLint) bufObj->Mappings[MAP_USER].Length; + return; + case GL_BUFFER_IMMUTABLE_STORAGE: + if (!ctx->Extensions.ARB_buffer_storage) + goto invalid_pname; + *params = bufObj->Immutable; + return; + case GL_BUFFER_STORAGE_FLAGS: + if (!ctx->Extensions.ARB_buffer_storage) + goto invalid_pname; + *params = bufObj->StorageFlags; return; default: ; /* fall-through */ @@ -1698,25 +1785,36 @@ _mesa_GetBufferParameteri64v(GLenum target, GLenum pname, GLint64 *params) *params = bufObj->Usage; return; case GL_BUFFER_ACCESS_ARB: - *params = simplified_access_mode(ctx, bufObj->AccessFlags); + *params = simplified_access_mode(ctx, + bufObj->Mappings[MAP_USER].AccessFlags); return; case GL_BUFFER_ACCESS_FLAGS: if (!ctx->Extensions.ARB_map_buffer_range) goto invalid_pname; - *params = bufObj->AccessFlags; + *params = bufObj->Mappings[MAP_USER].AccessFlags; return; case GL_BUFFER_MAPPED_ARB: - *params = _mesa_bufferobj_mapped(bufObj); + *params = _mesa_bufferobj_mapped(bufObj, MAP_USER); return; case GL_BUFFER_MAP_OFFSET: if (!ctx->Extensions.ARB_map_buffer_range) goto invalid_pname; - *params = bufObj->Offset; + *params = bufObj->Mappings[MAP_USER].Offset; return; case GL_BUFFER_MAP_LENGTH: if (!ctx->Extensions.ARB_map_buffer_range) goto invalid_pname; - *params = bufObj->Length; + *params = bufObj->Mappings[MAP_USER].Length; + return; + case GL_BUFFER_IMMUTABLE_STORAGE: + if (!ctx->Extensions.ARB_buffer_storage) + goto invalid_pname; + *params = bufObj->Immutable; + return; + case GL_BUFFER_STORAGE_FLAGS: + if (!ctx->Extensions.ARB_buffer_storage) + goto invalid_pname; + *params = bufObj->StorageFlags; return; default: ; /* fall-through */ @@ -1744,7 +1842,7 @@ _mesa_GetBufferPointerv(GLenum target, GLenum pname, GLvoid **params) if (!bufObj) return; - *params = bufObj->Pointer; + *params = bufObj->Mappings[MAP_USER].Pointer; } @@ -1766,13 +1864,13 @@ _mesa_CopyBufferSubData(GLenum readTarget, GLenum writeTarget, if (!dst) return; - if (_mesa_bufferobj_mapped(src)) { + if (_mesa_check_disallowed_mapping(src)) { _mesa_error(ctx, GL_INVALID_OPERATION, "glCopyBufferSubData(readBuffer is mapped)"); return; } - if (_mesa_bufferobj_mapped(dst)) { + if (_mesa_check_disallowed_mapping(dst)) { _mesa_error(ctx, GL_INVALID_OPERATION, "glCopyBufferSubData(writeBuffer is mapped)"); return; @@ -1839,6 +1937,7 @@ _mesa_MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GET_CURRENT_CONTEXT(ctx); struct gl_buffer_object *bufObj; void *map; + GLbitfield allowed_access; ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, NULL); @@ -1873,13 +1972,20 @@ _mesa_MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, return NULL; } - if (access & ~(GL_MAP_READ_BIT | - GL_MAP_WRITE_BIT | - GL_MAP_INVALIDATE_RANGE_BIT | - GL_MAP_INVALIDATE_BUFFER_BIT | - GL_MAP_FLUSH_EXPLICIT_BIT | - GL_MAP_UNSYNCHRONIZED_BIT)) { - /* generate an error if any undefind bit is set */ + allowed_access = GL_MAP_READ_BIT | + GL_MAP_WRITE_BIT | + GL_MAP_INVALIDATE_RANGE_BIT | + GL_MAP_INVALIDATE_BUFFER_BIT | + GL_MAP_FLUSH_EXPLICIT_BIT | + GL_MAP_UNSYNCHRONIZED_BIT; + + if (ctx->Extensions.ARB_buffer_storage) { + allowed_access |= GL_MAP_PERSISTENT_BIT | + GL_MAP_COHERENT_BIT; + } + + if (access & ~allowed_access) { + /* generate an error if any other than allowed bit is set */ _mesa_error(ctx, GL_INVALID_VALUE, "glMapBufferRange(access)"); return NULL; } @@ -1910,13 +2016,41 @@ _mesa_MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, if (!bufObj) return NULL; + if (access & GL_MAP_READ_BIT && + !(bufObj->StorageFlags & GL_MAP_READ_BIT)) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glMapBufferRange(invalid read flag)"); + return NULL; + } + + if (access & GL_MAP_WRITE_BIT && + !(bufObj->StorageFlags & GL_MAP_WRITE_BIT)) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glMapBufferRange(invalid write flag)"); + return NULL; + } + + if (access & GL_MAP_COHERENT_BIT && + !(bufObj->StorageFlags & GL_MAP_COHERENT_BIT)) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glMapBufferRange(invalid coherent flag)"); + return NULL; + } + + if (access & GL_MAP_PERSISTENT_BIT && + !(bufObj->StorageFlags & GL_MAP_PERSISTENT_BIT)) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glMapBufferRange(invalid persistent flag)"); + return NULL; + } + if (offset + length > bufObj->Size) { _mesa_error(ctx, GL_INVALID_VALUE, "glMapBufferRange(offset + length > size)"); return NULL; } - if (_mesa_bufferobj_mapped(bufObj)) { + if (_mesa_bufferobj_mapped(bufObj, MAP_USER)) { _mesa_error(ctx, GL_INVALID_OPERATION, "glMapBufferRange(buffer already mapped)"); return NULL; @@ -1931,15 +2065,16 @@ _mesa_MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, /* Mapping zero bytes should return a non-null pointer. */ if (!length) { static long dummy = 0; - bufObj->Pointer = &dummy; - bufObj->Length = length; - bufObj->Offset = offset; - bufObj->AccessFlags = access; - return bufObj->Pointer; + bufObj->Mappings[MAP_USER].Pointer = &dummy; + bufObj->Mappings[MAP_USER].Length = length; + bufObj->Mappings[MAP_USER].Offset = offset; + bufObj->Mappings[MAP_USER].AccessFlags = access; + return bufObj->Mappings[MAP_USER].Pointer; } ASSERT(ctx->Driver.MapBufferRange); - map = ctx->Driver.MapBufferRange(ctx, offset, length, access, bufObj); + map = ctx->Driver.MapBufferRange(ctx, offset, length, access, bufObj, + MAP_USER); if (!map) { _mesa_error(ctx, GL_OUT_OF_MEMORY, "glMapBufferARB(map failed)"); } @@ -1948,10 +2083,10 @@ _mesa_MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, * This is important because other modules (like VBO) might call * the driver function directly. */ - ASSERT(bufObj->Pointer == map); - ASSERT(bufObj->Length == length); - ASSERT(bufObj->Offset == offset); - ASSERT(bufObj->AccessFlags == access); + ASSERT(bufObj->Mappings[MAP_USER].Pointer == map); + ASSERT(bufObj->Mappings[MAP_USER].Length == length); + ASSERT(bufObj->Mappings[MAP_USER].Offset == offset); + ASSERT(bufObj->Mappings[MAP_USER].AccessFlags == access); } return map; @@ -1990,30 +2125,33 @@ _mesa_FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) if (!bufObj) return; - if (!_mesa_bufferobj_mapped(bufObj)) { + if (!_mesa_bufferobj_mapped(bufObj, MAP_USER)) { /* buffer is not mapped */ _mesa_error(ctx, GL_INVALID_OPERATION, "glFlushMappedBufferRange(buffer is not mapped)"); return; } - if ((bufObj->AccessFlags & GL_MAP_FLUSH_EXPLICIT_BIT) == 0) { + if ((bufObj->Mappings[MAP_USER].AccessFlags & + GL_MAP_FLUSH_EXPLICIT_BIT) == 0) { _mesa_error(ctx, GL_INVALID_OPERATION, "glFlushMappedBufferRange(GL_MAP_FLUSH_EXPLICIT_BIT not set)"); return; } - if (offset + length > bufObj->Length) { + if (offset + length > bufObj->Mappings[MAP_USER].Length) { _mesa_error(ctx, GL_INVALID_VALUE, "glFlushMappedBufferRange(offset %ld + length %ld > mapped length %ld)", - (long)offset, (long)length, (long)bufObj->Length); + (long)offset, (long)length, + (long)bufObj->Mappings[MAP_USER].Length); return; } - ASSERT(bufObj->AccessFlags & GL_MAP_WRITE_BIT); + ASSERT(bufObj->Mappings[MAP_USER].AccessFlags & GL_MAP_WRITE_BIT); if (ctx->Driver.FlushMappedBufferRange) - ctx->Driver.FlushMappedBufferRange(ctx, offset, length, bufObj); + ctx->Driver.FlushMappedBufferRange(ctx, offset, length, bufObj, + MAP_USER); } @@ -2660,13 +2798,15 @@ _mesa_InvalidateBufferSubData(GLuint buffer, GLintptr offset, return; } - /* The GL_ARB_invalidate_subdata spec says: + /* The OpenGL 4.4 (Core Profile) spec says: * - * "An INVALID_OPERATION error is generated if the buffer is currently - * mapped by MapBuffer, or if the invalidate range intersects the range - * currently mapped by MapBufferRange." + * "An INVALID_OPERATION error is generated if buffer is currently + * mapped by MapBuffer or if the invalidate range intersects the range + * currently mapped by MapBufferRange, unless it was mapped + * with MAP_PERSISTENT_BIT set in the MapBufferRange access flags." */ - if (bufferobj_range_mapped(bufObj, offset, length)) { + if (!(bufObj->Mappings[MAP_USER].AccessFlags & GL_MAP_PERSISTENT_BIT) && + bufferobj_range_mapped(bufObj, offset, length)) { _mesa_error(ctx, GL_INVALID_OPERATION, "glInvalidateBufferSubData(intersection with mapped " "range)"); @@ -2693,13 +2833,14 @@ _mesa_InvalidateBufferData(GLuint buffer) return; } - /* The GL_ARB_invalidate_subdata spec says: + /* The OpenGL 4.4 (Core Profile) spec says: * - * "An INVALID_OPERATION error is generated if the buffer is currently - * mapped by MapBuffer, or if the invalidate range intersects the range - * currently mapped by MapBufferRange." + * "An INVALID_OPERATION error is generated if buffer is currently + * mapped by MapBuffer or if the invalidate range intersects the range + * currently mapped by MapBufferRange, unless it was mapped + * with MAP_PERSISTENT_BIT set in the MapBufferRange access flags." */ - if (_mesa_bufferobj_mapped(bufObj)) { + if (_mesa_check_disallowed_mapping(bufObj)) { _mesa_error(ctx, GL_INVALID_OPERATION, "glInvalidateBufferData(intersection with mapped " "range)"); diff --git a/mesalib/src/mesa/main/bufferobj.h b/mesalib/src/mesa/main/bufferobj.h index 71988b0d9..9814552eb 100644 --- a/mesalib/src/mesa/main/bufferobj.h +++ b/mesalib/src/mesa/main/bufferobj.h @@ -37,11 +37,21 @@ */ -/** Is the given buffer object currently mapped? */ +/** Is the given buffer object currently mapped by the GL user? */ static inline GLboolean -_mesa_bufferobj_mapped(const struct gl_buffer_object *obj) +_mesa_bufferobj_mapped(const struct gl_buffer_object *obj, + gl_map_buffer_index index) { - return obj->Pointer != NULL; + return obj->Mappings[index].Pointer != NULL; +} + +/** Can we not use this buffer while mapped? */ +static inline GLboolean +_mesa_check_disallowed_mapping(const struct gl_buffer_object *obj) +{ + return _mesa_bufferobj_mapped(obj, MAP_USER) && + !(obj->Mappings[MAP_USER].AccessFlags & + GL_MAP_PERSISTENT_BIT); } /** @@ -101,6 +111,9 @@ _mesa_total_buffer_object_memory(struct gl_context *ctx); extern void _mesa_init_buffer_object_functions(struct dd_function_table *driver); +extern void +_mesa_buffer_unmap_all_mappings(struct gl_context *ctx, + struct gl_buffer_object *bufObj); /* * API functions @@ -118,6 +131,10 @@ GLboolean GLAPIENTRY _mesa_IsBuffer(GLuint buffer); void GLAPIENTRY +_mesa_BufferStorage(GLenum target, GLsizeiptr size, const GLvoid *data, + GLbitfield flags); + +void GLAPIENTRY _mesa_BufferData(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage); diff --git a/mesalib/src/mesa/main/context.c b/mesalib/src/mesa/main/context.c index 9372b3bea..a19180870 100644 --- a/mesalib/src/mesa/main/context.c +++ b/mesalib/src/mesa/main/context.c @@ -106,6 +106,7 @@ #include "matrix.h" #include "multisample.h" #include "performance_monitor.h" +#include "pipelineobj.h" #include "pixel.h" #include "pixelstore.h" #include "points.h" @@ -363,7 +364,7 @@ dummy_enum_func(void) * * \sa Used by one_time_init(). */ -_glthread_DECLARE_STATIC_MUTEX(OneTimeLock); +mtx_t OneTimeLock = _MTX_INITIALIZER_NP; @@ -381,7 +382,7 @@ one_time_init( struct gl_context *ctx ) { static GLbitfield api_init_mask = 0x0; - _glthread_LOCK_MUTEX(OneTimeLock); + mtx_lock(&OneTimeLock); /* truly one-time init */ if (!api_init_mask) { @@ -422,7 +423,7 @@ one_time_init( struct gl_context *ctx ) api_init_mask |= 1 << ctx->API; - _glthread_UNLOCK_MUTEX(OneTimeLock); + mtx_unlock(&OneTimeLock); /* Hopefully atexit() is widely available. If not, we may need some * #ifdef tests here. @@ -603,9 +604,6 @@ _mesa_init_constants(struct gl_context *ctx) ctx->Const.ViewportBounds.Min = 0; ctx->Const.ViewportBounds.Max = 0; - /* Driver must override if it supports ARB_viewport_array */ - ctx->Const.MaxViewports = 1; - /** GL_ARB_uniform_buffer_object */ ctx->Const.MaxCombinedUniformBlocks = 36; ctx->Const.MaxUniformBufferBindings = 36; @@ -814,6 +812,7 @@ init_attrib_groups(struct gl_context *ctx) _mesa_init_matrix( ctx ); _mesa_init_multisample( ctx ); _mesa_init_performance_monitors( ctx ); + _mesa_init_pipeline( ctx ); _mesa_init_pixel( ctx ); _mesa_init_pixelstore( ctx ); _mesa_init_point( ctx ); @@ -1219,6 +1218,7 @@ _mesa_free_context_data( struct gl_context *ctx ) _mesa_free_texture_data( ctx ); _mesa_free_matrix_data( ctx ); _mesa_free_viewport_data( ctx ); + _mesa_free_pipeline_data(ctx); _mesa_free_program_data(ctx); _mesa_free_shader_state(ctx); _mesa_free_queryobj_data(ctx); @@ -1769,93 +1769,59 @@ _mesa_check_blend_func_error(struct gl_context *ctx) return GL_TRUE; } -/** - * Prior to drawing anything with glBegin, glDrawArrays, etc. this function - * is called to see if it's valid to render. This involves checking that - * the current shader is valid and the framebuffer is complete. - * If an error is detected it'll be recorded here. - * \return GL_TRUE if OK to render, GL_FALSE if not - */ -GLboolean -_mesa_valid_to_render(struct gl_context *ctx, const char *where) +static bool +shader_linked_or_absent(struct gl_context *ctx, + const struct gl_shader_program *shProg, + bool *shader_present, const char *where) { - bool vert_from_glsl_shader = false; - bool geom_from_glsl_shader = false; - bool frag_from_glsl_shader = false; - - /* This depends on having up to date derived state (shaders) */ - if (ctx->NewState) - _mesa_update_state(ctx); + if (shProg) { + *shader_present = true; - if (ctx->Shader.CurrentProgram[MESA_SHADER_VERTEX]) { - vert_from_glsl_shader = true; - - if (!ctx->Shader.CurrentProgram[MESA_SHADER_VERTEX]->LinkStatus) { - _mesa_error(ctx, GL_INVALID_OPERATION, - "%s(shader not linked)", where); - return GL_FALSE; + if (!shProg->LinkStatus) { + _mesa_error(ctx, GL_INVALID_OPERATION, "%s(shader not linked)", where); + return false; } #if 0 /* not normally enabled */ { char errMsg[100]; - if (!_mesa_validate_shader_program(ctx, - ctx->Shader.CurrentProgram[MESA_SHADER_VERTEX], - errMsg)) { + if (!_mesa_validate_shader_program(ctx, shProg, errMsg)) { _mesa_warning(ctx, "Shader program %u is invalid: %s", - ctx->Shader.CurrentProgram[MESA_SHADER_VERTEX]->Name, errMsg); + shProg->Name, errMsg); } } #endif } - if (ctx->Shader.CurrentProgram[MESA_SHADER_GEOMETRY]) { - geom_from_glsl_shader = true; + return true; +} - if (!ctx->Shader.CurrentProgram[MESA_SHADER_GEOMETRY]->LinkStatus) { - _mesa_error(ctx, GL_INVALID_OPERATION, - "%s(shader not linked)", where); - return GL_FALSE; - } -#if 0 /* not normally enabled */ - { - char errMsg[100]; - if (!_mesa_validate_shader_program(ctx, - ctx->Shader.CurrentProgram[MESA_SHADER_GEOMETRY], - errMsg)) { - _mesa_warning(ctx, "Shader program %u is invalid: %s", - ctx->Shader.CurrentProgram[MESA_SHADER_GEOMETRY]->Name, - errMsg); - } - } -#endif - } +/** + * Prior to drawing anything with glBegin, glDrawArrays, etc. this function + * is called to see if it's valid to render. This involves checking that + * the current shader is valid and the framebuffer is complete. + * If an error is detected it'll be recorded here. + * \return GL_TRUE if OK to render, GL_FALSE if not + */ +GLboolean +_mesa_valid_to_render(struct gl_context *ctx, const char *where) +{ + bool from_glsl_shader[MESA_SHADER_COMPUTE] = { false }; + unsigned i; - if (ctx->Shader.CurrentProgram[MESA_SHADER_FRAGMENT]) { - frag_from_glsl_shader = true; + /* This depends on having up to date derived state (shaders) */ + if (ctx->NewState) + _mesa_update_state(ctx); - if (!ctx->Shader.CurrentProgram[MESA_SHADER_FRAGMENT]->LinkStatus) { - _mesa_error(ctx, GL_INVALID_OPERATION, - "%s(shader not linked)", where); + for (i = 0; i < MESA_SHADER_COMPUTE; i++) { + if (!shader_linked_or_absent(ctx, ctx->Shader.CurrentProgram[i], + &from_glsl_shader[i], where)) return GL_FALSE; - } -#if 0 /* not normally enabled */ - { - char errMsg[100]; - if (!_mesa_validate_shader_program(ctx, - ctx->Shader.CurrentProgram[MESA_SHADER_FRAGMENT], - errMsg)) { - _mesa_warning(ctx, "Shader program %u is invalid: %s", - ctx->Shader.CurrentProgram[MESA_SHADER_FRAGMENT]->Name, - errMsg); - } - } -#endif } /* Any shader stages that are not supplied by the GLSL shader and have * assembly shaders enabled must now be validated. */ - if (!vert_from_glsl_shader + if (!from_glsl_shader[MESA_SHADER_VERTEX] && ctx->VertexProgram.Enabled && !ctx->VertexProgram._Enabled) { _mesa_error(ctx, GL_INVALID_OPERATION, "%s(vertex program not valid)", where); @@ -1865,9 +1831,9 @@ _mesa_valid_to_render(struct gl_context *ctx, const char *where) /* FINISHME: If GL_NV_geometry_program4 is ever supported, the current * FINISHME: geometry program should validated here. */ - (void) geom_from_glsl_shader; + (void) from_glsl_shader[MESA_SHADER_GEOMETRY]; - if (!frag_from_glsl_shader) { + if (!from_glsl_shader[MESA_SHADER_FRAGMENT]) { if (ctx->FragmentProgram.Enabled && !ctx->FragmentProgram._Enabled) { _mesa_error(ctx, GL_INVALID_OPERATION, "%s(fragment program not valid)", where); diff --git a/mesalib/src/mesa/main/dd.h b/mesalib/src/mesa/main/dd.h index ac317e399..971524135 100644 --- a/mesalib/src/mesa/main/dd.h +++ b/mesalib/src/mesa/main/dd.h @@ -399,6 +399,13 @@ struct dd_function_table { void (*UnmapRenderbuffer)(struct gl_context *ctx, struct gl_renderbuffer *rb); + /** + * Optional driver entrypoint that binds a non-texture renderbuffer's + * contents to a texture image. + */ + GLboolean (*BindRenderbufferTexImage)(struct gl_context *ctx, + struct gl_renderbuffer *rb, + struct gl_texture_image *texImage); /*@}*/ @@ -564,9 +571,6 @@ struct dd_function_table { * \name Vertex/pixel buffer object functions */ /*@{*/ - void (*BindBuffer)( struct gl_context *ctx, GLenum target, - struct gl_buffer_object *obj ); - struct gl_buffer_object * (*NewBufferObject)(struct gl_context *ctx, GLuint buffer, GLenum target); @@ -574,7 +578,7 @@ struct dd_function_table { GLboolean (*BufferData)(struct gl_context *ctx, GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage, - struct gl_buffer_object *obj); + GLenum storageFlags, struct gl_buffer_object *obj); void (*BufferSubData)( struct gl_context *ctx, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data, @@ -601,14 +605,17 @@ struct dd_function_table { */ void * (*MapBufferRange)( struct gl_context *ctx, GLintptr offset, GLsizeiptr length, GLbitfield access, - struct gl_buffer_object *obj); + struct gl_buffer_object *obj, + gl_map_buffer_index index); void (*FlushMappedBufferRange)(struct gl_context *ctx, GLintptr offset, GLsizeiptr length, - struct gl_buffer_object *obj); + struct gl_buffer_object *obj, + gl_map_buffer_index index); GLboolean (*UnmapBuffer)( struct gl_context *ctx, - struct gl_buffer_object *obj ); + struct gl_buffer_object *obj, + gl_map_buffer_index index); /*@}*/ /** diff --git a/mesalib/src/mesa/main/dlist.c b/mesalib/src/mesa/main/dlist.c index 08943c9f9..d431fd221 100644 --- a/mesalib/src/mesa/main/dlist.c +++ b/mesalib/src/mesa/main/dlist.c @@ -914,7 +914,8 @@ unpack_image(struct gl_context *ctx, GLuint dimensions, map = (GLubyte *) ctx->Driver.MapBufferRange(ctx, 0, unpack->BufferObj->Size, - GL_MAP_READ_BIT, unpack->BufferObj); + GL_MAP_READ_BIT, unpack->BufferObj, + MAP_INTERNAL); if (!map) { /* unable to map src buffer! */ _mesa_error(ctx, GL_INVALID_OPERATION, "unable to map PBO"); @@ -928,7 +929,7 @@ unpack_image(struct gl_context *ctx, GLuint dimensions, image = _mesa_unpack_image(dimensions, width, height, depth, format, type, src, unpack); - ctx->Driver.UnmapBuffer(ctx, unpack->BufferObj); + ctx->Driver.UnmapBuffer(ctx, unpack->BufferObj, MAP_INTERNAL); if (!image) { _mesa_error(ctx, GL_OUT_OF_MEMORY, "display list construction"); @@ -8176,7 +8177,7 @@ _mesa_GenLists(GLsizei range) /* * Make this an atomic operation */ - _glthread_LOCK_MUTEX(ctx->Shared->Mutex); + mtx_lock(&ctx->Shared->Mutex); base = _mesa_HashFindFreeKeyBlock(ctx->Shared->DisplayList, range); if (base) { @@ -8188,7 +8189,7 @@ _mesa_GenLists(GLsizei range) } } - _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); + mtx_unlock(&ctx->Shared->Mutex); return base; } diff --git a/mesalib/src/mesa/main/drawpix.c b/mesalib/src/mesa/main/drawpix.c index 096615c05..63e5870e6 100644 --- a/mesalib/src/mesa/main/drawpix.c +++ b/mesalib/src/mesa/main/drawpix.c @@ -151,7 +151,7 @@ _mesa_DrawPixels( GLsizei width, GLsizei height, "glDrawPixels(invalid PBO access)"); goto end; } - if (_mesa_bufferobj_mapped(ctx->Unpack.BufferObj)) { + if (_mesa_check_disallowed_mapping(ctx->Unpack.BufferObj)) { /* buffer is mapped - that's an error */ _mesa_error(ctx, GL_INVALID_OPERATION, "glDrawPixels(PBO is mapped)"); @@ -335,7 +335,7 @@ _mesa_Bitmap( GLsizei width, GLsizei height, "glBitmap(invalid PBO access)"); return; } - if (_mesa_bufferobj_mapped(ctx->Unpack.BufferObj)) { + if (_mesa_check_disallowed_mapping(ctx->Unpack.BufferObj)) { /* buffer is mapped - that's an error */ _mesa_error(ctx, GL_INVALID_OPERATION, "glBitmap(PBO is mapped)"); diff --git a/mesalib/src/mesa/main/enable.c b/mesalib/src/mesa/main/enable.c index 40508a456..edd4751e1 100644 --- a/mesalib/src/mesa/main/enable.c +++ b/mesalib/src/mesa/main/enable.c @@ -32,6 +32,7 @@ #include "clip.h" #include "context.h" #include "enable.h" +#include "errors.h" #include "light.h" #include "simple_list.h" #include "mtypes.h" @@ -367,14 +368,26 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state) ctx->Depth.Test = state; break; case GL_DEBUG_OUTPUT: - if (!_mesa_is_desktop_gl(ctx)) + if (!_mesa_is_desktop_gl(ctx)) { goto invalid_enum_error; - ctx->Debug.DebugOutput = state; + } + else { + struct gl_debug_state *debug = _mesa_get_debug_state(ctx); + if (debug) { + debug->DebugOutput = state; + } + } break; case GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB: - if (!_mesa_is_desktop_gl(ctx)) + if (!_mesa_is_desktop_gl(ctx)) { goto invalid_enum_error; - ctx->Debug.SyncOutput = state; + } + else { + struct gl_debug_state *debug = _mesa_get_debug_state(ctx); + if (debug) { + debug->SyncOutput = state; + } + } break; case GL_DITHER: if (ctx->Color.DitherFlag == state) @@ -1228,11 +1241,19 @@ _mesa_IsEnabled( GLenum cap ) case GL_DEBUG_OUTPUT: if (!_mesa_is_desktop_gl(ctx)) goto invalid_enum_error; - return ctx->Debug.DebugOutput; + if (ctx->Debug) { + return ctx->Debug->DebugOutput; + } else { + return GL_FALSE; + } case GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB: if (!_mesa_is_desktop_gl(ctx)) goto invalid_enum_error; - return ctx->Debug.SyncOutput; + if (ctx->Debug) { + return ctx->Debug->SyncOutput; + } else { + return GL_FALSE; + } case GL_DEPTH_TEST: return ctx->Depth.Test; case GL_DITHER: diff --git a/mesalib/src/mesa/main/errors.c b/mesalib/src/mesa/main/errors.c index 28357e0e8..ca73a6686 100644 --- a/mesalib/src/mesa/main/errors.c +++ b/mesalib/src/mesa/main/errors.c @@ -37,12 +37,11 @@ #include "mtypes.h" #include "version.h" #include "hash_table.h" -#include "glapi/glthread.h" #define MESSAGE_LOG 1 #define MESSAGE_LOG_ARB 2 -_glthread_DECLARE_STATIC_MUTEX(DynamicIDMutex); +static mtx_t DynamicIDMutex = _MTX_INITIALIZER_NP; static GLuint NextDynamicID = 1; struct gl_debug_severity @@ -81,6 +80,7 @@ static const GLenum debug_severity_enums[] = { GL_DEBUG_SEVERITY_NOTIFICATION, }; + static enum mesa_debug_source gl_enum_to_debug_source(GLenum e) { @@ -117,6 +117,7 @@ gl_enum_to_debug_severity(GLenum e) return i; } + /** * Handles generating a GL_ARB_debug_output message ID generated by the GL or * GLSL compiler. @@ -134,13 +135,14 @@ static void debug_get_id(GLuint *id) { if (!(*id)) { - _glthread_LOCK_MUTEX(DynamicIDMutex); + mtx_lock(&DynamicIDMutex); if (!(*id)) *id = NextDynamicID++; - _glthread_UNLOCK_MUTEX(DynamicIDMutex); + mtx_unlock(&DynamicIDMutex); } } + /* * We store a bitfield in the hash table, with five possible values total. * @@ -182,6 +184,50 @@ enum { ENABLED = ENABLED_BIT | FOUND_BIT }; + +/** + * Return debug state for the context. The debug state will be allocated + * and initialized upon the first call. + */ +struct gl_debug_state * +_mesa_get_debug_state(struct gl_context *ctx) +{ + if (!ctx->Debug) { + ctx->Debug = CALLOC_STRUCT(gl_debug_state); + if (!ctx->Debug) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "allocating debug state"); + } + else { + struct gl_debug_state *debug = ctx->Debug; + int s, t, sev; + + /* Enable all the messages with severity HIGH or MEDIUM by default. */ + memset(debug->Defaults[0][MESA_DEBUG_SEVERITY_HIGH], GL_TRUE, + sizeof debug->Defaults[0][MESA_DEBUG_SEVERITY_HIGH]); + memset(debug->Defaults[0][MESA_DEBUG_SEVERITY_MEDIUM], GL_TRUE, + sizeof debug->Defaults[0][MESA_DEBUG_SEVERITY_MEDIUM]); + memset(debug->Defaults[0][MESA_DEBUG_SEVERITY_LOW], GL_FALSE, + sizeof debug->Defaults[0][MESA_DEBUG_SEVERITY_LOW]); + + /* Initialize state for filtering known debug messages. */ + for (s = 0; s < MESA_DEBUG_SOURCE_COUNT; s++) { + for (t = 0; t < MESA_DEBUG_TYPE_COUNT; t++) { + debug->Namespaces[0][s][t].IDs = _mesa_NewHashTable(); + assert(debug->Namespaces[0][s][t].IDs); + + for (sev = 0; sev < MESA_DEBUG_SEVERITY_COUNT; sev++) { + make_empty_list(&debug->Namespaces[0][s][t].Severity[sev]); + } + } + } + } + } + + return ctx->Debug; +} + + + /** * Returns the state of the given message source/type/ID tuple. */ @@ -192,52 +238,64 @@ should_log(struct gl_context *ctx, GLuint id, enum mesa_debug_severity severity) { - GLint gstack = ctx->Debug.GroupStackDepth; - struct gl_debug_namespace *nspace = - &ctx->Debug.Namespaces[gstack][source][type]; - uintptr_t state; + struct gl_debug_state *debug; + uintptr_t state = 0; - if (!ctx->Debug.DebugOutput) + if (!ctx->Debug) { + /* no debug state set so far */ return GL_FALSE; + } - /* In addition to not being able to store zero as a value, HashTable also - can't use zero as a key. */ - if (id) - state = (uintptr_t)_mesa_HashLookup(nspace->IDs, id); - else - state = nspace->ZeroID; - - /* Only do this once for each ID. This makes sure the ID exists in, - at most, one list, and does not pointlessly appear multiple times. */ - if (!(state & KNOWN_SEVERITY)) { - struct gl_debug_severity *entry; - - if (state == NOT_FOUND) { - if (ctx->Debug.Defaults[gstack][severity][source][type]) - state = ENABLED; - else - state = DISABLED; - } - - entry = malloc(sizeof *entry); - if (!entry) - goto out; + debug = _mesa_get_debug_state(ctx); + if (debug) { + const GLint gstack = debug->GroupStackDepth; + struct gl_debug_namespace *nspace = + &debug->Namespaces[gstack][source][type]; - state |= KNOWN_SEVERITY; + if (!debug->DebugOutput) + return GL_FALSE; + /* In addition to not being able to store zero as a value, HashTable also + * can't use zero as a key. + */ if (id) - _mesa_HashInsert(nspace->IDs, id, (void*)state); + state = (uintptr_t)_mesa_HashLookup(nspace->IDs, id); else - nspace->ZeroID = state; + state = nspace->ZeroID; - entry->ID = id; - insert_at_tail(&nspace->Severity[severity], &entry->link); - } + /* Only do this once for each ID. This makes sure the ID exists in, + * at most, one list, and does not pointlessly appear multiple times. + */ + if (!(state & KNOWN_SEVERITY)) { + struct gl_debug_severity *entry; + + if (state == NOT_FOUND) { + if (debug->Defaults[gstack][severity][source][type]) + state = ENABLED; + else + state = DISABLED; + } + + entry = malloc(sizeof *entry); + if (!entry) + goto out; + + state |= KNOWN_SEVERITY; + if (id) + _mesa_HashInsert(nspace->IDs, id, (void*)state); + else + nspace->ZeroID = state; + + entry->ID = id; + insert_at_tail(&nspace->Severity[severity], &entry->link); + } + } out: return !!(state & ENABLED_BIT); } + /** * Sets the state of the given message source/type/ID tuple. */ @@ -247,33 +305,39 @@ set_message_state(struct gl_context *ctx, enum mesa_debug_type type, GLuint id, GLboolean enabled) { - GLint gstack = ctx->Debug.GroupStackDepth; - struct gl_debug_namespace *nspace = - &ctx->Debug.Namespaces[gstack][source][type]; - uintptr_t state; - - /* In addition to not being able to store zero as a value, HashTable also - can't use zero as a key. */ - if (id) - state = (uintptr_t)_mesa_HashLookup(nspace->IDs, id); - else - state = nspace->ZeroID; - - if (state == NOT_FOUND) - state = enabled ? ENABLED : DISABLED; - else { - if (enabled) - state |= ENABLED_BIT; + struct gl_debug_state *debug = _mesa_get_debug_state(ctx); + + if (debug) { + GLint gstack = debug->GroupStackDepth; + struct gl_debug_namespace *nspace = + &debug->Namespaces[gstack][source][type]; + uintptr_t state; + + /* In addition to not being able to store zero as a value, HashTable also + * can't use zero as a key. + */ + if (id) + state = (uintptr_t)_mesa_HashLookup(nspace->IDs, id); else - state &= ~ENABLED_BIT; - } + state = nspace->ZeroID; - if (id) - _mesa_HashInsert(nspace->IDs, id, (void*)state); - else - nspace->ZeroID = state; + if (state == NOT_FOUND) + state = enabled ? ENABLED : DISABLED; + else { + if (enabled) + state |= ENABLED_BIT; + else + state &= ~ENABLED_BIT; + } + + if (id) + _mesa_HashInsert(nspace->IDs, id, (void*)state); + else + nspace->ZeroID = state; + } } + static void store_message_details(struct gl_debug_msg *emptySlot, enum mesa_debug_source source, @@ -307,7 +371,8 @@ store_message_details(struct gl_debug_msg *emptySlot, } } - /** + +/** * Remap any type exclusive to KHR_debug to something suitable * for ARB_debug_output */ @@ -326,6 +391,7 @@ remap_type(GLenum type) { return type; } + /** * Remap severity exclusive to KHR_debug to something suitable * for ARB_debug_output @@ -339,6 +405,7 @@ remap_severity(GLenum severity) { return severity; } + /** * 'buf' is not necessarily a null-terminated string. When logging, copy * 'len' characters from it, store them in a new, null-terminated string, @@ -346,49 +413,51 @@ remap_severity(GLenum severity) { * the null terminator this time. */ static void -_mesa_log_msg(struct gl_context *ctx, enum mesa_debug_source source, - enum mesa_debug_type type, GLuint id, - enum mesa_debug_severity severity, GLint len, const char *buf) +log_msg(struct gl_context *ctx, enum mesa_debug_source source, + enum mesa_debug_type type, GLuint id, + enum mesa_debug_severity severity, GLint len, const char *buf) { + struct gl_debug_state *debug = _mesa_get_debug_state(ctx); GLint nextEmpty; struct gl_debug_msg *emptySlot; + if (!debug) + return; + assert(len >= 0 && len < MAX_DEBUG_MESSAGE_LENGTH); if (!should_log(ctx, source, type, id, severity)) return; - if (ctx->Debug.Callback) { + if (debug->Callback) { GLenum gl_type = debug_type_enums[type]; GLenum gl_severity = debug_severity_enums[severity]; - if (ctx->Debug.ARBCallback) { + if (debug->ARBCallback) { gl_severity = remap_severity(gl_severity); gl_type = remap_type(gl_type); } - ctx->Debug.Callback(debug_source_enums[source], - gl_type, - id, - gl_severity, - len, buf, ctx->Debug.CallbackData); + debug->Callback(debug_source_enums[source], gl_type, id, gl_severity, + len, buf, debug->CallbackData); return; } - if (ctx->Debug.NumMessages == MAX_DEBUG_LOGGED_MESSAGES) + if (debug->NumMessages == MAX_DEBUG_LOGGED_MESSAGES) return; - nextEmpty = (ctx->Debug.NextMsg + ctx->Debug.NumMessages) + nextEmpty = (debug->NextMsg + debug->NumMessages) % MAX_DEBUG_LOGGED_MESSAGES; - emptySlot = &ctx->Debug.Log[nextEmpty]; + emptySlot = &debug->Log[nextEmpty]; store_message_details(emptySlot, source, type, id, severity, len, buf); - if (ctx->Debug.NumMessages == 0) - ctx->Debug.NextMsgLength = ctx->Debug.Log[ctx->Debug.NextMsg].length; + if (debug->NumMessages == 0) + debug->NextMsgLength = debug->Log[debug->NextMsg].length; - ctx->Debug.NumMessages++; + debug->NumMessages++; } + /** * Pop the oldest debug message out of the log. * Writes the message string, including the null terminator, into 'buf', @@ -400,20 +469,21 @@ _mesa_log_msg(struct gl_context *ctx, enum mesa_debug_source source, * indicates failure. */ static GLsizei -_mesa_get_msg(struct gl_context *ctx, GLenum *source, GLenum *type, - GLuint *id, GLenum *severity, GLsizei bufSize, char *buf, - unsigned caller) +get_msg(struct gl_context *ctx, GLenum *source, GLenum *type, + GLuint *id, GLenum *severity, GLsizei bufSize, char *buf, + unsigned caller) { + struct gl_debug_state *debug = _mesa_get_debug_state(ctx); struct gl_debug_msg *msg; GLsizei length; - if (ctx->Debug.NumMessages == 0) + if (!debug || debug->NumMessages == 0) return 0; - msg = &ctx->Debug.Log[ctx->Debug.NextMsg]; + msg = &debug->Log[debug->NextMsg]; length = msg->length; - assert(length > 0 && length == ctx->Debug.NextMsgLength); + assert(length > 0 && length == debug->NextMsgLength); if (bufSize < length && buf != NULL) return 0; @@ -423,15 +493,20 @@ _mesa_get_msg(struct gl_context *ctx, GLenum *source, GLenum *type, if (caller == MESSAGE_LOG_ARB) *severity = remap_severity(*severity); } - if (source) + + if (source) { *source = debug_source_enums[msg->source]; + } + if (type) { *type = debug_type_enums[msg->type]; if (caller == MESSAGE_LOG_ARB) *type = remap_type(*type); } - if (id) + + if (id) { *id = msg->id; + } if (buf) { assert(msg->message[length-1] == '\0'); @@ -443,14 +518,15 @@ _mesa_get_msg(struct gl_context *ctx, GLenum *source, GLenum *type, msg->message = NULL; msg->length = 0; - ctx->Debug.NumMessages--; - ctx->Debug.NextMsg++; - ctx->Debug.NextMsg %= MAX_DEBUG_LOGGED_MESSAGES; - ctx->Debug.NextMsgLength = ctx->Debug.Log[ctx->Debug.NextMsg].length; + debug->NumMessages--; + debug->NextMsg++; + debug->NextMsg %= MAX_DEBUG_LOGGED_MESSAGES; + debug->NextMsgLength = debug->Log[debug->NextMsg].length; return length; } + /** * Verify that source, type, and severity are valid enums. * glDebugMessageInsertARB only accepts two values for 'source', @@ -523,14 +599,14 @@ validate_params(struct gl_context *ctx, unsigned caller, return GL_TRUE; error: - { - _mesa_error(ctx, GL_INVALID_ENUM, "bad values passed to %s" - "(source=0x%x, type=0x%x, severity=0x%x)", callerstr, - source, type, severity); - } + _mesa_error(ctx, GL_INVALID_ENUM, "bad values passed to %s" + "(source=0x%x, type=0x%x, severity=0x%x)", callerstr, + source, type, severity); + return GL_FALSE; } + /** * Set the state of all message IDs found in the given intersection of * 'source', 'type', and 'severity'. The _COUNT enum can be used for @@ -549,8 +625,12 @@ control_messages(struct gl_context *ctx, enum mesa_debug_severity severity, GLboolean enabled) { + struct gl_debug_state *debug = _mesa_get_debug_state(ctx); int s, t, sev, smax, tmax, sevmax; - GLint gstack = ctx->Debug.GroupStackDepth; + const GLint gstack = debug ? debug->GroupStackDepth : 0; + + if (!debug) + return; if (source == MESA_DEBUG_SOURCE_COUNT) { source = 0; @@ -573,23 +653,26 @@ control_messages(struct gl_context *ctx, sevmax = severity+1; } - for (sev = severity; sev < sevmax; sev++) - for (s = source; s < smax; s++) + for (sev = severity; sev < sevmax; sev++) { + for (s = source; s < smax; s++) { for (t = type; t < tmax; t++) { struct simple_node *node; struct gl_debug_severity *entry; /* change the default for IDs we've never seen before. */ - ctx->Debug.Defaults[gstack][sev][s][t] = enabled; + debug->Defaults[gstack][sev][s][t] = enabled; /* Now change the state of IDs we *have* seen... */ - foreach(node, &ctx->Debug.Namespaces[gstack][s][t].Severity[sev]) { + foreach(node, &debug->Namespaces[gstack][s][t].Severity[sev]) { entry = (struct gl_debug_severity *)node; set_message_state(ctx, s, t, entry->ID, enabled); } } + } + } } + /** * Debugging-message namespaces with the source APPLICATION or THIRD_PARTY * require special handling, since the IDs in them are controlled by clients, @@ -621,6 +704,7 @@ control_app_messages(struct gl_context *ctx, GLenum esource, GLenum etype, control_messages(ctx, source, type, severity, enabled); } + /** * This is a generic message control function for use by both * glDebugMessageControlARB and glDebugMessageControl. @@ -658,6 +742,7 @@ message_control(GLenum gl_source, GLenum gl_type, count, ids, enabled); } + /** * This is a generic message insert function. * Validation of source, type and severity parameters should be done @@ -665,7 +750,7 @@ message_control(GLenum gl_source, GLenum gl_type, */ static void message_insert(GLenum source, GLenum type, GLuint id, - GLenum severity, GLint length, const GLchar* buf, + GLenum severity, GLint length, const GLchar *buf, const char *callerstr) { GET_CURRENT_CONTEXT(ctx); @@ -681,20 +766,21 @@ message_insert(GLenum source, GLenum type, GLuint id, return; } - _mesa_log_msg(ctx, - gl_enum_to_debug_source(source), - gl_enum_to_debug_type(type), id, - gl_enum_to_debug_severity(severity), length, buf); + log_msg(ctx, + gl_enum_to_debug_source(source), + gl_enum_to_debug_type(type), id, + gl_enum_to_debug_severity(severity), length, buf); } + /** * This is a generic message insert function for use by both * glGetDebugMessageLogARB and glGetDebugMessageLog. */ static GLuint -get_message_log(GLuint count, GLsizei logSize, GLenum* sources, - GLenum* types, GLenum* ids, GLenum* severities, - GLsizei* lengths, GLchar* messageLog, +get_message_log(GLuint count, GLsizei logSize, GLenum *sources, + GLenum *types, GLenum *ids, GLenum *severities, + GLsizei *lengths, GLchar *messageLog, unsigned caller, const char *callerstr) { GET_CURRENT_CONTEXT(ctx); @@ -711,8 +797,8 @@ get_message_log(GLuint count, GLsizei logSize, GLenum* sources, } for (ret = 0; ret < count; ret++) { - GLsizei written = _mesa_get_msg(ctx, sources, types, ids, severities, - logSize, messageLog, caller); + GLsizei written = get_msg(ctx, sources, types, ids, severities, + logSize, messageLog, caller); if (!written) break; @@ -738,41 +824,52 @@ get_message_log(GLuint count, GLsizei logSize, GLenum* sources, return ret; } + static void do_nothing(GLuint key, void *data, void *userData) { } + +/** + * Free context state pertaining to error/debug state for the given stack + * depth. + */ static void free_errors_data(struct gl_context *ctx, GLint gstack) { + struct gl_debug_state *debug = ctx->Debug; enum mesa_debug_type t; enum mesa_debug_source s; enum mesa_debug_severity sev; + assert(debug); + /* Tear down state for filtering debug messages. */ - for (s = 0; s < MESA_DEBUG_SOURCE_COUNT; s++) + for (s = 0; s < MESA_DEBUG_SOURCE_COUNT; s++) { for (t = 0; t < MESA_DEBUG_TYPE_COUNT; t++) { - _mesa_HashDeleteAll(ctx->Debug.Namespaces[gstack][s][t].IDs, + _mesa_HashDeleteAll(debug->Namespaces[gstack][s][t].IDs, do_nothing, NULL); - _mesa_DeleteHashTable(ctx->Debug.Namespaces[gstack][s][t].IDs); + _mesa_DeleteHashTable(debug->Namespaces[gstack][s][t].IDs); for (sev = 0; sev < MESA_DEBUG_SEVERITY_COUNT; sev++) { struct simple_node *node, *tmp; struct gl_debug_severity *entry; foreach_s(node, tmp, - &ctx->Debug.Namespaces[gstack][s][t].Severity[sev]) { + &debug->Namespaces[gstack][s][t].Severity[sev]) { entry = (struct gl_debug_severity *)node; free(entry); } } } + } } + void GLAPIENTRY _mesa_DebugMessageInsert(GLenum source, GLenum type, GLuint id, GLenum severity, GLint length, - const GLchar* buf) + const GLchar *buf) { const char *callerstr = "glDebugMessageInsert"; @@ -781,14 +878,14 @@ _mesa_DebugMessageInsert(GLenum source, GLenum type, GLuint id, if (!validate_params(ctx, INSERT, callerstr, source, type, severity)) return; /* GL_INVALID_ENUM */ - message_insert(source, type, id, severity, length, buf, - callerstr); + message_insert(source, type, id, severity, length, buf, callerstr); } + GLuint GLAPIENTRY -_mesa_GetDebugMessageLog(GLuint count, GLsizei logSize, GLenum* sources, - GLenum* types, GLenum* ids, GLenum* severities, - GLsizei* lengths, GLchar* messageLog) +_mesa_GetDebugMessageLog(GLuint count, GLsizei logSize, GLenum *sources, + GLenum *types, GLenum *ids, GLenum *severities, + GLsizei *lengths, GLchar *messageLog) { const char *callerstr = "glGetDebugMessageLog"; @@ -796,6 +893,7 @@ _mesa_GetDebugMessageLog(GLuint count, GLsizei logSize, GLenum* sources, lengths, messageLog, MESSAGE_LOG, callerstr); } + void GLAPIENTRY _mesa_DebugMessageControl(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, @@ -807,28 +905,36 @@ _mesa_DebugMessageControl(GLenum source, GLenum type, GLenum severity, enabled, CONTROL, callerstr); } + void GLAPIENTRY _mesa_DebugMessageCallback(GLDEBUGPROC callback, const void *userParam) { GET_CURRENT_CONTEXT(ctx); - ctx->Debug.Callback = callback; - ctx->Debug.CallbackData = userParam; - ctx->Debug.ARBCallback = GL_FALSE; + struct gl_debug_state *debug = _mesa_get_debug_state(ctx); + if (debug) { + debug->Callback = callback; + debug->CallbackData = userParam; + debug->ARBCallback = GL_FALSE; + } } + void GLAPIENTRY _mesa_PushDebugGroup(GLenum source, GLuint id, GLsizei length, const GLchar *message) { + GET_CURRENT_CONTEXT(ctx); + struct gl_debug_state *debug = _mesa_get_debug_state(ctx); const char *callerstr = "glPushDebugGroup"; int s, t, sev; GLint prevStackDepth; GLint currStackDepth; struct gl_debug_msg *emptySlot; - GET_CURRENT_CONTEXT(ctx); + if (!debug) + return; - if (ctx->Debug.GroupStackDepth >= MAX_DEBUG_GROUP_STACK_DEPTH-1) { + if (debug->GroupStackDepth >= MAX_DEBUG_GROUP_STACK_DEPTH-1) { _mesa_error(ctx, GL_STACK_OVERFLOW, "%s", callerstr); return; } @@ -847,14 +953,14 @@ _mesa_PushDebugGroup(GLenum source, GLuint id, GLsizei length, GL_DEBUG_SEVERITY_NOTIFICATION, length, message, callerstr); - prevStackDepth = ctx->Debug.GroupStackDepth; - ctx->Debug.GroupStackDepth++; - currStackDepth = ctx->Debug.GroupStackDepth; + prevStackDepth = debug->GroupStackDepth; + debug->GroupStackDepth++; + currStackDepth = debug->GroupStackDepth; /* pop reuses the message details from push so we store this */ if (length < 0) length = strlen(message); - emptySlot = &ctx->Debug.DebugGroupMsgs[ctx->Debug.GroupStackDepth]; + emptySlot = &debug->DebugGroupMsgs[debug->GroupStackDepth]; store_message_details(emptySlot, gl_enum_to_debug_source(source), gl_enum_to_debug_type(GL_DEBUG_TYPE_PUSH_GROUP), id, @@ -864,60 +970,66 @@ _mesa_PushDebugGroup(GLenum source, GLuint id, GLsizei length, /* inherit the control volume of the debug group previously residing on * the top of the debug group stack */ - for (s = 0; s < MESA_DEBUG_SOURCE_COUNT; s++) + for (s = 0; s < MESA_DEBUG_SOURCE_COUNT; s++) { for (t = 0; t < MESA_DEBUG_TYPE_COUNT; t++) { /* copy id settings */ - ctx->Debug.Namespaces[currStackDepth][s][t].IDs = - _mesa_HashClone(ctx->Debug.Namespaces[prevStackDepth][s][t].IDs); + debug->Namespaces[currStackDepth][s][t].IDs = + _mesa_HashClone(debug->Namespaces[prevStackDepth][s][t].IDs); for (sev = 0; sev < MESA_DEBUG_SEVERITY_COUNT; sev++) { struct gl_debug_severity *entry, *prevEntry; struct simple_node *node; /* copy default settings for unknown ids */ - ctx->Debug.Defaults[currStackDepth][sev][s][t] = ctx->Debug.Defaults[prevStackDepth][sev][s][t]; + debug->Defaults[currStackDepth][sev][s][t] = + debug->Defaults[prevStackDepth][sev][s][t]; /* copy known id severity settings */ - make_empty_list(&ctx->Debug.Namespaces[currStackDepth][s][t].Severity[sev]); - foreach(node, &ctx->Debug.Namespaces[prevStackDepth][s][t].Severity[sev]) { + make_empty_list(&debug->Namespaces[currStackDepth][s][t].Severity[sev]); + foreach(node, &debug->Namespaces[prevStackDepth][s][t].Severity[sev]) { prevEntry = (struct gl_debug_severity *)node; entry = malloc(sizeof *entry); if (!entry) return; entry->ID = prevEntry->ID; - insert_at_tail(&ctx->Debug.Namespaces[currStackDepth][s][t].Severity[sev], &entry->link); + insert_at_tail(&debug->Namespaces[currStackDepth][s][t].Severity[sev], &entry->link); } } } + } } + void GLAPIENTRY -_mesa_PopDebugGroup() +_mesa_PopDebugGroup(void) { + GET_CURRENT_CONTEXT(ctx); + struct gl_debug_state *debug = _mesa_get_debug_state(ctx); const char *callerstr = "glPopDebugGroup"; struct gl_debug_msg *gdmessage; GLint prevStackDepth; - GET_CURRENT_CONTEXT(ctx); + if (!debug) + return; - if (ctx->Debug.GroupStackDepth <= 0) { + if (debug->GroupStackDepth <= 0) { _mesa_error(ctx, GL_STACK_UNDERFLOW, "%s", callerstr); return; } - prevStackDepth = ctx->Debug.GroupStackDepth; - ctx->Debug.GroupStackDepth--; + prevStackDepth = debug->GroupStackDepth; + debug->GroupStackDepth--; - gdmessage = &ctx->Debug.DebugGroupMsgs[prevStackDepth]; - /* using _mesa_log_msg() directly here as verification of parameters + gdmessage = &debug->DebugGroupMsgs[prevStackDepth]; + /* using log_msg() directly here as verification of parameters * already done in push */ - _mesa_log_msg(ctx, gdmessage->source, - gl_enum_to_debug_type(GL_DEBUG_TYPE_POP_GROUP), - gdmessage->id, - gl_enum_to_debug_severity(GL_DEBUG_SEVERITY_NOTIFICATION), - gdmessage->length, gdmessage->message); + log_msg(ctx, gdmessage->source, + gl_enum_to_debug_type(GL_DEBUG_TYPE_POP_GROUP), + gdmessage->id, + gl_enum_to_debug_severity(GL_DEBUG_SEVERITY_NOTIFICATION), + gdmessage->length, gdmessage->message); if (gdmessage->message != (char*)out_of_memory) free(gdmessage->message); @@ -928,10 +1040,11 @@ _mesa_PopDebugGroup() free_errors_data(ctx, prevStackDepth); } + void GLAPIENTRY _mesa_DebugMessageInsertARB(GLenum source, GLenum type, GLuint id, GLenum severity, GLint length, - const GLcharARB* buf) + const GLcharARB *buf) { const char *callerstr = "glDebugMessageInsertARB"; @@ -940,14 +1053,14 @@ _mesa_DebugMessageInsertARB(GLenum source, GLenum type, GLuint id, if (!validate_params(ctx, INSERT_ARB, callerstr, source, type, severity)) return; /* GL_INVALID_ENUM */ - message_insert(source, type, id, severity, length, buf, - callerstr); + message_insert(source, type, id, severity, length, buf, callerstr); } + GLuint GLAPIENTRY -_mesa_GetDebugMessageLogARB(GLuint count, GLsizei logSize, GLenum* sources, - GLenum* types, GLenum* ids, GLenum* severities, - GLsizei* lengths, GLcharARB* messageLog) +_mesa_GetDebugMessageLogARB(GLuint count, GLsizei logSize, GLenum *sources, + GLenum *types, GLenum *ids, GLenum *severities, + GLsizei *lengths, GLcharARB *messageLog) { const char *callerstr = "glGetDebugMessageLogARB"; @@ -955,6 +1068,7 @@ _mesa_GetDebugMessageLogARB(GLuint count, GLsizei logSize, GLenum* sources, lengths, messageLog, MESSAGE_LOG_ARB, callerstr); } + void GLAPIENTRY _mesa_DebugMessageControlARB(GLenum gl_source, GLenum gl_type, GLenum gl_severity, @@ -967,47 +1081,27 @@ _mesa_DebugMessageControlARB(GLenum gl_source, GLenum gl_type, enabled, CONTROL_ARB, callerstr); } + void GLAPIENTRY _mesa_DebugMessageCallbackARB(GLDEBUGPROCARB callback, const void *userParam) { GET_CURRENT_CONTEXT(ctx); - ctx->Debug.Callback = callback; - ctx->Debug.CallbackData = userParam; - ctx->Debug.ARBCallback = GL_TRUE; + struct gl_debug_state *debug = _mesa_get_debug_state(ctx); + if (debug) { + debug->Callback = callback; + debug->CallbackData = userParam; + debug->ARBCallback = GL_TRUE; + } } + void _mesa_init_errors(struct gl_context *ctx) { - int s, t, sev; - - ctx->Debug.Callback = NULL; - ctx->Debug.SyncOutput = GL_FALSE; - ctx->Debug.Log[0].length = 0; - ctx->Debug.NumMessages = 0; - ctx->Debug.NextMsg = 0; - ctx->Debug.NextMsgLength = 0; - ctx->Debug.GroupStackDepth = 0; - - /* Enable all the messages with severity HIGH or MEDIUM by default. */ - memset(ctx->Debug.Defaults[0][MESA_DEBUG_SEVERITY_HIGH], GL_TRUE, - sizeof ctx->Debug.Defaults[0][MESA_DEBUG_SEVERITY_HIGH]); - memset(ctx->Debug.Defaults[0][MESA_DEBUG_SEVERITY_MEDIUM], GL_TRUE, - sizeof ctx->Debug.Defaults[0][MESA_DEBUG_SEVERITY_MEDIUM]); - memset(ctx->Debug.Defaults[0][MESA_DEBUG_SEVERITY_LOW], GL_FALSE, - sizeof ctx->Debug.Defaults[0][MESA_DEBUG_SEVERITY_LOW]); - - /* Initialize state for filtering known debug messages. */ - for (s = 0; s < MESA_DEBUG_SOURCE_COUNT; s++) - for (t = 0; t < MESA_DEBUG_TYPE_COUNT; t++) { - ctx->Debug.Namespaces[0][s][t].IDs = _mesa_NewHashTable(); - assert(ctx->Debug.Namespaces[0][s][t].IDs); - - for (sev = 0; sev < MESA_DEBUG_SEVERITY_COUNT; sev++) - make_empty_list(&ctx->Debug.Namespaces[0][s][t].Severity[sev]); - } + /* no-op */ } + /** * Loop through debug group stack tearing down states for * filtering debug messages. @@ -1015,13 +1109,16 @@ _mesa_init_errors(struct gl_context *ctx) void _mesa_free_errors_data(struct gl_context *ctx) { - GLint i; + if (ctx->Debug) { + GLint i; - for (i = 0; i <= ctx->Debug.GroupStackDepth; i++) { - free_errors_data(ctx, i); + for (i = 0; i <= ctx->Debug->GroupStackDepth; i++) { + free_errors_data(ctx, i); + } } } + /**********************************************************************/ /** \name Diagnostics */ /*@{*/ @@ -1077,6 +1174,7 @@ output_if_debug(const char *prefixString, const char *outputString, } } + /** * When a new type of error is recorded, print a message describing * previous errors which were accumulated. @@ -1149,6 +1247,7 @@ _mesa_problem( const struct gl_context *ctx, const char *fmtString, ... ) } } + static GLboolean should_output(struct gl_context *ctx, GLenum error, const char *fmtString) { @@ -1185,6 +1284,7 @@ should_output(struct gl_context *ctx, GLenum error, const char *fmtString) return GL_FALSE; } + void _mesa_gl_debug(struct gl_context *ctx, GLuint *id, @@ -1202,8 +1302,7 @@ _mesa_gl_debug(struct gl_context *ctx, len = _mesa_vsnprintf(s, MAX_DEBUG_MESSAGE_LENGTH, fmtString, args); va_end(args); - _mesa_log_msg(ctx, MESA_DEBUG_SOURCE_API, type, - *id, severity, len, s); + log_msg(ctx, MESA_DEBUG_SOURCE_API, type, *id, severity, len, s); } @@ -1248,7 +1347,8 @@ _mesa_error( struct gl_context *ctx, GLenum error, const char *fmtString, ... ) if (len >= MAX_DEBUG_MESSAGE_LENGTH) { /* Too long error message. Whoever calls _mesa_error should use - * shorter strings. */ + * shorter strings. + */ ASSERT(0); return; } @@ -1268,11 +1368,8 @@ _mesa_error( struct gl_context *ctx, GLenum error, const char *fmtString, ... ) /* Log the error via ARB_debug_output if needed.*/ if (do_log) { - _mesa_log_msg(ctx, - MESA_DEBUG_SOURCE_API, - MESA_DEBUG_TYPE_ERROR, - error_msg_id, - MESA_DEBUG_SEVERITY_HIGH, len, s2); + log_msg(ctx, MESA_DEBUG_SOURCE_API, MESA_DEBUG_TYPE_ERROR, + error_msg_id, MESA_DEBUG_SEVERITY_HIGH, len, s2); } } @@ -1329,7 +1426,7 @@ _mesa_shader_debug( struct gl_context *ctx, GLenum type, GLuint *id, if (len >= MAX_DEBUG_MESSAGE_LENGTH) len = MAX_DEBUG_MESSAGE_LENGTH - 1; - _mesa_log_msg(ctx, source, type, *id, severity, len, msg); + log_msg(ctx, source, type, *id, severity, len, msg); } /*@}*/ diff --git a/mesalib/src/mesa/main/errors.h b/mesalib/src/mesa/main/errors.h index a837dc8e1..cd414e6b6 100644 --- a/mesalib/src/mesa/main/errors.h +++ b/mesalib/src/mesa/main/errors.h @@ -83,6 +83,9 @@ _mesa_gl_debug(struct gl_context *ctx, } \ } while (0) +struct gl_debug_state * +_mesa_get_debug_state(struct gl_context *ctx); + extern void _mesa_shader_debug(struct gl_context *ctx, GLenum type, GLuint *id, const char *msg, int len); diff --git a/mesalib/src/mesa/main/execmem.c b/mesalib/src/mesa/main/execmem.c index d63bb4a4e..7267cf85f 100644 --- a/mesalib/src/mesa/main/execmem.c +++ b/mesalib/src/mesa/main/execmem.c @@ -32,7 +32,6 @@ #include "imports.h" -#include "glapi/glthread.h" @@ -59,7 +58,7 @@ #define EXEC_HEAP_SIZE (10*1024*1024) -_glthread_DECLARE_STATIC_MUTEX(exec_mutex); +static mtx_t exec_mutex = _MTX_INITIALIZER_NP; static struct mem_block *exec_heap = NULL; static unsigned char *exec_mem = NULL; @@ -93,7 +92,7 @@ _mesa_exec_malloc(GLuint size) struct mem_block *block = NULL; void *addr = NULL; - _glthread_LOCK_MUTEX(exec_mutex); + mtx_lock(&exec_mutex); if (!init_heap()) goto bail; @@ -109,7 +108,7 @@ _mesa_exec_malloc(GLuint size) printf("_mesa_exec_malloc failed\n"); bail: - _glthread_UNLOCK_MUTEX(exec_mutex); + mtx_unlock(&exec_mutex); return addr; } @@ -118,7 +117,7 @@ bail: void _mesa_exec_free(void *addr) { - _glthread_LOCK_MUTEX(exec_mutex); + mtx_lock(&exec_mutex); if (exec_heap) { struct mem_block *block = mmFindBlock(exec_heap, (unsigned char *)addr - exec_mem); @@ -127,7 +126,7 @@ _mesa_exec_free(void *addr) mmFreeMem(block); } - _glthread_UNLOCK_MUTEX(exec_mutex); + mtx_unlock(&exec_mutex); } diff --git a/mesalib/src/mesa/main/extensions.c b/mesalib/src/mesa/main/extensions.c index 5f741fbd2..c46d70b20 100644 --- a/mesalib/src/mesa/main/extensions.c +++ b/mesalib/src/mesa/main/extensions.c @@ -83,6 +83,7 @@ static const struct extension extension_table[] = { { "GL_ARB_arrays_of_arrays", o(ARB_arrays_of_arrays), GL, 2012 }, { "GL_ARB_base_instance", o(ARB_base_instance), GL, 2011 }, { "GL_ARB_blend_func_extended", o(ARB_blend_func_extended), GL, 2009 }, + { "GL_ARB_buffer_storage", o(ARB_buffer_storage), GL, 2013 }, { "GL_ARB_clear_buffer_object", o(dummy_true), GL, 2012 }, { "GL_ARB_color_buffer_float", o(ARB_color_buffer_float), GL, 2004 }, { "GL_ARB_compute_shader", o(ARB_compute_shader), GL, 2012 }, @@ -106,7 +107,7 @@ static const struct extension extension_table[] = { { "GL_ARB_framebuffer_sRGB", o(EXT_framebuffer_sRGB), GL, 1998 }, { "GL_ARB_get_program_binary", o(dummy_true), GL, 2010 }, { "GL_ARB_gpu_shader5", o(ARB_gpu_shader5), GL, 2010 }, - { "GL_ARB_half_float_pixel", o(ARB_half_float_pixel), GL, 2003 }, + { "GL_ARB_half_float_pixel", o(dummy_true), GL, 2003 }, { "GL_ARB_half_float_vertex", o(ARB_half_float_vertex), GL, 2008 }, { "GL_ARB_instanced_arrays", o(ARB_instanced_arrays), GL, 2008 }, { "GL_ARB_internalformat_query", o(ARB_internalformat_query), GL, 2011 }, @@ -126,6 +127,7 @@ static const struct extension extension_table[] = { { "GL_ARB_sample_shading", o(ARB_sample_shading), GL, 2009 }, { "GL_ARB_sampler_objects", o(dummy_true), GL, 2009 }, { "GL_ARB_seamless_cube_map", o(ARB_seamless_cube_map), GL, 2009 }, + { "GL_ARB_separate_shader_objects", o(ARB_separate_shader_objects), GL, 2010 }, { "GL_ARB_shader_atomic_counters", o(ARB_shader_atomic_counters), GL, 2011 }, { "GL_ARB_shader_bit_encoding", o(ARB_shader_bit_encoding), GL, 2010 }, { "GL_ARB_shader_image_load_store", o(ARB_shader_image_load_store), GL, 2011 }, @@ -401,7 +403,6 @@ _mesa_enable_sw_extensions(struct gl_context *ctx) ctx->Extensions.ARB_fragment_program_shadow = GL_TRUE; ctx->Extensions.ARB_fragment_shader = GL_TRUE; ctx->Extensions.ARB_framebuffer_object = GL_TRUE; - ctx->Extensions.ARB_half_float_pixel = GL_TRUE; ctx->Extensions.ARB_half_float_vertex = GL_TRUE; ctx->Extensions.ARB_map_buffer_range = GL_TRUE; ctx->Extensions.ARB_occlusion_query = GL_TRUE; diff --git a/mesalib/src/mesa/main/fbobject.c b/mesalib/src/mesa/main/fbobject.c index e459e0c63..a9dcc5144 100644 --- a/mesalib/src/mesa/main/fbobject.c +++ b/mesalib/src/mesa/main/fbobject.c @@ -89,9 +89,9 @@ delete_dummy_framebuffer(struct gl_framebuffer *fb) void _mesa_init_fbobjects(struct gl_context *ctx) { - _glthread_INIT_MUTEX(DummyFramebuffer.Mutex); - _glthread_INIT_MUTEX(DummyRenderbuffer.Mutex); - _glthread_INIT_MUTEX(IncompleteFramebuffer.Mutex); + mtx_init(&DummyFramebuffer.Mutex, mtx_plain); + mtx_init(&DummyRenderbuffer.Mutex, mtx_plain); + mtx_init(&IncompleteFramebuffer.Mutex, mtx_plain); DummyFramebuffer.Delete = delete_dummy_framebuffer; DummyRenderbuffer.Delete = delete_dummy_renderbuffer; IncompleteFramebuffer.Delete = delete_dummy_framebuffer; @@ -484,7 +484,7 @@ _mesa_framebuffer_renderbuffer(struct gl_context *ctx, { struct gl_renderbuffer_attachment *att; - _glthread_LOCK_MUTEX(fb->Mutex); + mtx_lock(&fb->Mutex); att = get_attachment(ctx, fb, attachment); ASSERT(att); @@ -504,7 +504,7 @@ _mesa_framebuffer_renderbuffer(struct gl_context *ctx, invalidate_framebuffer(fb); - _glthread_UNLOCK_MUTEX(fb->Mutex); + mtx_unlock(&fb->Mutex); } @@ -1352,9 +1352,9 @@ _mesa_GenRenderbuffers(GLsizei n, GLuint *renderbuffers) GLuint name = first + i; renderbuffers[i] = name; /* insert dummy placeholder into hash table */ - _glthread_LOCK_MUTEX(ctx->Shared->Mutex); + mtx_lock(&ctx->Shared->Mutex); _mesa_HashInsert(ctx->Shared->RenderBuffers, name, &DummyRenderbuffer); - _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); + mtx_unlock(&ctx->Shared->Mutex); } } @@ -2218,9 +2218,9 @@ _mesa_GenFramebuffers(GLsizei n, GLuint *framebuffers) GLuint name = first + i; framebuffers[i] = name; /* insert dummy placeholder into hash table */ - _glthread_LOCK_MUTEX(ctx->Shared->Mutex); + mtx_lock(&ctx->Shared->Mutex); _mesa_HashInsert(ctx->Shared->FrameBuffers, name, &DummyFramebuffer); - _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); + mtx_unlock(&ctx->Shared->Mutex); } } @@ -2433,7 +2433,7 @@ framebuffer_texture(struct gl_context *ctx, const char *caller, GLenum target, FLUSH_VERTICES(ctx, _NEW_BUFFERS); - _glthread_LOCK_MUTEX(fb->Mutex); + mtx_lock(&fb->Mutex); if (texObj) { if (attachment == GL_DEPTH_ATTACHMENT && texObj == fb->Attachment[BUFFER_STENCIL].Texture && @@ -2491,7 +2491,7 @@ framebuffer_texture(struct gl_context *ctx, const char *caller, GLenum target, invalidate_framebuffer(fb); - _glthread_UNLOCK_MUTEX(fb->Mutex); + mtx_unlock(&fb->Mutex); } diff --git a/mesalib/src/mesa/main/format_pack.c b/mesalib/src/mesa/main/format_pack.c index dee253c40..2772ff2d3 100644 --- a/mesalib/src/mesa/main/format_pack.c +++ b/mesalib/src/mesa/main/format_pack.c @@ -1936,9 +1936,9 @@ _mesa_get_pack_ubyte_rgba_function(mesa_format format) /* should never convert RGBA to these formats */ table[MESA_FORMAT_S8_UINT_Z24_UNORM] = NULL; - table[MESA_FORMAT_Z24_UNORM_X8_UINT] = NULL; - table[MESA_FORMAT_Z_UNORM16] = NULL; table[MESA_FORMAT_Z24_UNORM_S8_UINT] = NULL; + table[MESA_FORMAT_Z_UNORM16] = NULL; + table[MESA_FORMAT_Z24_UNORM_X8_UINT] = NULL; table[MESA_FORMAT_X8Z24_UNORM] = NULL; table[MESA_FORMAT_Z_UNORM32] = NULL; table[MESA_FORMAT_S_UINT8] = NULL; @@ -2099,9 +2099,9 @@ _mesa_get_pack_float_rgba_function(mesa_format format) /* should never convert RGBA to these formats */ table[MESA_FORMAT_S8_UINT_Z24_UNORM] = NULL; - table[MESA_FORMAT_Z24_UNORM_X8_UINT] = NULL; - table[MESA_FORMAT_Z_UNORM16] = NULL; table[MESA_FORMAT_Z24_UNORM_S8_UINT] = NULL; + table[MESA_FORMAT_Z_UNORM16] = NULL; + table[MESA_FORMAT_Z24_UNORM_X8_UINT] = NULL; table[MESA_FORMAT_X8Z24_UNORM] = NULL; table[MESA_FORMAT_Z_UNORM32] = NULL; table[MESA_FORMAT_S_UINT8] = NULL; @@ -2433,8 +2433,8 @@ _mesa_get_pack_float_z_func(mesa_format format) case MESA_FORMAT_S8_UINT_Z24_UNORM: case MESA_FORMAT_X8Z24_UNORM: return pack_float_z_Z24_S8; - case MESA_FORMAT_Z24_UNORM_X8_UINT: case MESA_FORMAT_Z24_UNORM_S8_UINT: + case MESA_FORMAT_Z24_UNORM_X8_UINT: return pack_float_z_S8_Z24; case MESA_FORMAT_Z_UNORM16: return pack_float_z_Z16; @@ -2518,8 +2518,8 @@ _mesa_get_pack_uint_z_func(mesa_format format) case MESA_FORMAT_S8_UINT_Z24_UNORM: case MESA_FORMAT_X8Z24_UNORM: return pack_uint_z_Z24_S8; - case MESA_FORMAT_Z24_UNORM_X8_UINT: case MESA_FORMAT_Z24_UNORM_S8_UINT: + case MESA_FORMAT_Z24_UNORM_X8_UINT: return pack_uint_z_S8_Z24; case MESA_FORMAT_Z_UNORM16: return pack_uint_z_Z16; @@ -2581,7 +2581,7 @@ _mesa_get_pack_ubyte_stencil_func(mesa_format format) switch (format) { case MESA_FORMAT_S8_UINT_Z24_UNORM: return pack_ubyte_stencil_Z24_S8; - case MESA_FORMAT_Z24_UNORM_X8_UINT: + case MESA_FORMAT_Z24_UNORM_S8_UINT: return pack_ubyte_stencil_S8_Z24; case MESA_FORMAT_S_UINT8: return pack_ubyte_stencil_S8; @@ -2616,8 +2616,8 @@ _mesa_pack_float_z_row(mesa_format format, GLuint n, } } break; - case MESA_FORMAT_Z24_UNORM_X8_UINT: case MESA_FORMAT_Z24_UNORM_S8_UINT: + case MESA_FORMAT_Z24_UNORM_X8_UINT: { /* don't disturb the stencil values */ GLuint *d = ((GLuint *) dst); @@ -2690,8 +2690,8 @@ _mesa_pack_uint_z_row(mesa_format format, GLuint n, } } break; - case MESA_FORMAT_Z24_UNORM_X8_UINT: case MESA_FORMAT_Z24_UNORM_S8_UINT: + case MESA_FORMAT_Z24_UNORM_X8_UINT: { /* don't disturb the stencil values */ GLuint *d = ((GLuint *) dst); @@ -2762,7 +2762,7 @@ _mesa_pack_ubyte_stencil_row(mesa_format format, GLuint n, } } break; - case MESA_FORMAT_Z24_UNORM_X8_UINT: + case MESA_FORMAT_Z24_UNORM_S8_UINT: { /* don't disturb the Z values */ GLuint *d = ((GLuint *) dst); @@ -2803,7 +2803,7 @@ _mesa_pack_uint_24_8_depth_stencil_row(mesa_format format, GLuint n, case MESA_FORMAT_S8_UINT_Z24_UNORM: memcpy(dst, src, n * sizeof(GLuint)); break; - case MESA_FORMAT_Z24_UNORM_X8_UINT: + case MESA_FORMAT_Z24_UNORM_S8_UINT: { GLuint *d = ((GLuint *) dst); GLuint i; diff --git a/mesalib/src/mesa/main/format_unpack.c b/mesalib/src/mesa/main/format_unpack.c index 02ad00a9d..276ba556a 100644 --- a/mesalib/src/mesa/main/format_unpack.c +++ b/mesalib/src/mesa/main/format_unpack.c @@ -2366,9 +2366,9 @@ get_unpack_rgba_function(mesa_format format) table[MESA_FORMAT_B10G10R10A2_UINT] = unpack_ARGB2101010_UINT; table[MESA_FORMAT_R10G10B10A2_UINT] = unpack_ABGR2101010_UINT; table[MESA_FORMAT_S8_UINT_Z24_UNORM] = unpack_Z24_S8; - table[MESA_FORMAT_Z24_UNORM_X8_UINT] = unpack_S8_Z24; + table[MESA_FORMAT_Z24_UNORM_S8_UINT] = unpack_S8_Z24; table[MESA_FORMAT_Z_UNORM16] = unpack_Z16; - table[MESA_FORMAT_Z24_UNORM_S8_UINT] = unpack_X8_Z24; + table[MESA_FORMAT_Z24_UNORM_X8_UINT] = unpack_X8_Z24; table[MESA_FORMAT_X8Z24_UNORM] = unpack_Z24_X8; table[MESA_FORMAT_Z_UNORM32] = unpack_Z32; table[MESA_FORMAT_S_UINT8] = unpack_S8; @@ -3986,8 +3986,8 @@ _mesa_unpack_float_z_row(mesa_format format, GLuint n, case MESA_FORMAT_X8Z24_UNORM: unpack = unpack_float_z_Z24_X8; break; - case MESA_FORMAT_Z24_UNORM_X8_UINT: case MESA_FORMAT_Z24_UNORM_S8_UINT: + case MESA_FORMAT_Z24_UNORM_X8_UINT: unpack = unpack_float_z_X8_Z24; break; case MESA_FORMAT_Z_UNORM16: @@ -4091,8 +4091,8 @@ _mesa_unpack_uint_z_row(mesa_format format, GLuint n, case MESA_FORMAT_X8Z24_UNORM: unpack = unpack_uint_z_Z24_X8; break; - case MESA_FORMAT_Z24_UNORM_X8_UINT: case MESA_FORMAT_Z24_UNORM_S8_UINT: + case MESA_FORMAT_Z24_UNORM_X8_UINT: unpack = unpack_uint_z_X8_Z24; break; case MESA_FORMAT_Z_UNORM16: @@ -4164,7 +4164,7 @@ _mesa_unpack_ubyte_stencil_row(mesa_format format, GLuint n, case MESA_FORMAT_S8_UINT_Z24_UNORM: unpack_ubyte_s_Z24_S8(src, dst, n); break; - case MESA_FORMAT_Z24_UNORM_X8_UINT: + case MESA_FORMAT_Z24_UNORM_S8_UINT: unpack_ubyte_s_S8_Z24(src, dst, n); break; case MESA_FORMAT_Z32_FLOAT_S8X24_UINT: @@ -4189,11 +4189,30 @@ unpack_uint_24_8_depth_stencil_S8_Z24(const GLuint *src, GLuint *dst, GLuint n) } static void +unpack_uint_24_8_depth_stencil_Z32_S8X24(const GLuint *src, + GLuint *dst, GLuint n) +{ + GLuint i; + + for (i = 0; i < n; i++) { + /* 8 bytes per pixel (float + uint32) */ + GLfloat zf = ((GLfloat *) src)[i * 2 + 0]; + GLuint z24 = (GLuint) (zf * (GLfloat) 0xffffff); + GLuint s = src[i * 2 + 1] & 0xff; + dst[i] = (z24 << 8) | s; + } +} + +static void unpack_uint_24_8_depth_stencil_Z24_S8(const GLuint *src, GLuint *dst, GLuint n) { memcpy(dst, src, n * 4); } +/** + * Unpack depth/stencil returning as GL_UNSIGNED_INT_24_8. + * \param format the source data format + */ void _mesa_unpack_uint_24_8_depth_stencil_row(mesa_format format, GLuint n, const void *src, GLuint *dst) @@ -4202,9 +4221,12 @@ _mesa_unpack_uint_24_8_depth_stencil_row(mesa_format format, GLuint n, case MESA_FORMAT_S8_UINT_Z24_UNORM: unpack_uint_24_8_depth_stencil_Z24_S8(src, dst, n); break; - case MESA_FORMAT_Z24_UNORM_X8_UINT: + case MESA_FORMAT_Z24_UNORM_S8_UINT: unpack_uint_24_8_depth_stencil_S8_Z24(src, dst, n); break; + case MESA_FORMAT_Z32_FLOAT_S8X24_UINT: + unpack_uint_24_8_depth_stencil_Z32_S8X24(src, dst, n); + break; default: _mesa_problem(NULL, "bad format %s in _mesa_unpack_uint_24_8_depth_stencil_row", diff --git a/mesalib/src/mesa/main/formats.c b/mesalib/src/mesa/main/formats.c index 10731d5a4..f6c399ede 100644 --- a/mesalib/src/mesa/main/formats.c +++ b/mesalib/src/mesa/main/formats.c @@ -439,8 +439,8 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = 1, 1, 4 /* BlockWidth/Height,Bytes */ }, { - MESA_FORMAT_Z24_UNORM_X8_UINT, /* Name */ - "MESA_FORMAT_Z24_UNORM_X8_UINT", /* StrName */ + MESA_FORMAT_Z24_UNORM_S8_UINT, /* Name */ + "MESA_FORMAT_Z24_UNORM_S8_UINT", /* StrName */ GL_DEPTH_STENCIL, /* BaseFormat */ GL_UNSIGNED_NORMALIZED, /* DataType */ 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ @@ -457,8 +457,8 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = 1, 1, 2 /* BlockWidth/Height,Bytes */ }, { - MESA_FORMAT_Z24_UNORM_S8_UINT, /* Name */ - "MESA_FORMAT_Z24_UNORM_S8_UINT", /* StrName */ + MESA_FORMAT_Z24_UNORM_X8_UINT, /* Name */ + "MESA_FORMAT_Z24_UNORM_X8_UINT", /* StrName */ GL_DEPTH_COMPONENT, /* BaseFormat */ GL_UNSIGNED_NORMALIZED, /* DataType */ 0, 0, 0, 0, /* Red/Green/Blue/AlphaBits */ @@ -2472,7 +2472,7 @@ _mesa_format_to_type_and_comps(mesa_format format, *comps = 2; return; - case MESA_FORMAT_Z24_UNORM_X8_UINT: + case MESA_FORMAT_Z24_UNORM_S8_UINT: *datatype = GL_UNSIGNED_INT_8_24_REV_MESA; *comps = 2; return; @@ -2482,7 +2482,7 @@ _mesa_format_to_type_and_comps(mesa_format format, *comps = 1; return; - case MESA_FORMAT_Z24_UNORM_S8_UINT: + case MESA_FORMAT_Z24_UNORM_X8_UINT: *datatype = GL_UNSIGNED_INT; *comps = 1; return; @@ -3123,14 +3123,14 @@ _mesa_format_matches_format_and_type(mesa_format mesa_format, return format == GL_DEPTH_STENCIL && type == GL_UNSIGNED_INT_24_8 && !swapBytes; case MESA_FORMAT_X8Z24_UNORM: - case MESA_FORMAT_Z24_UNORM_X8_UINT: + case MESA_FORMAT_Z24_UNORM_S8_UINT: return GL_FALSE; case MESA_FORMAT_Z_UNORM16: return format == GL_DEPTH_COMPONENT && type == GL_UNSIGNED_SHORT && !swapBytes; - case MESA_FORMAT_Z24_UNORM_S8_UINT: + case MESA_FORMAT_Z24_UNORM_X8_UINT: return GL_FALSE; case MESA_FORMAT_Z_UNORM32: diff --git a/mesalib/src/mesa/main/formats.h b/mesalib/src/mesa/main/formats.h index 63d9565e3..3102584b6 100644 --- a/mesalib/src/mesa/main/formats.h +++ b/mesalib/src/mesa/main/formats.h @@ -339,33 +339,33 @@ typedef enum /* Type P formats */ /* msb <------ TEXEL BITS -----------> lsb */ /* ---- ---- ---- ---- ---- ---- ---- ---- */ - MESA_FORMAT_A8B8G8R8_UNORM, /* AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */ - MESA_FORMAT_R8G8B8A8_UNORM, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */ - MESA_FORMAT_B8G8R8A8_UNORM, /* BBBB BBBB GGGG GGGG RRRR RRRR AAAA AAAA */ - MESA_FORMAT_A8R8G8B8_UNORM, /* AAAA AAAA RRRR RRRR GGGG GGGG BBBB BBBB */ - MESA_FORMAT_X8B8G8R8_UNORM, /* xxxx xxxx BBBB BBBB GGGG GGGG RRRR RRRR */ - MESA_FORMAT_R8G8B8X8_UNORM, /* RRRR RRRR GGGG GGGG BBBB BBBB xxxx xxxx */ - MESA_FORMAT_B8G8R8X8_UNORM, /* BBBB BBBB GGGG GGGG RRRR RRRR xxxx xxxx */ - MESA_FORMAT_X8R8G8B8_UNORM, /* xxxx xxxx RRRR RRRR GGGG GGGG BBBB BBBB */ + MESA_FORMAT_A8B8G8R8_UNORM, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */ + MESA_FORMAT_R8G8B8A8_UNORM, /* AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */ + MESA_FORMAT_B8G8R8A8_UNORM, /* AAAA AAAA RRRR RRRR GGGG GGGG BBBB BBBB */ + MESA_FORMAT_A8R8G8B8_UNORM, /* BBBB BBBB GGGG GGGG RRRR RRRR AAAA AAAA */ + MESA_FORMAT_X8B8G8R8_UNORM, /* RRRR RRRR GGGG GGGG BBBB BBBB xxxx xxxx */ + MESA_FORMAT_R8G8B8X8_UNORM, /* xxxx xxxx BBBB BBBB GGGG GGGG RRRR RRRR */ + MESA_FORMAT_B8G8R8X8_UNORM, /* xxxx xxxx RRRR RRRR GGGG GGGG BBBB BBBB */ + MESA_FORMAT_X8R8G8B8_UNORM, /* BBBB BBBB GGGG GGGG RRRR RRRR xxxx xxxx */ /* Type A formats */ MESA_FORMAT_BGR_UNORM8, /* uchar[i * 3] = B, [i * 3 + 1] = G, [i *3 + 2] = R */ MESA_FORMAT_RGB_UNORM8, /* uchar[i * 3] = R, [i * 3 + 1] = G, [i *3 + 2] = B */ /* Type P formats */ - MESA_FORMAT_B5G6R5_UNORM, /* BBBB BGGG GGGR RRRR */ - MESA_FORMAT_R5G6B5_UNORM, /* RRRR RGGG GGGB BBBB */ - MESA_FORMAT_B4G4R4A4_UNORM, /* BBBB GGGG RRRR AAAA */ - MESA_FORMAT_A4R4G4B4_UNORM, /* AAAA RRRR GGGG BBBB */ - MESA_FORMAT_A1B5G5R5_UNORM, /* ABBB BBGG GGGR RRRR */ - MESA_FORMAT_B5G5R5A1_UNORM, /* BBBB BGGG GGRR RRRA */ - MESA_FORMAT_A1R5G5B5_UNORM, /* ARRR RRGG GGGB BBBB */ - MESA_FORMAT_L4A4_UNORM, /* LLLL AAAA */ - MESA_FORMAT_L8A8_UNORM, /* LLLL LLLL AAAA AAAA */ - MESA_FORMAT_A8L8_UNORM, /* AAAA AAAA LLLL LLLL */ - MESA_FORMAT_L16A16_UNORM, /* LLLL LLLL LLLL LLLL AAAA AAAA AAAA AAAA */ - MESA_FORMAT_A16L16_UNORM, /* AAAA AAAA AAAA AAAA LLLL LLLL LLLL LLLL */ - MESA_FORMAT_B2G3R3_UNORM, /* BBGG GRRR */ + MESA_FORMAT_B5G6R5_UNORM, /* RRRR RGGG GGGB BBBB */ + MESA_FORMAT_R5G6B5_UNORM, /* BBBB BGGG GGGR RRRR */ + MESA_FORMAT_B4G4R4A4_UNORM, /* AAAA RRRR GGGG BBBB */ + MESA_FORMAT_A4R4G4B4_UNORM, /* BBBB GGGG RRRR AAAA */ + MESA_FORMAT_A1B5G5R5_UNORM, /* RRRR RGGG GGBB BBBA */ + MESA_FORMAT_B5G5R5A1_UNORM, /* ARRR RRGG GGGB BBBB */ + MESA_FORMAT_A1R5G5B5_UNORM, /* BBBB BGGG GGRR RRRA */ + MESA_FORMAT_L4A4_UNORM, /* AAAA LLLL */ + MESA_FORMAT_L8A8_UNORM, /* AAAA AAAA LLLL LLLL */ + MESA_FORMAT_A8L8_UNORM, /* LLLL LLLL AAAA AAAA */ + MESA_FORMAT_L16A16_UNORM, /* AAAA AAAA AAAA AAAA LLLL LLLL LLLL LLLL */ + MESA_FORMAT_A16L16_UNORM, /* LLLL LLLL LLLL LLLL AAAA AAAA AAAA AAAA */ + MESA_FORMAT_B2G3R3_UNORM, /* RRRG GGBB */ /* Type A formats */ MESA_FORMAT_A_UNORM8, /* uchar[i] = A */ @@ -383,25 +383,25 @@ typedef enum MESA_FORMAT_R_UNORM8, /* uchar[i] = R */ /* Type P formats */ - MESA_FORMAT_R8G8_UNORM, /* RRRR RRRR GGGG GGGG */ - MESA_FORMAT_G8R8_UNORM, /* GGGG GGGG RRRR RRRR */ + MESA_FORMAT_R8G8_UNORM, /* GGGG GGGG RRRR RRRR */ + MESA_FORMAT_G8R8_UNORM, /* RRRR RRRR GGGG GGGG */ /* Type A format(s) */ MESA_FORMAT_R_UNORM16, /* ushort[i] = R */ /* Type P formats */ - MESA_FORMAT_R16G16_UNORM, /* RRRR RRRR RRRR RRRR GGGG GGGG GGGG GGGG */ - MESA_FORMAT_G16R16_UNORM, /* GGGG GGGG GGGG GGGG RRRR RRRR RRRR RRRR */ - MESA_FORMAT_B10G10R10A2_UNORM,/* BBBB BBBB BBGG GGGG GGGG RRRR RRRR RRAA */ - MESA_FORMAT_S8_UINT_Z24_UNORM,/* SSSS SSSS ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ */ - MESA_FORMAT_Z24_UNORM_X8_UINT,/* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ xxxx xxxx */ + MESA_FORMAT_R16G16_UNORM, /* GGGG GGGG GGGG GGGG RRRR RRRR RRRR RRRR */ + MESA_FORMAT_G16R16_UNORM, /* RRRR RRRR RRRR RRRR GGGG GGGG GGGG GGGG */ + MESA_FORMAT_B10G10R10A2_UNORM,/* AARR RRRR RRRR GGGG GGGG GGBB BBBB BBBB */ + MESA_FORMAT_S8_UINT_Z24_UNORM,/* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ SSSS SSSS */ + MESA_FORMAT_Z24_UNORM_S8_UINT,/* SSSS SSSS ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ */ /* Type A format(s) */ MESA_FORMAT_Z_UNORM16, /* ushort[i] = Z */ /* Type P formats */ - MESA_FORMAT_Z24_UNORM_S8_UINT,/* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ SSSS SSSS */ - MESA_FORMAT_X8Z24_UNORM, /* xxxx xxxx ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ */ + MESA_FORMAT_Z24_UNORM_X8_UINT,/* xxxx xxxx ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ */ + MESA_FORMAT_X8Z24_UNORM, /* ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ ZZZZ xxxx xxxx */ /* Type A formats */ MESA_FORMAT_Z_UNORM32, /* uint[i] = Z */ @@ -416,14 +416,14 @@ typedef enum MESA_FORMAT_BGR_SRGB8, /* uchar[i * 3] = B, [i * 3 + 1] = G, [i *3 + 2] = R */ /* Type P formats */ - MESA_FORMAT_A8B8G8R8_SRGB, /* AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR*/ - MESA_FORMAT_B8G8R8A8_SRGB, /* BBBB BBBB GGGG GGGG RRRR RRRR AAAA AAAA */ + MESA_FORMAT_A8B8G8R8_SRGB, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */ + MESA_FORMAT_B8G8R8A8_SRGB, /* AAAA AAAA RRRR RRRR GGGG GGGG BBBB BBBB */ /* Type A format(s) */ MESA_FORMAT_L_SRGB8, /* uchar[i] = L */ /* Type P formats */ - MESA_FORMAT_L8A8_SRGB, /* LLLL LLLL AAAA AAAA */ + MESA_FORMAT_L8A8_SRGB, /* AAAA AAAA LLLL LLLL */ /* Type C formats */ MESA_FORMAT_SRGB_DXT1, @@ -548,16 +548,16 @@ typedef enum MESA_FORMAT_R_SNORM8, /* char[i] = R */ /* Type P formats */ - MESA_FORMAT_R8G8_SNORM, /* RRRR RRRR GGGG GGGG */ - MESA_FORMAT_X8B8G8R8_SNORM, /* xxxx xxxx BBBB BBBB GGGG GGGG RRRR RRRR */ - MESA_FORMAT_A8B8G8R8_SNORM, /* AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */ - MESA_FORMAT_R8G8B8A8_SNORM, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */ + MESA_FORMAT_R8G8_SNORM, /* GGGG GGGG RRRR RRRR */ + MESA_FORMAT_X8B8G8R8_SNORM, /* RRRR RRRR GGGG GGGG BBBB BBBB xxxx xxxx */ + MESA_FORMAT_A8B8G8R8_SNORM, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */ + MESA_FORMAT_R8G8B8A8_SNORM, /* AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */ /* Type A format(s) */ MESA_FORMAT_R_SNORM16, /* short[i] = R */ /* Type P format(s) */ - MESA_FORMAT_R16G16_SNORM, /* RRRR RRRR RRRR RRRR GGGG GGGG GGGG GGGG */ + MESA_FORMAT_R16G16_SNORM, /* GGGG GGGG GGGG GGGG RRRR RRRR RRRR RRRR */ /* Type A format(s) */ MESA_FORMAT_RGB_SNORM16, /* short[i * 3] = R, [i * 3 + 1] = G, [i *3 + 2] = B */ @@ -597,7 +597,7 @@ typedef enum MESA_FORMAT_L_SNORM8, /* char[i] = L */ /* Type P format(s) */ - MESA_FORMAT_L8A8_SNORM, /* LLLL LLLL AAAA AAAA */ + MESA_FORMAT_L8A8_SNORM, /* AAAA AAAA LLLL LLLL */ /* Type A format(s) */ MESA_FORMAT_I_SNORM8, /* char[i] = I */ @@ -608,21 +608,21 @@ typedef enum /* Type P format(s) */ MESA_FORMAT_R9G9B9E5_FLOAT, - MESA_FORMAT_R11G11B10_FLOAT, + MESA_FORMAT_R11G11B10_FLOAT, /* BBBB BBBB BBGG GGGG GGGG GRRR RRRR RRRR */ /* Type A format(s) */ MESA_FORMAT_Z_FLOAT32, /* Type P formats */ - MESA_FORMAT_Z32_FLOAT_S8X24_UINT, + MESA_FORMAT_Z32_FLOAT_S8X24_UINT, /* (float, x24s8) */ - MESA_FORMAT_B10G10R10A2_UINT, - MESA_FORMAT_R10G10B10A2_UINT, + MESA_FORMAT_B10G10R10A2_UINT, /* AARR RRRR RRRR GGGG GGGG GGBB BBBB BBBB */ + MESA_FORMAT_R10G10B10A2_UINT, /* AABB BBBB BBBB GGGG GGGG GGRR RRRR RRRR */ - MESA_FORMAT_B4G4R4X4_UNORM, /* BBBB GGGG RRRR xxxx */ - MESA_FORMAT_B5G5R5X1_UNORM, /* BBBB BGGG GGRR RRRx */ - MESA_FORMAT_R8G8B8X8_SNORM, /* RRRR RRRR GGGG GGGG BBBB BBBB xxxx xxxx */ - MESA_FORMAT_R8G8B8X8_SRGB, /* RRRR RRRR GGGG GGGG BBBB BBBB xxxx xxxx */ + MESA_FORMAT_B4G4R4X4_UNORM, /* xxxx RRRR GGGG BBBB */ + MESA_FORMAT_B5G5R5X1_UNORM, /* xRRR RRGG GGGB BBBB */ + MESA_FORMAT_R8G8B8X8_SNORM, /* xxxx xxxx BBBB BBBB GGGG GGGG RRRR RRRR */ + MESA_FORMAT_R8G8B8X8_SRGB, /* xxxx xxxx BBBB BBBB GGGG GGGG RRRR RRRR */ /* Type A formats */ MESA_FORMAT_RGBX_UINT8, /* uchar[i * 4] = R, [i * 4 + 1] = G, [i * 4 + 2] = B, [i * 4 + 3] = x */ @@ -643,9 +643,9 @@ typedef enum MESA_FORMAT_RGBX_SINT32, /* ... */ /* Type P formats */ - MESA_FORMAT_R10G10B10A2_UNORM, - MESA_FORMAT_G8R8_SNORM, - MESA_FORMAT_G16R16_SNORM, + MESA_FORMAT_R10G10B10A2_UNORM, /* AABB BBBB BBBB GGGG GGGG GGRR RRRR RRRR */ + MESA_FORMAT_G8R8_SNORM, /* RRRR RRRR GGGG GGGG */ + MESA_FORMAT_G16R16_SNORM, /* RRRR RRRR RRRR RRRR GGGG GGGG GGGG GGGG */ MESA_FORMAT_COUNT } mesa_format; diff --git a/mesalib/src/mesa/main/framebuffer.c b/mesalib/src/mesa/main/framebuffer.c index 54eeda2b2..7416bb118 100644 --- a/mesalib/src/mesa/main/framebuffer.c +++ b/mesalib/src/mesa/main/framebuffer.c @@ -130,7 +130,7 @@ _mesa_initialize_window_framebuffer(struct gl_framebuffer *fb, memset(fb, 0, sizeof(struct gl_framebuffer)); - _glthread_INIT_MUTEX(fb->Mutex); + mtx_init(&fb->Mutex, mtx_plain); fb->RefCount = 1; @@ -182,7 +182,7 @@ _mesa_initialize_user_framebuffer(struct gl_framebuffer *fb, GLuint name) fb->ColorReadBuffer = GL_COLOR_ATTACHMENT0_EXT; fb->_ColorReadBufferIndex = BUFFER_COLOR0; fb->Delete = _mesa_destroy_framebuffer; - _glthread_INIT_MUTEX(fb->Mutex); + mtx_init(&fb->Mutex, mtx_plain); } @@ -213,7 +213,7 @@ _mesa_free_framebuffer_data(struct gl_framebuffer *fb) assert(fb); assert(fb->RefCount == 0); - _glthread_DESTROY_MUTEX(fb->Mutex); + mtx_destroy(&fb->Mutex); for (i = 0; i < BUFFER_COUNT; i++) { struct gl_renderbuffer_attachment *att = &fb->Attachment[i]; @@ -244,11 +244,11 @@ _mesa_reference_framebuffer_(struct gl_framebuffer **ptr, GLboolean deleteFlag = GL_FALSE; struct gl_framebuffer *oldFb = *ptr; - _glthread_LOCK_MUTEX(oldFb->Mutex); + mtx_lock(&oldFb->Mutex); ASSERT(oldFb->RefCount > 0); oldFb->RefCount--; deleteFlag = (oldFb->RefCount == 0); - _glthread_UNLOCK_MUTEX(oldFb->Mutex); + mtx_unlock(&oldFb->Mutex); if (deleteFlag) oldFb->Delete(oldFb); @@ -258,9 +258,9 @@ _mesa_reference_framebuffer_(struct gl_framebuffer **ptr, assert(!*ptr); if (fb) { - _glthread_LOCK_MUTEX(fb->Mutex); + mtx_lock(&fb->Mutex); fb->RefCount++; - _glthread_UNLOCK_MUTEX(fb->Mutex); + mtx_unlock(&fb->Mutex); *ptr = fb; } } diff --git a/mesalib/src/mesa/main/get.c b/mesalib/src/mesa/main/get.c index 54f7d7745..b1908515c 100644 --- a/mesalib/src/mesa/main/get.c +++ b/mesalib/src/mesa/main/get.c @@ -28,6 +28,7 @@ #include "blend.h" #include "enable.h" #include "enums.h" +#include "errors.h" #include "extensions.h" #include "get.h" #include "macros.h" @@ -973,6 +974,26 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu _mesa_problem(ctx, "driver doesn't implement GetTimestamp"); } break; + /* GL_KHR_DEBUG */ + case GL_DEBUG_LOGGED_MESSAGES: + { + struct gl_debug_state *debug = _mesa_get_debug_state(ctx); + v->value_int = debug ? debug->NumMessages : 0; + } + break; + case GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH: + { + struct gl_debug_state *debug = _mesa_get_debug_state(ctx); + v->value_int = debug ? debug->NextMsgLength : 0; + } + break; + case GL_DEBUG_GROUP_STACK_DEPTH: + { + struct gl_debug_state *debug = _mesa_get_debug_state(ctx); + v->value_int = debug ? debug->GroupStackDepth : 0; + } + break; + /* GL_ARB_shader_atomic_counters */ case GL_ATOMIC_COUNTER_BUFFER_BINDING: v->value_int = ctx->AtomicBuffer->Name; diff --git a/mesalib/src/mesa/main/get_hash_params.py b/mesalib/src/mesa/main/get_hash_params.py index f47cbd881..674d0032a 100644 --- a/mesalib/src/mesa/main/get_hash_params.py +++ b/mesalib/src/mesa/main/get_hash_params.py @@ -698,13 +698,13 @@ descriptor=[ [ "RESET_NOTIFICATION_STRATEGY_ARB", "CONTEXT_ENUM(Const.ResetStrategy), NO_EXTRA" ], # GL_KHR_debug (GL 4.3)/ GL_ARB_debug_output - [ "DEBUG_LOGGED_MESSAGES", "CONTEXT_INT(Debug.NumMessages), NO_EXTRA" ], - [ "DEBUG_NEXT_LOGGED_MESSAGE_LENGTH", "CONTEXT_INT(Debug.NextMsgLength), NO_EXTRA" ], + [ "DEBUG_LOGGED_MESSAGES", "LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA" ], + [ "DEBUG_NEXT_LOGGED_MESSAGE_LENGTH", "LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA" ], [ "MAX_DEBUG_LOGGED_MESSAGES", "CONST(MAX_DEBUG_LOGGED_MESSAGES), NO_EXTRA" ], [ "MAX_DEBUG_MESSAGE_LENGTH", "CONST(MAX_DEBUG_MESSAGE_LENGTH), NO_EXTRA" ], [ "MAX_LABEL_LENGTH", "CONST(MAX_LABEL_LENGTH), NO_EXTRA" ], [ "MAX_DEBUG_GROUP_STACK_DEPTH", "CONST(MAX_DEBUG_GROUP_STACK_DEPTH), NO_EXTRA" ], - [ "DEBUG_GROUP_STACK_DEPTH", "CONTEXT_INT(Debug.GroupStackDepth), NO_EXTRA" ], + [ "DEBUG_GROUP_STACK_DEPTH", "LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA" ], [ "MAX_DUAL_SOURCE_DRAW_BUFFERS", "CONTEXT_INT(Const.MaxDualSourceDrawBuffers), extra_ARB_blend_func_extended" ], diff --git a/mesalib/src/mesa/main/getstring.c b/mesalib/src/mesa/main/getstring.c index 674126702..3ac62d402 100644 --- a/mesalib/src/mesa/main/getstring.c +++ b/mesalib/src/mesa/main/getstring.c @@ -253,14 +253,22 @@ _mesa_GetPointerv( GLenum pname, GLvoid **params ) *params = (GLvoid *) ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_POINT_SIZE].Ptr; break; case GL_DEBUG_CALLBACK_FUNCTION_ARB: - if (!_mesa_is_desktop_gl(ctx)) + if (!_mesa_is_desktop_gl(ctx)) { goto invalid_pname; - *params = (GLvoid *) ctx->Debug.Callback; + } + else { + struct gl_debug_state *debug = _mesa_get_debug_state(ctx); + *params = debug ? (void *) debug->Callback : NULL; + } break; case GL_DEBUG_CALLBACK_USER_PARAM_ARB: - if (!_mesa_is_desktop_gl(ctx)) + if (!_mesa_is_desktop_gl(ctx)) { goto invalid_pname; - *params = (GLvoid *) ctx->Debug.CallbackData; + } + else { + struct gl_debug_state *debug = _mesa_get_debug_state(ctx); + *params = debug ? (void *) debug->CallbackData : NULL; + } break; default: goto invalid_pname; @@ -326,7 +334,7 @@ _mesa_GetGraphicsResetStatusARB( void ) */ status = ctx->Driver.GetGraphicsResetStatus(ctx); - _glthread_LOCK_MUTEX(ctx->Shared->Mutex); + mtx_lock(&ctx->Shared->Mutex); /* If this context has not been affected by a GPU reset, check to see if * some other context in the share group has been affected by a reset. @@ -340,7 +348,7 @@ _mesa_GetGraphicsResetStatusARB( void ) } ctx->ShareGroupReset = ctx->Shared->ShareGroupReset; - _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); + mtx_unlock(&ctx->Shared->Mutex); } if (!ctx->Driver.GetGraphicsResetStatus && (MESA_VERBOSE & VERBOSE_API)) diff --git a/mesalib/src/mesa/main/glformats.c b/mesalib/src/mesa/main/glformats.c index 7d4a31057..77cf26337 100644 --- a/mesalib/src/mesa/main/glformats.c +++ b/mesalib/src/mesa/main/glformats.c @@ -1323,10 +1323,8 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx, case GL_INT: case GL_UNSIGNED_INT: case GL_FLOAT: - return GL_NO_ERROR; case GL_HALF_FLOAT: - return ctx->Extensions.ARB_half_float_pixel - ? GL_NO_ERROR : GL_INVALID_ENUM; + return GL_NO_ERROR; default: return GL_INVALID_ENUM; } @@ -1349,10 +1347,8 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx, case GL_INT: case GL_UNSIGNED_INT: case GL_FLOAT: - return GL_NO_ERROR; case GL_HALF_FLOAT: - return ctx->Extensions.ARB_half_float_pixel - ? GL_NO_ERROR : GL_INVALID_ENUM; + return GL_NO_ERROR; default: return GL_INVALID_ENUM; } @@ -1368,10 +1364,8 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx, case GL_INT: case GL_UNSIGNED_INT: case GL_FLOAT: - return GL_NO_ERROR; case GL_HALF_FLOAT: - return ctx->Extensions.ARB_half_float_pixel - ? GL_NO_ERROR : GL_INVALID_ENUM; + return GL_NO_ERROR; default: return GL_INVALID_ENUM; } @@ -1389,14 +1383,12 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx, case GL_UNSIGNED_BYTE_2_3_3_REV: case GL_UNSIGNED_SHORT_5_6_5: case GL_UNSIGNED_SHORT_5_6_5_REV: + case GL_HALF_FLOAT: return GL_NO_ERROR; case GL_UNSIGNED_INT_2_10_10_10_REV: /* OK by GL_EXT_texture_type_2_10_10_10_REV */ return (ctx->API == API_OPENGLES2) ? GL_NO_ERROR : GL_INVALID_ENUM; - case GL_HALF_FLOAT: - return ctx->Extensions.ARB_half_float_pixel - ? GL_NO_ERROR : GL_INVALID_ENUM; case GL_UNSIGNED_INT_5_9_9_9_REV: return ctx->Extensions.EXT_texture_shared_exponent ? GL_NO_ERROR : GL_INVALID_ENUM; @@ -1419,10 +1411,8 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx, case GL_INT: case GL_UNSIGNED_INT: case GL_FLOAT: - return GL_NO_ERROR; case GL_HALF_FLOAT: - return ctx->Extensions.ARB_half_float_pixel - ? GL_NO_ERROR : GL_INVALID_ENUM; + return GL_NO_ERROR; default: return GL_INVALID_ENUM; } @@ -1446,10 +1436,8 @@ _mesa_error_check_format_and_type(const struct gl_context *ctx, case GL_UNSIGNED_INT_8_8_8_8_REV: case GL_UNSIGNED_INT_10_10_10_2: case GL_UNSIGNED_INT_2_10_10_10_REV: - return GL_NO_ERROR; case GL_HALF_FLOAT: - return ctx->Extensions.ARB_half_float_pixel - ? GL_NO_ERROR : GL_INVALID_ENUM; + return GL_NO_ERROR; default: return GL_INVALID_ENUM; } diff --git a/mesalib/src/mesa/main/hash.c b/mesalib/src/mesa/main/hash.c index b31fd4839..4c92005e0 100644 --- a/mesalib/src/mesa/main/hash.c +++ b/mesalib/src/mesa/main/hash.c @@ -36,7 +36,6 @@ #include "glheader.h" #include "imports.h" -#include "glapi/glthread.h" #include "hash.h" #include "hash_table.h" @@ -59,8 +58,8 @@ struct _mesa_HashTable { struct hash_table *ht; GLuint MaxKey; /**< highest key inserted so far */ - _glthread_Mutex Mutex; /**< mutual exclusion lock */ - _glthread_Mutex WalkMutex; /**< for _mesa_HashWalk() */ + mtx_t Mutex; /**< mutual exclusion lock */ + mtx_t WalkMutex; /**< for _mesa_HashWalk() */ GLboolean InDeleteAll; /**< Debug check */ /** Value that would be in the table for DELETED_KEY_VALUE. */ void *deleted_key_data; @@ -117,8 +116,8 @@ _mesa_NewHashTable(void) if (table) { table->ht = _mesa_hash_table_create(NULL, uint_key_compare); _mesa_hash_table_set_deleted_key(table->ht, uint_key(DELETED_KEY_VALUE)); - _glthread_INIT_MUTEX(table->Mutex); - _glthread_INIT_MUTEX(table->WalkMutex); + mtx_init(&table->Mutex, mtx_plain); + mtx_init(&table->WalkMutex, mtx_plain); } return table; } @@ -144,8 +143,8 @@ _mesa_DeleteHashTable(struct _mesa_HashTable *table) _mesa_hash_table_destroy(table->ht, NULL); - _glthread_DESTROY_MUTEX(table->Mutex); - _glthread_DESTROY_MUTEX(table->WalkMutex); + mtx_destroy(&table->Mutex); + mtx_destroy(&table->WalkMutex); free(table); } @@ -187,9 +186,9 @@ _mesa_HashLookup(struct _mesa_HashTable *table, GLuint key) { void *res; assert(table); - _glthread_LOCK_MUTEX(table->Mutex); + mtx_lock(&table->Mutex); res = _mesa_HashLookup_unlocked(table, key); - _glthread_UNLOCK_MUTEX(table->Mutex); + mtx_unlock(&table->Mutex); return res; } @@ -211,7 +210,7 @@ _mesa_HashInsert(struct _mesa_HashTable *table, GLuint key, void *data) assert(table); assert(key); - _glthread_LOCK_MUTEX(table->Mutex); + mtx_lock(&table->Mutex); if (key > table->MaxKey) table->MaxKey = key; @@ -227,7 +226,7 @@ _mesa_HashInsert(struct _mesa_HashTable *table, GLuint key, void *data) } } - _glthread_UNLOCK_MUTEX(table->Mutex); + mtx_unlock(&table->Mutex); } @@ -256,14 +255,14 @@ _mesa_HashRemove(struct _mesa_HashTable *table, GLuint key) return; } - _glthread_LOCK_MUTEX(table->Mutex); + mtx_lock(&table->Mutex); if (key == DELETED_KEY_VALUE) { table->deleted_key_data = NULL; } else { entry = _mesa_hash_table_search(table->ht, uint_hash(key), uint_key(key)); _mesa_hash_table_remove(table->ht, entry); } - _glthread_UNLOCK_MUTEX(table->Mutex); + mtx_unlock(&table->Mutex); } @@ -286,7 +285,7 @@ _mesa_HashDeleteAll(struct _mesa_HashTable *table, ASSERT(table); ASSERT(callback); - _glthread_LOCK_MUTEX(table->Mutex); + mtx_lock(&table->Mutex); table->InDeleteAll = GL_TRUE; hash_table_foreach(table->ht, entry) { callback((uintptr_t)entry->key, entry->data, userData); @@ -297,7 +296,7 @@ _mesa_HashDeleteAll(struct _mesa_HashTable *table, table->deleted_key_data = NULL; } table->InDeleteAll = GL_FALSE; - _glthread_UNLOCK_MUTEX(table->Mutex); + mtx_unlock(&table->Mutex); } @@ -315,7 +314,7 @@ _mesa_HashClone(const struct _mesa_HashTable *table) struct _mesa_HashTable *clonetable; ASSERT(table); - _glthread_LOCK_MUTEX(table2->Mutex); + mtx_lock(&table2->Mutex); clonetable = _mesa_NewHashTable(); assert(clonetable); @@ -323,7 +322,7 @@ _mesa_HashClone(const struct _mesa_HashTable *table) _mesa_HashInsert(clonetable, (GLint)(uintptr_t)entry->key, entry->data); } - _glthread_UNLOCK_MUTEX(table2->Mutex); + mtx_unlock(&table2->Mutex); return clonetable; } @@ -352,13 +351,13 @@ _mesa_HashWalk(const struct _mesa_HashTable *table, ASSERT(table); ASSERT(callback); - _glthread_LOCK_MUTEX(table2->WalkMutex); + mtx_lock(&table2->WalkMutex); hash_table_foreach(table->ht, entry) { callback((uintptr_t)entry->key, entry->data, userData); } if (table->deleted_key_data) callback(DELETED_KEY_VALUE, table->deleted_key_data, userData); - _glthread_UNLOCK_MUTEX(table2->WalkMutex); + mtx_unlock(&table2->WalkMutex); } static void @@ -398,10 +397,10 @@ GLuint _mesa_HashFindFreeKeyBlock(struct _mesa_HashTable *table, GLuint numKeys) { const GLuint maxKey = ~((GLuint) 0) - 1; - _glthread_LOCK_MUTEX(table->Mutex); + mtx_lock(&table->Mutex); if (maxKey - numKeys > table->MaxKey) { /* the quick solution */ - _glthread_UNLOCK_MUTEX(table->Mutex); + mtx_unlock(&table->Mutex); return table->MaxKey + 1; } else { @@ -419,13 +418,13 @@ _mesa_HashFindFreeKeyBlock(struct _mesa_HashTable *table, GLuint numKeys) /* this key not in use, check if we've found enough */ freeCount++; if (freeCount == numKeys) { - _glthread_UNLOCK_MUTEX(table->Mutex); + mtx_unlock(&table->Mutex); return freeStart; } } } /* cannot allocate a block of numKeys consecutive keys */ - _glthread_UNLOCK_MUTEX(table->Mutex); + mtx_unlock(&table->Mutex); return 0; } } diff --git a/mesalib/src/mesa/main/imports.h b/mesalib/src/mesa/main/imports.h index 53e40b445..29772be6e 100644 --- a/mesalib/src/mesa/main/imports.h +++ b/mesalib/src/mesa/main/imports.h @@ -132,7 +132,7 @@ typedef union { GLfloat f; GLint i; GLuint u; } fi_type; #define atanhf(f) ((float) atanh(f)) #endif -#if defined(_MSC_VER) +#if defined(_MSC_VER) && (_MSC_VER < 1800) /* Not req'd on VS2013 and above */ static inline float truncf(float x) { return x < 0.0f ? ceilf(x) : floorf(x); } static inline float exp2f(float x) { return powf(2.0f, x); } static inline float log2f(float x) { return logf(x) * 1.442695041f; } diff --git a/mesalib/src/mesa/main/mtypes.h b/mesalib/src/mesa/main/mtypes.h index ceabd9df7..bbc377280 100644 --- a/mesalib/src/mesa/main/mtypes.h +++ b/mesalib/src/mesa/main/mtypes.h @@ -1190,7 +1190,7 @@ struct gl_sampler_object */ struct gl_texture_object { - _glthread_Mutex Mutex; /**< for thread safety */ + mtx_t Mutex; /**< for thread safety */ GLint RefCount; /**< reference count */ GLuint Name; /**< the user-visible texture object ID */ GLchar *Label; /**< GL_KHR_debug */ @@ -1439,28 +1439,44 @@ struct gl_viewport_attrib }; +typedef enum { + MAP_USER, + MAP_INTERNAL, + + MAP_COUNT +} gl_map_buffer_index; + + +/** + * Fields describing a mapped buffer range. + */ +struct gl_buffer_mapping { + GLbitfield AccessFlags; /**< Mask of GL_MAP_x_BIT flags */ + GLvoid *Pointer; /**< User-space address of mapping */ + GLintptr Offset; /**< Mapped offset */ + GLsizeiptr Length; /**< Mapped length */ +}; + + /** * GL_ARB_vertex/pixel_buffer_object buffer object */ struct gl_buffer_object { - _glthread_Mutex Mutex; + mtx_t Mutex; GLint RefCount; GLuint Name; GLchar *Label; /**< GL_KHR_debug */ GLenum Usage; /**< GL_STREAM_DRAW_ARB, GL_STREAM_READ_ARB, etc. */ + GLbitfield StorageFlags; /**< GL_MAP_PERSISTENT_BIT, etc. */ GLsizeiptrARB Size; /**< Size of buffer storage in bytes */ GLubyte *Data; /**< Location of storage either in RAM or VRAM. */ - /** Fields describing a mapped buffer */ - /*@{*/ - GLbitfield AccessFlags; /**< Mask of GL_MAP_x_BIT flags */ - GLvoid *Pointer; /**< User-space address of mapping */ - GLintptr Offset; /**< Mapped offset */ - GLsizeiptr Length; /**< Mapped length */ - /*@}*/ GLboolean DeletePending; /**< true if buffer object is removed from the hash */ GLboolean Written; /**< Ever written to? (for debugging) */ GLboolean Purgeable; /**< Is the buffer purgeable under memory pressure? */ + GLboolean Immutable; /**< GL_ARB_buffer_storage */ + + struct gl_buffer_mapping Mappings[MAP_COUNT]; }; @@ -1560,7 +1576,7 @@ struct gl_vertex_array_object GLchar *Label; /**< GL_KHR_debug */ GLint RefCount; - _glthread_Mutex Mutex; + mtx_t Mutex; /** * Does the VAO use ARB semantics or Apple semantics? @@ -2013,6 +2029,7 @@ typedef enum SYSTEM_VALUE_SAMPLE_ID, /**< Fragment shader only */ SYSTEM_VALUE_SAMPLE_POS, /**< Fragment shader only */ SYSTEM_VALUE_SAMPLE_MASK_IN, /**< Fragment shader only */ + SYSTEM_VALUE_INVOCATION_ID, /**< Geometry shader only */ SYSTEM_VALUE_MAX /**< Number of values */ } gl_system_value; @@ -2143,6 +2160,7 @@ struct gl_geometry_program GLint VerticesIn; GLint VerticesOut; + GLint Invocations; GLenum InputType; /**< GL_POINTS, GL_LINES, GL_LINES_ADJACENCY_ARB, GL_TRIANGLES, or GL_TRIANGLES_ADJACENCY_ARB */ GLenum OutputType; /**< GL_POINTS, GL_LINE_STRIP or GL_TRIANGLE_STRIP */ @@ -2419,6 +2437,11 @@ struct gl_shader struct { GLint VerticesOut; /** + * 0 - Invocations count not declared in shader, or + * 1 .. MAX_GEOMETRY_SHADER_INVOCATIONS + */ + GLint Invocations; + /** * GL_POINTS, GL_LINES, GL_LINES_ADJACENCY, GL_TRIANGLES, or * GL_TRIANGLES_ADJACENCY, or PRIM_UNKNOWN if it's not set in this * shader. @@ -2579,6 +2602,12 @@ struct gl_shader_program */ GLboolean InternalSeparateShader; + /** + * Indicates whether program can be bound for individual pipeline stages + * using UseProgramStages after it is next linked. + */ + GLboolean SeparateShader; + GLuint NumShaders; /**< number of attached shaders */ struct gl_shader **Shaders; /**< List of attached the shaders */ @@ -2627,6 +2656,10 @@ struct gl_shader_program struct { GLint VerticesIn; GLint VerticesOut; + /** + * 1 .. MAX_GEOMETRY_SHADER_INVOCATIONS + */ + GLint Invocations; GLenum InputType; /**< GL_POINTS, GL_LINES, GL_LINES_ADJACENCY_ARB, GL_TRIANGLES, or GL_TRIANGLES_ADJACENCY_ARB */ GLenum OutputType; /**< GL_POINTS, GL_LINE_STRIP or GL_TRIANGLE_STRIP */ @@ -2746,9 +2779,19 @@ struct gl_shader_program /** * Context state for GLSL vertex/fragment shaders. + * Extended to support pipeline object */ -struct gl_shader_state +struct gl_pipeline_object { + /** Name of the pipeline object as received from glGenProgramPipelines. + * It would be 0 for shaders without separate shader objects. + */ + GLuint Name; + + GLint RefCount; + + mtx_t Mutex; + /** * Programs used for rendering * @@ -2768,8 +2811,21 @@ struct gl_shader_state struct gl_shader_program *ActiveProgram; GLbitfield Flags; /**< Mask of GLSL_x flags */ + + GLboolean EverBound; /**< Has the pipeline object been created */ }; +/** + * Context state for GLSL pipeline shaders. + */ +struct gl_pipeline_shader_state +{ + /** Currently bound pipeline object. See _mesa_BindProgramPipeline() */ + struct gl_pipeline_object *Current; + + /** Pipeline objects */ + struct _mesa_HashTable *Objects; +}; /** * Compiler options for a single GLSL shaders type @@ -2871,7 +2927,7 @@ struct gl_sync_object */ struct gl_shared_state { - _glthread_Mutex Mutex; /**< for thread safety */ + mtx_t Mutex; /**< for thread safety */ GLint RefCount; /**< Reference count */ struct _mesa_HashTable *DisplayList; /**< Display lists hash table */ struct _mesa_HashTable *TexObjects; /**< Texture objects hash table */ @@ -2889,7 +2945,7 @@ struct gl_shared_state * \todo Improve the granularity of locking. */ /*@{*/ - _glthread_Mutex TexMutex; /**< texobj thread safety */ + mtx_t TexMutex; /**< texobj thread safety */ GLuint TextureStateStamp; /**< state notification for shared tex */ /*@}*/ @@ -2946,7 +3002,7 @@ struct gl_shared_state */ struct gl_renderbuffer { - _glthread_Mutex Mutex; /**< for thread safety */ + mtx_t Mutex; /**< for thread safety */ GLuint ClassID; /**< Useful for drivers */ GLuint Name; GLchar *Label; /**< GL_KHR_debug */ @@ -3024,7 +3080,7 @@ struct gl_renderbuffer_attachment */ struct gl_framebuffer { - _glthread_Mutex Mutex; /**< for thread safety */ + mtx_t Mutex; /**< for thread safety */ /** * If zero, this is a window system framebuffer. If non-zero, this * is a FBO framebuffer; note that for some devices (i.e. those with @@ -3433,6 +3489,7 @@ struct gl_extensions GLboolean ARB_arrays_of_arrays; GLboolean ARB_base_instance; GLboolean ARB_blend_func_extended; + GLboolean ARB_buffer_storage; GLboolean ARB_color_buffer_float; GLboolean ARB_compute_shader; GLboolean ARB_conservative_depth; @@ -3451,7 +3508,6 @@ struct gl_extensions GLboolean ARB_explicit_attrib_location; GLboolean ARB_geometry_shader4; GLboolean ARB_gpu_shader5; - GLboolean ARB_half_float_pixel; GLboolean ARB_half_float_vertex; GLboolean ARB_instanced_arrays; GLboolean ARB_internalformat_query; @@ -3461,6 +3517,7 @@ struct gl_extensions GLboolean ARB_point_sprite; GLboolean ARB_sample_shading; GLboolean ARB_seamless_cube_map; + GLboolean ARB_separate_shader_objects; GLboolean ARB_shader_atomic_counters; GLboolean ARB_shader_bit_encoding; GLboolean ARB_shader_image_load_store; @@ -4070,7 +4127,8 @@ struct gl_context struct gl_geometry_program_state GeometryProgram; struct gl_ati_fragment_shader_state ATIFragmentShader; - struct gl_shader_state Shader; /**< GLSL shader object state */ + struct gl_pipeline_shader_state Pipeline; /**< GLSL pipeline shader object state */ + struct gl_pipeline_object Shader; /**< GLSL shader object state */ struct gl_shader_compiler_options ShaderCompilerOptions[MESA_SHADER_STAGES]; struct gl_query_state Query; /**< occlusion, timer queries */ @@ -4132,7 +4190,7 @@ struct gl_context GLuint ErrorDebugCount; /* GL_ARB_debug_output/GL_KHR_debug */ - struct gl_debug_state Debug; + struct gl_debug_state *Debug; GLenum RenderMode; /**< either GL_RENDER, GL_SELECT, GL_FEEDBACK */ GLbitfield NewState; /**< bitwise-or of _NEW_* flags */ diff --git a/mesalib/src/mesa/main/pbo.c b/mesalib/src/mesa/main/pbo.c index 400cec3f0..a0d61a643 100644 --- a/mesalib/src/mesa/main/pbo.c +++ b/mesalib/src/mesa/main/pbo.c @@ -149,7 +149,8 @@ _mesa_map_pbo_source(struct gl_context *ctx, buf = (GLubyte *) ctx->Driver.MapBufferRange(ctx, 0, unpack->BufferObj->Size, GL_MAP_READ_BIT, - unpack->BufferObj); + unpack->BufferObj, + MAP_INTERNAL); if (!buf) return NULL; @@ -201,7 +202,7 @@ _mesa_map_validate_pbo_source(struct gl_context *ctx, return ptr; } - if (_mesa_bufferobj_mapped(unpack->BufferObj)) { + if (_mesa_check_disallowed_mapping(unpack->BufferObj)) { /* buffer is already mapped - that's an error */ _mesa_error(ctx, GL_INVALID_OPERATION, "%s(PBO is mapped)", where); return NULL; @@ -221,7 +222,7 @@ _mesa_unmap_pbo_source(struct gl_context *ctx, { ASSERT(unpack != &ctx->Pack); /* catch pack/unpack mismatch */ if (_mesa_is_bufferobj(unpack->BufferObj)) { - ctx->Driver.UnmapBuffer(ctx, unpack->BufferObj); + ctx->Driver.UnmapBuffer(ctx, unpack->BufferObj, MAP_INTERNAL); } } @@ -246,7 +247,8 @@ _mesa_map_pbo_dest(struct gl_context *ctx, buf = (GLubyte *) ctx->Driver.MapBufferRange(ctx, 0, pack->BufferObj->Size, GL_MAP_WRITE_BIT, - pack->BufferObj); + pack->BufferObj, + MAP_INTERNAL); if (!buf) return NULL; @@ -297,7 +299,7 @@ _mesa_map_validate_pbo_dest(struct gl_context *ctx, return ptr; } - if (_mesa_bufferobj_mapped(unpack->BufferObj)) { + if (_mesa_check_disallowed_mapping(unpack->BufferObj)) { /* buffer is already mapped - that's an error */ _mesa_error(ctx, GL_INVALID_OPERATION, "%s(PBO is mapped)", where); return NULL; @@ -317,7 +319,7 @@ _mesa_unmap_pbo_dest(struct gl_context *ctx, { ASSERT(pack != &ctx->Unpack); /* catch pack/unpack mismatch */ if (_mesa_is_bufferobj(pack->BufferObj)) { - ctx->Driver.UnmapBuffer(ctx, pack->BufferObj); + ctx->Driver.UnmapBuffer(ctx, pack->BufferObj, MAP_INTERNAL); } } @@ -351,7 +353,8 @@ _mesa_validate_pbo_teximage(struct gl_context *ctx, GLuint dimensions, buf = (GLubyte *) ctx->Driver.MapBufferRange(ctx, 0, unpack->BufferObj->Size, GL_MAP_READ_BIT, - unpack->BufferObj); + unpack->BufferObj, + MAP_INTERNAL); if (!buf) { _mesa_error(ctx, GL_INVALID_OPERATION, "%s%uD(PBO is mapped)", funcName, dimensions); @@ -393,7 +396,8 @@ _mesa_validate_pbo_compressed_teximage(struct gl_context *ctx, buf = (GLubyte*) ctx->Driver.MapBufferRange(ctx, 0, packing->BufferObj->Size, GL_MAP_READ_BIT, - packing->BufferObj); + packing->BufferObj, + MAP_INTERNAL); if (!buf) { _mesa_error(ctx, GL_INVALID_OPERATION, "%s%uD(PBO is mapped)", funcName, dimensions); @@ -413,6 +417,6 @@ _mesa_unmap_teximage_pbo(struct gl_context *ctx, const struct gl_pixelstore_attrib *unpack) { if (_mesa_is_bufferobj(unpack->BufferObj)) { - ctx->Driver.UnmapBuffer(ctx, unpack->BufferObj); + ctx->Driver.UnmapBuffer(ctx, unpack->BufferObj, MAP_INTERNAL); } } diff --git a/mesalib/src/mesa/main/pipelineobj.c b/mesalib/src/mesa/main/pipelineobj.c new file mode 100644 index 000000000..27012df72 --- /dev/null +++ b/mesalib/src/mesa/main/pipelineobj.c @@ -0,0 +1,445 @@ +/* + * Mesa 3-D graphics library + * + * Copyright © 2013 Gregory Hainaut <gregory.hainaut@gmail.com> + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +/** + * \file pipelineobj.c + * \author Hainaut Gregory <gregory.hainaut@gmail.com> + * + * Implementation of pipeline object related API functions. Based on + * GL_ARB_separate_shader_objects extension. + */ + +#include "main/glheader.h" +#include "main/context.h" +#include "main/dispatch.h" +#include "main/enums.h" +#include "main/hash.h" +#include "main/mtypes.h" +#include "main/pipelineobj.h" +#include "main/shaderapi.h" +#include "main/shaderobj.h" +#include "main/transformfeedback.h" +#include "main/uniforms.h" +#include "program/program.h" +#include "program/prog_parameter.h" +#include "ralloc.h" +#include <stdbool.h> +#include "../glsl/glsl_parser_extras.h" +#include "../glsl/ir_uniform.h" + +/** + * Delete a pipeline object. + */ +void +_mesa_delete_pipeline_object(struct gl_context *ctx, + struct gl_pipeline_object *obj) +{ + unsigned i; + + _mesa_reference_shader_program(ctx, &obj->_CurrentFragmentProgram, NULL); + + for (i = 0; i < MESA_SHADER_STAGES; i++) + _mesa_reference_shader_program(ctx, &obj->CurrentProgram[i], NULL); + + _mesa_reference_shader_program(ctx, &obj->ActiveProgram, NULL); + mtx_destroy(&obj->Mutex); + ralloc_free(obj); +} + +/** + * Allocate and initialize a new pipeline object. + */ +static struct gl_pipeline_object * +_mesa_new_pipeline_object(struct gl_context *ctx, GLuint name) +{ + struct gl_pipeline_object *obj = rzalloc(NULL, struct gl_pipeline_object); + if (obj) { + obj->Name = name; + mtx_init(&obj->Mutex, mtx_plain); + obj->RefCount = 1; + obj->Flags = _mesa_get_shader_flags(); + } + + return obj; +} + +/** + * Initialize pipeline object state for given context. + */ +void +_mesa_init_pipeline(struct gl_context *ctx) +{ + ctx->Pipeline.Objects = _mesa_NewHashTable(); + + ctx->Pipeline.Current = NULL; +} + + +/** + * Callback for deleting a pipeline object. Called by _mesa_HashDeleteAll(). + */ +static void +delete_pipelineobj_cb(GLuint id, void *data, void *userData) +{ + struct gl_pipeline_object *obj = (struct gl_pipeline_object *) data; + struct gl_context *ctx = (struct gl_context *) userData; + _mesa_delete_pipeline_object(ctx, obj); +} + + +/** + * Free pipeline state for given context. + */ +void +_mesa_free_pipeline_data(struct gl_context *ctx) +{ + _mesa_HashDeleteAll(ctx->Pipeline.Objects, delete_pipelineobj_cb, ctx); + _mesa_DeleteHashTable(ctx->Pipeline.Objects); +} + +/** + * Look up the pipeline object for the given ID. + * + * \returns + * Either a pointer to the pipeline object with the specified ID or \c NULL for + * a non-existent ID. The spec defines ID 0 as being technically + * non-existent. + */ +static inline struct gl_pipeline_object * +lookup_pipeline_object(struct gl_context *ctx, GLuint id) +{ + if (id == 0) + return NULL; + else + return (struct gl_pipeline_object *) + _mesa_HashLookup(ctx->Pipeline.Objects, id); +} + +/** + * Add the given pipeline object to the pipeline object pool. + */ +static void +save_pipeline_object(struct gl_context *ctx, struct gl_pipeline_object *obj) +{ + if (obj->Name > 0) { + _mesa_HashInsert(ctx->Pipeline.Objects, obj->Name, obj); + } +} + +/** + * Remove the given pipeline object from the pipeline object pool. + * Do not deallocate the pipeline object though. + */ +static void +remove_pipeline_object(struct gl_context *ctx, struct gl_pipeline_object *obj) +{ + if (obj->Name > 0) { + _mesa_HashRemove(ctx->Pipeline.Objects, obj->Name); + } +} + +/** + * Set ptr to obj w/ reference counting. + * Note: this should only be called from the _mesa_reference_pipeline_object() + * inline function. + */ +void +_mesa_reference_pipeline_object_(struct gl_context *ctx, + struct gl_pipeline_object **ptr, + struct gl_pipeline_object *obj) +{ + assert(*ptr != obj); + + if (*ptr) { + /* Unreference the old pipeline object */ + GLboolean deleteFlag = GL_FALSE; + struct gl_pipeline_object *oldObj = *ptr; + + mtx_lock(&oldObj->Mutex); + ASSERT(oldObj->RefCount > 0); + oldObj->RefCount--; + deleteFlag = (oldObj->RefCount == 0); + mtx_unlock(&oldObj->Mutex); + + if (deleteFlag) { + _mesa_delete_pipeline_object(ctx, oldObj); + } + + *ptr = NULL; + } + ASSERT(!*ptr); + + if (obj) { + /* reference new pipeline object */ + mtx_lock(&obj->Mutex); + if (obj->RefCount == 0) { + /* this pipeline's being deleted (look just above) */ + /* Not sure this can ever really happen. Warn if it does. */ + _mesa_problem(NULL, "referencing deleted pipeline object"); + *ptr = NULL; + } + else { + obj->RefCount++; + *ptr = obj; + } + mtx_unlock(&obj->Mutex); + } +} + +/** + * Bound program to severals stages of the pipeline + */ +void GLAPIENTRY +_mesa_UseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program) +{ +} + +/** + * Use the named shader program for subsequent glUniform calls (if pipeline + * bound) + */ +void GLAPIENTRY +_mesa_ActiveShaderProgram(GLuint pipeline, GLuint program) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = NULL; + struct gl_pipeline_object *pipe = lookup_pipeline_object(ctx, pipeline); + + if (program != 0) { + shProg = _mesa_lookup_shader_program_err(ctx, program, + "glActiveShaderProgram(program)"); + if (shProg == NULL) + return; + } + + if (!pipe) { + _mesa_error(ctx, GL_INVALID_OPERATION, "glActiveShaderProgram(pipeline)"); + return; + } + + /* Object is created by any Pipeline call but glGenProgramPipelines, + * glIsProgramPipeline and GetProgramPipelineInfoLog + */ + pipe->EverBound = GL_TRUE; + + if ((shProg != NULL) && !shProg->LinkStatus) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glActiveShaderProgram(program %u not linked)", shProg->Name); + return; + } + + _mesa_reference_shader_program(ctx, &pipe->ActiveProgram, shProg); +} + +/** + * Make program of the pipeline current + */ +void GLAPIENTRY +_mesa_BindProgramPipeline(GLuint pipeline) +{ +} + +/** + * Delete a set of pipeline objects. + * + * \param n Number of pipeline objects to delete. + * \param ids pipeline of \c n pipeline object IDs. + */ +void GLAPIENTRY +_mesa_DeleteProgramPipelines(GLsizei n, const GLuint *pipelines) +{ + GET_CURRENT_CONTEXT(ctx); + GLsizei i; + + if (n < 0) { + _mesa_error(ctx, GL_INVALID_VALUE, "glDeleteProgramPipelines(n<0)"); + return; + } + + for (i = 0; i < n; i++) { + struct gl_pipeline_object *obj = + lookup_pipeline_object(ctx, pipelines[i]); + + if (obj) { + ASSERT(obj->Name == pipelines[i]); + + /* If the pipeline object is currently bound, the spec says "If an + * object that is currently bound is deleted, the binding for that + * object reverts to zero and no program pipeline object becomes + * current." + */ + if (obj == ctx->Pipeline.Current) { + _mesa_BindProgramPipeline(0); + } + + /* The ID is immediately freed for re-use */ + remove_pipeline_object(ctx, obj); + + /* Unreference the pipeline object. + * If refcount hits zero, the object will be deleted. + */ + _mesa_reference_pipeline_object(ctx, &obj, NULL); + } + } +} + +/** + * Generate a set of unique pipeline object IDs and store them in \c pipelines. + * \param n Number of IDs to generate. + * \param pipelines pipeline of \c n locations to store the IDs. + */ +void GLAPIENTRY +_mesa_GenProgramPipelines(GLsizei n, GLuint *pipelines) +{ + GET_CURRENT_CONTEXT(ctx); + + GLuint first; + GLint i; + + if (n < 0) { + _mesa_error(ctx, GL_INVALID_VALUE, "glGenProgramPipelines(n<0)"); + return; + } + + if (!pipelines) { + return; + } + + first = _mesa_HashFindFreeKeyBlock(ctx->Pipeline.Objects, n); + + for (i = 0; i < n; i++) { + struct gl_pipeline_object *obj; + GLuint name = first + i; + + obj = _mesa_new_pipeline_object(ctx, name); + if (!obj) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGenProgramPipelines"); + return; + } + + save_pipeline_object(ctx, obj); + pipelines[i] = first + i; + } + +} + +/** + * Determine if ID is the name of an pipeline object. + * + * \param id ID of the potential pipeline object. + * \return \c GL_TRUE if \c id is the name of a pipeline object, + * \c GL_FALSE otherwise. + */ +GLboolean GLAPIENTRY +_mesa_IsProgramPipeline(GLuint pipeline) +{ + GET_CURRENT_CONTEXT(ctx); + + struct gl_pipeline_object *obj = lookup_pipeline_object(ctx, pipeline); + if (obj == NULL) + return GL_FALSE; + + return obj->EverBound; +} + +/** + * glGetProgramPipelineiv() - get pipeline shader state. + */ +void GLAPIENTRY +_mesa_GetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_pipeline_object *pipe = lookup_pipeline_object(ctx, pipeline); + + /* Are geometry shaders available in this context? + */ + const bool has_gs = _mesa_has_geometry_shaders(ctx); + + if (!pipe) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glGetProgramPipelineiv(pipeline)"); + return; + } + + /* Object is created by any Pipeline call but glGenProgramPipelines, + * glIsProgramPipeline and GetProgramPipelineInfoLog + */ + pipe->EverBound = GL_TRUE; + + switch (pname) { + case GL_ACTIVE_PROGRAM: + *params = pipe->ActiveProgram ? pipe->ActiveProgram->Name : 0; + return; + case GL_INFO_LOG_LENGTH: + /* FINISHME: Implement the info log. + */ + *params = 0; + return; + case GL_VALIDATE_STATUS: + /* FINISHME: Implement validation status. + */ + *params = 0; + return; + case GL_VERTEX_SHADER: + *params = pipe->CurrentProgram[MESA_SHADER_VERTEX] + ? pipe->CurrentProgram[MESA_SHADER_VERTEX]->Name : 0; + return; + case GL_TESS_EVALUATION_SHADER: + /* NOT YET SUPPORTED */ + break; + case GL_TESS_CONTROL_SHADER: + /* NOT YET SUPPORTED */ + break; + case GL_GEOMETRY_SHADER: + if (!has_gs) + break; + *params = pipe->CurrentProgram[MESA_SHADER_GEOMETRY] + ? pipe->CurrentProgram[MESA_SHADER_GEOMETRY]->Name : 0; + return; + case GL_FRAGMENT_SHADER: + *params = pipe->CurrentProgram[MESA_SHADER_FRAGMENT] + ? pipe->CurrentProgram[MESA_SHADER_FRAGMENT]->Name : 0; + return; + default: + break; + } + + _mesa_error(ctx, GL_INVALID_ENUM, "glGetProgramPipelineiv(pname=%s)", + _mesa_lookup_enum_by_nr(pname)); +} + +/** + * Check compatibility of pipeline's program + */ +void GLAPIENTRY +_mesa_ValidateProgramPipeline(GLuint pipeline) +{ +} + +void GLAPIENTRY +_mesa_GetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, + GLsizei *length, GLchar *infoLog) +{ +} diff --git a/mesalib/src/mesa/main/pipelineobj.h b/mesalib/src/mesa/main/pipelineobj.h new file mode 100644 index 000000000..46d5fab42 --- /dev/null +++ b/mesalib/src/mesa/main/pipelineobj.h @@ -0,0 +1,95 @@ +/* + * Mesa 3-D graphics library + * + * Copyright © 2013 Gregory Hainaut <gregory.hainaut@gmail.com> + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#ifndef PIPELINEOBJ_H +#define PIPELINEOBJ_H + +#include "glheader.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct _glapi_table; +struct gl_context; +struct gl_pipeline_object; + +extern void +_mesa_delete_pipeline_object(struct gl_context *ctx, struct gl_pipeline_object *obj); + +extern void +_mesa_init_pipeline(struct gl_context *ctx); + +extern void +_mesa_free_pipeline_data(struct gl_context *ctx); + +extern void +_mesa_reference_pipeline_object_(struct gl_context *ctx, + struct gl_pipeline_object **ptr, + struct gl_pipeline_object *obj); + +static inline void +_mesa_reference_pipeline_object(struct gl_context *ctx, + struct gl_pipeline_object **ptr, + struct gl_pipeline_object *obj) +{ + if (*ptr != obj) + _mesa_reference_pipeline_object_(ctx, ptr, obj); +} + + +extern void GLAPIENTRY +_mesa_UseProgramStages(GLuint pipeline, GLbitfield stages, GLuint program); + +extern void GLAPIENTRY +_mesa_ActiveShaderProgram(GLuint pipeline, GLuint program); + +extern void GLAPIENTRY +_mesa_BindProgramPipeline(GLuint pipeline); + +extern void GLAPIENTRY +_mesa_DeleteProgramPipelines(GLsizei n, const GLuint *pipelines); + +extern void GLAPIENTRY +_mesa_GenProgramPipelines(GLsizei n, GLuint *pipelines); + +extern GLboolean GLAPIENTRY +_mesa_IsProgramPipeline(GLuint pipeline); + +extern void GLAPIENTRY +_mesa_GetProgramPipelineiv(GLuint pipeline, GLenum pname, GLint *params); + +extern void GLAPIENTRY +_mesa_ValidateProgramPipeline(GLuint pipeline); + +extern void GLAPIENTRY +_mesa_GetProgramPipelineInfoLog(GLuint pipeline, GLsizei bufSize, + GLsizei *length, GLchar *infoLog); + +#ifdef __cplusplus +} +#endif + +#endif /* PIPELINEOBJ_H */ diff --git a/mesalib/src/mesa/main/readpix.c b/mesalib/src/mesa/main/readpix.c index e16346896..b09cf5499 100644 --- a/mesalib/src/mesa/main/readpix.c +++ b/mesalib/src/mesa/main/readpix.c @@ -595,7 +595,7 @@ fast_read_depth_stencil_pixels(struct gl_context *ctx, return GL_FALSE; if (rb->Format != MESA_FORMAT_S8_UINT_Z24_UNORM && - rb->Format != MESA_FORMAT_Z24_UNORM_X8_UINT) + rb->Format != MESA_FORMAT_Z24_UNORM_S8_UINT) return GL_FALSE; ctx->Driver.MapRenderbuffer(ctx, rb, x, y, width, height, GL_MAP_READ_BIT, @@ -1033,7 +1033,7 @@ _mesa_ReadnPixelsARB( GLint x, GLint y, GLsizei width, GLsizei height, } if (_mesa_is_bufferobj(ctx->Pack.BufferObj) && - _mesa_bufferobj_mapped(ctx->Pack.BufferObj)) { + _mesa_check_disallowed_mapping(ctx->Pack.BufferObj)) { /* buffer is mapped - that's an error */ _mesa_error(ctx, GL_INVALID_OPERATION, "glReadPixels(PBO is mapped)"); return; diff --git a/mesalib/src/mesa/main/renderbuffer.c b/mesalib/src/mesa/main/renderbuffer.c index 2ff96e548..0bc7f2b96 100644 --- a/mesalib/src/mesa/main/renderbuffer.c +++ b/mesalib/src/mesa/main/renderbuffer.c @@ -38,7 +38,7 @@ void _mesa_init_renderbuffer(struct gl_renderbuffer *rb, GLuint name) { - _glthread_INIT_MUTEX(rb->Mutex); + mtx_init(&rb->Mutex, mtx_plain); rb->ClassID = 0; rb->Name = name; @@ -83,7 +83,7 @@ _mesa_new_renderbuffer(struct gl_context *ctx, GLuint name) void _mesa_delete_renderbuffer(struct gl_context *ctx, struct gl_renderbuffer *rb) { - _glthread_DESTROY_MUTEX(rb->Mutex); + mtx_destroy(&rb->Mutex); free(rb->Label); free(rb); } @@ -153,12 +153,12 @@ _mesa_reference_renderbuffer_(struct gl_renderbuffer **ptr, GLboolean deleteFlag = GL_FALSE; struct gl_renderbuffer *oldRb = *ptr; - _glthread_LOCK_MUTEX(oldRb->Mutex); + mtx_lock(&oldRb->Mutex); ASSERT(oldRb->RefCount > 0); oldRb->RefCount--; /*printf("RB DECR %p (%d) to %d\n", (void*) oldRb, oldRb->Name, oldRb->RefCount);*/ deleteFlag = (oldRb->RefCount == 0); - _glthread_UNLOCK_MUTEX(oldRb->Mutex); + mtx_unlock(&oldRb->Mutex); if (deleteFlag) { GET_CURRENT_CONTEXT(ctx); @@ -171,10 +171,10 @@ _mesa_reference_renderbuffer_(struct gl_renderbuffer **ptr, if (rb) { /* reference new renderbuffer */ - _glthread_LOCK_MUTEX(rb->Mutex); + mtx_lock(&rb->Mutex); rb->RefCount++; /*printf("RB INCR %p (%d) to %d\n", (void*) rb, rb->Name, rb->RefCount);*/ - _glthread_UNLOCK_MUTEX(rb->Mutex); + mtx_unlock(&rb->Mutex); *ptr = rb; } } diff --git a/mesalib/src/mesa/main/samplerobj.c b/mesalib/src/mesa/main/samplerobj.c index 7285ef5ed..4900d5256 100644 --- a/mesalib/src/mesa/main/samplerobj.c +++ b/mesalib/src/mesa/main/samplerobj.c @@ -66,7 +66,7 @@ _mesa_reference_sampler_object_(struct gl_context *ctx, GLboolean deleteFlag = GL_FALSE; struct gl_sampler_object *oldSamp = *ptr; - /*_glthread_LOCK_MUTEX(oldSamp->Mutex);*/ + /*mtx_lock(&oldSamp->Mutex);*/ ASSERT(oldSamp->RefCount > 0); oldSamp->RefCount--; #if 0 @@ -74,7 +74,7 @@ _mesa_reference_sampler_object_(struct gl_context *ctx, (void *) oldSamp, oldSamp->Name, oldSamp->RefCount); #endif deleteFlag = (oldSamp->RefCount == 0); - /*_glthread_UNLOCK_MUTEX(oldSamp->Mutex);*/ + /*mtx_unlock(&oldSamp->Mutex);*/ if (deleteFlag) { ASSERT(ctx->Driver.DeleteSamplerObject); @@ -87,7 +87,7 @@ _mesa_reference_sampler_object_(struct gl_context *ctx, if (samp) { /* reference new sampler */ - /*_glthread_LOCK_MUTEX(samp->Mutex);*/ + /*mtx_lock(&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. */ @@ -102,7 +102,7 @@ _mesa_reference_sampler_object_(struct gl_context *ctx, #endif *ptr = samp; } - /*_glthread_UNLOCK_MUTEX(samp->Mutex);*/ + /*mtx_unlock(&samp->Mutex);*/ } } @@ -203,7 +203,7 @@ _mesa_DeleteSamplers(GLsizei count, const GLuint *samplers) return; } - _glthread_LOCK_MUTEX(ctx->Shared->Mutex); + mtx_lock(&ctx->Shared->Mutex); for (i = 0; i < count; i++) { if (samplers[i]) { @@ -228,7 +228,7 @@ _mesa_DeleteSamplers(GLsizei count, const GLuint *samplers) } } - _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); + mtx_unlock(&ctx->Shared->Mutex); } diff --git a/mesalib/src/mesa/main/shaderapi.c b/mesalib/src/mesa/main/shaderapi.c index 65b6b16bb..5060cbb0b 100644 --- a/mesalib/src/mesa/main/shaderapi.c +++ b/mesalib/src/mesa/main/shaderapi.c @@ -65,8 +65,8 @@ /** * Return mask of GLSL_x flags by examining the MESA_GLSL env var. */ -static GLbitfield -get_shader_flags(void) +GLbitfield +_mesa_get_shader_flags(void) { GLbitfield flags = 0x0; const char *env = _mesa_getenv("MESA_GLSL"); @@ -120,7 +120,11 @@ _mesa_init_shader_state(struct gl_context *ctx) for (sh = 0; sh < MESA_SHADER_STAGES; ++sh) memcpy(&ctx->ShaderCompilerOptions[sh], &options, sizeof(options)); - ctx->Shader.Flags = get_shader_flags(); + ctx->Shader.Flags = _mesa_get_shader_flags(); + + /* Extended for ARB_separate_shader_objects */ + ctx->Shader.RefCount = 1; + mtx_init(&ctx->Shader.Mutex, mtx_plain); } @@ -138,6 +142,10 @@ _mesa_free_shader_state(struct gl_context *ctx) _mesa_reference_shader_program(ctx, &ctx->Shader._CurrentFragmentProgram, NULL); _mesa_reference_shader_program(ctx, &ctx->Shader.ActiveProgram, NULL); + + /* Extended for ARB_separate_shader_objects */ + assert(ctx->Shader.RefCount == 1); + mtx_destroy(&ctx->Shader.Mutex); } @@ -383,30 +391,31 @@ detach_shader(struct gl_context *ctx, GLuint program, GLuint shader) _mesa_reference_shader(ctx, &shProg->Shaders[i], NULL); /* alloc new, smaller array */ - newList = - malloc((n - 1) * sizeof(struct gl_shader *)); + newList = malloc((n - 1) * sizeof(struct gl_shader *)); if (!newList) { _mesa_error(ctx, GL_OUT_OF_MEMORY, "glDetachShader"); return; } + /* Copy old list entries to new list, skipping removed entry at [i] */ for (j = 0; j < i; j++) { newList[j] = shProg->Shaders[j]; } - while (++i < n) + while (++i < n) { newList[j++] = shProg->Shaders[i]; - free(shProg->Shaders); + } + /* Free old list and install new one */ + free(shProg->Shaders); shProg->Shaders = newList; shProg->NumShaders = n - 1; #ifdef DEBUG - /* sanity check */ - { - for (j = 0; j < shProg->NumShaders; j++) { - assert(shProg->Shaders[j]->Type == GL_VERTEX_SHADER || - shProg->Shaders[j]->Type == GL_FRAGMENT_SHADER); - assert(shProg->Shaders[j]->RefCount > 0); - } + /* sanity check - make sure the new list's entries are sensible */ + for (j = 0; j < shProg->NumShaders; j++) { + assert(shProg->Shaders[j]->Type == GL_VERTEX_SHADER || + shProg->Shaders[j]->Type == GL_GEOMETRY_SHADER || + shProg->Shaders[j]->Type == GL_FRAGMENT_SHADER); + assert(shProg->Shaders[j]->RefCount > 0); } #endif @@ -605,6 +614,12 @@ get_programiv(struct gl_context *ctx, GLuint program, GLenum pname, GLint *param if (check_gs_query(ctx, shProg)) *params = shProg->Geom.VerticesOut; return; + case GL_GEOMETRY_SHADER_INVOCATIONS: + if (!has_core_gs || !ctx->Extensions.ARB_gpu_shader5) + break; + if (check_gs_query(ctx, shProg)) + *params = shProg->Geom.Invocations; + return; case GL_GEOMETRY_INPUT_TYPE: if (!has_core_gs) break; @@ -681,6 +696,12 @@ get_programiv(struct gl_context *ctx, GLuint program, GLenum pname, GLint *param params[i] = shProg->Comp.LocalSize[i]; return; } + case GL_PROGRAM_SEPARABLE: + if (!ctx->Extensions.ARB_separate_shader_objects) + break; + + *params = shProg->SeparateShader; + return; default: break; } @@ -817,9 +838,10 @@ compile_shader(struct gl_context *ctx, GLuint shaderObj) sh->CompileStatus = GL_FALSE; } else { if (ctx->Shader.Flags & GLSL_DUMP) { - printf("GLSL source for %s shader %d:\n", - _mesa_shader_stage_to_string(sh->Stage), sh->Name); - printf("%s\n", sh->Source); + fprintf(stderr, "GLSL source for %s shader %d:\n", + _mesa_shader_stage_to_string(sh->Stage), sh->Name); + fprintf(stderr, "%s\n", sh->Source); + fflush(stderr); } /* this call will set the shader->CompileStatus field to indicate if @@ -833,16 +855,17 @@ compile_shader(struct gl_context *ctx, GLuint shaderObj) if (ctx->Shader.Flags & GLSL_DUMP) { if (sh->CompileStatus) { - printf("GLSL IR for shader %d:\n", sh->Name); - _mesa_print_ir(sh->ir, NULL); - printf("\n\n"); + fprintf(stderr, "GLSL IR for shader %d:\n", sh->Name); + _mesa_print_ir(stderr, sh->ir, NULL); + fprintf(stderr, "\n\n"); } else { - printf("GLSL shader %d failed to compile.\n", sh->Name); + fprintf(stderr, "GLSL shader %d failed to compile.\n", sh->Name); } if (sh->InfoLog && sh->InfoLog[0] != 0) { - printf("GLSL shader %d info log:\n", sh->Name); - printf("%s\n", sh->InfoLog); + fprintf(stderr, "GLSL shader %d info log:\n", sh->Name); + fprintf(stderr, "%s\n", sh->InfoLog); } + fflush(stderr); } } @@ -1721,6 +1744,25 @@ _mesa_ProgramParameteri(GLuint program, GLenum pname, GLint value) */ shProg->BinaryRetreivableHint = value; return; + + case GL_PROGRAM_SEPARABLE: + if (!ctx->Extensions.ARB_separate_shader_objects) + break; + + /* Spec imply that the behavior is the same as ARB_get_program_binary + * Chapter 7.3 Program Objects + */ + if (value != GL_TRUE && value != GL_FALSE) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glProgramParameteri(pname=%s, value=%d): " + "value must be 0 or 1.", + _mesa_lookup_enum_by_nr(pname), + value); + return; + } + shProg->SeparateShader = value; + return; + default: break; } @@ -1792,19 +1834,16 @@ _mesa_ActiveProgramEXT(GLuint program) return; } - -/** - * For GL_EXT_separate_shader_objects - */ -GLuint GLAPIENTRY -_mesa_CreateShaderProgramEXT(GLenum type, const GLchar *string) +static GLuint +_mesa_create_shader_program(struct gl_context* ctx, GLboolean separate, + GLenum type, GLsizei count, const GLchar* const *strings) { - GET_CURRENT_CONTEXT(ctx); const GLuint shader = create_shader(ctx, type); GLuint program = 0; if (shader) { - shader_source(ctx, shader, _mesa_strdup(string)); + _mesa_ShaderSource(shader, count, strings, NULL); + compile_shader(ctx, shader); program = create_shader_program(ctx); @@ -1816,6 +1855,8 @@ _mesa_CreateShaderProgramEXT(GLenum type, const GLchar *string) shProg = _mesa_lookup_shader_program(ctx, program); sh = _mesa_lookup_shader(ctx, shader); + shProg->SeparateShader = separate; + get_shaderiv(ctx, shader, GL_COMPILE_STATUS, &compiled); if (compiled) { attach_shader(ctx, program, shader); @@ -1858,6 +1899,7 @@ _mesa_copy_linked_program_data(gl_shader_stage type, struct gl_geometry_program *dst_gp = (struct gl_geometry_program *) dst; dst_gp->VerticesIn = src->Geom.VerticesIn; dst_gp->VerticesOut = src->Geom.VerticesOut; + dst_gp->Invocations = src->Geom.Invocations; dst_gp->InputType = src->Geom.InputType; dst_gp->OutputType = src->Geom.OutputType; dst->UsesClipDistanceOut = src->Geom.UsesClipDistance; @@ -1875,3 +1917,30 @@ _mesa_copy_linked_program_data(gl_shader_stage type, break; } } + + +/** + * For GL_EXT_separate_shader_objects + */ +GLuint GLAPIENTRY +_mesa_CreateShaderProgramEXT(GLenum type, const GLchar *string) +{ + GET_CURRENT_CONTEXT(ctx); + + return _mesa_create_shader_program(ctx, GL_FALSE, type, 1, &string); +} + +/** + * ARB_separate_shader_objects: Compile & Link Program + * + * Basically the same as _mesa_CreateShaderProgramEXT but with support of + * multiple strings and sets the SeparateShader flag to true. + */ +GLuint GLAPIENTRY +_mesa_CreateShaderProgramv(GLenum type, GLsizei count, + const GLchar* const *strings) +{ + GET_CURRENT_CONTEXT(ctx); + + return _mesa_create_shader_program(ctx, GL_TRUE, type, count, strings); +} diff --git a/mesalib/src/mesa/main/shaderapi.h b/mesalib/src/mesa/main/shaderapi.h index 10f810caf..44426cc65 100644 --- a/mesalib/src/mesa/main/shaderapi.h +++ b/mesalib/src/mesa/main/shaderapi.h @@ -40,6 +40,9 @@ struct _glapi_table; struct gl_context; struct gl_shader_program; +extern GLbitfield +_mesa_get_shader_flags(void); + extern void _mesa_copy_string(GLchar *dst, GLsizei maxLength, GLsizei *length, const GLchar *src); @@ -219,6 +222,11 @@ extern bool _mesa_validate_shader_target(const struct gl_context *ctx, GLenum type); +/* GL_ARB_separate_shader_objects */ +extern GLuint GLAPIENTRY +_mesa_CreateShaderProgramv(GLenum type, GLsizei count, + const GLchar* const *strings); + #ifdef __cplusplus } #endif diff --git a/mesalib/src/mesa/main/shaderobj.c b/mesalib/src/mesa/main/shaderobj.c index 4f4bb69a8..d5c3d8099 100644 --- a/mesalib/src/mesa/main/shaderobj.c +++ b/mesalib/src/mesa/main/shaderobj.c @@ -355,6 +355,7 @@ _mesa_free_shader_program_data(struct gl_context *ctx, } free(shProg->Label); + shProg->Label = NULL; } diff --git a/mesalib/src/mesa/main/shared.c b/mesalib/src/mesa/main/shared.c index c11c7f9e9..dc22025c2 100644 --- a/mesalib/src/mesa/main/shared.c +++ b/mesalib/src/mesa/main/shared.c @@ -62,7 +62,7 @@ _mesa_alloc_shared_state(struct gl_context *ctx) if (!shared) return NULL; - _glthread_INIT_MUTEX(shared->Mutex); + mtx_init(&shared->Mutex, mtx_plain); shared->DisplayList = _mesa_NewHashTable(); shared->TexObjects = _mesa_NewHashTable(); @@ -113,7 +113,7 @@ _mesa_alloc_shared_state(struct gl_context *ctx) assert(shared->DefaultTex[TEXTURE_1D_INDEX]->RefCount == 1); /* Mutex and timestamp for texobj state validation */ - _glthread_INIT_MUTEX(shared->TexMutex); + mtx_init(&shared->TexMutex, mtx_plain); shared->TextureStateStamp = 0; shared->FrameBuffers = _mesa_NewHashTable(); @@ -186,10 +186,8 @@ delete_bufferobj_cb(GLuint id, void *data, void *userData) { struct gl_buffer_object *bufObj = (struct gl_buffer_object *) data; struct gl_context *ctx = (struct gl_context *) userData; - if (_mesa_bufferobj_mapped(bufObj)) { - ctx->Driver.UnmapBuffer(ctx, bufObj); - bufObj->Pointer = NULL; - } + + _mesa_buffer_unmap_all_mappings(ctx, bufObj); _mesa_reference_buffer_object(ctx, &bufObj, NULL); } @@ -356,8 +354,8 @@ free_shared_state(struct gl_context *ctx, struct gl_shared_state *shared) _mesa_HashDeleteAll(shared->TexObjects, delete_texture_cb, ctx); _mesa_DeleteHashTable(shared->TexObjects); - _glthread_DESTROY_MUTEX(shared->Mutex); - _glthread_DESTROY_MUTEX(shared->TexMutex); + mtx_destroy(&shared->Mutex); + mtx_destroy(&shared->TexMutex); free(shared); } @@ -380,11 +378,11 @@ _mesa_reference_shared_state(struct gl_context *ctx, struct gl_shared_state *old = *ptr; GLboolean delete; - _glthread_LOCK_MUTEX(old->Mutex); + mtx_lock(&old->Mutex); assert(old->RefCount >= 1); old->RefCount--; delete = (old->RefCount == 0); - _glthread_UNLOCK_MUTEX(old->Mutex); + mtx_unlock(&old->Mutex); if (delete) { free_shared_state(ctx, old); @@ -395,9 +393,9 @@ _mesa_reference_shared_state(struct gl_context *ctx, if (state) { /* reference new state */ - _glthread_LOCK_MUTEX(state->Mutex); + mtx_lock(&state->Mutex); state->RefCount++; *ptr = state; - _glthread_UNLOCK_MUTEX(state->Mutex); + mtx_unlock(&state->Mutex); } } diff --git a/mesalib/src/mesa/main/syncobj.c b/mesalib/src/mesa/main/syncobj.c index ae49db2e4..9721b14b4 100644 --- a/mesalib/src/mesa/main/syncobj.c +++ b/mesalib/src/mesa/main/syncobj.c @@ -184,9 +184,9 @@ _mesa_validate_sync(struct gl_context *ctx, void GLAPIENTRY _mesa_ref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj) { - _glthread_LOCK_MUTEX(ctx->Shared->Mutex); + mtx_lock(&ctx->Shared->Mutex); syncObj->RefCount++; - _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); + mtx_unlock(&ctx->Shared->Mutex); } @@ -195,7 +195,7 @@ _mesa_unref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj) { struct set_entry *entry; - _glthread_LOCK_MUTEX(ctx->Shared->Mutex); + mtx_lock(&ctx->Shared->Mutex); syncObj->RefCount--; if (syncObj->RefCount == 0) { entry = _mesa_set_search(ctx->Shared->SyncObjects, @@ -203,11 +203,11 @@ _mesa_unref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj) syncObj); assert (entry != NULL); _mesa_set_remove(ctx->Shared->SyncObjects, entry); - _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); + mtx_unlock(&ctx->Shared->Mutex); ctx->Driver.DeleteSyncObject(ctx, syncObj); } else { - _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); + mtx_unlock(&ctx->Shared->Mutex); } } @@ -288,11 +288,11 @@ _mesa_FenceSync(GLenum condition, GLbitfield flags) ctx->Driver.FenceSync(ctx, syncObj, condition, flags); - _glthread_LOCK_MUTEX(ctx->Shared->Mutex); + mtx_lock(&ctx->Shared->Mutex); _mesa_set_add(ctx->Shared->SyncObjects, _mesa_hash_pointer(syncObj), syncObj); - _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); + mtx_unlock(&ctx->Shared->Mutex); return (GLsync) syncObj; } diff --git a/mesalib/src/mesa/main/texcompress_etc.c b/mesalib/src/mesa/main/texcompress_etc.c index e3862be45..cbda68940 100644 --- a/mesalib/src/mesa/main/texcompress_etc.c +++ b/mesalib/src/mesa/main/texcompress_etc.c @@ -429,8 +429,7 @@ etc2_rgb8_parse_block(struct etc2_block *block, block->is_planar_mode = true; /* opaque bit must be set in planar mode */ - if (!block->opaque) - block->opaque = true; + block->opaque = true; for (i = 0; i < 3; i++) { block->base_colors[0][i] = etc2_base_color_o_planar(src, i); diff --git a/mesalib/src/mesa/main/texformat.c b/mesalib/src/mesa/main/texformat.c index bda2d8e17..004e7ebac 100644 --- a/mesalib/src/mesa/main/texformat.c +++ b/mesalib/src/mesa/main/texformat.c @@ -209,13 +209,13 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target, case GL_DEPTH_COMPONENT24: case GL_DEPTH_COMPONENT32: RETURN_IF_SUPPORTED(MESA_FORMAT_Z_UNORM32); - RETURN_IF_SUPPORTED(MESA_FORMAT_Z24_UNORM_S8_UINT); RETURN_IF_SUPPORTED(MESA_FORMAT_Z24_UNORM_X8_UINT); + RETURN_IF_SUPPORTED(MESA_FORMAT_Z24_UNORM_S8_UINT); break; case GL_DEPTH_COMPONENT16: RETURN_IF_SUPPORTED(MESA_FORMAT_Z_UNORM16); - RETURN_IF_SUPPORTED(MESA_FORMAT_Z24_UNORM_S8_UINT); RETURN_IF_SUPPORTED(MESA_FORMAT_Z24_UNORM_X8_UINT); + RETURN_IF_SUPPORTED(MESA_FORMAT_Z24_UNORM_S8_UINT); break; case GL_COMPRESSED_ALPHA_ARB: @@ -426,7 +426,7 @@ _mesa_choose_tex_format(struct gl_context *ctx, GLenum target, case GL_DEPTH_STENCIL_EXT: case GL_DEPTH24_STENCIL8_EXT: RETURN_IF_SUPPORTED(MESA_FORMAT_S8_UINT_Z24_UNORM); - RETURN_IF_SUPPORTED(MESA_FORMAT_Z24_UNORM_X8_UINT); + RETURN_IF_SUPPORTED(MESA_FORMAT_Z24_UNORM_S8_UINT); break; case GL_DEPTH_COMPONENT32F: diff --git a/mesalib/src/mesa/main/texgetimage.c b/mesalib/src/mesa/main/texgetimage.c index 133fa5376..daabf2e81 100644 --- a/mesalib/src/mesa/main/texgetimage.c +++ b/mesalib/src/mesa/main/texgetimage.c @@ -130,6 +130,10 @@ get_tex_depth_stencil(struct gl_context *ctx, GLuint dimensions, const GLint depth = texImage->Depth; GLint img, row; + assert(format == GL_DEPTH_STENCIL); + assert(type == GL_UNSIGNED_INT_24_8); + /* XXX type == GL_FLOAT_32_UNSIGNED_INT_24_8_REV is not handled yet */ + for (img = 0; img < depth; img++) { GLubyte *srcMap; GLint rowstride; @@ -145,8 +149,11 @@ get_tex_depth_stencil(struct gl_context *ctx, GLuint dimensions, void *dest = _mesa_image_address(dimensions, &ctx->Pack, pixels, width, height, format, type, img, row, 0); - /* XXX Z24_S8 vs. S8_Z24??? */ - memcpy(dest, src, width * sizeof(GLuint)); + /* Unpack from texture's format to GL's z24_s8 layout */ + _mesa_unpack_uint_24_8_depth_stencil_row(texImage->TexFormat, + width, + (const GLuint *) src, + dest); if (ctx->Pack.SwapBytes) { _mesa_swap4((GLuint *) dest, width); } @@ -635,7 +642,8 @@ _mesa_get_teximage(struct gl_context *ctx, */ GLubyte *buf = (GLubyte *) ctx->Driver.MapBufferRange(ctx, 0, ctx->Pack.BufferObj->Size, - GL_MAP_WRITE_BIT, ctx->Pack.BufferObj); + GL_MAP_WRITE_BIT, ctx->Pack.BufferObj, + MAP_INTERNAL); if (!buf) { /* out of memory or other unexpected error */ _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGetTexImage(map PBO failed)"); @@ -664,7 +672,7 @@ _mesa_get_teximage(struct gl_context *ctx, } if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) { - ctx->Driver.UnmapBuffer(ctx, ctx->Pack.BufferObj); + ctx->Driver.UnmapBuffer(ctx, ctx->Pack.BufferObj, MAP_INTERNAL); } } @@ -689,7 +697,8 @@ _mesa_get_compressed_teximage(struct gl_context *ctx, /* pack texture image into a PBO */ GLubyte *buf = (GLubyte *) ctx->Driver.MapBufferRange(ctx, 0, ctx->Pack.BufferObj->Size, - GL_MAP_WRITE_BIT, ctx->Pack.BufferObj); + GL_MAP_WRITE_BIT, ctx->Pack.BufferObj, + MAP_INTERNAL); if (!buf) { /* out of memory or other unexpected error */ _mesa_error(ctx, GL_OUT_OF_MEMORY, @@ -731,7 +740,7 @@ _mesa_get_compressed_teximage(struct gl_context *ctx, } if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) { - ctx->Driver.UnmapBuffer(ctx, ctx->Pack.BufferObj); + ctx->Driver.UnmapBuffer(ctx, ctx->Pack.BufferObj, MAP_INTERNAL); } } @@ -861,7 +870,7 @@ getteximage_error_check(struct gl_context *ctx, GLenum target, GLint level, if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) { /* PBO should not be mapped */ - if (_mesa_bufferobj_mapped(ctx->Pack.BufferObj)) { + if (_mesa_check_disallowed_mapping(ctx->Pack.BufferObj)) { _mesa_error(ctx, GL_INVALID_OPERATION, "glGetTexImage(PBO is mapped)"); return GL_TRUE; @@ -1004,7 +1013,7 @@ getcompressedteximage_error_check(struct gl_context *ctx, GLenum target, } /* make sure PBO is not mapped */ - if (_mesa_bufferobj_mapped(ctx->Pack.BufferObj)) { + if (_mesa_check_disallowed_mapping(ctx->Pack.BufferObj)) { _mesa_error(ctx, GL_INVALID_OPERATION, "glGetCompressedTexImage(PBO is mapped)"); return GL_TRUE; diff --git a/mesalib/src/mesa/main/teximage.c b/mesalib/src/mesa/main/teximage.c index 4d635fe7f..0519d221f 100644 --- a/mesalib/src/mesa/main/teximage.c +++ b/mesalib/src/mesa/main/teximage.c @@ -397,11 +397,6 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint internalFormat ) if (ctx->Extensions.ARB_texture_rg) { switch (internalFormat) { case GL_R16F: - /* R16F depends on both ARB_half_float_pixel and ARB_texture_float. - */ - if (!ctx->Extensions.ARB_half_float_pixel) - break; - /* FALLTHROUGH */ case GL_R32F: if (!ctx->Extensions.ARB_texture_float) break; @@ -422,11 +417,6 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint internalFormat ) return GL_RED; case GL_RG16F: - /* RG16F depends on both ARB_half_float_pixel and ARB_texture_float. - */ - if (!ctx->Extensions.ARB_half_float_pixel) - break; - /* FALLTHROUGH */ case GL_RG32F: if (!ctx->Extensions.ARB_texture_float) break; @@ -2254,9 +2244,10 @@ compressed_texture_error_check(struct gl_context *ctx, GLint dimensions, /* This will detect any invalid internalFormat value */ if (!_mesa_is_compressed_format(ctx, internalFormat)) { - reason = "internalFormat"; - error = GL_INVALID_ENUM; - goto error; + _mesa_error(ctx, GL_INVALID_ENUM, + "glCompressedTexImage%dD(internalFormat=%s)", + dimensions, _mesa_lookup_enum_by_nr(internalFormat)); + return GL_TRUE; } switch (internalFormat) { @@ -2348,6 +2339,7 @@ compressed_texture_error_check(struct gl_context *ctx, GLint dimensions, return GL_FALSE; error: + /* Note: not all error paths exit through here. */ _mesa_error(ctx, error, "glCompressedTexImage%dD(%s)", dimensions, reason); return GL_TRUE; } @@ -2563,7 +2555,8 @@ copytexture_error_check( struct gl_context *ctx, GLuint dimensions, break; default: _mesa_error(ctx, GL_INVALID_VALUE, - "glCopyTexImage%dD(internalFormat)", dimensions); + "glCopyTexImage%dD(internalFormat=%s)", dimensions, + _mesa_lookup_enum_by_nr(internalFormat)); return GL_TRUE; } } @@ -2571,7 +2564,8 @@ copytexture_error_check( struct gl_context *ctx, GLuint dimensions, baseFormat = _mesa_base_tex_format(ctx, internalFormat); if (baseFormat < 0) { _mesa_error(ctx, GL_INVALID_OPERATION, - "glCopyTexImage%dD(internalFormat)", dimensions); + "glCopyTexImage%dD(internalFormat=%s)", dimensions, + _mesa_lookup_enum_by_nr(internalFormat)); return GL_TRUE; } @@ -2580,7 +2574,8 @@ copytexture_error_check( struct gl_context *ctx, GLuint dimensions, if (_mesa_is_color_format(internalFormat)) { if (rb_base_format < 0) { _mesa_error(ctx, GL_INVALID_VALUE, - "glCopyTexImage%dD(internalFormat)", dimensions); + "glCopyTexImage%dD(internalFormat=%s)", dimensions, + _mesa_lookup_enum_by_nr(internalFormat)); return GL_TRUE; } } @@ -2606,7 +2601,8 @@ copytexture_error_check( struct gl_context *ctx, GLuint dimensions, } if (!valid) { _mesa_error(ctx, GL_INVALID_OPERATION, - "glCopyTexImage%dD(internalFormat)", dimensions); + "glCopyTexImage%dD(internalFormat=%s)", dimensions, + _mesa_lookup_enum_by_nr(internalFormat)); return GL_TRUE; } } @@ -4183,10 +4179,18 @@ _mesa_validate_texbuffer_format(const struct gl_context *ctx, return MESA_FORMAT_NONE; datatype = _mesa_get_format_datatype(format); - if (datatype == GL_FLOAT && !ctx->Extensions.ARB_texture_float) - return MESA_FORMAT_NONE; - if (datatype == GL_HALF_FLOAT && !ctx->Extensions.ARB_half_float_pixel) + /* The GL_ARB_texture_buffer_object spec says: + * + * "If ARB_texture_float is not supported, references to the + * floating-point internal formats provided by that extension should be + * removed, and such formats may not be passed to TexBufferARB." + * + * As a result, GL_HALF_FLOAT internal format depends on both + * GL_ARB_texture_float and GL_ARB_half_float_pixel. + */ + if ((datatype == GL_FLOAT || datatype == GL_HALF_FLOAT) && + !ctx->Extensions.ARB_texture_float) return MESA_FORMAT_NONE; if (!ctx->Extensions.ARB_texture_rg) { diff --git a/mesalib/src/mesa/main/teximage.h b/mesalib/src/mesa/main/teximage.h index 5f8a47776..51d94d17e 100644 --- a/mesalib/src/mesa/main/teximage.h +++ b/mesalib/src/mesa/main/teximage.h @@ -163,7 +163,7 @@ _mesa_legal_texture_base_format_for_target(struct gl_context *ctx, static inline void _mesa_lock_texture(struct gl_context *ctx, struct gl_texture_object *texObj) { - _glthread_LOCK_MUTEX(ctx->Shared->TexMutex); + mtx_lock(&ctx->Shared->TexMutex); ctx->Shared->TextureStateStamp++; (void) texObj; } @@ -172,7 +172,7 @@ static inline void _mesa_unlock_texture(struct gl_context *ctx, struct gl_texture_object *texObj) { (void) texObj; - _glthread_UNLOCK_MUTEX(ctx->Shared->TexMutex); + mtx_unlock(&ctx->Shared->TexMutex); } /*@}*/ diff --git a/mesalib/src/mesa/main/texobj.c b/mesalib/src/mesa/main/texobj.c index 6adc0ae84..3375fe36b 100644 --- a/mesalib/src/mesa/main/texobj.c +++ b/mesalib/src/mesa/main/texobj.c @@ -115,7 +115,7 @@ _mesa_initialize_texture_object( struct gl_context *ctx, memset(obj, 0, sizeof(*obj)); /* init the non-zero fields */ - _glthread_INIT_MUTEX(obj->Mutex); + mtx_init(&obj->Mutex, mtx_plain); obj->RefCount = 1; obj->Name = name; obj->Target = target; @@ -237,7 +237,7 @@ _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); + mtx_destroy(&texObj->Mutex); free(texObj->Label); @@ -374,12 +374,12 @@ _mesa_reference_texobj_(struct gl_texture_object **ptr, ASSERT(valid_texture_object(oldTex)); (void) valid_texture_object; /* silence warning in release builds */ - _glthread_LOCK_MUTEX(oldTex->Mutex); + mtx_lock(&oldTex->Mutex); ASSERT(oldTex->RefCount > 0); oldTex->RefCount--; deleteFlag = (oldTex->RefCount == 0); - _glthread_UNLOCK_MUTEX(oldTex->Mutex); + mtx_unlock(&oldTex->Mutex); if (deleteFlag) { GET_CURRENT_CONTEXT(ctx); @@ -396,7 +396,7 @@ _mesa_reference_texobj_(struct gl_texture_object **ptr, if (tex) { /* reference new texture */ ASSERT(valid_texture_object(tex)); - _glthread_LOCK_MUTEX(tex->Mutex); + mtx_lock(&tex->Mutex); if (tex->RefCount == 0) { /* this texture's being deleted (look just above) */ /* Not sure this can every really happen. Warn if it does. */ @@ -407,7 +407,7 @@ _mesa_reference_texobj_(struct gl_texture_object **ptr, tex->RefCount++; *ptr = tex; } - _glthread_UNLOCK_MUTEX(tex->Mutex); + mtx_unlock(&tex->Mutex); } } @@ -1009,7 +1009,7 @@ _mesa_GenTextures( GLsizei n, GLuint *textures ) /* * This must be atomic (generation and allocation of texture IDs) */ - _glthread_LOCK_MUTEX(ctx->Shared->Mutex); + mtx_lock(&ctx->Shared->Mutex); first = _mesa_HashFindFreeKeyBlock(ctx->Shared->TexObjects, n); @@ -1020,7 +1020,7 @@ _mesa_GenTextures( GLsizei n, GLuint *textures ) GLenum target = 0; texObj = ctx->Driver.NewTextureObject(ctx, name, target); if (!texObj) { - _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); + mtx_unlock(&ctx->Shared->Mutex); _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGenTextures"); return; } @@ -1031,7 +1031,7 @@ _mesa_GenTextures( GLsizei n, GLuint *textures ) textures[i] = name; } - _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); + mtx_unlock(&ctx->Shared->Mutex); } @@ -1178,9 +1178,9 @@ _mesa_DeleteTextures( GLsizei n, const GLuint *textures) /* The texture _name_ is now free for re-use. * Remove it from the hash table now. */ - _glthread_LOCK_MUTEX(ctx->Shared->Mutex); + mtx_lock(&ctx->Shared->Mutex); _mesa_HashRemove(ctx->Shared->TexObjects, delObj->Name); - _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); + mtx_unlock(&ctx->Shared->Mutex); /* Unreference the texobj. If refcount hits zero, the texture * will be deleted. @@ -1313,9 +1313,9 @@ _mesa_BindTexture( GLenum target, GLuint texName ) } /* and insert it into hash table */ - _glthread_LOCK_MUTEX(ctx->Shared->Mutex); + mtx_lock(&ctx->Shared->Mutex); _mesa_HashInsert(ctx->Shared->TexObjects, texName, newTexObj); - _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); + mtx_unlock(&ctx->Shared->Mutex); } newTexObj->Target = target; } @@ -1327,10 +1327,10 @@ _mesa_BindTexture( GLenum target, GLuint texName ) */ { GLboolean early_out; - _glthread_LOCK_MUTEX(ctx->Shared->Mutex); + mtx_lock(&ctx->Shared->Mutex); early_out = ((ctx->Shared->RefCount == 1) && (newTexObj == texUnit->CurrentTex[targetIndex])); - _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); + mtx_unlock(&ctx->Shared->Mutex); if (early_out) { return; } @@ -1493,7 +1493,7 @@ _mesa_IsTexture( GLuint texture ) void _mesa_lock_context_textures( struct gl_context *ctx ) { - _glthread_LOCK_MUTEX(ctx->Shared->TexMutex); + mtx_lock(&ctx->Shared->TexMutex); if (ctx->Shared->TextureStateStamp != ctx->TextureStateTimestamp) { ctx->NewState |= _NEW_TEXTURE; @@ -1506,7 +1506,7 @@ void _mesa_unlock_context_textures( struct gl_context *ctx ) { assert(ctx->Shared->TextureStateStamp == ctx->TextureStateTimestamp); - _glthread_UNLOCK_MUTEX(ctx->Shared->TexMutex); + mtx_unlock(&ctx->Shared->TexMutex); } void GLAPIENTRY diff --git a/mesalib/src/mesa/main/texparam.c b/mesalib/src/mesa/main/texparam.c index b7ed50dd5..bbdbc2763 100644 --- a/mesalib/src/mesa/main/texparam.c +++ b/mesalib/src/mesa/main/texparam.c @@ -986,6 +986,9 @@ legal_get_tex_level_parameter_target(struct gl_context *ctx, GLenum target) case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB: case GL_PROXY_TEXTURE_CUBE_MAP_ARB: return ctx->Extensions.ARB_texture_cube_map; + case GL_TEXTURE_CUBE_MAP_ARRAY_ARB: + case GL_PROXY_TEXTURE_CUBE_MAP_ARRAY_ARB: + return ctx->Extensions.ARB_texture_cube_map_array; case GL_TEXTURE_RECTANGLE_NV: case GL_PROXY_TEXTURE_RECTANGLE_NV: return ctx->Extensions.NV_texture_rectangle; diff --git a/mesalib/src/mesa/main/texstore.c b/mesalib/src/mesa/main/texstore.c index 1e4308a04..3e22a0b46 100644 --- a/mesalib/src/mesa/main/texstore.c +++ b/mesalib/src/mesa/main/texstore.c @@ -1049,7 +1049,7 @@ _mesa_texstore_x8_z24(TEXSTORE_PARAMS) const GLuint depthScale = 0xffffff; (void) dims; - ASSERT(dstFormat == MESA_FORMAT_Z24_UNORM_S8_UINT); + ASSERT(dstFormat == MESA_FORMAT_Z24_UNORM_X8_UINT); { /* general path */ @@ -2558,7 +2558,7 @@ _mesa_texstore_s8_z24(TEXSTORE_PARAMS) GLuint *depth; GLubyte *stencil; - ASSERT(dstFormat == MESA_FORMAT_Z24_UNORM_X8_UINT); + ASSERT(dstFormat == MESA_FORMAT_Z24_UNORM_S8_UINT); ASSERT(srcFormat == GL_DEPTH_STENCIL_EXT || srcFormat == GL_DEPTH_COMPONENT || srcFormat == GL_STENCIL_INDEX); @@ -3699,9 +3699,9 @@ _mesa_get_texstore_func(mesa_format format) table[MESA_FORMAT_G16R16_UNORM] = _mesa_texstore_unorm1616; table[MESA_FORMAT_B10G10R10A2_UNORM] = _mesa_texstore_argb2101010; table[MESA_FORMAT_S8_UINT_Z24_UNORM] = _mesa_texstore_z24_s8; - table[MESA_FORMAT_Z24_UNORM_X8_UINT] = _mesa_texstore_s8_z24; + table[MESA_FORMAT_Z24_UNORM_S8_UINT] = _mesa_texstore_s8_z24; table[MESA_FORMAT_Z_UNORM16] = _mesa_texstore_z16; - table[MESA_FORMAT_Z24_UNORM_S8_UINT] = _mesa_texstore_x8_z24; + table[MESA_FORMAT_Z24_UNORM_X8_UINT] = _mesa_texstore_x8_z24; table[MESA_FORMAT_X8Z24_UNORM] = _mesa_texstore_z24_x8; table[MESA_FORMAT_Z_UNORM32] = _mesa_texstore_z32; table[MESA_FORMAT_S_UINT8] = _mesa_texstore_s8; diff --git a/mesalib/src/mesa/main/uniform_query.cpp b/mesalib/src/mesa/main/uniform_query.cpp index 82d7628e8..8cc5da752 100644 --- a/mesalib/src/mesa/main/uniform_query.cpp +++ b/mesalib/src/mesa/main/uniform_query.cpp @@ -684,6 +684,7 @@ _mesa_uniform(struct gl_context *ctx, struct gl_shader_program *shProg, match = true; break; case GLSL_TYPE_SAMPLER: + case GLSL_TYPE_IMAGE: match = (basicType == GLSL_TYPE_INT); break; default: @@ -735,6 +736,22 @@ _mesa_uniform(struct gl_context *ctx, struct gl_shader_program *shProg, } } + if (uni->type->is_image()) { + int i; + + for (i = 0; i < count; i++) { + const int unit = ((GLint *) values)[i]; + + /* check that the image unit is legal */ + if (unit < 0 || unit >= (int)ctx->Const.MaxImageUnits) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glUniform1i(invalid image unit index for uniform %d)", + location); + return; + } + } + } + /* Page 82 (page 96 of the PDF) of the OpenGL 2.1 spec says: * * "When loading N elements starting at an arbitrary position k in a @@ -830,6 +847,25 @@ _mesa_uniform(struct gl_context *ctx, struct gl_shader_program *shProg, } } } + + /* If the uniform is an image, update the mapping from image + * uniforms to image units present in the shader data structure. + */ + if (uni->type->is_image()) { + int i, j; + + for (i = 0; i < MESA_SHADER_STAGES; i++) { + if (uni->image[i].active) { + struct gl_shader *sh = shProg->_LinkedShaders[i]; + + for (j = 0; j < count; j++) + sh->ImageUnits[uni->image[i].index + offset + j] = + ((GLint *) values)[j]; + } + } + + ctx->NewDriverState |= ctx->DriverFlags.NewImageUnits; + } } /** diff --git a/mesalib/src/mesa/main/uniforms.c b/mesalib/src/mesa/main/uniforms.c index 071d668f3..c25c2df7e 100644 --- a/mesalib/src/mesa/main/uniforms.c +++ b/mesalib/src/mesa/main/uniforms.c @@ -270,6 +270,197 @@ _mesa_Uniform4iv(GLint location, GLsizei count, const GLint * value) _mesa_uniform(ctx, ctx->Shader.ActiveProgram, location, count, value, GL_INT_VEC4); } +/** Same as above with direct state access **/ +void GLAPIENTRY +_mesa_ProgramUniform1f(GLuint program, GLint location, GLfloat v0) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniform1f"); + _mesa_uniform(ctx, shProg, location, 1, &v0, GL_FLOAT); +} + +void GLAPIENTRY +_mesa_ProgramUniform2f(GLuint program, GLint location, GLfloat v0, GLfloat v1) +{ + GET_CURRENT_CONTEXT(ctx); + GLfloat v[2]; + struct gl_shader_program *shProg; + v[0] = v0; + v[1] = v1; + shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform2f"); + _mesa_uniform(ctx, shProg, location, 1, v, GL_FLOAT_VEC2); +} + +void GLAPIENTRY +_mesa_ProgramUniform3f(GLuint program, GLint location, GLfloat v0, GLfloat v1, + GLfloat v2) +{ + GET_CURRENT_CONTEXT(ctx); + GLfloat v[3]; + struct gl_shader_program *shProg; + v[0] = v0; + v[1] = v1; + v[2] = v2; + shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform3f"); + _mesa_uniform(ctx, shProg, location, 1, v, GL_FLOAT_VEC3); +} + +void GLAPIENTRY +_mesa_ProgramUniform4f(GLuint program, GLint location, GLfloat v0, GLfloat v1, + GLfloat v2, GLfloat v3) +{ + GET_CURRENT_CONTEXT(ctx); + GLfloat v[4]; + struct gl_shader_program *shProg; + v[0] = v0; + v[1] = v1; + v[2] = v2; + v[3] = v3; + shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform4f"); + _mesa_uniform(ctx, shProg, location, 1, v, GL_FLOAT_VEC4); +} + +void GLAPIENTRY +_mesa_ProgramUniform1i(GLuint program, GLint location, GLint v0) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniform1i"); + _mesa_uniform(ctx, shProg, location, 1, &v0, GL_INT); +} + +void GLAPIENTRY +_mesa_ProgramUniform2i(GLuint program, GLint location, GLint v0, GLint v1) +{ + GET_CURRENT_CONTEXT(ctx); + GLint v[2]; + struct gl_shader_program *shProg; + v[0] = v0; + v[1] = v1; + shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform2i"); + _mesa_uniform(ctx, shProg, location, 1, v, GL_INT_VEC2); +} + +void GLAPIENTRY +_mesa_ProgramUniform3i(GLuint program, GLint location, GLint v0, GLint v1, + GLint v2) +{ + GET_CURRENT_CONTEXT(ctx); + GLint v[3]; + struct gl_shader_program *shProg; + v[0] = v0; + v[1] = v1; + v[2] = v2; + shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform3i"); + _mesa_uniform(ctx, shProg, location, 1, v, GL_INT_VEC3); +} + +void GLAPIENTRY +_mesa_ProgramUniform4i(GLuint program, GLint location, GLint v0, GLint v1, + GLint v2, GLint v3) +{ + GET_CURRENT_CONTEXT(ctx); + GLint v[4]; + struct gl_shader_program *shProg; + v[0] = v0; + v[1] = v1; + v[2] = v2; + v[3] = v3; + shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform4i"); + _mesa_uniform(ctx, shProg, location, 1, v, GL_INT_VEC4); +} + +void GLAPIENTRY +_mesa_ProgramUniform1fv(GLuint program, GLint location, GLsizei count, + const GLfloat * value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniform1fv"); + _mesa_uniform(ctx, shProg, location, count, value, GL_FLOAT); +} + +void GLAPIENTRY +_mesa_ProgramUniform2fv(GLuint program, GLint location, GLsizei count, + const GLfloat * value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniform2fv"); + _mesa_uniform(ctx, shProg, location, count, value, GL_FLOAT_VEC2); +} + +void GLAPIENTRY +_mesa_ProgramUniform3fv(GLuint program, GLint location, GLsizei count, + const GLfloat * value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniform3fv"); + _mesa_uniform(ctx, shProg, location, count, value, GL_FLOAT_VEC3); +} + +void GLAPIENTRY +_mesa_ProgramUniform4fv(GLuint program, GLint location, GLsizei count, + const GLfloat * value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniform4fv"); + _mesa_uniform(ctx, shProg, location, count, value, GL_FLOAT_VEC4); +} + +void GLAPIENTRY +_mesa_ProgramUniform1iv(GLuint program, GLint location, GLsizei count, + const GLint * value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniform1iv"); + _mesa_uniform(ctx, shProg, location, count, value, GL_INT); +} + +void GLAPIENTRY +_mesa_ProgramUniform2iv(GLuint program, GLint location, GLsizei count, + const GLint * value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniform2iv"); + _mesa_uniform(ctx, shProg, location, count, value, GL_INT_VEC2); +} + +void GLAPIENTRY +_mesa_ProgramUniform3iv(GLuint program, GLint location, GLsizei count, + const GLint * value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniform3iv"); + _mesa_uniform(ctx, shProg, location, count, value, GL_INT_VEC3); +} + +void GLAPIENTRY +_mesa_ProgramUniform4iv(GLuint program, GLint location, GLsizei count, + const GLint * value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniform4iv"); + _mesa_uniform(ctx, shProg, location, count, value, GL_INT_VEC4); +} + /** OpenGL 3.0 GLuint-valued functions **/ void GLAPIENTRY @@ -369,6 +560,140 @@ _mesa_UniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, 4, 4, location, count, transpose, value); } +/** Same as above with direct state access **/ + +void GLAPIENTRY +_mesa_ProgramUniform1ui(GLuint program, GLint location, GLuint v0) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniform1ui"); + _mesa_uniform(ctx, shProg, location, 1, &v0, GL_UNSIGNED_INT); +} + +void GLAPIENTRY +_mesa_ProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1) +{ + GET_CURRENT_CONTEXT(ctx); + GLuint v[2]; + struct gl_shader_program *shProg; + v[0] = v0; + v[1] = v1; + shProg = _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniform2ui"); + _mesa_uniform(ctx, shProg, location, 1, v, GL_UNSIGNED_INT_VEC2); +} + +void GLAPIENTRY +_mesa_ProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, + GLuint v2) +{ + GET_CURRENT_CONTEXT(ctx); + GLuint v[3]; + struct gl_shader_program *shProg; + v[0] = v0; + v[1] = v1; + v[2] = v2; + shProg = _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniform3ui"); + _mesa_uniform(ctx, shProg, location, 1, v, GL_UNSIGNED_INT_VEC3); +} + +void GLAPIENTRY +_mesa_ProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, + GLuint v2, GLuint v3) +{ + GET_CURRENT_CONTEXT(ctx); + GLuint v[4]; + struct gl_shader_program *shProg; + v[0] = v0; + v[1] = v1; + v[2] = v2; + v[3] = v3; + shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramUniform4ui"); + _mesa_uniform(ctx, shProg, location, 1, v, GL_UNSIGNED_INT_VEC4); +} + +void GLAPIENTRY +_mesa_ProgramUniform1uiv(GLuint program, GLint location, GLsizei count, + const GLuint *value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniform1uiv"); + _mesa_uniform(ctx, shProg, location, count, value, GL_UNSIGNED_INT); +} + +void GLAPIENTRY +_mesa_ProgramUniform2uiv(GLuint program, GLint location, GLsizei count, + const GLuint *value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniform2uiv"); + _mesa_uniform(ctx, shProg, location, count, value, GL_UNSIGNED_INT_VEC2); +} + +void GLAPIENTRY +_mesa_ProgramUniform3uiv(GLuint program, GLint location, GLsizei count, + const GLuint *value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniform3uiv"); + _mesa_uniform(ctx, shProg, location, count, value, GL_UNSIGNED_INT_VEC3); +} + +void GLAPIENTRY +_mesa_ProgramUniform4uiv(GLuint program, GLint location, GLsizei count, + const GLuint *value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniform4uiv"); + _mesa_uniform(ctx, shProg, location, count, value, GL_UNSIGNED_INT_VEC4); +} + + + +void GLAPIENTRY +_mesa_ProgramUniformMatrix2fv(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat * value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniformMatrix2fv"); + _mesa_uniform_matrix(ctx, shProg, 2, 2, location, count, transpose, value); +} + +void GLAPIENTRY +_mesa_ProgramUniformMatrix3fv(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat * value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniformMatrix3fv"); + _mesa_uniform_matrix(ctx, shProg, 3, 3, location, count, transpose, value); +} + +void GLAPIENTRY +_mesa_ProgramUniformMatrix4fv(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat * value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniformMatrix4fv"); + _mesa_uniform_matrix(ctx, shProg, 4, 4, location, count, transpose, value); +} + /** * Non-square UniformMatrix are OpenGL 2.1 @@ -427,6 +752,74 @@ _mesa_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, 4, 3, location, count, transpose, value); } +/** Same as above with direct state access **/ + +void GLAPIENTRY +_mesa_ProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat * value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniformMatrix2x3fv"); + _mesa_uniform_matrix(ctx, shProg, 2, 3, location, count, transpose, value); +} + +void GLAPIENTRY +_mesa_ProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat * value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniformMatrix3x2fv"); + _mesa_uniform_matrix(ctx, shProg, 3, 2, location, count, transpose, value); +} + +void GLAPIENTRY +_mesa_ProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat * value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniformMatrix2x4fv"); + _mesa_uniform_matrix(ctx, shProg, 2, 4, location, count, transpose, value); +} + +void GLAPIENTRY +_mesa_ProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat * value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniformMatrix4x2fv"); + _mesa_uniform_matrix(ctx, shProg, 4, 2, location, count, transpose, value); +} + +void GLAPIENTRY +_mesa_ProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat * value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniformMatrix3x4fv"); + _mesa_uniform_matrix(ctx, shProg, 3, 4, location, count, transpose, value); +} + +void GLAPIENTRY +_mesa_ProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat * value) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg = + _mesa_lookup_shader_program_err(ctx, program, + "glProgramUniformMatrix4x3fv"); + _mesa_uniform_matrix(ctx, shProg, 4, 3, location, count, transpose, value); +} + void GLAPIENTRY _mesa_GetnUniformfvARB(GLhandleARB program, GLint location, diff --git a/mesalib/src/mesa/main/uniforms.h b/mesalib/src/mesa/main/uniforms.h index f7cac6328..bd50fd9b8 100644 --- a/mesalib/src/mesa/main/uniforms.h +++ b/mesalib/src/mesa/main/uniforms.h @@ -111,6 +111,89 @@ _mesa_UniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, void GLAPIENTRY _mesa_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + +void GLAPIENTRY +_mesa_ProgramUniform1f(GLuint program, GLint, GLfloat); +void GLAPIENTRY +_mesa_ProgramUniform2f(GLuint program, GLint, GLfloat, GLfloat); +void GLAPIENTRY +_mesa_ProgramUniform3f(GLuint program, GLint, GLfloat, GLfloat, GLfloat); +void GLAPIENTRY +_mesa_ProgramUniform4f(GLuint program, GLint, GLfloat, GLfloat, GLfloat, GLfloat); +void GLAPIENTRY +_mesa_ProgramUniform1i(GLuint program, GLint, GLint); +void GLAPIENTRY +_mesa_ProgramUniform2i(GLuint program, GLint, GLint, GLint); +void GLAPIENTRY +_mesa_ProgramUniform3i(GLuint program, GLint, GLint, GLint, GLint); +void GLAPIENTRY +_mesa_ProgramUniform4i(GLuint program, GLint, GLint, GLint, GLint, GLint); +void GLAPIENTRY +_mesa_ProgramUniform1fv(GLuint program, GLint, GLsizei, const GLfloat *); +void GLAPIENTRY +_mesa_ProgramUniform2fv(GLuint program, GLint, GLsizei, const GLfloat *); +void GLAPIENTRY +_mesa_ProgramUniform3fv(GLuint program, GLint, GLsizei, const GLfloat *); +void GLAPIENTRY +_mesa_ProgramUniform4fv(GLuint program, GLint, GLsizei, const GLfloat *); +void GLAPIENTRY +_mesa_ProgramUniform1iv(GLuint program, GLint, GLsizei, const GLint *); +void GLAPIENTRY +_mesa_ProgramUniform2iv(GLuint program, GLint, GLsizei, const GLint *); +void GLAPIENTRY +_mesa_ProgramUniform3iv(GLuint program, GLint, GLsizei, const GLint *); +void GLAPIENTRY +_mesa_ProgramUniform4iv(GLuint program, GLint, GLsizei, const GLint *); +void GLAPIENTRY +_mesa_ProgramUniform1ui(GLuint program, GLint location, GLuint v0); +void GLAPIENTRY +_mesa_ProgramUniform2ui(GLuint program, GLint location, GLuint v0, GLuint v1); +void GLAPIENTRY +_mesa_ProgramUniform3ui(GLuint program, GLint location, GLuint v0, GLuint v1, + GLuint v2); +void GLAPIENTRY +_mesa_ProgramUniform4ui(GLuint program, GLint location, GLuint v0, GLuint v1, + GLuint v2, GLuint v3); +void GLAPIENTRY +_mesa_ProgramUniform1uiv(GLuint program, GLint location, GLsizei count, + const GLuint *value); +void GLAPIENTRY +_mesa_ProgramUniform2uiv(GLuint program, GLint location, GLsizei count, + const GLuint *value); +void GLAPIENTRY +_mesa_ProgramUniform3uiv(GLuint program, GLint location, GLsizei count, + const GLuint *value); +void GLAPIENTRY +_mesa_ProgramUniform4uiv(GLuint program, GLint location, GLsizei count, + const GLuint *value); +void GLAPIENTRY +_mesa_ProgramUniformMatrix2fv(GLuint program, GLint, GLsizei, GLboolean, + const GLfloat *); +void GLAPIENTRY +_mesa_ProgramUniformMatrix3fv(GLuint program, GLint, GLsizei, GLboolean, + const GLfloat *); +void GLAPIENTRY +_mesa_ProgramUniformMatrix4fv(GLuint program, GLint, GLsizei, GLboolean, + const GLfloat *); +void GLAPIENTRY +_mesa_ProgramUniformMatrix2x3fv(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +void GLAPIENTRY +_mesa_ProgramUniformMatrix3x2fv(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +void GLAPIENTRY +_mesa_ProgramUniformMatrix2x4fv(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +void GLAPIENTRY +_mesa_ProgramUniformMatrix4x2fv(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +void GLAPIENTRY +_mesa_ProgramUniformMatrix3x4fv(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); +void GLAPIENTRY +_mesa_ProgramUniformMatrix4x3fv(GLuint program, GLint location, GLsizei count, + GLboolean transpose, const GLfloat *value); + void GLAPIENTRY _mesa_GetnUniformfvARB(GLhandleARB, GLint, GLsizei, GLfloat *); void GLAPIENTRY diff --git a/mesalib/src/mesa/main/vdpau.c b/mesalib/src/mesa/main/vdpau.c index 359757607..c2cf20664 100644 --- a/mesalib/src/mesa/main/vdpau.c +++ b/mesalib/src/mesa/main/vdpau.c @@ -205,7 +205,7 @@ _mesa_VDPAURegisterOutputSurfaceNV(const GLvoid *vdpSurface, GLenum target, numTextureNames, textureNames); } -void GLAPIENTRY +GLboolean GLAPIENTRY _mesa_VDPAUIsSurfaceNV(GLintptr surface) { struct vdp_surface *surf = (struct vdp_surface *)surface; @@ -213,13 +213,14 @@ _mesa_VDPAUIsSurfaceNV(GLintptr surface) if (!ctx->vdpDevice || !ctx->vdpGetProcAddress || !ctx->vdpSurfaces) { _mesa_error(ctx, GL_INVALID_OPERATION, "VDPAUIsSurfaceNV"); - return; + return false; } if (!_mesa_set_search(ctx->vdpSurfaces, _mesa_hash_pointer(surf), surf)) { - _mesa_error(ctx, GL_INVALID_VALUE, "VDPAUIsSurfaceNV"); - return; + return false; } + + return true; } void GLAPIENTRY diff --git a/mesalib/src/mesa/main/vdpau.h b/mesalib/src/mesa/main/vdpau.h index f32d6dacb..627609c50 100644 --- a/mesalib/src/mesa/main/vdpau.h +++ b/mesalib/src/mesa/main/vdpau.h @@ -50,7 +50,7 @@ _mesa_VDPAURegisterOutputSurfaceNV(const GLvoid *vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint *textureNames); -extern void GLAPIENTRY +extern GLboolean GLAPIENTRY _mesa_VDPAUIsSurfaceNV(GLintptr surface); extern void GLAPIENTRY diff --git a/mesalib/src/mesa/main/version.c b/mesalib/src/mesa/main/version.c index 587cb9ad5..63cba26da 100644 --- a/mesalib/src/mesa/main/version.c +++ b/mesalib/src/mesa/main/version.c @@ -232,7 +232,6 @@ compute_version(struct gl_context *ctx) (ctx->API == API_OPENGL_CORE || ctx->Extensions.ARB_color_buffer_float) && ctx->Extensions.ARB_depth_buffer_float && - ctx->Extensions.ARB_half_float_pixel && ctx->Extensions.ARB_half_float_vertex && ctx->Extensions.ARB_map_buffer_range && ctx->Extensions.ARB_shader_texture_lod && diff --git a/mesalib/src/mesa/program/ir_to_mesa.cpp b/mesalib/src/mesa/program/ir_to_mesa.cpp index 74c512b33..9919874a6 100644 --- a/mesalib/src/mesa/program/ir_to_mesa.cpp +++ b/mesalib/src/mesa/program/ir_to_mesa.cpp @@ -618,6 +618,7 @@ type_size(const struct glsl_type *type) } return size; case GLSL_TYPE_SAMPLER: + case GLSL_TYPE_IMAGE: /* Samplers take up one slot in UNIFORMS[], but they're baked in * at link time. */ @@ -2559,6 +2560,7 @@ _mesa_associate_uniform_storage(struct gl_context *ctx, columns = 1; break; case GLSL_TYPE_SAMPLER: + case GLSL_TYPE_IMAGE: format = uniform_native; columns = 1; break; @@ -2916,16 +2918,17 @@ get_mesa_program(struct gl_context *ctx, set_branchtargets(&v, mesa_instructions, num_instructions); if (ctx->Shader.Flags & GLSL_DUMP) { - printf("\n"); - printf("GLSL IR for linked %s program %d:\n", target_string, - shader_program->Name); - _mesa_print_ir(shader->ir, NULL); - printf("\n"); - printf("\n"); - printf("Mesa IR for linked %s program %d:\n", target_string, - shader_program->Name); + fprintf(stderr, "\n"); + fprintf(stderr, "GLSL IR for linked %s program %d:\n", target_string, + shader_program->Name); + _mesa_print_ir(stderr, shader->ir, NULL); + fprintf(stderr, "\n"); + fprintf(stderr, "\n"); + fprintf(stderr, "Mesa IR for linked %s program %d:\n", target_string, + shader_program->Name); print_program(mesa_instructions, mesa_instruction_annotation, num_instructions); + fflush(stderr); } prog->Instructions = mesa_instructions; @@ -3095,12 +3098,12 @@ _mesa_glsl_link_shader(struct gl_context *ctx, struct gl_shader_program *prog) if (ctx->Shader.Flags & GLSL_DUMP) { if (!prog->LinkStatus) { - printf("GLSL shader program %d failed to link\n", prog->Name); + fprintf(stderr, "GLSL shader program %d failed to link\n", prog->Name); } if (prog->InfoLog && prog->InfoLog[0] != 0) { - printf("GLSL shader program %d info log:\n", prog->Name); - printf("%s\n", prog->InfoLog); + fprintf(stderr, "GLSL shader program %d info log:\n", prog->Name); + fprintf(stderr, "%s\n", prog->InfoLog); } } } diff --git a/mesalib/src/mesa/program/program.c b/mesalib/src/mesa/program/program.c index fa80bc58c..b7332fccf 100644 --- a/mesalib/src/mesa/program/program.c +++ b/mesalib/src/mesa/program/program.c @@ -424,7 +424,7 @@ _mesa_reference_program_(struct gl_context *ctx, if (*ptr) { GLboolean deleteFlag; - /*_glthread_LOCK_MUTEX((*ptr)->Mutex);*/ + /*mtx_lock(&(*ptr)->Mutex);*/ #if 0 printf("Program %p ID=%u Target=%s Refcount-- to %d\n", *ptr, (*ptr)->Id, @@ -436,7 +436,7 @@ _mesa_reference_program_(struct gl_context *ctx, (*ptr)->RefCount--; deleteFlag = ((*ptr)->RefCount == 0); - /*_glthread_UNLOCK_MUTEX((*ptr)->Mutex);*/ + /*mtx_lock(&(*ptr)->Mutex);*/ if (deleteFlag) { ASSERT(ctx); @@ -448,7 +448,7 @@ _mesa_reference_program_(struct gl_context *ctx, assert(!*ptr); if (prog) { - /*_glthread_LOCK_MUTEX(prog->Mutex);*/ + /*mtx_lock(&prog->Mutex);*/ prog->RefCount++; #if 0 printf("Program %p ID=%u Target=%s Refcount++ to %d\n", @@ -457,7 +457,7 @@ _mesa_reference_program_(struct gl_context *ctx, (prog->Target == MESA_GEOMETRY_PROGRAM ? "GP" : "FP")), prog->RefCount); #endif - /*_glthread_UNLOCK_MUTEX(prog->Mutex);*/ + /*mtx_unlock(&prog->Mutex);*/ } *ptr = prog; @@ -550,6 +550,7 @@ _mesa_clone_program(struct gl_context *ctx, const struct gl_program *prog) struct gl_geometry_program *gpc = gl_geometry_program(clone); gpc->VerticesOut = gp->VerticesOut; gpc->InputType = gp->InputType; + gpc->Invocations = gp->Invocations; gpc->OutputType = gp->OutputType; } break; diff --git a/mesalib/src/mesa/state_tracker/st_atom_scissor.c b/mesalib/src/mesa/state_tracker/st_atom_scissor.c index a1f72da47..a19ade1fa 100644 --- a/mesalib/src/mesa/state_tracker/st_atom_scissor.c +++ b/mesalib/src/mesa/state_tracker/st_atom_scissor.c @@ -43,51 +43,56 @@ static void update_scissor( struct st_context *st ) { - struct pipe_scissor_state scissor; + struct pipe_scissor_state scissor[PIPE_MAX_VIEWPORTS]; const struct gl_context *ctx = st->ctx; const struct gl_framebuffer *fb = ctx->DrawBuffer; GLint miny, maxy; + int i; + bool changed = false; + for (i = 0 ; i < ctx->Const.MaxViewports; i++) { + scissor[i].minx = 0; + scissor[i].miny = 0; + scissor[i].maxx = fb->Width; + scissor[i].maxy = fb->Height; - scissor.minx = 0; - scissor.miny = 0; - scissor.maxx = fb->Width; - scissor.maxy = fb->Height; + if (ctx->Scissor.EnableFlags & (1 << i)) { + /* need to be careful here with xmax or ymax < 0 */ + GLint xmax = MAX2(0, ctx->Scissor.ScissorArray[i].X + ctx->Scissor.ScissorArray[i].Width); + GLint ymax = MAX2(0, ctx->Scissor.ScissorArray[i].Y + ctx->Scissor.ScissorArray[i].Height); - if (ctx->Scissor.EnableFlags & 1) { - /* need to be careful here with xmax or ymax < 0 */ - GLint xmax = MAX2(0, ctx->Scissor.ScissorArray[0].X + ctx->Scissor.ScissorArray[0].Width); - GLint ymax = MAX2(0, ctx->Scissor.ScissorArray[0].Y + ctx->Scissor.ScissorArray[0].Height); + if (ctx->Scissor.ScissorArray[i].X > (GLint)scissor[i].minx) + scissor[i].minx = ctx->Scissor.ScissorArray[i].X; + if (ctx->Scissor.ScissorArray[i].Y > (GLint)scissor[i].miny) + scissor[i].miny = ctx->Scissor.ScissorArray[i].Y; - if (ctx->Scissor.ScissorArray[0].X > (GLint)scissor.minx) - scissor.minx = ctx->Scissor.ScissorArray[0].X; - if (ctx->Scissor.ScissorArray[0].Y > (GLint)scissor.miny) - scissor.miny = ctx->Scissor.ScissorArray[0].Y; + if (xmax < (GLint) scissor[i].maxx) + scissor[i].maxx = xmax; + if (ymax < (GLint) scissor[i].maxy) + scissor[i].maxy = ymax; + + /* check for null space */ + if (scissor[i].minx >= scissor[i].maxx || scissor[i].miny >= scissor[i].maxy) + scissor[i].minx = scissor[i].miny = scissor[i].maxx = scissor[i].maxy = 0; + } - if (xmax < (GLint) scissor.maxx) - scissor.maxx = xmax; - if (ymax < (GLint) scissor.maxy) - scissor.maxy = ymax; + /* Now invert Y if needed. + * Gallium drivers use the convention Y=0=top for surfaces. + */ + if (st_fb_orientation(fb) == Y_0_TOP) { + miny = fb->Height - scissor[i].maxy; + maxy = fb->Height - scissor[i].miny; + scissor[i].miny = miny; + scissor[i].maxy = maxy; + } - /* check for null space */ - if (scissor.minx >= scissor.maxx || scissor.miny >= scissor.maxy) - scissor.minx = scissor.miny = scissor.maxx = scissor.maxy = 0; - } - - /* Now invert Y if needed. - * Gallium drivers use the convention Y=0=top for surfaces. - */ - if (st_fb_orientation(fb) == Y_0_TOP) { - miny = fb->Height - scissor.maxy; - maxy = fb->Height - scissor.miny; - scissor.miny = miny; - scissor.maxy = maxy; - } - - if (memcmp(&scissor, &st->state.scissor, sizeof(scissor)) != 0) { - /* state has changed */ - st->state.scissor = scissor; /* struct copy */ - st->pipe->set_scissor_states(st->pipe, 0, 1, &scissor); /* activate */ + if (memcmp(&scissor[i], &st->state.scissor[i], sizeof(scissor)) != 0) { + /* state has changed */ + st->state.scissor[i] = scissor[i]; /* struct copy */ + changed = true; + } } + if (changed) + st->pipe->set_scissor_states(st->pipe, 0, ctx->Const.MaxViewports, scissor); /* activate */ } diff --git a/mesalib/src/mesa/state_tracker/st_atom_viewport.c b/mesalib/src/mesa/state_tracker/st_atom_viewport.c index 8c6d679a0..7584f9b3d 100644 --- a/mesalib/src/mesa/state_tracker/st_atom_viewport.c +++ b/mesalib/src/mesa/state_tracker/st_atom_viewport.c @@ -43,7 +43,7 @@ update_viewport( struct st_context *st ) { struct gl_context *ctx = st->ctx; GLfloat yScale, yBias; - + int i; /* _NEW_BUFFERS */ if (st_fb_orientation(ctx->DrawBuffer) == Y_0_TOP) { @@ -61,26 +61,29 @@ update_viewport( struct st_context *st ) /* _NEW_VIEWPORT */ + for (i = 0; i < ctx->Const.MaxViewports; i++) { - GLfloat x = ctx->ViewportArray[0].X; - GLfloat y = ctx->ViewportArray[0].Y; - GLfloat z = ctx->ViewportArray[0].Near; - GLfloat half_width = ctx->ViewportArray[0].Width * 0.5f; - GLfloat half_height = ctx->ViewportArray[0].Height * 0.5f; - GLfloat half_depth = (GLfloat)(ctx->ViewportArray[0].Far - ctx->ViewportArray[0].Near) * 0.5f; + GLfloat x = ctx->ViewportArray[i].X; + GLfloat y = ctx->ViewportArray[i].Y; + GLfloat z = ctx->ViewportArray[i].Near; + GLfloat half_width = ctx->ViewportArray[i].Width * 0.5f; + GLfloat half_height = ctx->ViewportArray[i].Height * 0.5f; + GLfloat half_depth = (GLfloat)(ctx->ViewportArray[i].Far - ctx->ViewportArray[i].Near) * 0.5f; - st->state.viewport.scale[0] = half_width; - st->state.viewport.scale[1] = half_height * yScale; - st->state.viewport.scale[2] = half_depth; - st->state.viewport.scale[3] = 1.0; - - st->state.viewport.translate[0] = half_width + x; - st->state.viewport.translate[1] = (half_height + y) * yScale + yBias; - st->state.viewport.translate[2] = half_depth + z; - st->state.viewport.translate[3] = 0.0; + st->state.viewport[i].scale[0] = half_width; + st->state.viewport[i].scale[1] = half_height * yScale; + st->state.viewport[i].scale[2] = half_depth; + st->state.viewport[i].scale[3] = 1.0; - cso_set_viewport(st->cso_context, &st->state.viewport); + st->state.viewport[i].translate[0] = half_width + x; + st->state.viewport[i].translate[1] = (half_height + y) * yScale + yBias; + st->state.viewport[i].translate[2] = half_depth + z; + st->state.viewport[i].translate[3] = 0.0; } + + cso_set_viewport(st->cso_context, &st->state.viewport[0]); + if (ctx->Const.MaxViewports > 1) + st->pipe->set_viewport_states(st->pipe, 1, ctx->Const.MaxViewports - 1, &st->state.viewport[1]); } diff --git a/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.c b/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.c index c8f088dc8..49c4b903e 100644 --- a/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.c +++ b/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.c @@ -76,7 +76,7 @@ st_bufferobj_free(struct gl_context *ctx, struct gl_buffer_object *obj) struct st_buffer_object *st_obj = st_buffer_object(obj); assert(obj->RefCount == 0); - assert(st_obj->transfer == NULL); + _mesa_buffer_unmap_all_mappings(ctx, obj); if (st_obj->buffer) pipe_resource_reference(&st_obj->buffer, NULL); @@ -176,15 +176,18 @@ st_bufferobj_data(struct gl_context *ctx, GLsizeiptrARB size, const GLvoid * data, GLenum usage, + GLbitfield storageFlags, struct gl_buffer_object *obj) { struct st_context *st = st_context(ctx); struct pipe_context *pipe = st->pipe; struct st_buffer_object *st_obj = st_buffer_object(obj); - unsigned bind, pipe_usage; + unsigned bind, pipe_usage, pipe_flags = 0; if (size && data && st_obj->buffer && - st_obj->Base.Size == size && st_obj->Base.Usage == usage) { + st_obj->Base.Size == size && + st_obj->Base.Usage == usage && + st_obj->Base.StorageFlags == storageFlags) { /* Just discard the old contents and write new data. * This should be the same as creating a new buffer, but we avoid * a lot of validation in Mesa. @@ -200,6 +203,7 @@ st_bufferobj_data(struct gl_context *ctx, st_obj->Base.Size = size; st_obj->Base.Usage = usage; + st_obj->Base.StorageFlags = storageFlags; switch (target) { case GL_PIXEL_PACK_BUFFER_ARB: @@ -225,24 +229,41 @@ st_bufferobj_data(struct gl_context *ctx, bind = 0; } - switch (usage) { - case GL_STATIC_DRAW: - case GL_STATIC_READ: - case GL_STATIC_COPY: - default: - pipe_usage = PIPE_USAGE_DEFAULT; - break; - case GL_DYNAMIC_DRAW: - case GL_DYNAMIC_READ: - case GL_DYNAMIC_COPY: - pipe_usage = PIPE_USAGE_DYNAMIC; - break; - case GL_STREAM_DRAW: - case GL_STREAM_READ: - case GL_STREAM_COPY: - pipe_usage = PIPE_USAGE_STREAM; - break; + /* Set usage. */ + if (st_obj->Base.Immutable) { + /* BufferStorage */ + if (storageFlags & GL_CLIENT_STORAGE_BIT) + pipe_usage = PIPE_USAGE_STAGING; + else + pipe_usage = PIPE_USAGE_DEFAULT; } + else { + /* BufferData */ + switch (usage) { + case GL_STATIC_DRAW: + case GL_STATIC_READ: + case GL_STATIC_COPY: + default: + pipe_usage = PIPE_USAGE_DEFAULT; + break; + case GL_DYNAMIC_DRAW: + case GL_DYNAMIC_READ: + case GL_DYNAMIC_COPY: + pipe_usage = PIPE_USAGE_DYNAMIC; + break; + case GL_STREAM_DRAW: + case GL_STREAM_READ: + case GL_STREAM_COPY: + pipe_usage = PIPE_USAGE_STREAM; + break; + } + } + + /* Set flags. */ + if (storageFlags & GL_MAP_PERSISTENT_BIT) + pipe_flags |= PIPE_RESOURCE_FLAG_MAP_PERSISTENT; + if (storageFlags & GL_MAP_COHERENT_BIT) + pipe_flags |= PIPE_RESOURCE_FLAG_MAP_COHERENT; pipe_resource_reference( &st_obj->buffer, NULL ); @@ -251,8 +272,20 @@ st_bufferobj_data(struct gl_context *ctx, } if (size != 0) { - st_obj->buffer = pipe_buffer_create(pipe->screen, bind, - pipe_usage, size); + struct pipe_resource buffer; + + memset(&buffer, 0, sizeof buffer); + buffer.target = PIPE_BUFFER; + buffer.format = PIPE_FORMAT_R8_UNORM; /* want TYPELESS or similar */ + buffer.bind = bind; + buffer.usage = pipe_usage; + buffer.flags = pipe_flags; + buffer.width0 = size; + buffer.height0 = 1; + buffer.depth0 = 1; + buffer.array_size = 1; + + st_obj->buffer = pipe->screen->resource_create(pipe->screen, &buffer); if (!st_obj->buffer) { /* out of memory */ @@ -277,7 +310,8 @@ st_bufferobj_data(struct gl_context *ctx, static void * st_bufferobj_map_range(struct gl_context *ctx, GLintptr offset, GLsizeiptr length, GLbitfield access, - struct gl_buffer_object *obj) + struct gl_buffer_object *obj, + gl_map_buffer_index index) { struct pipe_context *pipe = st_context(ctx)->pipe; struct st_buffer_object *st_obj = st_buffer_object(obj); @@ -305,6 +339,12 @@ st_bufferobj_map_range(struct gl_context *ctx, if (access & GL_MAP_UNSYNCHRONIZED_BIT) flags |= PIPE_TRANSFER_UNSYNCHRONIZED; + if (access & GL_MAP_PERSISTENT_BIT) + flags |= PIPE_TRANSFER_PERSISTENT; + + if (access & GL_MAP_COHERENT_BIT) + flags |= PIPE_TRANSFER_COHERENT; + /* ... other flags ... */ @@ -316,28 +356,29 @@ st_bufferobj_map_range(struct gl_context *ctx, assert(offset < obj->Size); assert(offset + length <= obj->Size); - obj->Pointer = pipe_buffer_map_range(pipe, + obj->Mappings[index].Pointer = pipe_buffer_map_range(pipe, st_obj->buffer, offset, length, flags, - &st_obj->transfer); - if (obj->Pointer) { - obj->Offset = offset; - obj->Length = length; - obj->AccessFlags = access; + &st_obj->transfer[index]); + if (obj->Mappings[index].Pointer) { + obj->Mappings[index].Offset = offset; + obj->Mappings[index].Length = length; + obj->Mappings[index].AccessFlags = access; } else { - st_obj->transfer = NULL; + st_obj->transfer[index] = NULL; } - return obj->Pointer; + return obj->Mappings[index].Pointer; } static void st_bufferobj_flush_mapped_range(struct gl_context *ctx, GLintptr offset, GLsizeiptr length, - struct gl_buffer_object *obj) + struct gl_buffer_object *obj, + gl_map_buffer_index index) { struct pipe_context *pipe = st_context(ctx)->pipe; struct st_buffer_object *st_obj = st_buffer_object(obj); @@ -345,14 +386,15 @@ st_bufferobj_flush_mapped_range(struct gl_context *ctx, /* Subrange is relative to mapped range */ assert(offset >= 0); assert(length >= 0); - assert(offset + length <= obj->Length); - assert(obj->Pointer); + assert(offset + length <= obj->Mappings[index].Length); + assert(obj->Mappings[index].Pointer); if (!length) return; - pipe_buffer_flush_mapped_range(pipe, st_obj->transfer, - obj->Offset + offset, length); + pipe_buffer_flush_mapped_range(pipe, st_obj->transfer[index], + obj->Mappings[index].Offset + offset, + length); } @@ -360,18 +402,19 @@ st_bufferobj_flush_mapped_range(struct gl_context *ctx, * Called via glUnmapBufferARB(). */ static GLboolean -st_bufferobj_unmap(struct gl_context *ctx, struct gl_buffer_object *obj) +st_bufferobj_unmap(struct gl_context *ctx, struct gl_buffer_object *obj, + gl_map_buffer_index index) { struct pipe_context *pipe = st_context(ctx)->pipe; struct st_buffer_object *st_obj = st_buffer_object(obj); - if (obj->Length) - pipe_buffer_unmap(pipe, st_obj->transfer); + if (obj->Mappings[index].Length) + pipe_buffer_unmap(pipe, st_obj->transfer[index]); - st_obj->transfer = NULL; - obj->Pointer = NULL; - obj->Offset = 0; - obj->Length = 0; + st_obj->transfer[index] = NULL; + obj->Mappings[index].Pointer = NULL; + obj->Mappings[index].Offset = 0; + obj->Mappings[index].Length = 0; return GL_TRUE; } @@ -395,8 +438,8 @@ st_copy_buffer_subdata(struct gl_context *ctx, return; /* buffer should not already be mapped */ - assert(!src->Pointer); - assert(!dst->Pointer); + assert(!_mesa_check_disallowed_mapping(src)); + assert(!_mesa_check_disallowed_mapping(dst)); u_box_1d(readOffset, size, &box); diff --git a/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.h b/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.h index a039c0a50..a5ab12219 100644 --- a/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.h +++ b/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.h @@ -43,7 +43,7 @@ struct st_buffer_object { struct gl_buffer_object Base; struct pipe_resource *buffer; /* GPU storage */ - struct pipe_transfer *transfer; /* In-progress map information */ + struct pipe_transfer *transfer[MAP_COUNT]; }; diff --git a/mesalib/src/mesa/state_tracker/st_cb_texturebarrier.c b/mesalib/src/mesa/state_tracker/st_cb_texturebarrier.c index 2f1a22b58..dd4dde74c 100644 --- a/mesalib/src/mesa/state_tracker/st_cb_texturebarrier.c +++ b/mesalib/src/mesa/state_tracker/st_cb_texturebarrier.c @@ -54,7 +54,24 @@ st_TextureBarrier(struct gl_context *ctx) } +/** + * Called via ctx->Driver.MemoryBarrier() + */ +static void +st_MemoryBarrier(struct gl_context *ctx, GLbitfield barriers) +{ + struct pipe_context *pipe = st_context(ctx)->pipe; + unsigned flags = 0; + + if (barriers & GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT) + flags |= PIPE_BARRIER_MAPPED_BUFFER; + + if (flags && pipe->memory_barrier) + pipe->memory_barrier(pipe, flags); +} + void st_init_texture_barrier_functions(struct dd_function_table *functions) { functions->TextureBarrier = st_TextureBarrier; + functions->MemoryBarrier = st_MemoryBarrier; } diff --git a/mesalib/src/mesa/state_tracker/st_context.h b/mesalib/src/mesa/state_tracker/st_context.h index 996e0c6bc..9c699a015 100644 --- a/mesalib/src/mesa/state_tracker/st_context.h +++ b/mesalib/src/mesa/state_tracker/st_context.h @@ -115,8 +115,8 @@ struct st_context unsigned size; } constants[PIPE_SHADER_TYPES]; struct pipe_framebuffer_state framebuffer; - struct pipe_scissor_state scissor; - struct pipe_viewport_state viewport; + struct pipe_scissor_state scissor[PIPE_MAX_VIEWPORTS]; + struct pipe_viewport_state viewport[PIPE_MAX_VIEWPORTS]; unsigned sample_mask; GLuint poly_stipple[32]; /**< In OpenGL's bottom-to-top order */ diff --git a/mesalib/src/mesa/state_tracker/st_draw_feedback.c b/mesalib/src/mesa/state_tracker/st_draw_feedback.c index 09cd9511d..177f6b5ae 100644 --- a/mesalib/src/mesa/state_tracker/st_draw_feedback.c +++ b/mesalib/src/mesa/state_tracker/st_draw_feedback.c @@ -156,7 +156,7 @@ st_feedback_draw_vbo(struct gl_context *ctx, * code sends state updates to the pipe, not to our private draw module. */ assert(draw); - draw_set_viewport_states(draw, 0, 1, &st->state.viewport); + draw_set_viewport_states(draw, 0, 1, &st->state.viewport[0]); draw_set_clip_state(draw, &st->state.clip); draw_set_rasterizer_state(draw, &st->state.rasterizer, NULL); draw_bind_vertex_shader(draw, st->vp_variant->draw_shader); diff --git a/mesalib/src/mesa/state_tracker/st_extensions.c b/mesalib/src/mesa/state_tracker/st_extensions.c index 9829eb596..18ddd4e47 100644 --- a/mesalib/src/mesa/state_tracker/st_extensions.c +++ b/mesalib/src/mesa/state_tracker/st_extensions.c @@ -39,6 +39,12 @@ #include "st_extensions.h" #include "st_format.h" + +/* + * Note: we use these function rather than the MIN2, MAX2, CLAMP macros to + * avoid evaluating arguments (which are often function calls) more than once. + */ + static unsigned _min(unsigned a, unsigned b) { return (a < b) ? a : b; @@ -262,10 +268,13 @@ void st_init_limits(struct st_context *st) c->Program[MESA_SHADER_VERTEX].MaxOutputComponents = c->MaxVarying * 4; c->Program[MESA_SHADER_GEOMETRY].MaxInputComponents = c->MaxVarying * 4; c->Program[MESA_SHADER_GEOMETRY].MaxOutputComponents = c->MaxVarying * 4; + c->MaxGeometryOutputVertices = screen->get_param(screen, PIPE_CAP_MAX_GEOMETRY_OUTPUT_VERTICES); + c->MaxGeometryTotalOutputComponents = screen->get_param(screen, PIPE_CAP_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS); c->MinProgramTexelOffset = screen->get_param(screen, PIPE_CAP_MIN_TEXEL_OFFSET); c->MaxProgramTexelOffset = screen->get_param(screen, PIPE_CAP_MAX_TEXEL_OFFSET); + c->MaxProgramTextureGatherComponents = screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_GATHER_COMPONENTS); c->UniformBooleanTrue = ~0; c->MaxTransformFeedbackBuffers = @@ -373,6 +382,7 @@ void st_init_extensions(struct st_context *st) static const struct st_extension_cap_mapping cap_mapping[] = { { o(ARB_base_instance), PIPE_CAP_START_INSTANCE }, + { o(ARB_buffer_storage), PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT }, { o(ARB_depth_clamp), PIPE_CAP_DEPTH_CLIP_DISABLE }, { o(ARB_depth_texture), PIPE_CAP_TEXTURE_SHADOW_MAP }, { o(ARB_draw_buffers_blend), PIPE_CAP_INDEP_BLEND_FUNC }, @@ -526,7 +536,6 @@ void st_init_extensions(struct st_context *st) ctx->Extensions.ARB_fragment_coord_conventions = GL_TRUE; ctx->Extensions.ARB_fragment_program = GL_TRUE; ctx->Extensions.ARB_fragment_shader = GL_TRUE; - ctx->Extensions.ARB_half_float_pixel = GL_TRUE; ctx->Extensions.ARB_half_float_vertex = GL_TRUE; ctx->Extensions.ARB_internalformat_query = GL_TRUE; ctx->Extensions.ARB_map_buffer_range = GL_TRUE; @@ -777,4 +786,15 @@ void st_init_extensions(struct st_context *st) if (!ctx->Extensions.EXT_transform_feedback) ctx->Const.DisableVaryingPacking = GL_TRUE; } + + if (ctx->API == API_OPENGL_CORE) { + ctx->Const.MaxViewports = screen->get_param(screen, PIPE_CAP_MAX_VIEWPORTS); + if (ctx->Const.MaxViewports >= 16) { + ctx->Const.ViewportBounds.Min = -16384.0; + ctx->Const.ViewportBounds.Max = 16384.0; + ctx->Extensions.ARB_viewport_array = GL_TRUE; + } + } + if (ctx->Const.MaxProgramTextureGatherComponents > 0) + ctx->Extensions.ARB_texture_gather = GL_TRUE; } diff --git a/mesalib/src/mesa/state_tracker/st_format.c b/mesalib/src/mesa/state_tracker/st_format.c index 90e9f2f78..5f951eb02 100644 --- a/mesalib/src/mesa/state_tracker/st_format.c +++ b/mesalib/src/mesa/state_tracker/st_format.c @@ -107,11 +107,11 @@ st_mesa_format_to_pipe_format(mesa_format mesaFormat) return PIPE_FORMAT_Z32_UNORM; case MESA_FORMAT_S8_UINT_Z24_UNORM: return PIPE_FORMAT_S8_UINT_Z24_UNORM; - case MESA_FORMAT_Z24_UNORM_X8_UINT: + case MESA_FORMAT_Z24_UNORM_S8_UINT: return PIPE_FORMAT_Z24_UNORM_S8_UINT; case MESA_FORMAT_X8Z24_UNORM: return PIPE_FORMAT_X8Z24_UNORM; - case MESA_FORMAT_Z24_UNORM_S8_UINT: + case MESA_FORMAT_Z24_UNORM_X8_UINT: return PIPE_FORMAT_Z24X8_UNORM; case MESA_FORMAT_S_UINT8: return PIPE_FORMAT_S8_UINT; @@ -465,9 +465,9 @@ st_pipe_format_to_mesa_format(enum pipe_format format) case PIPE_FORMAT_X8Z24_UNORM: return MESA_FORMAT_X8Z24_UNORM; case PIPE_FORMAT_Z24X8_UNORM: - return MESA_FORMAT_Z24_UNORM_S8_UINT; - case PIPE_FORMAT_Z24_UNORM_S8_UINT: return MESA_FORMAT_Z24_UNORM_X8_UINT; + case PIPE_FORMAT_Z24_UNORM_S8_UINT: + return MESA_FORMAT_Z24_UNORM_S8_UINT; case PIPE_FORMAT_Z32_FLOAT: return MESA_FORMAT_Z_FLOAT32; case PIPE_FORMAT_Z32_FLOAT_S8X24_UINT: diff --git a/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp index 610fc68a8..a9e75d8a6 100644 --- a/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp +++ b/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp @@ -87,7 +87,7 @@ extern "C" { */ #define MAX_ARRAYS 256 -/* will be 4 for GLSL 4.00 */ +/* if we support a native gallium TG4 with the ability to take 4 texoffsets then bump this */ #define MAX_GLSL_TEXTURE_OFFSET 1 class st_src_reg; @@ -249,7 +249,8 @@ public: int sampler; /**< sampler index */ int tex_target; /**< One of TEXTURE_*_INDEX */ GLboolean tex_shadow; - struct tgsi_texture_offset tex_offsets[MAX_GLSL_TEXTURE_OFFSET]; + + st_src_reg tex_offsets[MAX_GLSL_TEXTURE_OFFSET]; unsigned tex_offset_num_offset; int dead_mask; /**< Used in dead code elimination */ @@ -983,6 +984,7 @@ type_size(const struct glsl_type *type) } return size; case GLSL_TYPE_SAMPLER: + case GLSL_TYPE_IMAGE: /* Samplers take up one slot in UNIFORMS[], but they're baked in * at link time. */ @@ -2685,7 +2687,7 @@ glsl_to_tgsi_visitor::visit(ir_call *ir) void glsl_to_tgsi_visitor::visit(ir_texture *ir) { - st_src_reg result_src, coord, cube_sc, lod_info, projector, dx, dy, offset, sample_index; + st_src_reg result_src, coord, cube_sc, lod_info, projector, dx, dy, offset, sample_index, component; st_dst_reg result_dst, coord_dst, cube_sc_dst; glsl_to_tgsi_instruction *inst = NULL; unsigned opcode = TGSI_OPCODE_NOP; @@ -2779,12 +2781,20 @@ glsl_to_tgsi_visitor::visit(ir_texture *ir) ir->lod_info.sample_index->accept(this); sample_index = this->result; break; + case ir_tg4: + opcode = TGSI_OPCODE_TG4; + ir->lod_info.component->accept(this); + component = this->result; + if (ir->offset) { + ir->offset->accept(this); + /* this should have been lowered */ + assert(ir->offset->type->base_type != GLSL_TYPE_ARRAY); + offset = this->result; + } + break; case ir_lod: assert(!"Unexpected ir_lod opcode"); break; - case ir_tg4: - assert(!"Unexpected ir_tg4 opcode"); - break; case ir_query_levels: assert(!"Unexpected ir_query_levels opcode"); break; @@ -2892,7 +2902,13 @@ glsl_to_tgsi_visitor::visit(ir_texture *ir) inst = emit(ir, opcode, result_dst, coord, lod_info); } else if (opcode == TGSI_OPCODE_TEX2) { inst = emit(ir, opcode, result_dst, coord, cube_sc); - } else + } else if (opcode == TGSI_OPCODE_TG4) { + if (is_cube_array && ir->shadow_comparitor) { + inst = emit(ir, opcode, result_dst, coord, cube_sc); + } else { + inst = emit(ir, opcode, result_dst, coord, component); + } + } else inst = emit(ir, opcode, result_dst, coord); if (ir->shadow_comparitor) @@ -2903,12 +2919,8 @@ glsl_to_tgsi_visitor::visit(ir_texture *ir) this->prog); if (ir->offset) { - inst->tex_offset_num_offset = 1; - inst->tex_offsets[0].Index = offset.index; - inst->tex_offsets[0].File = offset.file; - inst->tex_offsets[0].SwizzleX = GET_SWZ(offset.swizzle, 0); - inst->tex_offsets[0].SwizzleY = GET_SWZ(offset.swizzle, 1); - inst->tex_offsets[0].SwizzleZ = GET_SWZ(offset.swizzle, 2); + inst->tex_offset_num_offset = 1; + inst->tex_offsets[0] = offset; } switch (sampler_type->sampler_dimensionality) { @@ -3266,6 +3278,13 @@ glsl_to_tgsi_visitor::rename_temp_register(int index, int new_index) inst->src[j].index = new_index; } } + + for (j=0; j < inst->tex_offset_num_offset; j++) { + if (inst->tex_offsets[j].file == PROGRAM_TEMPORARY && + inst->tex_offsets[j].index == index) { + inst->tex_offsets[j].index = new_index; + } + } if (inst->dst.file == PROGRAM_TEMPORARY && inst->dst.index == index) { inst->dst.index = new_index; @@ -3289,6 +3308,12 @@ glsl_to_tgsi_visitor::get_first_temp_read(int index) return (depth == 0) ? i : loop_start; } } + for (j=0; j < inst->tex_offset_num_offset; j++) { + if (inst->tex_offsets[j].file == PROGRAM_TEMPORARY && + inst->tex_offsets[j].index == index) { + return (depth == 0) ? i : loop_start; + } + } if (inst->op == TGSI_OPCODE_BGNLOOP) { if(depth++ == 0) @@ -3350,6 +3375,11 @@ glsl_to_tgsi_visitor::get_last_temp_read(int index) last = (depth == 0) ? i : -2; } } + for (j=0; j < inst->tex_offset_num_offset; j++) { + if (inst->tex_offsets[j].file == PROGRAM_TEMPORARY && + inst->tex_offsets[j].index == index) + last = (depth == 0) ? i : -2; + } if (inst->op == TGSI_OPCODE_BGNLOOP) depth++; @@ -3726,6 +3756,26 @@ glsl_to_tgsi_visitor::eliminate_dead_code_advanced(void) } } } + for (unsigned i = 0; i < inst->tex_offset_num_offset; i++) { + if (inst->tex_offsets[i].file == PROGRAM_TEMPORARY && inst->tex_offsets[i].reladdr){ + /* Any temporary might be read, so no dead code elimination + * across this instruction. + */ + memset(writes, 0, sizeof(*writes) * this->next_temp * 4); + } else if (inst->tex_offsets[i].file == PROGRAM_TEMPORARY) { + /* Clear where it's used as src. */ + int src_chans = 1 << GET_SWZ(inst->tex_offsets[i].swizzle, 0); + src_chans |= 1 << GET_SWZ(inst->tex_offsets[i].swizzle, 1); + src_chans |= 1 << GET_SWZ(inst->tex_offsets[i].swizzle, 2); + src_chans |= 1 << GET_SWZ(inst->tex_offsets[i].swizzle, 3); + + for (int c = 0; c < 4; c++) { + if (src_chans & (1 << c)) { + writes[4 * inst->tex_offsets[i].index + c] = NULL; + } + } + } + } break; } @@ -4079,7 +4129,7 @@ struct st_translate { struct ureg_dst address[2]; struct ureg_src samplers[PIPE_MAX_SAMPLERS]; struct ureg_src systemValues[SYSTEM_VALUE_MAX]; - + struct tgsi_texture_offset tex_offsets[MAX_GLSL_TEXTURE_OFFSET]; unsigned array_sizes[MAX_ARRAYS]; const GLuint *inputMapping; @@ -4379,22 +4429,34 @@ translate_src(struct st_translate *t, const st_src_reg *src_reg) static struct tgsi_texture_offset translate_tex_offset(struct st_translate *t, - const struct tgsi_texture_offset *in_offset) + const st_src_reg *in_offset, int idx) { struct tgsi_texture_offset offset; struct ureg_src imm_src; - assert(in_offset->File == PROGRAM_IMMEDIATE); - imm_src = t->immediates[in_offset->Index]; - - offset.File = imm_src.File; - offset.Index = imm_src.Index; - offset.SwizzleX = imm_src.SwizzleX; - offset.SwizzleY = imm_src.SwizzleY; - offset.SwizzleZ = imm_src.SwizzleZ; - offset.File = TGSI_FILE_IMMEDIATE; - offset.Padding = 0; - + switch (in_offset->file) { + case PROGRAM_IMMEDIATE: + imm_src = t->immediates[in_offset->index]; + + offset.File = imm_src.File; + offset.Index = imm_src.Index; + offset.SwizzleX = imm_src.SwizzleX; + offset.SwizzleY = imm_src.SwizzleY; + offset.SwizzleZ = imm_src.SwizzleZ; + offset.Padding = 0; + break; + case PROGRAM_TEMPORARY: + imm_src = ureg_src(t->temps[in_offset->index]); + offset.File = imm_src.File; + offset.Index = imm_src.Index; + offset.SwizzleX = GET_SWZ(in_offset->swizzle, 0); + offset.SwizzleY = GET_SWZ(in_offset->swizzle, 1); + offset.SwizzleZ = GET_SWZ(in_offset->swizzle, 2); + offset.Padding = 0; + break; + default: + break; + } return offset; } @@ -4450,9 +4512,10 @@ compile_tgsi_instruction(struct st_translate *t, case TGSI_OPCODE_TEX2: case TGSI_OPCODE_TXB2: case TGSI_OPCODE_TXL2: + case TGSI_OPCODE_TG4: src[num_src++] = t->samplers[inst->sampler]; for (i = 0; i < inst->tex_offset_num_offset; i++) { - texoffsets[i] = translate_tex_offset(t, &inst->tex_offsets[i]); + texoffsets[i] = translate_tex_offset(t, &inst->tex_offsets[i], i); } tex_target = st_translate_texture_target(inst->tex_target, inst->tex_shadow); @@ -5140,7 +5203,7 @@ get_mesa_program(struct gl_context *ctx, printf("GLSL IR for linked %s program %d:\n", _mesa_shader_stage_to_string(shader->Stage), shader_program->Name); - _mesa_print_ir(shader->ir, NULL); + _mesa_print_ir(stdout, shader->ir, NULL); printf("\n"); printf("\n"); fflush(stdout); @@ -5182,6 +5245,7 @@ get_mesa_program(struct gl_context *ctx, stgp->Base.InputType = shader_program->Geom.InputType; stgp->Base.OutputType = shader_program->Geom.OutputType; stgp->Base.VerticesOut = shader_program->Geom.VerticesOut; + stgp->Base.Invocations = shader_program->Geom.Invocations; break; default: assert(!"should not be reached"); @@ -5268,6 +5332,7 @@ st_link_shader(struct gl_context *ctx, struct gl_shader_program *prog) lower_packing_builtins(ir, lower_inst); } + lower_offset_arrays(ir); do_mat_op_to_vec(ir); lower_instructions(ir, MOD_TO_FRACT | diff --git a/mesalib/src/mesa/state_tracker/st_manager.c b/mesalib/src/mesa/state_tracker/st_manager.c index 215b27634..6a776a8a2 100644 --- a/mesalib/src/mesa/state_tracker/st_manager.c +++ b/mesalib/src/mesa/state_tracker/st_manager.c @@ -30,6 +30,7 @@ #include "main/texobj.h" #include "main/teximage.h" #include "main/texstate.h" +#include "main/errors.h" #include "main/framebuffer.h" #include "main/fbobject.h" #include "main/renderbuffer.h" @@ -626,10 +627,14 @@ st_api_create_context(struct st_api *stapi, struct st_manager *smapi, return NULL; } - st->ctx->Debug.DebugOutput = GL_FALSE; if (attribs->flags & ST_CONTEXT_FLAG_DEBUG){ + struct gl_debug_state *debug = _mesa_get_debug_state(st->ctx); + if (!debug) { + *error = ST_CONTEXT_ERROR_NO_MEMORY; + return NULL; + } st->ctx->Const.ContextFlags |= GL_CONTEXT_FLAG_DEBUG_BIT; - st->ctx->Debug.DebugOutput = GL_TRUE; + debug->DebugOutput = GL_TRUE; } if (attribs->flags & ST_CONTEXT_FLAG_FORWARD_COMPATIBLE) diff --git a/mesalib/src/mesa/state_tracker/st_program.c b/mesalib/src/mesa/state_tracker/st_program.c index cadbe1705..e9074ac97 100644 --- a/mesalib/src/mesa/state_tracker/st_program.c +++ b/mesalib/src/mesa/state_tracker/st_program.c @@ -572,6 +572,11 @@ st_translate_fragment_program(struct st_context *st, input_semantic_index[slot] = 0; interpMode[slot] = TGSI_INTERPOLATE_CONSTANT; break; + case VARYING_SLOT_VIEWPORT: + input_semantic_name[slot] = TGSI_SEMANTIC_VIEWPORT_INDEX; + input_semantic_index[slot] = 0; + interpMode[slot] = TGSI_INTERPOLATE_CONSTANT; + break; case VARYING_SLOT_CLIP_DIST0: input_semantic_name[slot] = TGSI_SEMANTIC_CLIPDIST; input_semantic_index[slot] = 0; @@ -1027,6 +1032,10 @@ st_translate_geometry_program(struct st_context *st, gs_output_semantic_name[slot] = TGSI_SEMANTIC_PRIMID; gs_output_semantic_index[slot] = 0; break; + case VARYING_SLOT_VIEWPORT: + gs_output_semantic_name[slot] = TGSI_SEMANTIC_VIEWPORT_INDEX; + gs_output_semantic_index[slot] = 0; + break; case VARYING_SLOT_TEX0: case VARYING_SLOT_TEX1: case VARYING_SLOT_TEX2: @@ -1087,6 +1096,7 @@ st_translate_geometry_program(struct st_context *st, ureg_property_gs_input_prim(ureg, stgp->Base.InputType); ureg_property_gs_output_prim(ureg, stgp->Base.OutputType); ureg_property_gs_max_vertices(ureg, stgp->Base.VerticesOut); + ureg_property_gs_invocations(ureg, stgp->Base.Invocations); if (stgp->glsl_to_tgsi) st_translate_program(st->ctx, diff --git a/mesalib/src/mesa/swrast/s_depth.c b/mesalib/src/mesa/swrast/s_depth.c index 93aaffc57..8c225e111 100644 --- a/mesalib/src/mesa/swrast/s_depth.c +++ b/mesalib/src/mesa/swrast/s_depth.c @@ -552,8 +552,8 @@ _swrast_clear_depth_buffer(struct gl_context *ctx) height = ctx->DrawBuffer->_Ymax - ctx->DrawBuffer->_Ymin; mapMode = GL_MAP_WRITE_BIT; - if (rb->Format == MESA_FORMAT_Z24_UNORM_X8_UINT || - rb->Format == MESA_FORMAT_Z24_UNORM_S8_UINT || + if (rb->Format == MESA_FORMAT_Z24_UNORM_S8_UINT || + rb->Format == MESA_FORMAT_Z24_UNORM_X8_UINT || rb->Format == MESA_FORMAT_S8_UINT_Z24_UNORM || rb->Format == MESA_FORMAT_X8Z24_UNORM) { mapMode |= GL_MAP_READ_BIT; @@ -602,8 +602,8 @@ _swrast_clear_depth_buffer(struct gl_context *ctx) } } break; - case MESA_FORMAT_Z24_UNORM_X8_UINT: case MESA_FORMAT_Z24_UNORM_S8_UINT: + case MESA_FORMAT_Z24_UNORM_X8_UINT: case MESA_FORMAT_S8_UINT_Z24_UNORM: case MESA_FORMAT_X8Z24_UNORM: { @@ -611,8 +611,8 @@ _swrast_clear_depth_buffer(struct gl_context *ctx) GLuint clearVal = 0; GLuint mask; - if (rb->Format == MESA_FORMAT_Z24_UNORM_X8_UINT || - rb->Format == MESA_FORMAT_Z24_UNORM_S8_UINT) + if (rb->Format == MESA_FORMAT_Z24_UNORM_S8_UINT || + rb->Format == MESA_FORMAT_Z24_UNORM_X8_UINT) mask = 0xff000000; else mask = 0xff; @@ -692,7 +692,7 @@ _swrast_clear_depth_stencil_buffer(struct gl_context *ctx) } switch (rb->Format) { - case MESA_FORMAT_Z24_UNORM_X8_UINT: + case MESA_FORMAT_Z24_UNORM_S8_UINT: case MESA_FORMAT_S8_UINT_Z24_UNORM: { GLfloat zClear = (GLfloat) ctx->Depth.Clear; @@ -700,7 +700,7 @@ _swrast_clear_depth_stencil_buffer(struct gl_context *ctx) _mesa_pack_float_z_row(rb->Format, 1, &zClear, &clear); - if (rb->Format == MESA_FORMAT_Z24_UNORM_X8_UINT) { + if (rb->Format == MESA_FORMAT_Z24_UNORM_S8_UINT) { mask = ((~writeMask) & 0xff) << 24; clear |= (ctx->Stencil.Clear & writeMask & 0xff) << 24; } diff --git a/mesalib/src/mesa/swrast/s_drawpix.c b/mesalib/src/mesa/swrast/s_drawpix.c index ed4487f3e..f7926e426 100644 --- a/mesalib/src/mesa/swrast/s_drawpix.c +++ b/mesalib/src/mesa/swrast/s_drawpix.c @@ -500,7 +500,7 @@ draw_rgba_pixels( struct gl_context *ctx, GLint x, GLint y, /** - * Draw depth+stencil values into a MESA_FORAMT_Z24_S8 or MESA_FORMAT_Z24_UNORM_X8_UINT + * Draw depth+stencil values into a MESA_FORAMT_Z24_S8 or MESA_FORMAT_Z24_UNORM_S8_UINT * renderbuffer. No masking, zooming, scaling, etc. */ static void @@ -573,7 +573,7 @@ draw_depth_stencil_pixels(struct gl_context *ctx, GLint x, GLint y, if (depthRb == stencilRb && (depthRb->Format == MESA_FORMAT_S8_UINT_Z24_UNORM || - depthRb->Format == MESA_FORMAT_Z24_UNORM_X8_UINT) && + depthRb->Format == MESA_FORMAT_Z24_UNORM_S8_UINT) && type == GL_UNSIGNED_INT_24_8 && !scaleOrBias && !zoom && diff --git a/mesalib/src/mesa/swrast/s_renderbuffer.c b/mesalib/src/mesa/swrast/s_renderbuffer.c index cf5e2230d..dfd3a6057 100644 --- a/mesalib/src/mesa/swrast/s_renderbuffer.c +++ b/mesalib/src/mesa/swrast/s_renderbuffer.c @@ -102,7 +102,7 @@ soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, rb->Format = MESA_FORMAT_Z_UNORM16; break; case GL_DEPTH_COMPONENT24: - rb->Format = MESA_FORMAT_Z24_UNORM_S8_UINT; + rb->Format = MESA_FORMAT_Z24_UNORM_X8_UINT; break; case GL_DEPTH_COMPONENT32: rb->Format = MESA_FORMAT_Z_UNORM32; diff --git a/mesalib/src/mesa/swrast/s_stencil.c b/mesalib/src/mesa/swrast/s_stencil.c index e7c35ff69..eba9da863 100644 --- a/mesalib/src/mesa/swrast/s_stencil.c +++ b/mesalib/src/mesa/swrast/s_stencil.c @@ -614,7 +614,7 @@ _swrast_clear_stencil_buffer(struct gl_context *ctx) } } break; - case MESA_FORMAT_Z24_UNORM_X8_UINT: + case MESA_FORMAT_Z24_UNORM_S8_UINT: { GLuint clear = (ctx->Stencil.Clear & writeMask & 0xff) << 24; GLuint mask = (((~writeMask) & 0xff) << 24) | 0xffffff; diff --git a/mesalib/src/mesa/swrast/s_texfetch.c b/mesalib/src/mesa/swrast/s_texfetch.c index 7a3e76f85..b620748c9 100644 --- a/mesalib/src/mesa/swrast/s_texfetch.c +++ b/mesalib/src/mesa/swrast/s_texfetch.c @@ -383,7 +383,7 @@ texfetch_funcs[] = fetch_texel_3d_f_z24_s8 }, { - MESA_FORMAT_Z24_UNORM_X8_UINT, + MESA_FORMAT_Z24_UNORM_S8_UINT, fetch_texel_1d_f_s8_z24, fetch_texel_2d_f_s8_z24, fetch_texel_3d_f_s8_z24 @@ -395,7 +395,7 @@ texfetch_funcs[] = fetch_texel_3d_f_z16 }, { - MESA_FORMAT_Z24_UNORM_S8_UINT, + MESA_FORMAT_Z24_UNORM_X8_UINT, fetch_texel_1d_f_s8_z24, fetch_texel_2d_f_s8_z24, fetch_texel_3d_f_s8_z24 diff --git a/mesalib/src/mesa/swrast/s_texfetch_tmp.h b/mesalib/src/mesa/swrast/s_texfetch_tmp.h index f3048894e..806f0fd1a 100644 --- a/mesalib/src/mesa/swrast/s_texfetch_tmp.h +++ b/mesalib/src/mesa/swrast/s_texfetch_tmp.h @@ -1556,8 +1556,8 @@ static void FETCH(f_s8_z24)( const struct swrast_texture_image *texImage, const GLuint *src = TEXEL_ADDR(GLuint, texImage, i, j, k, 1); const GLdouble scale = 1.0 / (GLdouble) 0xffffff; texel[0] = (GLfloat) (((*src) & 0x00ffffff) * scale); - ASSERT(texImage->Base.TexFormat == MESA_FORMAT_Z24_UNORM_X8_UINT || - texImage->Base.TexFormat == MESA_FORMAT_Z24_UNORM_S8_UINT); + ASSERT(texImage->Base.TexFormat == MESA_FORMAT_Z24_UNORM_S8_UINT || + texImage->Base.TexFormat == MESA_FORMAT_Z24_UNORM_X8_UINT); ASSERT(texel[0] >= 0.0F); ASSERT(texel[0] <= 1.0F); } diff --git a/mesalib/src/mesa/tnl/t_draw.c b/mesalib/src/mesa/tnl/t_draw.c index 8e5af9627..2755ae62d 100644 --- a/mesalib/src/mesa/tnl/t_draw.c +++ b/mesalib/src/mesa/tnl/t_draw.c @@ -279,17 +279,18 @@ static void bind_inputs( struct gl_context *ctx, const void *ptr; if (inputs[i]->BufferObj->Name) { - if (!inputs[i]->BufferObj->Pointer) { + if (!inputs[i]->BufferObj->Mappings[MAP_INTERNAL].Pointer) { bo[*nr_bo] = inputs[i]->BufferObj; (*nr_bo)++; ctx->Driver.MapBufferRange(ctx, 0, inputs[i]->BufferObj->Size, GL_MAP_READ_BIT, - inputs[i]->BufferObj); + inputs[i]->BufferObj, + MAP_INTERNAL); - assert(inputs[i]->BufferObj->Pointer); + assert(inputs[i]->BufferObj->Mappings[MAP_INTERNAL].Pointer); } - ptr = ADD_POINTERS(inputs[i]->BufferObj->Pointer, + ptr = ADD_POINTERS(inputs[i]->BufferObj->Mappings[MAP_INTERNAL].Pointer, inputs[i]->Ptr); } else @@ -348,17 +349,19 @@ static void bind_indices( struct gl_context *ctx, return; } - if (_mesa_is_bufferobj(ib->obj) && !_mesa_bufferobj_mapped(ib->obj)) { + if (_mesa_is_bufferobj(ib->obj) && + !_mesa_bufferobj_mapped(ib->obj, MAP_INTERNAL)) { /* if the buffer object isn't mapped yet, map it now */ bo[*nr_bo] = ib->obj; (*nr_bo)++; ptr = ctx->Driver.MapBufferRange(ctx, (GLsizeiptr) ib->ptr, ib->count * vbo_sizeof_ib_type(ib->type), - GL_MAP_READ_BIT, ib->obj); - assert(ib->obj->Pointer); + GL_MAP_READ_BIT, ib->obj, + MAP_INTERNAL); + assert(ib->obj->Mappings[MAP_INTERNAL].Pointer); } else { /* user-space elements, or buffer already mapped */ - ptr = ADD_POINTERS(ib->obj->Pointer, ib->ptr); + ptr = ADD_POINTERS(ib->obj->Mappings[MAP_INTERNAL].Pointer, ib->ptr); } if (ib->type == GL_UNSIGNED_INT && VB->Primitive[0].basevertex == 0) { @@ -403,7 +406,7 @@ static void unmap_vbos( struct gl_context *ctx, { GLuint i; for (i = 0; i < nr_bo; i++) { - ctx->Driver.UnmapBuffer(ctx, bo[i]); + ctx->Driver.UnmapBuffer(ctx, bo[i], MAP_INTERNAL); } } diff --git a/mesalib/src/mesa/vbo/vbo_exec_api.c b/mesalib/src/mesa/vbo/vbo_exec_api.c index 810913645..74aec127c 100644 --- a/mesalib/src/mesa/vbo/vbo_exec_api.c +++ b/mesalib/src/mesa/vbo/vbo_exec_api.c @@ -998,7 +998,11 @@ void vbo_use_buffer_objects(struct gl_context *ctx) /* Allocate a real buffer object now */ _mesa_reference_buffer_object(ctx, &exec->vtx.bufferobj, NULL); exec->vtx.bufferobj = ctx->Driver.NewBufferObject(ctx, bufName, target); - if (!ctx->Driver.BufferData(ctx, target, size, NULL, usage, exec->vtx.bufferobj)) { + if (!ctx->Driver.BufferData(ctx, target, size, NULL, usage, + GL_MAP_WRITE_BIT | + GL_DYNAMIC_STORAGE_BIT | + GL_CLIENT_STORAGE_BIT, + exec->vtx.bufferobj)) { _mesa_error(ctx, GL_OUT_OF_MEMORY, "VBO allocation"); } } @@ -1114,8 +1118,8 @@ void vbo_exec_vtx_destroy( struct vbo_exec_context *exec ) /* Free the vertex buffer. Unmap first if needed. */ - if (_mesa_bufferobj_mapped(exec->vtx.bufferobj)) { - ctx->Driver.UnmapBuffer(ctx, exec->vtx.bufferobj); + if (_mesa_bufferobj_mapped(exec->vtx.bufferobj, MAP_INTERNAL)) { + ctx->Driver.UnmapBuffer(ctx, exec->vtx.bufferobj, MAP_INTERNAL); } _mesa_reference_buffer_object(ctx, &exec->vtx.bufferobj, NULL); } diff --git a/mesalib/src/mesa/vbo/vbo_exec_array.c b/mesalib/src/mesa/vbo/vbo_exec_array.c index b316f097d..07ce08fef 100644 --- a/mesalib/src/mesa/vbo/vbo_exec_array.c +++ b/mesalib/src/mesa/vbo/vbo_exec_array.c @@ -53,7 +53,7 @@ check_buffers_are_unmapped(const struct gl_client_array **inputs) for (i = 0; i < VERT_ATTRIB_MAX; i++) { if (inputs[i]) { struct gl_buffer_object *obj = inputs[i]->BufferObj; - assert(!_mesa_bufferobj_mapped(obj)); + assert(!_mesa_check_disallowed_mapping(obj)); (void) obj; } } @@ -73,7 +73,7 @@ vbo_check_buffers_are_unmapped(struct gl_context *ctx) /* check the current vertex arrays */ check_buffers_are_unmapped(exec->array.inputs); /* check the current glBegin/glVertex/glEnd-style VBO */ - assert(!_mesa_bufferobj_mapped(exec->vtx.bufferobj)); + assert(!_mesa_check_disallowed_mapping(exec->vtx.bufferobj)); } @@ -101,7 +101,8 @@ vbo_get_minmax_index(struct gl_context *ctx, if (_mesa_is_bufferobj(ib->obj)) { GLsizeiptr size = MIN2(count * index_size, ib->obj->Size); indices = ctx->Driver.MapBufferRange(ctx, (GLintptr) indices, size, - GL_MAP_READ_BIT, ib->obj); + GL_MAP_READ_BIT, ib->obj, + MAP_INTERNAL); } switch (ib->type) { @@ -177,7 +178,7 @@ vbo_get_minmax_index(struct gl_context *ctx, } if (_mesa_is_bufferobj(ib->obj)) { - ctx->Driver.UnmapBuffer(ctx, ib->obj); + ctx->Driver.UnmapBuffer(ctx, ib->obj, MAP_INTERNAL); } } @@ -229,13 +230,15 @@ check_array_data(struct gl_context *ctx, struct gl_client_array *array, if (array->Enabled) { const void *data = array->Ptr; if (_mesa_is_bufferobj(array->BufferObj)) { - if (!array->BufferObj->Pointer) { + if (!array->BufferObj->Mappings[MAP_INTERNAL].Pointer) { /* need to map now */ - array->BufferObj->Pointer = + array->BufferObj->Mappings[MAP_INTERNAL].Pointer = ctx->Driver.MapBufferRange(ctx, 0, array->BufferObj->Size, - GL_MAP_READ_BIT, array->BufferObj); + GL_MAP_READ_BIT, array->BufferObj, + MAP_INTERNAL); } - data = ADD_POINTERS(data, array->BufferObj->Pointer); + data = ADD_POINTERS(data, + array->BufferObj->Mappings[MAP_INTERNAL].Pointer); } switch (array->Type) { case GL_FLOAT: @@ -273,8 +276,8 @@ unmap_array_buffer(struct gl_context *ctx, struct gl_client_array *array) { if (array->Enabled && _mesa_is_bufferobj(array->BufferObj) && - _mesa_bufferobj_mapped(array->BufferObj)) { - ctx->Driver.UnmapBuffer(ctx, array->BufferObj); + _mesa_bufferobj_mapped(array->BufferObj, MAP_INTERNAL)) { + ctx->Driver.UnmapBuffer(ctx, array->BufferObj, MAP_INTERNAL); } } @@ -295,7 +298,8 @@ check_draw_elements_data(struct gl_context *ctx, GLsizei count, GLenum elemType, elemMap = ctx->Driver.MapBufferRange(ctx, 0, ctx->Array.VAO->IndexBufferObj->Size, GL_MAP_READ_BIT, - ctx->Array.VAO->IndexBufferObj); + ctx->Array.VAO->IndexBufferObj, + MAP_INTERNAL); elements = ADD_POINTERS(elements, elemMap); } @@ -324,7 +328,8 @@ check_draw_elements_data(struct gl_context *ctx, GLsizei count, GLenum elemType, } if (_mesa_is_bufferobj(vao->IndexBufferObj)) { - ctx->Driver.UnmapBuffer(ctx, ctx->Array.VAO->IndexBufferObj); + ctx->Driver.UnmapBuffer(ctx, ctx->Array.VAO->IndexBufferObj, + MAP_INTERNAL); } for (k = 0; k < Elements(vao->_VertexAttrib); k++) { @@ -374,7 +379,8 @@ print_draw_arrays(struct gl_context *ctx, if (bufName) { GLubyte *p = ctx->Driver.MapBufferRange(ctx, 0, bufObj->Size, - GL_MAP_READ_BIT, bufObj); + GL_MAP_READ_BIT, bufObj, + MAP_INTERNAL); int offset = (int) (GLintptr) exec->array.inputs[i]->Ptr; float *f = (float *) (p + offset); int *k = (int *) f; @@ -386,7 +392,7 @@ print_draw_arrays(struct gl_context *ctx, for (i = 0; i < n; i++) { printf(" float[%d] = 0x%08x %f\n", i, k[i], f[i]); } - ctx->Driver.UnmapBuffer(ctx, bufObj); + ctx->Driver.UnmapBuffer(ctx, bufObj, MAP_INTERNAL); } } } @@ -885,7 +891,8 @@ dump_element_buffer(struct gl_context *ctx, GLenum type) ctx->Driver.MapBufferRange(ctx, 0, ctx->Array.VAO->IndexBufferObj->Size, GL_MAP_READ_BIT, - ctx->Array.VAO->IndexBufferObj); + ctx->Array.VAO->IndexBufferObj, + MAP_INTERNAL); switch (type) { case GL_UNSIGNED_BYTE: { @@ -927,7 +934,8 @@ dump_element_buffer(struct gl_context *ctx, GLenum type) ; } - ctx->Driver.UnmapBuffer(ctx, ctx->Array.VAO->IndexBufferObj); + ctx->Driver.UnmapBuffer(ctx, ctx->Array.VAO->IndexBufferObj, + MAP_INTERNAL); } #endif diff --git a/mesalib/src/mesa/vbo/vbo_exec_draw.c b/mesalib/src/mesa/vbo/vbo_exec_draw.c index 75115ce66..c454c6943 100644 --- a/mesalib/src/mesa/vbo/vbo_exec_draw.c +++ b/mesalib/src/mesa/vbo/vbo_exec_draw.c @@ -220,9 +220,10 @@ vbo_exec_bind_arrays( struct gl_context *ctx ) if (_mesa_is_bufferobj(exec->vtx.bufferobj)) { /* a real buffer obj: Ptr is an offset, not a pointer*/ - assert(exec->vtx.bufferobj->Pointer); /* buf should be mapped */ + assert(exec->vtx.bufferobj->Mappings[MAP_INTERNAL].Pointer); assert(offset >= 0); - arrays[attr].Ptr = (GLubyte *)exec->vtx.bufferobj->Offset + offset; + arrays[attr].Ptr = (GLubyte *) + exec->vtx.bufferobj->Mappings[MAP_INTERNAL].Offset + offset; } else { /* Ptr into ordinary app memory */ @@ -261,12 +262,15 @@ vbo_exec_vtx_unmap( struct vbo_exec_context *exec ) struct gl_context *ctx = exec->ctx; if (ctx->Driver.FlushMappedBufferRange) { - GLintptr offset = exec->vtx.buffer_used - exec->vtx.bufferobj->Offset; - GLsizeiptr length = (exec->vtx.buffer_ptr - exec->vtx.buffer_map) * sizeof(float); + GLintptr offset = exec->vtx.buffer_used - + exec->vtx.bufferobj->Mappings[MAP_INTERNAL].Offset; + GLsizeiptr length = (exec->vtx.buffer_ptr - exec->vtx.buffer_map) * + sizeof(float); if (length) ctx->Driver.FlushMappedBufferRange(ctx, offset, length, - exec->vtx.bufferobj); + exec->vtx.bufferobj, + MAP_INTERNAL); } exec->vtx.buffer_used += (exec->vtx.buffer_ptr - @@ -275,7 +279,7 @@ vbo_exec_vtx_unmap( struct vbo_exec_context *exec ) assert(exec->vtx.buffer_used <= VBO_VERT_BUFFER_SIZE); assert(exec->vtx.buffer_ptr != NULL); - ctx->Driver.UnmapBuffer(ctx, exec->vtx.bufferobj); + ctx->Driver.UnmapBuffer(ctx, exec->vtx.bufferobj, MAP_INTERNAL); exec->vtx.buffer_map = NULL; exec->vtx.buffer_ptr = NULL; exec->vtx.max_vert = 0; @@ -312,7 +316,8 @@ vbo_exec_vtx_map( struct vbo_exec_context *exec ) (VBO_VERT_BUFFER_SIZE - exec->vtx.buffer_used), accessRange, - exec->vtx.bufferobj); + exec->vtx.bufferobj, + MAP_INTERNAL); exec->vtx.buffer_ptr = exec->vtx.buffer_map; } else { @@ -325,14 +330,19 @@ vbo_exec_vtx_map( struct vbo_exec_context *exec ) exec->vtx.buffer_used = 0; if (ctx->Driver.BufferData(ctx, GL_ARRAY_BUFFER_ARB, - VBO_VERT_BUFFER_SIZE, - NULL, usage, exec->vtx.bufferobj)) { + VBO_VERT_BUFFER_SIZE, + NULL, usage, + GL_MAP_WRITE_BIT | + GL_DYNAMIC_STORAGE_BIT | + GL_CLIENT_STORAGE_BIT, + exec->vtx.bufferobj)) { /* buffer allocation worked, now map the buffer */ exec->vtx.buffer_map = (GLfloat *)ctx->Driver.MapBufferRange(ctx, 0, VBO_VERT_BUFFER_SIZE, accessRange, - exec->vtx.bufferobj); + exec->vtx.bufferobj, + MAP_INTERNAL); } else { _mesa_error(ctx, GL_OUT_OF_MEMORY, "VBO allocation"); diff --git a/mesalib/src/mesa/vbo/vbo_primitive_restart.c b/mesalib/src/mesa/vbo/vbo_primitive_restart.c index 9c3055431..25c89669c 100644 --- a/mesalib/src/mesa/vbo/vbo_primitive_restart.c +++ b/mesalib/src/mesa/vbo/vbo_primitive_restart.c @@ -177,7 +177,7 @@ vbo_sw_primitive_restart(struct gl_context *ctx, struct _mesa_prim temp_prim; struct vbo_context *vbo = vbo_context(ctx); vbo_draw_func draw_prims_func = vbo->draw_prims; - GLboolean map_ib = ib->obj->Name && !ib->obj->Pointer; + GLboolean map_ib = ib->obj->Name && !ib->obj->Mappings[MAP_INTERNAL].Pointer; void *ptr; /* If there is an indirect buffer, map it and extract the draw params */ @@ -186,7 +186,7 @@ vbo_sw_primitive_restart(struct gl_context *ctx, struct _mesa_index_buffer new_ib = *ib; const uint32_t *indirect_params; if (!ctx->Driver.MapBufferRange(ctx, 0, indirect->Size, GL_MAP_READ_BIT, - indirect)) { + indirect, MAP_INTERNAL)) { /* something went wrong with mapping, give up */ _mesa_error(ctx, GL_OUT_OF_MEMORY, @@ -195,8 +195,9 @@ vbo_sw_primitive_restart(struct gl_context *ctx, } assert(nr_prims == 1); - indirect_params = (const uint32_t *) ADD_POINTERS(indirect->Pointer, - new_prim.indirect_offset); + indirect_params = (const uint32_t *) + ADD_POINTERS(indirect->Mappings[MAP_INTERNAL].Pointer, + new_prim.indirect_offset); new_prim.is_indirect = 0; new_prim.count = indirect_params[0]; @@ -210,7 +211,7 @@ vbo_sw_primitive_restart(struct gl_context *ctx, prims = &new_prim; ib = &new_ib; - ctx->Driver.UnmapBuffer(ctx, indirect); + ctx->Driver.UnmapBuffer(ctx, indirect, MAP_INTERNAL); } /* Find the sub-primitives. These are regions in the index buffer which @@ -218,17 +219,17 @@ vbo_sw_primitive_restart(struct gl_context *ctx, */ if (map_ib) { ctx->Driver.MapBufferRange(ctx, 0, ib->obj->Size, GL_MAP_READ_BIT, - ib->obj); + ib->obj, MAP_INTERNAL); } - ptr = ADD_POINTERS(ib->obj->Pointer, ib->ptr); + ptr = ADD_POINTERS(ib->obj->Mappings[MAP_INTERNAL].Pointer, ib->ptr); sub_prims = find_sub_primitives(ptr, vbo_sizeof_ib_type(ib->type), 0, ib->count, restart_index, &num_sub_prims); if (map_ib) { - ctx->Driver.UnmapBuffer(ctx, ib->obj); + ctx->Driver.UnmapBuffer(ctx, ib->obj, MAP_INTERNAL); } /* Loop over the primitives, and use the located sub-primitives to draw diff --git a/mesalib/src/mesa/vbo/vbo_rebase.c b/mesalib/src/mesa/vbo/vbo_rebase.c index c700621ce..f3fe5f757 100644 --- a/mesalib/src/mesa/vbo/vbo_rebase.c +++ b/mesalib/src/mesa/vbo/vbo_rebase.c @@ -157,15 +157,16 @@ void vbo_rebase_prims( struct gl_context *ctx, } else if (ib) { /* Unfortunately need to adjust each index individually. */ - GLboolean map_ib = ib->obj->Name && !ib->obj->Pointer; + GLboolean map_ib = ib->obj->Name && + !ib->obj->Mappings[MAP_INTERNAL].Pointer; void *ptr; if (map_ib) ctx->Driver.MapBufferRange(ctx, 0, ib->obj->Size, GL_MAP_READ_BIT, - ib->obj); + ib->obj, MAP_INTERNAL); - ptr = ADD_POINTERS(ib->obj->Pointer, ib->ptr); + ptr = ADD_POINTERS(ib->obj->Mappings[MAP_INTERNAL].Pointer, ib->ptr); /* Some users might prefer it if we translated elements to * GLuints here. Others wouldn't... @@ -183,7 +184,7 @@ void vbo_rebase_prims( struct gl_context *ctx, } if (map_ib) - ctx->Driver.UnmapBuffer(ctx, ib->obj); + ctx->Driver.UnmapBuffer(ctx, ib->obj, MAP_INTERNAL); tmp_ib.obj = ctx->Shared->NullBufferObj; tmp_ib.ptr = tmp_indices; diff --git a/mesalib/src/mesa/vbo/vbo_save_api.c b/mesalib/src/mesa/vbo/vbo_save_api.c index 98ab68623..1c6b91942 100644 --- a/mesalib/src/mesa/vbo/vbo_save_api.c +++ b/mesalib/src/mesa/vbo/vbo_save_api.c @@ -200,6 +200,8 @@ alloc_vertex_store(struct gl_context *ctx) GL_ARRAY_BUFFER_ARB, VBO_SAVE_BUFFER_SIZE * sizeof(GLfloat), NULL, GL_STATIC_DRAW_ARB, + GL_MAP_WRITE_BIT | + GL_DYNAMIC_STORAGE_BIT, vertex_store->bufferobj); } else { @@ -251,7 +253,8 @@ vbo_save_map_vertex_store(struct gl_context *ctx, GLsizeiptr size = vertex_store->bufferobj->Size - offset; GLfloat *range = (GLfloat *) ctx->Driver.MapBufferRange(ctx, offset, size, access, - vertex_store->bufferobj); + vertex_store->bufferobj, + MAP_INTERNAL); if (range) { /* compute address of start of whole buffer (needed elsewhere) */ vertex_store->buffer = range - vertex_store->used; @@ -277,13 +280,14 @@ vbo_save_unmap_vertex_store(struct gl_context *ctx, if (vertex_store->bufferobj->Size > 0) { GLintptr offset = 0; GLsizeiptr length = vertex_store->used * sizeof(GLfloat) - - vertex_store->bufferobj->Offset; + - vertex_store->bufferobj->Mappings[MAP_INTERNAL].Offset; /* Explicitly flush the region we wrote to */ ctx->Driver.FlushMappedBufferRange(ctx, offset, length, - vertex_store->bufferobj); + vertex_store->bufferobj, + MAP_INTERNAL); - ctx->Driver.UnmapBuffer(ctx, vertex_store->bufferobj); + ctx->Driver.UnmapBuffer(ctx, vertex_store->bufferobj, MAP_INTERNAL); } vertex_store->buffer = NULL; } @@ -1116,6 +1120,7 @@ _save_OBE_DrawElements(GLenum mode, GLsizei count, GLenum type, { GET_CURRENT_CONTEXT(ctx); struct vbo_save_context *save = &vbo_context(ctx)->save; + struct gl_buffer_object *indexbuf = ctx->Array.VAO->IndexBufferObj; GLint i; if (!_mesa_is_valid_prim_mode(ctx, mode)) { @@ -1138,9 +1143,9 @@ _save_OBE_DrawElements(GLenum mode, GLsizei count, GLenum type, _ae_map_vbos(ctx); - if (_mesa_is_bufferobj(ctx->Array.VAO->IndexBufferObj)) + if (_mesa_is_bufferobj(indexbuf)) indices = - ADD_POINTERS(ctx->Array.VAO->IndexBufferObj->Pointer, indices); + ADD_POINTERS(indexbuf->Mappings[MAP_INTERNAL].Pointer, indices); vbo_save_NotifyBegin(ctx, (mode | VBO_SAVE_PRIM_WEAK | VBO_SAVE_PRIM_NO_CURRENT_UPDATE)); diff --git a/mesalib/src/mesa/vbo/vbo_save_draw.c b/mesalib/src/mesa/vbo/vbo_save_draw.c index 4b13cc4e5..89fd30e0f 100644 --- a/mesalib/src/mesa/vbo/vbo_save_draw.c +++ b/mesalib/src/mesa/vbo/vbo_save_draw.c @@ -225,7 +225,8 @@ vbo_save_loopback_vertex_list(struct gl_context *ctx, ctx->Driver.MapBufferRange(ctx, 0, list->vertex_store->bufferobj->Size, GL_MAP_READ_BIT, /* ? */ - list->vertex_store->bufferobj); + list->vertex_store->bufferobj, + MAP_INTERNAL); vbo_loopback_vertex_list(ctx, (const GLfloat *)(buffer + list->buffer_offset), @@ -235,7 +236,8 @@ vbo_save_loopback_vertex_list(struct gl_context *ctx, list->wrap_count, list->vertex_size); - ctx->Driver.UnmapBuffer(ctx, list->vertex_store->bufferobj); + ctx->Driver.UnmapBuffer(ctx, list->vertex_store->bufferobj, + MAP_INTERNAL); } diff --git a/mesalib/src/mesa/vbo/vbo_split_copy.c b/mesalib/src/mesa/vbo/vbo_split_copy.c index 4332ef2e6..719ad651a 100644 --- a/mesalib/src/mesa/vbo/vbo_split_copy.c +++ b/mesalib/src/mesa/vbo/vbo_split_copy.c @@ -451,11 +451,14 @@ replay_init( struct copy_context *copy ) copy->varying[j].size = attr_size(copy->array[i]); copy->vertex_size += attr_size(copy->array[i]); - if (_mesa_is_bufferobj(vbo) && !_mesa_bufferobj_mapped(vbo)) - ctx->Driver.MapBufferRange(ctx, 0, vbo->Size, GL_MAP_READ_BIT, vbo); + if (_mesa_is_bufferobj(vbo) && + !_mesa_bufferobj_mapped(vbo, MAP_INTERNAL)) + ctx->Driver.MapBufferRange(ctx, 0, vbo->Size, GL_MAP_READ_BIT, vbo, + MAP_INTERNAL); - copy->varying[j].src_ptr = ADD_POINTERS(vbo->Pointer, - copy->array[i]->Ptr); + copy->varying[j].src_ptr = + ADD_POINTERS(vbo->Mappings[MAP_INTERNAL].Pointer, + copy->array[i]->Ptr); copy->dstarray_ptr[i] = ©->varying[j].dstarray; } @@ -466,12 +469,13 @@ replay_init( struct copy_context *copy ) * do it internally. */ if (_mesa_is_bufferobj(copy->ib->obj) && - !_mesa_bufferobj_mapped(copy->ib->obj)) + !_mesa_bufferobj_mapped(copy->ib->obj, MAP_INTERNAL)) ctx->Driver.MapBufferRange(ctx, 0, copy->ib->obj->Size, GL_MAP_READ_BIT, - copy->ib->obj); + copy->ib->obj, MAP_INTERNAL); - srcptr = (const GLubyte *) ADD_POINTERS(copy->ib->obj->Pointer, - copy->ib->ptr); + srcptr = (const GLubyte *) + ADD_POINTERS(copy->ib->obj->Mappings[MAP_INTERNAL].Pointer, + copy->ib->ptr); switch (copy->ib->type) { case GL_UNSIGNED_BYTE: @@ -572,15 +576,15 @@ replay_finish( struct copy_context *copy ) */ for (i = 0; i < copy->nr_varying; i++) { struct gl_buffer_object *vbo = copy->varying[i].array->BufferObj; - if (_mesa_is_bufferobj(vbo) && _mesa_bufferobj_mapped(vbo)) - ctx->Driver.UnmapBuffer(ctx, vbo); + if (_mesa_is_bufferobj(vbo) && _mesa_bufferobj_mapped(vbo, MAP_INTERNAL)) + ctx->Driver.UnmapBuffer(ctx, vbo, MAP_INTERNAL); } /* Unmap index buffer: */ if (_mesa_is_bufferobj(copy->ib->obj) && - _mesa_bufferobj_mapped(copy->ib->obj)) { - ctx->Driver.UnmapBuffer(ctx, copy->ib->obj); + _mesa_bufferobj_mapped(copy->ib->obj, MAP_INTERNAL)) { + ctx->Driver.UnmapBuffer(ctx, copy->ib->obj, MAP_INTERNAL); } } diff --git a/mesalib/windows/VC8/mesa/mesa/mesa.vcxproj b/mesalib/windows/VC8/mesa/mesa/mesa.vcxproj index d620d17ea..e63e2c552 100644 --- a/mesalib/windows/VC8/mesa/mesa/mesa.vcxproj +++ b/mesalib/windows/VC8/mesa/mesa/mesa.vcxproj @@ -295,6 +295,7 @@ <ClCompile Include="..\..\..\..\src\glsl\ralloc.c" />
<ClCompile Include="..\..\..\..\src\glsl\strtod.c" />
<ClCompile Include="..\..\..\..\src\glsl\s_expression.cpp" />
+ <ClCompile Include="..\..\..\..\src\mesa\drivers\common\meta_blit.c" />
<ClCompile Include="..\..\..\..\src\mesa\main\accum.c" />
<ClCompile Include="..\..\..\..\src\mesa\main\api_arrayelt.c" />
<ClCompile Include="..\..\..\..\src\mesa\main\api_exec.c" />
@@ -315,6 +316,7 @@ <ClCompile Include="..\..\..\..\src\mesa\main\objectlabel.c" />
<ClCompile Include="..\..\..\..\src\mesa\main\pack.c" />
<ClCompile Include="..\..\..\..\src\mesa\main\performance_monitor.c" />
+ <ClCompile Include="..\..\..\..\src\mesa\main\pipelineobj.c" />
<ClCompile Include="..\..\..\..\src\mesa\main\pixeltransfer.c" />
<ClCompile Include="..\..\..\..\src\mesa\main\querymatrix.c" />
<ClCompile Include="..\..\..\..\src\mesa\main\remap.c" />
diff --git a/mesalib/windows/VC8/mesa/mesa/mesa.vcxproj.filters b/mesalib/windows/VC8/mesa/mesa/mesa.vcxproj.filters index ac2a46d62..a7db91a3f 100644 --- a/mesalib/windows/VC8/mesa/mesa/mesa.vcxproj.filters +++ b/mesalib/windows/VC8/mesa/mesa/mesa.vcxproj.filters @@ -788,6 +788,12 @@ <ClCompile Include="..\..\..\..\src\mesa\main\genmipmap.c">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="..\..\..\..\src\mesa\drivers\common\meta_blit.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\..\..\src\mesa\main\pipelineobj.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\..\src\glsl\strtod.h">
diff --git a/xorg-server/Makefile.am b/xorg-server/Makefile.am index 7c93d8d20..f0fa2d839 100644 --- a/xorg-server/Makefile.am +++ b/xorg-server/Makefile.am @@ -111,7 +111,7 @@ DIST_SUBDIRS = \ composite \ glx \ exa \ - $(GLAMOR_DIR) \ + glamor \ config \ dri3 \ present \ diff --git a/xorg-server/Xext/sync.c b/xorg-server/Xext/sync.c index 7129e9833..49c262c57 100644 --- a/xorg-server/Xext/sync.c +++ b/xorg-server/Xext/sync.c @@ -2730,27 +2730,24 @@ IdleTimeBlockHandler(void *pCounter, struct timeval **wt, void *LastSelectMask) * If we've been idle more than it, and someone wants to know about * that level-triggered, schedule an immediate wakeup. */ - unsigned long timeout = -1; if (XSyncValueLessThan(idle, *greater)) { XSyncValue value; Bool overflow; XSyncValueSubtract(&value, *greater, idle, &overflow); - timeout = min(timeout, XSyncValueLow32(value)); + AdjustWaitForDelay(wt, XSyncValueLow32(value)); } else { for (list = counter->sync.pTriglist; list; list = list->next) { trig = list->pTrigger; if (trig->CheckTrigger(trig, old_idle)) { - timeout = min(timeout, 0); + AdjustWaitForDelay(wt, 0); break; } } } - - AdjustWaitForDelay(wt, timeout); } counter->value = old_idle; /* pop */ diff --git a/xorg-server/Xext/xres.c b/xorg-server/Xext/xres.c index 32e8c8135..32e8c8135 100755..100644 --- a/xorg-server/Xext/xres.c +++ b/xorg-server/Xext/xres.c diff --git a/xorg-server/Xi/exevents.c b/xorg-server/Xi/exevents.c index 90f49e43b..700788213 100644 --- a/xorg-server/Xi/exevents.c +++ b/xorg-server/Xi/exevents.c @@ -2187,7 +2187,8 @@ CheckGrabValues(ClientPtr client, GrabParameters *param) return BadValue; } - if (param->grabtype != XI2 && (param->modifiers != AnyModifier) && + if (param->modifiers != AnyModifier && + param->modifiers != XIAnyModifier && (param->modifiers & ~AllModifiersMask)) { client->errorValue = param->modifiers; return BadValue; diff --git a/xorg-server/Xi/extinit.c b/xorg-server/Xi/extinit.c index 9ebd733ab..26c628cbd 100644 --- a/xorg-server/Xi/extinit.c +++ b/xorg-server/Xi/extinit.c @@ -1169,8 +1169,8 @@ IResetProc(ExtensionEntry * unused) EventSwapVector[DevicePropertyNotify] = NotImplemented; RestoreExtensionEvents(); - free((void *) xi_all_devices.name); - free((void *) xi_all_master_devices.name); + free(xi_all_devices.name); + free(xi_all_master_devices.name); XIBarrierReset(); } diff --git a/xorg-server/Xi/listdev.c b/xorg-server/Xi/listdev.c index e403a0cb5..336053cf1 100644 --- a/xorg-server/Xi/listdev.c +++ b/xorg-server/Xi/listdev.c @@ -121,7 +121,7 @@ SizeDeviceInfo(DeviceIntPtr d, int *namesize, int *size) static void CopyDeviceName(char **namebuf, const char *name) { - char *nameptr = (char *) *namebuf; + char *nameptr = *namebuf; if (name) { *nameptr++ = strlen(name); diff --git a/xorg-server/Xi/xipassivegrab.c b/xorg-server/Xi/xipassivegrab.c index 0e37e0e1b..ca69050b2 100644 --- a/xorg-server/Xi/xipassivegrab.c +++ b/xorg-server/Xi/xipassivegrab.c @@ -189,6 +189,10 @@ ProcXIPassiveGrabDevice(ClientPtr client) uint8_t status = Success; param.modifiers = *modifiers; + ret = CheckGrabValues(client, ¶m); + if (ret != Success) + goto out; + switch (stuff->grab_type) { case XIGrabtypeButton: status = GrabButton(client, dev, mod_dev, stuff->detail, diff --git a/xorg-server/config/Makefile.am b/xorg-server/config/Makefile.am index e0f0a8ddf..0e20e8b3d 100644 --- a/xorg-server/config/Makefile.am +++ b/xorg-server/config/Makefile.am @@ -38,4 +38,4 @@ endif # !CONFIG_HAL endif # !CONFIG_UDEV -EXTRA_DIST = xorg-server.conf x11-input.fdi 10-evdev.conf non-seat0.conf.multi-seat fdi2iclass.py 10-quirks.conf +EXTRA_DIST = x11-input.fdi 10-evdev.conf fdi2iclass.py 10-quirks.conf diff --git a/xorg-server/config/non-seat0.conf.multi-seat b/xorg-server/config/non-seat0.conf.multi-seat deleted file mode 100644 index 34008ce50..000000000 --- a/xorg-server/config/non-seat0.conf.multi-seat +++ /dev/null @@ -1,18 +0,0 @@ -# This is the default configuration for servers on seat-1 and above. -# -# Start the server with -config non-seat0.conf.multi-seat, or alternatively -# rename the file to end in .conf and put it in the standard config -# directory (though it will apply to _all_ seats!). -# -# * Disable VT switching with Ctrl-Alt-F1 -# * Force a grab on all input devices to detach them from the VT subsystem -# to avoid event leakage. - -Section "ServerFlags" - Option "DontVTSwitch" "on" -EndSection - -Section "InputClass" - Identifier "Force input devices to seat" - Option "GrabDevice" "on" -EndSection diff --git a/xorg-server/config/udev.c b/xorg-server/config/udev.c index 436b8f038..68ed34843 100644 --- a/xorg-server/config/udev.c +++ b/xorg-server/config/udev.c @@ -242,16 +242,16 @@ device_added(struct udev_device *udev_device) free(config_info); input_option_free_list(&input_options); - free((void *) attrs.usb_id); - free((void *) attrs.pnp_id); - free((void *) attrs.product); - free((void *) attrs.device); - free((void *) attrs.vendor); + free(attrs.usb_id); + free(attrs.pnp_id); + free(attrs.product); + free(attrs.device); + free(attrs.vendor); if (attrs.tags) { - const char **tag = attrs.tags; + char **tag = attrs.tags; while (*tag) { - free((void *) *tag); + free(*tag); tag++; } free(attrs.tags); diff --git a/xorg-server/configure.ac b/xorg-server/configure.ac index c6764f5a8..0fb2fc375 100644 --- a/xorg-server/configure.ac +++ b/xorg-server/configure.ac @@ -26,9 +26,9 @@ dnl dnl Process this file with autoconf to create configure. AC_PREREQ(2.60) -AC_INIT([xorg-server], 1.15.99.900, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) -RELEASE_DATE="2014-01-09" -RELEASE_NAME="Golden Gaytime" +AC_INIT([xorg-server], 1.15.99.901, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server) +RELEASE_DATE="2014-02-24" +RELEASE_NAME="Szechuan Hot Pot" AC_CONFIG_SRCDIR([Makefile.am]) AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE([foreign dist-bzip2]) @@ -841,7 +841,7 @@ if test "x$WITH_SYSTEMD_DAEMON" = xauto; then WITH_SYSTEMD_DAEMON="$HAVE_SYSTEMD_DAEMON" fi if test "x$WITH_SYSTEMD_DAEMON" = xyes; then - if "x$HAVE_SYSTEMD_DAEMON" = xno; then + if test "x$HAVE_SYSTEMD_DAEMON" = xno; then AC_MSG_ERROR([systemd support requested but no library has been found]) fi AC_DEFINE(HAVE_SYSTEMD_DAEMON, 1, [Define to 1 if libsystemd-daemon is available]) @@ -1853,7 +1853,7 @@ if test "x$XORG" = xyes; then if test "x$PCI" = xyes; then PKG_CHECK_MODULES([PCIACCESS], $LIBPCIACCESS) SDK_REQUIRED_MODULES="$SDK_REQUIRED_MODULES $LIBPCIACCESS" - XORG_SYS_LIBS="$XORG_SYS_LIBS $PCIACCESS_LIBS $GLX_SYS_LIBS $LIBDRM_LIBS" + XORG_SYS_LIBS="$XORG_SYS_LIBS $PCIACCESS_LIBS $LIBDRM_LIBS" XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS $LIBDRM_CFLAGS" AC_DEFINE(XSERVER_LIBPCIACCESS, 1, [Use libpciaccess for all pci manipulation]) @@ -2069,7 +2069,7 @@ dnl glamor AM_CONDITIONAL([GLAMOR], [test "x$GLAMOR" = xyes]) if test "x$GLAMOR" = xyes; then AC_DEFINE(GLAMOR, 1, [Build glamor]) - PKG_CHECK_MODULES([GLAMOR], [egl gl]) + PKG_CHECK_MODULES([GLAMOR], [epoxy]) fi dnl XWin DDX diff --git a/xorg-server/dix/devices.c b/xorg-server/dix/devices.c index 1d6c06d41..4e20b50d4 100644 --- a/xorg-server/dix/devices.c +++ b/xorg-server/dix/devices.c @@ -956,7 +956,7 @@ CloseDevice(DeviceIntPtr dev) while (dev->xkb_interest) XkbRemoveResourceClient((DevicePtr) dev, dev->xkb_interest->resource); - free((void *) dev->name); + free(dev->name); classes = (ClassesPtr) &dev->key; FreeAllDeviceClasses(classes); @@ -1284,6 +1284,7 @@ InitButtonClassDeviceStruct(DeviceIntPtr dev, int numButtons, Atom *labels, BUG_RETURN_VAL(dev == NULL, FALSE); BUG_RETURN_VAL(dev->button != NULL, FALSE); + BUG_RETURN_VAL(numButtons >= MAX_BUTTONS, FALSE); butc = calloc(1, sizeof(ButtonClassRec)); if (!butc) diff --git a/xorg-server/dix/dispatch.c b/xorg-server/dix/dispatch.c index a6dce911a..28a54de76 100755..100644 --- a/xorg-server/dix/dispatch.c +++ b/xorg-server/dix/dispatch.c @@ -512,9 +512,9 @@ SetVendorRelease(int release) }
void
-SetVendorString(const char *string)
+SetVendorString(const char *vendor)
{
- VendorString = string;
+ VendorString = vendor;
}
Bool
diff --git a/xorg-server/dix/dixfonts.c b/xorg-server/dix/dixfonts.c index 49758d5b5..49758d5b5 100755..100644 --- a/xorg-server/dix/dixfonts.c +++ b/xorg-server/dix/dixfonts.c diff --git a/xorg-server/dix/getevents.c b/xorg-server/dix/getevents.c index 5a0296ba5..366bc9558 100644 --- a/xorg-server/dix/getevents.c +++ b/xorg-server/dix/getevents.c @@ -1671,6 +1671,8 @@ GetPointerEvents(InternalEvent *events, DeviceIntPtr pDev, int type, } #endif + BUG_RETURN_VAL(buttons >= MAX_BUTTONS, 0); + /* refuse events from disabled devices */ if (!pDev->enabled) return 0; diff --git a/xorg-server/dix/inpututils.c b/xorg-server/dix/inpututils.c index 1ab16d14b..3a2f229e4 100644 --- a/xorg-server/dix/inpututils.c +++ b/xorg-server/dix/inpututils.c @@ -60,7 +60,8 @@ check_butmap_change(DeviceIntPtr dev, CARD8 *map, int len, CARD32 *errval_out, } for (i = 0; i < len; i++) { - if (dev->button->map[i + 1] != map[i] && dev->button->down[i + 1]) + if (dev->button->map[i + 1] != map[i] && + button_is_down(dev, i + 1, BUTTON_PROCESSED)) return MappingBusy; } @@ -351,7 +352,7 @@ DuplicateInputAttributes(InputAttributes * attrs) { InputAttributes *new_attr; int ntags = 0; - const char **tags, **new_tags; + char **tags, **new_tags; if (!attrs) return NULL; @@ -403,20 +404,20 @@ DuplicateInputAttributes(InputAttributes * attrs) void FreeInputAttributes(InputAttributes * attrs) { - const char **tags; + char **tags; if (!attrs) return; - free((void *) attrs->product); - free((void *) attrs->vendor); - free((void *) attrs->device); - free((void *) attrs->pnp_id); - free((void *) attrs->usb_id); + free(attrs->product); + free(attrs->vendor); + free(attrs->device); + free(attrs->pnp_id); + free(attrs->usb_id); if ((tags = attrs->tags)) while (*tags) - free((void *) *tags++); + free(*tags++); free(attrs->tags); free(attrs); diff --git a/xorg-server/glamor/Makefile.am b/xorg-server/glamor/Makefile.am index 3fe25304d..12a57c441 100644 --- a/xorg-server/glamor/Makefile.am +++ b/xorg-server/glamor/Makefile.am @@ -6,15 +6,15 @@ AM_CFLAGS = $(CWARNFLAGS) $(DIX_CFLAGS) $(GLAMOR_CFLAGS) libglamor_la_SOURCES = \ glamor.c \ + glamor_context.h \ glamor_copyarea.c \ glamor_copywindow.c \ glamor_core.c \ glamor_debug.h \ - glamor_gl_dispatch.h \ glamor_fill.c \ glamor_fillspans.c \ glamor_getspans.c \ - glamor_glext.h \ + glamor_glx.c \ glamor_glyphs.c \ glamor_polyfillrect.c \ glamor_polylines.c \ @@ -35,7 +35,6 @@ libglamor_la_SOURCES = \ glamor_largepixmap.c\ glamor_picture.c\ glamor_window.c\ - glamor_gl_dispatch.c\ glamor_fbo.c\ glamor_compositerects.c\ glamor_xv.c\ diff --git a/xorg-server/glamor/glamor.c b/xorg-server/glamor/glamor.c index feb110a66..7d8228cdd 100644 --- a/xorg-server/glamor/glamor.c +++ b/xorg-server/glamor/glamor.c @@ -95,7 +95,7 @@ glamor_set_pixmap_texture(PixmapPtr pixmap, unsigned int tex) glamor_destroy_fbo(fbo); } - gl_iformat_for_depth(pixmap->drawable.depth, &format); + format = gl_iformat_for_pixmap(pixmap); fbo = glamor_create_fbo_from_tex(glamor_priv, pixmap->drawable.width, pixmap->drawable.height, format, tex, 0); @@ -162,7 +162,7 @@ glamor_create_pixmap(ScreenPtr screen, int w, int h, int depth, pixmap_priv->base.pixmap = pixmap; pixmap_priv->base.glamor_priv = glamor_priv; - gl_iformat_for_depth(depth, &format); + format = gl_iformat_for_pixmap(pixmap); pitch = (((w * pixmap->drawable.bitsPerPixel + 7) / 8) + 3) & ~3; screen->ModifyPixmapHeader(pixmap, w, h, 0, 0, pitch, NULL); @@ -218,13 +218,12 @@ void glamor_block_handler(ScreenPtr screen) { glamor_screen_private *glamor_priv = glamor_get_screen_private(screen); - glamor_gl_dispatch *dispatch; - dispatch = glamor_get_dispatch(glamor_priv); + glamor_get_context(glamor_priv); glamor_priv->tick++; - dispatch->glFlush(); + glFlush(); glamor_fbo_expire(glamor_priv); - glamor_put_dispatch(glamor_priv); + glamor_put_context(glamor_priv); if (glamor_priv->state == RENDER_STATE && glamor_priv->render_idle_cnt++ > RENDER_IDEL_MAX) { glamor_priv->state = IDLE_STATE; @@ -236,10 +235,10 @@ static void _glamor_block_handler(void *data, OSTimePtr timeout, void *last_select_mask) { glamor_screen_private *glamor_priv = data; - glamor_gl_dispatch *dispatch = glamor_get_dispatch(glamor_priv); - dispatch->glFlush(); - glamor_put_dispatch(glamor_priv); + glamor_get_context(glamor_priv); + glFlush(); + glamor_put_context(glamor_priv); } static void @@ -281,10 +280,10 @@ glamor_init(ScreenPtr screen, unsigned int flags) return FALSE; if (flags & GLAMOR_INVERTED_Y_AXIS) { - glamor_priv->yInverted = 1; + glamor_priv->yInverted = TRUE; } else - glamor_priv->yInverted = 0; + glamor_priv->yInverted = FALSE; if (!dixRegisterPrivateKey(glamor_screen_private_key, PRIVATE_SCREEN, 0)) { LogMessage(X_WARNING, @@ -302,50 +301,49 @@ glamor_init(ScreenPtr screen, unsigned int flags) goto fail;; } - gl_version = glamor_gl_get_version(); + if (epoxy_is_desktop_gl()) + glamor_priv->gl_flavor = GLAMOR_GL_DESKTOP; + else + glamor_priv->gl_flavor = GLAMOR_GL_ES2; -#ifndef GLAMOR_GLES2 - if (gl_version < GLAMOR_GL_VERSION_ENCODE(1, 3)) { - ErrorF("Require OpenGL version 1.3 or latter.\n"); - goto fail; - } -#else - if (gl_version < GLAMOR_GL_VERSION_ENCODE(2, 0)) { - ErrorF("Require Open GLES2.0 or latter.\n"); - goto fail; - } -#endif + gl_version = glamor_gl_get_version(); - glamor_gl_dispatch_init(screen, &glamor_priv->_dispatch, gl_version); + if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) { + if (gl_version < GLAMOR_GL_VERSION_ENCODE(1, 3)) { + ErrorF("Require OpenGL version 1.3 or later.\n"); + goto fail; + } + } else { + if (gl_version < GLAMOR_GL_VERSION_ENCODE(2, 0)) { + ErrorF("Require Open GLES2.0 or later.\n"); + goto fail; + } -#ifdef GLAMOR_GLES2 - if (!glamor_gl_has_extension("GL_EXT_texture_format_BGRA8888")) { - ErrorF("GL_EXT_texture_format_BGRA8888 required\n"); - goto fail; + if (!glamor_gl_has_extension("GL_EXT_texture_format_BGRA8888")) { + ErrorF("GL_EXT_texture_format_BGRA8888 required\n"); + goto fail; + } } -#endif glamor_priv->has_pack_invert = glamor_gl_has_extension("GL_MESA_pack_invert"); glamor_priv->has_fbo_blit = glamor_gl_has_extension("GL_EXT_framebuffer_blit"); - glamor_priv->_dispatch.glGetIntegerv(GL_MAX_RENDERBUFFER_SIZE, - &glamor_priv->max_fbo_size); + glGetIntegerv(GL_MAX_RENDERBUFFER_SIZE, &glamor_priv->max_fbo_size); #ifdef MAX_FBO_SIZE glamor_priv->max_fbo_size = MAX_FBO_SIZE; #endif glamor_set_debug_level(&glamor_debug_level); -#ifdef GLAMOR_GLES2 - glamor_priv->gl_flavor = GLAMOR_GL_ES2; -#else - glamor_priv->gl_flavor = GLAMOR_GL_DESKTOP; -#endif /* If we are using egl screen, call egl screen init to * register correct close screen function. */ - if (flags & GLAMOR_USE_EGL_SCREEN) - glamor_egl_screen_init(screen); + if (flags & GLAMOR_USE_EGL_SCREEN) { + glamor_egl_screen_init(screen, &glamor_priv->ctx); + } else { + if (!glamor_glx_screen_init(&glamor_priv->ctx)) + goto fail; + } glamor_priv->saved_procs.close_screen = screen->CloseScreen; screen->CloseScreen = glamor_close_screen; diff --git a/xorg-server/glamor/glamor.h b/xorg-server/glamor/glamor.h index 05f565b12..eec687256 100644 --- a/xorg-server/glamor/glamor.h +++ b/xorg-server/glamor/glamor.h @@ -36,6 +36,8 @@ #include <fb.h> #include <fbpict.h> +struct glamor_context; + /* * glamor_pixmap_type : glamor pixmap's type. * @MEMORY: pixmap is in memory. @@ -142,11 +144,6 @@ extern _X_EXPORT void glamor_block_handler(ScreenPtr screen); extern _X_EXPORT PixmapPtr glamor_create_pixmap(ScreenPtr screen, int w, int h, int depth, unsigned int usage); -extern _X_EXPORT void glamor_egl_screen_init(ScreenPtr screen); - -extern _X_EXPORT void glamor_egl_make_current(ScreenPtr screen); -extern _X_EXPORT void glamor_egl_restore_context(ScreenPtr screen); - /* @glamor_egl_exchange_buffers: Exchange the underlying buffers(KHR image,fbo). * * @front: front pixmap. diff --git a/xorg-server/glamor/glamor_context.h b/xorg-server/glamor/glamor_context.h new file mode 100644 index 000000000..8781afc48 --- /dev/null +++ b/xorg-server/glamor/glamor_context.h @@ -0,0 +1,56 @@ +/* + * Copyright © 2013 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +/** + * @file glamor_context.h + * + * This is the struct of state required for context switching in + * glamor. It has to use types that don't require including either + * server headers or Xlib headers, since it will be included by both + * the server and the GLX (xlib) code. + */ + +struct glamor_context { + /** Either an EGLDisplay or an Xlib Display */ + void *display; + + /** Either a GLXContext or an EGLContext. */ + void *ctx; + + /** The EGLSurface we should MakeCurrent to */ + void *drawable; + + /** The GLXDrawable we should MakeCurrent to */ + uint32_t drawable_xid; + + /** + * Count of how deep in glamor_get_context() we are, to reduce + * MakeCurrent calls. + */ + int get_count; + + void (*get_context)(struct glamor_context *glamor_ctx); + void (*put_context)(struct glamor_context *glamor_ctx); +}; + +Bool glamor_glx_screen_init(struct glamor_context *glamor_ctx); diff --git a/xorg-server/glamor/glamor_copyarea.c b/xorg-server/glamor/glamor_copyarea.c index 2735ba0bc..d6bcacd36 100644 --- a/xorg-server/glamor/glamor_copyarea.c +++ b/xorg-server/glamor/glamor_copyarea.c @@ -31,7 +31,6 @@ * * GC CopyArea implementation */ -#ifndef GLAMOR_GLES2 static Bool glamor_copy_n_to_n_fbo_blit(DrawablePtr src, DrawablePtr dst, @@ -42,7 +41,6 @@ glamor_copy_n_to_n_fbo_blit(DrawablePtr src, PixmapPtr src_pixmap = glamor_get_drawable_pixmap(src); glamor_pixmap_private *src_pixmap_priv, *dst_pixmap_priv; glamor_screen_private *glamor_priv = glamor_get_screen_private(screen); - glamor_gl_dispatch *dispatch; int dst_x_off, dst_y_off, src_x_off, src_y_off, i; int fbo_x_off, fbo_y_off; int src_fbo_x_off, src_fbo_y_off; @@ -72,9 +70,8 @@ glamor_copy_n_to_n_fbo_blit(DrawablePtr src, pixmap_priv_get_fbo_off(dst_pixmap_priv, &fbo_x_off, &fbo_y_off); pixmap_priv_get_fbo_off(src_pixmap_priv, &src_fbo_x_off, &src_fbo_y_off); - dispatch = glamor_get_dispatch(glamor_priv); - dispatch->glBindFramebuffer(GL_READ_FRAMEBUFFER_EXT, - src_pixmap_priv->base.fbo->fb); + glamor_get_context(glamor_priv); + glBindFramebuffer(GL_READ_FRAMEBUFFER_EXT, src_pixmap_priv->base.fbo->fb); glamor_get_drawable_deltas(dst, dst_pixmap, &dst_x_off, &dst_y_off); glamor_get_drawable_deltas(src, src_pixmap, &src_x_off, &src_y_off); dst_x_off += fbo_x_off; @@ -84,23 +81,15 @@ glamor_copy_n_to_n_fbo_blit(DrawablePtr src, for (i = 0; i < nbox; i++) { if (glamor_priv->yInverted) { - dispatch->glBlitFramebuffer((box[i].x1 + dx + - src_x_off), - (box[i].y1 + - src_y_off), - (box[i].x2 + dx + - src_x_off), - (box[i].y2 + - src_y_off), - (box[i].x1 + - dst_x_off), - (box[i].y1 + - dst_y_off), - (box[i].x2 + - dst_x_off), - (box[i].y2 + - dst_y_off), - GL_COLOR_BUFFER_BIT, GL_NEAREST); + glBlitFramebuffer(box[i].x1 + dx + src_x_off, + box[i].y1 + src_y_off, + box[i].x2 + dx + src_x_off, + box[i].y2 + src_y_off, + box[i].x1 + dst_x_off, + box[i].y1 + dst_y_off, + box[i].x2 + dst_x_off, + box[i].y2 + dst_y_off, + GL_COLOR_BUFFER_BIT, GL_NEAREST); } else { int flip_dst_y1 = @@ -112,26 +101,21 @@ glamor_copy_n_to_n_fbo_blit(DrawablePtr src, int flip_src_y2 = src_pixmap->drawable.height - (box[i].y1 + src_y_off); - dispatch->glBlitFramebuffer(box[i].x1 + dx + - src_x_off, - flip_src_y1, - box[i].x2 + dx + - src_x_off, - flip_src_y2, - box[i].x1 + - dst_x_off, - flip_dst_y1, - box[i].x2 + - dst_x_off, - flip_dst_y2, - GL_COLOR_BUFFER_BIT, GL_NEAREST); + glBlitFramebuffer(box[i].x1 + dx + src_x_off, + flip_src_y1, + box[i].x2 + dx + src_x_off, + flip_src_y2, + box[i].x1 + dst_x_off, + flip_dst_y1, + box[i].x2 + dst_x_off, + flip_dst_y2, + GL_COLOR_BUFFER_BIT, GL_NEAREST); } } - glamor_put_dispatch(glamor_priv); + glamor_put_context(glamor_priv); glamor_priv->state = BLIT_STATE; return TRUE; } -#endif static Bool glamor_copy_n_to_n_textured(DrawablePtr src, @@ -140,7 +124,6 @@ glamor_copy_n_to_n_textured(DrawablePtr src, { glamor_screen_private *glamor_priv = glamor_get_screen_private(dst->pScreen); - glamor_gl_dispatch *dispatch; PixmapPtr src_pixmap = glamor_get_drawable_pixmap(src); PixmapPtr dst_pixmap = glamor_get_drawable_pixmap(dst); int i; @@ -172,37 +155,32 @@ glamor_copy_n_to_n_textured(DrawablePtr src, glamor_get_drawable_deltas(dst, dst_pixmap, &dst_x_off, &dst_y_off); - dispatch = glamor_get_dispatch(glamor_priv); + glamor_get_context(glamor_priv); glamor_set_destination_pixmap_priv_nc(dst_pixmap_priv); - dispatch->glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, - GL_FALSE, 2 * sizeof(float), vertices); - dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_POS); + glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, + GL_FALSE, 2 * sizeof(float), vertices); + glEnableVertexAttribArray(GLAMOR_VERTEX_POS); glamor_get_drawable_deltas(src, src_pixmap, &src_x_off, &src_y_off); dx += src_x_off; dy += src_y_off; - dispatch->glActiveTexture(GL_TEXTURE0); - dispatch->glBindTexture(GL_TEXTURE_2D, src_pixmap_priv->base.fbo->tex); -#ifndef GLAMOR_GLES2 - dispatch->glEnable(GL_TEXTURE_2D); - dispatch->glTexParameteri(GL_TEXTURE_2D, - GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); - dispatch->glTexParameteri(GL_TEXTURE_2D, - GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER); -#endif - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - dispatch->glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, - GL_FLOAT, GL_FALSE, - 2 * sizeof(float), texcoords); - dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE); - dispatch->glUseProgram(glamor_priv->finish_access_prog[0]); - dispatch->glUniform1i(glamor_priv->finish_access_revert[0], REVERT_NONE); - dispatch->glUniform1i(glamor_priv->finish_access_swap_rb[0], - SWAP_NONE_UPLOADING); + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, src_pixmap_priv->base.fbo->tex); + if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) { + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER); + } + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + + glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_FLOAT, GL_FALSE, + 2 * sizeof(float), texcoords); + glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE); + glUseProgram(glamor_priv->finish_access_prog[0]); + glUniform1i(glamor_priv->finish_access_revert[0], REVERT_NONE); + glUniform1i(glamor_priv->finish_access_swap_rb[0], SWAP_NONE_UPLOADING); for (i = 0; i < nbox; i++) { @@ -222,17 +200,14 @@ glamor_copy_n_to_n_textured(DrawablePtr src, box[i].x2 + dx, box[i].y2 + dy, glamor_priv->yInverted, texcoords); - dispatch->glDrawArrays(GL_TRIANGLE_FAN, 0, 4); + glDrawArrays(GL_TRIANGLE_FAN, 0, 4); } - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); -#ifndef GLAMOR_GLES2 - dispatch->glDisable(GL_TEXTURE_2D); -#endif - dispatch->glUseProgram(0); + glDisableVertexAttribArray(GLAMOR_VERTEX_POS); + glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); + glUseProgram(0); /* The source texture is bound to a fbo, we have to flush it here. */ - glamor_put_dispatch(glamor_priv); + glamor_put_context(glamor_priv); glamor_priv->state = RENDER_STATE; glamor_priv->render_idle_cnt = 0; return TRUE; @@ -289,15 +264,14 @@ __glamor_copy_n_to_n(DrawablePtr src, box[0].x1, box[0].y1, box[0].x2 - box[0].x1, box[0].y2 - box[0].y1, dx, dy, src_pixmap, dst_pixmap); -#ifndef GLAMOR_GLES2 - if (!overlaped && + if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP && + !overlaped && (glamor_priv->state != RENDER_STATE || !src_pixmap_priv->base.gl_tex || !dst_pixmap_priv->base.gl_tex) && glamor_copy_n_to_n_fbo_blit(src, dst, gc, box, nbox, dx, dy)) { ret = TRUE; goto done; } -#endif glamor_calculate_boxes_bound(&bound, box, nbox); /* Overlaped indicate the src and dst are the same pixmap. */ @@ -364,10 +338,10 @@ _glamor_copy_n_to_n(DrawablePtr src, Bool upsidedown, Pixel bitplane, void *closure, Bool fallback) { + ScreenPtr screen = dst->pScreen; PixmapPtr dst_pixmap, src_pixmap; glamor_pixmap_private *dst_pixmap_priv, *src_pixmap_priv; glamor_screen_private *glamor_priv; - glamor_gl_dispatch *dispatch; BoxPtr extent; RegionRec region; int src_x_off, src_y_off, dst_x_off, dst_y_off; @@ -381,7 +355,7 @@ _glamor_copy_n_to_n(DrawablePtr src, src_pixmap = glamor_get_drawable_pixmap(src); src_pixmap_priv = glamor_get_pixmap_private(src_pixmap); - glamor_priv = glamor_get_screen_private(dst->pScreen); + glamor_priv = glamor_get_screen_private(screen); DEBUGF("Copy %d %d %dx%d dx %d dy %d from %p to %p \n", box[0].x1, box[0].y1, @@ -394,12 +368,12 @@ _glamor_copy_n_to_n(DrawablePtr src, if (gc) { if (!glamor_set_planemask(dst_pixmap, gc->planemask)) goto fall_back; - dispatch = glamor_get_dispatch(glamor_priv); - if (!glamor_set_alu(dispatch, gc->alu)) { - glamor_put_dispatch(glamor_priv); + glamor_get_context(glamor_priv); + if (!glamor_set_alu(screen, gc->alu)) { + glamor_put_context(glamor_priv); goto fail; } - glamor_put_dispatch(glamor_priv); + glamor_put_context(glamor_priv); } if (!src_pixmap_priv) { @@ -572,9 +546,9 @@ _glamor_copy_n_to_n(DrawablePtr src, } fail: - dispatch = glamor_get_dispatch(glamor_priv); - glamor_set_alu(dispatch, GXcopy); - glamor_put_dispatch(glamor_priv); + glamor_get_context(glamor_priv); + glamor_set_alu(screen, GXcopy); + glamor_put_context(glamor_priv); if (ok) return TRUE; diff --git a/xorg-server/glamor/glamor_core.c b/xorg-server/glamor/glamor_core.c index 4eac85603..58838095b 100644 --- a/xorg-server/glamor/glamor_core.c +++ b/xorg-server/glamor/glamor_core.c @@ -51,24 +51,23 @@ glamor_get_drawable_location(const DrawablePtr drawable) } GLint -glamor_compile_glsl_prog(glamor_gl_dispatch * dispatch, GLenum type, - const char *source) +glamor_compile_glsl_prog(GLenum type, const char *source) { GLint ok; GLint prog; - prog = dispatch->glCreateShader(type); - dispatch->glShaderSource(prog, 1, (const GLchar **) &source, NULL); - dispatch->glCompileShader(prog); - dispatch->glGetShaderiv(prog, GL_COMPILE_STATUS, &ok); + prog = glCreateShader(type); + glShaderSource(prog, 1, (const GLchar **) &source, NULL); + glCompileShader(prog); + glGetShaderiv(prog, GL_COMPILE_STATUS, &ok); if (!ok) { GLchar *info; GLint size; - dispatch->glGetShaderiv(prog, GL_INFO_LOG_LENGTH, &size); + glGetShaderiv(prog, GL_INFO_LOG_LENGTH, &size); info = malloc(size); if (info) { - dispatch->glGetShaderInfoLog(prog, size, NULL, info); + glGetShaderInfoLog(prog, size, NULL, info); ErrorF("Failed to compile %s: %s\n", type == GL_FRAGMENT_SHADER ? "FS" : "VS", info); ErrorF("Program source:\n%s", source); @@ -83,20 +82,20 @@ glamor_compile_glsl_prog(glamor_gl_dispatch * dispatch, GLenum type, } void -glamor_link_glsl_prog(glamor_gl_dispatch * dispatch, GLint prog) +glamor_link_glsl_prog(GLint prog) { GLint ok; - dispatch->glLinkProgram(prog); - dispatch->glGetProgramiv(prog, GL_LINK_STATUS, &ok); + glLinkProgram(prog); + glGetProgramiv(prog, GL_LINK_STATUS, &ok); if (!ok) { GLchar *info; GLint size; - dispatch->glGetProgramiv(prog, GL_INFO_LOG_LENGTH, &size); + glGetProgramiv(prog, GL_INFO_LOG_LENGTH, &size); info = malloc(size); - dispatch->glGetProgramInfoLog(prog, size, NULL, info); + glGetProgramInfoLog(prog, size, NULL, info); ErrorF("Failed to link: %s\n", info); FatalError("GLSL link failure\n"); } @@ -143,7 +142,6 @@ void glamor_init_finish_access_shaders(ScreenPtr screen) { glamor_screen_private *glamor_priv; - glamor_gl_dispatch *dispatch; const char *vs_source = "attribute vec4 v_position;\n" "attribute vec4 v_texcoord0;\n" @@ -217,86 +215,78 @@ glamor_init_finish_access_shaders(ScreenPtr screen) char *source; glamor_priv = glamor_get_screen_private(screen); - dispatch = glamor_get_dispatch(glamor_priv); - glamor_priv->finish_access_prog[0] = dispatch->glCreateProgram(); - glamor_priv->finish_access_prog[1] = dispatch->glCreateProgram(); + glamor_get_context(glamor_priv); + glamor_priv->finish_access_prog[0] = glCreateProgram(); + glamor_priv->finish_access_prog[1] = glCreateProgram(); - vs_prog = glamor_compile_glsl_prog(dispatch, GL_VERTEX_SHADER, vs_source); + vs_prog = glamor_compile_glsl_prog(GL_VERTEX_SHADER, vs_source); XNFasprintf(&source, "%s%s", common_source, fs_source); - fs_prog = glamor_compile_glsl_prog(dispatch, GL_FRAGMENT_SHADER, source); + fs_prog = glamor_compile_glsl_prog(GL_FRAGMENT_SHADER, source); free(source); - dispatch->glAttachShader(glamor_priv->finish_access_prog[0], vs_prog); - dispatch->glAttachShader(glamor_priv->finish_access_prog[0], fs_prog); + glAttachShader(glamor_priv->finish_access_prog[0], vs_prog); + glAttachShader(glamor_priv->finish_access_prog[0], fs_prog); - avs_prog = glamor_compile_glsl_prog(dispatch, GL_VERTEX_SHADER, vs_source); + avs_prog = glamor_compile_glsl_prog(GL_VERTEX_SHADER, vs_source); XNFasprintf(&source, "%s%s", common_source, set_alpha_source); - set_alpha_prog = glamor_compile_glsl_prog(dispatch, GL_FRAGMENT_SHADER, + set_alpha_prog = glamor_compile_glsl_prog(GL_FRAGMENT_SHADER, source); free(source); - dispatch->glAttachShader(glamor_priv->finish_access_prog[1], avs_prog); - dispatch->glAttachShader(glamor_priv->finish_access_prog[1], - set_alpha_prog); + glAttachShader(glamor_priv->finish_access_prog[1], avs_prog); + glAttachShader(glamor_priv->finish_access_prog[1], set_alpha_prog); - dispatch->glBindAttribLocation(glamor_priv->finish_access_prog[0], - GLAMOR_VERTEX_POS, "v_position"); - dispatch->glBindAttribLocation(glamor_priv->finish_access_prog[0], - GLAMOR_VERTEX_SOURCE, "v_texcoord0"); - glamor_link_glsl_prog(dispatch, glamor_priv->finish_access_prog[0]); + glBindAttribLocation(glamor_priv->finish_access_prog[0], + GLAMOR_VERTEX_POS, "v_position"); + glBindAttribLocation(glamor_priv->finish_access_prog[0], + GLAMOR_VERTEX_SOURCE, "v_texcoord0"); + glamor_link_glsl_prog(glamor_priv->finish_access_prog[0]); - dispatch->glBindAttribLocation(glamor_priv->finish_access_prog[1], - GLAMOR_VERTEX_POS, "v_position"); - dispatch->glBindAttribLocation(glamor_priv->finish_access_prog[1], - GLAMOR_VERTEX_SOURCE, "v_texcoord0"); - glamor_link_glsl_prog(dispatch, glamor_priv->finish_access_prog[1]); + glBindAttribLocation(glamor_priv->finish_access_prog[1], + GLAMOR_VERTEX_POS, "v_position"); + glBindAttribLocation(glamor_priv->finish_access_prog[1], + GLAMOR_VERTEX_SOURCE, "v_texcoord0"); + glamor_link_glsl_prog(glamor_priv->finish_access_prog[1]); glamor_priv->finish_access_revert[0] = - dispatch->glGetUniformLocation(glamor_priv->finish_access_prog[0], - "revert"); + glGetUniformLocation(glamor_priv->finish_access_prog[0], "revert"); glamor_priv->finish_access_swap_rb[0] = - dispatch->glGetUniformLocation(glamor_priv->finish_access_prog[0], - "swap_rb"); + glGetUniformLocation(glamor_priv->finish_access_prog[0], "swap_rb"); sampler_uniform_location = - dispatch->glGetUniformLocation(glamor_priv->finish_access_prog[0], - "sampler"); - dispatch->glUseProgram(glamor_priv->finish_access_prog[0]); - dispatch->glUniform1i(sampler_uniform_location, 0); - dispatch->glUniform1i(glamor_priv->finish_access_revert[0], 0); - dispatch->glUniform1i(glamor_priv->finish_access_swap_rb[0], 0); - dispatch->glUseProgram(0); + glGetUniformLocation(glamor_priv->finish_access_prog[0], "sampler"); + glUseProgram(glamor_priv->finish_access_prog[0]); + glUniform1i(sampler_uniform_location, 0); + glUniform1i(glamor_priv->finish_access_revert[0], 0); + glUniform1i(glamor_priv->finish_access_swap_rb[0], 0); + glUseProgram(0); glamor_priv->finish_access_revert[1] = - dispatch->glGetUniformLocation(glamor_priv->finish_access_prog[1], - "revert"); + glGetUniformLocation(glamor_priv->finish_access_prog[1], "revert"); glamor_priv->finish_access_swap_rb[1] = - dispatch->glGetUniformLocation(glamor_priv->finish_access_prog[1], - "swap_rb"); + glGetUniformLocation(glamor_priv->finish_access_prog[1], "swap_rb"); sampler_uniform_location = - dispatch->glGetUniformLocation(glamor_priv->finish_access_prog[1], - "sampler"); - dispatch->glUseProgram(glamor_priv->finish_access_prog[1]); - dispatch->glUniform1i(glamor_priv->finish_access_revert[1], 0); - dispatch->glUniform1i(sampler_uniform_location, 0); - dispatch->glUniform1i(glamor_priv->finish_access_swap_rb[1], 0); - dispatch->glUseProgram(0); - glamor_put_dispatch(glamor_priv); + glGetUniformLocation(glamor_priv->finish_access_prog[1], "sampler"); + glUseProgram(glamor_priv->finish_access_prog[1]); + glUniform1i(glamor_priv->finish_access_revert[1], 0); + glUniform1i(sampler_uniform_location, 0); + glUniform1i(glamor_priv->finish_access_swap_rb[1], 0); + glUseProgram(0); + glamor_put_context(glamor_priv); } void glamor_fini_finish_access_shaders(ScreenPtr screen) { glamor_screen_private *glamor_priv; - glamor_gl_dispatch *dispatch; glamor_priv = glamor_get_screen_private(screen); - dispatch = glamor_get_dispatch(glamor_priv); - dispatch->glDeleteProgram(glamor_priv->finish_access_prog[0]); - dispatch->glDeleteProgram(glamor_priv->finish_access_prog[1]); - glamor_put_dispatch(glamor_priv); + glamor_get_context(glamor_priv); + glDeleteProgram(glamor_priv->finish_access_prog[0]); + glDeleteProgram(glamor_priv->finish_access_prog[1]); + glamor_put_context(glamor_priv); } void @@ -315,15 +305,13 @@ glamor_finish_access(DrawablePtr drawable, glamor_access_t access_mode) } if (pixmap_priv->base.fbo->pbo != 0 && pixmap_priv->base.fbo->pbo_valid) { - glamor_gl_dispatch *dispatch; - assert(glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP); - dispatch = glamor_get_dispatch(glamor_priv); - dispatch->glBindBuffer(GL_PIXEL_PACK_BUFFER, 0); - dispatch->glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); - dispatch->glDeleteBuffers(1, &pixmap_priv->base.fbo->pbo); - glamor_put_dispatch(glamor_priv); + glamor_get_context(glamor_priv); + glBindBuffer(GL_PIXEL_PACK_BUFFER, 0); + glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); + glDeleteBuffers(1, &pixmap_priv->base.fbo->pbo); + glamor_put_context(glamor_priv); pixmap_priv->base.fbo->pbo_valid = FALSE; pixmap_priv->base.fbo->pbo = 0; diff --git a/xorg-server/glamor/glamor_egl.c b/xorg-server/glamor/glamor_egl.c index 2f97a839b..9dcba71ce 100644 --- a/xorg-server/glamor/glamor_egl.c +++ b/xorg-server/glamor/glamor_egl.c @@ -37,8 +37,6 @@ #include <errno.h> #include <xf86.h> #include <xf86drm.h> -#define GL_GLEXT_PROTOTYPES -#define EGL_EGLEXT_PROTOTYPES #define EGL_DISPLAY_NO_X_MESA #ifdef GLAMOR_HAS_GBM @@ -46,19 +44,12 @@ #include <drm_fourcc.h> #endif -#if GLAMOR_GLES2 -#include <GLES2/gl2.h> -#include <GLES2/gl2ext.h> -#else -#include <GL/gl.h> -#endif - #define MESA_EGL_NO_X11_HEADERS -#include <EGL/egl.h> -#include <EGL/eglext.h> +#include <epoxy/gl.h> +#include <epoxy/egl.h> #include "glamor.h" -#include "glamor_gl_dispatch.h" +#include "glamor_priv.h" static const char glamor_name[] = "glamor"; @@ -91,16 +82,13 @@ struct glamor_egl_screen_private { int gl_context_depth; int dri3_capable; - PFNEGLCREATEIMAGEKHRPROC egl_create_image_khr; - PFNEGLDESTROYIMAGEKHRPROC egl_destroy_image_khr; - PFNGLEGLIMAGETARGETTEXTURE2DOESPROC egl_image_target_texture2d_oes; - struct glamor_gl_dispatch *dispatch; CloseScreenProcPtr saved_close_screen; xf86FreeScreenProc *saved_free_screen; }; int xf86GlamorEGLPrivateIndex = -1; + static struct glamor_egl_screen_private * glamor_egl_get_screen_private(ScrnInfoPtr scrn) { @@ -108,38 +96,30 @@ glamor_egl_get_screen_private(ScrnInfoPtr scrn) scrn->privates[xf86GlamorEGLPrivateIndex].ptr; } -_X_EXPORT void -glamor_egl_make_current(ScreenPtr screen) +static void +glamor_egl_get_context(struct glamor_context *glamor_ctx) { - ScrnInfoPtr scrn = xf86ScreenToScrn(screen); - struct glamor_egl_screen_private *glamor_egl = - glamor_egl_get_screen_private(scrn); - - if (glamor_egl->gl_context_depth++) + if (glamor_ctx->get_count++) return; - if (glamor_egl->context != eglGetCurrentContext()) { - eglMakeCurrent(glamor_egl->display, EGL_NO_SURFACE, + if (glamor_ctx->ctx != eglGetCurrentContext()) { + eglMakeCurrent(glamor_ctx->display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); - if (!eglMakeCurrent(glamor_egl->display, + if (!eglMakeCurrent(glamor_ctx->display, EGL_NO_SURFACE, EGL_NO_SURFACE, - glamor_egl->context)) { + glamor_ctx->ctx)) { FatalError("Failed to make EGL context current\n"); } } } -_X_EXPORT void -glamor_egl_restore_context(ScreenPtr screen) +static void +glamor_egl_put_context(struct glamor_context *glamor_ctx) { - ScrnInfoPtr scrn = xf86ScreenToScrn(screen); - struct glamor_egl_screen_private *glamor_egl = - glamor_egl_get_screen_private(scrn); - - if (--glamor_egl->gl_context_depth) + if (--glamor_ctx->get_count) return; - eglMakeCurrent(glamor_egl->display, EGL_NO_SURFACE, + eglMakeCurrent(glamor_ctx->display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); } @@ -164,11 +144,11 @@ _glamor_egl_create_image(struct glamor_egl_screen_private *glamor_egl, attribs[5] = stride; if (depth != 32 && depth != 24) return EGL_NO_IMAGE_KHR; - image = glamor_egl->egl_create_image_khr(glamor_egl->display, - glamor_egl->context, - EGL_DRM_BUFFER_MESA, - (void *) (uintptr_t) name, - attribs); + image = eglCreateImageKHR(glamor_egl->display, + glamor_egl->context, + EGL_DRM_BUFFER_MESA, + (void *) (uintptr_t) name, + attribs); if (image == EGL_NO_IMAGE_KHR) return EGL_NO_IMAGE_KHR; @@ -192,15 +172,13 @@ glamor_create_texture_from_image(struct glamor_egl_screen_private *glamor_egl, EGLImageKHR image, GLuint * texture) { - glamor_egl->dispatch->glGenTextures(1, texture); - glamor_egl->dispatch->glBindTexture(GL_TEXTURE_2D, *texture); - glamor_egl->dispatch->glTexParameteri(GL_TEXTURE_2D, - GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glamor_egl->dispatch->glTexParameteri(GL_TEXTURE_2D, - GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - (glamor_egl->egl_image_target_texture2d_oes) (GL_TEXTURE_2D, image); - glamor_egl->dispatch->glBindTexture(GL_TEXTURE_2D, 0); + glGenTextures(1, texture); + glBindTexture(GL_TEXTURE_2D, *texture); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + + glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, image); + glBindTexture(GL_TEXTURE_2D, 0); return TRUE; } @@ -212,7 +190,7 @@ glamor_egl_create_argb8888_based_texture(ScreenPtr screen, int w, int h) EGLImageKHR image; GLuint texture; -#ifdef GLAMOR_HAS_DRI3_SUPPORT +#ifdef GLAMOR_HAS_GBM struct gbm_bo *bo; EGLNativePixmapType native_pixmap; @@ -228,15 +206,15 @@ glamor_egl_create_argb8888_based_texture(ScreenPtr screen, int w, int h) * compile with dri3 support enabled */ native_pixmap = bo; - image = glamor_egl->egl_create_image_khr(glamor_egl->display, - EGL_NO_CONTEXT, - EGL_NATIVE_PIXMAP_KHR, - native_pixmap, NULL); + image = eglCreateImageKHR(glamor_egl->display, + EGL_NO_CONTEXT, + EGL_NATIVE_PIXMAP_KHR, + native_pixmap, NULL); gbm_bo_destroy(bo); if (image == EGL_NO_IMAGE_KHR) return 0; glamor_create_texture_from_image(glamor_egl, image, &texture); - glamor_egl->egl_destroy_image_khr(glamor_egl->display, image); + eglDestroyImageKHR(glamor_egl->display, image); return texture; #else @@ -300,6 +278,8 @@ glamor_egl_create_textured_pixmap(PixmapPtr pixmap, int handle, int stride) { ScreenPtr screen = pixmap->drawable.pScreen; ScrnInfoPtr scrn = xf86ScreenToScrn(screen); + struct glamor_screen_private *glamor_priv = + glamor_get_screen_private(screen); struct glamor_egl_screen_private *glamor_egl; EGLImageKHR image; GLuint texture; @@ -308,7 +288,7 @@ glamor_egl_create_textured_pixmap(PixmapPtr pixmap, int handle, int stride) glamor_egl = glamor_egl_get_screen_private(scrn); - glamor_egl_make_current(screen); + glamor_get_context(glamor_priv); if (glamor_egl->has_gem) { if (!glamor_get_flink_name(glamor_egl->fd, handle, &name)) { xf86DrvMsg(scrn->scrnIndex, X_ERROR, @@ -338,7 +318,7 @@ glamor_egl_create_textured_pixmap(PixmapPtr pixmap, int handle, int stride) ret = TRUE; done: - glamor_egl_restore_context(screen); + glamor_put_context(glamor_priv); return ret; } @@ -347,6 +327,8 @@ glamor_egl_create_textured_pixmap_from_gbm_bo(PixmapPtr pixmap, void *bo) { ScreenPtr screen = pixmap->drawable.pScreen; ScrnInfoPtr scrn = xf86ScreenToScrn(screen); + struct glamor_screen_private *glamor_priv = + glamor_get_screen_private(screen); struct glamor_egl_screen_private *glamor_egl; EGLImageKHR image; GLuint texture; @@ -354,11 +336,11 @@ glamor_egl_create_textured_pixmap_from_gbm_bo(PixmapPtr pixmap, void *bo) glamor_egl = glamor_egl_get_screen_private(scrn); - glamor_egl_make_current(screen); + glamor_get_context(glamor_priv); - image = glamor_egl->egl_create_image_khr(glamor_egl->display, - glamor_egl->context, - EGL_NATIVE_PIXMAP_KHR, bo, NULL); + image = eglCreateImageKHR(glamor_egl->display, + glamor_egl->context, + EGL_NATIVE_PIXMAP_KHR, bo, NULL); if (image == EGL_NO_IMAGE_KHR) { glamor_set_pixmap_type(pixmap, GLAMOR_DRM_ONLY); goto done; @@ -370,11 +352,11 @@ glamor_egl_create_textured_pixmap_from_gbm_bo(PixmapPtr pixmap, void *bo) ret = TRUE; done: - glamor_egl_restore_context(screen); + glamor_put_context(glamor_priv); return ret; } -#ifdef GLAMOR_HAS_DRI3_SUPPORT +#ifdef GLAMOR_HAS_GBM int glamor_get_fd_from_bo(int gbm_fd, struct gbm_bo *bo, int *fd); void glamor_get_name_from_bo(int gbm_fd, struct gbm_bo *bo, int *name); int @@ -409,8 +391,10 @@ glamor_egl_dri3_fd_name_from_tex(ScreenPtr screen, unsigned int tex, Bool want_name, CARD16 *stride, CARD32 *size) { -#ifdef GLAMOR_HAS_DRI3_SUPPORT +#ifdef GLAMOR_HAS_GBM ScrnInfoPtr scrn = xf86ScreenToScrn(screen); + struct glamor_screen_private *glamor_priv = + glamor_get_screen_private(screen); struct glamor_egl_screen_private *glamor_egl; EGLImageKHR image; struct gbm_bo *bo; @@ -424,17 +408,17 @@ glamor_egl_dri3_fd_name_from_tex(ScreenPtr screen, glamor_egl = glamor_egl_get_screen_private(scrn); - glamor_egl_make_current(screen); + glamor_get_context(glamor_priv); image = dixLookupPrivate(&pixmap->devPrivates, glamor_egl_pixmap_private_key); if (image == EGL_NO_IMAGE_KHR || image == NULL) { - image = glamor_egl->egl_create_image_khr(glamor_egl->display, - glamor_egl->context, - EGL_GL_TEXTURE_2D_KHR, - (EGLClientBuffer) (uintptr_t) - tex, attribs); + image = eglCreateImageKHR(glamor_egl->display, + glamor_egl->context, + EGL_GL_TEXTURE_2D_KHR, + (EGLClientBuffer) (uintptr_t) + tex, attribs); if (image == EGL_NO_IMAGE_KHR) goto failure; @@ -462,7 +446,7 @@ glamor_egl_dri3_fd_name_from_tex(ScreenPtr screen, gbm_bo_destroy(bo); failure: - glamor_egl_restore_context(screen); + glamor_put_context(glamor_priv); return fd; #else return -1; @@ -476,7 +460,7 @@ glamor_egl_dri3_pixmap_from_fd(ScreenPtr screen, CARD16 height, CARD16 stride, CARD8 depth, CARD8 bpp) { -#ifdef GLAMOR_HAS_DRI3_SUPPORT +#ifdef GLAMOR_HAS_GBM ScrnInfoPtr scrn = xf86ScreenToScrn(screen); struct glamor_egl_screen_private *glamor_egl; struct gbm_bo *bo; @@ -506,10 +490,10 @@ glamor_egl_dri3_pixmap_from_fd(ScreenPtr screen, attribs[3] = height; attribs[7] = fd; attribs[11] = stride; - image = glamor_egl->egl_create_image_khr(glamor_egl->display, - EGL_NO_CONTEXT, - EGL_LINUX_DMA_BUF_EXT, - NULL, attribs); + image = eglCreateImageKHR(glamor_egl->display, + EGL_NO_CONTEXT, + EGL_LINUX_DMA_BUF_EXT, + NULL, attribs); if (image == EGL_NO_IMAGE_KHR) return NULL; @@ -518,7 +502,7 @@ glamor_egl_dri3_pixmap_from_fd(ScreenPtr screen, * usage of the image. Use gbm_bo to bypass the limitations. */ bo = gbm_bo_import(glamor_egl->gbm, GBM_BO_IMPORT_EGL_IMAGE, image, 0); - glamor_egl->egl_destroy_image_khr(glamor_egl->display, image); + eglDestroyImageKHR(glamor_egl->display, image); if (!bo) return NULL; @@ -555,7 +539,7 @@ _glamor_egl_destroy_pixmap_image(PixmapPtr pixmap) * a texture. we must call glFlush to make sure the * operation on that texture has been done.*/ glamor_block_handler(pixmap->drawable.pScreen); - glamor_egl->egl_destroy_image_khr(glamor_egl->display, image); + eglDestroyImageKHR(glamor_egl->display, image); dixSetPrivate(&pixmap->devPrivates, glamor_egl_pixmap_private_key, NULL); } @@ -605,8 +589,7 @@ glamor_egl_close_screen(ScreenPtr screen) glamor_egl = glamor_egl_get_screen_private(scrn); screen_pixmap = screen->GetScreenPixmap(screen); - glamor_egl->egl_destroy_image_khr(glamor_egl->display, - glamor_egl->front_image); + eglDestroyImageKHR(glamor_egl->display,glamor_egl->front_image); dixSetPrivate(&screen_pixmap->devPrivates, glamor_egl_pixmap_private_key, NULL); glamor_egl->front_image = NULL; @@ -614,7 +597,7 @@ glamor_egl_close_screen(ScreenPtr screen) back_image = dixLookupPrivate(&(*glamor_egl->back_pixmap)->devPrivates, glamor_egl_pixmap_private_key); if (back_image != NULL && back_image != EGL_NO_IMAGE_KHR) { - glamor_egl->egl_destroy_image_khr(glamor_egl->display, back_image); + eglDestroyImageKHR(glamor_egl->display, back_image); dixSetPrivate(&(*glamor_egl->back_pixmap)->devPrivates, glamor_egl_pixmap_private_key, NULL); } @@ -645,7 +628,7 @@ glamor_egl_has_extension(struct glamor_egl_screen_private *glamor_egl, } void -glamor_egl_screen_init(ScreenPtr screen) +glamor_egl_screen_init(ScreenPtr screen, struct glamor_context *glamor_ctx) { ScrnInfoPtr scrn = xf86ScreenToScrn(screen); struct glamor_egl_screen_private *glamor_egl = @@ -653,6 +636,12 @@ glamor_egl_screen_init(ScreenPtr screen) glamor_egl->saved_close_screen = screen->CloseScreen; screen->CloseScreen = glamor_egl_close_screen; + + glamor_ctx->ctx = glamor_egl->context; + glamor_ctx->display = glamor_egl->display; + + glamor_ctx->get_context = glamor_egl_get_context; + glamor_ctx->put_context = glamor_egl_put_context; } static void @@ -746,26 +735,11 @@ glamor_egl_init(ScrnInfoPtr scrn, int fd) KHR_surfaceless_opengl); #endif -#ifdef GLAMOR_HAS_DRI3_SUPPORT +#ifdef GLAMOR_HAS_GBM if (glamor_egl_has_extension(glamor_egl, "EGL_KHR_gl_texture_2D_image") && glamor_egl_has_extension(glamor_egl, "EGL_EXT_image_dma_buf_import")) glamor_egl->dri3_capable = TRUE; #endif - glamor_egl->egl_create_image_khr = (PFNEGLCREATEIMAGEKHRPROC) - eglGetProcAddress("eglCreateImageKHR"); - - glamor_egl->egl_destroy_image_khr = (PFNEGLDESTROYIMAGEKHRPROC) - eglGetProcAddress("eglDestroyImageKHR"); - - glamor_egl->egl_image_target_texture2d_oes = - (PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) - eglGetProcAddress("glEGLImageTargetTexture2DOES"); - - if (!glamor_egl->egl_create_image_khr - || !glamor_egl->egl_image_target_texture2d_oes) { - xf86DrvMsg(scrn->scrnIndex, X_ERROR, "eglGetProcAddress() failed\n"); - return FALSE; - } glamor_egl->context = eglCreateContext(glamor_egl->display, NULL, EGL_NO_CONTEXT, @@ -809,17 +783,3 @@ glamor_egl_init_textured_pixmap(ScreenPtr screen) glamor_enable_dri3(screen); return TRUE; } - -Bool -glamor_gl_dispatch_init(ScreenPtr screen, - struct glamor_gl_dispatch *dispatch, int gl_version) -{ - ScrnInfoPtr scrn = xf86ScreenToScrn(screen); - struct glamor_egl_screen_private *glamor_egl = - glamor_egl_get_screen_private(scrn); - if (!glamor_gl_dispatch_init_impl - (dispatch, gl_version, (get_proc_address_t) eglGetProcAddress)) - return FALSE; - glamor_egl->dispatch = dispatch; - return TRUE; -} diff --git a/xorg-server/glamor/glamor_egl_stubs.c b/xorg-server/glamor/glamor_egl_stubs.c index 1449d0874..4fd9e8016 100644 --- a/xorg-server/glamor/glamor_egl_stubs.c +++ b/xorg-server/glamor/glamor_egl_stubs.c @@ -29,7 +29,7 @@ #include "glamor_priv.h" void -glamor_egl_screen_init(ScreenPtr screen) +glamor_egl_screen_init(ScreenPtr screen, struct glamor_context *glamor_ctx) { } @@ -38,16 +38,6 @@ glamor_egl_destroy_textured_pixmap(PixmapPtr pixmap) { } -void -glamor_egl_make_current(ScreenPtr screen) -{ -} - -void -glamor_egl_restore_context(ScreenPtr screen) -{ -} - int glamor_egl_dri3_fd_name_from_tex(ScreenPtr screen, PixmapPtr pixmap, diff --git a/xorg-server/glamor/glamor_fbo.c b/xorg-server/glamor/glamor_fbo.c index d94e53071..281cf830e 100644 --- a/xorg-server/glamor/glamor_fbo.c +++ b/xorg-server/glamor/glamor_fbo.c @@ -129,15 +129,15 @@ glamor_pixmap_fbo_cache_get(glamor_screen_private *glamor_priv, void glamor_purge_fbo(glamor_pixmap_fbo *fbo) { - glamor_gl_dispatch *dispatch = glamor_get_dispatch(fbo->glamor_priv); + glamor_get_context(fbo->glamor_priv); if (fbo->fb) - dispatch->glDeleteFramebuffers(1, &fbo->fb); + glDeleteFramebuffers(1, &fbo->fb); if (fbo->tex) - dispatch->glDeleteTextures(1, &fbo->tex); + glDeleteTextures(1, &fbo->tex); if (fbo->pbo) - dispatch->glDeleteBuffers(1, &fbo->pbo); - glamor_put_dispatch(fbo->glamor_priv); + glDeleteBuffers(1, &fbo->pbo); + glamor_put_context(fbo->glamor_priv); free(fbo); } @@ -178,19 +178,17 @@ glamor_pixmap_fbo_cache_put(glamor_pixmap_fbo *fbo) static void glamor_pixmap_ensure_fb(glamor_pixmap_fbo *fbo) { - glamor_gl_dispatch *dispatch; int status; - dispatch = glamor_get_dispatch(fbo->glamor_priv); + glamor_get_context(fbo->glamor_priv); if (fbo->fb == 0) - dispatch->glGenFramebuffers(1, &fbo->fb); + glGenFramebuffers(1, &fbo->fb); assert(fbo->tex != 0); - dispatch->glBindFramebuffer(GL_FRAMEBUFFER, fbo->fb); - dispatch->glFramebufferTexture2D(GL_FRAMEBUFFER, - GL_COLOR_ATTACHMENT0, - GL_TEXTURE_2D, fbo->tex, 0); - status = dispatch->glCheckFramebufferStatus(GL_FRAMEBUFFER); + glBindFramebuffer(GL_FRAMEBUFFER, fbo->fb); + glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, + GL_TEXTURE_2D, fbo->tex, 0); + status = glCheckFramebufferStatus(GL_FRAMEBUFFER); if (status != GL_FRAMEBUFFER_COMPLETE) { const char *str; @@ -221,7 +219,7 @@ glamor_pixmap_ensure_fb(glamor_pixmap_fbo *fbo) FatalError("destination is framebuffer incomplete: %s [%x]\n", str, status); } - glamor_put_dispatch(fbo->glamor_priv); + glamor_put_context(fbo->glamor_priv); } glamor_pixmap_fbo * @@ -243,11 +241,9 @@ glamor_create_fbo_from_tex(glamor_screen_private *glamor_priv, fbo->glamor_priv = glamor_priv; if (flag == GLAMOR_CREATE_PIXMAP_MAP) { - glamor_gl_dispatch *dispatch; - - dispatch = glamor_get_dispatch(glamor_priv); - dispatch->glGenBuffers(1, &fbo->pbo); - glamor_put_dispatch(glamor_priv); + glamor_get_context(glamor_priv); + glGenBuffers(1, &fbo->pbo); + glamor_put_context(glamor_priv); goto done; } @@ -334,7 +330,6 @@ static int _glamor_create_tex(glamor_screen_private *glamor_priv, int w, int h, GLenum format) { - glamor_gl_dispatch *dispatch; unsigned int tex = 0; /* With dri3, we want to allocate ARGB8888 pixmaps only. @@ -346,16 +341,14 @@ _glamor_create_tex(glamor_screen_private *glamor_priv, w, h); } if (!tex) { - dispatch = glamor_get_dispatch(glamor_priv); - dispatch->glGenTextures(1, &tex); - dispatch->glBindTexture(GL_TEXTURE_2D, tex); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_NEAREST); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, - GL_NEAREST); - dispatch->glTexImage2D(GL_TEXTURE_2D, 0, format, w, h, 0, - format, GL_UNSIGNED_BYTE, NULL); - glamor_put_dispatch(glamor_priv); + glamor_get_context(glamor_priv); + glGenTextures(1, &tex); + glBindTexture(GL_TEXTURE_2D, tex); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexImage2D(GL_TEXTURE_2D, 0, format, w, h, 0, + format, GL_UNSIGNED_BYTE, NULL); + glamor_put_context(glamor_priv); } return tex; } diff --git a/xorg-server/glamor/glamor_fill.c b/xorg-server/glamor/glamor_fill.c index d59e6204f..dda55eace 100644 --- a/xorg-server/glamor/glamor_fill.c +++ b/xorg-server/glamor/glamor_fill.c @@ -137,7 +137,6 @@ void glamor_init_solid_shader(ScreenPtr screen) { glamor_screen_private *glamor_priv; - glamor_gl_dispatch *dispatch; const char *solid_vs = "attribute vec4 v_position;" "void main()\n" @@ -154,32 +153,31 @@ glamor_init_solid_shader(ScreenPtr screen) GLint fs_prog, vs_prog; glamor_priv = glamor_get_screen_private(screen); - dispatch = glamor_get_dispatch(glamor_priv); - glamor_priv->solid_prog = dispatch->glCreateProgram(); - vs_prog = glamor_compile_glsl_prog(dispatch, GL_VERTEX_SHADER, solid_vs); - fs_prog = glamor_compile_glsl_prog(dispatch, GL_FRAGMENT_SHADER, solid_fs); - dispatch->glAttachShader(glamor_priv->solid_prog, vs_prog); - dispatch->glAttachShader(glamor_priv->solid_prog, fs_prog); + glamor_get_context(glamor_priv); + glamor_priv->solid_prog = glCreateProgram(); + vs_prog = glamor_compile_glsl_prog(GL_VERTEX_SHADER, solid_vs); + fs_prog = glamor_compile_glsl_prog(GL_FRAGMENT_SHADER, solid_fs); + glAttachShader(glamor_priv->solid_prog, vs_prog); + glAttachShader(glamor_priv->solid_prog, fs_prog); - dispatch->glBindAttribLocation(glamor_priv->solid_prog, - GLAMOR_VERTEX_POS, "v_position"); - glamor_link_glsl_prog(dispatch, glamor_priv->solid_prog); + glBindAttribLocation(glamor_priv->solid_prog, + GLAMOR_VERTEX_POS, "v_position"); + glamor_link_glsl_prog(glamor_priv->solid_prog); glamor_priv->solid_color_uniform_location = - dispatch->glGetUniformLocation(glamor_priv->solid_prog, "color"); - glamor_put_dispatch(glamor_priv); + glGetUniformLocation(glamor_priv->solid_prog, "color"); + glamor_put_context(glamor_priv); } void glamor_fini_solid_shader(ScreenPtr screen) { glamor_screen_private *glamor_priv; - glamor_gl_dispatch *dispatch; glamor_priv = glamor_get_screen_private(screen); - dispatch = glamor_get_dispatch(glamor_priv); - dispatch->glDeleteProgram(glamor_priv->solid_prog); - glamor_put_dispatch(glamor_priv); + glamor_get_context(glamor_priv); + glDeleteProgram(glamor_priv->solid_prog); + glamor_put_context(glamor_priv); } static void @@ -188,7 +186,6 @@ _glamor_solid_boxes(PixmapPtr pixmap, BoxPtr box, int nbox, float *color) ScreenPtr screen = pixmap->drawable.pScreen; glamor_screen_private *glamor_priv = glamor_get_screen_private(screen); glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(pixmap); - glamor_gl_dispatch *dispatch; GLfloat xscale, yscale; float vertices[32]; float *pvertices = vertices; @@ -196,10 +193,10 @@ _glamor_solid_boxes(PixmapPtr pixmap, BoxPtr box, int nbox, float *color) glamor_set_destination_pixmap_priv_nc(pixmap_priv); - dispatch = glamor_get_dispatch(glamor_priv); - dispatch->glUseProgram(glamor_priv->solid_prog); + glamor_get_context(glamor_priv); + glUseProgram(glamor_priv->solid_prog); - dispatch->glUniform4fv(glamor_priv->solid_color_uniform_location, 1, color); + glUniform4fv(glamor_priv->solid_color_uniform_location, 1, color); pixmap_priv_get_dest_scale(pixmap_priv, &xscale, &yscale); @@ -221,11 +218,11 @@ _glamor_solid_boxes(PixmapPtr pixmap, BoxPtr box, int nbox, float *color) } if (_X_UNLIKELY(nbox > 1)) - dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, glamor_priv->ebo); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, glamor_priv->ebo); - dispatch->glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, - GL_FALSE, 2 * sizeof(float), pvertices); - dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_POS); + glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, + GL_FALSE, 2 * sizeof(float), pvertices); + glEnableVertexAttribArray(GLAMOR_VERTEX_POS); while (nbox) { int box_cnt, i; @@ -242,17 +239,16 @@ _glamor_solid_boxes(PixmapPtr pixmap, BoxPtr box, int nbox, float *color) valid_vertices += 4 * 2; } if (box_cnt == 1) - dispatch->glDrawArrays(GL_TRIANGLE_FAN, 0, box_cnt * 4); - else -#ifndef GLAMOR_GLES2 - dispatch->glDrawRangeElements(GL_TRIANGLES, - 0, - box_cnt * 4, - box_cnt * 6, GL_UNSIGNED_SHORT, NULL); -#else - dispatch->glDrawElements(GL_TRIANGLES, - box_cnt * 6, GL_UNSIGNED_SHORT, NULL); -#endif + glDrawArrays(GL_TRIANGLE_FAN, 0, box_cnt * 4); + else { + if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) { + glDrawRangeElements(GL_TRIANGLES, 0, box_cnt * 4, box_cnt * 6, + GL_UNSIGNED_SHORT, NULL); + } else { + glDrawElements(GL_TRIANGLES, box_cnt * 6, GL_UNSIGNED_SHORT, + NULL); + } + } nbox -= box_cnt; box += box_cnt; } @@ -260,9 +256,9 @@ _glamor_solid_boxes(PixmapPtr pixmap, BoxPtr box, int nbox, float *color) if (pvertices != vertices) free(pvertices); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS); - dispatch->glUseProgram(0); - glamor_put_dispatch(glamor_priv); + glDisableVertexAttribArray(GLAMOR_VERTEX_POS); + glUseProgram(0); + glamor_put_context(glamor_priv); glamor_priv->state = RENDER_STATE; glamor_priv->render_idle_cnt = 0; } @@ -321,7 +317,6 @@ glamor_solid(PixmapPtr pixmap, int x, int y, int width, int height, ScreenPtr screen = pixmap->drawable.pScreen; glamor_screen_private *glamor_priv = glamor_get_screen_private(screen); glamor_pixmap_private *pixmap_priv; - glamor_gl_dispatch *dispatch; BoxRec box; pixmap_priv = glamor_get_pixmap_private(pixmap); @@ -334,13 +329,13 @@ glamor_solid(PixmapPtr pixmap, int x, int y, int width, int height, return FALSE; } - dispatch = glamor_get_dispatch(glamor_priv); - if (!glamor_set_alu(dispatch, alu)) { + glamor_get_context(glamor_priv); + if (!glamor_set_alu(screen, alu)) { if (alu == GXclear) fg_pixel = 0; else { glamor_fallback("unsupported alu %x\n", alu); - glamor_put_dispatch(glamor_priv); + glamor_put_context(glamor_priv); return FALSE; } } @@ -350,8 +345,8 @@ glamor_solid(PixmapPtr pixmap, int x, int y, int width, int height, box.y2 = y + height; glamor_solid_boxes(pixmap, &box, 1, fg_pixel); - glamor_set_alu(dispatch, GXcopy); - glamor_put_dispatch(glamor_priv); + glamor_set_alu(screen, GXcopy); + glamor_put_context(glamor_priv); return TRUE; } diff --git a/xorg-server/glamor/glamor_gl_dispatch.c b/xorg-server/glamor/glamor_gl_dispatch.c deleted file mode 100644 index 0bdda9c34..000000000 --- a/xorg-server/glamor/glamor_gl_dispatch.c +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright © 2009 Intel Corporation - * Copyright © 1998 Keith Packard - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - * - * Authors: - * Zhigang Gong <zhigang.gong@gmail.com> - * - */ - -#include "glamor_priv.h" -#include <dlfcn.h> - -#define INIT_FUNC(dst,func_name,get) \ - dst->func_name = get(#func_name); \ - if (dst->func_name == NULL) { \ - dst->func_name = (void *)dlsym(NULL, #func_name); \ - if (dst->func_name == NULL) { \ - ErrorF("Failed to get function %s\n", #func_name);\ - goto fail; \ - } \ - } \ - -_X_EXPORT Bool -glamor_gl_dispatch_init_impl(struct glamor_gl_dispatch *dispatch, - int gl_version, - void *(*get_proc_address) (const char *)) -{ -#ifndef GLAMOR_GLES2 - INIT_FUNC(dispatch, glMatrixMode, get_proc_address); - INIT_FUNC(dispatch, glLoadIdentity, get_proc_address); - INIT_FUNC(dispatch, glRasterPos2i, get_proc_address); - INIT_FUNC(dispatch, glDrawPixels, get_proc_address); - INIT_FUNC(dispatch, glLogicOp, get_proc_address); - INIT_FUNC(dispatch, glMapBuffer, get_proc_address); - INIT_FUNC(dispatch, glMapBufferRange, get_proc_address); - INIT_FUNC(dispatch, glUnmapBuffer, get_proc_address); - INIT_FUNC(dispatch, glBlitFramebuffer, get_proc_address); - INIT_FUNC(dispatch, glDrawRangeElements, get_proc_address); -#endif - INIT_FUNC(dispatch, glViewport, get_proc_address); - INIT_FUNC(dispatch, glDrawArrays, get_proc_address); - INIT_FUNC(dispatch, glDrawElements, get_proc_address); - INIT_FUNC(dispatch, glReadPixels, get_proc_address); - INIT_FUNC(dispatch, glPixelStorei, get_proc_address); - INIT_FUNC(dispatch, glTexParameteri, get_proc_address); - INIT_FUNC(dispatch, glTexImage2D, get_proc_address); - INIT_FUNC(dispatch, glGenTextures, get_proc_address); - INIT_FUNC(dispatch, glDeleteTextures, get_proc_address); - INIT_FUNC(dispatch, glBindTexture, get_proc_address); - INIT_FUNC(dispatch, glTexSubImage2D, get_proc_address); - INIT_FUNC(dispatch, glFlush, get_proc_address); - INIT_FUNC(dispatch, glFinish, get_proc_address); - INIT_FUNC(dispatch, glGetIntegerv, get_proc_address); - INIT_FUNC(dispatch, glGetString, get_proc_address); - INIT_FUNC(dispatch, glScissor, get_proc_address); - INIT_FUNC(dispatch, glEnable, get_proc_address); - INIT_FUNC(dispatch, glDisable, get_proc_address); - INIT_FUNC(dispatch, glBlendFunc, get_proc_address); - INIT_FUNC(dispatch, glActiveTexture, get_proc_address); - INIT_FUNC(dispatch, glGenBuffers, get_proc_address); - INIT_FUNC(dispatch, glBufferData, get_proc_address); - INIT_FUNC(dispatch, glBindBuffer, get_proc_address); - INIT_FUNC(dispatch, glDeleteBuffers, get_proc_address); - INIT_FUNC(dispatch, glFramebufferTexture2D, get_proc_address); - INIT_FUNC(dispatch, glBindFramebuffer, get_proc_address); - INIT_FUNC(dispatch, glDeleteFramebuffers, get_proc_address); - INIT_FUNC(dispatch, glGenFramebuffers, get_proc_address); - INIT_FUNC(dispatch, glCheckFramebufferStatus, get_proc_address); - INIT_FUNC(dispatch, glVertexAttribPointer, get_proc_address); - INIT_FUNC(dispatch, glDisableVertexAttribArray, get_proc_address); - INIT_FUNC(dispatch, glEnableVertexAttribArray, get_proc_address); - INIT_FUNC(dispatch, glBindAttribLocation, get_proc_address); - INIT_FUNC(dispatch, glLinkProgram, get_proc_address); - INIT_FUNC(dispatch, glShaderSource, get_proc_address); - - INIT_FUNC(dispatch, glUseProgram, get_proc_address); - INIT_FUNC(dispatch, glUniform1i, get_proc_address); - INIT_FUNC(dispatch, glUniform1f, get_proc_address); - INIT_FUNC(dispatch, glUniform4f, get_proc_address); - INIT_FUNC(dispatch, glUniform4fv, get_proc_address); - INIT_FUNC(dispatch, glUniform1fv, get_proc_address); - INIT_FUNC(dispatch, glUniform2fv, get_proc_address); - INIT_FUNC(dispatch, glUniformMatrix3fv, get_proc_address); - INIT_FUNC(dispatch, glCreateProgram, get_proc_address); - INIT_FUNC(dispatch, glDeleteProgram, get_proc_address); - INIT_FUNC(dispatch, glCreateShader, get_proc_address); - INIT_FUNC(dispatch, glCompileShader, get_proc_address); - INIT_FUNC(dispatch, glAttachShader, get_proc_address); - INIT_FUNC(dispatch, glDeleteShader, get_proc_address); - INIT_FUNC(dispatch, glGetShaderiv, get_proc_address); - INIT_FUNC(dispatch, glGetShaderInfoLog, get_proc_address); - INIT_FUNC(dispatch, glGetProgramiv, get_proc_address); - INIT_FUNC(dispatch, glGetProgramInfoLog, get_proc_address); - INIT_FUNC(dispatch, glGetUniformLocation, get_proc_address); - - return TRUE; - fail: - return FALSE; -} diff --git a/xorg-server/glamor/glamor_gl_dispatch.h b/xorg-server/glamor/glamor_gl_dispatch.h deleted file mode 100644 index 63790b41f..000000000 --- a/xorg-server/glamor/glamor_gl_dispatch.h +++ /dev/null @@ -1,128 +0,0 @@ -typedef struct glamor_gl_dispatch { - /* Transformation functions */ - void (*glMatrixMode) (GLenum mode); - void (*glLoadIdentity) (void); - void (*glViewport) (GLint x, GLint y, GLsizei width, GLsizei height); - /* Drawing functions */ - void (*glRasterPos2i) (GLint x, GLint y); - - /* Vertex Array */ - void (*glDrawArrays) (GLenum mode, GLint first, GLsizei count); - - /* Elements Array */ - void (*glDrawElements) (GLenum mode, GLsizei count, GLenum type, - const GLvoid * indices); - void (*glDrawRangeElements) (GLenum mode, GLuint start, GLuint end, - GLsizei count, GLenum type, - const GLvoid * indices); - - /* Raster functions */ - void (*glReadPixels) (GLint x, GLint y, - GLsizei width, GLsizei height, - GLenum format, GLenum type, GLvoid * pixels); - - void (*glDrawPixels) (GLsizei width, GLsizei height, - GLenum format, GLenum type, const GLvoid * pixels); - void (*glPixelStorei) (GLenum pname, GLint param); - /* Texture Mapping */ - - void (*glTexParameteri) (GLenum target, GLenum pname, GLint param); - void (*glTexImage2D) (GLenum target, GLint level, - GLint internalFormat, - GLsizei width, GLsizei height, - GLint border, GLenum format, GLenum type, - const GLvoid * pixels); - /* 1.1 */ - void (*glGenTextures) (GLsizei n, GLuint * textures); - void (*glDeleteTextures) (GLsizei n, const GLuint * textures); - void (*glBindTexture) (GLenum target, GLuint texture); - void (*glTexSubImage2D) (GLenum target, GLint level, - GLint xoffset, GLint yoffset, - GLsizei width, GLsizei height, - GLenum format, GLenum type, const GLvoid * pixels); - /* MISC */ - void (*glFlush) (void); - void (*glFinish) (void); - void (*glGetIntegerv) (GLenum pname, GLint * params); - const GLubyte *(*glGetString) (GLenum name); - void (*glScissor) (GLint x, GLint y, GLsizei width, GLsizei height); - void (*glEnable) (GLenum cap); - void (*glDisable) (GLenum cap); - void (*glBlendFunc) (GLenum sfactor, GLenum dfactor); - void (*glLogicOp) (GLenum opcode); - - /* 1.3 */ - void (*glActiveTexture) (GLenum texture); - - /* GL Extentions */ - void (*glGenBuffers) (GLsizei n, GLuint * buffers); - void (*glBufferData) (GLenum target, GLsizeiptr size, - const GLvoid * data, GLenum usage); - GLvoid *(*glMapBuffer) (GLenum target, GLenum access); - GLvoid *(*glMapBufferRange) (GLenum target, GLintptr offset, - GLsizeiptr length, GLbitfield access); - GLboolean(*glUnmapBuffer) (GLenum target); - void (*glBindBuffer) (GLenum target, GLuint buffer); - void (*glDeleteBuffers) (GLsizei n, const GLuint * buffers); - - void (*glFramebufferTexture2D) (GLenum target, GLenum attachment, - GLenum textarget, GLuint texture, - GLint level); - void (*glBindFramebuffer) (GLenum target, GLuint framebuffer); - void (*glDeleteFramebuffers) (GLsizei n, const GLuint * framebuffers); - void (*glGenFramebuffers) (GLsizei n, GLuint * framebuffers); - GLenum(*glCheckFramebufferStatus) (GLenum target); - void (*glBlitFramebuffer) (GLint srcX0, GLint srcY0, GLint srcX1, - GLint srcY1, GLint dstX0, GLint dstY0, - GLint dstX1, GLint dstY1, - GLbitfield mask, GLenum filter); - - void (*glVertexAttribPointer) (GLuint index, GLint size, - GLenum type, GLboolean normalized, - GLsizei stride, const GLvoid * pointer); - void (*glDisableVertexAttribArray) (GLuint index); - void (*glEnableVertexAttribArray) (GLuint index); - void (*glBindAttribLocation) (GLuint program, GLuint index, - const GLchar * name); - - void (*glLinkProgram) (GLuint program); - void (*glShaderSource) (GLuint shader, GLsizei count, - const GLchar * *string, const GLint * length); - void (*glUseProgram) (GLuint program); - void (*glUniform1i) (GLint location, GLint v0); - void (*glUniform1f) (GLint location, GLfloat v0); - void (*glUniform4f) (GLint location, GLfloat v0, GLfloat v1, - GLfloat v2, GLfloat v3); - void (*glUniform1fv) (GLint location, GLsizei count, const GLfloat * value); - void (*glUniform2fv) (GLint location, GLsizei count, const GLfloat * value); - void (*glUniform4fv) (GLint location, GLsizei count, const GLfloat * value); - void (*glUniformMatrix3fv) (GLint location, GLsizei count, - GLboolean transpose, const GLfloat * value); - GLuint(*glCreateProgram) (void); - GLuint(*glDeleteProgram) (GLuint); - GLuint(*glCreateShader) (GLenum type); - void (*glCompileShader) (GLuint shader); - void (*glAttachShader) (GLuint program, GLuint shader); - void (*glDeleteShader) (GLuint shader); - void (*glGetShaderiv) (GLuint shader, GLenum pname, GLint * params); - void (*glGetShaderInfoLog) (GLuint shader, GLsizei bufSize, - GLsizei * length, GLchar * infoLog); - void (*glGetProgramiv) (GLuint program, GLenum pname, GLint * params); - void (*glGetProgramInfoLog) (GLuint program, GLsizei bufSize, - GLsizei * length, GLchar * infoLog); - GLint(*glGetUniformLocation) (GLuint program, const GLchar * name); - -} glamor_gl_dispatch; - -typedef void *(*get_proc_address_t) (const char *); - -_X_EXPORT Bool - -glamor_gl_dispatch_init_impl(struct glamor_gl_dispatch *dispatch, - int gl_version, - get_proc_address_t get_proc_address); - -_X_EXPORT Bool - -glamor_gl_dispatch_init(ScreenPtr screen, - struct glamor_gl_dispatch *dispatch, int gl_version); diff --git a/xorg-server/glamor/glamor_glext.h b/xorg-server/glamor/glamor_glext.h deleted file mode 100644 index 2a220c32f..000000000 --- a/xorg-server/glamor/glamor_glext.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright © 2001 Keith Packard - * Copyright © 2008 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - * - * Authors: - * Zhigang Gong <zhigang.gong@linux.intel.com> - * - */ - -#ifdef GLAMOR_GLES2 - -#define GL_BGRA GL_BGRA_EXT -#define GL_COLOR_INDEX 0x1900 -#define GL_BITMAP 0x1A00 -#define GL_UNSIGNED_INT_8_8_8_8 0x8035 -#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 -#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368 -#define GL_UNSIGNED_INT_10_10_10_2 0x8036 -#define GL_UNSIGNED_SHORT_5_6_5_REV 0x8364 -#define GL_UNSIGNED_SHORT_1_5_5_5_REV 0x8366 -#define GL_UNSIGNED_SHORT_4_4_4_4_REV 0x8365 - -#define GL_PIXEL_PACK_BUFFER 0x88EB -#define GL_PIXEL_UNPACK_BUFFER 0x88EC -#define GL_CLAMP_TO_BORDER 0x812D - -#define GL_READ_WRITE 0x88BA -#define GL_READ_ONLY 0x88B8 -#define GL_WRITE_ONLY 0x88B9 -#define GL_STREAM_DRAW 0x88E0 -#define GL_STREAM_READ 0x88E1 -#define GL_PACK_ROW_LENGTH 0x0D02 -#define GL_UNPACK_ROW_LENGTH 0x0CF2 - -#define GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER 0x8CDB -#define GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER 0x8CDC -#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56 - -#define GL_PACK_INVERT_MESA 0x8758 -#define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 -#define GL_MAP_READ_BIT 0x0001 -#define GL_MAP_WRITE_BIT 0x0002 - -#endif diff --git a/xorg-server/glamor/glamor_glx.c b/xorg-server/glamor/glamor_glx.c new file mode 100644 index 000000000..311bf758d --- /dev/null +++ b/xorg-server/glamor/glamor_glx.c @@ -0,0 +1,82 @@ +/* + * Copyright © 2013 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#include <epoxy/glx.h> +#include "glamor_context.h" + +/** + * @file glamor_glx.c + * + * GLX context management for glamor. + * + * This has to be kept separate from the server sources because of + * Xlib's conflicting definition of CARD32 and similar typedefs. + */ + +static void +glamor_glx_get_context(struct glamor_context *glamor_ctx) +{ + GLXContext old_ctx; + + if (glamor_ctx->get_count++) + return; + + old_ctx = glXGetCurrentContext(); + if (old_ctx == glamor_ctx->ctx) + return; + + glXMakeCurrent(glamor_ctx->display, glamor_ctx->drawable_xid, + glamor_ctx->ctx); +} + + +static void +glamor_glx_put_context(struct glamor_context *glamor_ctx) +{ + if (--glamor_ctx->get_count) + return; + + /* We actually reset the context, so that indirect GLX's EGL usage + * won't get confused by ours. + */ + glXMakeCurrent(glamor_ctx->display, None, NULL); +} + +Bool +glamor_glx_screen_init(struct glamor_context *glamor_ctx) +{ + glamor_ctx->ctx = glXGetCurrentContext(); + if (!glamor_ctx->ctx) + return False; + + glamor_ctx->display = glXGetCurrentDisplay(); + if (!glamor_ctx->display) + return False; + + glamor_ctx->drawable_xid = glXGetCurrentDrawable(); + + glamor_ctx->get_context = glamor_glx_get_context; + glamor_ctx->put_context = glamor_glx_put_context; + + return True; +} diff --git a/xorg-server/glamor/glamor_glyphs.c b/xorg-server/glamor/glamor_glyphs.c index 3586b33da..caafa4348 100644 --- a/xorg-server/glamor/glamor_glyphs.c +++ b/xorg-server/glamor/glamor_glyphs.c @@ -1274,15 +1274,13 @@ glamor_buffer_glyph(glamor_screen_private *glamor_priv, if (buffer->source == NULL) buffer->source = source; if (glyphs_dst_mode == GLYPHS_DST_MODE_VIA_MASK_CACHE) { - glamor_gl_dispatch *dispatch; - /* mode 1 means we are using global mask cache, * thus we have to composite from the cache picture * to the cache picture, we need a flush here to make * sure latter we get the corret glyphs data.*/ - dispatch = glamor_get_dispatch(glamor_priv); - dispatch->glFlush(); - glamor_put_dispatch(glamor_priv); + glamor_get_context(glamor_priv); + glFlush(); + glamor_put_context(glamor_priv); } } else { diff --git a/xorg-server/glamor/glamor_gradient.c b/xorg-server/glamor/glamor_gradient.c index df2ccb8a0..9f6f1b1cf 100644 --- a/xorg-server/glamor/glamor_gradient.c +++ b/xorg-server/glamor/glamor_gradient.c @@ -42,15 +42,13 @@ #ifdef GLAMOR_GRADIENT_SHADER -static GLint -_glamor_create_getcolor_fs_program(ScreenPtr screen, int stops_count, - int use_array) +static const char * +_glamor_create_getcolor_fs_source(ScreenPtr screen, int stops_count, + int use_array) { glamor_screen_private *glamor_priv; - glamor_gl_dispatch *dispatch; char *gradient_fs = NULL; - GLint fs_getcolor_prog; #define gradient_fs_getcolor\ GLAMOR_DEFAULT_PRECISION\ @@ -177,22 +175,16 @@ _glamor_create_getcolor_fs_program(ScreenPtr screen, int stops_count, "}\n"; glamor_priv = glamor_get_screen_private(screen); - dispatch = glamor_get_dispatch(glamor_priv); + glamor_get_context(glamor_priv); if (use_array) { XNFasprintf(&gradient_fs, gradient_fs_getcolor, stops_count, stops_count); - fs_getcolor_prog = - glamor_compile_glsl_prog(dispatch, GL_FRAGMENT_SHADER, gradient_fs); - free(gradient_fs); + return gradient_fs; } else { - fs_getcolor_prog = - glamor_compile_glsl_prog(dispatch, GL_FRAGMENT_SHADER, - gradient_fs_getcolor_no_array); + return XNFstrdup(gradient_fs_getcolor_no_array); } - - return fs_getcolor_prog; } static void @@ -200,12 +192,11 @@ _glamor_create_radial_gradient_program(ScreenPtr screen, int stops_count, int dyn_gen) { glamor_screen_private *glamor_priv; - glamor_gl_dispatch *dispatch; int index; GLint gradient_prog = 0; char *gradient_fs = NULL; - GLint fs_main_prog, fs_getcolor_prog, vs_prog; + GLint fs_prog, vs_prog; const char *gradient_vs = GLAMOR_DEFAULT_PRECISION @@ -346,7 +337,10 @@ _glamor_create_radial_gradient_program(ScreenPtr screen, int stops_count, " } else {\n"\ " gl_FragColor = get_color(stop_len);\n"\ " }\n"\ - "}\n" + "}\n"\ + "\n"\ + "%s\n" /* fs_getcolor_source */ + const char *fs_getcolor_source; glamor_priv = glamor_get_screen_private(screen); @@ -355,61 +349,42 @@ _glamor_create_radial_gradient_program(ScreenPtr screen, int stops_count, return; } - dispatch = glamor_get_dispatch(glamor_priv); + glamor_get_context(glamor_priv); if (dyn_gen && glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][2]) { - dispatch->glDeleteShader(glamor_priv-> - radial_gradient_shaders - [SHADER_GRADIENT_VS_PROG][2]); - glamor_priv->radial_gradient_shaders[SHADER_GRADIENT_VS_PROG][2] = 0; - - dispatch->glDeleteShader(glamor_priv-> - radial_gradient_shaders - [SHADER_GRADIENT_FS_MAIN_PROG][2]); - glamor_priv->radial_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][2] = - 0; - - dispatch->glDeleteShader(glamor_priv-> - radial_gradient_shaders - [SHADER_GRADIENT_FS_GETCOLOR_PROG][2]); - glamor_priv-> - radial_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][2] = 0; - - dispatch->glDeleteProgram(glamor_priv-> - gradient_prog[SHADER_GRADIENT_RADIAL][2]); + glDeleteProgram(glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][2]); glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][2] = 0; } - gradient_prog = dispatch->glCreateProgram(); + gradient_prog = glCreateProgram(); + + vs_prog = glamor_compile_glsl_prog(GL_VERTEX_SHADER, gradient_vs); - vs_prog = glamor_compile_glsl_prog(dispatch, GL_VERTEX_SHADER, gradient_vs); + fs_getcolor_source = + _glamor_create_getcolor_fs_source(screen, stops_count, + (stops_count > 0)); XNFasprintf(&gradient_fs, gradient_radial_fs_template, PIXMAN_REPEAT_NONE, PIXMAN_REPEAT_NORMAL, - PIXMAN_REPEAT_REFLECT); + PIXMAN_REPEAT_REFLECT, + fs_getcolor_source); - fs_main_prog = glamor_compile_glsl_prog(dispatch, - GL_FRAGMENT_SHADER, gradient_fs); + fs_prog = glamor_compile_glsl_prog(GL_FRAGMENT_SHADER, gradient_fs); free(gradient_fs); - fs_getcolor_prog = - _glamor_create_getcolor_fs_program(screen, stops_count, - (stops_count > 0)); + glAttachShader(gradient_prog, vs_prog); + glAttachShader(gradient_prog, fs_prog); + glDeleteShader(vs_prog); + glDeleteShader(fs_prog); - dispatch->glAttachShader(gradient_prog, vs_prog); - dispatch->glAttachShader(gradient_prog, fs_getcolor_prog); - dispatch->glAttachShader(gradient_prog, fs_main_prog); + glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_POS, "v_position"); + glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_SOURCE, "v_texcoord"); - dispatch->glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_POS, - "v_positionsition"); - dispatch->glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_SOURCE, - "v_texcoord"); + glamor_link_glsl_prog(gradient_prog); - glamor_link_glsl_prog(dispatch, gradient_prog); - - dispatch->glUseProgram(0); + glUseProgram(0); if (dyn_gen) { index = 2; @@ -423,15 +398,8 @@ _glamor_create_radial_gradient_program(ScreenPtr screen, int stops_count, } glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][index] = gradient_prog; - glamor_priv->radial_gradient_shaders[SHADER_GRADIENT_VS_PROG][index] = - vs_prog; - glamor_priv->radial_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][index] = - fs_main_prog; - glamor_priv-> - radial_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][index] = - fs_getcolor_prog; - - glamor_put_dispatch(glamor_priv); + + glamor_put_context(glamor_priv); } static void @@ -439,12 +407,11 @@ _glamor_create_linear_gradient_program(ScreenPtr screen, int stops_count, int dyn_gen) { glamor_screen_private *glamor_priv; - glamor_gl_dispatch *dispatch; int index = 0; GLint gradient_prog = 0; char *gradient_fs = NULL; - GLint fs_main_prog, fs_getcolor_prog, vs_prog; + GLint fs_prog, vs_prog; const char *gradient_vs = GLAMOR_DEFAULT_PRECISION @@ -587,7 +554,10 @@ _glamor_create_linear_gradient_program(ScreenPtr screen, int stops_count, "{\n"\ " float stop_len = get_stop_len();\n"\ " gl_FragColor = get_color(stop_len);\n"\ - "}\n" + "}\n"\ + "\n"\ + "%s" /* fs_getcolor_source */ + const char *fs_getcolor_source; glamor_priv = glamor_get_screen_private(screen); @@ -596,58 +566,38 @@ _glamor_create_linear_gradient_program(ScreenPtr screen, int stops_count, return; } - dispatch = glamor_get_dispatch(glamor_priv); + glamor_get_context(glamor_priv); if (dyn_gen && glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][2]) { - dispatch->glDeleteShader(glamor_priv-> - linear_gradient_shaders - [SHADER_GRADIENT_VS_PROG][2]); - glamor_priv->linear_gradient_shaders[SHADER_GRADIENT_VS_PROG][2] = 0; - - dispatch->glDeleteShader(glamor_priv-> - linear_gradient_shaders - [SHADER_GRADIENT_FS_MAIN_PROG][2]); - glamor_priv->linear_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][2] = - 0; - - dispatch->glDeleteShader(glamor_priv-> - linear_gradient_shaders - [SHADER_GRADIENT_FS_GETCOLOR_PROG][2]); - glamor_priv-> - linear_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][2] = 0; - - dispatch->glDeleteProgram(glamor_priv-> - gradient_prog[SHADER_GRADIENT_LINEAR][2]); + glDeleteProgram(glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][2]); glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][2] = 0; } - gradient_prog = dispatch->glCreateProgram(); + gradient_prog = glCreateProgram(); - vs_prog = glamor_compile_glsl_prog(dispatch, GL_VERTEX_SHADER, gradient_vs); + vs_prog = glamor_compile_glsl_prog(GL_VERTEX_SHADER, gradient_vs); + + fs_getcolor_source = + _glamor_create_getcolor_fs_source(screen, stops_count, stops_count > 0); XNFasprintf(&gradient_fs, gradient_fs_template, - PIXMAN_REPEAT_NORMAL, PIXMAN_REPEAT_REFLECT); + PIXMAN_REPEAT_NORMAL, PIXMAN_REPEAT_REFLECT, + fs_getcolor_source); - fs_main_prog = glamor_compile_glsl_prog(dispatch, - GL_FRAGMENT_SHADER, gradient_fs); + fs_prog = glamor_compile_glsl_prog(GL_FRAGMENT_SHADER, gradient_fs); free(gradient_fs); - fs_getcolor_prog = - _glamor_create_getcolor_fs_program(screen, stops_count, - (stops_count > 0)); - - dispatch->glAttachShader(gradient_prog, vs_prog); - dispatch->glAttachShader(gradient_prog, fs_getcolor_prog); - dispatch->glAttachShader(gradient_prog, fs_main_prog); + glAttachShader(gradient_prog, vs_prog); + glAttachShader(gradient_prog, fs_prog); + glDeleteShader(vs_prog); + glDeleteShader(fs_prog); - dispatch->glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_POS, - "v_position"); - dispatch->glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_SOURCE, - "v_texcoord"); + glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_POS, "v_position"); + glBindAttribLocation(gradient_prog, GLAMOR_VERTEX_SOURCE, "v_texcoord"); - glamor_link_glsl_prog(dispatch, gradient_prog); + glamor_link_glsl_prog(gradient_prog); - dispatch->glUseProgram(0); + glUseProgram(0); if (dyn_gen) { index = 2; @@ -661,15 +611,8 @@ _glamor_create_linear_gradient_program(ScreenPtr screen, int stops_count, } glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][index] = gradient_prog; - glamor_priv->linear_gradient_shaders[SHADER_GRADIENT_VS_PROG][index] = - vs_prog; - glamor_priv->linear_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][index] = - fs_main_prog; - glamor_priv-> - linear_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][index] = - fs_getcolor_prog; - - glamor_put_dispatch(glamor_priv); + + glamor_put_context(glamor_priv); } void @@ -682,18 +625,7 @@ glamor_init_gradient_shader(ScreenPtr screen) for (i = 0; i < 3; i++) { glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][i] = 0; - glamor_priv->linear_gradient_shaders[SHADER_GRADIENT_VS_PROG][i] = 0; - glamor_priv->linear_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][i] = - 0; - glamor_priv-> - linear_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][i] = 0; - glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][i] = 0; - glamor_priv->radial_gradient_shaders[SHADER_GRADIENT_VS_PROG][i] = 0; - glamor_priv->radial_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][i] = - 0; - glamor_priv-> - radial_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][i] = 0; } glamor_priv->linear_max_nstops = 0; glamor_priv->radial_max_nstops = 0; @@ -709,59 +641,23 @@ void glamor_fini_gradient_shader(ScreenPtr screen) { glamor_screen_private *glamor_priv; - glamor_gl_dispatch *dispatch; int i = 0; glamor_priv = glamor_get_screen_private(screen); - dispatch = glamor_get_dispatch(glamor_priv); + glamor_get_context(glamor_priv); for (i = 0; i < 3; i++) { /* Linear Gradient */ - if (glamor_priv->linear_gradient_shaders[SHADER_GRADIENT_VS_PROG][i]) - dispatch->glDeleteShader(glamor_priv-> - linear_gradient_shaders - [SHADER_GRADIENT_VS_PROG][i]); - - if (glamor_priv-> - linear_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][i]) - dispatch->glDeleteShader(glamor_priv-> - linear_gradient_shaders - [SHADER_GRADIENT_FS_MAIN_PROG][i]); - - if (glamor_priv-> - linear_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][i]) - dispatch->glDeleteShader(glamor_priv-> - linear_gradient_shaders - [SHADER_GRADIENT_FS_GETCOLOR_PROG][i]); - if (glamor_priv->gradient_prog[SHADER_GRADIENT_LINEAR][i]) - dispatch->glDeleteProgram(glamor_priv-> - gradient_prog[SHADER_GRADIENT_LINEAR][i]); - - /* Radial Gradient */ - if (glamor_priv->radial_gradient_shaders[SHADER_GRADIENT_VS_PROG][i]) - dispatch->glDeleteShader(glamor_priv-> - radial_gradient_shaders - [SHADER_GRADIENT_VS_PROG][i]); - - if (glamor_priv-> - radial_gradient_shaders[SHADER_GRADIENT_FS_MAIN_PROG][i]) - dispatch->glDeleteShader(glamor_priv-> - radial_gradient_shaders - [SHADER_GRADIENT_FS_MAIN_PROG][i]); - - if (glamor_priv-> - radial_gradient_shaders[SHADER_GRADIENT_FS_GETCOLOR_PROG][i]) - dispatch->glDeleteShader(glamor_priv-> - radial_gradient_shaders - [SHADER_GRADIENT_FS_GETCOLOR_PROG][i]); + glDeleteProgram(glamor_priv->gradient_prog + [SHADER_GRADIENT_LINEAR][i]); if (glamor_priv->gradient_prog[SHADER_GRADIENT_RADIAL][i]) - dispatch->glDeleteProgram(glamor_priv-> - gradient_prog[SHADER_GRADIENT_RADIAL][i]); + glDeleteProgram(glamor_priv->gradient_prog + [SHADER_GRADIENT_RADIAL][i]); } - glamor_put_dispatch(glamor_priv); + glamor_put_context(glamor_priv); } static void @@ -835,7 +731,6 @@ _glamor_gradient_set_pixmap_destination(ScreenPtr screen, { glamor_pixmap_private *pixmap_priv; PixmapPtr pixmap = NULL; - glamor_gl_dispatch *dispatch = NULL; pixmap = glamor_get_drawable_pixmap(dst_picture->pDrawable); pixmap_priv = glamor_get_pixmap_private(pixmap); @@ -893,17 +788,17 @@ _glamor_gradient_set_pixmap_destination(ScreenPtr screen, tex_vertices[0], tex_vertices[1], tex_vertices[2], tex_vertices[3], tex_vertices[4], tex_vertices[5], tex_vertices[6], tex_vertices[7]); - dispatch = glamor_get_dispatch(glamor_priv); + glamor_get_context(glamor_priv); - dispatch->glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, - GL_FALSE, 0, vertices); - dispatch->glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_FLOAT, - GL_FALSE, 0, tex_vertices); + glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, + GL_FALSE, 0, vertices); + glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_FLOAT, + GL_FALSE, 0, tex_vertices); - dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_POS); - dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE); + glEnableVertexAttribArray(GLAMOR_VERTEX_POS); + glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE); - glamor_put_dispatch(glamor_priv); + glamor_put_context(glamor_priv); return 1; } @@ -996,7 +891,6 @@ glamor_generate_radial_gradient_picture(ScreenPtr screen, PictFormatShort format) { glamor_screen_private *glamor_priv; - glamor_gl_dispatch *dispatch; PicturePtr dst_picture = NULL; PixmapPtr pixmap = NULL; GLint gradient_prog = 0; @@ -1047,7 +941,7 @@ glamor_generate_radial_gradient_picture(ScreenPtr screen, GLint r2_uniform_location = 0; glamor_priv = glamor_get_screen_private(screen); - dispatch = glamor_get_dispatch(glamor_priv); + glamor_get_context(glamor_priv); /* Create a pixmap with VBO. */ pixmap = glamor_create_pixmap(screen, @@ -1088,77 +982,74 @@ glamor_generate_radial_gradient_picture(ScreenPtr screen, } /* Bind all the uniform vars . */ - transform_mat_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "transform_mat"); - repeat_type_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "repeat_type"); - n_stop_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "n_stop"); - A_value_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "A_value"); - repeat_type_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "repeat_type"); - c1_uniform_location = dispatch->glGetUniformLocation(gradient_prog, "c1"); - r1_uniform_location = dispatch->glGetUniformLocation(gradient_prog, "r1"); - c2_uniform_location = dispatch->glGetUniformLocation(gradient_prog, "c2"); - r2_uniform_location = dispatch->glGetUniformLocation(gradient_prog, "r2"); + transform_mat_uniform_location = glGetUniformLocation(gradient_prog, + "transform_mat"); + repeat_type_uniform_location = glGetUniformLocation(gradient_prog, + "repeat_type"); + n_stop_uniform_location = glGetUniformLocation(gradient_prog, "n_stop"); + A_value_uniform_location = glGetUniformLocation(gradient_prog, "A_value"); + repeat_type_uniform_location =glGetUniformLocation(gradient_prog, + "repeat_type"); + c1_uniform_location = glGetUniformLocation(gradient_prog, "c1"); + r1_uniform_location = glGetUniformLocation(gradient_prog, "r1"); + c2_uniform_location = glGetUniformLocation(gradient_prog, "c2"); + r2_uniform_location = glGetUniformLocation(gradient_prog, "r2"); if (src_picture->pSourcePict->radial.nstops + 2 <= RADIAL_SMALL_STOPS) { stop0_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop0"); + glGetUniformLocation(gradient_prog, "stop0"); stop1_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop1"); + glGetUniformLocation(gradient_prog, "stop1"); stop2_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop2"); + glGetUniformLocation(gradient_prog, "stop2"); stop3_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop3"); + glGetUniformLocation(gradient_prog, "stop3"); stop4_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop4"); + glGetUniformLocation(gradient_prog, "stop4"); stop5_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop5"); + glGetUniformLocation(gradient_prog, "stop5"); stop6_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop6"); + glGetUniformLocation(gradient_prog, "stop6"); stop7_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop7"); + glGetUniformLocation(gradient_prog, "stop7"); stop_color0_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop_color0"); + glGetUniformLocation(gradient_prog, "stop_color0"); stop_color1_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop_color1"); + glGetUniformLocation(gradient_prog, "stop_color1"); stop_color2_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop_color2"); + glGetUniformLocation(gradient_prog, "stop_color2"); stop_color3_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop_color3"); + glGetUniformLocation(gradient_prog, "stop_color3"); stop_color4_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop_color4"); + glGetUniformLocation(gradient_prog, "stop_color4"); stop_color5_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop_color5"); + glGetUniformLocation(gradient_prog, "stop_color5"); stop_color6_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop_color6"); + glGetUniformLocation(gradient_prog, "stop_color6"); stop_color7_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop_color7"); + glGetUniformLocation(gradient_prog, "stop_color7"); } else { stops_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stops"); + glGetUniformLocation(gradient_prog, "stops"); stop_colors_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop_colors"); + glGetUniformLocation(gradient_prog, "stop_colors"); } - dispatch->glUseProgram(gradient_prog); + glUseProgram(gradient_prog); - dispatch->glUniform1i(repeat_type_uniform_location, - src_picture->repeatType); + glUniform1i(repeat_type_uniform_location, src_picture->repeatType); if (src_picture->transform) { _glamor_gradient_convert_trans_matrix(src_picture->transform, transform_mat, width, height, 0); - dispatch->glUniformMatrix3fv(transform_mat_uniform_location, - 1, 1, &transform_mat[0][0]); + glUniformMatrix3fv(transform_mat_uniform_location, + 1, 1, &transform_mat[0][0]); } else { - dispatch->glUniformMatrix3fv(transform_mat_uniform_location, - 1, 1, &identity_mat[0][0]); + glUniformMatrix3fv(transform_mat_uniform_location, + 1, 1, &identity_mat[0][0]); } if (!_glamor_gradient_set_pixmap_destination @@ -1193,54 +1084,53 @@ glamor_generate_radial_gradient_picture(ScreenPtr screen, if (src_picture->pSourcePict->linear.nstops + 2 <= RADIAL_SMALL_STOPS) { int j = 0; - dispatch->glUniform4f(stop_color0_uniform_location, - stop_colors[4 * j + 0], stop_colors[4 * j + 1], - stop_colors[4 * j + 2], stop_colors[4 * j + 3]); + glUniform4f(stop_color0_uniform_location, + stop_colors[4 * j + 0], stop_colors[4 * j + 1], + stop_colors[4 * j + 2], stop_colors[4 * j + 3]); j++; - dispatch->glUniform4f(stop_color1_uniform_location, - stop_colors[4 * j + 0], stop_colors[4 * j + 1], - stop_colors[4 * j + 2], stop_colors[4 * j + 3]); + glUniform4f(stop_color1_uniform_location, + stop_colors[4 * j + 0], stop_colors[4 * j + 1], + stop_colors[4 * j + 2], stop_colors[4 * j + 3]); j++; - dispatch->glUniform4f(stop_color2_uniform_location, - stop_colors[4 * j + 0], stop_colors[4 * j + 1], - stop_colors[4 * j + 2], stop_colors[4 * j + 3]); + glUniform4f(stop_color2_uniform_location, + stop_colors[4 * j + 0], stop_colors[4 * j + 1], + stop_colors[4 * j + 2], stop_colors[4 * j + 3]); j++; - dispatch->glUniform4f(stop_color3_uniform_location, - stop_colors[4 * j + 0], stop_colors[4 * j + 1], - stop_colors[4 * j + 2], stop_colors[4 * j + 3]); + glUniform4f(stop_color3_uniform_location, + stop_colors[4 * j + 0], stop_colors[4 * j + 1], + stop_colors[4 * j + 2], stop_colors[4 * j + 3]); j++; - dispatch->glUniform4f(stop_color4_uniform_location, - stop_colors[4 * j + 0], stop_colors[4 * j + 1], - stop_colors[4 * j + 2], stop_colors[4 * j + 3]); + glUniform4f(stop_color4_uniform_location, + stop_colors[4 * j + 0], stop_colors[4 * j + 1], + stop_colors[4 * j + 2], stop_colors[4 * j + 3]); j++; - dispatch->glUniform4f(stop_color5_uniform_location, - stop_colors[4 * j + 0], stop_colors[4 * j + 1], - stop_colors[4 * j + 2], stop_colors[4 * j + 3]); + glUniform4f(stop_color5_uniform_location, + stop_colors[4 * j + 0], stop_colors[4 * j + 1], + stop_colors[4 * j + 2], stop_colors[4 * j + 3]); j++; - dispatch->glUniform4f(stop_color6_uniform_location, - stop_colors[4 * j + 0], stop_colors[4 * j + 1], - stop_colors[4 * j + 2], stop_colors[4 * j + 3]); + glUniform4f(stop_color6_uniform_location, + stop_colors[4 * j + 0], stop_colors[4 * j + 1], + stop_colors[4 * j + 2], stop_colors[4 * j + 3]); j++; - dispatch->glUniform4f(stop_color7_uniform_location, - stop_colors[4 * j + 0], stop_colors[4 * j + 1], - stop_colors[4 * j + 2], stop_colors[4 * j + 3]); + glUniform4f(stop_color7_uniform_location, + stop_colors[4 * j + 0], stop_colors[4 * j + 1], + stop_colors[4 * j + 2], stop_colors[4 * j + 3]); j = 0; - dispatch->glUniform1f(stop0_uniform_location, n_stops[j++]); - dispatch->glUniform1f(stop1_uniform_location, n_stops[j++]); - dispatch->glUniform1f(stop2_uniform_location, n_stops[j++]); - dispatch->glUniform1f(stop3_uniform_location, n_stops[j++]); - dispatch->glUniform1f(stop4_uniform_location, n_stops[j++]); - dispatch->glUniform1f(stop5_uniform_location, n_stops[j++]); - dispatch->glUniform1f(stop6_uniform_location, n_stops[j++]); - dispatch->glUniform1f(stop7_uniform_location, n_stops[j++]); - dispatch->glUniform1i(n_stop_uniform_location, count); + glUniform1f(stop0_uniform_location, n_stops[j++]); + glUniform1f(stop1_uniform_location, n_stops[j++]); + glUniform1f(stop2_uniform_location, n_stops[j++]); + glUniform1f(stop3_uniform_location, n_stops[j++]); + glUniform1f(stop4_uniform_location, n_stops[j++]); + glUniform1f(stop5_uniform_location, n_stops[j++]); + glUniform1f(stop6_uniform_location, n_stops[j++]); + glUniform1f(stop7_uniform_location, n_stops[j++]); + glUniform1i(n_stop_uniform_location, count); } else { - dispatch->glUniform4fv(stop_colors_uniform_location, count, - stop_colors); - dispatch->glUniform1fv(stops_uniform_location, count, n_stops); - dispatch->glUniform1i(n_stop_uniform_location, count); + glUniform4fv(stop_colors_uniform_location, count, stop_colors); + glUniform1fv(stops_uniform_location, count, n_stops); + glUniform1i(n_stop_uniform_location, count); } c1x = (float) pixman_fixed_to_double(src_picture->pSourcePict->radial.c1.x); @@ -1255,25 +1145,25 @@ glamor_generate_radial_gradient_picture(ScreenPtr screen, glamor_set_circle_centre(width, height, c1x, c1y, glamor_priv->yInverted, cxy); - dispatch->glUniform2fv(c1_uniform_location, 1, cxy); - dispatch->glUniform1f(r1_uniform_location, r1); + glUniform2fv(c1_uniform_location, 1, cxy); + glUniform1f(r1_uniform_location, r1); glamor_set_circle_centre(width, height, c2x, c2y, glamor_priv->yInverted, cxy); - dispatch->glUniform2fv(c2_uniform_location, 1, cxy); - dispatch->glUniform1f(r2_uniform_location, r2); + glUniform2fv(c2_uniform_location, 1, cxy); + glUniform1f(r2_uniform_location, r2); A_value = (c2x - c1x) * (c2x - c1x) + (c2y - c1y) * (c2y - c1y) - (r2 - r1) * (r2 - r1); - dispatch->glUniform1f(A_value_uniform_location, A_value); + glUniform1f(A_value_uniform_location, A_value); DEBUGF("C1:(%f, %f) R1:%f\nC2:(%f, %f) R2:%f\nA = %f\n", c1x, c1y, r1, c2x, c2y, r2, A_value); /* Now rendering. */ - dispatch->glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); /* Do the clear logic. */ if (stops_count > RADIAL_SMALL_STOPS) { @@ -1281,14 +1171,14 @@ glamor_generate_radial_gradient_picture(ScreenPtr screen, free(stop_colors); } - dispatch->glBindBuffer(GL_ARRAY_BUFFER, 0); - dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); - dispatch->glUseProgram(0); + glDisableVertexAttribArray(GLAMOR_VERTEX_POS); + glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); + glUseProgram(0); - glamor_put_dispatch(glamor_priv); + glamor_put_context(glamor_priv); return dst_picture; GRADIENT_FAIL: @@ -1303,13 +1193,13 @@ glamor_generate_radial_gradient_picture(ScreenPtr screen, free(stop_colors); } - dispatch->glBindBuffer(GL_ARRAY_BUFFER, 0); - dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); - dispatch->glUseProgram(0); - glamor_put_dispatch(glamor_priv); + glDisableVertexAttribArray(GLAMOR_VERTEX_POS); + glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); + glUseProgram(0); + glamor_put_context(glamor_priv); return NULL; } @@ -1321,7 +1211,6 @@ glamor_generate_linear_gradient_picture(ScreenPtr screen, PictFormatShort format) { glamor_screen_private *glamor_priv; - glamor_gl_dispatch *dispatch; PicturePtr dst_picture = NULL; PixmapPtr pixmap = NULL; GLint gradient_prog = 0; @@ -1374,7 +1263,7 @@ glamor_generate_linear_gradient_picture(ScreenPtr screen, GLint pt_distance_uniform_location = 0; glamor_priv = glamor_get_screen_private(screen); - dispatch = glamor_get_dispatch(glamor_priv); + glamor_get_context(glamor_priv); /* Create a pixmap with VBO. */ pixmap = glamor_create_pixmap(screen, @@ -1417,79 +1306,78 @@ glamor_generate_linear_gradient_picture(ScreenPtr screen, /* Bind all the uniform vars . */ n_stop_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "n_stop"); + glGetUniformLocation(gradient_prog, "n_stop"); pt_slope_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "pt_slope"); + glGetUniformLocation(gradient_prog, "pt_slope"); repeat_type_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "repeat_type"); + glGetUniformLocation(gradient_prog, "repeat_type"); hor_ver_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "hor_ver"); + glGetUniformLocation(gradient_prog, "hor_ver"); transform_mat_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "transform_mat"); + glGetUniformLocation(gradient_prog, "transform_mat"); cos_val_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "cos_val"); + glGetUniformLocation(gradient_prog, "cos_val"); p1_distance_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "p1_distance"); + glGetUniformLocation(gradient_prog, "p1_distance"); pt_distance_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "pt_distance"); + glGetUniformLocation(gradient_prog, "pt_distance"); if (src_picture->pSourcePict->linear.nstops + 2 <= LINEAR_SMALL_STOPS) { stop0_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop0"); + glGetUniformLocation(gradient_prog, "stop0"); stop1_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop1"); + glGetUniformLocation(gradient_prog, "stop1"); stop2_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop2"); + glGetUniformLocation(gradient_prog, "stop2"); stop3_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop3"); + glGetUniformLocation(gradient_prog, "stop3"); stop4_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop4"); + glGetUniformLocation(gradient_prog, "stop4"); stop5_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop5"); + glGetUniformLocation(gradient_prog, "stop5"); stop6_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop6"); + glGetUniformLocation(gradient_prog, "stop6"); stop7_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop7"); + glGetUniformLocation(gradient_prog, "stop7"); stop_color0_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop_color0"); + glGetUniformLocation(gradient_prog, "stop_color0"); stop_color1_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop_color1"); + glGetUniformLocation(gradient_prog, "stop_color1"); stop_color2_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop_color2"); + glGetUniformLocation(gradient_prog, "stop_color2"); stop_color3_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop_color3"); + glGetUniformLocation(gradient_prog, "stop_color3"); stop_color4_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop_color4"); + glGetUniformLocation(gradient_prog, "stop_color4"); stop_color5_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop_color5"); + glGetUniformLocation(gradient_prog, "stop_color5"); stop_color6_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop_color6"); + glGetUniformLocation(gradient_prog, "stop_color6"); stop_color7_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop_color7"); + glGetUniformLocation(gradient_prog, "stop_color7"); } else { stops_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stops"); + glGetUniformLocation(gradient_prog, "stops"); stop_colors_uniform_location = - dispatch->glGetUniformLocation(gradient_prog, "stop_colors"); + glGetUniformLocation(gradient_prog, "stop_colors"); } - dispatch->glUseProgram(gradient_prog); + glUseProgram(gradient_prog); - dispatch->glUniform1i(repeat_type_uniform_location, - src_picture->repeatType); + glUniform1i(repeat_type_uniform_location, src_picture->repeatType); /* set the transform matrix. */ if (src_picture->transform) { _glamor_gradient_convert_trans_matrix(src_picture->transform, transform_mat, width, height, 1); - dispatch->glUniformMatrix3fv(transform_mat_uniform_location, - 1, 1, &transform_mat[0][0]); + glUniformMatrix3fv(transform_mat_uniform_location, + 1, 1, &transform_mat[0][0]); } else { - dispatch->glUniformMatrix3fv(transform_mat_uniform_location, - 1, 1, &identity_mat[0][0]); + glUniformMatrix3fv(transform_mat_uniform_location, + 1, 1, &identity_mat[0][0]); } if (!_glamor_gradient_set_pixmap_destination @@ -1547,66 +1435,65 @@ glamor_generate_linear_gradient_picture(ScreenPtr screen, if (src_picture->pSourcePict->linear.nstops + 2 <= LINEAR_SMALL_STOPS) { int j = 0; - dispatch->glUniform4f(stop_color0_uniform_location, - stop_colors[4 * j + 0], stop_colors[4 * j + 1], - stop_colors[4 * j + 2], stop_colors[4 * j + 3]); + glUniform4f(stop_color0_uniform_location, + stop_colors[4 * j + 0], stop_colors[4 * j + 1], + stop_colors[4 * j + 2], stop_colors[4 * j + 3]); j++; - dispatch->glUniform4f(stop_color1_uniform_location, - stop_colors[4 * j + 0], stop_colors[4 * j + 1], - stop_colors[4 * j + 2], stop_colors[4 * j + 3]); + glUniform4f(stop_color1_uniform_location, + stop_colors[4 * j + 0], stop_colors[4 * j + 1], + stop_colors[4 * j + 2], stop_colors[4 * j + 3]); j++; - dispatch->glUniform4f(stop_color2_uniform_location, - stop_colors[4 * j + 0], stop_colors[4 * j + 1], - stop_colors[4 * j + 2], stop_colors[4 * j + 3]); + glUniform4f(stop_color2_uniform_location, + stop_colors[4 * j + 0], stop_colors[4 * j + 1], + stop_colors[4 * j + 2], stop_colors[4 * j + 3]); j++; - dispatch->glUniform4f(stop_color3_uniform_location, - stop_colors[4 * j + 0], stop_colors[4 * j + 1], - stop_colors[4 * j + 2], stop_colors[4 * j + 3]); + glUniform4f(stop_color3_uniform_location, + stop_colors[4 * j + 0], stop_colors[4 * j + 1], + stop_colors[4 * j + 2], stop_colors[4 * j + 3]); j++; - dispatch->glUniform4f(stop_color4_uniform_location, - stop_colors[4 * j + 0], stop_colors[4 * j + 1], - stop_colors[4 * j + 2], stop_colors[4 * j + 3]); + glUniform4f(stop_color4_uniform_location, + stop_colors[4 * j + 0], stop_colors[4 * j + 1], + stop_colors[4 * j + 2], stop_colors[4 * j + 3]); j++; - dispatch->glUniform4f(stop_color5_uniform_location, - stop_colors[4 * j + 0], stop_colors[4 * j + 1], - stop_colors[4 * j + 2], stop_colors[4 * j + 3]); + glUniform4f(stop_color5_uniform_location, + stop_colors[4 * j + 0], stop_colors[4 * j + 1], + stop_colors[4 * j + 2], stop_colors[4 * j + 3]); j++; - dispatch->glUniform4f(stop_color6_uniform_location, - stop_colors[4 * j + 0], stop_colors[4 * j + 1], - stop_colors[4 * j + 2], stop_colors[4 * j + 3]); + glUniform4f(stop_color6_uniform_location, + stop_colors[4 * j + 0], stop_colors[4 * j + 1], + stop_colors[4 * j + 2], stop_colors[4 * j + 3]); j++; - dispatch->glUniform4f(stop_color7_uniform_location, - stop_colors[4 * j + 0], stop_colors[4 * j + 1], - stop_colors[4 * j + 2], stop_colors[4 * j + 3]); + glUniform4f(stop_color7_uniform_location, + stop_colors[4 * j + 0], stop_colors[4 * j + 1], + stop_colors[4 * j + 2], stop_colors[4 * j + 3]); j = 0; - dispatch->glUniform1f(stop0_uniform_location, n_stops[j++]); - dispatch->glUniform1f(stop1_uniform_location, n_stops[j++]); - dispatch->glUniform1f(stop2_uniform_location, n_stops[j++]); - dispatch->glUniform1f(stop3_uniform_location, n_stops[j++]); - dispatch->glUniform1f(stop4_uniform_location, n_stops[j++]); - dispatch->glUniform1f(stop5_uniform_location, n_stops[j++]); - dispatch->glUniform1f(stop6_uniform_location, n_stops[j++]); - dispatch->glUniform1f(stop7_uniform_location, n_stops[j++]); - - dispatch->glUniform1i(n_stop_uniform_location, count); + glUniform1f(stop0_uniform_location, n_stops[j++]); + glUniform1f(stop1_uniform_location, n_stops[j++]); + glUniform1f(stop2_uniform_location, n_stops[j++]); + glUniform1f(stop3_uniform_location, n_stops[j++]); + glUniform1f(stop4_uniform_location, n_stops[j++]); + glUniform1f(stop5_uniform_location, n_stops[j++]); + glUniform1f(stop6_uniform_location, n_stops[j++]); + glUniform1f(stop7_uniform_location, n_stops[j++]); + + glUniform1i(n_stop_uniform_location, count); } else { - dispatch->glUniform4fv(stop_colors_uniform_location, count, - stop_colors); - dispatch->glUniform1fv(stops_uniform_location, count, n_stops); - dispatch->glUniform1i(n_stop_uniform_location, count); + glUniform4fv(stop_colors_uniform_location, count, stop_colors); + glUniform1fv(stops_uniform_location, count, n_stops); + glUniform1i(n_stop_uniform_location, count); } if (src_picture->pSourcePict->linear.p2.y == src_picture->pSourcePict->linear.p1.y) { // The horizontal case. - dispatch->glUniform1i(hor_ver_uniform_location, 1); + glUniform1i(hor_ver_uniform_location, 1); DEBUGF("p1.y: %f, p2.y: %f, enter the horizontal case\n", pt1[1], pt2[1]); p1_distance = pt1[0]; pt_distance = (pt2[0] - p1_distance); - dispatch->glUniform1f(p1_distance_uniform_location, p1_distance); - dispatch->glUniform1f(pt_distance_uniform_location, pt_distance); + glUniform1f(p1_distance_uniform_location, p1_distance); + glUniform1f(pt_distance_uniform_location, pt_distance); } else { /* The slope need to compute here. In shader, the viewport set will change @@ -1616,20 +1503,20 @@ glamor_generate_linear_gradient_picture(ScreenPtr screen, (float) (src_picture->pSourcePict->linear.p2.y - src_picture->pSourcePict->linear.p1.y); slope = slope * yscale / xscale; - dispatch->glUniform1f(pt_slope_uniform_location, slope); - dispatch->glUniform1i(hor_ver_uniform_location, 0); + glUniform1f(pt_slope_uniform_location, slope); + glUniform1i(hor_ver_uniform_location, 0); cos_val = sqrt(1.0 / (slope * slope + 1.0)); - dispatch->glUniform1f(cos_val_uniform_location, cos_val); + glUniform1f(cos_val_uniform_location, cos_val); p1_distance = (pt1[1] - pt1[0] * slope) * cos_val; pt_distance = (pt2[1] - pt2[0] * slope) * cos_val - p1_distance; - dispatch->glUniform1f(p1_distance_uniform_location, p1_distance); - dispatch->glUniform1f(pt_distance_uniform_location, pt_distance); + glUniform1f(p1_distance_uniform_location, p1_distance); + glUniform1f(pt_distance_uniform_location, pt_distance); } /* Now rendering. */ - dispatch->glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); + glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); /* Do the clear logic. */ if (stops_count > LINEAR_SMALL_STOPS) { @@ -1637,14 +1524,14 @@ glamor_generate_linear_gradient_picture(ScreenPtr screen, free(stop_colors); } - dispatch->glBindBuffer(GL_ARRAY_BUFFER, 0); - dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); - dispatch->glUseProgram(0); + glDisableVertexAttribArray(GLAMOR_VERTEX_POS); + glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); + glUseProgram(0); - glamor_put_dispatch(glamor_priv); + glamor_put_context(glamor_priv); return dst_picture; GRADIENT_FAIL: @@ -1659,13 +1546,13 @@ glamor_generate_linear_gradient_picture(ScreenPtr screen, free(stop_colors); } - dispatch->glBindBuffer(GL_ARRAY_BUFFER, 0); - dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); - dispatch->glUseProgram(0); - glamor_put_dispatch(glamor_priv); + glDisableVertexAttribArray(GLAMOR_VERTEX_POS); + glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); + glUseProgram(0); + glamor_put_context(glamor_priv); return NULL; } diff --git a/xorg-server/glamor/glamor_picture.c b/xorg-server/glamor/glamor_picture.c index f51a7e459..8bbe2e98b 100644 --- a/xorg-server/glamor/glamor_picture.c +++ b/xorg-server/glamor/glamor_picture.c @@ -93,8 +93,7 @@ glamor_create_picture(PicturePtr picture) * we have to mark this pixmap as a separated texture, and don't * fallback to DDX layer. */ if (pixmap_priv->type == GLAMOR_TEXTURE_DRM - && !glamor_pict_format_is_compatible(picture->format, - pixmap->drawable.depth)) + && !glamor_pict_format_is_compatible(picture)) glamor_set_pixmap_type(pixmap, GLAMOR_SEPARATE_TEXTURE); } } diff --git a/xorg-server/glamor/glamor_pixmap.c b/xorg-server/glamor/glamor_pixmap.c index f7de59c39..77197b5d1 100644 --- a/xorg-server/glamor/glamor_pixmap.c +++ b/xorg-server/glamor/glamor_pixmap.c @@ -66,18 +66,12 @@ void glamor_set_destination_pixmap_fbo(glamor_pixmap_fbo *fbo, int x0, int y0, int width, int height) { - glamor_gl_dispatch *dispatch = glamor_get_dispatch(fbo->glamor_priv); - - dispatch->glBindFramebuffer(GL_FRAMEBUFFER, fbo->fb); -#ifndef GLAMOR_GLES2 - dispatch->glMatrixMode(GL_PROJECTION); - dispatch->glLoadIdentity(); - dispatch->glMatrixMode(GL_MODELVIEW); - dispatch->glLoadIdentity(); -#endif - dispatch->glViewport(x0, y0, width, height); + glamor_get_context(fbo->glamor_priv); + + glBindFramebuffer(GL_FRAMEBUFFER, fbo->fb); + glViewport(x0, y0, width, height); - glamor_put_dispatch(fbo->glamor_priv); + glamor_put_context(fbo->glamor_priv); } void @@ -121,71 +115,387 @@ glamor_set_planemask(PixmapPtr pixmap, unsigned long planemask) } Bool -glamor_set_alu(struct glamor_gl_dispatch *dispatch, unsigned char alu) +glamor_set_alu(ScreenPtr screen, unsigned char alu) { -#ifndef GLAMOR_GLES2 + glamor_screen_private *glamor_priv = glamor_get_screen_private(screen); + + if (glamor_priv->gl_flavor == GLAMOR_GL_ES2) { + if (alu != GXcopy) + return FALSE; + else + return TRUE; + } + if (alu == GXcopy) { - dispatch->glDisable(GL_COLOR_LOGIC_OP); + glDisable(GL_COLOR_LOGIC_OP); return TRUE; } - dispatch->glEnable(GL_COLOR_LOGIC_OP); + glEnable(GL_COLOR_LOGIC_OP); switch (alu) { case GXclear: - dispatch->glLogicOp(GL_CLEAR); + glLogicOp(GL_CLEAR); break; case GXand: - dispatch->glLogicOp(GL_AND); + glLogicOp(GL_AND); break; case GXandReverse: - dispatch->glLogicOp(GL_AND_REVERSE); + glLogicOp(GL_AND_REVERSE); break; case GXandInverted: - dispatch->glLogicOp(GL_AND_INVERTED); + glLogicOp(GL_AND_INVERTED); break; case GXnoop: - dispatch->glLogicOp(GL_NOOP); + glLogicOp(GL_NOOP); break; case GXxor: - dispatch->glLogicOp(GL_XOR); + glLogicOp(GL_XOR); break; case GXor: - dispatch->glLogicOp(GL_OR); + glLogicOp(GL_OR); break; case GXnor: - dispatch->glLogicOp(GL_NOR); + glLogicOp(GL_NOR); break; case GXequiv: - dispatch->glLogicOp(GL_EQUIV); + glLogicOp(GL_EQUIV); break; case GXinvert: - dispatch->glLogicOp(GL_INVERT); + glLogicOp(GL_INVERT); break; case GXorReverse: - dispatch->glLogicOp(GL_OR_REVERSE); + glLogicOp(GL_OR_REVERSE); break; case GXcopyInverted: - dispatch->glLogicOp(GL_COPY_INVERTED); + glLogicOp(GL_COPY_INVERTED); break; case GXorInverted: - dispatch->glLogicOp(GL_OR_INVERTED); + glLogicOp(GL_OR_INVERTED); break; case GXnand: - dispatch->glLogicOp(GL_NAND); + glLogicOp(GL_NAND); break; case GXset: - dispatch->glLogicOp(GL_SET); + glLogicOp(GL_SET); break; default: glamor_fallback("unsupported alu %x\n", alu); return FALSE; } -#else - if (alu != GXcopy) - return FALSE; -#endif + return TRUE; } +/* + * Map picture's format to the correct gl texture format and type. + * no_alpha is used to indicate whehter we need to wire alpha to 1. + * + * Although opengl support A1/GL_BITMAP, we still don't use it + * here, it seems that mesa has bugs when uploading a A1 bitmap. + * + * Return 0 if find a matched texture type. Otherwise return -1. + **/ +static int +glamor_get_tex_format_type_from_pictformat_gl(PictFormatShort format, + GLenum *tex_format, + GLenum *tex_type, + int *no_alpha, + int *revert, + int *swap_rb, int is_upload) +{ + *no_alpha = 0; + *revert = REVERT_NONE; + *swap_rb = is_upload ? SWAP_NONE_UPLOADING : SWAP_NONE_DOWNLOADING; + switch (format) { + case PICT_a1: + *tex_format = GL_ALPHA; + *tex_type = GL_UNSIGNED_BYTE; + *revert = is_upload ? REVERT_UPLOADING_A1 : REVERT_DOWNLOADING_A1; + break; + case PICT_b8g8r8x8: + *no_alpha = 1; + case PICT_b8g8r8a8: + *tex_format = GL_BGRA; + *tex_type = GL_UNSIGNED_INT_8_8_8_8; + break; + + case PICT_x8r8g8b8: + *no_alpha = 1; + case PICT_a8r8g8b8: + *tex_format = GL_BGRA; + *tex_type = GL_UNSIGNED_INT_8_8_8_8_REV; + break; + case PICT_x8b8g8r8: + *no_alpha = 1; + case PICT_a8b8g8r8: + *tex_format = GL_RGBA; + *tex_type = GL_UNSIGNED_INT_8_8_8_8_REV; + break; + case PICT_x2r10g10b10: + *no_alpha = 1; + case PICT_a2r10g10b10: + *tex_format = GL_BGRA; + *tex_type = GL_UNSIGNED_INT_2_10_10_10_REV; + break; + case PICT_x2b10g10r10: + *no_alpha = 1; + case PICT_a2b10g10r10: + *tex_format = GL_RGBA; + *tex_type = GL_UNSIGNED_INT_2_10_10_10_REV; + break; + + case PICT_r5g6b5: + *tex_format = GL_RGB; + *tex_type = GL_UNSIGNED_SHORT_5_6_5; + break; + case PICT_b5g6r5: + *tex_format = GL_RGB; + *tex_type = GL_UNSIGNED_SHORT_5_6_5_REV; + break; + case PICT_x1b5g5r5: + *no_alpha = 1; + case PICT_a1b5g5r5: + *tex_format = GL_RGBA; + *tex_type = GL_UNSIGNED_SHORT_1_5_5_5_REV; + break; + + case PICT_x1r5g5b5: + *no_alpha = 1; + case PICT_a1r5g5b5: + *tex_format = GL_BGRA; + *tex_type = GL_UNSIGNED_SHORT_1_5_5_5_REV; + break; + case PICT_a8: + *tex_format = GL_ALPHA; + *tex_type = GL_UNSIGNED_BYTE; + break; + case PICT_x4r4g4b4: + *no_alpha = 1; + case PICT_a4r4g4b4: + *tex_format = GL_BGRA; + *tex_type = GL_UNSIGNED_SHORT_4_4_4_4_REV; + break; + + case PICT_x4b4g4r4: + *no_alpha = 1; + case PICT_a4b4g4r4: + *tex_format = GL_RGBA; + *tex_type = GL_UNSIGNED_SHORT_4_4_4_4_REV; + break; + + default: + LogMessageVerb(X_INFO, 0, + "fail to get matched format for %x \n", format); + return -1; + } + return 0; +} + +#define IS_LITTLE_ENDIAN (IMAGE_BYTE_ORDER == LSBFirst) + +static int +glamor_get_tex_format_type_from_pictformat_gles2(PictFormatShort format, + GLenum *tex_format, + GLenum *tex_type, + int *no_alpha, + int *revert, + int *swap_rb, int is_upload) +{ + int need_swap_rb = 0; + + *no_alpha = 0; + *revert = IS_LITTLE_ENDIAN ? REVERT_NONE : REVERT_NORMAL; + + switch (format) { + case PICT_b8g8r8x8: + *no_alpha = 1; + case PICT_b8g8r8a8: + *tex_format = GL_RGBA; + *tex_type = GL_UNSIGNED_BYTE; + need_swap_rb = 1; + *revert = IS_LITTLE_ENDIAN ? REVERT_NORMAL : REVERT_NONE; + break; + + case PICT_x8r8g8b8: + *no_alpha = 1; + case PICT_a8r8g8b8: + *tex_format = GL_RGBA; + *tex_type = GL_UNSIGNED_BYTE; + need_swap_rb = 1; + break; + + case PICT_x8b8g8r8: + *no_alpha = 1; + case PICT_a8b8g8r8: + *tex_format = GL_RGBA; + *tex_type = GL_UNSIGNED_BYTE; + break; + + case PICT_x2r10g10b10: + *no_alpha = 1; + case PICT_a2r10g10b10: + *tex_format = GL_RGBA; + /* glReadPixmap doesn't support GL_UNSIGNED_INT_10_10_10_2. + * we have to use GL_UNSIGNED_BYTE and do the conversion in + * shader latter.*/ + *tex_type = GL_UNSIGNED_BYTE; + if (is_upload == 1) { + if (!IS_LITTLE_ENDIAN) + *revert = REVERT_UPLOADING_10_10_10_2; + else + *revert = REVERT_UPLOADING_2_10_10_10; + } + else { + if (!IS_LITTLE_ENDIAN) { + *revert = REVERT_DOWNLOADING_10_10_10_2; + } + else { + *revert = REVERT_DOWNLOADING_2_10_10_10; + } + } + need_swap_rb = 1; + + break; + + case PICT_x2b10g10r10: + *no_alpha = 1; + case PICT_a2b10g10r10: + *tex_format = GL_RGBA; + *tex_type = GL_UNSIGNED_BYTE; + if (is_upload == 1) { + if (!IS_LITTLE_ENDIAN) + *revert = REVERT_UPLOADING_10_10_10_2; + else + *revert = REVERT_UPLOADING_2_10_10_10; + } + else { + if (!IS_LITTLE_ENDIAN) { + *revert = REVERT_DOWNLOADING_10_10_10_2; + } + else { + *revert = REVERT_DOWNLOADING_2_10_10_10; + } + } + break; + + case PICT_r5g6b5: + *tex_format = GL_RGB; + *tex_type = GL_UNSIGNED_SHORT_5_6_5; + *revert = IS_LITTLE_ENDIAN ? REVERT_NONE : REVERT_NORMAL; + + break; + + case PICT_b5g6r5: + *tex_format = GL_RGB; + *tex_type = GL_UNSIGNED_SHORT_5_6_5; + need_swap_rb = IS_LITTLE_ENDIAN ? 1 : 0;; + break; + + case PICT_x1b5g5r5: + *no_alpha = 1; + case PICT_a1b5g5r5: + *tex_format = GL_RGBA; + *tex_type = GL_UNSIGNED_SHORT_5_5_5_1; + if (IS_LITTLE_ENDIAN) { + *revert = + is_upload ? REVERT_UPLOADING_1_5_5_5 : + REVERT_DOWNLOADING_1_5_5_5; + } + else + *revert = REVERT_NONE; + break; + + case PICT_x1r5g5b5: + *no_alpha = 1; + case PICT_a1r5g5b5: + *tex_format = GL_RGBA; + *tex_type = GL_UNSIGNED_SHORT_5_5_5_1; + if (IS_LITTLE_ENDIAN) { + *revert = + is_upload ? REVERT_UPLOADING_1_5_5_5 : + REVERT_DOWNLOADING_1_5_5_5; + } + else + *revert = REVERT_NONE; + need_swap_rb = 1; + break; + + case PICT_a1: + *tex_format = GL_ALPHA; + *tex_type = GL_UNSIGNED_BYTE; + *revert = is_upload ? REVERT_UPLOADING_A1 : REVERT_DOWNLOADING_A1; + break; + + case PICT_a8: + *tex_format = GL_ALPHA; + *tex_type = GL_UNSIGNED_BYTE; + *revert = REVERT_NONE; + break; + + case PICT_x4r4g4b4: + *no_alpha = 1; + case PICT_a4r4g4b4: + *tex_format = GL_RGBA; + *tex_type = GL_UNSIGNED_SHORT_4_4_4_4; + *revert = IS_LITTLE_ENDIAN ? REVERT_NORMAL : REVERT_NONE; + need_swap_rb = 1; + break; + + case PICT_x4b4g4r4: + *no_alpha = 1; + case PICT_a4b4g4r4: + *tex_format = GL_RGBA; + *tex_type = GL_UNSIGNED_SHORT_4_4_4_4; + *revert = IS_LITTLE_ENDIAN ? REVERT_NORMAL : REVERT_NONE; + break; + + default: + LogMessageVerb(X_INFO, 0, + "fail to get matched format for %x \n", format); + return -1; + } + + if (need_swap_rb) + *swap_rb = is_upload ? SWAP_UPLOADING : SWAP_DOWNLOADING; + else + *swap_rb = is_upload ? SWAP_NONE_UPLOADING : SWAP_NONE_DOWNLOADING; + return 0; +} + +static int +glamor_get_tex_format_type_from_pixmap(PixmapPtr pixmap, + GLenum *format, + GLenum *type, + int *no_alpha, + int *revert, int *swap_rb, int is_upload) +{ + glamor_pixmap_private *pixmap_priv; + PictFormatShort pict_format; + glamor_screen_private *glamor_priv = + glamor_get_screen_private(pixmap->drawable.pScreen); + + pixmap_priv = glamor_get_pixmap_private(pixmap); + if (GLAMOR_PIXMAP_PRIV_IS_PICTURE(pixmap_priv)) + pict_format = pixmap_priv->base.picture->format; + else + pict_format = format_for_depth(pixmap->drawable.depth); + + if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) { + return glamor_get_tex_format_type_from_pictformat_gl(pict_format, + format, type, + no_alpha, + revert, + swap_rb, + is_upload); + } else { + return glamor_get_tex_format_type_from_pictformat_gles2(pict_format, + format, type, + no_alpha, + revert, + swap_rb, + is_upload); + } +} + static void * _glamor_color_convert_a1_a8(void *src_bits, void *dst_bits, int w, int h, int stride, int revert) @@ -397,38 +707,35 @@ __glamor_upload_pixmap_to_texture(PixmapPtr pixmap, unsigned int *tex, { glamor_screen_private *glamor_priv = glamor_get_screen_private(pixmap->drawable.pScreen); - glamor_gl_dispatch *dispatch; int non_sub = 0; unsigned int iformat = 0; - dispatch = glamor_get_dispatch(glamor_priv); + glamor_get_context(glamor_priv); if (*tex == 0) { - dispatch->glGenTextures(1, tex); + glGenTextures(1, tex); if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) - gl_iformat_for_depth(pixmap->drawable.depth, &iformat); + iformat = gl_iformat_for_pixmap(pixmap); else iformat = format; non_sub = 1; assert(x == 0 && y == 0); } - dispatch->glBindTexture(GL_TEXTURE_2D, *tex); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - dispatch->glPixelStorei(GL_UNPACK_ALIGNMENT, 4); + glBindTexture(GL_TEXTURE_2D, *tex); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glPixelStorei(GL_UNPACK_ALIGNMENT, 4); if (bits == NULL) - dispatch->glBindBuffer(GL_PIXEL_UNPACK_BUFFER, pbo); + glBindBuffer(GL_PIXEL_UNPACK_BUFFER, pbo); if (non_sub) - dispatch->glTexImage2D(GL_TEXTURE_2D, - 0, iformat, w, h, 0, format, type, bits); + glTexImage2D(GL_TEXTURE_2D, 0, iformat, w, h, 0, format, type, bits); else - dispatch->glTexSubImage2D(GL_TEXTURE_2D, - 0, x, y, w, h, format, type, bits); + glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, w, h, format, type, bits); if (bits == NULL) - dispatch->glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); - glamor_put_dispatch(glamor_priv); + glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); + glamor_put_context(glamor_priv); } static Bool @@ -440,7 +747,6 @@ _glamor_upload_bits_to_pixmap_texture(PixmapPtr pixmap, GLenum format, glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(pixmap); glamor_screen_private *glamor_priv = glamor_get_screen_private(pixmap->drawable.pScreen); - glamor_gl_dispatch *dispatch; static float vertices[8]; static float texcoords[8] = { 0, 1, @@ -526,42 +832,35 @@ _glamor_upload_bits_to_pixmap_texture(PixmapPtr pixmap, GLenum format, x + w, y + h, glamor_priv->yInverted, vertices); /* Slow path, we need to flip y or wire alpha to 1. */ - dispatch = glamor_get_dispatch(glamor_priv); - dispatch->glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, - GL_FALSE, 2 * sizeof(float), vertices); - dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_POS); - dispatch->glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_FLOAT, - GL_FALSE, 2 * sizeof(float), ptexcoords); - dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE); + glamor_get_context(glamor_priv); + glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, + GL_FALSE, 2 * sizeof(float), vertices); + glEnableVertexAttribArray(GLAMOR_VERTEX_POS); + glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_FLOAT, + GL_FALSE, 2 * sizeof(float), ptexcoords); + glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE); glamor_set_destination_pixmap_priv_nc(pixmap_priv); __glamor_upload_pixmap_to_texture(pixmap, &tex, format, type, 0, 0, w, h, bits, pbo); - dispatch->glActiveTexture(GL_TEXTURE0); - dispatch->glBindTexture(GL_TEXTURE_2D, tex); + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, tex); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); -#ifndef GLAMOR_GLES2 - dispatch->glEnable(GL_TEXTURE_2D); -#endif - dispatch->glUseProgram(glamor_priv->finish_access_prog[no_alpha]); - dispatch->glUniform1i(glamor_priv->finish_access_revert[no_alpha], revert); - dispatch->glUniform1i(glamor_priv->finish_access_swap_rb[no_alpha], - swap_rb); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glUseProgram(glamor_priv->finish_access_prog[no_alpha]); + glUniform1i(glamor_priv->finish_access_revert[no_alpha], revert); + glUniform1i(glamor_priv->finish_access_swap_rb[no_alpha], swap_rb); - dispatch->glDrawArrays(GL_TRIANGLE_FAN, 0, 4); + glDrawArrays(GL_TRIANGLE_FAN, 0, 4); -#ifndef GLAMOR_GLES2 - dispatch->glDisable(GL_TEXTURE_2D); -#endif - dispatch->glUseProgram(0); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); - dispatch->glDeleteTextures(1, &tex); - dispatch->glBindFramebuffer(GL_FRAMEBUFFER, 0); + glUseProgram(0); + glDisableVertexAttribArray(GLAMOR_VERTEX_POS); + glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); + glDeleteTextures(1, &tex); + glBindFramebuffer(GL_FRAMEBUFFER, 0); - glamor_put_dispatch(glamor_priv); + glamor_put_context(glamor_priv); if (need_free_bits) free(bits); @@ -615,7 +914,7 @@ glamor_pixmap_upload_prepare(PixmapPtr pixmap, GLenum format, int no_alpha, return 0; if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) - gl_iformat_for_depth(pixmap->drawable.depth, &iformat); + iformat = gl_iformat_for_pixmap(pixmap); else iformat = format; @@ -831,7 +1130,6 @@ glamor_es2_pixmap_read_prepare(PixmapPtr source, int x, int y, int w, int h, glamor_screen_private *glamor_priv; ScreenPtr screen; glamor_pixmap_fbo *temp_fbo; - glamor_gl_dispatch *dispatch; float temp_xscale, temp_yscale, source_xscale, source_yscale; static float vertices[8]; static float texcoords[8]; @@ -844,7 +1142,7 @@ glamor_es2_pixmap_read_prepare(PixmapPtr source, int x, int y, int w, int h, if (temp_fbo == NULL) return NULL; - dispatch = glamor_get_dispatch(glamor_priv); + glamor_get_context(glamor_priv); temp_xscale = 1.0 / w; temp_yscale = 1.0 / h; @@ -852,9 +1150,9 @@ glamor_es2_pixmap_read_prepare(PixmapPtr source, int x, int y, int w, int h, temp_xscale, temp_yscale, 0, 0, w, h, glamor_priv->yInverted, vertices); - dispatch->glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, - GL_FALSE, 2 * sizeof(float), vertices); - dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_POS); + glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, GL_FALSE, + 2 * sizeof(float), vertices); + glEnableVertexAttribArray(GLAMOR_VERTEX_POS); pixmap_priv_get_scale(source_priv, &source_xscale, &source_yscale); glamor_set_normalize_tcoords(source_priv, source_xscale, @@ -863,27 +1161,26 @@ glamor_es2_pixmap_read_prepare(PixmapPtr source, int x, int y, int w, int h, x + w, y + h, glamor_priv->yInverted, texcoords); - dispatch->glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_FLOAT, - GL_FALSE, 2 * sizeof(float), texcoords); - dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE); + glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_FLOAT, GL_FALSE, + 2 * sizeof(float), texcoords); + glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE); - dispatch->glActiveTexture(GL_TEXTURE0); - dispatch->glBindTexture(GL_TEXTURE_2D, source_priv->base.fbo->tex); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, source_priv->base.fbo->tex); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glamor_set_destination_pixmap_fbo(temp_fbo, 0, 0, w, h); - dispatch->glUseProgram(glamor_priv->finish_access_prog[no_alpha]); - dispatch->glUniform1i(glamor_priv->finish_access_revert[no_alpha], revert); - dispatch->glUniform1i(glamor_priv->finish_access_swap_rb[no_alpha], - swap_rb); + glUseProgram(glamor_priv->finish_access_prog[no_alpha]); + glUniform1i(glamor_priv->finish_access_revert[no_alpha], revert); + glUniform1i(glamor_priv->finish_access_swap_rb[no_alpha], swap_rb); - dispatch->glDrawArrays(GL_TRIANGLE_FAN, 0, 4); + glDrawArrays(GL_TRIANGLE_FAN, 0, 4); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); - dispatch->glUseProgram(0); - glamor_put_dispatch(glamor_priv); + glDisableVertexAttribArray(GLAMOR_VERTEX_POS); + glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); + glUseProgram(0); + glamor_put_context(glamor_priv); return temp_fbo; } @@ -905,7 +1202,6 @@ _glamor_download_sub_pixmap_to_cpu(PixmapPtr pixmap, GLenum format, void *data, *read; glamor_screen_private *glamor_priv = glamor_get_screen_private(pixmap->drawable.pScreen); - glamor_gl_dispatch *dispatch; glamor_pixmap_fbo *temp_fbo = NULL; int need_post_conversion = 0; int need_free_data = 0; @@ -964,57 +1260,53 @@ _glamor_download_sub_pixmap_to_cpu(PixmapPtr pixmap, GLenum format, fbo_y_off = 0; } - dispatch = glamor_get_dispatch(glamor_priv); - dispatch->glPixelStorei(GL_PACK_ALIGNMENT, 4); + glamor_get_context(glamor_priv); + glPixelStorei(GL_PACK_ALIGNMENT, 4); if (glamor_priv->has_pack_invert || glamor_priv->yInverted) { if (!glamor_priv->yInverted) { assert(glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP); - dispatch->glPixelStorei(GL_PACK_INVERT_MESA, 1); + glPixelStorei(GL_PACK_INVERT_MESA, 1); } if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP && data == NULL) { assert(pbo > 0); - dispatch->glBindBuffer(GL_PIXEL_PACK_BUFFER, pbo); - dispatch->glBufferData(GL_PIXEL_PACK_BUFFER, - stride * h, NULL, gl_usage); + glBindBuffer(GL_PIXEL_PACK_BUFFER, pbo); + glBufferData(GL_PIXEL_PACK_BUFFER, stride * h, NULL, gl_usage); } - dispatch->glReadPixels(x + fbo_x_off, y + fbo_y_off, w, h, format, type, - data); + glReadPixels(x + fbo_x_off, y + fbo_y_off, w, h, format, type, data); if (!glamor_priv->yInverted) { assert(glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP); - dispatch->glPixelStorei(GL_PACK_INVERT_MESA, 0); + glPixelStorei(GL_PACK_INVERT_MESA, 0); } if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP && bits == NULL) { - bits = dispatch->glMapBuffer(GL_PIXEL_PACK_BUFFER, gl_access); - dispatch->glBindBuffer(GL_PIXEL_PACK_BUFFER, 0); + bits = glMapBuffer(GL_PIXEL_PACK_BUFFER, gl_access); + glBindBuffer(GL_PIXEL_PACK_BUFFER, 0); } } else { unsigned int temp_pbo; int yy; - dispatch = glamor_get_dispatch(glamor_priv); - dispatch->glGenBuffers(1, &temp_pbo); - dispatch->glBindBuffer(GL_PIXEL_PACK_BUFFER, temp_pbo); - dispatch->glBufferData(GL_PIXEL_PACK_BUFFER, - stride * h, NULL, GL_STREAM_READ); - dispatch->glReadPixels(x + fbo_x_off, y + fbo_y_off, w, h, - format, type, 0); - read = dispatch->glMapBuffer(GL_PIXEL_PACK_BUFFER, GL_READ_ONLY); + glamor_get_context(glamor_priv); + glGenBuffers(1, &temp_pbo); + glBindBuffer(GL_PIXEL_PACK_BUFFER, temp_pbo); + glBufferData(GL_PIXEL_PACK_BUFFER, stride * h, NULL, GL_STREAM_READ); + glReadPixels(x + fbo_x_off, y + fbo_y_off, w, h, format, type, 0); + read = glMapBuffer(GL_PIXEL_PACK_BUFFER, GL_READ_ONLY); for (yy = 0; yy < pixmap->drawable.height; yy++) memcpy((char *) data + yy * stride, (char *) read + (h - yy - 1) * stride, stride); - dispatch->glUnmapBuffer(GL_PIXEL_PACK_BUFFER); - dispatch->glBindBuffer(GL_PIXEL_PACK_BUFFER, 0); - dispatch->glDeleteBuffers(1, &temp_pbo); + glUnmapBuffer(GL_PIXEL_PACK_BUFFER); + glBindBuffer(GL_PIXEL_PACK_BUFFER, 0); + glDeleteBuffers(1, &temp_pbo); } - dispatch->glBindFramebuffer(GL_FRAMEBUFFER, 0); - glamor_put_dispatch(glamor_priv); + glBindFramebuffer(GL_FRAMEBUFFER, 0); + glamor_put_context(glamor_priv); if (need_post_conversion) { /* As OpenGL desktop version never enters here. @@ -1168,7 +1460,6 @@ glamor_download_pixmap_to_cpu(PixmapPtr pixmap, glamor_access_t access) void *data = NULL, *dst; glamor_screen_private *glamor_priv = glamor_get_screen_private(pixmap->drawable.pScreen); - glamor_gl_dispatch *dispatch; int pbo = 0; if (!GLAMOR_PIXMAP_PRIV_HAS_FBO(pixmap_priv)) @@ -1189,10 +1480,10 @@ glamor_download_pixmap_to_cpu(PixmapPtr pixmap, glamor_access_t access) data = malloc(stride * pixmap->drawable.height); } else { - dispatch = glamor_get_dispatch(glamor_priv); + glamor_get_context(glamor_priv); if (pixmap_priv->base.fbo->pbo == 0) - dispatch->glGenBuffers(1, &pixmap_priv->base.fbo->pbo); - glamor_put_dispatch(glamor_priv); + glGenBuffers(1, &pixmap_priv->base.fbo->pbo); + glamor_put_context(glamor_priv); pbo = pixmap_priv->base.fbo->pbo; } diff --git a/xorg-server/glamor/glamor_priv.h b/xorg-server/glamor/glamor_priv.h index dc3873013..fe4b42332 100644 --- a/xorg-server/glamor/glamor_priv.h +++ b/xorg-server/glamor/glamor_priv.h @@ -35,23 +35,19 @@ #endif #include "glamor.h" -#ifdef GLAMOR_GLES2 -#include <GLES2/gl2.h> -#include <GLES2/gl2ext.h> - -#define GLAMOR_DEFAULT_PRECISION "precision mediump float;\n" -#include "glamor_glext.h" -#else -#include <GL/gl.h> -#include <GL/glext.h> -#define GLAMOR_DEFAULT_PRECISION -#endif +#include <epoxy/gl.h> + +#define GLAMOR_DEFAULT_PRECISION \ + "#ifdef GL_ES\n" \ + "precision mediump float;\n" \ + "#endif\n" #ifdef RENDER #include "glyphstr.h" #endif #include "glamor_debug.h" +#include "glamor_context.h" #include <list.h> @@ -145,13 +141,6 @@ enum gradient_shader { SHADER_GRADIENT_COUNT, }; -enum gradient_shader_prog { - SHADER_GRADIENT_VS_PROG, - SHADER_GRADIENT_FS_MAIN_PROG, - SHADER_GRADIENT_FS_GETCOLOR_PROG, - SHADER_GRADIENT_PROG_COUNT, -}; - struct glamor_screen_private; struct glamor_pixmap_private; @@ -178,8 +167,6 @@ typedef struct { uint16_t evict; } glamor_glyph_cache_t; -#include "glamor_gl_dispatch.h" - struct glamor_saved_procs { CloseScreenProcPtr close_screen; CreateGCProcPtr create_gc; @@ -202,11 +189,7 @@ struct glamor_saved_procs { SetWindowPixmapProcPtr set_window_pixmap; }; -#ifdef GLAMOR_GLES2 #define CACHE_FORMAT_COUNT 3 -#else -#define CACHE_FORMAT_COUNT 2 -#endif #define CACHE_BUCKET_WCOUNT 4 #define CACHE_BUCKET_HCOUNT 4 @@ -220,8 +203,7 @@ struct glamor_saved_procs { #define RENDER_IDEL_MAX 32 typedef struct glamor_screen_private { - struct glamor_gl_dispatch _dispatch; - int yInverted; + Bool yInverted; unsigned int tick; enum glamor_gl_flavor gl_flavor; int has_pack_invert; @@ -262,9 +244,7 @@ typedef struct glamor_screen_private { /* glamor gradient, 0 for small nstops, 1 for large nstops and 2 for dynamic generate. */ GLint gradient_prog[SHADER_GRADIENT_COUNT][3]; - GLint linear_gradient_shaders[SHADER_GRADIENT_PROG_COUNT][3]; int linear_max_nstops; - GLint radial_gradient_shaders[SHADER_GRADIENT_PROG_COUNT][3]; int radial_max_nstops; /* glamor trapezoid shader. */ @@ -288,6 +268,8 @@ typedef struct glamor_screen_private { /* xv */ GLint xv_prog; + + struct glamor_context ctx; } glamor_screen_private; typedef enum glamor_access { @@ -583,9 +565,8 @@ Bool glamor_stipple(PixmapPtr pixmap, PixmapPtr stipple, unsigned char alu, unsigned long planemask, unsigned long fg_pixel, unsigned long bg_pixel, int stipple_x, int stipple_y); -GLint glamor_compile_glsl_prog(glamor_gl_dispatch *dispatch, GLenum type, - const char *source); -void glamor_link_glsl_prog(glamor_gl_dispatch *dispatch, GLint prog); +GLint glamor_compile_glsl_prog(GLenum type, const char *source); +void glamor_link_glsl_prog(GLint prog); void glamor_get_color_4f_from_pixel(PixmapPtr pixmap, unsigned long fg_pixel, GLfloat *color); @@ -604,7 +585,7 @@ glamor_pixmap_fbo *glamor_es2_pixmap_read_prepare(PixmapPtr source, int x, int no_alpha, int revert, int swap_rb); -Bool glamor_set_alu(struct glamor_gl_dispatch *dispatch, unsigned char alu); +Bool glamor_set_alu(ScreenPtr screen, unsigned char alu); Bool glamor_set_planemask(PixmapPtr pixmap, unsigned long planemask); Bool glamor_change_window_attributes(WindowPtr pWin, unsigned long mask); RegionPtr glamor_bitmap_to_region(PixmapPtr pixmap); @@ -935,6 +916,9 @@ void glamor_composite_rectangles(CARD8 op, xRenderColor *color, int num_rects, xRectangle *rects); +extern _X_EXPORT void glamor_egl_screen_init(ScreenPtr screen, + struct glamor_context *glamor_ctx); + /* glamor_xv */ typedef struct { uint32_t transform_index; diff --git a/xorg-server/glamor/glamor_putimage.c b/xorg-server/glamor/glamor_putimage.c index 6b25bec84..702e89f14 100644 --- a/xorg-server/glamor/glamor_putimage.c +++ b/xorg-server/glamor/glamor_putimage.c @@ -67,27 +67,26 @@ glamor_init_putimage_shaders(ScreenPtr screen) if (!GLEW_ARB_fragment_shader) return; - prog = dispatch->glCreateProgram(); + prog = glCreateProgram(); vs_prog = glamor_compile_glsl_prog(GL_VERTEX_SHADER, xybitmap_vs); fs_prog = glamor_compile_glsl_prog(GL_FRAGMENT_SHADER, xybitmap_fs); - dispatch->glAttachShader(prog, vs_prog); - dispatch->glAttachShader(prog, fs_prog); + glAttachShader(prog, vs_prog); + glAttachShader(prog, fs_prog); glamor_link_glsl_prog(prog); - dispatch->glUseProgram(prog); - sampler_uniform_location = - dispatch->glGetUniformLocation(prog, "bitmap_sampler"); - dispatch->glUniform1i(sampler_uniform_location, 0); + glUseProgram(prog); + sampler_uniform_location = glGetUniformLocation(prog, "bitmap_sampler"); + glUniform1i(sampler_uniform_location, 0); glamor_priv->put_image_xybitmap_fg_uniform_location = - dispatch->glGetUniformLocation(prog, "fg"); + glGetUniformLocation(prog, "fg"); glamor_priv->put_image_xybitmap_bg_uniform_location = - dispatch->glGetUniformLocation(prog, "bg"); + glGetUniformLocation(prog, "bg"); glamor_get_transform_uniform_locations(prog, &glamor_priv-> put_image_xybitmap_transform); glamor_priv->put_image_xybitmap_prog = prog; - dispatch->glUseProgram(0); + glUseProgram(0); #endif } @@ -162,40 +161,37 @@ glamor_put_image_xybitmap(DrawablePtr drawable, GCPtr gc, if (!glamor_set_planemask(pixmap, gc->planemask)) goto fail; - dispatch->glUseProgram(glamor_priv->put_image_xybitmap_prog); + glUseProgram(glamor_priv->put_image_xybitmap_prog); glamor_get_color_4f_from_pixel(pixmap, gc->fgPixel, fg); - dispatch->glUniform4fv - (glamor_priv->put_image_xybitmap_fg_uniform_location, 1, fg); + glUniform4fv(glamor_priv->put_image_xybitmap_fg_uniform_location, 1, fg); glamor_get_color_4f_from_pixel(pixmap, gc->bgPixel, bg); - dispatch->glUniform4fv - (glamor_priv->put_image_xybitmap_bg_uniform_location, 1, bg); - - dispatch->glGenTextures(1, &tex); - dispatch->glActiveTexture(GL_TEXTURE0); - dispatch->glEnable(GL_TEXTURE_2D); - dispatch->glBindTexture(GL_TEXTURE_2D, tex); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - dispatch->glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - dispatch->glPixelStorei(GL_UNPACK_ROW_LENGTH, stride * 8); - dispatch->glPixelStorei(GL_UNPACK_SKIP_PIXELS, left_pad); - dispatch->glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, - w, h, 0, GL_COLOR_INDEX, GL_BITMAP, bits); - dispatch->glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); - dispatch->glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); + glUniform4fv(glamor_priv->put_image_xybitmap_bg_uniform_location, 1, bg); + + glGenTextures(1, &tex); + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, tex); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + glPixelStorei(GL_UNPACK_ROW_LENGTH, stride * 8); + glPixelStorei(GL_UNPACK_SKIP_PIXELS, left_pad); + glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, + w, h, 0, GL_COLOR_INDEX, GL_BITMAP, bits); + glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); + glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0); /* Now that we've set up our bitmap texture and the shader, shove * the destination rectangle through the cliprects and run the * shader on the resulting fragments. */ - dispatch->glVertexPointer(2, GL_FLOAT, 0, dest_coords); - dispatch->glEnableClientState(GL_VERTEX_ARRAY); - dispatch->glClientActiveTexture(GL_TEXTURE0); - dispatch->glTexCoordPointer(2, GL_FLOAT, 0, bitmap_coords); - dispatch->glEnableClientState(GL_TEXTURE_COORD_ARRAY); + glVertexPointer(2, GL_FLOAT, 0, dest_coords); + glEnableClientState(GL_VERTEX_ARRAY); + glClientActiveTexture(GL_TEXTURE0); + glTexCoordPointer(2, GL_FLOAT, 0, bitmap_coords); + glEnableClientState(GL_TEXTURE_COORD_ARRAY); - dispatch->glEnable(GL_SCISSOR_TEST); + glEnable(GL_SCISSOR_TEST); clip = fbGetCompositeClip(gc); for (nbox = REGION_NUM_RECTS(clip), box = REGION_RECTS(clip); nbox--; box++) { int x1 = x; @@ -214,19 +210,17 @@ glamor_put_image_xybitmap(DrawablePtr drawable, GCPtr gc, if (x1 >= x2 || y1 >= y2) continue; - dispatch->glScissor(box->x1, - y_flip(pixmap, box->y1), - box->x2 - box->x1, box->y2 - box->y1); - dispatch->glDrawArrays(GL_QUADS, 0, 4); + glScissor(box->x1, y_flip(pixmap, box->y1), + box->x2 - box->x1, box->y2 - box->y1); + glDrawArrays(GL_QUADS, 0, 4); } - dispatch->glDisable(GL_SCISSOR_TEST); + glDisable(GL_SCISSOR_TEST); glamor_set_alu(GXcopy); glamor_set_planemask(pixmap, ~0); - dispatch->glDeleteTextures(1, &tex); - dispatch->glDisable(GL_TEXTURE_2D); - dispatch->glDisableClientState(GL_VERTEX_ARRAY); - dispatch->glDisableClientState(GL_TEXTURE_COORD_ARRAY); + glDeleteTextures(1, &tex); + glDisableClientState(GL_VERTEX_ARRAY); + glDisableClientState(GL_TEXTURE_COORD_ARRAY); return; glamor_set_alu(GXcopy); glamor_set_planemask(pixmap, ~0); diff --git a/xorg-server/glamor/glamor_render.c b/xorg-server/glamor/glamor_render.c index 4a3a97ccd..093a2151d 100644 --- a/xorg-server/glamor/glamor_render.c +++ b/xorg-server/glamor/glamor_render.c @@ -62,8 +62,7 @@ static struct blendinfo composite_op_info[] = { #define RepeatFix 10 static GLuint -glamor_create_composite_fs(glamor_gl_dispatch *dispatch, - struct shader_key *key) +glamor_create_composite_fs(struct shader_key *key) { const char *repeat_define = "#define RepeatNone 0\n" @@ -266,15 +265,14 @@ glamor_create_composite_fs(glamor_gl_dispatch *dispatch, XNFasprintf(&source, "%s%s%s%s%s%s", repeat_define, relocate_texture, rel_sampler, source_fetch, mask_fetch, in); - prog = glamor_compile_glsl_prog(dispatch, GL_FRAGMENT_SHADER, source); + prog = glamor_compile_glsl_prog(GL_FRAGMENT_SHADER, source); free(source); return prog; } static GLuint -glamor_create_composite_vs(glamor_gl_dispatch *dispatch, - struct shader_key *key) +glamor_create_composite_vs(struct shader_key *key) { const char *main_opening = "attribute vec4 v_position;\n" @@ -304,7 +302,7 @@ glamor_create_composite_vs(glamor_gl_dispatch *dispatch, main_opening, source_coords_setup, mask_coords_setup, main_closing); - prog = glamor_compile_glsl_prog(dispatch, GL_VERTEX_SHADER, source); + prog = glamor_compile_glsl_prog(GL_VERTEX_SHADER, source); free(source); return prog; @@ -317,60 +315,57 @@ glamor_create_composite_shader(ScreenPtr screen, struct shader_key *key, GLuint vs, fs, prog; GLint source_sampler_uniform_location, mask_sampler_uniform_location; glamor_screen_private *glamor_priv = glamor_get_screen_private(screen); - glamor_gl_dispatch *dispatch; - dispatch = glamor_get_dispatch(glamor_priv); - vs = glamor_create_composite_vs(dispatch, key); + glamor_get_context(glamor_priv); + vs = glamor_create_composite_vs(key); if (vs == 0) goto out; - fs = glamor_create_composite_fs(dispatch, key); + fs = glamor_create_composite_fs(key); if (fs == 0) goto out; - prog = dispatch->glCreateProgram(); - dispatch->glAttachShader(prog, vs); - dispatch->glAttachShader(prog, fs); + prog = glCreateProgram(); + glAttachShader(prog, vs); + glAttachShader(prog, fs); - dispatch->glBindAttribLocation(prog, GLAMOR_VERTEX_POS, "v_position"); - dispatch->glBindAttribLocation(prog, GLAMOR_VERTEX_SOURCE, "v_texcoord0"); - dispatch->glBindAttribLocation(prog, GLAMOR_VERTEX_MASK, "v_texcoord1"); + glBindAttribLocation(prog, GLAMOR_VERTEX_POS, "v_position"); + glBindAttribLocation(prog, GLAMOR_VERTEX_SOURCE, "v_texcoord0"); + glBindAttribLocation(prog, GLAMOR_VERTEX_MASK, "v_texcoord1"); - glamor_link_glsl_prog(dispatch, prog); + glamor_link_glsl_prog(prog); shader->prog = prog; - dispatch->glUseProgram(prog); + glUseProgram(prog); if (key->source == SHADER_SOURCE_SOLID) { - shader->source_uniform_location = - dispatch->glGetUniformLocation(prog, "source"); + shader->source_uniform_location = glGetUniformLocation(prog, "source"); } else { source_sampler_uniform_location = - dispatch->glGetUniformLocation(prog, "source_sampler"); - dispatch->glUniform1i(source_sampler_uniform_location, 0); - shader->source_wh = dispatch->glGetUniformLocation(prog, "source_wh"); + glGetUniformLocation(prog, "source_sampler"); + glUniform1i(source_sampler_uniform_location, 0); + shader->source_wh = glGetUniformLocation(prog, "source_wh"); shader->source_repeat_mode = - dispatch->glGetUniformLocation(prog, "source_repeat_mode"); + glGetUniformLocation(prog, "source_repeat_mode"); } if (key->mask != SHADER_MASK_NONE) { if (key->mask == SHADER_MASK_SOLID) { - shader->mask_uniform_location = - dispatch->glGetUniformLocation(prog, "mask"); + shader->mask_uniform_location = glGetUniformLocation(prog, "mask"); } else { mask_sampler_uniform_location = - dispatch->glGetUniformLocation(prog, "mask_sampler"); - dispatch->glUniform1i(mask_sampler_uniform_location, 1); - shader->mask_wh = dispatch->glGetUniformLocation(prog, "mask_wh"); + glGetUniformLocation(prog, "mask_sampler"); + glUniform1i(mask_sampler_uniform_location, 1); + shader->mask_wh = glGetUniformLocation(prog, "mask_wh"); shader->mask_repeat_mode = - dispatch->glGetUniformLocation(prog, "mask_repeat_mode"); + glGetUniformLocation(prog, "mask_repeat_mode"); } } out: - glamor_put_dispatch(glamor_priv); + glamor_put_context(glamor_priv); } static glamor_composite_shader * @@ -407,23 +402,21 @@ void glamor_init_composite_shaders(ScreenPtr screen) { glamor_screen_private *glamor_priv; - glamor_gl_dispatch *dispatch; unsigned short *eb; float *vb = NULL; int eb_size; glamor_priv = glamor_get_screen_private(screen); - dispatch = glamor_get_dispatch(glamor_priv); - dispatch->glGenBuffers(1, &glamor_priv->vbo); - dispatch->glGenBuffers(1, &glamor_priv->ebo); - dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, glamor_priv->ebo); + glamor_get_context(glamor_priv); + glGenBuffers(1, &glamor_priv->vbo); + glGenBuffers(1, &glamor_priv->ebo); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, glamor_priv->ebo); eb_size = GLAMOR_COMPOSITE_VBO_VERT_CNT * sizeof(short) * 2; if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) { - dispatch->glBufferData(GL_ELEMENT_ARRAY_BUFFER, - eb_size, NULL, GL_STATIC_DRAW); - eb = dispatch->glMapBuffer(GL_ELEMENT_ARRAY_BUFFER, GL_WRITE_ONLY); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, eb_size, NULL, GL_STATIC_DRAW); + eb = glMapBuffer(GL_ELEMENT_ARRAY_BUFFER, GL_WRITE_ONLY); } else { vb = malloc(GLAMOR_COMPOSITE_VBO_VERT_CNT * sizeof(float) * 2); @@ -438,51 +431,49 @@ glamor_init_composite_shaders(ScreenPtr screen) glamor_init_eb(eb, GLAMOR_COMPOSITE_VBO_VERT_CNT); if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) { - dispatch->glUnmapBuffer(GL_ELEMENT_ARRAY_BUFFER); - dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + glUnmapBuffer(GL_ELEMENT_ARRAY_BUFFER); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); } else { - dispatch->glBufferData(GL_ELEMENT_ARRAY_BUFFER, - eb_size, eb, GL_STATIC_DRAW); - dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, eb_size, eb, GL_STATIC_DRAW); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - dispatch->glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo); - dispatch->glBufferData(GL_ARRAY_BUFFER, - GLAMOR_COMPOSITE_VBO_VERT_CNT * sizeof(float) * - 2, NULL, GL_DYNAMIC_DRAW); - dispatch->glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo); + glBufferData(GL_ARRAY_BUFFER, + GLAMOR_COMPOSITE_VBO_VERT_CNT * sizeof(float) * + 2, NULL, GL_DYNAMIC_DRAW); + glBindBuffer(GL_ARRAY_BUFFER, 0); free(eb); glamor_priv->vb = (char *) vb; } - glamor_put_dispatch(glamor_priv); + glamor_put_context(glamor_priv); } void glamor_fini_composite_shaders(ScreenPtr screen) { glamor_screen_private *glamor_priv; - glamor_gl_dispatch *dispatch; glamor_composite_shader *shader; int i, j, k; glamor_priv = glamor_get_screen_private(screen); - dispatch = glamor_get_dispatch(glamor_priv); - dispatch->glDeleteBuffers(1, &glamor_priv->vbo); - dispatch->glDeleteBuffers(1, &glamor_priv->ebo); + glamor_get_context(glamor_priv); + glDeleteBuffers(1, &glamor_priv->vbo); + glDeleteBuffers(1, &glamor_priv->ebo); for (i = 0; i < SHADER_SOURCE_COUNT; i++) for (j = 0; j < SHADER_MASK_COUNT; j++) for (k = 0; k < SHADER_IN_COUNT; k++) { shader = &glamor_priv->composite_shader[i][j][k]; if (shader->prog) - dispatch->glDeleteProgram(shader->prog); + glDeleteProgram(shader->prog); } if (glamor_priv->gl_flavor != GLAMOR_GL_DESKTOP && glamor_priv->vb) free(glamor_priv->vb); - glamor_put_dispatch(glamor_priv); + glamor_put_context(glamor_priv); } static Bool @@ -535,44 +526,37 @@ glamor_set_composite_texture(glamor_screen_private *glamor_priv, int unit, glamor_pixmap_private *pixmap_priv, GLuint wh_location, GLuint repeat_location) { - glamor_gl_dispatch *dispatch; float wh[4]; int repeat_type; - dispatch = glamor_get_dispatch(glamor_priv); - dispatch->glActiveTexture(GL_TEXTURE0 + unit); - dispatch->glBindTexture(GL_TEXTURE_2D, pixmap_priv->base.fbo->tex); + glamor_get_context(glamor_priv); + glActiveTexture(GL_TEXTURE0 + unit); + glBindTexture(GL_TEXTURE_2D, pixmap_priv->base.fbo->tex); repeat_type = picture->repeatType; switch (picture->repeatType) { case RepeatNone: -#ifndef GLAMOR_GLES2 - /* XXX GLES2 doesn't support GL_CLAMP_TO_BORDER. */ - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, - GL_CLAMP_TO_BORDER); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, - GL_CLAMP_TO_BORDER); -#else - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, - GL_CLAMP_TO_EDGE); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, - GL_CLAMP_TO_EDGE); -#endif + if (glamor_priv->gl_flavor != GLAMOR_GL_ES2) { + /* XXX GLES2 doesn't support GL_CLAMP_TO_BORDER. */ + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, + GL_CLAMP_TO_BORDER); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, + GL_CLAMP_TO_BORDER); + } else { + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + } break; case RepeatNormal: - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); break; case RepeatPad: - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, - GL_CLAMP_TO_EDGE); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, - GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); break; case RepeatReflect: - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, - GL_MIRRORED_REPEAT); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, - GL_MIRRORED_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_MIRRORED_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT); break; } @@ -580,23 +564,16 @@ glamor_set_composite_texture(glamor_screen_private *glamor_priv, int unit, default: case PictFilterFast: case PictFilterNearest: - dispatch->glTexParameteri(GL_TEXTURE_2D, - GL_TEXTURE_MIN_FILTER, GL_NEAREST); - dispatch->glTexParameteri(GL_TEXTURE_2D, - GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); break; case PictFilterGood: case PictFilterBest: case PictFilterBilinear: - dispatch->glTexParameteri(GL_TEXTURE_2D, - GL_TEXTURE_MIN_FILTER, GL_LINEAR); - dispatch->glTexParameteri(GL_TEXTURE_2D, - GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); break; } -#ifndef GLAMOR_GLES2 - dispatch->glEnable(GL_TEXTURE_2D); -#endif /* * GLES2 doesn't support RepeatNone. We need to fix it anyway. @@ -615,19 +592,18 @@ glamor_set_composite_texture(glamor_screen_private *glamor_priv, int unit, if ((wh[0] != 1.0 || wh[1] != 1.0) || (glamor_priv->gl_flavor == GLAMOR_GL_ES2 && repeat_type == RepeatFix)) - dispatch->glUniform4fv(wh_location, 1, wh); + glUniform4fv(wh_location, 1, wh); else repeat_type -= RepeatFix; } - dispatch->glUniform1i(repeat_location, repeat_type); - glamor_put_dispatch(glamor_priv); + glUniform1i(repeat_location, repeat_type); + glamor_put_context(glamor_priv); } static void -glamor_set_composite_solid(glamor_gl_dispatch *dispatch, float *color, - GLint uniform_location) +glamor_set_composite_solid(float *color, GLint uniform_location) { - dispatch->glUniform4fv(uniform_location, 1, color); + glUniform4fv(uniform_location, 1, color); } static int @@ -729,7 +705,6 @@ void glamor_setup_composite_vbo(ScreenPtr screen, int n_verts) { glamor_screen_private *glamor_priv = glamor_get_screen_private(screen); - glamor_gl_dispatch *dispatch; int vert_size; glamor_priv->render_nr_verts = 0; @@ -741,65 +716,54 @@ glamor_setup_composite_vbo(ScreenPtr screen, int n_verts) vert_size = n_verts * glamor_priv->vb_stride; - dispatch = glamor_get_dispatch(glamor_priv); - dispatch->glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo); + glamor_get_context(glamor_priv); + glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo); if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) { if (glamor_priv->vbo_size < (glamor_priv->vbo_offset + vert_size)) { glamor_priv->vbo_size = GLAMOR_COMPOSITE_VBO_VERT_CNT * glamor_priv->vb_stride; glamor_priv->vbo_offset = 0; - dispatch->glBufferData(GL_ARRAY_BUFFER, - glamor_priv->vbo_size, NULL, GL_STREAM_DRAW); + glBufferData(GL_ARRAY_BUFFER, + glamor_priv->vbo_size, NULL, GL_STREAM_DRAW); } - glamor_priv->vb = dispatch->glMapBufferRange(GL_ARRAY_BUFFER, - glamor_priv->vbo_offset, - vert_size, - GL_MAP_WRITE_BIT | - GL_MAP_UNSYNCHRONIZED_BIT); + glamor_priv->vb = glMapBufferRange(GL_ARRAY_BUFFER, + glamor_priv->vbo_offset, + vert_size, + GL_MAP_WRITE_BIT | + GL_MAP_UNSYNCHRONIZED_BIT); assert(glamor_priv->vb != NULL); glamor_priv->vb -= glamor_priv->vbo_offset; } else glamor_priv->vbo_offset = 0; - dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, glamor_priv->ebo); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, glamor_priv->ebo); - dispatch->glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, - GL_FALSE, glamor_priv->vb_stride, - (void *) ((long) - glamor_priv->vbo_offset)); - dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_POS); + glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, GL_FALSE, + glamor_priv->vb_stride, + (void *) ((long) + glamor_priv->vbo_offset)); + glEnableVertexAttribArray(GLAMOR_VERTEX_POS); if (glamor_priv->has_source_coords) { - dispatch->glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, - GL_FLOAT, GL_FALSE, - glamor_priv->vb_stride, (void *) ((long) - glamor_priv-> - vbo_offset - + - 2 * - sizeof - (float))); - dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE); + glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, + GL_FLOAT, GL_FALSE, + glamor_priv->vb_stride, + (void *) ((long) glamor_priv->vbo_offset + + 2 * sizeof(float))); + glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE); } if (glamor_priv->has_mask_coords) { - dispatch->glVertexAttribPointer(GLAMOR_VERTEX_MASK, 2, - GL_FLOAT, GL_FALSE, - glamor_priv->vb_stride, (void *) ((long) - glamor_priv-> - vbo_offset - + - (glamor_priv-> - has_source_coords - ? 4 : - 2) * - sizeof - (float))); - dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_MASK); - } - glamor_put_dispatch(glamor_priv); + glVertexAttribPointer(GLAMOR_VERTEX_MASK, 2, GL_FLOAT, GL_FALSE, + glamor_priv->vb_stride, + (void *) ((long) glamor_priv->vbo_offset + + (glamor_priv->has_source_coords ? + 4 : 2) * sizeof(float))); + glEnableVertexAttribArray(GLAMOR_VERTEX_MASK); + } + glamor_put_context(glamor_priv); } void @@ -831,32 +795,29 @@ static void glamor_flush_composite_rects(ScreenPtr screen) { glamor_screen_private *glamor_priv = glamor_get_screen_private(screen); - glamor_gl_dispatch *dispatch; - dispatch = glamor_get_dispatch(glamor_priv); + glamor_get_context(glamor_priv); if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) - dispatch->glUnmapBuffer(GL_ARRAY_BUFFER); + glUnmapBuffer(GL_ARRAY_BUFFER); else { - dispatch->glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo); - dispatch->glBufferData(GL_ARRAY_BUFFER, - glamor_priv->vbo_offset, - glamor_priv->vb, GL_DYNAMIC_DRAW); + glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo); + glBufferData(GL_ARRAY_BUFFER, glamor_priv->vbo_offset, + glamor_priv->vb, GL_DYNAMIC_DRAW); } if (!glamor_priv->render_nr_verts) return; -#ifndef GLAMOR_GLES2 - dispatch->glDrawRangeElements(GL_TRIANGLES, 0, glamor_priv->render_nr_verts, - (glamor_priv->render_nr_verts * 3) / 2, - GL_UNSIGNED_SHORT, NULL); -#else - dispatch->glDrawElements(GL_TRIANGLES, - (glamor_priv->render_nr_verts * 3) / 2, - GL_UNSIGNED_SHORT, NULL); -#endif - glamor_put_dispatch(glamor_priv); + if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) { + glDrawRangeElements(GL_TRIANGLES, 0, glamor_priv->render_nr_verts, + (glamor_priv->render_nr_verts * 3) / 2, + GL_UNSIGNED_SHORT, NULL); + } else { + glDrawElements(GL_TRIANGLES, (glamor_priv->render_nr_verts * 3) / 2, + GL_UNSIGNED_SHORT, NULL); + } + glamor_put_context(glamor_priv); } int pict_format_combine_tab[][3] = { @@ -1228,17 +1189,15 @@ glamor_composite_set_shader_blend(glamor_pixmap_private *dest_priv, glamor_composite_shader *shader, struct blendinfo *op_info) { - glamor_gl_dispatch *dispatch; glamor_screen_private *glamor_priv; glamor_priv = dest_priv->base.glamor_priv; - dispatch = glamor_get_dispatch(glamor_priv); - dispatch->glUseProgram(shader->prog); + glamor_get_context(glamor_priv); + glUseProgram(shader->prog); if (key->source == SHADER_SOURCE_SOLID) { - glamor_set_composite_solid(dispatch, - shader->source_solid_color, + glamor_set_composite_solid(shader->source_solid_color, shader->source_uniform_location); } else { @@ -1250,8 +1209,7 @@ glamor_composite_set_shader_blend(glamor_pixmap_private *dest_priv, if (key->mask != SHADER_MASK_NONE) { if (key->mask == SHADER_MASK_SOLID) { - glamor_set_composite_solid(dispatch, - shader->mask_solid_color, + glamor_set_composite_solid(shader->mask_solid_color, shader->mask_uniform_location); } else { @@ -1263,14 +1221,14 @@ glamor_composite_set_shader_blend(glamor_pixmap_private *dest_priv, } if (op_info->source_blend == GL_ONE && op_info->dest_blend == GL_ZERO) { - dispatch->glDisable(GL_BLEND); + glDisable(GL_BLEND); } else { - dispatch->glEnable(GL_BLEND); - dispatch->glBlendFunc(op_info->source_blend, op_info->dest_blend); + glEnable(GL_BLEND); + glBlendFunc(op_info->source_blend, op_info->dest_blend); } - glamor_put_dispatch(glamor_priv); + glamor_put_context(glamor_priv); } static Bool @@ -1289,7 +1247,6 @@ glamor_composite_with_shader(CARD8 op, PixmapPtr dest_pixmap = dest_pixmap_priv->base.pixmap; PixmapPtr source_pixmap = NULL; PixmapPtr mask_pixmap = NULL; - glamor_gl_dispatch *dispatch = NULL; GLfloat dst_xscale, dst_yscale; GLfloat mask_xscale = 1, mask_yscale = 1, src_xscale = 1, src_yscale = 1; struct shader_key key, key_ca; @@ -1328,7 +1285,7 @@ glamor_composite_with_shader(CARD8 op, glamor_set_destination_pixmap_priv_nc(dest_pixmap_priv); glamor_composite_set_shader_blend(dest_pixmap_priv, &key, shader, &op_info); - dispatch = glamor_get_dispatch(glamor_priv); + glamor_get_context(glamor_priv); glamor_priv->has_source_coords = key.source != SHADER_SOURCE_SOLID; glamor_priv->has_mask_coords = (key.mask != SHADER_MASK_NONE && @@ -1445,25 +1402,19 @@ glamor_composite_with_shader(CARD8 op, } } - dispatch->glBindBuffer(GL_ARRAY_BUFFER, 0); - dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_MASK); - dispatch->glDisable(GL_BLEND); -#ifndef GLAMOR_GLES2 - dispatch->glActiveTexture(GL_TEXTURE0); - dispatch->glDisable(GL_TEXTURE_2D); - dispatch->glActiveTexture(GL_TEXTURE1); - dispatch->glDisable(GL_TEXTURE_2D); -#endif + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + glDisableVertexAttribArray(GLAMOR_VERTEX_POS); + glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); + glDisableVertexAttribArray(GLAMOR_VERTEX_MASK); + glDisable(GL_BLEND); DEBUGF("finish rendering.\n"); - dispatch->glUseProgram(0); + glUseProgram(0); glamor_priv->state = RENDER_STATE; glamor_priv->render_idle_cnt = 0; if (saved_source_format) source->format = saved_source_format; - glamor_put_dispatch(glamor_priv); + glamor_put_context(glamor_priv); ret = TRUE; return ret; diff --git a/xorg-server/glamor/glamor_tile.c b/xorg-server/glamor/glamor_tile.c index 9c8e521b9..7288af30e 100644 --- a/xorg-server/glamor/glamor_tile.c +++ b/xorg-server/glamor/glamor_tile.c @@ -37,7 +37,6 @@ void glamor_init_tile_shader(ScreenPtr screen) { glamor_screen_private *glamor_priv; - glamor_gl_dispatch *dispatch; const char *tile_vs = "attribute vec4 v_position;\n" "attribute vec4 v_texcoord0;\n" @@ -63,40 +62,39 @@ glamor_init_tile_shader(ScreenPtr screen) GLint sampler_uniform_location; glamor_priv = glamor_get_screen_private(screen); - dispatch = glamor_get_dispatch(glamor_priv); - glamor_priv->tile_prog = dispatch->glCreateProgram(); - vs_prog = glamor_compile_glsl_prog(dispatch, GL_VERTEX_SHADER, tile_vs); - fs_prog = glamor_compile_glsl_prog(dispatch, GL_FRAGMENT_SHADER, tile_fs); - dispatch->glAttachShader(glamor_priv->tile_prog, vs_prog); - dispatch->glAttachShader(glamor_priv->tile_prog, fs_prog); - - dispatch->glBindAttribLocation(glamor_priv->tile_prog, - GLAMOR_VERTEX_POS, "v_position"); - dispatch->glBindAttribLocation(glamor_priv->tile_prog, - GLAMOR_VERTEX_SOURCE, "v_texcoord0"); - glamor_link_glsl_prog(dispatch, glamor_priv->tile_prog); + glamor_get_context(glamor_priv); + glamor_priv->tile_prog = glCreateProgram(); + vs_prog = glamor_compile_glsl_prog(GL_VERTEX_SHADER, tile_vs); + fs_prog = glamor_compile_glsl_prog(GL_FRAGMENT_SHADER, tile_fs); + glAttachShader(glamor_priv->tile_prog, vs_prog); + glAttachShader(glamor_priv->tile_prog, fs_prog); + + glBindAttribLocation(glamor_priv->tile_prog, + GLAMOR_VERTEX_POS, "v_position"); + glBindAttribLocation(glamor_priv->tile_prog, + GLAMOR_VERTEX_SOURCE, "v_texcoord0"); + glamor_link_glsl_prog(glamor_priv->tile_prog); sampler_uniform_location = - dispatch->glGetUniformLocation(glamor_priv->tile_prog, "sampler"); - dispatch->glUseProgram(glamor_priv->tile_prog); - dispatch->glUniform1i(sampler_uniform_location, 0); + glGetUniformLocation(glamor_priv->tile_prog, "sampler"); + glUseProgram(glamor_priv->tile_prog); + glUniform1i(sampler_uniform_location, 0); glamor_priv->tile_wh = - dispatch->glGetUniformLocation(glamor_priv->tile_prog, "wh"); - dispatch->glUseProgram(0); - glamor_put_dispatch(glamor_priv); + glGetUniformLocation(glamor_priv->tile_prog, "wh"); + glUseProgram(0); + glamor_put_context(glamor_priv); } void glamor_fini_tile_shader(ScreenPtr screen) { glamor_screen_private *glamor_priv; - glamor_gl_dispatch *dispatch; glamor_priv = glamor_get_screen_private(screen); - dispatch = glamor_get_dispatch(glamor_priv); - dispatch->glDeleteProgram(glamor_priv->tile_prog); - glamor_put_dispatch(glamor_priv); + glamor_get_context(glamor_priv); + glDeleteProgram(glamor_priv->tile_prog); + glamor_put_context(glamor_priv); } static void @@ -105,7 +103,6 @@ _glamor_tile(PixmapPtr pixmap, PixmapPtr tile, { ScreenPtr screen = pixmap->drawable.pScreen; glamor_screen_private *glamor_priv = glamor_get_screen_private(screen); - glamor_gl_dispatch *dispatch; int x1 = x; int x2 = x + width; int y1 = y; @@ -127,47 +124,40 @@ _glamor_tile(PixmapPtr pixmap, PixmapPtr tile, glamor_set_destination_pixmap_priv_nc(dst_pixmap_priv); pixmap_priv_get_dest_scale(dst_pixmap_priv, &dst_xscale, &dst_yscale); pixmap_priv_get_scale(src_pixmap_priv, &src_xscale, &src_yscale); - dispatch = glamor_get_dispatch(glamor_priv); - dispatch->glUseProgram(glamor_priv->tile_prog); + glamor_get_context(glamor_priv); + glUseProgram(glamor_priv->tile_prog); glamor_pixmap_fbo_fix_wh_ratio(wh, src_pixmap_priv); - dispatch->glUniform2fv(glamor_priv->tile_wh, 1, wh); - dispatch->glActiveTexture(GL_TEXTURE0); - dispatch->glBindTexture(GL_TEXTURE_2D, src_pixmap_priv->base.fbo->tex); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); -#ifndef GLAMOR_GLES2 - dispatch->glEnable(GL_TEXTURE_2D); -#endif + glUniform2fv(glamor_priv->tile_wh, 1, wh); + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, src_pixmap_priv->base.fbo->tex); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glamor_set_repeat_normalize_tcoords (src_pixmap_priv, RepeatNormal, src_xscale, src_yscale, tile_x1, tile_y1, tile_x2, tile_y2, glamor_priv->yInverted, source_texcoords); - dispatch->glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, - GL_FLOAT, GL_FALSE, - 2 * sizeof(float), source_texcoords); - dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE); + glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_FLOAT, GL_FALSE, + 2 * sizeof(float), source_texcoords); + glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE); glamor_set_normalize_vcoords(dst_pixmap_priv, dst_xscale, dst_yscale, x1, y1, x2, y2, glamor_priv->yInverted, vertices); - dispatch->glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, - GL_FALSE, 2 * sizeof(float), vertices); - dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_POS); - dispatch->glDrawArrays(GL_TRIANGLE_FAN, 0, 4); + glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, GL_FALSE, + 2 * sizeof(float), vertices); + glEnableVertexAttribArray(GLAMOR_VERTEX_POS); + glDrawArrays(GL_TRIANGLE_FAN, 0, 4); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); -#ifndef GLAMOR_GLES2 - dispatch->glDisable(GL_TEXTURE_2D); -#endif - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS); - dispatch->glUseProgram(0); - glamor_put_dispatch(glamor_priv); + glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); + glDisableVertexAttribArray(GLAMOR_VERTEX_POS); + glUseProgram(0); + glamor_put_context(glamor_priv); glamor_priv->state = RENDER_STATE; glamor_priv->render_idle_cnt = 0; @@ -182,7 +172,6 @@ glamor_tile(PixmapPtr pixmap, PixmapPtr tile, glamor_screen_private *glamor_priv = glamor_get_screen_private(screen); glamor_pixmap_private *dst_pixmap_priv; glamor_pixmap_private *src_pixmap_priv; - glamor_gl_dispatch *dispatch; dst_pixmap_priv = glamor_get_pixmap_private(pixmap); src_pixmap_priv = glamor_get_pixmap_private(tile); @@ -206,10 +195,10 @@ glamor_tile(PixmapPtr pixmap, PixmapPtr tile, goto fail; } - dispatch = glamor_get_dispatch(glamor_priv); - if (!glamor_set_alu(dispatch, alu)) { + glamor_get_context(glamor_priv); + if (!glamor_set_alu(screen, alu)) { glamor_fallback("unsupported alu %x\n", alu); - glamor_put_dispatch(glamor_priv); + glamor_put_context(glamor_priv); goto fail; } @@ -302,8 +291,8 @@ glamor_tile(PixmapPtr pixmap, PixmapPtr tile, else _glamor_tile(pixmap, tile, x, y, width, height, tile_x, tile_y); - glamor_set_alu(dispatch, GXcopy); - glamor_put_dispatch(glamor_priv); + glamor_set_alu(screen, GXcopy); + glamor_put_context(glamor_priv); return TRUE; fail: return FALSE; diff --git a/xorg-server/glamor/glamor_trapezoid.c b/xorg-server/glamor/glamor_trapezoid.c index cd99a4782..7bc925a25 100644 --- a/xorg-server/glamor/glamor_trapezoid.c +++ b/xorg-server/glamor/glamor_trapezoid.c @@ -204,24 +204,22 @@ static void glamor_flush_composite_triangles(ScreenPtr screen) { glamor_screen_private *glamor_priv = glamor_get_screen_private(screen); - glamor_gl_dispatch *dispatch; - dispatch = glamor_get_dispatch(glamor_priv); + glamor_get_context(glamor_priv); if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) - dispatch->glUnmapBuffer(GL_ARRAY_BUFFER); + glUnmapBuffer(GL_ARRAY_BUFFER); else { - dispatch->glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo); - dispatch->glBufferData(GL_ARRAY_BUFFER, - glamor_priv->vbo_offset, - glamor_priv->vb, GL_DYNAMIC_DRAW); + glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo); + glBufferData(GL_ARRAY_BUFFER, glamor_priv->vbo_offset, + glamor_priv->vb, GL_DYNAMIC_DRAW); } if (!glamor_priv->render_nr_verts) return; - dispatch->glDrawArrays(GL_TRIANGLES, 0, glamor_priv->render_nr_verts); - glamor_put_dispatch(glamor_priv); + glDrawArrays(GL_TRIANGLES, 0, glamor_priv->render_nr_verts); + glamor_put_context(glamor_priv); } static Bool @@ -582,7 +580,6 @@ static void glamor_setup_composite_vbo_for_trapezoid(ScreenPtr screen, int n_verts) { glamor_screen_private *glamor_priv = glamor_get_screen_private(screen); - glamor_gl_dispatch *dispatch; int stride; int vert_size; @@ -605,25 +602,25 @@ glamor_setup_composite_vbo_for_trapezoid(ScreenPtr screen, int n_verts) vert_size = n_verts * glamor_priv->vb_stride; - dispatch = glamor_get_dispatch(glamor_priv); + glamor_get_context(glamor_priv); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_TOP_BOTTOM); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_LEFT_PARAM); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_RIGHT_PARAM); + glDisableVertexAttribArray(GLAMOR_VERTEX_POS); + glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); + glDisableVertexAttribArray(GLAMOR_VERTEX_TOP_BOTTOM); + glDisableVertexAttribArray(GLAMOR_VERTEX_LEFT_PARAM); + glDisableVertexAttribArray(GLAMOR_VERTEX_RIGHT_PARAM); - dispatch->glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo); + glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo); if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) { if (glamor_priv->vbo_size < (glamor_priv->vbo_offset + vert_size)) { glamor_priv->vbo_size = GLAMOR_COMPOSITE_VBO_VERT_CNT * glamor_priv->vb_stride; glamor_priv->vbo_offset = 0; - dispatch->glBufferData(GL_ARRAY_BUFFER, - glamor_priv->vbo_size, NULL, GL_STREAM_DRAW); + glBufferData(GL_ARRAY_BUFFER, + glamor_priv->vbo_size, NULL, GL_STREAM_DRAW); } - glamor_priv->vb = dispatch->glMapBufferRange(GL_ARRAY_BUFFER, + glamor_priv->vb = glMapBufferRange(GL_ARRAY_BUFFER, glamor_priv->vbo_offset, vert_size, GL_MAP_WRITE_BIT | @@ -636,43 +633,43 @@ glamor_setup_composite_vbo_for_trapezoid(ScreenPtr screen, int n_verts) glamor_priv->vbo_offset = 0; } - dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, glamor_priv->ebo); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, glamor_priv->ebo); /* Set the vertex pointer. */ - dispatch->glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, - GL_FALSE, glamor_priv->vb_stride, - (void *) ((long) glamor_priv->vbo_offset)); - dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_POS); + glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, + GL_FALSE, glamor_priv->vb_stride, + (void *) ((long) glamor_priv->vbo_offset)); + glEnableVertexAttribArray(GLAMOR_VERTEX_POS); stride = 2; - dispatch->glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_FLOAT, - GL_FALSE, glamor_priv->vb_stride, - (void *) ((long) glamor_priv->vbo_offset + - stride * sizeof(float))); - dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE); + glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, GL_FLOAT, + GL_FALSE, glamor_priv->vb_stride, + (void *) ((long) glamor_priv->vbo_offset + + stride * sizeof(float))); + glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE); stride += 2; - dispatch->glVertexAttribPointer(GLAMOR_VERTEX_TOP_BOTTOM, 2, GL_FLOAT, + glVertexAttribPointer(GLAMOR_VERTEX_TOP_BOTTOM, 2, GL_FLOAT, GL_FALSE, glamor_priv->vb_stride, (void *) ((long) glamor_priv->vbo_offset + stride * sizeof(float))); - dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_TOP_BOTTOM); + glEnableVertexAttribArray(GLAMOR_VERTEX_TOP_BOTTOM); stride += 2; - dispatch->glVertexAttribPointer(GLAMOR_VERTEX_LEFT_PARAM, 4, GL_FLOAT, + glVertexAttribPointer(GLAMOR_VERTEX_LEFT_PARAM, 4, GL_FLOAT, GL_FALSE, glamor_priv->vb_stride, (void *) ((long) glamor_priv->vbo_offset + stride * sizeof(float))); - dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_LEFT_PARAM); + glEnableVertexAttribArray(GLAMOR_VERTEX_LEFT_PARAM); stride += 4; - dispatch->glVertexAttribPointer(GLAMOR_VERTEX_RIGHT_PARAM, 4, GL_FLOAT, + glVertexAttribPointer(GLAMOR_VERTEX_RIGHT_PARAM, 4, GL_FLOAT, GL_FALSE, glamor_priv->vb_stride, (void *) ((long) glamor_priv->vbo_offset + stride * sizeof(float))); - dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_RIGHT_PARAM); + glEnableVertexAttribArray(GLAMOR_VERTEX_RIGHT_PARAM); - glamor_put_dispatch(glamor_priv); + glamor_put_context(glamor_priv); } static Bool @@ -701,7 +698,6 @@ _glamor_trapezoids_with_shader(CARD8 op, GLfloat dst_xscale, dst_yscale; BoxRec bounds; PicturePtr temp_src = src; - glamor_gl_dispatch *dispatch = NULL; int vert_stride = 3; int ntriangle_per_loop; int nclip_rect; @@ -815,6 +811,8 @@ _glamor_trapezoids_with_shader(CARD8 op, goto TRAPEZOID_OUT; } + glamor_get_context(glamor_priv); + box = REGION_RECTS(®ion); nbox = REGION_NUM_RECTS(®ion); pbox = box; @@ -833,8 +831,6 @@ _glamor_trapezoids_with_shader(CARD8 op, glamor_priv->has_mask_coords = (key.mask != SHADER_MASK_NONE && key.mask != SHADER_MASK_SOLID); - dispatch = glamor_get_dispatch(glamor_priv); - glamor_get_drawable_deltas(dst->pDrawable, dest_pixmap, &dest_x_off, &dest_y_off); @@ -974,19 +970,14 @@ _glamor_trapezoids_with_shader(CARD8 op, ret = TRUE; TRAPEZOID_RESET_GL: - dispatch->glBindBuffer(GL_ARRAY_BUFFER, 0); - dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_MASK); - dispatch->glDisable(GL_BLEND); -#ifndef GLAMOR_GLES2 - dispatch->glActiveTexture(GL_TEXTURE0); - dispatch->glDisable(GL_TEXTURE_2D); - dispatch->glActiveTexture(GL_TEXTURE1); - dispatch->glDisable(GL_TEXTURE_2D); -#endif - dispatch->glUseProgram(0); + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + glDisableVertexAttribArray(GLAMOR_VERTEX_POS); + glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); + glDisableVertexAttribArray(GLAMOR_VERTEX_MASK); + glDisable(GL_BLEND); + glUseProgram(0); + glamor_put_context(glamor_priv); TRAPEZOID_OUT: if (box) { @@ -1002,10 +993,6 @@ _glamor_trapezoids_with_shader(CARD8 op, } } - if (dispatch) { - glamor_put_dispatch(glamor_priv); - } - return ret; } @@ -1013,7 +1000,6 @@ void glamor_init_trapezoid_shader(ScreenPtr screen) { glamor_screen_private *glamor_priv; - glamor_gl_dispatch *dispatch; GLint fs_prog, vs_prog; const char *trapezoid_vs = @@ -1344,46 +1330,43 @@ glamor_init_trapezoid_shader(ScreenPtr screen) "}\n"; glamor_priv = glamor_get_screen_private(screen); - dispatch = glamor_get_dispatch(glamor_priv); + glamor_get_context(glamor_priv); - glamor_priv->trapezoid_prog = dispatch->glCreateProgram(); + glamor_priv->trapezoid_prog = glCreateProgram(); - vs_prog = glamor_compile_glsl_prog(dispatch, - GL_VERTEX_SHADER, trapezoid_vs); - fs_prog = glamor_compile_glsl_prog(dispatch, - GL_FRAGMENT_SHADER, trapezoid_fs); + vs_prog = glamor_compile_glsl_prog(GL_VERTEX_SHADER, trapezoid_vs); + fs_prog = glamor_compile_glsl_prog(GL_FRAGMENT_SHADER, trapezoid_fs); - dispatch->glAttachShader(glamor_priv->trapezoid_prog, vs_prog); - dispatch->glAttachShader(glamor_priv->trapezoid_prog, fs_prog); + glAttachShader(glamor_priv->trapezoid_prog, vs_prog); + glAttachShader(glamor_priv->trapezoid_prog, fs_prog); - dispatch->glBindAttribLocation(glamor_priv->trapezoid_prog, - GLAMOR_VERTEX_POS, "v_positionsition"); - dispatch->glBindAttribLocation(glamor_priv->trapezoid_prog, - GLAMOR_VERTEX_SOURCE, "v_texcoord"); - dispatch->glBindAttribLocation(glamor_priv->trapezoid_prog, - GLAMOR_VERTEX_TOP_BOTTOM, "v_top_bottom"); - dispatch->glBindAttribLocation(glamor_priv->trapezoid_prog, - GLAMOR_VERTEX_LEFT_PARAM, "v_left_param"); - dispatch->glBindAttribLocation(glamor_priv->trapezoid_prog, - GLAMOR_VERTEX_RIGHT_PARAM, "v_right_param"); + glBindAttribLocation(glamor_priv->trapezoid_prog, + GLAMOR_VERTEX_POS, "v_positionsition"); + glBindAttribLocation(glamor_priv->trapezoid_prog, + GLAMOR_VERTEX_SOURCE, "v_texcoord"); + glBindAttribLocation(glamor_priv->trapezoid_prog, + GLAMOR_VERTEX_TOP_BOTTOM, "v_top_bottom"); + glBindAttribLocation(glamor_priv->trapezoid_prog, + GLAMOR_VERTEX_LEFT_PARAM, "v_left_param"); + glBindAttribLocation(glamor_priv->trapezoid_prog, + GLAMOR_VERTEX_RIGHT_PARAM, "v_right_param"); - glamor_link_glsl_prog(dispatch, glamor_priv->trapezoid_prog); + glamor_link_glsl_prog(glamor_priv->trapezoid_prog); - dispatch->glUseProgram(0); + glUseProgram(0); - glamor_put_dispatch(glamor_priv); + glamor_put_context(glamor_priv); } void glamor_fini_trapezoid_shader(ScreenPtr screen) { glamor_screen_private *glamor_priv; - glamor_gl_dispatch *dispatch; glamor_priv = glamor_get_screen_private(screen); - dispatch = glamor_get_dispatch(glamor_priv); - dispatch->glDeleteProgram(glamor_priv->trapezoid_prog); - glamor_put_dispatch(glamor_priv); + glamor_get_context(glamor_priv); + glDeleteProgram(glamor_priv->trapezoid_prog); + glamor_put_context(glamor_priv); } static Bool @@ -1392,7 +1375,6 @@ _glamor_generate_trapezoid_with_shader(ScreenPtr screen, PicturePtr picture, BoxRec *bounds) { glamor_screen_private *glamor_priv; - glamor_gl_dispatch *dispatch; glamor_pixmap_private *pixmap_priv; PixmapPtr pixmap = NULL; GLint trapezoid_prog; @@ -1425,20 +1407,20 @@ _glamor_generate_trapezoid_with_shader(ScreenPtr screen, PicturePtr picture, return FALSE; } - dispatch = glamor_get_dispatch(glamor_priv); + glamor_get_context(glamor_priv); glamor_set_destination_pixmap_priv_nc(pixmap_priv); pixmap_priv_get_dest_scale(pixmap_priv, (&xscale), (&yscale)); - dispatch->glBindBuffer(GL_ARRAY_BUFFER, 0); - dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); /* Now draw the Trapezoid mask. */ - dispatch->glUseProgram(trapezoid_prog); + glUseProgram(trapezoid_prog); - dispatch->glEnable(GL_BLEND); - dispatch->glBlendFunc(GL_ONE, GL_ONE); + glEnable(GL_BLEND); + glBlendFunc(GL_ONE, GL_ONE); nrect_max = GLAMOR_COMPOSITE_VBO_VERT_CNT / (4 * GLAMOR_VERTEX_RIGHT_PARAM); @@ -1565,37 +1547,36 @@ _glamor_generate_trapezoid_with_shader(ScreenPtr screen, PicturePtr picture, continue; if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) - dispatch->glUnmapBuffer(GL_ARRAY_BUFFER); + glUnmapBuffer(GL_ARRAY_BUFFER); else { - dispatch->glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo); - dispatch->glBufferData(GL_ARRAY_BUFFER, - glamor_priv->vbo_offset, - glamor_priv->vb, GL_DYNAMIC_DRAW); + glBindBuffer(GL_ARRAY_BUFFER, glamor_priv->vbo); + glBufferData(GL_ARRAY_BUFFER, glamor_priv->vbo_offset, + glamor_priv->vb, GL_DYNAMIC_DRAW); } -#ifndef GLAMOR_GLES2 - dispatch->glDrawRangeElements(GL_TRIANGLES, 0, - glamor_priv->render_nr_verts, - (glamor_priv->render_nr_verts * 3) / 2, - GL_UNSIGNED_SHORT, NULL); -#else - dispatch->glDrawElements(GL_TRIANGLES, - (glamor_priv->render_nr_verts * 3) / 2, - GL_UNSIGNED_SHORT, NULL); -#endif + if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP) { + glDrawRangeElements(GL_TRIANGLES, 0, + glamor_priv->render_nr_verts, + (glamor_priv->render_nr_verts * 3) / 2, + GL_UNSIGNED_SHORT, NULL); + } else { + glDrawElements(GL_TRIANGLES, + (glamor_priv->render_nr_verts * 3) / 2, + GL_UNSIGNED_SHORT, NULL); + } } - dispatch->glBindBuffer(GL_ARRAY_BUFFER, 0); - dispatch->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - dispatch->glBlendFunc(GL_ONE, GL_ZERO); - dispatch->glDisable(GL_BLEND); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_TOP_BOTTOM); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_LEFT_PARAM); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_RIGHT_PARAM); - dispatch->glUseProgram(0); - glamor_put_dispatch(glamor_priv); + glBindBuffer(GL_ARRAY_BUFFER, 0); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); + glBlendFunc(GL_ONE, GL_ZERO); + glDisable(GL_BLEND); + glDisableVertexAttribArray(GLAMOR_VERTEX_POS); + glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); + glDisableVertexAttribArray(GLAMOR_VERTEX_TOP_BOTTOM); + glDisableVertexAttribArray(GLAMOR_VERTEX_LEFT_PARAM); + glDisableVertexAttribArray(GLAMOR_VERTEX_RIGHT_PARAM); + glUseProgram(0); + glamor_put_context(glamor_priv); return TRUE; } diff --git a/xorg-server/glamor/glamor_utils.h b/xorg-server/glamor/glamor_utils.h index ea827df3b..9374c9d4d 100644 --- a/xorg-server/glamor/glamor_utils.h +++ b/xorg-server/glamor/glamor_utils.h @@ -869,19 +869,17 @@ format_for_depth(int depth) } } -static inline void -gl_iformat_for_depth(int depth, GLenum * format) +static inline GLenum +gl_iformat_for_pixmap(PixmapPtr pixmap) { - switch (depth) { -#ifndef GLAMOR_GLES2 - case 1: - case 8: - *format = GL_ALPHA; - break; -#endif - default: - *format = GL_RGBA; - break; + glamor_screen_private *glamor_priv = + glamor_get_screen_private(pixmap->drawable.pScreen); + + if (glamor_priv->gl_flavor == GLAMOR_GL_DESKTOP && + (pixmap->drawable.depth == 1 || pixmap->drawable.depth == 8)) { + return GL_ALPHA; + } else { + return GL_RGBA; } } @@ -916,298 +914,6 @@ format_for_pixmap(PixmapPtr pixmap) #define SWAP_UPLOADING 2 #define SWAP_NONE_UPLOADING 3 -/* - * Map picture's format to the correct gl texture format and type. - * no_alpha is used to indicate whehter we need to wire alpha to 1. - * - * Although opengl support A1/GL_BITMAP, we still don't use it - * here, it seems that mesa has bugs when uploading a A1 bitmap. - * - * Return 0 if find a matched texture type. Otherwise return -1. - **/ -#ifndef GLAMOR_GLES2 -static inline int -glamor_get_tex_format_type_from_pictformat(PictFormatShort format, - GLenum * tex_format, - GLenum * tex_type, - int *no_alpha, - int *revert, - int *swap_rb, int is_upload) -{ - *no_alpha = 0; - *revert = REVERT_NONE; - *swap_rb = is_upload ? SWAP_NONE_UPLOADING : SWAP_NONE_DOWNLOADING; - switch (format) { - case PICT_a1: - *tex_format = GL_ALPHA; - *tex_type = GL_UNSIGNED_BYTE; - *revert = is_upload ? REVERT_UPLOADING_A1 : REVERT_DOWNLOADING_A1; - break; - case PICT_b8g8r8x8: - *no_alpha = 1; - case PICT_b8g8r8a8: - *tex_format = GL_BGRA; - *tex_type = GL_UNSIGNED_INT_8_8_8_8; - break; - - case PICT_x8r8g8b8: - *no_alpha = 1; - case PICT_a8r8g8b8: - *tex_format = GL_BGRA; - *tex_type = GL_UNSIGNED_INT_8_8_8_8_REV; - break; - case PICT_x8b8g8r8: - *no_alpha = 1; - case PICT_a8b8g8r8: - *tex_format = GL_RGBA; - *tex_type = GL_UNSIGNED_INT_8_8_8_8_REV; - break; - case PICT_x2r10g10b10: - *no_alpha = 1; - case PICT_a2r10g10b10: - *tex_format = GL_BGRA; - *tex_type = GL_UNSIGNED_INT_2_10_10_10_REV; - break; - case PICT_x2b10g10r10: - *no_alpha = 1; - case PICT_a2b10g10r10: - *tex_format = GL_RGBA; - *tex_type = GL_UNSIGNED_INT_2_10_10_10_REV; - break; - - case PICT_r5g6b5: - *tex_format = GL_RGB; - *tex_type = GL_UNSIGNED_SHORT_5_6_5; - break; - case PICT_b5g6r5: - *tex_format = GL_RGB; - *tex_type = GL_UNSIGNED_SHORT_5_6_5_REV; - break; - case PICT_x1b5g5r5: - *no_alpha = 1; - case PICT_a1b5g5r5: - *tex_format = GL_RGBA; - *tex_type = GL_UNSIGNED_SHORT_1_5_5_5_REV; - break; - - case PICT_x1r5g5b5: - *no_alpha = 1; - case PICT_a1r5g5b5: - *tex_format = GL_BGRA; - *tex_type = GL_UNSIGNED_SHORT_1_5_5_5_REV; - break; - case PICT_a8: - *tex_format = GL_ALPHA; - *tex_type = GL_UNSIGNED_BYTE; - break; - case PICT_x4r4g4b4: - *no_alpha = 1; - case PICT_a4r4g4b4: - *tex_format = GL_BGRA; - *tex_type = GL_UNSIGNED_SHORT_4_4_4_4_REV; - break; - - case PICT_x4b4g4r4: - *no_alpha = 1; - case PICT_a4b4g4r4: - *tex_format = GL_RGBA; - *tex_type = GL_UNSIGNED_SHORT_4_4_4_4_REV; - break; - - default: - LogMessageVerb(X_INFO, 0, - "fail to get matched format for %x \n", format); - return -1; - } - return 0; -} - -/* Currently, we use RGBA to represent all formats. */ -inline static int -cache_format(GLenum format) -{ - switch (format) { - case GL_ALPHA: - return 1; - case GL_RGBA: - return 0; - default: - return -1; - } -} - -#else -#define IS_LITTLE_ENDIAN (IMAGE_BYTE_ORDER == LSBFirst) - -static inline int -glamor_get_tex_format_type_from_pictformat(PictFormatShort format, - GLenum * tex_format, - GLenum * tex_type, - int *no_alpha, - int *revert, - int *swap_rb, int is_upload) -{ - int need_swap_rb = 0; - - *no_alpha = 0; - *revert = IS_LITTLE_ENDIAN ? REVERT_NONE : REVERT_NORMAL; - - switch (format) { - case PICT_b8g8r8x8: - *no_alpha = 1; - case PICT_b8g8r8a8: - *tex_format = GL_RGBA; - *tex_type = GL_UNSIGNED_BYTE; - need_swap_rb = 1; - *revert = IS_LITTLE_ENDIAN ? REVERT_NORMAL : REVERT_NONE; - break; - - case PICT_x8r8g8b8: - *no_alpha = 1; - case PICT_a8r8g8b8: - *tex_format = GL_RGBA; - *tex_type = GL_UNSIGNED_BYTE; - need_swap_rb = 1; - break; - - case PICT_x8b8g8r8: - *no_alpha = 1; - case PICT_a8b8g8r8: - *tex_format = GL_RGBA; - *tex_type = GL_UNSIGNED_BYTE; - break; - - case PICT_x2r10g10b10: - *no_alpha = 1; - case PICT_a2r10g10b10: - *tex_format = GL_RGBA; - /* glReadPixmap doesn't support GL_UNSIGNED_INT_10_10_10_2. - * we have to use GL_UNSIGNED_BYTE and do the conversion in - * shader latter.*/ - *tex_type = GL_UNSIGNED_BYTE; - if (is_upload == 1) { - if (!IS_LITTLE_ENDIAN) - *revert = REVERT_UPLOADING_10_10_10_2; - else - *revert = REVERT_UPLOADING_2_10_10_10; - } - else { - if (!IS_LITTLE_ENDIAN) { - *revert = REVERT_DOWNLOADING_10_10_10_2; - } - else { - *revert = REVERT_DOWNLOADING_2_10_10_10; - } - } - need_swap_rb = 1; - - break; - - case PICT_x2b10g10r10: - *no_alpha = 1; - case PICT_a2b10g10r10: - *tex_format = GL_RGBA; - *tex_type = GL_UNSIGNED_BYTE; - if (is_upload == 1) { - if (!IS_LITTLE_ENDIAN) - *revert = REVERT_UPLOADING_10_10_10_2; - else - *revert = REVERT_UPLOADING_2_10_10_10; - } - else { - if (!IS_LITTLE_ENDIAN) { - *revert = REVERT_DOWNLOADING_10_10_10_2; - } - else { - *revert = REVERT_DOWNLOADING_2_10_10_10; - } - } - break; - - case PICT_r5g6b5: - *tex_format = GL_RGB; - *tex_type = GL_UNSIGNED_SHORT_5_6_5; - *revert = IS_LITTLE_ENDIAN ? REVERT_NONE : REVERT_NORMAL; - - break; - - case PICT_b5g6r5: - *tex_format = GL_RGB; - *tex_type = GL_UNSIGNED_SHORT_5_6_5; - need_swap_rb = IS_LITTLE_ENDIAN ? 1 : 0;; - break; - - case PICT_x1b5g5r5: - *no_alpha = 1; - case PICT_a1b5g5r5: - *tex_format = GL_RGBA; - *tex_type = GL_UNSIGNED_SHORT_5_5_5_1; - if (IS_LITTLE_ENDIAN) { - *revert = - is_upload ? REVERT_UPLOADING_1_5_5_5 : - REVERT_DOWNLOADING_1_5_5_5; - } - else - *revert = REVERT_NONE; - break; - - case PICT_x1r5g5b5: - *no_alpha = 1; - case PICT_a1r5g5b5: - *tex_format = GL_RGBA; - *tex_type = GL_UNSIGNED_SHORT_5_5_5_1; - if (IS_LITTLE_ENDIAN) { - *revert = - is_upload ? REVERT_UPLOADING_1_5_5_5 : - REVERT_DOWNLOADING_1_5_5_5; - } - else - *revert = REVERT_NONE; - need_swap_rb = 1; - break; - - case PICT_a1: - *tex_format = GL_ALPHA; - *tex_type = GL_UNSIGNED_BYTE; - *revert = is_upload ? REVERT_UPLOADING_A1 : REVERT_DOWNLOADING_A1; - break; - - case PICT_a8: - *tex_format = GL_ALPHA; - *tex_type = GL_UNSIGNED_BYTE; - *revert = REVERT_NONE; - break; - - case PICT_x4r4g4b4: - *no_alpha = 1; - case PICT_a4r4g4b4: - *tex_format = GL_RGBA; - *tex_type = GL_UNSIGNED_SHORT_4_4_4_4; - *revert = IS_LITTLE_ENDIAN ? REVERT_NORMAL : REVERT_NONE; - need_swap_rb = 1; - break; - - case PICT_x4b4g4r4: - *no_alpha = 1; - case PICT_a4b4g4r4: - *tex_format = GL_RGBA; - *tex_type = GL_UNSIGNED_SHORT_4_4_4_4; - *revert = IS_LITTLE_ENDIAN ? REVERT_NORMAL : REVERT_NONE; - break; - - default: - LogMessageVerb(X_INFO, 0, - "fail to get matched format for %x \n", format); - return -1; - } - - if (need_swap_rb) - *swap_rb = is_upload ? SWAP_UPLOADING : SWAP_DOWNLOADING; - else - *swap_rb = is_upload ? SWAP_NONE_UPLOADING : SWAP_NONE_DOWNLOADING; - return 0; -} - inline static int cache_format(GLenum format) { @@ -1223,31 +929,6 @@ cache_format(GLenum format) } } -#endif - -static inline int -glamor_get_tex_format_type_from_pixmap(PixmapPtr pixmap, - GLenum * format, - GLenum * type, - int *no_alpha, - int *revert, int *swap_rb, int is_upload) -{ - glamor_pixmap_private *pixmap_priv; - PictFormatShort pict_format; - - pixmap_priv = glamor_get_pixmap_private(pixmap); - if (GLAMOR_PIXMAP_PRIV_IS_PICTURE(pixmap_priv)) - pict_format = pixmap_priv->base.picture->format; - else - pict_format = format_for_depth(pixmap->drawable.depth); - - return glamor_get_tex_format_type_from_pictformat(pict_format, - format, type, - no_alpha, - revert, - swap_rb, is_upload); -} - /* borrowed from uxa */ static inline Bool glamor_get_rgba_from_pixel(CARD32 pixel, @@ -1319,16 +1000,18 @@ glamor_get_rgba_from_pixel(CARD32 pixel, } inline static Bool -glamor_pict_format_is_compatible(PictFormatShort pict_format, int depth) +glamor_pict_format_is_compatible(PicturePtr picture) { GLenum iformat; + PixmapPtr pixmap = glamor_get_drawable_pixmap(picture->pDrawable); - gl_iformat_for_depth(depth, &iformat); + iformat = gl_iformat_for_pixmap(pixmap); switch (iformat) { case GL_RGBA: - return (pict_format == PICT_a8r8g8b8 || pict_format == PICT_x8r8g8b8); + return (picture->format == PICT_a8r8g8b8 || + picture->format == PICT_x8r8g8b8); case GL_ALPHA: - return (pict_format == PICT_a8); + return (picture->format == PICT_a8); default: return FALSE; } @@ -1817,31 +1500,15 @@ __fls(unsigned long x) #endif static inline void -glamor_make_current(ScreenPtr screen) +glamor_get_context(glamor_screen_private * glamor_priv) { - glamor_egl_make_current(screen); -} - -static inline void -glamor_restore_current(ScreenPtr screen) -{ - glamor_egl_restore_context(screen); -} - -static inline glamor_gl_dispatch * -glamor_get_dispatch(glamor_screen_private * glamor_priv) -{ - if (glamor_priv->flags & GLAMOR_USE_EGL_SCREEN) - glamor_make_current(glamor_priv->screen); - - return &glamor_priv->_dispatch; + glamor_priv->ctx.get_context(&glamor_priv->ctx); } static inline void -glamor_put_dispatch(glamor_screen_private * glamor_priv) +glamor_put_context(glamor_screen_private * glamor_priv) { - if (glamor_priv->flags & GLAMOR_USE_EGL_SCREEN) - glamor_restore_current(glamor_priv->screen); + glamor_priv->ctx.put_context(&glamor_priv->ctx); } #endif diff --git a/xorg-server/glamor/glamor_xv.c b/xorg-server/glamor/glamor_xv.c index cbe07c8b1..dc39476b5 100644 --- a/xorg-server/glamor/glamor_xv.c +++ b/xorg-server/glamor/glamor_xv.c @@ -90,38 +90,36 @@ void glamor_init_xv_shader(ScreenPtr screen) { glamor_screen_private *glamor_priv; - glamor_gl_dispatch *dispatch; GLint fs_prog, vs_prog; glamor_priv = glamor_get_screen_private(screen); - dispatch = glamor_get_dispatch(glamor_priv); - glamor_priv->xv_prog = dispatch->glCreateProgram(); + glamor_get_context(glamor_priv); + glamor_priv->xv_prog = glCreateProgram(); - vs_prog = glamor_compile_glsl_prog(dispatch, GL_VERTEX_SHADER, xv_vs); - fs_prog = glamor_compile_glsl_prog(dispatch, GL_FRAGMENT_SHADER, xv_ps); - dispatch->glAttachShader(glamor_priv->xv_prog, vs_prog); - dispatch->glAttachShader(glamor_priv->xv_prog, fs_prog); + vs_prog = glamor_compile_glsl_prog(GL_VERTEX_SHADER, xv_vs); + fs_prog = glamor_compile_glsl_prog(GL_FRAGMENT_SHADER, xv_ps); + glAttachShader(glamor_priv->xv_prog, vs_prog); + glAttachShader(glamor_priv->xv_prog, fs_prog); - dispatch->glBindAttribLocation(glamor_priv->xv_prog, - GLAMOR_VERTEX_POS, "v_position"); - dispatch->glBindAttribLocation(glamor_priv->xv_prog, - GLAMOR_VERTEX_SOURCE, "v_texcoord0"); - glamor_link_glsl_prog(dispatch, glamor_priv->xv_prog); + glBindAttribLocation(glamor_priv->xv_prog, + GLAMOR_VERTEX_POS, "v_position"); + glBindAttribLocation(glamor_priv->xv_prog, + GLAMOR_VERTEX_SOURCE, "v_texcoord0"); + glamor_link_glsl_prog(glamor_priv->xv_prog); - glamor_put_dispatch(glamor_priv); + glamor_put_context(glamor_priv); } void glamor_fini_xv_shader(ScreenPtr screen) { glamor_screen_private *glamor_priv; - glamor_gl_dispatch *dispatch; glamor_priv = glamor_get_screen_private(screen); - dispatch = glamor_get_dispatch(glamor_priv); + glamor_get_context(glamor_priv); - dispatch->glDeleteProgram(glamor_priv->xv_prog); - glamor_put_dispatch(glamor_priv); + glDeleteProgram(glamor_priv->xv_prog); + glamor_put_context(glamor_priv); } #define ClipValue(v,min,max) ((v) < (min) ? (min) : (v) > (max) ? (max) : (v)) @@ -278,7 +276,6 @@ glamor_display_textured_video(glamor_port_private *port_priv) glamor_pixmap_private *pixmap_priv = glamor_get_pixmap_private(port_priv->pPixmap); glamor_pixmap_private *src_pixmap_priv[3]; - glamor_gl_dispatch *dispatch; float vertices[32], texcoords[8]; BoxPtr box = REGION_RECTS(&port_priv->clip); int nBox = REGION_NUM_RECTS(&port_priv->clip); @@ -327,62 +324,53 @@ glamor_display_textured_video(glamor_port_private *port_priv) &src_yscale[i]); } } - dispatch = glamor_get_dispatch(glamor_priv); - dispatch->glUseProgram(glamor_priv->xv_prog); - - uloc = dispatch->glGetUniformLocation(glamor_priv->xv_prog, "offsetyco"); - dispatch->glUniform4f(uloc, off[0], off[1], off[2], yco); - uloc = dispatch->glGetUniformLocation(glamor_priv->xv_prog, "ucogamma"); - dispatch->glUniform4f(uloc, uco[0], uco[1], uco[2], gamma); - uloc = dispatch->glGetUniformLocation(glamor_priv->xv_prog, "vco"); - dispatch->glUniform4f(uloc, vco[0], vco[1], vco[2], 0); - - dispatch->glActiveTexture(GL_TEXTURE0); - dispatch->glBindTexture(GL_TEXTURE_2D, src_pixmap_priv[0]->base.fbo->tex); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - dispatch->glTexParameteri(GL_TEXTURE_2D, - GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - dispatch->glTexParameteri(GL_TEXTURE_2D, - GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - - dispatch->glActiveTexture(GL_TEXTURE1); - dispatch->glBindTexture(GL_TEXTURE_2D, src_pixmap_priv[1]->base.fbo->tex); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - dispatch->glTexParameteri(GL_TEXTURE_2D, - GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - dispatch->glTexParameteri(GL_TEXTURE_2D, - GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - - dispatch->glActiveTexture(GL_TEXTURE2); - dispatch->glBindTexture(GL_TEXTURE_2D, src_pixmap_priv[2]->base.fbo->tex); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - dispatch->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - dispatch->glTexParameteri(GL_TEXTURE_2D, - GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - dispatch->glTexParameteri(GL_TEXTURE_2D, - GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - - sampler_loc = - dispatch->glGetUniformLocation(glamor_priv->xv_prog, "y_sampler"); - dispatch->glUniform1i(sampler_loc, 0); - sampler_loc = - dispatch->glGetUniformLocation(glamor_priv->xv_prog, "u_sampler"); - dispatch->glUniform1i(sampler_loc, 1); - sampler_loc = - dispatch->glGetUniformLocation(glamor_priv->xv_prog, "v_sampler"); - dispatch->glUniform1i(sampler_loc, 2); - - dispatch->glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, - GL_FLOAT, GL_FALSE, - 2 * sizeof(float), texcoords); - dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE); - - dispatch->glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, - GL_FALSE, 2 * sizeof(float), vertices); - - dispatch->glEnableVertexAttribArray(GLAMOR_VERTEX_POS); + glamor_get_context(glamor_priv); + glUseProgram(glamor_priv->xv_prog); + + uloc = glGetUniformLocation(glamor_priv->xv_prog, "offsetyco"); + glUniform4f(uloc, off[0], off[1], off[2], yco); + uloc = glGetUniformLocation(glamor_priv->xv_prog, "ucogamma"); + glUniform4f(uloc, uco[0], uco[1], uco[2], gamma); + uloc = glGetUniformLocation(glamor_priv->xv_prog, "vco"); + glUniform4f(uloc, vco[0], vco[1], vco[2], 0); + + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, src_pixmap_priv[0]->base.fbo->tex); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + + glActiveTexture(GL_TEXTURE1); + glBindTexture(GL_TEXTURE_2D, src_pixmap_priv[1]->base.fbo->tex); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + + glActiveTexture(GL_TEXTURE2); + glBindTexture(GL_TEXTURE_2D, src_pixmap_priv[2]->base.fbo->tex); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); + + sampler_loc = glGetUniformLocation(glamor_priv->xv_prog, "y_sampler"); + glUniform1i(sampler_loc, 0); + sampler_loc = glGetUniformLocation(glamor_priv->xv_prog, "u_sampler"); + glUniform1i(sampler_loc, 1); + sampler_loc = glGetUniformLocation(glamor_priv->xv_prog, "v_sampler"); + glUniform1i(sampler_loc, 2); + + glVertexAttribPointer(GLAMOR_VERTEX_SOURCE, 2, + GL_FLOAT, GL_FALSE, + 2 * sizeof(float), texcoords); + glEnableVertexAttribArray(GLAMOR_VERTEX_SOURCE); + + glVertexAttribPointer(GLAMOR_VERTEX_POS, 2, GL_FLOAT, + GL_FALSE, 2 * sizeof(float), vertices); + + glEnableVertexAttribArray(GLAMOR_VERTEX_POS); for (i = 0; i < nBox; i++) { float off_x = box[i].x1 - port_priv->drw_x; float off_y = box[i].y1 - port_priv->drw_y; @@ -418,14 +406,14 @@ glamor_display_textured_video(glamor_port_private *port_priv) srcy + srch, glamor_priv->yInverted, texcoords); - dispatch->glDrawArrays(GL_TRIANGLE_FAN, 0, 4); + glDrawArrays(GL_TRIANGLE_FAN, 0, 4); } - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_POS); - dispatch->glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); + glDisableVertexAttribArray(GLAMOR_VERTEX_POS); + glDisableVertexAttribArray(GLAMOR_VERTEX_SOURCE); - dispatch->glUseProgram(0); - glamor_put_dispatch(glamor_priv); + glUseProgram(0); + glamor_put_context(glamor_priv); DamageDamageRegion(port_priv->pDraw, &port_priv->clip); } diff --git a/xorg-server/glx/dispatch.h b/xorg-server/glx/dispatch.h index 3ed83f841..6facd054b 100644 --- a/xorg-server/glx/dispatch.h +++ b/xorg-server/glx/dispatch.h @@ -63,7 +63,7 @@ } while(0) /* total number of offsets below */ -#define _gloffset_COUNT 1096 +#define _gloffset_COUNT 1140 #define _gloffset_NewList 0 #define _gloffset_EndList 1 @@ -473,7 +473,7 @@ #define _gloffset_MultiTexCoord4iv 405 #define _gloffset_MultiTexCoord4s 406 #define _gloffset_MultiTexCoord4sv 407 -#define driDispatchRemapTable_size 688 +#define driDispatchRemapTable_size 732 SERVEXTERN int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define CompressedTexImage1D_remap_index 0 @@ -926,244 +926,288 @@ SERVEXTERN int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define TexBufferRange_remap_index 447 #define TexStorage2DMultisample_remap_index 448 #define TexStorage3DMultisample_remap_index 449 -#define InvalidateBufferData_remap_index 450 -#define InvalidateBufferSubData_remap_index 451 -#define InvalidateFramebuffer_remap_index 452 -#define InvalidateSubFramebuffer_remap_index 453 -#define InvalidateTexImage_remap_index 454 -#define InvalidateTexSubImage_remap_index 455 -#define PolygonOffsetEXT_remap_index 456 -#define DrawTexfOES_remap_index 457 -#define DrawTexfvOES_remap_index 458 -#define DrawTexiOES_remap_index 459 -#define DrawTexivOES_remap_index 460 -#define DrawTexsOES_remap_index 461 -#define DrawTexsvOES_remap_index 462 -#define DrawTexxOES_remap_index 463 -#define DrawTexxvOES_remap_index 464 -#define PointSizePointerOES_remap_index 465 -#define QueryMatrixxOES_remap_index 466 -#define SampleMaskSGIS_remap_index 467 -#define SamplePatternSGIS_remap_index 468 -#define ColorPointerEXT_remap_index 469 -#define EdgeFlagPointerEXT_remap_index 470 -#define IndexPointerEXT_remap_index 471 -#define NormalPointerEXT_remap_index 472 -#define TexCoordPointerEXT_remap_index 473 -#define VertexPointerEXT_remap_index 474 -#define DiscardFramebufferEXT_remap_index 475 -#define LockArraysEXT_remap_index 476 -#define UnlockArraysEXT_remap_index 477 -#define DebugMessageCallback_remap_index 478 -#define DebugMessageControl_remap_index 479 -#define DebugMessageInsert_remap_index 480 -#define GetDebugMessageLog_remap_index 481 -#define GetObjectLabel_remap_index 482 -#define GetObjectPtrLabel_remap_index 483 -#define ObjectLabel_remap_index 484 -#define ObjectPtrLabel_remap_index 485 -#define PopDebugGroup_remap_index 486 -#define PushDebugGroup_remap_index 487 -#define SecondaryColor3fEXT_remap_index 488 -#define SecondaryColor3fvEXT_remap_index 489 -#define MultiDrawElementsEXT_remap_index 490 -#define FogCoordfEXT_remap_index 491 -#define FogCoordfvEXT_remap_index 492 -#define ResizeBuffersMESA_remap_index 493 -#define WindowPos4dMESA_remap_index 494 -#define WindowPos4dvMESA_remap_index 495 -#define WindowPos4fMESA_remap_index 496 -#define WindowPos4fvMESA_remap_index 497 -#define WindowPos4iMESA_remap_index 498 -#define WindowPos4ivMESA_remap_index 499 -#define WindowPos4sMESA_remap_index 500 -#define WindowPos4svMESA_remap_index 501 -#define MultiModeDrawArraysIBM_remap_index 502 -#define MultiModeDrawElementsIBM_remap_index 503 -#define AreProgramsResidentNV_remap_index 504 -#define ExecuteProgramNV_remap_index 505 -#define GetProgramParameterdvNV_remap_index 506 -#define GetProgramParameterfvNV_remap_index 507 -#define GetProgramStringNV_remap_index 508 -#define GetProgramivNV_remap_index 509 -#define GetTrackMatrixivNV_remap_index 510 -#define GetVertexAttribdvNV_remap_index 511 -#define GetVertexAttribfvNV_remap_index 512 -#define GetVertexAttribivNV_remap_index 513 -#define LoadProgramNV_remap_index 514 -#define ProgramParameters4dvNV_remap_index 515 -#define ProgramParameters4fvNV_remap_index 516 -#define RequestResidentProgramsNV_remap_index 517 -#define TrackMatrixNV_remap_index 518 -#define VertexAttrib1dNV_remap_index 519 -#define VertexAttrib1dvNV_remap_index 520 -#define VertexAttrib1fNV_remap_index 521 -#define VertexAttrib1fvNV_remap_index 522 -#define VertexAttrib1sNV_remap_index 523 -#define VertexAttrib1svNV_remap_index 524 -#define VertexAttrib2dNV_remap_index 525 -#define VertexAttrib2dvNV_remap_index 526 -#define VertexAttrib2fNV_remap_index 527 -#define VertexAttrib2fvNV_remap_index 528 -#define VertexAttrib2sNV_remap_index 529 -#define VertexAttrib2svNV_remap_index 530 -#define VertexAttrib3dNV_remap_index 531 -#define VertexAttrib3dvNV_remap_index 532 -#define VertexAttrib3fNV_remap_index 533 -#define VertexAttrib3fvNV_remap_index 534 -#define VertexAttrib3sNV_remap_index 535 -#define VertexAttrib3svNV_remap_index 536 -#define VertexAttrib4dNV_remap_index 537 -#define VertexAttrib4dvNV_remap_index 538 -#define VertexAttrib4fNV_remap_index 539 -#define VertexAttrib4fvNV_remap_index 540 -#define VertexAttrib4sNV_remap_index 541 -#define VertexAttrib4svNV_remap_index 542 -#define VertexAttrib4ubNV_remap_index 543 -#define VertexAttrib4ubvNV_remap_index 544 -#define VertexAttribPointerNV_remap_index 545 -#define VertexAttribs1dvNV_remap_index 546 -#define VertexAttribs1fvNV_remap_index 547 -#define VertexAttribs1svNV_remap_index 548 -#define VertexAttribs2dvNV_remap_index 549 -#define VertexAttribs2fvNV_remap_index 550 -#define VertexAttribs2svNV_remap_index 551 -#define VertexAttribs3dvNV_remap_index 552 -#define VertexAttribs3fvNV_remap_index 553 -#define VertexAttribs3svNV_remap_index 554 -#define VertexAttribs4dvNV_remap_index 555 -#define VertexAttribs4fvNV_remap_index 556 -#define VertexAttribs4svNV_remap_index 557 -#define VertexAttribs4ubvNV_remap_index 558 -#define GetTexBumpParameterfvATI_remap_index 559 -#define GetTexBumpParameterivATI_remap_index 560 -#define TexBumpParameterfvATI_remap_index 561 -#define TexBumpParameterivATI_remap_index 562 -#define AlphaFragmentOp1ATI_remap_index 563 -#define AlphaFragmentOp2ATI_remap_index 564 -#define AlphaFragmentOp3ATI_remap_index 565 -#define BeginFragmentShaderATI_remap_index 566 -#define BindFragmentShaderATI_remap_index 567 -#define ColorFragmentOp1ATI_remap_index 568 -#define ColorFragmentOp2ATI_remap_index 569 -#define ColorFragmentOp3ATI_remap_index 570 -#define DeleteFragmentShaderATI_remap_index 571 -#define EndFragmentShaderATI_remap_index 572 -#define GenFragmentShadersATI_remap_index 573 -#define PassTexCoordATI_remap_index 574 -#define SampleMapATI_remap_index 575 -#define SetFragmentShaderConstantATI_remap_index 576 -#define ActiveStencilFaceEXT_remap_index 577 -#define BindVertexArrayAPPLE_remap_index 578 -#define GenVertexArraysAPPLE_remap_index 579 -#define GetProgramNamedParameterdvNV_remap_index 580 -#define GetProgramNamedParameterfvNV_remap_index 581 -#define ProgramNamedParameter4dNV_remap_index 582 -#define ProgramNamedParameter4dvNV_remap_index 583 -#define ProgramNamedParameter4fNV_remap_index 584 -#define ProgramNamedParameter4fvNV_remap_index 585 -#define PrimitiveRestartNV_remap_index 586 -#define GetTexGenxvOES_remap_index 587 -#define TexGenxOES_remap_index 588 -#define TexGenxvOES_remap_index 589 -#define DepthBoundsEXT_remap_index 590 -#define BindFramebufferEXT_remap_index 591 -#define BindRenderbufferEXT_remap_index 592 -#define BufferParameteriAPPLE_remap_index 593 -#define FlushMappedBufferRangeAPPLE_remap_index 594 -#define VertexAttribI1iEXT_remap_index 595 -#define VertexAttribI1uiEXT_remap_index 596 -#define VertexAttribI2iEXT_remap_index 597 -#define VertexAttribI2ivEXT_remap_index 598 -#define VertexAttribI2uiEXT_remap_index 599 -#define VertexAttribI2uivEXT_remap_index 600 -#define VertexAttribI3iEXT_remap_index 601 -#define VertexAttribI3ivEXT_remap_index 602 -#define VertexAttribI3uiEXT_remap_index 603 -#define VertexAttribI3uivEXT_remap_index 604 -#define VertexAttribI4iEXT_remap_index 605 -#define VertexAttribI4ivEXT_remap_index 606 -#define VertexAttribI4uiEXT_remap_index 607 -#define VertexAttribI4uivEXT_remap_index 608 -#define ClearColorIiEXT_remap_index 609 -#define ClearColorIuiEXT_remap_index 610 -#define BindBufferOffsetEXT_remap_index 611 -#define BeginPerfMonitorAMD_remap_index 612 -#define DeletePerfMonitorsAMD_remap_index 613 -#define EndPerfMonitorAMD_remap_index 614 -#define GenPerfMonitorsAMD_remap_index 615 -#define GetPerfMonitorCounterDataAMD_remap_index 616 -#define GetPerfMonitorCounterInfoAMD_remap_index 617 -#define GetPerfMonitorCounterStringAMD_remap_index 618 -#define GetPerfMonitorCountersAMD_remap_index 619 -#define GetPerfMonitorGroupStringAMD_remap_index 620 -#define GetPerfMonitorGroupsAMD_remap_index 621 -#define SelectPerfMonitorCountersAMD_remap_index 622 -#define GetObjectParameterivAPPLE_remap_index 623 -#define ObjectPurgeableAPPLE_remap_index 624 -#define ObjectUnpurgeableAPPLE_remap_index 625 -#define ActiveProgramEXT_remap_index 626 -#define CreateShaderProgramEXT_remap_index 627 -#define UseShaderProgramEXT_remap_index 628 -#define TextureBarrierNV_remap_index 629 -#define VDPAUFiniNV_remap_index 630 -#define VDPAUGetSurfaceivNV_remap_index 631 -#define VDPAUInitNV_remap_index 632 -#define VDPAUIsSurfaceNV_remap_index 633 -#define VDPAUMapSurfacesNV_remap_index 634 -#define VDPAURegisterOutputSurfaceNV_remap_index 635 -#define VDPAURegisterVideoSurfaceNV_remap_index 636 -#define VDPAUSurfaceAccessNV_remap_index 637 -#define VDPAUUnmapSurfacesNV_remap_index 638 -#define VDPAUUnregisterSurfaceNV_remap_index 639 -#define StencilFuncSeparateATI_remap_index 640 -#define ProgramEnvParameters4fvEXT_remap_index 641 -#define ProgramLocalParameters4fvEXT_remap_index 642 -#define EGLImageTargetRenderbufferStorageOES_remap_index 643 -#define EGLImageTargetTexture2DOES_remap_index 644 -#define AlphaFuncx_remap_index 645 -#define ClearColorx_remap_index 646 -#define ClearDepthx_remap_index 647 -#define Color4x_remap_index 648 -#define DepthRangex_remap_index 649 -#define Fogx_remap_index 650 -#define Fogxv_remap_index 651 -#define Frustumf_remap_index 652 -#define Frustumx_remap_index 653 -#define LightModelx_remap_index 654 -#define LightModelxv_remap_index 655 -#define Lightx_remap_index 656 -#define Lightxv_remap_index 657 -#define LineWidthx_remap_index 658 -#define LoadMatrixx_remap_index 659 -#define Materialx_remap_index 660 -#define Materialxv_remap_index 661 -#define MultMatrixx_remap_index 662 -#define MultiTexCoord4x_remap_index 663 -#define Normal3x_remap_index 664 -#define Orthof_remap_index 665 -#define Orthox_remap_index 666 -#define PointSizex_remap_index 667 -#define PolygonOffsetx_remap_index 668 -#define Rotatex_remap_index 669 -#define SampleCoveragex_remap_index 670 -#define Scalex_remap_index 671 -#define TexEnvx_remap_index 672 -#define TexEnvxv_remap_index 673 -#define TexParameterx_remap_index 674 -#define Translatex_remap_index 675 -#define ClipPlanef_remap_index 676 -#define ClipPlanex_remap_index 677 -#define GetClipPlanef_remap_index 678 -#define GetClipPlanex_remap_index 679 -#define GetFixedv_remap_index 680 -#define GetLightxv_remap_index 681 -#define GetMaterialxv_remap_index 682 -#define GetTexEnvxv_remap_index 683 -#define GetTexParameterxv_remap_index 684 -#define PointParameterx_remap_index 685 -#define PointParameterxv_remap_index 686 -#define TexParameterxv_remap_index 687 +#define BufferStorage_remap_index 450 +#define InvalidateBufferData_remap_index 451 +#define InvalidateBufferSubData_remap_index 452 +#define InvalidateFramebuffer_remap_index 453 +#define InvalidateSubFramebuffer_remap_index 454 +#define InvalidateTexImage_remap_index 455 +#define InvalidateTexSubImage_remap_index 456 +#define PolygonOffsetEXT_remap_index 457 +#define DrawTexfOES_remap_index 458 +#define DrawTexfvOES_remap_index 459 +#define DrawTexiOES_remap_index 460 +#define DrawTexivOES_remap_index 461 +#define DrawTexsOES_remap_index 462 +#define DrawTexsvOES_remap_index 463 +#define DrawTexxOES_remap_index 464 +#define DrawTexxvOES_remap_index 465 +#define PointSizePointerOES_remap_index 466 +#define QueryMatrixxOES_remap_index 467 +#define SampleMaskSGIS_remap_index 468 +#define SamplePatternSGIS_remap_index 469 +#define ColorPointerEXT_remap_index 470 +#define EdgeFlagPointerEXT_remap_index 471 +#define IndexPointerEXT_remap_index 472 +#define NormalPointerEXT_remap_index 473 +#define TexCoordPointerEXT_remap_index 474 +#define VertexPointerEXT_remap_index 475 +#define DiscardFramebufferEXT_remap_index 476 +#define ActiveShaderProgram_remap_index 477 +#define BindProgramPipeline_remap_index 478 +#define CreateShaderProgramv_remap_index 479 +#define DeleteProgramPipelines_remap_index 480 +#define GenProgramPipelines_remap_index 481 +#define GetProgramPipelineInfoLog_remap_index 482 +#define GetProgramPipelineiv_remap_index 483 +#define IsProgramPipeline_remap_index 484 +#define LockArraysEXT_remap_index 485 +#define ProgramUniform1f_remap_index 486 +#define ProgramUniform1fv_remap_index 487 +#define ProgramUniform1i_remap_index 488 +#define ProgramUniform1iv_remap_index 489 +#define ProgramUniform1ui_remap_index 490 +#define ProgramUniform1uiv_remap_index 491 +#define ProgramUniform2f_remap_index 492 +#define ProgramUniform2fv_remap_index 493 +#define ProgramUniform2i_remap_index 494 +#define ProgramUniform2iv_remap_index 495 +#define ProgramUniform2ui_remap_index 496 +#define ProgramUniform2uiv_remap_index 497 +#define ProgramUniform3f_remap_index 498 +#define ProgramUniform3fv_remap_index 499 +#define ProgramUniform3i_remap_index 500 +#define ProgramUniform3iv_remap_index 501 +#define ProgramUniform3ui_remap_index 502 +#define ProgramUniform3uiv_remap_index 503 +#define ProgramUniform4f_remap_index 504 +#define ProgramUniform4fv_remap_index 505 +#define ProgramUniform4i_remap_index 506 +#define ProgramUniform4iv_remap_index 507 +#define ProgramUniform4ui_remap_index 508 +#define ProgramUniform4uiv_remap_index 509 +#define ProgramUniformMatrix2fv_remap_index 510 +#define ProgramUniformMatrix2x3fv_remap_index 511 +#define ProgramUniformMatrix2x4fv_remap_index 512 +#define ProgramUniformMatrix3fv_remap_index 513 +#define ProgramUniformMatrix3x2fv_remap_index 514 +#define ProgramUniformMatrix3x4fv_remap_index 515 +#define ProgramUniformMatrix4fv_remap_index 516 +#define ProgramUniformMatrix4x2fv_remap_index 517 +#define ProgramUniformMatrix4x3fv_remap_index 518 +#define UnlockArraysEXT_remap_index 519 +#define UseProgramStages_remap_index 520 +#define ValidateProgramPipeline_remap_index 521 +#define DebugMessageCallback_remap_index 522 +#define DebugMessageControl_remap_index 523 +#define DebugMessageInsert_remap_index 524 +#define GetDebugMessageLog_remap_index 525 +#define GetObjectLabel_remap_index 526 +#define GetObjectPtrLabel_remap_index 527 +#define ObjectLabel_remap_index 528 +#define ObjectPtrLabel_remap_index 529 +#define PopDebugGroup_remap_index 530 +#define PushDebugGroup_remap_index 531 +#define SecondaryColor3fEXT_remap_index 532 +#define SecondaryColor3fvEXT_remap_index 533 +#define MultiDrawElementsEXT_remap_index 534 +#define FogCoordfEXT_remap_index 535 +#define FogCoordfvEXT_remap_index 536 +#define ResizeBuffersMESA_remap_index 537 +#define WindowPos4dMESA_remap_index 538 +#define WindowPos4dvMESA_remap_index 539 +#define WindowPos4fMESA_remap_index 540 +#define WindowPos4fvMESA_remap_index 541 +#define WindowPos4iMESA_remap_index 542 +#define WindowPos4ivMESA_remap_index 543 +#define WindowPos4sMESA_remap_index 544 +#define WindowPos4svMESA_remap_index 545 +#define MultiModeDrawArraysIBM_remap_index 546 +#define MultiModeDrawElementsIBM_remap_index 547 +#define AreProgramsResidentNV_remap_index 548 +#define ExecuteProgramNV_remap_index 549 +#define GetProgramParameterdvNV_remap_index 550 +#define GetProgramParameterfvNV_remap_index 551 +#define GetProgramStringNV_remap_index 552 +#define GetProgramivNV_remap_index 553 +#define GetTrackMatrixivNV_remap_index 554 +#define GetVertexAttribdvNV_remap_index 555 +#define GetVertexAttribfvNV_remap_index 556 +#define GetVertexAttribivNV_remap_index 557 +#define LoadProgramNV_remap_index 558 +#define ProgramParameters4dvNV_remap_index 559 +#define ProgramParameters4fvNV_remap_index 560 +#define RequestResidentProgramsNV_remap_index 561 +#define TrackMatrixNV_remap_index 562 +#define VertexAttrib1dNV_remap_index 563 +#define VertexAttrib1dvNV_remap_index 564 +#define VertexAttrib1fNV_remap_index 565 +#define VertexAttrib1fvNV_remap_index 566 +#define VertexAttrib1sNV_remap_index 567 +#define VertexAttrib1svNV_remap_index 568 +#define VertexAttrib2dNV_remap_index 569 +#define VertexAttrib2dvNV_remap_index 570 +#define VertexAttrib2fNV_remap_index 571 +#define VertexAttrib2fvNV_remap_index 572 +#define VertexAttrib2sNV_remap_index 573 +#define VertexAttrib2svNV_remap_index 574 +#define VertexAttrib3dNV_remap_index 575 +#define VertexAttrib3dvNV_remap_index 576 +#define VertexAttrib3fNV_remap_index 577 +#define VertexAttrib3fvNV_remap_index 578 +#define VertexAttrib3sNV_remap_index 579 +#define VertexAttrib3svNV_remap_index 580 +#define VertexAttrib4dNV_remap_index 581 +#define VertexAttrib4dvNV_remap_index 582 +#define VertexAttrib4fNV_remap_index 583 +#define VertexAttrib4fvNV_remap_index 584 +#define VertexAttrib4sNV_remap_index 585 +#define VertexAttrib4svNV_remap_index 586 +#define VertexAttrib4ubNV_remap_index 587 +#define VertexAttrib4ubvNV_remap_index 588 +#define VertexAttribPointerNV_remap_index 589 +#define VertexAttribs1dvNV_remap_index 590 +#define VertexAttribs1fvNV_remap_index 591 +#define VertexAttribs1svNV_remap_index 592 +#define VertexAttribs2dvNV_remap_index 593 +#define VertexAttribs2fvNV_remap_index 594 +#define VertexAttribs2svNV_remap_index 595 +#define VertexAttribs3dvNV_remap_index 596 +#define VertexAttribs3fvNV_remap_index 597 +#define VertexAttribs3svNV_remap_index 598 +#define VertexAttribs4dvNV_remap_index 599 +#define VertexAttribs4fvNV_remap_index 600 +#define VertexAttribs4svNV_remap_index 601 +#define VertexAttribs4ubvNV_remap_index 602 +#define GetTexBumpParameterfvATI_remap_index 603 +#define GetTexBumpParameterivATI_remap_index 604 +#define TexBumpParameterfvATI_remap_index 605 +#define TexBumpParameterivATI_remap_index 606 +#define AlphaFragmentOp1ATI_remap_index 607 +#define AlphaFragmentOp2ATI_remap_index 608 +#define AlphaFragmentOp3ATI_remap_index 609 +#define BeginFragmentShaderATI_remap_index 610 +#define BindFragmentShaderATI_remap_index 611 +#define ColorFragmentOp1ATI_remap_index 612 +#define ColorFragmentOp2ATI_remap_index 613 +#define ColorFragmentOp3ATI_remap_index 614 +#define DeleteFragmentShaderATI_remap_index 615 +#define EndFragmentShaderATI_remap_index 616 +#define GenFragmentShadersATI_remap_index 617 +#define PassTexCoordATI_remap_index 618 +#define SampleMapATI_remap_index 619 +#define SetFragmentShaderConstantATI_remap_index 620 +#define ActiveStencilFaceEXT_remap_index 621 +#define BindVertexArrayAPPLE_remap_index 622 +#define GenVertexArraysAPPLE_remap_index 623 +#define GetProgramNamedParameterdvNV_remap_index 624 +#define GetProgramNamedParameterfvNV_remap_index 625 +#define ProgramNamedParameter4dNV_remap_index 626 +#define ProgramNamedParameter4dvNV_remap_index 627 +#define ProgramNamedParameter4fNV_remap_index 628 +#define ProgramNamedParameter4fvNV_remap_index 629 +#define PrimitiveRestartNV_remap_index 630 +#define GetTexGenxvOES_remap_index 631 +#define TexGenxOES_remap_index 632 +#define TexGenxvOES_remap_index 633 +#define DepthBoundsEXT_remap_index 634 +#define BindFramebufferEXT_remap_index 635 +#define BindRenderbufferEXT_remap_index 636 +#define BufferParameteriAPPLE_remap_index 637 +#define FlushMappedBufferRangeAPPLE_remap_index 638 +#define VertexAttribI1iEXT_remap_index 639 +#define VertexAttribI1uiEXT_remap_index 640 +#define VertexAttribI2iEXT_remap_index 641 +#define VertexAttribI2ivEXT_remap_index 642 +#define VertexAttribI2uiEXT_remap_index 643 +#define VertexAttribI2uivEXT_remap_index 644 +#define VertexAttribI3iEXT_remap_index 645 +#define VertexAttribI3ivEXT_remap_index 646 +#define VertexAttribI3uiEXT_remap_index 647 +#define VertexAttribI3uivEXT_remap_index 648 +#define VertexAttribI4iEXT_remap_index 649 +#define VertexAttribI4ivEXT_remap_index 650 +#define VertexAttribI4uiEXT_remap_index 651 +#define VertexAttribI4uivEXT_remap_index 652 +#define ClearColorIiEXT_remap_index 653 +#define ClearColorIuiEXT_remap_index 654 +#define BindBufferOffsetEXT_remap_index 655 +#define BeginPerfMonitorAMD_remap_index 656 +#define DeletePerfMonitorsAMD_remap_index 657 +#define EndPerfMonitorAMD_remap_index 658 +#define GenPerfMonitorsAMD_remap_index 659 +#define GetPerfMonitorCounterDataAMD_remap_index 660 +#define GetPerfMonitorCounterInfoAMD_remap_index 661 +#define GetPerfMonitorCounterStringAMD_remap_index 662 +#define GetPerfMonitorCountersAMD_remap_index 663 +#define GetPerfMonitorGroupStringAMD_remap_index 664 +#define GetPerfMonitorGroupsAMD_remap_index 665 +#define SelectPerfMonitorCountersAMD_remap_index 666 +#define GetObjectParameterivAPPLE_remap_index 667 +#define ObjectPurgeableAPPLE_remap_index 668 +#define ObjectUnpurgeableAPPLE_remap_index 669 +#define ActiveProgramEXT_remap_index 670 +#define CreateShaderProgramEXT_remap_index 671 +#define UseShaderProgramEXT_remap_index 672 +#define TextureBarrierNV_remap_index 673 +#define VDPAUFiniNV_remap_index 674 +#define VDPAUGetSurfaceivNV_remap_index 675 +#define VDPAUInitNV_remap_index 676 +#define VDPAUIsSurfaceNV_remap_index 677 +#define VDPAUMapSurfacesNV_remap_index 678 +#define VDPAURegisterOutputSurfaceNV_remap_index 679 +#define VDPAURegisterVideoSurfaceNV_remap_index 680 +#define VDPAUSurfaceAccessNV_remap_index 681 +#define VDPAUUnmapSurfacesNV_remap_index 682 +#define VDPAUUnregisterSurfaceNV_remap_index 683 +#define StencilFuncSeparateATI_remap_index 684 +#define ProgramEnvParameters4fvEXT_remap_index 685 +#define ProgramLocalParameters4fvEXT_remap_index 686 +#define EGLImageTargetRenderbufferStorageOES_remap_index 687 +#define EGLImageTargetTexture2DOES_remap_index 688 +#define AlphaFuncx_remap_index 689 +#define ClearColorx_remap_index 690 +#define ClearDepthx_remap_index 691 +#define Color4x_remap_index 692 +#define DepthRangex_remap_index 693 +#define Fogx_remap_index 694 +#define Fogxv_remap_index 695 +#define Frustumf_remap_index 696 +#define Frustumx_remap_index 697 +#define LightModelx_remap_index 698 +#define LightModelxv_remap_index 699 +#define Lightx_remap_index 700 +#define Lightxv_remap_index 701 +#define LineWidthx_remap_index 702 +#define LoadMatrixx_remap_index 703 +#define Materialx_remap_index 704 +#define Materialxv_remap_index 705 +#define MultMatrixx_remap_index 706 +#define MultiTexCoord4x_remap_index 707 +#define Normal3x_remap_index 708 +#define Orthof_remap_index 709 +#define Orthox_remap_index 710 +#define PointSizex_remap_index 711 +#define PolygonOffsetx_remap_index 712 +#define Rotatex_remap_index 713 +#define SampleCoveragex_remap_index 714 +#define Scalex_remap_index 715 +#define TexEnvx_remap_index 716 +#define TexEnvxv_remap_index 717 +#define TexParameterx_remap_index 718 +#define Translatex_remap_index 719 +#define ClipPlanef_remap_index 720 +#define ClipPlanex_remap_index 721 +#define GetClipPlanef_remap_index 722 +#define GetClipPlanex_remap_index 723 +#define GetFixedv_remap_index 724 +#define GetLightxv_remap_index 725 +#define GetMaterialxv_remap_index 726 +#define GetTexEnvxv_remap_index 727 +#define GetTexParameterxv_remap_index 728 +#define PointParameterx_remap_index 729 +#define PointParameterxv_remap_index 730 +#define TexParameterxv_remap_index 731 #define _gloffset_CompressedTexImage1D driDispatchRemapTable[CompressedTexImage1D_remap_index] #define _gloffset_CompressedTexImage2D driDispatchRemapTable[CompressedTexImage2D_remap_index] @@ -1615,6 +1659,7 @@ SERVEXTERN int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define _gloffset_TexBufferRange driDispatchRemapTable[TexBufferRange_remap_index] #define _gloffset_TexStorage2DMultisample driDispatchRemapTable[TexStorage2DMultisample_remap_index] #define _gloffset_TexStorage3DMultisample driDispatchRemapTable[TexStorage3DMultisample_remap_index] +#define _gloffset_BufferStorage driDispatchRemapTable[BufferStorage_remap_index] #define _gloffset_InvalidateBufferData driDispatchRemapTable[InvalidateBufferData_remap_index] #define _gloffset_InvalidateBufferSubData driDispatchRemapTable[InvalidateBufferSubData_remap_index] #define _gloffset_InvalidateFramebuffer driDispatchRemapTable[InvalidateFramebuffer_remap_index] @@ -1641,8 +1686,51 @@ SERVEXTERN int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define _gloffset_TexCoordPointerEXT driDispatchRemapTable[TexCoordPointerEXT_remap_index] #define _gloffset_VertexPointerEXT driDispatchRemapTable[VertexPointerEXT_remap_index] #define _gloffset_DiscardFramebufferEXT driDispatchRemapTable[DiscardFramebufferEXT_remap_index] +#define _gloffset_ActiveShaderProgram driDispatchRemapTable[ActiveShaderProgram_remap_index] +#define _gloffset_BindProgramPipeline driDispatchRemapTable[BindProgramPipeline_remap_index] +#define _gloffset_CreateShaderProgramv driDispatchRemapTable[CreateShaderProgramv_remap_index] +#define _gloffset_DeleteProgramPipelines driDispatchRemapTable[DeleteProgramPipelines_remap_index] +#define _gloffset_GenProgramPipelines driDispatchRemapTable[GenProgramPipelines_remap_index] +#define _gloffset_GetProgramPipelineInfoLog driDispatchRemapTable[GetProgramPipelineInfoLog_remap_index] +#define _gloffset_GetProgramPipelineiv driDispatchRemapTable[GetProgramPipelineiv_remap_index] +#define _gloffset_IsProgramPipeline driDispatchRemapTable[IsProgramPipeline_remap_index] #define _gloffset_LockArraysEXT driDispatchRemapTable[LockArraysEXT_remap_index] +#define _gloffset_ProgramUniform1f driDispatchRemapTable[ProgramUniform1f_remap_index] +#define _gloffset_ProgramUniform1fv driDispatchRemapTable[ProgramUniform1fv_remap_index] +#define _gloffset_ProgramUniform1i driDispatchRemapTable[ProgramUniform1i_remap_index] +#define _gloffset_ProgramUniform1iv driDispatchRemapTable[ProgramUniform1iv_remap_index] +#define _gloffset_ProgramUniform1ui driDispatchRemapTable[ProgramUniform1ui_remap_index] +#define _gloffset_ProgramUniform1uiv driDispatchRemapTable[ProgramUniform1uiv_remap_index] +#define _gloffset_ProgramUniform2f driDispatchRemapTable[ProgramUniform2f_remap_index] +#define _gloffset_ProgramUniform2fv driDispatchRemapTable[ProgramUniform2fv_remap_index] +#define _gloffset_ProgramUniform2i driDispatchRemapTable[ProgramUniform2i_remap_index] +#define _gloffset_ProgramUniform2iv driDispatchRemapTable[ProgramUniform2iv_remap_index] +#define _gloffset_ProgramUniform2ui driDispatchRemapTable[ProgramUniform2ui_remap_index] +#define _gloffset_ProgramUniform2uiv driDispatchRemapTable[ProgramUniform2uiv_remap_index] +#define _gloffset_ProgramUniform3f driDispatchRemapTable[ProgramUniform3f_remap_index] +#define _gloffset_ProgramUniform3fv driDispatchRemapTable[ProgramUniform3fv_remap_index] +#define _gloffset_ProgramUniform3i driDispatchRemapTable[ProgramUniform3i_remap_index] +#define _gloffset_ProgramUniform3iv driDispatchRemapTable[ProgramUniform3iv_remap_index] +#define _gloffset_ProgramUniform3ui driDispatchRemapTable[ProgramUniform3ui_remap_index] +#define _gloffset_ProgramUniform3uiv driDispatchRemapTable[ProgramUniform3uiv_remap_index] +#define _gloffset_ProgramUniform4f driDispatchRemapTable[ProgramUniform4f_remap_index] +#define _gloffset_ProgramUniform4fv driDispatchRemapTable[ProgramUniform4fv_remap_index] +#define _gloffset_ProgramUniform4i driDispatchRemapTable[ProgramUniform4i_remap_index] +#define _gloffset_ProgramUniform4iv driDispatchRemapTable[ProgramUniform4iv_remap_index] +#define _gloffset_ProgramUniform4ui driDispatchRemapTable[ProgramUniform4ui_remap_index] +#define _gloffset_ProgramUniform4uiv driDispatchRemapTable[ProgramUniform4uiv_remap_index] +#define _gloffset_ProgramUniformMatrix2fv driDispatchRemapTable[ProgramUniformMatrix2fv_remap_index] +#define _gloffset_ProgramUniformMatrix2x3fv driDispatchRemapTable[ProgramUniformMatrix2x3fv_remap_index] +#define _gloffset_ProgramUniformMatrix2x4fv driDispatchRemapTable[ProgramUniformMatrix2x4fv_remap_index] +#define _gloffset_ProgramUniformMatrix3fv driDispatchRemapTable[ProgramUniformMatrix3fv_remap_index] +#define _gloffset_ProgramUniformMatrix3x2fv driDispatchRemapTable[ProgramUniformMatrix3x2fv_remap_index] +#define _gloffset_ProgramUniformMatrix3x4fv driDispatchRemapTable[ProgramUniformMatrix3x4fv_remap_index] +#define _gloffset_ProgramUniformMatrix4fv driDispatchRemapTable[ProgramUniformMatrix4fv_remap_index] +#define _gloffset_ProgramUniformMatrix4x2fv driDispatchRemapTable[ProgramUniformMatrix4x2fv_remap_index] +#define _gloffset_ProgramUniformMatrix4x3fv driDispatchRemapTable[ProgramUniformMatrix4x3fv_remap_index] #define _gloffset_UnlockArraysEXT driDispatchRemapTable[UnlockArraysEXT_remap_index] +#define _gloffset_UseProgramStages driDispatchRemapTable[UseProgramStages_remap_index] +#define _gloffset_ValidateProgramPipeline driDispatchRemapTable[ValidateProgramPipeline_remap_index] #define _gloffset_DebugMessageCallback driDispatchRemapTable[DebugMessageCallback_remap_index] #define _gloffset_DebugMessageControl driDispatchRemapTable[DebugMessageControl_remap_index] #define _gloffset_DebugMessageInsert driDispatchRemapTable[DebugMessageInsert_remap_index] @@ -11292,6 +11380,17 @@ static INLINE void SET_TexStorage3DMultisample(struct _glapi_table *disp, void ( SET_by_offset(disp, _gloffset_TexStorage3DMultisample, fn); } +typedef void (GLAPIENTRYP _glptr_BufferStorage)(GLenum, GLsizeiptr, const GLvoid *, GLbitfield); +#define CALL_BufferStorage(disp, parameters) \ + (* GET_BufferStorage(disp)) parameters +static INLINE _glptr_BufferStorage GET_BufferStorage(struct _glapi_table *disp) { + return (_glptr_BufferStorage) (GET_by_offset(disp, _gloffset_BufferStorage)); +} + +static INLINE void SET_BufferStorage(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLenum, GLsizeiptr, const GLvoid *, GLbitfield)) { + SET_by_offset(disp, _gloffset_BufferStorage, fn); +} + typedef void (GLAPIENTRYP _glptr_InvalidateBufferData)(GLuint); #define CALL_InvalidateBufferData(disp, parameters) \ (* GET_InvalidateBufferData(disp)) parameters @@ -11578,6 +11677,94 @@ static INLINE void SET_DiscardFramebufferEXT(struct _glapi_table *disp, void (GL SET_by_offset(disp, _gloffset_DiscardFramebufferEXT, fn); } +typedef void (GLAPIENTRYP _glptr_ActiveShaderProgram)(GLuint, GLuint); +#define CALL_ActiveShaderProgram(disp, parameters) \ + (* GET_ActiveShaderProgram(disp)) parameters +static INLINE _glptr_ActiveShaderProgram GET_ActiveShaderProgram(struct _glapi_table *disp) { + return (_glptr_ActiveShaderProgram) (GET_by_offset(disp, _gloffset_ActiveShaderProgram)); +} + +static INLINE void SET_ActiveShaderProgram(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLuint)) { + SET_by_offset(disp, _gloffset_ActiveShaderProgram, fn); +} + +typedef void (GLAPIENTRYP _glptr_BindProgramPipeline)(GLuint); +#define CALL_BindProgramPipeline(disp, parameters) \ + (* GET_BindProgramPipeline(disp)) parameters +static INLINE _glptr_BindProgramPipeline GET_BindProgramPipeline(struct _glapi_table *disp) { + return (_glptr_BindProgramPipeline) (GET_by_offset(disp, _gloffset_BindProgramPipeline)); +} + +static INLINE void SET_BindProgramPipeline(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint)) { + SET_by_offset(disp, _gloffset_BindProgramPipeline, fn); +} + +typedef GLuint (GLAPIENTRYP _glptr_CreateShaderProgramv)(GLenum, GLsizei, const GLchar * const *); +#define CALL_CreateShaderProgramv(disp, parameters) \ + (* GET_CreateShaderProgramv(disp)) parameters +static INLINE _glptr_CreateShaderProgramv GET_CreateShaderProgramv(struct _glapi_table *disp) { + return (_glptr_CreateShaderProgramv) (GET_by_offset(disp, _gloffset_CreateShaderProgramv)); +} + +static INLINE void SET_CreateShaderProgramv(struct _glapi_table *disp, GLuint (GLAPIENTRYP fn)(GLenum, GLsizei, const GLchar * const *)) { + SET_by_offset(disp, _gloffset_CreateShaderProgramv, fn); +} + +typedef void (GLAPIENTRYP _glptr_DeleteProgramPipelines)(GLsizei, const GLuint *); +#define CALL_DeleteProgramPipelines(disp, parameters) \ + (* GET_DeleteProgramPipelines(disp)) parameters +static INLINE _glptr_DeleteProgramPipelines GET_DeleteProgramPipelines(struct _glapi_table *disp) { + return (_glptr_DeleteProgramPipelines) (GET_by_offset(disp, _gloffset_DeleteProgramPipelines)); +} + +static INLINE void SET_DeleteProgramPipelines(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLsizei, const GLuint *)) { + SET_by_offset(disp, _gloffset_DeleteProgramPipelines, fn); +} + +typedef void (GLAPIENTRYP _glptr_GenProgramPipelines)(GLsizei, GLuint *); +#define CALL_GenProgramPipelines(disp, parameters) \ + (* GET_GenProgramPipelines(disp)) parameters +static INLINE _glptr_GenProgramPipelines GET_GenProgramPipelines(struct _glapi_table *disp) { + return (_glptr_GenProgramPipelines) (GET_by_offset(disp, _gloffset_GenProgramPipelines)); +} + +static INLINE void SET_GenProgramPipelines(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLsizei, GLuint *)) { + SET_by_offset(disp, _gloffset_GenProgramPipelines, fn); +} + +typedef void (GLAPIENTRYP _glptr_GetProgramPipelineInfoLog)(GLuint, GLsizei, GLsizei *, GLchar *); +#define CALL_GetProgramPipelineInfoLog(disp, parameters) \ + (* GET_GetProgramPipelineInfoLog(disp)) parameters +static INLINE _glptr_GetProgramPipelineInfoLog GET_GetProgramPipelineInfoLog(struct _glapi_table *disp) { + return (_glptr_GetProgramPipelineInfoLog) (GET_by_offset(disp, _gloffset_GetProgramPipelineInfoLog)); +} + +static INLINE void SET_GetProgramPipelineInfoLog(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLsizei, GLsizei *, GLchar *)) { + SET_by_offset(disp, _gloffset_GetProgramPipelineInfoLog, fn); +} + +typedef void (GLAPIENTRYP _glptr_GetProgramPipelineiv)(GLuint, GLenum, GLint *); +#define CALL_GetProgramPipelineiv(disp, parameters) \ + (* GET_GetProgramPipelineiv(disp)) parameters +static INLINE _glptr_GetProgramPipelineiv GET_GetProgramPipelineiv(struct _glapi_table *disp) { + return (_glptr_GetProgramPipelineiv) (GET_by_offset(disp, _gloffset_GetProgramPipelineiv)); +} + +static INLINE void SET_GetProgramPipelineiv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLenum, GLint *)) { + SET_by_offset(disp, _gloffset_GetProgramPipelineiv, fn); +} + +typedef GLboolean (GLAPIENTRYP _glptr_IsProgramPipeline)(GLuint); +#define CALL_IsProgramPipeline(disp, parameters) \ + (* GET_IsProgramPipeline(disp)) parameters +static INLINE _glptr_IsProgramPipeline GET_IsProgramPipeline(struct _glapi_table *disp) { + return (_glptr_IsProgramPipeline) (GET_by_offset(disp, _gloffset_IsProgramPipeline)); +} + +static INLINE void SET_IsProgramPipeline(struct _glapi_table *disp, GLboolean (GLAPIENTRYP fn)(GLuint)) { + SET_by_offset(disp, _gloffset_IsProgramPipeline, fn); +} + typedef void (GLAPIENTRYP _glptr_LockArraysEXT)(GLint, GLsizei); #define CALL_LockArraysEXT(disp, parameters) \ (* GET_LockArraysEXT(disp)) parameters @@ -11589,6 +11776,369 @@ static INLINE void SET_LockArraysEXT(struct _glapi_table *disp, void (GLAPIENTRY SET_by_offset(disp, _gloffset_LockArraysEXT, fn); } +typedef void (GLAPIENTRYP _glptr_ProgramUniform1f)(GLuint, GLint, GLfloat); +#define CALL_ProgramUniform1f(disp, parameters) \ + (* GET_ProgramUniform1f(disp)) parameters +static INLINE _glptr_ProgramUniform1f GET_ProgramUniform1f(struct _glapi_table *disp) { + return (_glptr_ProgramUniform1f) (GET_by_offset(disp, _gloffset_ProgramUniform1f)); +} + +static INLINE void SET_ProgramUniform1f(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLfloat)) { + SET_by_offset(disp, _gloffset_ProgramUniform1f, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform1fv)(GLuint, GLint, GLsizei, const GLfloat *); +#define CALL_ProgramUniform1fv(disp, parameters) \ + (* GET_ProgramUniform1fv(disp)) parameters +static INLINE _glptr_ProgramUniform1fv GET_ProgramUniform1fv(struct _glapi_table *disp) { + return (_glptr_ProgramUniform1fv) (GET_by_offset(disp, _gloffset_ProgramUniform1fv)); +} + +static INLINE void SET_ProgramUniform1fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLfloat *)) { + SET_by_offset(disp, _gloffset_ProgramUniform1fv, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform1i)(GLuint, GLint, GLint); +#define CALL_ProgramUniform1i(disp, parameters) \ + (* GET_ProgramUniform1i(disp)) parameters +static INLINE _glptr_ProgramUniform1i GET_ProgramUniform1i(struct _glapi_table *disp) { + return (_glptr_ProgramUniform1i) (GET_by_offset(disp, _gloffset_ProgramUniform1i)); +} + +static INLINE void SET_ProgramUniform1i(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLint)) { + SET_by_offset(disp, _gloffset_ProgramUniform1i, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform1iv)(GLuint, GLint, GLsizei, const GLint *); +#define CALL_ProgramUniform1iv(disp, parameters) \ + (* GET_ProgramUniform1iv(disp)) parameters +static INLINE _glptr_ProgramUniform1iv GET_ProgramUniform1iv(struct _glapi_table *disp) { + return (_glptr_ProgramUniform1iv) (GET_by_offset(disp, _gloffset_ProgramUniform1iv)); +} + +static INLINE void SET_ProgramUniform1iv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLint *)) { + SET_by_offset(disp, _gloffset_ProgramUniform1iv, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform1ui)(GLuint, GLint, GLuint); +#define CALL_ProgramUniform1ui(disp, parameters) \ + (* GET_ProgramUniform1ui(disp)) parameters +static INLINE _glptr_ProgramUniform1ui GET_ProgramUniform1ui(struct _glapi_table *disp) { + return (_glptr_ProgramUniform1ui) (GET_by_offset(disp, _gloffset_ProgramUniform1ui)); +} + +static INLINE void SET_ProgramUniform1ui(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLuint)) { + SET_by_offset(disp, _gloffset_ProgramUniform1ui, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform1uiv)(GLuint, GLint, GLsizei, const GLuint *); +#define CALL_ProgramUniform1uiv(disp, parameters) \ + (* GET_ProgramUniform1uiv(disp)) parameters +static INLINE _glptr_ProgramUniform1uiv GET_ProgramUniform1uiv(struct _glapi_table *disp) { + return (_glptr_ProgramUniform1uiv) (GET_by_offset(disp, _gloffset_ProgramUniform1uiv)); +} + +static INLINE void SET_ProgramUniform1uiv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLuint *)) { + SET_by_offset(disp, _gloffset_ProgramUniform1uiv, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform2f)(GLuint, GLint, GLfloat, GLfloat); +#define CALL_ProgramUniform2f(disp, parameters) \ + (* GET_ProgramUniform2f(disp)) parameters +static INLINE _glptr_ProgramUniform2f GET_ProgramUniform2f(struct _glapi_table *disp) { + return (_glptr_ProgramUniform2f) (GET_by_offset(disp, _gloffset_ProgramUniform2f)); +} + +static INLINE void SET_ProgramUniform2f(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLfloat, GLfloat)) { + SET_by_offset(disp, _gloffset_ProgramUniform2f, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform2fv)(GLuint, GLint, GLsizei, const GLfloat *); +#define CALL_ProgramUniform2fv(disp, parameters) \ + (* GET_ProgramUniform2fv(disp)) parameters +static INLINE _glptr_ProgramUniform2fv GET_ProgramUniform2fv(struct _glapi_table *disp) { + return (_glptr_ProgramUniform2fv) (GET_by_offset(disp, _gloffset_ProgramUniform2fv)); +} + +static INLINE void SET_ProgramUniform2fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLfloat *)) { + SET_by_offset(disp, _gloffset_ProgramUniform2fv, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform2i)(GLuint, GLint, GLint, GLint); +#define CALL_ProgramUniform2i(disp, parameters) \ + (* GET_ProgramUniform2i(disp)) parameters +static INLINE _glptr_ProgramUniform2i GET_ProgramUniform2i(struct _glapi_table *disp) { + return (_glptr_ProgramUniform2i) (GET_by_offset(disp, _gloffset_ProgramUniform2i)); +} + +static INLINE void SET_ProgramUniform2i(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLint, GLint)) { + SET_by_offset(disp, _gloffset_ProgramUniform2i, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform2iv)(GLuint, GLint, GLsizei, const GLint *); +#define CALL_ProgramUniform2iv(disp, parameters) \ + (* GET_ProgramUniform2iv(disp)) parameters +static INLINE _glptr_ProgramUniform2iv GET_ProgramUniform2iv(struct _glapi_table *disp) { + return (_glptr_ProgramUniform2iv) (GET_by_offset(disp, _gloffset_ProgramUniform2iv)); +} + +static INLINE void SET_ProgramUniform2iv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLint *)) { + SET_by_offset(disp, _gloffset_ProgramUniform2iv, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform2ui)(GLuint, GLint, GLuint, GLuint); +#define CALL_ProgramUniform2ui(disp, parameters) \ + (* GET_ProgramUniform2ui(disp)) parameters +static INLINE _glptr_ProgramUniform2ui GET_ProgramUniform2ui(struct _glapi_table *disp) { + return (_glptr_ProgramUniform2ui) (GET_by_offset(disp, _gloffset_ProgramUniform2ui)); +} + +static INLINE void SET_ProgramUniform2ui(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLuint, GLuint)) { + SET_by_offset(disp, _gloffset_ProgramUniform2ui, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform2uiv)(GLuint, GLint, GLsizei, const GLuint *); +#define CALL_ProgramUniform2uiv(disp, parameters) \ + (* GET_ProgramUniform2uiv(disp)) parameters +static INLINE _glptr_ProgramUniform2uiv GET_ProgramUniform2uiv(struct _glapi_table *disp) { + return (_glptr_ProgramUniform2uiv) (GET_by_offset(disp, _gloffset_ProgramUniform2uiv)); +} + +static INLINE void SET_ProgramUniform2uiv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLuint *)) { + SET_by_offset(disp, _gloffset_ProgramUniform2uiv, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform3f)(GLuint, GLint, GLfloat, GLfloat, GLfloat); +#define CALL_ProgramUniform3f(disp, parameters) \ + (* GET_ProgramUniform3f(disp)) parameters +static INLINE _glptr_ProgramUniform3f GET_ProgramUniform3f(struct _glapi_table *disp) { + return (_glptr_ProgramUniform3f) (GET_by_offset(disp, _gloffset_ProgramUniform3f)); +} + +static INLINE void SET_ProgramUniform3f(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLfloat, GLfloat, GLfloat)) { + SET_by_offset(disp, _gloffset_ProgramUniform3f, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform3fv)(GLuint, GLint, GLsizei, const GLfloat *); +#define CALL_ProgramUniform3fv(disp, parameters) \ + (* GET_ProgramUniform3fv(disp)) parameters +static INLINE _glptr_ProgramUniform3fv GET_ProgramUniform3fv(struct _glapi_table *disp) { + return (_glptr_ProgramUniform3fv) (GET_by_offset(disp, _gloffset_ProgramUniform3fv)); +} + +static INLINE void SET_ProgramUniform3fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLfloat *)) { + SET_by_offset(disp, _gloffset_ProgramUniform3fv, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform3i)(GLuint, GLint, GLint, GLint, GLint); +#define CALL_ProgramUniform3i(disp, parameters) \ + (* GET_ProgramUniform3i(disp)) parameters +static INLINE _glptr_ProgramUniform3i GET_ProgramUniform3i(struct _glapi_table *disp) { + return (_glptr_ProgramUniform3i) (GET_by_offset(disp, _gloffset_ProgramUniform3i)); +} + +static INLINE void SET_ProgramUniform3i(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLint, GLint, GLint)) { + SET_by_offset(disp, _gloffset_ProgramUniform3i, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform3iv)(GLuint, GLint, GLsizei, const GLint *); +#define CALL_ProgramUniform3iv(disp, parameters) \ + (* GET_ProgramUniform3iv(disp)) parameters +static INLINE _glptr_ProgramUniform3iv GET_ProgramUniform3iv(struct _glapi_table *disp) { + return (_glptr_ProgramUniform3iv) (GET_by_offset(disp, _gloffset_ProgramUniform3iv)); +} + +static INLINE void SET_ProgramUniform3iv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLint *)) { + SET_by_offset(disp, _gloffset_ProgramUniform3iv, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform3ui)(GLuint, GLint, GLuint, GLuint, GLuint); +#define CALL_ProgramUniform3ui(disp, parameters) \ + (* GET_ProgramUniform3ui(disp)) parameters +static INLINE _glptr_ProgramUniform3ui GET_ProgramUniform3ui(struct _glapi_table *disp) { + return (_glptr_ProgramUniform3ui) (GET_by_offset(disp, _gloffset_ProgramUniform3ui)); +} + +static INLINE void SET_ProgramUniform3ui(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLuint, GLuint, GLuint)) { + SET_by_offset(disp, _gloffset_ProgramUniform3ui, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform3uiv)(GLuint, GLint, GLsizei, const GLuint *); +#define CALL_ProgramUniform3uiv(disp, parameters) \ + (* GET_ProgramUniform3uiv(disp)) parameters +static INLINE _glptr_ProgramUniform3uiv GET_ProgramUniform3uiv(struct _glapi_table *disp) { + return (_glptr_ProgramUniform3uiv) (GET_by_offset(disp, _gloffset_ProgramUniform3uiv)); +} + +static INLINE void SET_ProgramUniform3uiv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLuint *)) { + SET_by_offset(disp, _gloffset_ProgramUniform3uiv, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform4f)(GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat); +#define CALL_ProgramUniform4f(disp, parameters) \ + (* GET_ProgramUniform4f(disp)) parameters +static INLINE _glptr_ProgramUniform4f GET_ProgramUniform4f(struct _glapi_table *disp) { + return (_glptr_ProgramUniform4f) (GET_by_offset(disp, _gloffset_ProgramUniform4f)); +} + +static INLINE void SET_ProgramUniform4f(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat)) { + SET_by_offset(disp, _gloffset_ProgramUniform4f, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform4fv)(GLuint, GLint, GLsizei, const GLfloat *); +#define CALL_ProgramUniform4fv(disp, parameters) \ + (* GET_ProgramUniform4fv(disp)) parameters +static INLINE _glptr_ProgramUniform4fv GET_ProgramUniform4fv(struct _glapi_table *disp) { + return (_glptr_ProgramUniform4fv) (GET_by_offset(disp, _gloffset_ProgramUniform4fv)); +} + +static INLINE void SET_ProgramUniform4fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLfloat *)) { + SET_by_offset(disp, _gloffset_ProgramUniform4fv, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform4i)(GLuint, GLint, GLint, GLint, GLint, GLint); +#define CALL_ProgramUniform4i(disp, parameters) \ + (* GET_ProgramUniform4i(disp)) parameters +static INLINE _glptr_ProgramUniform4i GET_ProgramUniform4i(struct _glapi_table *disp) { + return (_glptr_ProgramUniform4i) (GET_by_offset(disp, _gloffset_ProgramUniform4i)); +} + +static INLINE void SET_ProgramUniform4i(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLint, GLint, GLint, GLint)) { + SET_by_offset(disp, _gloffset_ProgramUniform4i, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform4iv)(GLuint, GLint, GLsizei, const GLint *); +#define CALL_ProgramUniform4iv(disp, parameters) \ + (* GET_ProgramUniform4iv(disp)) parameters +static INLINE _glptr_ProgramUniform4iv GET_ProgramUniform4iv(struct _glapi_table *disp) { + return (_glptr_ProgramUniform4iv) (GET_by_offset(disp, _gloffset_ProgramUniform4iv)); +} + +static INLINE void SET_ProgramUniform4iv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLint *)) { + SET_by_offset(disp, _gloffset_ProgramUniform4iv, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform4ui)(GLuint, GLint, GLuint, GLuint, GLuint, GLuint); +#define CALL_ProgramUniform4ui(disp, parameters) \ + (* GET_ProgramUniform4ui(disp)) parameters +static INLINE _glptr_ProgramUniform4ui GET_ProgramUniform4ui(struct _glapi_table *disp) { + return (_glptr_ProgramUniform4ui) (GET_by_offset(disp, _gloffset_ProgramUniform4ui)); +} + +static INLINE void SET_ProgramUniform4ui(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLuint, GLuint, GLuint, GLuint)) { + SET_by_offset(disp, _gloffset_ProgramUniform4ui, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniform4uiv)(GLuint, GLint, GLsizei, const GLuint *); +#define CALL_ProgramUniform4uiv(disp, parameters) \ + (* GET_ProgramUniform4uiv(disp)) parameters +static INLINE _glptr_ProgramUniform4uiv GET_ProgramUniform4uiv(struct _glapi_table *disp) { + return (_glptr_ProgramUniform4uiv) (GET_by_offset(disp, _gloffset_ProgramUniform4uiv)); +} + +static INLINE void SET_ProgramUniform4uiv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, const GLuint *)) { + SET_by_offset(disp, _gloffset_ProgramUniform4uiv, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniformMatrix2fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define CALL_ProgramUniformMatrix2fv(disp, parameters) \ + (* GET_ProgramUniformMatrix2fv(disp)) parameters +static INLINE _glptr_ProgramUniformMatrix2fv GET_ProgramUniformMatrix2fv(struct _glapi_table *disp) { + return (_glptr_ProgramUniformMatrix2fv) (GET_by_offset(disp, _gloffset_ProgramUniformMatrix2fv)); +} + +static INLINE void SET_ProgramUniformMatrix2fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) { + SET_by_offset(disp, _gloffset_ProgramUniformMatrix2fv, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniformMatrix2x3fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define CALL_ProgramUniformMatrix2x3fv(disp, parameters) \ + (* GET_ProgramUniformMatrix2x3fv(disp)) parameters +static INLINE _glptr_ProgramUniformMatrix2x3fv GET_ProgramUniformMatrix2x3fv(struct _glapi_table *disp) { + return (_glptr_ProgramUniformMatrix2x3fv) (GET_by_offset(disp, _gloffset_ProgramUniformMatrix2x3fv)); +} + +static INLINE void SET_ProgramUniformMatrix2x3fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) { + SET_by_offset(disp, _gloffset_ProgramUniformMatrix2x3fv, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniformMatrix2x4fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define CALL_ProgramUniformMatrix2x4fv(disp, parameters) \ + (* GET_ProgramUniformMatrix2x4fv(disp)) parameters +static INLINE _glptr_ProgramUniformMatrix2x4fv GET_ProgramUniformMatrix2x4fv(struct _glapi_table *disp) { + return (_glptr_ProgramUniformMatrix2x4fv) (GET_by_offset(disp, _gloffset_ProgramUniformMatrix2x4fv)); +} + +static INLINE void SET_ProgramUniformMatrix2x4fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) { + SET_by_offset(disp, _gloffset_ProgramUniformMatrix2x4fv, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniformMatrix3fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define CALL_ProgramUniformMatrix3fv(disp, parameters) \ + (* GET_ProgramUniformMatrix3fv(disp)) parameters +static INLINE _glptr_ProgramUniformMatrix3fv GET_ProgramUniformMatrix3fv(struct _glapi_table *disp) { + return (_glptr_ProgramUniformMatrix3fv) (GET_by_offset(disp, _gloffset_ProgramUniformMatrix3fv)); +} + +static INLINE void SET_ProgramUniformMatrix3fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) { + SET_by_offset(disp, _gloffset_ProgramUniformMatrix3fv, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniformMatrix3x2fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define CALL_ProgramUniformMatrix3x2fv(disp, parameters) \ + (* GET_ProgramUniformMatrix3x2fv(disp)) parameters +static INLINE _glptr_ProgramUniformMatrix3x2fv GET_ProgramUniformMatrix3x2fv(struct _glapi_table *disp) { + return (_glptr_ProgramUniformMatrix3x2fv) (GET_by_offset(disp, _gloffset_ProgramUniformMatrix3x2fv)); +} + +static INLINE void SET_ProgramUniformMatrix3x2fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) { + SET_by_offset(disp, _gloffset_ProgramUniformMatrix3x2fv, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniformMatrix3x4fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define CALL_ProgramUniformMatrix3x4fv(disp, parameters) \ + (* GET_ProgramUniformMatrix3x4fv(disp)) parameters +static INLINE _glptr_ProgramUniformMatrix3x4fv GET_ProgramUniformMatrix3x4fv(struct _glapi_table *disp) { + return (_glptr_ProgramUniformMatrix3x4fv) (GET_by_offset(disp, _gloffset_ProgramUniformMatrix3x4fv)); +} + +static INLINE void SET_ProgramUniformMatrix3x4fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) { + SET_by_offset(disp, _gloffset_ProgramUniformMatrix3x4fv, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniformMatrix4fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define CALL_ProgramUniformMatrix4fv(disp, parameters) \ + (* GET_ProgramUniformMatrix4fv(disp)) parameters +static INLINE _glptr_ProgramUniformMatrix4fv GET_ProgramUniformMatrix4fv(struct _glapi_table *disp) { + return (_glptr_ProgramUniformMatrix4fv) (GET_by_offset(disp, _gloffset_ProgramUniformMatrix4fv)); +} + +static INLINE void SET_ProgramUniformMatrix4fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) { + SET_by_offset(disp, _gloffset_ProgramUniformMatrix4fv, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniformMatrix4x2fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define CALL_ProgramUniformMatrix4x2fv(disp, parameters) \ + (* GET_ProgramUniformMatrix4x2fv(disp)) parameters +static INLINE _glptr_ProgramUniformMatrix4x2fv GET_ProgramUniformMatrix4x2fv(struct _glapi_table *disp) { + return (_glptr_ProgramUniformMatrix4x2fv) (GET_by_offset(disp, _gloffset_ProgramUniformMatrix4x2fv)); +} + +static INLINE void SET_ProgramUniformMatrix4x2fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) { + SET_by_offset(disp, _gloffset_ProgramUniformMatrix4x2fv, fn); +} + +typedef void (GLAPIENTRYP _glptr_ProgramUniformMatrix4x3fv)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *); +#define CALL_ProgramUniformMatrix4x3fv(disp, parameters) \ + (* GET_ProgramUniformMatrix4x3fv(disp)) parameters +static INLINE _glptr_ProgramUniformMatrix4x3fv GET_ProgramUniformMatrix4x3fv(struct _glapi_table *disp) { + return (_glptr_ProgramUniformMatrix4x3fv) (GET_by_offset(disp, _gloffset_ProgramUniformMatrix4x3fv)); +} + +static INLINE void SET_ProgramUniformMatrix4x3fv(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLint, GLsizei, GLboolean, const GLfloat *)) { + SET_by_offset(disp, _gloffset_ProgramUniformMatrix4x3fv, fn); +} + typedef void (GLAPIENTRYP _glptr_UnlockArraysEXT)(void); #define CALL_UnlockArraysEXT(disp, parameters) \ (* GET_UnlockArraysEXT(disp)) parameters @@ -11600,6 +12150,28 @@ static INLINE void SET_UnlockArraysEXT(struct _glapi_table *disp, void (GLAPIENT SET_by_offset(disp, _gloffset_UnlockArraysEXT, fn); } +typedef void (GLAPIENTRYP _glptr_UseProgramStages)(GLuint, GLbitfield, GLuint); +#define CALL_UseProgramStages(disp, parameters) \ + (* GET_UseProgramStages(disp)) parameters +static INLINE _glptr_UseProgramStages GET_UseProgramStages(struct _glapi_table *disp) { + return (_glptr_UseProgramStages) (GET_by_offset(disp, _gloffset_UseProgramStages)); +} + +static INLINE void SET_UseProgramStages(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint, GLbitfield, GLuint)) { + SET_by_offset(disp, _gloffset_UseProgramStages, fn); +} + +typedef void (GLAPIENTRYP _glptr_ValidateProgramPipeline)(GLuint); +#define CALL_ValidateProgramPipeline(disp, parameters) \ + (* GET_ValidateProgramPipeline(disp)) parameters +static INLINE _glptr_ValidateProgramPipeline GET_ValidateProgramPipeline(struct _glapi_table *disp) { + return (_glptr_ValidateProgramPipeline) (GET_by_offset(disp, _gloffset_ValidateProgramPipeline)); +} + +static INLINE void SET_ValidateProgramPipeline(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLuint)) { + SET_by_offset(disp, _gloffset_ValidateProgramPipeline, fn); +} + typedef void (GLAPIENTRYP _glptr_DebugMessageCallback)(GLDEBUGPROC, const GLvoid *); #define CALL_DebugMessageCallback(disp, parameters) \ (* GET_DebugMessageCallback(disp)) parameters @@ -13305,14 +13877,14 @@ static INLINE void SET_VDPAUInitNV(struct _glapi_table *disp, void (GLAPIENTRYP SET_by_offset(disp, _gloffset_VDPAUInitNV, fn); } -typedef void (GLAPIENTRYP _glptr_VDPAUIsSurfaceNV)(GLintptr); +typedef GLboolean (GLAPIENTRYP _glptr_VDPAUIsSurfaceNV)(GLintptr); #define CALL_VDPAUIsSurfaceNV(disp, parameters) \ (* GET_VDPAUIsSurfaceNV(disp)) parameters static INLINE _glptr_VDPAUIsSurfaceNV GET_VDPAUIsSurfaceNV(struct _glapi_table *disp) { return (_glptr_VDPAUIsSurfaceNV) (GET_by_offset(disp, _gloffset_VDPAUIsSurfaceNV)); } -static INLINE void SET_VDPAUIsSurfaceNV(struct _glapi_table *disp, void (GLAPIENTRYP fn)(GLintptr)) { +static INLINE void SET_VDPAUIsSurfaceNV(struct _glapi_table *disp, GLboolean (GLAPIENTRYP fn)(GLintptr)) { SET_by_offset(disp, _gloffset_VDPAUIsSurfaceNV, fn); } diff --git a/xorg-server/glx/glapi.h b/xorg-server/glx/glapi.h index b10f19a63..67bf1f42e 100644 --- a/xorg-server/glx/glapi.h +++ b/xorg-server/glx/glapi.h @@ -44,13 +44,14 @@ #ifndef _GLAPI_H #define _GLAPI_H -#include "glthread.h" +#include "u_thread.h" #ifdef __cplusplus extern "C" { #endif + #ifdef _GLAPI_NO_EXPORTS # define _GLAPI_EXPORT #else /* _GLAPI_NO_EXPORTS */ @@ -69,7 +70,6 @@ extern "C" { #include "GL/gl.h" #include "GL/glext.h" -#include "glthread.h" struct _glapi_table; @@ -84,8 +84,8 @@ typedef void (*_glapi_warning_func)(void *ctx, const char *str, ...); #define _glapi_get_dispatch _mglapi_get_dispatch #define _glapi_set_context _mglapi_set_context #define _glapi_get_context _mglapi_get_context -#define _glapi_Context _mglapi_Context #define _glapi_Dispatch _mglapi_Dispatch +#define _glapi_Context _mglapi_Context #endif /* @@ -100,12 +100,14 @@ typedef void (*_glapi_warning_func)(void *ctx, const char *str, ...); **/ #if defined (GLX_USE_TLS) -_GLAPI_EXPORT extern __thread struct _glapi_table * _glapi_tls_Dispatch; +_GLAPI_EXPORT extern __thread struct _glapi_table * _glapi_tls_Dispatch + ; -_GLAPI_EXPORT extern const void *_glapi_Context; -_GLAPI_EXPORT extern const struct _glapi_table *_glapi_Dispatch; +_GLAPI_EXPORT extern __thread void * _glapi_tls_Context + ; -_GLAPI_EXPORT extern __thread void * _glapi_tls_Context; +_GLAPI_EXPORT extern const struct _glapi_table *_glapi_Dispatch; +_GLAPI_EXPORT extern const void *_glapi_Context; # define GET_DISPATCH() _glapi_tls_Dispatch # define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) _glapi_tls_Context @@ -118,20 +120,22 @@ _GLAPI_EXPORT extern __thread void * _glapi_tls_Context; #define SERVEXTERN _declspec(dllexport) #endif -SERVEXTERN void *_glapi_Context; SERVEXTERN struct _glapi_table *_glapi_Dispatch; +SERVEXTERN void *_glapi_Context; # ifdef THREADS # define GET_DISPATCH() \ (likely(_glapi_Dispatch) ? _glapi_Dispatch : _glapi_get_dispatch()) - # define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) \ (likely(_glapi_Context) ? _glapi_Context : _glapi_get_context()) + # else + # define GET_DISPATCH() _glapi_Dispatch # define GET_CURRENT_CONTEXT(C) struct gl_context *C = (struct gl_context *) _glapi_Context + # endif #endif /* defined (GLX_USE_TLS) */ @@ -183,8 +187,10 @@ _glapi_get_proc_address(const char *funcName); extern struct _glapi_table * _glapi_create_table_from_handle(void *handle, const char *symbol_prefix); -#endif + #ifdef __cplusplus } #endif + +#endif /* _GLAPI_H */ diff --git a/xorg-server/glx/glapitable.h b/xorg-server/glx/glapitable.h index 3cb9b7b44..7f5fcbb43 100644 --- a/xorg-server/glx/glapitable.h +++ b/xorg-server/glx/glapitable.h @@ -899,244 +899,288 @@ struct _glapi_table void (GLAPIENTRYP TexBufferRange)(GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 855 */ void (GLAPIENTRYP TexStorage2DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); /* 856 */ void (GLAPIENTRYP TexStorage3DMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); /* 857 */ - void (GLAPIENTRYP InvalidateBufferData)(GLuint buffer); /* 858 */ - void (GLAPIENTRYP InvalidateBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr length); /* 859 */ - void (GLAPIENTRYP InvalidateFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum * attachments); /* 860 */ - void (GLAPIENTRYP InvalidateSubFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height); /* 861 */ - void (GLAPIENTRYP InvalidateTexImage)(GLuint texture, GLint level); /* 862 */ - void (GLAPIENTRYP InvalidateTexSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); /* 863 */ - void (GLAPIENTRYP PolygonOffsetEXT)(GLfloat factor, GLfloat bias); /* 864 */ - void (GLAPIENTRYP DrawTexfOES)(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height); /* 865 */ - void (GLAPIENTRYP DrawTexfvOES)(const GLfloat * coords); /* 866 */ - void (GLAPIENTRYP DrawTexiOES)(GLint x, GLint y, GLint z, GLint width, GLint height); /* 867 */ - void (GLAPIENTRYP DrawTexivOES)(const GLint * coords); /* 868 */ - void (GLAPIENTRYP DrawTexsOES)(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height); /* 869 */ - void (GLAPIENTRYP DrawTexsvOES)(const GLshort * coords); /* 870 */ - void (GLAPIENTRYP DrawTexxOES)(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height); /* 871 */ - void (GLAPIENTRYP DrawTexxvOES)(const GLfixed * coords); /* 872 */ - void (GLAPIENTRYP PointSizePointerOES)(GLenum type, GLsizei stride, const GLvoid * pointer); /* 873 */ - GLbitfield (GLAPIENTRYP QueryMatrixxOES)(GLfixed * mantissa, GLint * exponent); /* 874 */ - void (GLAPIENTRYP SampleMaskSGIS)(GLclampf value, GLboolean invert); /* 875 */ - void (GLAPIENTRYP SamplePatternSGIS)(GLenum pattern); /* 876 */ - void (GLAPIENTRYP ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 877 */ - void (GLAPIENTRYP EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean * pointer); /* 878 */ - void (GLAPIENTRYP IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 879 */ - void (GLAPIENTRYP NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 880 */ - void (GLAPIENTRYP TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 881 */ - void (GLAPIENTRYP VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 882 */ - void (GLAPIENTRYP DiscardFramebufferEXT)(GLenum target, GLsizei numAttachments, const GLenum * attachments); /* 883 */ - void (GLAPIENTRYP LockArraysEXT)(GLint first, GLsizei count); /* 884 */ - void (GLAPIENTRYP UnlockArraysEXT)(void); /* 885 */ - void (GLAPIENTRYP DebugMessageCallback)(GLDEBUGPROC callback, const GLvoid * userParam); /* 886 */ - void (GLAPIENTRYP DebugMessageControl)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled); /* 887 */ - void (GLAPIENTRYP DebugMessageInsert)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf); /* 888 */ - GLuint (GLAPIENTRYP GetDebugMessageLog)(GLuint count, GLsizei bufsize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog); /* 889 */ - void (GLAPIENTRYP GetObjectLabel)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei * length, GLchar * label); /* 890 */ - void (GLAPIENTRYP GetObjectPtrLabel)(const GLvoid * ptr, GLsizei bufSize, GLsizei * length, GLchar * label); /* 891 */ - void (GLAPIENTRYP ObjectLabel)(GLenum identifier, GLuint name, GLsizei length, const GLchar * label); /* 892 */ - void (GLAPIENTRYP ObjectPtrLabel)(const GLvoid * ptr, GLsizei length, const GLchar * label); /* 893 */ - void (GLAPIENTRYP PopDebugGroup)(void); /* 894 */ - void (GLAPIENTRYP PushDebugGroup)(GLenum source, GLuint id, GLsizei length, const GLchar * message); /* 895 */ - void (GLAPIENTRYP SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue); /* 896 */ - void (GLAPIENTRYP SecondaryColor3fvEXT)(const GLfloat * v); /* 897 */ - void (GLAPIENTRYP MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount); /* 898 */ - void (GLAPIENTRYP FogCoordfEXT)(GLfloat coord); /* 899 */ - void (GLAPIENTRYP FogCoordfvEXT)(const GLfloat * coord); /* 900 */ - void (GLAPIENTRYP ResizeBuffersMESA)(void); /* 901 */ - void (GLAPIENTRYP WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 902 */ - void (GLAPIENTRYP WindowPos4dvMESA)(const GLdouble * v); /* 903 */ - void (GLAPIENTRYP WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 904 */ - void (GLAPIENTRYP WindowPos4fvMESA)(const GLfloat * v); /* 905 */ - void (GLAPIENTRYP WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w); /* 906 */ - void (GLAPIENTRYP WindowPos4ivMESA)(const GLint * v); /* 907 */ - void (GLAPIENTRYP WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w); /* 908 */ - void (GLAPIENTRYP WindowPos4svMESA)(const GLshort * v); /* 909 */ - void (GLAPIENTRYP MultiModeDrawArraysIBM)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); /* 910 */ - void (GLAPIENTRYP MultiModeDrawElementsIBM)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); /* 911 */ - GLboolean (GLAPIENTRYP AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences); /* 912 */ - void (GLAPIENTRYP ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params); /* 913 */ - void (GLAPIENTRYP GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params); /* 914 */ - void (GLAPIENTRYP GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params); /* 915 */ - void (GLAPIENTRYP GetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program); /* 916 */ - void (GLAPIENTRYP GetProgramivNV)(GLuint id, GLenum pname, GLint * params); /* 917 */ - void (GLAPIENTRYP GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params); /* 918 */ - void (GLAPIENTRYP GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params); /* 919 */ - void (GLAPIENTRYP GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params); /* 920 */ - void (GLAPIENTRYP GetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params); /* 921 */ - void (GLAPIENTRYP LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program); /* 922 */ - void (GLAPIENTRYP ProgramParameters4dvNV)(GLenum target, GLuint index, GLsizei num, const GLdouble * params); /* 923 */ - void (GLAPIENTRYP ProgramParameters4fvNV)(GLenum target, GLuint index, GLsizei num, const GLfloat * params); /* 924 */ - void (GLAPIENTRYP RequestResidentProgramsNV)(GLsizei n, const GLuint * ids); /* 925 */ - void (GLAPIENTRYP TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform); /* 926 */ - void (GLAPIENTRYP VertexAttrib1dNV)(GLuint index, GLdouble x); /* 927 */ - void (GLAPIENTRYP VertexAttrib1dvNV)(GLuint index, const GLdouble * v); /* 928 */ - void (GLAPIENTRYP VertexAttrib1fNV)(GLuint index, GLfloat x); /* 929 */ - void (GLAPIENTRYP VertexAttrib1fvNV)(GLuint index, const GLfloat * v); /* 930 */ - void (GLAPIENTRYP VertexAttrib1sNV)(GLuint index, GLshort x); /* 931 */ - void (GLAPIENTRYP VertexAttrib1svNV)(GLuint index, const GLshort * v); /* 932 */ - void (GLAPIENTRYP VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y); /* 933 */ - void (GLAPIENTRYP VertexAttrib2dvNV)(GLuint index, const GLdouble * v); /* 934 */ - void (GLAPIENTRYP VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y); /* 935 */ - void (GLAPIENTRYP VertexAttrib2fvNV)(GLuint index, const GLfloat * v); /* 936 */ - void (GLAPIENTRYP VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y); /* 937 */ - void (GLAPIENTRYP VertexAttrib2svNV)(GLuint index, const GLshort * v); /* 938 */ - void (GLAPIENTRYP VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 939 */ - void (GLAPIENTRYP VertexAttrib3dvNV)(GLuint index, const GLdouble * v); /* 940 */ - void (GLAPIENTRYP VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 941 */ - void (GLAPIENTRYP VertexAttrib3fvNV)(GLuint index, const GLfloat * v); /* 942 */ - void (GLAPIENTRYP VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z); /* 943 */ - void (GLAPIENTRYP VertexAttrib3svNV)(GLuint index, const GLshort * v); /* 944 */ - void (GLAPIENTRYP VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 945 */ - void (GLAPIENTRYP VertexAttrib4dvNV)(GLuint index, const GLdouble * v); /* 946 */ - void (GLAPIENTRYP VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 947 */ - void (GLAPIENTRYP VertexAttrib4fvNV)(GLuint index, const GLfloat * v); /* 948 */ - void (GLAPIENTRYP VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); /* 949 */ - void (GLAPIENTRYP VertexAttrib4svNV)(GLuint index, const GLshort * v); /* 950 */ - void (GLAPIENTRYP VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); /* 951 */ - void (GLAPIENTRYP VertexAttrib4ubvNV)(GLuint index, const GLubyte * v); /* 952 */ - void (GLAPIENTRYP VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 953 */ - void (GLAPIENTRYP VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 954 */ - void (GLAPIENTRYP VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 955 */ - void (GLAPIENTRYP VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort * v); /* 956 */ - void (GLAPIENTRYP VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 957 */ - void (GLAPIENTRYP VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 958 */ - void (GLAPIENTRYP VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort * v); /* 959 */ - void (GLAPIENTRYP VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 960 */ - void (GLAPIENTRYP VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 961 */ - void (GLAPIENTRYP VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort * v); /* 962 */ - void (GLAPIENTRYP VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 963 */ - void (GLAPIENTRYP VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 964 */ - void (GLAPIENTRYP VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v); /* 965 */ - void (GLAPIENTRYP VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v); /* 966 */ - void (GLAPIENTRYP GetTexBumpParameterfvATI)(GLenum pname, GLfloat * param); /* 967 */ - void (GLAPIENTRYP GetTexBumpParameterivATI)(GLenum pname, GLint * param); /* 968 */ - void (GLAPIENTRYP TexBumpParameterfvATI)(GLenum pname, const GLfloat * param); /* 969 */ - void (GLAPIENTRYP TexBumpParameterivATI)(GLenum pname, const GLint * param); /* 970 */ - void (GLAPIENTRYP AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 971 */ - void (GLAPIENTRYP AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 972 */ - 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); /* 973 */ - void (GLAPIENTRYP BeginFragmentShaderATI)(void); /* 974 */ - void (GLAPIENTRYP BindFragmentShaderATI)(GLuint id); /* 975 */ - void (GLAPIENTRYP ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 976 */ - void (GLAPIENTRYP ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 977 */ - 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); /* 978 */ - void (GLAPIENTRYP DeleteFragmentShaderATI)(GLuint id); /* 979 */ - void (GLAPIENTRYP EndFragmentShaderATI)(void); /* 980 */ - GLuint (GLAPIENTRYP GenFragmentShadersATI)(GLuint range); /* 981 */ - void (GLAPIENTRYP PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle); /* 982 */ - void (GLAPIENTRYP SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle); /* 983 */ - void (GLAPIENTRYP SetFragmentShaderConstantATI)(GLuint dst, const GLfloat * value); /* 984 */ - void (GLAPIENTRYP ActiveStencilFaceEXT)(GLenum face); /* 985 */ - void (GLAPIENTRYP BindVertexArrayAPPLE)(GLuint array); /* 986 */ - void (GLAPIENTRYP GenVertexArraysAPPLE)(GLsizei n, GLuint * arrays); /* 987 */ - void (GLAPIENTRYP GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params); /* 988 */ - void (GLAPIENTRYP GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params); /* 989 */ - void (GLAPIENTRYP ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 990 */ - void (GLAPIENTRYP ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v); /* 991 */ - void (GLAPIENTRYP ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 992 */ - void (GLAPIENTRYP ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v); /* 993 */ - void (GLAPIENTRYP PrimitiveRestartNV)(void); /* 994 */ - void (GLAPIENTRYP GetTexGenxvOES)(GLenum coord, GLenum pname, GLfixed * params); /* 995 */ - void (GLAPIENTRYP TexGenxOES)(GLenum coord, GLenum pname, GLint param); /* 996 */ - void (GLAPIENTRYP TexGenxvOES)(GLenum coord, GLenum pname, const GLfixed * params); /* 997 */ - void (GLAPIENTRYP DepthBoundsEXT)(GLclampd zmin, GLclampd zmax); /* 998 */ - void (GLAPIENTRYP BindFramebufferEXT)(GLenum target, GLuint framebuffer); /* 999 */ - void (GLAPIENTRYP BindRenderbufferEXT)(GLenum target, GLuint renderbuffer); /* 1000 */ - void (GLAPIENTRYP BufferParameteriAPPLE)(GLenum target, GLenum pname, GLint param); /* 1001 */ - void (GLAPIENTRYP FlushMappedBufferRangeAPPLE)(GLenum target, GLintptr offset, GLsizeiptr size); /* 1002 */ - void (GLAPIENTRYP VertexAttribI1iEXT)(GLuint index, GLint x); /* 1003 */ - void (GLAPIENTRYP VertexAttribI1uiEXT)(GLuint index, GLuint x); /* 1004 */ - void (GLAPIENTRYP VertexAttribI2iEXT)(GLuint index, GLint x, GLint y); /* 1005 */ - void (GLAPIENTRYP VertexAttribI2ivEXT)(GLuint index, const GLint * v); /* 1006 */ - void (GLAPIENTRYP VertexAttribI2uiEXT)(GLuint index, GLuint x, GLuint y); /* 1007 */ - void (GLAPIENTRYP VertexAttribI2uivEXT)(GLuint index, const GLuint * v); /* 1008 */ - void (GLAPIENTRYP VertexAttribI3iEXT)(GLuint index, GLint x, GLint y, GLint z); /* 1009 */ - void (GLAPIENTRYP VertexAttribI3ivEXT)(GLuint index, const GLint * v); /* 1010 */ - void (GLAPIENTRYP VertexAttribI3uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z); /* 1011 */ - void (GLAPIENTRYP VertexAttribI3uivEXT)(GLuint index, const GLuint * v); /* 1012 */ - void (GLAPIENTRYP VertexAttribI4iEXT)(GLuint index, GLint x, GLint y, GLint z, GLint w); /* 1013 */ - void (GLAPIENTRYP VertexAttribI4ivEXT)(GLuint index, const GLint * v); /* 1014 */ - void (GLAPIENTRYP VertexAttribI4uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); /* 1015 */ - void (GLAPIENTRYP VertexAttribI4uivEXT)(GLuint index, const GLuint * v); /* 1016 */ - void (GLAPIENTRYP ClearColorIiEXT)(GLint r, GLint g, GLint b, GLint a); /* 1017 */ - void (GLAPIENTRYP ClearColorIuiEXT)(GLuint r, GLuint g, GLuint b, GLuint a); /* 1018 */ - void (GLAPIENTRYP BindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); /* 1019 */ - void (GLAPIENTRYP BeginPerfMonitorAMD)(GLuint monitor); /* 1020 */ - void (GLAPIENTRYP DeletePerfMonitorsAMD)(GLsizei n, GLuint * monitors); /* 1021 */ - void (GLAPIENTRYP EndPerfMonitorAMD)(GLuint monitor); /* 1022 */ - void (GLAPIENTRYP GenPerfMonitorsAMD)(GLsizei n, GLuint * monitors); /* 1023 */ - void (GLAPIENTRYP GetPerfMonitorCounterDataAMD)(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint * data, GLint * bytesWritten); /* 1024 */ - void (GLAPIENTRYP GetPerfMonitorCounterInfoAMD)(GLuint group, GLuint counter, GLenum pname, GLvoid * data); /* 1025 */ - void (GLAPIENTRYP GetPerfMonitorCounterStringAMD)(GLuint group, GLuint counter, GLsizei bufSize, GLsizei * length, GLchar * counterString); /* 1026 */ - void (GLAPIENTRYP GetPerfMonitorCountersAMD)(GLuint group, GLint * numCounters, GLint * maxActiveCounters, GLsizei countersSize, GLuint * counters); /* 1027 */ - void (GLAPIENTRYP GetPerfMonitorGroupStringAMD)(GLuint group, GLsizei bufSize, GLsizei * length, GLchar * groupString); /* 1028 */ - void (GLAPIENTRYP GetPerfMonitorGroupsAMD)(GLint * numGroups, GLsizei groupsSize, GLuint * groups); /* 1029 */ - void (GLAPIENTRYP SelectPerfMonitorCountersAMD)(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint * counterList); /* 1030 */ - void (GLAPIENTRYP GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint * value); /* 1031 */ - GLenum (GLAPIENTRYP ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 1032 */ - GLenum (GLAPIENTRYP ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 1033 */ - void (GLAPIENTRYP ActiveProgramEXT)(GLuint program); /* 1034 */ - GLuint (GLAPIENTRYP CreateShaderProgramEXT)(GLenum type, const GLchar * string); /* 1035 */ - void (GLAPIENTRYP UseShaderProgramEXT)(GLenum type, GLuint program); /* 1036 */ - void (GLAPIENTRYP TextureBarrierNV)(void); /* 1037 */ - void (GLAPIENTRYP VDPAUFiniNV)(void); /* 1038 */ - void (GLAPIENTRYP VDPAUGetSurfaceivNV)(GLintptr surface, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values); /* 1039 */ - void (GLAPIENTRYP VDPAUInitNV)(const GLvoid * vdpDevice, const GLvoid * getProcAddress); /* 1040 */ - void (GLAPIENTRYP VDPAUIsSurfaceNV)(GLintptr surface); /* 1041 */ - void (GLAPIENTRYP VDPAUMapSurfacesNV)(GLsizei numSurfaces, const GLintptr * surfaces); /* 1042 */ - GLintptr (GLAPIENTRYP VDPAURegisterOutputSurfaceNV)(const GLvoid * vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint * textureNames); /* 1043 */ - GLintptr (GLAPIENTRYP VDPAURegisterVideoSurfaceNV)(const GLvoid * vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint * textureNames); /* 1044 */ - void (GLAPIENTRYP VDPAUSurfaceAccessNV)(GLintptr surface, GLenum access); /* 1045 */ - void (GLAPIENTRYP VDPAUUnmapSurfacesNV)(GLsizei numSurfaces, const GLintptr * surfaces); /* 1046 */ - void (GLAPIENTRYP VDPAUUnregisterSurfaceNV)(GLintptr surface); /* 1047 */ - void (GLAPIENTRYP StencilFuncSeparateATI)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); /* 1048 */ - void (GLAPIENTRYP ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 1049 */ - void (GLAPIENTRYP ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 1050 */ - void (GLAPIENTRYP EGLImageTargetRenderbufferStorageOES)(GLenum target, GLvoid * writeOffset); /* 1051 */ - void (GLAPIENTRYP EGLImageTargetTexture2DOES)(GLenum target, GLvoid * writeOffset); /* 1052 */ - void (GLAPIENTRYP AlphaFuncx)(GLenum func, GLclampx ref); /* 1053 */ - void (GLAPIENTRYP ClearColorx)(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); /* 1054 */ - void (GLAPIENTRYP ClearDepthx)(GLclampx depth); /* 1055 */ - void (GLAPIENTRYP Color4x)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); /* 1056 */ - void (GLAPIENTRYP DepthRangex)(GLclampx zNear, GLclampx zFar); /* 1057 */ - void (GLAPIENTRYP Fogx)(GLenum pname, GLfixed param); /* 1058 */ - void (GLAPIENTRYP Fogxv)(GLenum pname, const GLfixed * params); /* 1059 */ - void (GLAPIENTRYP Frustumf)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); /* 1060 */ - void (GLAPIENTRYP Frustumx)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); /* 1061 */ - void (GLAPIENTRYP LightModelx)(GLenum pname, GLfixed param); /* 1062 */ - void (GLAPIENTRYP LightModelxv)(GLenum pname, const GLfixed * params); /* 1063 */ - void (GLAPIENTRYP Lightx)(GLenum light, GLenum pname, GLfixed param); /* 1064 */ - void (GLAPIENTRYP Lightxv)(GLenum light, GLenum pname, const GLfixed * params); /* 1065 */ - void (GLAPIENTRYP LineWidthx)(GLfixed width); /* 1066 */ - void (GLAPIENTRYP LoadMatrixx)(const GLfixed * m); /* 1067 */ - void (GLAPIENTRYP Materialx)(GLenum face, GLenum pname, GLfixed param); /* 1068 */ - void (GLAPIENTRYP Materialxv)(GLenum face, GLenum pname, const GLfixed * params); /* 1069 */ - void (GLAPIENTRYP MultMatrixx)(const GLfixed * m); /* 1070 */ - void (GLAPIENTRYP MultiTexCoord4x)(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); /* 1071 */ - void (GLAPIENTRYP Normal3x)(GLfixed nx, GLfixed ny, GLfixed nz); /* 1072 */ - void (GLAPIENTRYP Orthof)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); /* 1073 */ - void (GLAPIENTRYP Orthox)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); /* 1074 */ - void (GLAPIENTRYP PointSizex)(GLfixed size); /* 1075 */ - void (GLAPIENTRYP PolygonOffsetx)(GLfixed factor, GLfixed units); /* 1076 */ - void (GLAPIENTRYP Rotatex)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); /* 1077 */ - void (GLAPIENTRYP SampleCoveragex)(GLclampx value, GLboolean invert); /* 1078 */ - void (GLAPIENTRYP Scalex)(GLfixed x, GLfixed y, GLfixed z); /* 1079 */ - void (GLAPIENTRYP TexEnvx)(GLenum target, GLenum pname, GLfixed param); /* 1080 */ - void (GLAPIENTRYP TexEnvxv)(GLenum target, GLenum pname, const GLfixed * params); /* 1081 */ - void (GLAPIENTRYP TexParameterx)(GLenum target, GLenum pname, GLfixed param); /* 1082 */ - void (GLAPIENTRYP Translatex)(GLfixed x, GLfixed y, GLfixed z); /* 1083 */ - void (GLAPIENTRYP ClipPlanef)(GLenum plane, const GLfloat * equation); /* 1084 */ - void (GLAPIENTRYP ClipPlanex)(GLenum plane, const GLfixed * equation); /* 1085 */ - void (GLAPIENTRYP GetClipPlanef)(GLenum plane, GLfloat * equation); /* 1086 */ - void (GLAPIENTRYP GetClipPlanex)(GLenum plane, GLfixed * equation); /* 1087 */ - void (GLAPIENTRYP GetFixedv)(GLenum pname, GLfixed * params); /* 1088 */ - void (GLAPIENTRYP GetLightxv)(GLenum light, GLenum pname, GLfixed * params); /* 1089 */ - void (GLAPIENTRYP GetMaterialxv)(GLenum face, GLenum pname, GLfixed * params); /* 1090 */ - void (GLAPIENTRYP GetTexEnvxv)(GLenum target, GLenum pname, GLfixed * params); /* 1091 */ - void (GLAPIENTRYP GetTexParameterxv)(GLenum target, GLenum pname, GLfixed * params); /* 1092 */ - void (GLAPIENTRYP PointParameterx)(GLenum pname, GLfixed param); /* 1093 */ - void (GLAPIENTRYP PointParameterxv)(GLenum pname, const GLfixed * params); /* 1094 */ - void (GLAPIENTRYP TexParameterxv)(GLenum target, GLenum pname, const GLfixed * params); /* 1095 */ + void (GLAPIENTRYP BufferStorage)(GLenum target, GLsizeiptr size, const GLvoid * data, GLbitfield flags); /* 858 */ + void (GLAPIENTRYP InvalidateBufferData)(GLuint buffer); /* 859 */ + void (GLAPIENTRYP InvalidateBufferSubData)(GLuint buffer, GLintptr offset, GLsizeiptr length); /* 860 */ + void (GLAPIENTRYP InvalidateFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum * attachments); /* 861 */ + void (GLAPIENTRYP InvalidateSubFramebuffer)(GLenum target, GLsizei numAttachments, const GLenum * attachments, GLint x, GLint y, GLsizei width, GLsizei height); /* 862 */ + void (GLAPIENTRYP InvalidateTexImage)(GLuint texture, GLint level); /* 863 */ + void (GLAPIENTRYP InvalidateTexSubImage)(GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth); /* 864 */ + void (GLAPIENTRYP PolygonOffsetEXT)(GLfloat factor, GLfloat bias); /* 865 */ + void (GLAPIENTRYP DrawTexfOES)(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height); /* 866 */ + void (GLAPIENTRYP DrawTexfvOES)(const GLfloat * coords); /* 867 */ + void (GLAPIENTRYP DrawTexiOES)(GLint x, GLint y, GLint z, GLint width, GLint height); /* 868 */ + void (GLAPIENTRYP DrawTexivOES)(const GLint * coords); /* 869 */ + void (GLAPIENTRYP DrawTexsOES)(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height); /* 870 */ + void (GLAPIENTRYP DrawTexsvOES)(const GLshort * coords); /* 871 */ + void (GLAPIENTRYP DrawTexxOES)(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height); /* 872 */ + void (GLAPIENTRYP DrawTexxvOES)(const GLfixed * coords); /* 873 */ + void (GLAPIENTRYP PointSizePointerOES)(GLenum type, GLsizei stride, const GLvoid * pointer); /* 874 */ + GLbitfield (GLAPIENTRYP QueryMatrixxOES)(GLfixed * mantissa, GLint * exponent); /* 875 */ + void (GLAPIENTRYP SampleMaskSGIS)(GLclampf value, GLboolean invert); /* 876 */ + void (GLAPIENTRYP SamplePatternSGIS)(GLenum pattern); /* 877 */ + void (GLAPIENTRYP ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 878 */ + void (GLAPIENTRYP EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean * pointer); /* 879 */ + void (GLAPIENTRYP IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 880 */ + void (GLAPIENTRYP NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 881 */ + void (GLAPIENTRYP TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 882 */ + void (GLAPIENTRYP VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 883 */ + void (GLAPIENTRYP DiscardFramebufferEXT)(GLenum target, GLsizei numAttachments, const GLenum * attachments); /* 884 */ + void (GLAPIENTRYP ActiveShaderProgram)(GLuint pipeline, GLuint program); /* 885 */ + void (GLAPIENTRYP BindProgramPipeline)(GLuint pipeline); /* 886 */ + GLuint (GLAPIENTRYP CreateShaderProgramv)(GLenum type, GLsizei count, const GLchar * const * strings); /* 887 */ + void (GLAPIENTRYP DeleteProgramPipelines)(GLsizei n, const GLuint * pipelines); /* 888 */ + void (GLAPIENTRYP GenProgramPipelines)(GLsizei n, GLuint * pipelines); /* 889 */ + void (GLAPIENTRYP GetProgramPipelineInfoLog)(GLuint pipeline, GLsizei bufSize, GLsizei * length, GLchar * infoLog); /* 890 */ + void (GLAPIENTRYP GetProgramPipelineiv)(GLuint pipeline, GLenum pname, GLint * params); /* 891 */ + GLboolean (GLAPIENTRYP IsProgramPipeline)(GLuint pipeline); /* 892 */ + void (GLAPIENTRYP LockArraysEXT)(GLint first, GLsizei count); /* 893 */ + void (GLAPIENTRYP ProgramUniform1f)(GLuint program, GLint location, GLfloat x); /* 894 */ + void (GLAPIENTRYP ProgramUniform1fv)(GLuint program, GLint location, GLsizei count, const GLfloat * value); /* 895 */ + void (GLAPIENTRYP ProgramUniform1i)(GLuint program, GLint location, GLint x); /* 896 */ + void (GLAPIENTRYP ProgramUniform1iv)(GLuint program, GLint location, GLsizei count, const GLint * value); /* 897 */ + void (GLAPIENTRYP ProgramUniform1ui)(GLuint program, GLint location, GLuint x); /* 898 */ + void (GLAPIENTRYP ProgramUniform1uiv)(GLuint program, GLint location, GLsizei count, const GLuint * value); /* 899 */ + void (GLAPIENTRYP ProgramUniform2f)(GLuint program, GLint location, GLfloat x, GLfloat y); /* 900 */ + void (GLAPIENTRYP ProgramUniform2fv)(GLuint program, GLint location, GLsizei count, const GLfloat * value); /* 901 */ + void (GLAPIENTRYP ProgramUniform2i)(GLuint program, GLint location, GLint x, GLint y); /* 902 */ + void (GLAPIENTRYP ProgramUniform2iv)(GLuint program, GLint location, GLsizei count, const GLint * value); /* 903 */ + void (GLAPIENTRYP ProgramUniform2ui)(GLuint program, GLint location, GLuint x, GLuint y); /* 904 */ + void (GLAPIENTRYP ProgramUniform2uiv)(GLuint program, GLint location, GLsizei count, const GLuint * value); /* 905 */ + void (GLAPIENTRYP ProgramUniform3f)(GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z); /* 906 */ + void (GLAPIENTRYP ProgramUniform3fv)(GLuint program, GLint location, GLsizei count, const GLfloat * value); /* 907 */ + void (GLAPIENTRYP ProgramUniform3i)(GLuint program, GLint location, GLint x, GLint y, GLint z); /* 908 */ + void (GLAPIENTRYP ProgramUniform3iv)(GLuint program, GLint location, GLsizei count, const GLint * value); /* 909 */ + void (GLAPIENTRYP ProgramUniform3ui)(GLuint program, GLint location, GLuint x, GLuint y, GLuint z); /* 910 */ + void (GLAPIENTRYP ProgramUniform3uiv)(GLuint program, GLint location, GLsizei count, const GLuint * value); /* 911 */ + void (GLAPIENTRYP ProgramUniform4f)(GLuint program, GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 912 */ + void (GLAPIENTRYP ProgramUniform4fv)(GLuint program, GLint location, GLsizei count, const GLfloat * value); /* 913 */ + void (GLAPIENTRYP ProgramUniform4i)(GLuint program, GLint location, GLint x, GLint y, GLint z, GLint w); /* 914 */ + void (GLAPIENTRYP ProgramUniform4iv)(GLuint program, GLint location, GLsizei count, const GLint * value); /* 915 */ + void (GLAPIENTRYP ProgramUniform4ui)(GLuint program, GLint location, GLuint x, GLuint y, GLuint z, GLuint w); /* 916 */ + void (GLAPIENTRYP ProgramUniform4uiv)(GLuint program, GLint location, GLsizei count, const GLuint * value); /* 917 */ + void (GLAPIENTRYP ProgramUniformMatrix2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 918 */ + void (GLAPIENTRYP ProgramUniformMatrix2x3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 919 */ + void (GLAPIENTRYP ProgramUniformMatrix2x4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 920 */ + void (GLAPIENTRYP ProgramUniformMatrix3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 921 */ + void (GLAPIENTRYP ProgramUniformMatrix3x2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 922 */ + void (GLAPIENTRYP ProgramUniformMatrix3x4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 923 */ + void (GLAPIENTRYP ProgramUniformMatrix4fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 924 */ + void (GLAPIENTRYP ProgramUniformMatrix4x2fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 925 */ + void (GLAPIENTRYP ProgramUniformMatrix4x3fv)(GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 926 */ + void (GLAPIENTRYP UnlockArraysEXT)(void); /* 927 */ + void (GLAPIENTRYP UseProgramStages)(GLuint pipeline, GLbitfield stages, GLuint program); /* 928 */ + void (GLAPIENTRYP ValidateProgramPipeline)(GLuint pipeline); /* 929 */ + void (GLAPIENTRYP DebugMessageCallback)(GLDEBUGPROC callback, const GLvoid * userParam); /* 930 */ + void (GLAPIENTRYP DebugMessageControl)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint * ids, GLboolean enabled); /* 931 */ + void (GLAPIENTRYP DebugMessageInsert)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar * buf); /* 932 */ + GLuint (GLAPIENTRYP GetDebugMessageLog)(GLuint count, GLsizei bufsize, GLenum * sources, GLenum * types, GLuint * ids, GLenum * severities, GLsizei * lengths, GLchar * messageLog); /* 933 */ + void (GLAPIENTRYP GetObjectLabel)(GLenum identifier, GLuint name, GLsizei bufSize, GLsizei * length, GLchar * label); /* 934 */ + void (GLAPIENTRYP GetObjectPtrLabel)(const GLvoid * ptr, GLsizei bufSize, GLsizei * length, GLchar * label); /* 935 */ + void (GLAPIENTRYP ObjectLabel)(GLenum identifier, GLuint name, GLsizei length, const GLchar * label); /* 936 */ + void (GLAPIENTRYP ObjectPtrLabel)(const GLvoid * ptr, GLsizei length, const GLchar * label); /* 937 */ + void (GLAPIENTRYP PopDebugGroup)(void); /* 938 */ + void (GLAPIENTRYP PushDebugGroup)(GLenum source, GLuint id, GLsizei length, const GLchar * message); /* 939 */ + void (GLAPIENTRYP SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue); /* 940 */ + void (GLAPIENTRYP SecondaryColor3fvEXT)(const GLfloat * v); /* 941 */ + void (GLAPIENTRYP MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount); /* 942 */ + void (GLAPIENTRYP FogCoordfEXT)(GLfloat coord); /* 943 */ + void (GLAPIENTRYP FogCoordfvEXT)(const GLfloat * coord); /* 944 */ + void (GLAPIENTRYP ResizeBuffersMESA)(void); /* 945 */ + void (GLAPIENTRYP WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 946 */ + void (GLAPIENTRYP WindowPos4dvMESA)(const GLdouble * v); /* 947 */ + void (GLAPIENTRYP WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 948 */ + void (GLAPIENTRYP WindowPos4fvMESA)(const GLfloat * v); /* 949 */ + void (GLAPIENTRYP WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w); /* 950 */ + void (GLAPIENTRYP WindowPos4ivMESA)(const GLint * v); /* 951 */ + void (GLAPIENTRYP WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w); /* 952 */ + void (GLAPIENTRYP WindowPos4svMESA)(const GLshort * v); /* 953 */ + void (GLAPIENTRYP MultiModeDrawArraysIBM)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); /* 954 */ + void (GLAPIENTRYP MultiModeDrawElementsIBM)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); /* 955 */ + GLboolean (GLAPIENTRYP AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences); /* 956 */ + void (GLAPIENTRYP ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params); /* 957 */ + void (GLAPIENTRYP GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params); /* 958 */ + void (GLAPIENTRYP GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params); /* 959 */ + void (GLAPIENTRYP GetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program); /* 960 */ + void (GLAPIENTRYP GetProgramivNV)(GLuint id, GLenum pname, GLint * params); /* 961 */ + void (GLAPIENTRYP GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params); /* 962 */ + void (GLAPIENTRYP GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params); /* 963 */ + void (GLAPIENTRYP GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params); /* 964 */ + void (GLAPIENTRYP GetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params); /* 965 */ + void (GLAPIENTRYP LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program); /* 966 */ + void (GLAPIENTRYP ProgramParameters4dvNV)(GLenum target, GLuint index, GLsizei num, const GLdouble * params); /* 967 */ + void (GLAPIENTRYP ProgramParameters4fvNV)(GLenum target, GLuint index, GLsizei num, const GLfloat * params); /* 968 */ + void (GLAPIENTRYP RequestResidentProgramsNV)(GLsizei n, const GLuint * ids); /* 969 */ + void (GLAPIENTRYP TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform); /* 970 */ + void (GLAPIENTRYP VertexAttrib1dNV)(GLuint index, GLdouble x); /* 971 */ + void (GLAPIENTRYP VertexAttrib1dvNV)(GLuint index, const GLdouble * v); /* 972 */ + void (GLAPIENTRYP VertexAttrib1fNV)(GLuint index, GLfloat x); /* 973 */ + void (GLAPIENTRYP VertexAttrib1fvNV)(GLuint index, const GLfloat * v); /* 974 */ + void (GLAPIENTRYP VertexAttrib1sNV)(GLuint index, GLshort x); /* 975 */ + void (GLAPIENTRYP VertexAttrib1svNV)(GLuint index, const GLshort * v); /* 976 */ + void (GLAPIENTRYP VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y); /* 977 */ + void (GLAPIENTRYP VertexAttrib2dvNV)(GLuint index, const GLdouble * v); /* 978 */ + void (GLAPIENTRYP VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y); /* 979 */ + void (GLAPIENTRYP VertexAttrib2fvNV)(GLuint index, const GLfloat * v); /* 980 */ + void (GLAPIENTRYP VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y); /* 981 */ + void (GLAPIENTRYP VertexAttrib2svNV)(GLuint index, const GLshort * v); /* 982 */ + void (GLAPIENTRYP VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 983 */ + void (GLAPIENTRYP VertexAttrib3dvNV)(GLuint index, const GLdouble * v); /* 984 */ + void (GLAPIENTRYP VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 985 */ + void (GLAPIENTRYP VertexAttrib3fvNV)(GLuint index, const GLfloat * v); /* 986 */ + void (GLAPIENTRYP VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z); /* 987 */ + void (GLAPIENTRYP VertexAttrib3svNV)(GLuint index, const GLshort * v); /* 988 */ + void (GLAPIENTRYP VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 989 */ + void (GLAPIENTRYP VertexAttrib4dvNV)(GLuint index, const GLdouble * v); /* 990 */ + void (GLAPIENTRYP VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 991 */ + void (GLAPIENTRYP VertexAttrib4fvNV)(GLuint index, const GLfloat * v); /* 992 */ + void (GLAPIENTRYP VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); /* 993 */ + void (GLAPIENTRYP VertexAttrib4svNV)(GLuint index, const GLshort * v); /* 994 */ + void (GLAPIENTRYP VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); /* 995 */ + void (GLAPIENTRYP VertexAttrib4ubvNV)(GLuint index, const GLubyte * v); /* 996 */ + void (GLAPIENTRYP VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 997 */ + void (GLAPIENTRYP VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 998 */ + void (GLAPIENTRYP VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 999 */ + void (GLAPIENTRYP VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort * v); /* 1000 */ + void (GLAPIENTRYP VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 1001 */ + void (GLAPIENTRYP VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 1002 */ + void (GLAPIENTRYP VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort * v); /* 1003 */ + void (GLAPIENTRYP VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 1004 */ + void (GLAPIENTRYP VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 1005 */ + void (GLAPIENTRYP VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort * v); /* 1006 */ + void (GLAPIENTRYP VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 1007 */ + void (GLAPIENTRYP VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 1008 */ + void (GLAPIENTRYP VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v); /* 1009 */ + void (GLAPIENTRYP VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v); /* 1010 */ + void (GLAPIENTRYP GetTexBumpParameterfvATI)(GLenum pname, GLfloat * param); /* 1011 */ + void (GLAPIENTRYP GetTexBumpParameterivATI)(GLenum pname, GLint * param); /* 1012 */ + void (GLAPIENTRYP TexBumpParameterfvATI)(GLenum pname, const GLfloat * param); /* 1013 */ + void (GLAPIENTRYP TexBumpParameterivATI)(GLenum pname, const GLint * param); /* 1014 */ + void (GLAPIENTRYP AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 1015 */ + void (GLAPIENTRYP AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 1016 */ + 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); /* 1017 */ + void (GLAPIENTRYP BeginFragmentShaderATI)(void); /* 1018 */ + void (GLAPIENTRYP BindFragmentShaderATI)(GLuint id); /* 1019 */ + void (GLAPIENTRYP ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 1020 */ + void (GLAPIENTRYP ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 1021 */ + 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); /* 1022 */ + void (GLAPIENTRYP DeleteFragmentShaderATI)(GLuint id); /* 1023 */ + void (GLAPIENTRYP EndFragmentShaderATI)(void); /* 1024 */ + GLuint (GLAPIENTRYP GenFragmentShadersATI)(GLuint range); /* 1025 */ + void (GLAPIENTRYP PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle); /* 1026 */ + void (GLAPIENTRYP SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle); /* 1027 */ + void (GLAPIENTRYP SetFragmentShaderConstantATI)(GLuint dst, const GLfloat * value); /* 1028 */ + void (GLAPIENTRYP ActiveStencilFaceEXT)(GLenum face); /* 1029 */ + void (GLAPIENTRYP BindVertexArrayAPPLE)(GLuint array); /* 1030 */ + void (GLAPIENTRYP GenVertexArraysAPPLE)(GLsizei n, GLuint * arrays); /* 1031 */ + void (GLAPIENTRYP GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params); /* 1032 */ + void (GLAPIENTRYP GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params); /* 1033 */ + void (GLAPIENTRYP ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 1034 */ + void (GLAPIENTRYP ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v); /* 1035 */ + void (GLAPIENTRYP ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 1036 */ + void (GLAPIENTRYP ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v); /* 1037 */ + void (GLAPIENTRYP PrimitiveRestartNV)(void); /* 1038 */ + void (GLAPIENTRYP GetTexGenxvOES)(GLenum coord, GLenum pname, GLfixed * params); /* 1039 */ + void (GLAPIENTRYP TexGenxOES)(GLenum coord, GLenum pname, GLint param); /* 1040 */ + void (GLAPIENTRYP TexGenxvOES)(GLenum coord, GLenum pname, const GLfixed * params); /* 1041 */ + void (GLAPIENTRYP DepthBoundsEXT)(GLclampd zmin, GLclampd zmax); /* 1042 */ + void (GLAPIENTRYP BindFramebufferEXT)(GLenum target, GLuint framebuffer); /* 1043 */ + void (GLAPIENTRYP BindRenderbufferEXT)(GLenum target, GLuint renderbuffer); /* 1044 */ + void (GLAPIENTRYP BufferParameteriAPPLE)(GLenum target, GLenum pname, GLint param); /* 1045 */ + void (GLAPIENTRYP FlushMappedBufferRangeAPPLE)(GLenum target, GLintptr offset, GLsizeiptr size); /* 1046 */ + void (GLAPIENTRYP VertexAttribI1iEXT)(GLuint index, GLint x); /* 1047 */ + void (GLAPIENTRYP VertexAttribI1uiEXT)(GLuint index, GLuint x); /* 1048 */ + void (GLAPIENTRYP VertexAttribI2iEXT)(GLuint index, GLint x, GLint y); /* 1049 */ + void (GLAPIENTRYP VertexAttribI2ivEXT)(GLuint index, const GLint * v); /* 1050 */ + void (GLAPIENTRYP VertexAttribI2uiEXT)(GLuint index, GLuint x, GLuint y); /* 1051 */ + void (GLAPIENTRYP VertexAttribI2uivEXT)(GLuint index, const GLuint * v); /* 1052 */ + void (GLAPIENTRYP VertexAttribI3iEXT)(GLuint index, GLint x, GLint y, GLint z); /* 1053 */ + void (GLAPIENTRYP VertexAttribI3ivEXT)(GLuint index, const GLint * v); /* 1054 */ + void (GLAPIENTRYP VertexAttribI3uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z); /* 1055 */ + void (GLAPIENTRYP VertexAttribI3uivEXT)(GLuint index, const GLuint * v); /* 1056 */ + void (GLAPIENTRYP VertexAttribI4iEXT)(GLuint index, GLint x, GLint y, GLint z, GLint w); /* 1057 */ + void (GLAPIENTRYP VertexAttribI4ivEXT)(GLuint index, const GLint * v); /* 1058 */ + void (GLAPIENTRYP VertexAttribI4uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w); /* 1059 */ + void (GLAPIENTRYP VertexAttribI4uivEXT)(GLuint index, const GLuint * v); /* 1060 */ + void (GLAPIENTRYP ClearColorIiEXT)(GLint r, GLint g, GLint b, GLint a); /* 1061 */ + void (GLAPIENTRYP ClearColorIuiEXT)(GLuint r, GLuint g, GLuint b, GLuint a); /* 1062 */ + void (GLAPIENTRYP BindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); /* 1063 */ + void (GLAPIENTRYP BeginPerfMonitorAMD)(GLuint monitor); /* 1064 */ + void (GLAPIENTRYP DeletePerfMonitorsAMD)(GLsizei n, GLuint * monitors); /* 1065 */ + void (GLAPIENTRYP EndPerfMonitorAMD)(GLuint monitor); /* 1066 */ + void (GLAPIENTRYP GenPerfMonitorsAMD)(GLsizei n, GLuint * monitors); /* 1067 */ + void (GLAPIENTRYP GetPerfMonitorCounterDataAMD)(GLuint monitor, GLenum pname, GLsizei dataSize, GLuint * data, GLint * bytesWritten); /* 1068 */ + void (GLAPIENTRYP GetPerfMonitorCounterInfoAMD)(GLuint group, GLuint counter, GLenum pname, GLvoid * data); /* 1069 */ + void (GLAPIENTRYP GetPerfMonitorCounterStringAMD)(GLuint group, GLuint counter, GLsizei bufSize, GLsizei * length, GLchar * counterString); /* 1070 */ + void (GLAPIENTRYP GetPerfMonitorCountersAMD)(GLuint group, GLint * numCounters, GLint * maxActiveCounters, GLsizei countersSize, GLuint * counters); /* 1071 */ + void (GLAPIENTRYP GetPerfMonitorGroupStringAMD)(GLuint group, GLsizei bufSize, GLsizei * length, GLchar * groupString); /* 1072 */ + void (GLAPIENTRYP GetPerfMonitorGroupsAMD)(GLint * numGroups, GLsizei groupsSize, GLuint * groups); /* 1073 */ + void (GLAPIENTRYP SelectPerfMonitorCountersAMD)(GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint * counterList); /* 1074 */ + void (GLAPIENTRYP GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint * value); /* 1075 */ + GLenum (GLAPIENTRYP ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 1076 */ + GLenum (GLAPIENTRYP ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 1077 */ + void (GLAPIENTRYP ActiveProgramEXT)(GLuint program); /* 1078 */ + GLuint (GLAPIENTRYP CreateShaderProgramEXT)(GLenum type, const GLchar * string); /* 1079 */ + void (GLAPIENTRYP UseShaderProgramEXT)(GLenum type, GLuint program); /* 1080 */ + void (GLAPIENTRYP TextureBarrierNV)(void); /* 1081 */ + void (GLAPIENTRYP VDPAUFiniNV)(void); /* 1082 */ + void (GLAPIENTRYP VDPAUGetSurfaceivNV)(GLintptr surface, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values); /* 1083 */ + void (GLAPIENTRYP VDPAUInitNV)(const GLvoid * vdpDevice, const GLvoid * getProcAddress); /* 1084 */ + GLboolean (GLAPIENTRYP VDPAUIsSurfaceNV)(GLintptr surface); /* 1085 */ + void (GLAPIENTRYP VDPAUMapSurfacesNV)(GLsizei numSurfaces, const GLintptr * surfaces); /* 1086 */ + GLintptr (GLAPIENTRYP VDPAURegisterOutputSurfaceNV)(const GLvoid * vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint * textureNames); /* 1087 */ + GLintptr (GLAPIENTRYP VDPAURegisterVideoSurfaceNV)(const GLvoid * vdpSurface, GLenum target, GLsizei numTextureNames, const GLuint * textureNames); /* 1088 */ + void (GLAPIENTRYP VDPAUSurfaceAccessNV)(GLintptr surface, GLenum access); /* 1089 */ + void (GLAPIENTRYP VDPAUUnmapSurfacesNV)(GLsizei numSurfaces, const GLintptr * surfaces); /* 1090 */ + void (GLAPIENTRYP VDPAUUnregisterSurfaceNV)(GLintptr surface); /* 1091 */ + void (GLAPIENTRYP StencilFuncSeparateATI)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); /* 1092 */ + void (GLAPIENTRYP ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 1093 */ + void (GLAPIENTRYP ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 1094 */ + void (GLAPIENTRYP EGLImageTargetRenderbufferStorageOES)(GLenum target, GLvoid * writeOffset); /* 1095 */ + void (GLAPIENTRYP EGLImageTargetTexture2DOES)(GLenum target, GLvoid * writeOffset); /* 1096 */ + void (GLAPIENTRYP AlphaFuncx)(GLenum func, GLclampx ref); /* 1097 */ + void (GLAPIENTRYP ClearColorx)(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); /* 1098 */ + void (GLAPIENTRYP ClearDepthx)(GLclampx depth); /* 1099 */ + void (GLAPIENTRYP Color4x)(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); /* 1100 */ + void (GLAPIENTRYP DepthRangex)(GLclampx zNear, GLclampx zFar); /* 1101 */ + void (GLAPIENTRYP Fogx)(GLenum pname, GLfixed param); /* 1102 */ + void (GLAPIENTRYP Fogxv)(GLenum pname, const GLfixed * params); /* 1103 */ + void (GLAPIENTRYP Frustumf)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); /* 1104 */ + void (GLAPIENTRYP Frustumx)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); /* 1105 */ + void (GLAPIENTRYP LightModelx)(GLenum pname, GLfixed param); /* 1106 */ + void (GLAPIENTRYP LightModelxv)(GLenum pname, const GLfixed * params); /* 1107 */ + void (GLAPIENTRYP Lightx)(GLenum light, GLenum pname, GLfixed param); /* 1108 */ + void (GLAPIENTRYP Lightxv)(GLenum light, GLenum pname, const GLfixed * params); /* 1109 */ + void (GLAPIENTRYP LineWidthx)(GLfixed width); /* 1110 */ + void (GLAPIENTRYP LoadMatrixx)(const GLfixed * m); /* 1111 */ + void (GLAPIENTRYP Materialx)(GLenum face, GLenum pname, GLfixed param); /* 1112 */ + void (GLAPIENTRYP Materialxv)(GLenum face, GLenum pname, const GLfixed * params); /* 1113 */ + void (GLAPIENTRYP MultMatrixx)(const GLfixed * m); /* 1114 */ + void (GLAPIENTRYP MultiTexCoord4x)(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); /* 1115 */ + void (GLAPIENTRYP Normal3x)(GLfixed nx, GLfixed ny, GLfixed nz); /* 1116 */ + void (GLAPIENTRYP Orthof)(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); /* 1117 */ + void (GLAPIENTRYP Orthox)(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); /* 1118 */ + void (GLAPIENTRYP PointSizex)(GLfixed size); /* 1119 */ + void (GLAPIENTRYP PolygonOffsetx)(GLfixed factor, GLfixed units); /* 1120 */ + void (GLAPIENTRYP Rotatex)(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); /* 1121 */ + void (GLAPIENTRYP SampleCoveragex)(GLclampx value, GLboolean invert); /* 1122 */ + void (GLAPIENTRYP Scalex)(GLfixed x, GLfixed y, GLfixed z); /* 1123 */ + void (GLAPIENTRYP TexEnvx)(GLenum target, GLenum pname, GLfixed param); /* 1124 */ + void (GLAPIENTRYP TexEnvxv)(GLenum target, GLenum pname, const GLfixed * params); /* 1125 */ + void (GLAPIENTRYP TexParameterx)(GLenum target, GLenum pname, GLfixed param); /* 1126 */ + void (GLAPIENTRYP Translatex)(GLfixed x, GLfixed y, GLfixed z); /* 1127 */ + void (GLAPIENTRYP ClipPlanef)(GLenum plane, const GLfloat * equation); /* 1128 */ + void (GLAPIENTRYP ClipPlanex)(GLenum plane, const GLfixed * equation); /* 1129 */ + void (GLAPIENTRYP GetClipPlanef)(GLenum plane, GLfloat * equation); /* 1130 */ + void (GLAPIENTRYP GetClipPlanex)(GLenum plane, GLfixed * equation); /* 1131 */ + void (GLAPIENTRYP GetFixedv)(GLenum pname, GLfixed * params); /* 1132 */ + void (GLAPIENTRYP GetLightxv)(GLenum light, GLenum pname, GLfixed * params); /* 1133 */ + void (GLAPIENTRYP GetMaterialxv)(GLenum face, GLenum pname, GLfixed * params); /* 1134 */ + void (GLAPIENTRYP GetTexEnvxv)(GLenum target, GLenum pname, GLfixed * params); /* 1135 */ + void (GLAPIENTRYP GetTexParameterxv)(GLenum target, GLenum pname, GLfixed * params); /* 1136 */ + void (GLAPIENTRYP PointParameterx)(GLenum pname, GLfixed param); /* 1137 */ + void (GLAPIENTRYP PointParameterxv)(GLenum pname, const GLfixed * params); /* 1138 */ + void (GLAPIENTRYP TexParameterxv)(GLenum target, GLenum pname, const GLfixed * params); /* 1139 */ #endif /* !defined HAVE_SHARED_GLAPI */ }; diff --git a/xorg-server/glx/glfunctions.h b/xorg-server/glx/glfunctions.h index b15d05eb8..6634f827a 100644 --- a/xorg-server/glx/glfunctions.h +++ b/xorg-server/glx/glfunctions.h @@ -31,7 +31,7 @@ #include "glapitable.h" #include "glapi.h" -#include "glthread.h" +#include "u_thread.h" #include "dispatch.h" #define glNewList(a1, a2) CALL_NewList(GET_DISPATCH(), (a1, a2)) @@ -892,6 +892,7 @@ #define glTexBufferRange(a1, a2, a3, a4, a5) CALL_TexBufferRange(GET_DISPATCH(), (a1, a2, a3, a4, a5)) #define glTexStorage2DMultisample(a1, a2, a3, a4, a5, a6) CALL_TexStorage2DMultisample(GET_DISPATCH(), (a1, a2, a3, a4, a5, a6)) #define glTexStorage3DMultisample(a1, a2, a3, a4, a5, a6, a7) CALL_TexStorage3DMultisample(GET_DISPATCH(), (a1, a2, a3, a4, a5, a6, a7)) +#define glBufferStorage(a1, a2, a3, a4) CALL_BufferStorage(GET_DISPATCH(), (a1, a2, a3, a4)) #define glInvalidateBufferData(a1) CALL_InvalidateBufferData(GET_DISPATCH(), (a1)) #define glInvalidateBufferSubData(a1, a2, a3) CALL_InvalidateBufferSubData(GET_DISPATCH(), (a1, a2, a3)) #define glInvalidateFramebuffer(a1, a2, a3) CALL_InvalidateFramebuffer(GET_DISPATCH(), (a1, a2, a3)) @@ -918,8 +919,51 @@ #define glTexCoordPointerEXT(a1, a2, a3, a4, a5) CALL_TexCoordPointerEXT(GET_DISPATCH(), (a1, a2, a3, a4, a5)) #define glVertexPointerEXT(a1, a2, a3, a4, a5) CALL_VertexPointerEXT(GET_DISPATCH(), (a1, a2, a3, a4, a5)) #define glDiscardFramebufferEXT(a1, a2, a3) CALL_DiscardFramebufferEXT(GET_DISPATCH(), (a1, a2, a3)) +#define glActiveShaderProgram(a1, a2) CALL_ActiveShaderProgram(GET_DISPATCH(), (a1, a2)) +#define glBindProgramPipeline(a1) CALL_BindProgramPipeline(GET_DISPATCH(), (a1)) +#define glCreateShaderProgramv(a1, a2, a3) CALL_CreateShaderProgramv(GET_DISPATCH(), (a1, a2, a3)) +#define glDeleteProgramPipelines(a1, a2) CALL_DeleteProgramPipelines(GET_DISPATCH(), (a1, a2)) +#define glGenProgramPipelines(a1, a2) CALL_GenProgramPipelines(GET_DISPATCH(), (a1, a2)) +#define glGetProgramPipelineInfoLog(a1, a2, a3, a4) CALL_GetProgramPipelineInfoLog(GET_DISPATCH(), (a1, a2, a3, a4)) +#define glGetProgramPipelineiv(a1, a2, a3) CALL_GetProgramPipelineiv(GET_DISPATCH(), (a1, a2, a3)) +#define glIsProgramPipeline(a1) CALL_IsProgramPipeline(GET_DISPATCH(), (a1)) #define glLockArraysEXT(a1, a2) CALL_LockArraysEXT(GET_DISPATCH(), (a1, a2)) +#define glProgramUniform1f(a1, a2, a3) CALL_ProgramUniform1f(GET_DISPATCH(), (a1, a2, a3)) +#define glProgramUniform1fv(a1, a2, a3, a4) CALL_ProgramUniform1fv(GET_DISPATCH(), (a1, a2, a3, a4)) +#define glProgramUniform1i(a1, a2, a3) CALL_ProgramUniform1i(GET_DISPATCH(), (a1, a2, a3)) +#define glProgramUniform1iv(a1, a2, a3, a4) CALL_ProgramUniform1iv(GET_DISPATCH(), (a1, a2, a3, a4)) +#define glProgramUniform1ui(a1, a2, a3) CALL_ProgramUniform1ui(GET_DISPATCH(), (a1, a2, a3)) +#define glProgramUniform1uiv(a1, a2, a3, a4) CALL_ProgramUniform1uiv(GET_DISPATCH(), (a1, a2, a3, a4)) +#define glProgramUniform2f(a1, a2, a3, a4) CALL_ProgramUniform2f(GET_DISPATCH(), (a1, a2, a3, a4)) +#define glProgramUniform2fv(a1, a2, a3, a4) CALL_ProgramUniform2fv(GET_DISPATCH(), (a1, a2, a3, a4)) +#define glProgramUniform2i(a1, a2, a3, a4) CALL_ProgramUniform2i(GET_DISPATCH(), (a1, a2, a3, a4)) +#define glProgramUniform2iv(a1, a2, a3, a4) CALL_ProgramUniform2iv(GET_DISPATCH(), (a1, a2, a3, a4)) +#define glProgramUniform2ui(a1, a2, a3, a4) CALL_ProgramUniform2ui(GET_DISPATCH(), (a1, a2, a3, a4)) +#define glProgramUniform2uiv(a1, a2, a3, a4) CALL_ProgramUniform2uiv(GET_DISPATCH(), (a1, a2, a3, a4)) +#define glProgramUniform3f(a1, a2, a3, a4, a5) CALL_ProgramUniform3f(GET_DISPATCH(), (a1, a2, a3, a4, a5)) +#define glProgramUniform3fv(a1, a2, a3, a4) CALL_ProgramUniform3fv(GET_DISPATCH(), (a1, a2, a3, a4)) +#define glProgramUniform3i(a1, a2, a3, a4, a5) CALL_ProgramUniform3i(GET_DISPATCH(), (a1, a2, a3, a4, a5)) +#define glProgramUniform3iv(a1, a2, a3, a4) CALL_ProgramUniform3iv(GET_DISPATCH(), (a1, a2, a3, a4)) +#define glProgramUniform3ui(a1, a2, a3, a4, a5) CALL_ProgramUniform3ui(GET_DISPATCH(), (a1, a2, a3, a4, a5)) +#define glProgramUniform3uiv(a1, a2, a3, a4) CALL_ProgramUniform3uiv(GET_DISPATCH(), (a1, a2, a3, a4)) +#define glProgramUniform4f(a1, a2, a3, a4, a5, a6) CALL_ProgramUniform4f(GET_DISPATCH(), (a1, a2, a3, a4, a5, a6)) +#define glProgramUniform4fv(a1, a2, a3, a4) CALL_ProgramUniform4fv(GET_DISPATCH(), (a1, a2, a3, a4)) +#define glProgramUniform4i(a1, a2, a3, a4, a5, a6) CALL_ProgramUniform4i(GET_DISPATCH(), (a1, a2, a3, a4, a5, a6)) +#define glProgramUniform4iv(a1, a2, a3, a4) CALL_ProgramUniform4iv(GET_DISPATCH(), (a1, a2, a3, a4)) +#define glProgramUniform4ui(a1, a2, a3, a4, a5, a6) CALL_ProgramUniform4ui(GET_DISPATCH(), (a1, a2, a3, a4, a5, a6)) +#define glProgramUniform4uiv(a1, a2, a3, a4) CALL_ProgramUniform4uiv(GET_DISPATCH(), (a1, a2, a3, a4)) +#define glProgramUniformMatrix2fv(a1, a2, a3, a4, a5) CALL_ProgramUniformMatrix2fv(GET_DISPATCH(), (a1, a2, a3, a4, a5)) +#define glProgramUniformMatrix2x3fv(a1, a2, a3, a4, a5) CALL_ProgramUniformMatrix2x3fv(GET_DISPATCH(), (a1, a2, a3, a4, a5)) +#define glProgramUniformMatrix2x4fv(a1, a2, a3, a4, a5) CALL_ProgramUniformMatrix2x4fv(GET_DISPATCH(), (a1, a2, a3, a4, a5)) +#define glProgramUniformMatrix3fv(a1, a2, a3, a4, a5) CALL_ProgramUniformMatrix3fv(GET_DISPATCH(), (a1, a2, a3, a4, a5)) +#define glProgramUniformMatrix3x2fv(a1, a2, a3, a4, a5) CALL_ProgramUniformMatrix3x2fv(GET_DISPATCH(), (a1, a2, a3, a4, a5)) +#define glProgramUniformMatrix3x4fv(a1, a2, a3, a4, a5) CALL_ProgramUniformMatrix3x4fv(GET_DISPATCH(), (a1, a2, a3, a4, a5)) +#define glProgramUniformMatrix4fv(a1, a2, a3, a4, a5) CALL_ProgramUniformMatrix4fv(GET_DISPATCH(), (a1, a2, a3, a4, a5)) +#define glProgramUniformMatrix4x2fv(a1, a2, a3, a4, a5) CALL_ProgramUniformMatrix4x2fv(GET_DISPATCH(), (a1, a2, a3, a4, a5)) +#define glProgramUniformMatrix4x3fv(a1, a2, a3, a4, a5) CALL_ProgramUniformMatrix4x3fv(GET_DISPATCH(), (a1, a2, a3, a4, a5)) #define glUnlockArraysEXT() CALL_UnlockArraysEXT(GET_DISPATCH(), ()) +#define glUseProgramStages(a1, a2, a3) CALL_UseProgramStages(GET_DISPATCH(), (a1, a2, a3)) +#define glValidateProgramPipeline(a1) CALL_ValidateProgramPipeline(GET_DISPATCH(), (a1)) #define glDebugMessageCallback(a1, a2) CALL_DebugMessageCallback(GET_DISPATCH(), (a1, a2)) #define glDebugMessageControl(a1, a2, a3, a4, a5, a6) CALL_DebugMessageControl(GET_DISPATCH(), (a1, a2, a3, a4, a5, a6)) #define glDebugMessageInsert(a1, a2, a3, a4, a5, a6) CALL_DebugMessageInsert(GET_DISPATCH(), (a1, a2, a3, a4, a5, a6)) diff --git a/xorg-server/glx/glprocs.h b/xorg-server/glx/glprocs.h index 8b3af8752..d96269bab 100644 --- a/xorg-server/glx/glprocs.h +++ b/xorg-server/glx/glprocs.h @@ -910,6 +910,7 @@ static const char gl_string_table[] = "glTexBufferRange\0" "glTexStorage2DMultisample\0" "glTexStorage3DMultisample\0" + "glBufferStorage\0" "glInvalidateBufferData\0" "glInvalidateBufferSubData\0" "glInvalidateFramebuffer\0" @@ -936,8 +937,51 @@ static const char gl_string_table[] = "glTexCoordPointerEXT\0" "glVertexPointerEXT\0" "glDiscardFramebufferEXT\0" + "glActiveShaderProgram\0" + "glBindProgramPipeline\0" + "glCreateShaderProgramv\0" + "glDeleteProgramPipelines\0" + "glGenProgramPipelines\0" + "glGetProgramPipelineInfoLog\0" + "glGetProgramPipelineiv\0" + "glIsProgramPipeline\0" "glLockArraysEXT\0" + "glProgramUniform1f\0" + "glProgramUniform1fv\0" + "glProgramUniform1i\0" + "glProgramUniform1iv\0" + "glProgramUniform1ui\0" + "glProgramUniform1uiv\0" + "glProgramUniform2f\0" + "glProgramUniform2fv\0" + "glProgramUniform2i\0" + "glProgramUniform2iv\0" + "glProgramUniform2ui\0" + "glProgramUniform2uiv\0" + "glProgramUniform3f\0" + "glProgramUniform3fv\0" + "glProgramUniform3i\0" + "glProgramUniform3iv\0" + "glProgramUniform3ui\0" + "glProgramUniform3uiv\0" + "glProgramUniform4f\0" + "glProgramUniform4fv\0" + "glProgramUniform4i\0" + "glProgramUniform4iv\0" + "glProgramUniform4ui\0" + "glProgramUniform4uiv\0" + "glProgramUniformMatrix2fv\0" + "glProgramUniformMatrix2x3fv\0" + "glProgramUniformMatrix2x4fv\0" + "glProgramUniformMatrix3fv\0" + "glProgramUniformMatrix3x2fv\0" + "glProgramUniformMatrix3x4fv\0" + "glProgramUniformMatrix4fv\0" + "glProgramUniformMatrix4x2fv\0" + "glProgramUniformMatrix4x3fv\0" "glUnlockArraysEXT\0" + "glUseProgramStages\0" + "glValidateProgramPipeline\0" "glDebugMessageCallback\0" "glDebugMessageControl\0" "glDebugMessageInsert\0" @@ -1627,7 +1671,6 @@ static const char gl_string_table[] = #define gl_dispatch_stub_732 mgl_dispatch_stub_732 #define gl_dispatch_stub_733 mgl_dispatch_stub_733 #define gl_dispatch_stub_832 mgl_dispatch_stub_832 -#define gl_dispatch_stub_865 mgl_dispatch_stub_865 #define gl_dispatch_stub_866 mgl_dispatch_stub_866 #define gl_dispatch_stub_867 mgl_dispatch_stub_867 #define gl_dispatch_stub_868 mgl_dispatch_stub_868 @@ -1639,64 +1682,65 @@ static const char gl_string_table[] = #define gl_dispatch_stub_874 mgl_dispatch_stub_874 #define gl_dispatch_stub_875 mgl_dispatch_stub_875 #define gl_dispatch_stub_876 mgl_dispatch_stub_876 -#define gl_dispatch_stub_883 mgl_dispatch_stub_883 -#define gl_dispatch_stub_910 mgl_dispatch_stub_910 -#define gl_dispatch_stub_911 mgl_dispatch_stub_911 -#define gl_dispatch_stub_985 mgl_dispatch_stub_985 -#define gl_dispatch_stub_986 mgl_dispatch_stub_986 -#define gl_dispatch_stub_987 mgl_dispatch_stub_987 -#define gl_dispatch_stub_995 mgl_dispatch_stub_995 -#define gl_dispatch_stub_996 mgl_dispatch_stub_996 -#define gl_dispatch_stub_997 mgl_dispatch_stub_997 -#define gl_dispatch_stub_998 mgl_dispatch_stub_998 -#define gl_dispatch_stub_1001 mgl_dispatch_stub_1001 -#define gl_dispatch_stub_1002 mgl_dispatch_stub_1002 -#define gl_dispatch_stub_1048 mgl_dispatch_stub_1048 -#define gl_dispatch_stub_1049 mgl_dispatch_stub_1049 -#define gl_dispatch_stub_1050 mgl_dispatch_stub_1050 -#define gl_dispatch_stub_1053 mgl_dispatch_stub_1053 -#define gl_dispatch_stub_1054 mgl_dispatch_stub_1054 -#define gl_dispatch_stub_1055 mgl_dispatch_stub_1055 -#define gl_dispatch_stub_1056 mgl_dispatch_stub_1056 -#define gl_dispatch_stub_1057 mgl_dispatch_stub_1057 -#define gl_dispatch_stub_1058 mgl_dispatch_stub_1058 -#define gl_dispatch_stub_1059 mgl_dispatch_stub_1059 -#define gl_dispatch_stub_1060 mgl_dispatch_stub_1060 -#define gl_dispatch_stub_1061 mgl_dispatch_stub_1061 -#define gl_dispatch_stub_1062 mgl_dispatch_stub_1062 -#define gl_dispatch_stub_1063 mgl_dispatch_stub_1063 -#define gl_dispatch_stub_1064 mgl_dispatch_stub_1064 -#define gl_dispatch_stub_1065 mgl_dispatch_stub_1065 -#define gl_dispatch_stub_1066 mgl_dispatch_stub_1066 -#define gl_dispatch_stub_1067 mgl_dispatch_stub_1067 -#define gl_dispatch_stub_1068 mgl_dispatch_stub_1068 -#define gl_dispatch_stub_1069 mgl_dispatch_stub_1069 -#define gl_dispatch_stub_1070 mgl_dispatch_stub_1070 -#define gl_dispatch_stub_1071 mgl_dispatch_stub_1071 -#define gl_dispatch_stub_1072 mgl_dispatch_stub_1072 -#define gl_dispatch_stub_1073 mgl_dispatch_stub_1073 -#define gl_dispatch_stub_1074 mgl_dispatch_stub_1074 -#define gl_dispatch_stub_1075 mgl_dispatch_stub_1075 -#define gl_dispatch_stub_1076 mgl_dispatch_stub_1076 -#define gl_dispatch_stub_1077 mgl_dispatch_stub_1077 -#define gl_dispatch_stub_1078 mgl_dispatch_stub_1078 -#define gl_dispatch_stub_1079 mgl_dispatch_stub_1079 -#define gl_dispatch_stub_1080 mgl_dispatch_stub_1080 -#define gl_dispatch_stub_1081 mgl_dispatch_stub_1081 -#define gl_dispatch_stub_1082 mgl_dispatch_stub_1082 -#define gl_dispatch_stub_1083 mgl_dispatch_stub_1083 -#define gl_dispatch_stub_1084 mgl_dispatch_stub_1084 -#define gl_dispatch_stub_1085 mgl_dispatch_stub_1085 -#define gl_dispatch_stub_1086 mgl_dispatch_stub_1086 -#define gl_dispatch_stub_1087 mgl_dispatch_stub_1087 -#define gl_dispatch_stub_1088 mgl_dispatch_stub_1088 -#define gl_dispatch_stub_1089 mgl_dispatch_stub_1089 -#define gl_dispatch_stub_1090 mgl_dispatch_stub_1090 -#define gl_dispatch_stub_1091 mgl_dispatch_stub_1091 +#define gl_dispatch_stub_877 mgl_dispatch_stub_877 +#define gl_dispatch_stub_884 mgl_dispatch_stub_884 +#define gl_dispatch_stub_954 mgl_dispatch_stub_954 +#define gl_dispatch_stub_955 mgl_dispatch_stub_955 +#define gl_dispatch_stub_1029 mgl_dispatch_stub_1029 +#define gl_dispatch_stub_1030 mgl_dispatch_stub_1030 +#define gl_dispatch_stub_1031 mgl_dispatch_stub_1031 +#define gl_dispatch_stub_1039 mgl_dispatch_stub_1039 +#define gl_dispatch_stub_1040 mgl_dispatch_stub_1040 +#define gl_dispatch_stub_1041 mgl_dispatch_stub_1041 +#define gl_dispatch_stub_1042 mgl_dispatch_stub_1042 +#define gl_dispatch_stub_1045 mgl_dispatch_stub_1045 +#define gl_dispatch_stub_1046 mgl_dispatch_stub_1046 #define gl_dispatch_stub_1092 mgl_dispatch_stub_1092 #define gl_dispatch_stub_1093 mgl_dispatch_stub_1093 #define gl_dispatch_stub_1094 mgl_dispatch_stub_1094 -#define gl_dispatch_stub_1095 mgl_dispatch_stub_1095 +#define gl_dispatch_stub_1097 mgl_dispatch_stub_1097 +#define gl_dispatch_stub_1098 mgl_dispatch_stub_1098 +#define gl_dispatch_stub_1099 mgl_dispatch_stub_1099 +#define gl_dispatch_stub_1100 mgl_dispatch_stub_1100 +#define gl_dispatch_stub_1101 mgl_dispatch_stub_1101 +#define gl_dispatch_stub_1102 mgl_dispatch_stub_1102 +#define gl_dispatch_stub_1103 mgl_dispatch_stub_1103 +#define gl_dispatch_stub_1104 mgl_dispatch_stub_1104 +#define gl_dispatch_stub_1105 mgl_dispatch_stub_1105 +#define gl_dispatch_stub_1106 mgl_dispatch_stub_1106 +#define gl_dispatch_stub_1107 mgl_dispatch_stub_1107 +#define gl_dispatch_stub_1108 mgl_dispatch_stub_1108 +#define gl_dispatch_stub_1109 mgl_dispatch_stub_1109 +#define gl_dispatch_stub_1110 mgl_dispatch_stub_1110 +#define gl_dispatch_stub_1111 mgl_dispatch_stub_1111 +#define gl_dispatch_stub_1112 mgl_dispatch_stub_1112 +#define gl_dispatch_stub_1113 mgl_dispatch_stub_1113 +#define gl_dispatch_stub_1114 mgl_dispatch_stub_1114 +#define gl_dispatch_stub_1115 mgl_dispatch_stub_1115 +#define gl_dispatch_stub_1116 mgl_dispatch_stub_1116 +#define gl_dispatch_stub_1117 mgl_dispatch_stub_1117 +#define gl_dispatch_stub_1118 mgl_dispatch_stub_1118 +#define gl_dispatch_stub_1119 mgl_dispatch_stub_1119 +#define gl_dispatch_stub_1120 mgl_dispatch_stub_1120 +#define gl_dispatch_stub_1121 mgl_dispatch_stub_1121 +#define gl_dispatch_stub_1122 mgl_dispatch_stub_1122 +#define gl_dispatch_stub_1123 mgl_dispatch_stub_1123 +#define gl_dispatch_stub_1124 mgl_dispatch_stub_1124 +#define gl_dispatch_stub_1125 mgl_dispatch_stub_1125 +#define gl_dispatch_stub_1126 mgl_dispatch_stub_1126 +#define gl_dispatch_stub_1127 mgl_dispatch_stub_1127 +#define gl_dispatch_stub_1128 mgl_dispatch_stub_1128 +#define gl_dispatch_stub_1129 mgl_dispatch_stub_1129 +#define gl_dispatch_stub_1130 mgl_dispatch_stub_1130 +#define gl_dispatch_stub_1131 mgl_dispatch_stub_1131 +#define gl_dispatch_stub_1132 mgl_dispatch_stub_1132 +#define gl_dispatch_stub_1133 mgl_dispatch_stub_1133 +#define gl_dispatch_stub_1134 mgl_dispatch_stub_1134 +#define gl_dispatch_stub_1135 mgl_dispatch_stub_1135 +#define gl_dispatch_stub_1136 mgl_dispatch_stub_1136 +#define gl_dispatch_stub_1137 mgl_dispatch_stub_1137 +#define gl_dispatch_stub_1138 mgl_dispatch_stub_1138 +#define gl_dispatch_stub_1139 mgl_dispatch_stub_1139 #endif /* USE_MGL_NAMESPACE */ @@ -1718,76 +1762,76 @@ void GLAPIENTRY gl_dispatch_stub_731(GLuint id, GLenum pname, GLint64 * params); void GLAPIENTRY gl_dispatch_stub_732(GLuint id, GLenum pname, GLuint64 * params); void GLAPIENTRY gl_dispatch_stub_733(GLuint id, GLenum target); void GLAPIENTRY gl_dispatch_stub_832(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint * params); -void GLAPIENTRY gl_dispatch_stub_865(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height); -void GLAPIENTRY gl_dispatch_stub_866(const GLfloat * coords); -void GLAPIENTRY gl_dispatch_stub_867(GLint x, GLint y, GLint z, GLint width, GLint height); -void GLAPIENTRY gl_dispatch_stub_868(const GLint * coords); -void GLAPIENTRY gl_dispatch_stub_869(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height); -void GLAPIENTRY gl_dispatch_stub_870(const GLshort * coords); -void GLAPIENTRY gl_dispatch_stub_871(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height); -void GLAPIENTRY gl_dispatch_stub_872(const GLfixed * coords); -void GLAPIENTRY gl_dispatch_stub_873(GLenum type, GLsizei stride, const GLvoid * pointer); -GLbitfield GLAPIENTRY gl_dispatch_stub_874(GLfixed * mantissa, GLint * exponent); -void GLAPIENTRY gl_dispatch_stub_875(GLclampf value, GLboolean invert); -void GLAPIENTRY gl_dispatch_stub_876(GLenum pattern); -void GLAPIENTRY gl_dispatch_stub_883(GLenum target, GLsizei numAttachments, const GLenum * attachments); -void GLAPIENTRY gl_dispatch_stub_910(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); -void GLAPIENTRY gl_dispatch_stub_911(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); -void GLAPIENTRY gl_dispatch_stub_985(GLenum face); -void GLAPIENTRY gl_dispatch_stub_986(GLuint array); -void GLAPIENTRY gl_dispatch_stub_987(GLsizei n, GLuint * arrays); -void GLAPIENTRY gl_dispatch_stub_995(GLenum coord, GLenum pname, GLfixed * params); -void GLAPIENTRY gl_dispatch_stub_996(GLenum coord, GLenum pname, GLint param); -void GLAPIENTRY gl_dispatch_stub_997(GLenum coord, GLenum pname, const GLfixed * params); -void GLAPIENTRY gl_dispatch_stub_998(GLclampd zmin, GLclampd zmax); -void GLAPIENTRY gl_dispatch_stub_1001(GLenum target, GLenum pname, GLint param); -void GLAPIENTRY gl_dispatch_stub_1002(GLenum target, GLintptr offset, GLsizeiptr size); -void GLAPIENTRY gl_dispatch_stub_1048(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); -void GLAPIENTRY gl_dispatch_stub_1049(GLenum target, GLuint index, GLsizei count, const GLfloat * params); -void GLAPIENTRY gl_dispatch_stub_1050(GLenum target, GLuint index, GLsizei count, const GLfloat * params); -void GLAPIENTRY gl_dispatch_stub_1053(GLenum func, GLclampx ref); -void GLAPIENTRY gl_dispatch_stub_1054(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); -void GLAPIENTRY gl_dispatch_stub_1055(GLclampx depth); -void GLAPIENTRY gl_dispatch_stub_1056(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); -void GLAPIENTRY gl_dispatch_stub_1057(GLclampx zNear, GLclampx zFar); -void GLAPIENTRY gl_dispatch_stub_1058(GLenum pname, GLfixed param); -void GLAPIENTRY gl_dispatch_stub_1059(GLenum pname, const GLfixed * params); -void GLAPIENTRY gl_dispatch_stub_1060(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); -void GLAPIENTRY gl_dispatch_stub_1061(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); -void GLAPIENTRY gl_dispatch_stub_1062(GLenum pname, GLfixed param); -void GLAPIENTRY gl_dispatch_stub_1063(GLenum pname, const GLfixed * params); -void GLAPIENTRY gl_dispatch_stub_1064(GLenum light, GLenum pname, GLfixed param); -void GLAPIENTRY gl_dispatch_stub_1065(GLenum light, GLenum pname, const GLfixed * params); -void GLAPIENTRY gl_dispatch_stub_1066(GLfixed width); -void GLAPIENTRY gl_dispatch_stub_1067(const GLfixed * m); -void GLAPIENTRY gl_dispatch_stub_1068(GLenum face, GLenum pname, GLfixed param); -void GLAPIENTRY gl_dispatch_stub_1069(GLenum face, GLenum pname, const GLfixed * params); -void GLAPIENTRY gl_dispatch_stub_1070(const GLfixed * m); -void GLAPIENTRY gl_dispatch_stub_1071(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); -void GLAPIENTRY gl_dispatch_stub_1072(GLfixed nx, GLfixed ny, GLfixed nz); -void GLAPIENTRY gl_dispatch_stub_1073(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); -void GLAPIENTRY gl_dispatch_stub_1074(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); -void GLAPIENTRY gl_dispatch_stub_1075(GLfixed size); -void GLAPIENTRY gl_dispatch_stub_1076(GLfixed factor, GLfixed units); -void GLAPIENTRY gl_dispatch_stub_1077(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); -void GLAPIENTRY gl_dispatch_stub_1078(GLclampx value, GLboolean invert); -void GLAPIENTRY gl_dispatch_stub_1079(GLfixed x, GLfixed y, GLfixed z); -void GLAPIENTRY gl_dispatch_stub_1080(GLenum target, GLenum pname, GLfixed param); -void GLAPIENTRY gl_dispatch_stub_1081(GLenum target, GLenum pname, const GLfixed * params); -void GLAPIENTRY gl_dispatch_stub_1082(GLenum target, GLenum pname, GLfixed param); -void GLAPIENTRY gl_dispatch_stub_1083(GLfixed x, GLfixed y, GLfixed z); -void GLAPIENTRY gl_dispatch_stub_1084(GLenum plane, const GLfloat * equation); -void GLAPIENTRY gl_dispatch_stub_1085(GLenum plane, const GLfixed * equation); -void GLAPIENTRY gl_dispatch_stub_1086(GLenum plane, GLfloat * equation); -void GLAPIENTRY gl_dispatch_stub_1087(GLenum plane, GLfixed * equation); -void GLAPIENTRY gl_dispatch_stub_1088(GLenum pname, GLfixed * params); -void GLAPIENTRY gl_dispatch_stub_1089(GLenum light, GLenum pname, GLfixed * params); -void GLAPIENTRY gl_dispatch_stub_1090(GLenum face, GLenum pname, GLfixed * params); -void GLAPIENTRY gl_dispatch_stub_1091(GLenum target, GLenum pname, GLfixed * params); -void GLAPIENTRY gl_dispatch_stub_1092(GLenum target, GLenum pname, GLfixed * params); -void GLAPIENTRY gl_dispatch_stub_1093(GLenum pname, GLfixed param); -void GLAPIENTRY gl_dispatch_stub_1094(GLenum pname, const GLfixed * params); -void GLAPIENTRY gl_dispatch_stub_1095(GLenum target, GLenum pname, const GLfixed * params); +void GLAPIENTRY gl_dispatch_stub_866(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height); +void GLAPIENTRY gl_dispatch_stub_867(const GLfloat * coords); +void GLAPIENTRY gl_dispatch_stub_868(GLint x, GLint y, GLint z, GLint width, GLint height); +void GLAPIENTRY gl_dispatch_stub_869(const GLint * coords); +void GLAPIENTRY gl_dispatch_stub_870(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height); +void GLAPIENTRY gl_dispatch_stub_871(const GLshort * coords); +void GLAPIENTRY gl_dispatch_stub_872(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height); +void GLAPIENTRY gl_dispatch_stub_873(const GLfixed * coords); +void GLAPIENTRY gl_dispatch_stub_874(GLenum type, GLsizei stride, const GLvoid * pointer); +GLbitfield GLAPIENTRY gl_dispatch_stub_875(GLfixed * mantissa, GLint * exponent); +void GLAPIENTRY gl_dispatch_stub_876(GLclampf value, GLboolean invert); +void GLAPIENTRY gl_dispatch_stub_877(GLenum pattern); +void GLAPIENTRY gl_dispatch_stub_884(GLenum target, GLsizei numAttachments, const GLenum * attachments); +void GLAPIENTRY gl_dispatch_stub_954(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); +void GLAPIENTRY gl_dispatch_stub_955(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); +void GLAPIENTRY gl_dispatch_stub_1029(GLenum face); +void GLAPIENTRY gl_dispatch_stub_1030(GLuint array); +void GLAPIENTRY gl_dispatch_stub_1031(GLsizei n, GLuint * arrays); +void GLAPIENTRY gl_dispatch_stub_1039(GLenum coord, GLenum pname, GLfixed * params); +void GLAPIENTRY gl_dispatch_stub_1040(GLenum coord, GLenum pname, GLint param); +void GLAPIENTRY gl_dispatch_stub_1041(GLenum coord, GLenum pname, const GLfixed * params); +void GLAPIENTRY gl_dispatch_stub_1042(GLclampd zmin, GLclampd zmax); +void GLAPIENTRY gl_dispatch_stub_1045(GLenum target, GLenum pname, GLint param); +void GLAPIENTRY gl_dispatch_stub_1046(GLenum target, GLintptr offset, GLsizeiptr size); +void GLAPIENTRY gl_dispatch_stub_1092(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); +void GLAPIENTRY gl_dispatch_stub_1093(GLenum target, GLuint index, GLsizei count, const GLfloat * params); +void GLAPIENTRY gl_dispatch_stub_1094(GLenum target, GLuint index, GLsizei count, const GLfloat * params); +void GLAPIENTRY gl_dispatch_stub_1097(GLenum func, GLclampx ref); +void GLAPIENTRY gl_dispatch_stub_1098(GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha); +void GLAPIENTRY gl_dispatch_stub_1099(GLclampx depth); +void GLAPIENTRY gl_dispatch_stub_1100(GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha); +void GLAPIENTRY gl_dispatch_stub_1101(GLclampx zNear, GLclampx zFar); +void GLAPIENTRY gl_dispatch_stub_1102(GLenum pname, GLfixed param); +void GLAPIENTRY gl_dispatch_stub_1103(GLenum pname, const GLfixed * params); +void GLAPIENTRY gl_dispatch_stub_1104(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +void GLAPIENTRY gl_dispatch_stub_1105(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +void GLAPIENTRY gl_dispatch_stub_1106(GLenum pname, GLfixed param); +void GLAPIENTRY gl_dispatch_stub_1107(GLenum pname, const GLfixed * params); +void GLAPIENTRY gl_dispatch_stub_1108(GLenum light, GLenum pname, GLfixed param); +void GLAPIENTRY gl_dispatch_stub_1109(GLenum light, GLenum pname, const GLfixed * params); +void GLAPIENTRY gl_dispatch_stub_1110(GLfixed width); +void GLAPIENTRY gl_dispatch_stub_1111(const GLfixed * m); +void GLAPIENTRY gl_dispatch_stub_1112(GLenum face, GLenum pname, GLfixed param); +void GLAPIENTRY gl_dispatch_stub_1113(GLenum face, GLenum pname, const GLfixed * params); +void GLAPIENTRY gl_dispatch_stub_1114(const GLfixed * m); +void GLAPIENTRY gl_dispatch_stub_1115(GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q); +void GLAPIENTRY gl_dispatch_stub_1116(GLfixed nx, GLfixed ny, GLfixed nz); +void GLAPIENTRY gl_dispatch_stub_1117(GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar); +void GLAPIENTRY gl_dispatch_stub_1118(GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar); +void GLAPIENTRY gl_dispatch_stub_1119(GLfixed size); +void GLAPIENTRY gl_dispatch_stub_1120(GLfixed factor, GLfixed units); +void GLAPIENTRY gl_dispatch_stub_1121(GLfixed angle, GLfixed x, GLfixed y, GLfixed z); +void GLAPIENTRY gl_dispatch_stub_1122(GLclampx value, GLboolean invert); +void GLAPIENTRY gl_dispatch_stub_1123(GLfixed x, GLfixed y, GLfixed z); +void GLAPIENTRY gl_dispatch_stub_1124(GLenum target, GLenum pname, GLfixed param); +void GLAPIENTRY gl_dispatch_stub_1125(GLenum target, GLenum pname, const GLfixed * params); +void GLAPIENTRY gl_dispatch_stub_1126(GLenum target, GLenum pname, GLfixed param); +void GLAPIENTRY gl_dispatch_stub_1127(GLfixed x, GLfixed y, GLfixed z); +void GLAPIENTRY gl_dispatch_stub_1128(GLenum plane, const GLfloat * equation); +void GLAPIENTRY gl_dispatch_stub_1129(GLenum plane, const GLfixed * equation); +void GLAPIENTRY gl_dispatch_stub_1130(GLenum plane, GLfloat * equation); +void GLAPIENTRY gl_dispatch_stub_1131(GLenum plane, GLfixed * equation); +void GLAPIENTRY gl_dispatch_stub_1132(GLenum pname, GLfixed * params); +void GLAPIENTRY gl_dispatch_stub_1133(GLenum light, GLenum pname, GLfixed * params); +void GLAPIENTRY gl_dispatch_stub_1134(GLenum face, GLenum pname, GLfixed * params); +void GLAPIENTRY gl_dispatch_stub_1135(GLenum target, GLenum pname, GLfixed * params); +void GLAPIENTRY gl_dispatch_stub_1136(GLenum target, GLenum pname, GLfixed * params); +void GLAPIENTRY gl_dispatch_stub_1137(GLenum pname, GLfixed param); +void GLAPIENTRY gl_dispatch_stub_1138(GLenum pname, const GLfixed * params); +void GLAPIENTRY gl_dispatch_stub_1139(GLenum target, GLenum pname, const GLfixed * params); #endif /* defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING) */ static const glprocs_table_t static_functions[] = { @@ -2649,702 +2693,746 @@ static const glprocs_table_t static_functions[] = { NAME_FUNC_OFFSET(14379, glTexBufferRange, glTexBufferRange, NULL, 855), NAME_FUNC_OFFSET(14396, glTexStorage2DMultisample, glTexStorage2DMultisample, NULL, 856), NAME_FUNC_OFFSET(14422, glTexStorage3DMultisample, glTexStorage3DMultisample, NULL, 857), - NAME_FUNC_OFFSET(14448, glInvalidateBufferData, glInvalidateBufferData, NULL, 858), - NAME_FUNC_OFFSET(14471, glInvalidateBufferSubData, glInvalidateBufferSubData, NULL, 859), - NAME_FUNC_OFFSET(14497, glInvalidateFramebuffer, glInvalidateFramebuffer, NULL, 860), - NAME_FUNC_OFFSET(14521, glInvalidateSubFramebuffer, glInvalidateSubFramebuffer, NULL, 861), - NAME_FUNC_OFFSET(14548, glInvalidateTexImage, glInvalidateTexImage, NULL, 862), - NAME_FUNC_OFFSET(14569, glInvalidateTexSubImage, glInvalidateTexSubImage, NULL, 863), - NAME_FUNC_OFFSET(14593, glPolygonOffsetEXT, glPolygonOffsetEXT, NULL, 864), - NAME_FUNC_OFFSET(14612, gl_dispatch_stub_865, gl_dispatch_stub_865, NULL, 865), - NAME_FUNC_OFFSET(14626, gl_dispatch_stub_866, gl_dispatch_stub_866, NULL, 866), - NAME_FUNC_OFFSET(14641, gl_dispatch_stub_867, gl_dispatch_stub_867, NULL, 867), - NAME_FUNC_OFFSET(14655, gl_dispatch_stub_868, gl_dispatch_stub_868, NULL, 868), - NAME_FUNC_OFFSET(14670, gl_dispatch_stub_869, gl_dispatch_stub_869, NULL, 869), - NAME_FUNC_OFFSET(14684, gl_dispatch_stub_870, gl_dispatch_stub_870, NULL, 870), - NAME_FUNC_OFFSET(14699, gl_dispatch_stub_871, gl_dispatch_stub_871, NULL, 871), - NAME_FUNC_OFFSET(14713, gl_dispatch_stub_872, gl_dispatch_stub_872, NULL, 872), - NAME_FUNC_OFFSET(14728, gl_dispatch_stub_873, gl_dispatch_stub_873, NULL, 873), - NAME_FUNC_OFFSET(14750, gl_dispatch_stub_874, gl_dispatch_stub_874, NULL, 874), - NAME_FUNC_OFFSET(14768, gl_dispatch_stub_875, gl_dispatch_stub_875, NULL, 875), - NAME_FUNC_OFFSET(14785, gl_dispatch_stub_876, gl_dispatch_stub_876, NULL, 876), - NAME_FUNC_OFFSET(14805, glColorPointerEXT, glColorPointerEXT, NULL, 877), - NAME_FUNC_OFFSET(14823, glEdgeFlagPointerEXT, glEdgeFlagPointerEXT, NULL, 878), - NAME_FUNC_OFFSET(14844, glIndexPointerEXT, glIndexPointerEXT, NULL, 879), - NAME_FUNC_OFFSET(14862, glNormalPointerEXT, glNormalPointerEXT, NULL, 880), - NAME_FUNC_OFFSET(14881, glTexCoordPointerEXT, glTexCoordPointerEXT, NULL, 881), - NAME_FUNC_OFFSET(14902, glVertexPointerEXT, glVertexPointerEXT, NULL, 882), - NAME_FUNC_OFFSET(14921, gl_dispatch_stub_883, gl_dispatch_stub_883, NULL, 883), - NAME_FUNC_OFFSET(14945, glLockArraysEXT, glLockArraysEXT, NULL, 884), - NAME_FUNC_OFFSET(14961, glUnlockArraysEXT, glUnlockArraysEXT, NULL, 885), - NAME_FUNC_OFFSET(14979, glDebugMessageCallback, glDebugMessageCallback, NULL, 886), - NAME_FUNC_OFFSET(15002, glDebugMessageControl, glDebugMessageControl, NULL, 887), - NAME_FUNC_OFFSET(15024, glDebugMessageInsert, glDebugMessageInsert, NULL, 888), - NAME_FUNC_OFFSET(15045, glGetDebugMessageLog, glGetDebugMessageLog, NULL, 889), - NAME_FUNC_OFFSET(15066, glGetObjectLabel, glGetObjectLabel, NULL, 890), - NAME_FUNC_OFFSET(15083, glGetObjectPtrLabel, glGetObjectPtrLabel, NULL, 891), - NAME_FUNC_OFFSET(15103, glObjectLabel, glObjectLabel, NULL, 892), - NAME_FUNC_OFFSET(15117, glObjectPtrLabel, glObjectPtrLabel, NULL, 893), - NAME_FUNC_OFFSET(15134, glPopDebugGroup, glPopDebugGroup, NULL, 894), - NAME_FUNC_OFFSET(15150, glPushDebugGroup, glPushDebugGroup, NULL, 895), - NAME_FUNC_OFFSET(15167, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, 896), - NAME_FUNC_OFFSET(15189, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, 897), - NAME_FUNC_OFFSET(15212, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, 898), - NAME_FUNC_OFFSET(15235, glFogCoordfEXT, glFogCoordfEXT, NULL, 899), - NAME_FUNC_OFFSET(15250, glFogCoordfvEXT, glFogCoordfvEXT, NULL, 900), - NAME_FUNC_OFFSET(15266, glResizeBuffersMESA, glResizeBuffersMESA, NULL, 901), - NAME_FUNC_OFFSET(15286, glWindowPos4dMESA, glWindowPos4dMESA, NULL, 902), - NAME_FUNC_OFFSET(15304, glWindowPos4dvMESA, glWindowPos4dvMESA, NULL, 903), - NAME_FUNC_OFFSET(15323, glWindowPos4fMESA, glWindowPos4fMESA, NULL, 904), - NAME_FUNC_OFFSET(15341, glWindowPos4fvMESA, glWindowPos4fvMESA, NULL, 905), - NAME_FUNC_OFFSET(15360, glWindowPos4iMESA, glWindowPos4iMESA, NULL, 906), - NAME_FUNC_OFFSET(15378, glWindowPos4ivMESA, glWindowPos4ivMESA, NULL, 907), - NAME_FUNC_OFFSET(15397, glWindowPos4sMESA, glWindowPos4sMESA, NULL, 908), - NAME_FUNC_OFFSET(15415, glWindowPos4svMESA, glWindowPos4svMESA, NULL, 909), - NAME_FUNC_OFFSET(15434, gl_dispatch_stub_910, gl_dispatch_stub_910, NULL, 910), - NAME_FUNC_OFFSET(15459, gl_dispatch_stub_911, gl_dispatch_stub_911, NULL, 911), - NAME_FUNC_OFFSET(15486, glAreProgramsResidentNV, glAreProgramsResidentNV, NULL, 912), - NAME_FUNC_OFFSET(15510, glExecuteProgramNV, glExecuteProgramNV, NULL, 913), - NAME_FUNC_OFFSET(15529, glGetProgramParameterdvNV, glGetProgramParameterdvNV, NULL, 914), - NAME_FUNC_OFFSET(15555, glGetProgramParameterfvNV, glGetProgramParameterfvNV, NULL, 915), - NAME_FUNC_OFFSET(15581, glGetProgramStringNV, glGetProgramStringNV, NULL, 916), - NAME_FUNC_OFFSET(15602, glGetProgramivNV, glGetProgramivNV, NULL, 917), - NAME_FUNC_OFFSET(15619, glGetTrackMatrixivNV, glGetTrackMatrixivNV, NULL, 918), - NAME_FUNC_OFFSET(15640, glGetVertexAttribdvNV, glGetVertexAttribdvNV, NULL, 919), - NAME_FUNC_OFFSET(15662, glGetVertexAttribfvNV, glGetVertexAttribfvNV, NULL, 920), - NAME_FUNC_OFFSET(15684, glGetVertexAttribivNV, glGetVertexAttribivNV, NULL, 921), - NAME_FUNC_OFFSET(15706, glLoadProgramNV, glLoadProgramNV, NULL, 922), - NAME_FUNC_OFFSET(15722, glProgramParameters4dvNV, glProgramParameters4dvNV, NULL, 923), - NAME_FUNC_OFFSET(15747, glProgramParameters4fvNV, glProgramParameters4fvNV, NULL, 924), - NAME_FUNC_OFFSET(15772, glRequestResidentProgramsNV, glRequestResidentProgramsNV, NULL, 925), - NAME_FUNC_OFFSET(15800, glTrackMatrixNV, glTrackMatrixNV, NULL, 926), - NAME_FUNC_OFFSET(15816, glVertexAttrib1dNV, glVertexAttrib1dNV, NULL, 927), - NAME_FUNC_OFFSET(15835, glVertexAttrib1dvNV, glVertexAttrib1dvNV, NULL, 928), - NAME_FUNC_OFFSET(15855, glVertexAttrib1fNV, glVertexAttrib1fNV, NULL, 929), - NAME_FUNC_OFFSET(15874, glVertexAttrib1fvNV, glVertexAttrib1fvNV, NULL, 930), - NAME_FUNC_OFFSET(15894, glVertexAttrib1sNV, glVertexAttrib1sNV, NULL, 931), - NAME_FUNC_OFFSET(15913, glVertexAttrib1svNV, glVertexAttrib1svNV, NULL, 932), - NAME_FUNC_OFFSET(15933, glVertexAttrib2dNV, glVertexAttrib2dNV, NULL, 933), - NAME_FUNC_OFFSET(15952, glVertexAttrib2dvNV, glVertexAttrib2dvNV, NULL, 934), - NAME_FUNC_OFFSET(15972, glVertexAttrib2fNV, glVertexAttrib2fNV, NULL, 935), - NAME_FUNC_OFFSET(15991, glVertexAttrib2fvNV, glVertexAttrib2fvNV, NULL, 936), - NAME_FUNC_OFFSET(16011, glVertexAttrib2sNV, glVertexAttrib2sNV, NULL, 937), - NAME_FUNC_OFFSET(16030, glVertexAttrib2svNV, glVertexAttrib2svNV, NULL, 938), - NAME_FUNC_OFFSET(16050, glVertexAttrib3dNV, glVertexAttrib3dNV, NULL, 939), - NAME_FUNC_OFFSET(16069, glVertexAttrib3dvNV, glVertexAttrib3dvNV, NULL, 940), - NAME_FUNC_OFFSET(16089, glVertexAttrib3fNV, glVertexAttrib3fNV, NULL, 941), - NAME_FUNC_OFFSET(16108, glVertexAttrib3fvNV, glVertexAttrib3fvNV, NULL, 942), - NAME_FUNC_OFFSET(16128, glVertexAttrib3sNV, glVertexAttrib3sNV, NULL, 943), - NAME_FUNC_OFFSET(16147, glVertexAttrib3svNV, glVertexAttrib3svNV, NULL, 944), - NAME_FUNC_OFFSET(16167, glVertexAttrib4dNV, glVertexAttrib4dNV, NULL, 945), - NAME_FUNC_OFFSET(16186, glVertexAttrib4dvNV, glVertexAttrib4dvNV, NULL, 946), - NAME_FUNC_OFFSET(16206, glVertexAttrib4fNV, glVertexAttrib4fNV, NULL, 947), - NAME_FUNC_OFFSET(16225, glVertexAttrib4fvNV, glVertexAttrib4fvNV, NULL, 948), - NAME_FUNC_OFFSET(16245, glVertexAttrib4sNV, glVertexAttrib4sNV, NULL, 949), - NAME_FUNC_OFFSET(16264, glVertexAttrib4svNV, glVertexAttrib4svNV, NULL, 950), - NAME_FUNC_OFFSET(16284, glVertexAttrib4ubNV, glVertexAttrib4ubNV, NULL, 951), - NAME_FUNC_OFFSET(16304, glVertexAttrib4ubvNV, glVertexAttrib4ubvNV, NULL, 952), - NAME_FUNC_OFFSET(16325, glVertexAttribPointerNV, glVertexAttribPointerNV, NULL, 953), - NAME_FUNC_OFFSET(16349, glVertexAttribs1dvNV, glVertexAttribs1dvNV, NULL, 954), - NAME_FUNC_OFFSET(16370, glVertexAttribs1fvNV, glVertexAttribs1fvNV, NULL, 955), - NAME_FUNC_OFFSET(16391, glVertexAttribs1svNV, glVertexAttribs1svNV, NULL, 956), - NAME_FUNC_OFFSET(16412, glVertexAttribs2dvNV, glVertexAttribs2dvNV, NULL, 957), - NAME_FUNC_OFFSET(16433, glVertexAttribs2fvNV, glVertexAttribs2fvNV, NULL, 958), - NAME_FUNC_OFFSET(16454, glVertexAttribs2svNV, glVertexAttribs2svNV, NULL, 959), - NAME_FUNC_OFFSET(16475, glVertexAttribs3dvNV, glVertexAttribs3dvNV, NULL, 960), - NAME_FUNC_OFFSET(16496, glVertexAttribs3fvNV, glVertexAttribs3fvNV, NULL, 961), - NAME_FUNC_OFFSET(16517, glVertexAttribs3svNV, glVertexAttribs3svNV, NULL, 962), - NAME_FUNC_OFFSET(16538, glVertexAttribs4dvNV, glVertexAttribs4dvNV, NULL, 963), - NAME_FUNC_OFFSET(16559, glVertexAttribs4fvNV, glVertexAttribs4fvNV, NULL, 964), - NAME_FUNC_OFFSET(16580, glVertexAttribs4svNV, glVertexAttribs4svNV, NULL, 965), - NAME_FUNC_OFFSET(16601, glVertexAttribs4ubvNV, glVertexAttribs4ubvNV, NULL, 966), - NAME_FUNC_OFFSET(16623, glGetTexBumpParameterfvATI, glGetTexBumpParameterfvATI, NULL, 967), - NAME_FUNC_OFFSET(16650, glGetTexBumpParameterivATI, glGetTexBumpParameterivATI, NULL, 968), - NAME_FUNC_OFFSET(16677, glTexBumpParameterfvATI, glTexBumpParameterfvATI, NULL, 969), - NAME_FUNC_OFFSET(16701, glTexBumpParameterivATI, glTexBumpParameterivATI, NULL, 970), - NAME_FUNC_OFFSET(16725, glAlphaFragmentOp1ATI, glAlphaFragmentOp1ATI, NULL, 971), - NAME_FUNC_OFFSET(16747, glAlphaFragmentOp2ATI, glAlphaFragmentOp2ATI, NULL, 972), - NAME_FUNC_OFFSET(16769, glAlphaFragmentOp3ATI, glAlphaFragmentOp3ATI, NULL, 973), - NAME_FUNC_OFFSET(16791, glBeginFragmentShaderATI, glBeginFragmentShaderATI, NULL, 974), - NAME_FUNC_OFFSET(16816, glBindFragmentShaderATI, glBindFragmentShaderATI, NULL, 975), - NAME_FUNC_OFFSET(16840, glColorFragmentOp1ATI, glColorFragmentOp1ATI, NULL, 976), - NAME_FUNC_OFFSET(16862, glColorFragmentOp2ATI, glColorFragmentOp2ATI, NULL, 977), - NAME_FUNC_OFFSET(16884, glColorFragmentOp3ATI, glColorFragmentOp3ATI, NULL, 978), - NAME_FUNC_OFFSET(16906, glDeleteFragmentShaderATI, glDeleteFragmentShaderATI, NULL, 979), - NAME_FUNC_OFFSET(16932, glEndFragmentShaderATI, glEndFragmentShaderATI, NULL, 980), - NAME_FUNC_OFFSET(16955, glGenFragmentShadersATI, glGenFragmentShadersATI, NULL, 981), - NAME_FUNC_OFFSET(16979, glPassTexCoordATI, glPassTexCoordATI, NULL, 982), - NAME_FUNC_OFFSET(16997, glSampleMapATI, glSampleMapATI, NULL, 983), - NAME_FUNC_OFFSET(17012, glSetFragmentShaderConstantATI, glSetFragmentShaderConstantATI, NULL, 984), - NAME_FUNC_OFFSET(17043, gl_dispatch_stub_985, gl_dispatch_stub_985, NULL, 985), - NAME_FUNC_OFFSET(17066, gl_dispatch_stub_986, gl_dispatch_stub_986, NULL, 986), - NAME_FUNC_OFFSET(17089, gl_dispatch_stub_987, gl_dispatch_stub_987, NULL, 987), - NAME_FUNC_OFFSET(17112, glGetProgramNamedParameterdvNV, glGetProgramNamedParameterdvNV, NULL, 988), - NAME_FUNC_OFFSET(17143, glGetProgramNamedParameterfvNV, glGetProgramNamedParameterfvNV, NULL, 989), - NAME_FUNC_OFFSET(17174, glProgramNamedParameter4dNV, glProgramNamedParameter4dNV, NULL, 990), - NAME_FUNC_OFFSET(17202, glProgramNamedParameter4dvNV, glProgramNamedParameter4dvNV, NULL, 991), - NAME_FUNC_OFFSET(17231, glProgramNamedParameter4fNV, glProgramNamedParameter4fNV, NULL, 992), - NAME_FUNC_OFFSET(17259, glProgramNamedParameter4fvNV, glProgramNamedParameter4fvNV, NULL, 993), - NAME_FUNC_OFFSET(17288, glPrimitiveRestartNV, glPrimitiveRestartNV, NULL, 994), - NAME_FUNC_OFFSET(17309, gl_dispatch_stub_995, gl_dispatch_stub_995, NULL, 995), - NAME_FUNC_OFFSET(17326, gl_dispatch_stub_996, gl_dispatch_stub_996, NULL, 996), - NAME_FUNC_OFFSET(17339, gl_dispatch_stub_997, gl_dispatch_stub_997, NULL, 997), - NAME_FUNC_OFFSET(17353, gl_dispatch_stub_998, gl_dispatch_stub_998, NULL, 998), - NAME_FUNC_OFFSET(17370, glBindFramebufferEXT, glBindFramebufferEXT, NULL, 999), - NAME_FUNC_OFFSET(17391, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, 1000), - NAME_FUNC_OFFSET(17413, gl_dispatch_stub_1001, gl_dispatch_stub_1001, NULL, 1001), - NAME_FUNC_OFFSET(17437, gl_dispatch_stub_1002, gl_dispatch_stub_1002, NULL, 1002), - NAME_FUNC_OFFSET(17467, glVertexAttribI1iEXT, glVertexAttribI1iEXT, NULL, 1003), - NAME_FUNC_OFFSET(17488, glVertexAttribI1uiEXT, glVertexAttribI1uiEXT, NULL, 1004), - NAME_FUNC_OFFSET(17510, glVertexAttribI2iEXT, glVertexAttribI2iEXT, NULL, 1005), - NAME_FUNC_OFFSET(17531, glVertexAttribI2ivEXT, glVertexAttribI2ivEXT, NULL, 1006), - NAME_FUNC_OFFSET(17553, glVertexAttribI2uiEXT, glVertexAttribI2uiEXT, NULL, 1007), - NAME_FUNC_OFFSET(17575, glVertexAttribI2uivEXT, glVertexAttribI2uivEXT, NULL, 1008), - NAME_FUNC_OFFSET(17598, glVertexAttribI3iEXT, glVertexAttribI3iEXT, NULL, 1009), - NAME_FUNC_OFFSET(17619, glVertexAttribI3ivEXT, glVertexAttribI3ivEXT, NULL, 1010), - NAME_FUNC_OFFSET(17641, glVertexAttribI3uiEXT, glVertexAttribI3uiEXT, NULL, 1011), - NAME_FUNC_OFFSET(17663, glVertexAttribI3uivEXT, glVertexAttribI3uivEXT, NULL, 1012), - NAME_FUNC_OFFSET(17686, glVertexAttribI4iEXT, glVertexAttribI4iEXT, NULL, 1013), - NAME_FUNC_OFFSET(17707, glVertexAttribI4ivEXT, glVertexAttribI4ivEXT, NULL, 1014), - NAME_FUNC_OFFSET(17729, glVertexAttribI4uiEXT, glVertexAttribI4uiEXT, NULL, 1015), - NAME_FUNC_OFFSET(17751, glVertexAttribI4uivEXT, glVertexAttribI4uivEXT, NULL, 1016), - NAME_FUNC_OFFSET(17774, glClearColorIiEXT, glClearColorIiEXT, NULL, 1017), - NAME_FUNC_OFFSET(17792, glClearColorIuiEXT, glClearColorIuiEXT, NULL, 1018), - NAME_FUNC_OFFSET(17811, glBindBufferOffsetEXT, glBindBufferOffsetEXT, NULL, 1019), - NAME_FUNC_OFFSET(17833, glBeginPerfMonitorAMD, glBeginPerfMonitorAMD, NULL, 1020), - NAME_FUNC_OFFSET(17855, glDeletePerfMonitorsAMD, glDeletePerfMonitorsAMD, NULL, 1021), - NAME_FUNC_OFFSET(17879, glEndPerfMonitorAMD, glEndPerfMonitorAMD, NULL, 1022), - NAME_FUNC_OFFSET(17899, glGenPerfMonitorsAMD, glGenPerfMonitorsAMD, NULL, 1023), - NAME_FUNC_OFFSET(17920, glGetPerfMonitorCounterDataAMD, glGetPerfMonitorCounterDataAMD, NULL, 1024), - NAME_FUNC_OFFSET(17951, glGetPerfMonitorCounterInfoAMD, glGetPerfMonitorCounterInfoAMD, NULL, 1025), - NAME_FUNC_OFFSET(17982, glGetPerfMonitorCounterStringAMD, glGetPerfMonitorCounterStringAMD, NULL, 1026), - NAME_FUNC_OFFSET(18015, glGetPerfMonitorCountersAMD, glGetPerfMonitorCountersAMD, NULL, 1027), - NAME_FUNC_OFFSET(18043, glGetPerfMonitorGroupStringAMD, glGetPerfMonitorGroupStringAMD, NULL, 1028), - NAME_FUNC_OFFSET(18074, glGetPerfMonitorGroupsAMD, glGetPerfMonitorGroupsAMD, NULL, 1029), - NAME_FUNC_OFFSET(18100, glSelectPerfMonitorCountersAMD, glSelectPerfMonitorCountersAMD, NULL, 1030), - NAME_FUNC_OFFSET(18131, glGetObjectParameterivAPPLE, glGetObjectParameterivAPPLE, NULL, 1031), - NAME_FUNC_OFFSET(18159, glObjectPurgeableAPPLE, glObjectPurgeableAPPLE, NULL, 1032), - NAME_FUNC_OFFSET(18182, glObjectUnpurgeableAPPLE, glObjectUnpurgeableAPPLE, NULL, 1033), - NAME_FUNC_OFFSET(18207, glActiveProgramEXT, glActiveProgramEXT, NULL, 1034), - NAME_FUNC_OFFSET(18226, glCreateShaderProgramEXT, glCreateShaderProgramEXT, NULL, 1035), - NAME_FUNC_OFFSET(18251, glUseShaderProgramEXT, glUseShaderProgramEXT, NULL, 1036), - NAME_FUNC_OFFSET(18273, glTextureBarrierNV, glTextureBarrierNV, NULL, 1037), - NAME_FUNC_OFFSET(18292, glVDPAUFiniNV, glVDPAUFiniNV, NULL, 1038), - NAME_FUNC_OFFSET(18306, glVDPAUGetSurfaceivNV, glVDPAUGetSurfaceivNV, NULL, 1039), - NAME_FUNC_OFFSET(18328, glVDPAUInitNV, glVDPAUInitNV, NULL, 1040), - NAME_FUNC_OFFSET(18342, glVDPAUIsSurfaceNV, glVDPAUIsSurfaceNV, NULL, 1041), - NAME_FUNC_OFFSET(18361, glVDPAUMapSurfacesNV, glVDPAUMapSurfacesNV, NULL, 1042), - NAME_FUNC_OFFSET(18382, glVDPAURegisterOutputSurfaceNV, glVDPAURegisterOutputSurfaceNV, NULL, 1043), - NAME_FUNC_OFFSET(18413, glVDPAURegisterVideoSurfaceNV, glVDPAURegisterVideoSurfaceNV, NULL, 1044), - NAME_FUNC_OFFSET(18443, glVDPAUSurfaceAccessNV, glVDPAUSurfaceAccessNV, NULL, 1045), - NAME_FUNC_OFFSET(18466, glVDPAUUnmapSurfacesNV, glVDPAUUnmapSurfacesNV, NULL, 1046), - NAME_FUNC_OFFSET(18489, glVDPAUUnregisterSurfaceNV, glVDPAUUnregisterSurfaceNV, NULL, 1047), - NAME_FUNC_OFFSET(18516, gl_dispatch_stub_1048, gl_dispatch_stub_1048, NULL, 1048), - NAME_FUNC_OFFSET(18541, gl_dispatch_stub_1049, gl_dispatch_stub_1049, NULL, 1049), - NAME_FUNC_OFFSET(18570, gl_dispatch_stub_1050, gl_dispatch_stub_1050, NULL, 1050), - NAME_FUNC_OFFSET(18601, glEGLImageTargetRenderbufferStorageOES, glEGLImageTargetRenderbufferStorageOES, NULL, 1051), - NAME_FUNC_OFFSET(18640, glEGLImageTargetTexture2DOES, glEGLImageTargetTexture2DOES, NULL, 1052), - NAME_FUNC_OFFSET(18669, gl_dispatch_stub_1053, gl_dispatch_stub_1053, NULL, 1053), - NAME_FUNC_OFFSET(18682, gl_dispatch_stub_1054, gl_dispatch_stub_1054, NULL, 1054), - NAME_FUNC_OFFSET(18696, gl_dispatch_stub_1055, gl_dispatch_stub_1055, NULL, 1055), - NAME_FUNC_OFFSET(18710, gl_dispatch_stub_1056, gl_dispatch_stub_1056, NULL, 1056), - NAME_FUNC_OFFSET(18720, gl_dispatch_stub_1057, gl_dispatch_stub_1057, NULL, 1057), - NAME_FUNC_OFFSET(18734, gl_dispatch_stub_1058, gl_dispatch_stub_1058, NULL, 1058), - NAME_FUNC_OFFSET(18741, gl_dispatch_stub_1059, gl_dispatch_stub_1059, NULL, 1059), - NAME_FUNC_OFFSET(18749, gl_dispatch_stub_1060, gl_dispatch_stub_1060, NULL, 1060), - NAME_FUNC_OFFSET(18760, gl_dispatch_stub_1061, gl_dispatch_stub_1061, NULL, 1061), - NAME_FUNC_OFFSET(18771, gl_dispatch_stub_1062, gl_dispatch_stub_1062, NULL, 1062), - NAME_FUNC_OFFSET(18785, gl_dispatch_stub_1063, gl_dispatch_stub_1063, NULL, 1063), - NAME_FUNC_OFFSET(18800, gl_dispatch_stub_1064, gl_dispatch_stub_1064, NULL, 1064), - NAME_FUNC_OFFSET(18809, gl_dispatch_stub_1065, gl_dispatch_stub_1065, NULL, 1065), - NAME_FUNC_OFFSET(18819, gl_dispatch_stub_1066, gl_dispatch_stub_1066, NULL, 1066), - NAME_FUNC_OFFSET(18832, gl_dispatch_stub_1067, gl_dispatch_stub_1067, NULL, 1067), - NAME_FUNC_OFFSET(18846, gl_dispatch_stub_1068, gl_dispatch_stub_1068, NULL, 1068), - NAME_FUNC_OFFSET(18858, gl_dispatch_stub_1069, gl_dispatch_stub_1069, NULL, 1069), - NAME_FUNC_OFFSET(18871, gl_dispatch_stub_1070, gl_dispatch_stub_1070, NULL, 1070), - NAME_FUNC_OFFSET(18885, gl_dispatch_stub_1071, gl_dispatch_stub_1071, NULL, 1071), - NAME_FUNC_OFFSET(18903, gl_dispatch_stub_1072, gl_dispatch_stub_1072, NULL, 1072), - NAME_FUNC_OFFSET(18914, gl_dispatch_stub_1073, gl_dispatch_stub_1073, NULL, 1073), - NAME_FUNC_OFFSET(18923, gl_dispatch_stub_1074, gl_dispatch_stub_1074, NULL, 1074), - NAME_FUNC_OFFSET(18932, gl_dispatch_stub_1075, gl_dispatch_stub_1075, NULL, 1075), - NAME_FUNC_OFFSET(18945, gl_dispatch_stub_1076, gl_dispatch_stub_1076, NULL, 1076), - NAME_FUNC_OFFSET(18962, gl_dispatch_stub_1077, gl_dispatch_stub_1077, NULL, 1077), - NAME_FUNC_OFFSET(18972, gl_dispatch_stub_1078, gl_dispatch_stub_1078, NULL, 1078), - NAME_FUNC_OFFSET(18990, gl_dispatch_stub_1079, gl_dispatch_stub_1079, NULL, 1079), - NAME_FUNC_OFFSET(18999, gl_dispatch_stub_1080, gl_dispatch_stub_1080, NULL, 1080), - NAME_FUNC_OFFSET(19009, gl_dispatch_stub_1081, gl_dispatch_stub_1081, NULL, 1081), - NAME_FUNC_OFFSET(19020, gl_dispatch_stub_1082, gl_dispatch_stub_1082, NULL, 1082), - NAME_FUNC_OFFSET(19036, gl_dispatch_stub_1083, gl_dispatch_stub_1083, NULL, 1083), - NAME_FUNC_OFFSET(19049, gl_dispatch_stub_1084, gl_dispatch_stub_1084, NULL, 1084), - NAME_FUNC_OFFSET(19062, gl_dispatch_stub_1085, gl_dispatch_stub_1085, NULL, 1085), - NAME_FUNC_OFFSET(19075, gl_dispatch_stub_1086, gl_dispatch_stub_1086, NULL, 1086), - NAME_FUNC_OFFSET(19091, gl_dispatch_stub_1087, gl_dispatch_stub_1087, NULL, 1087), - NAME_FUNC_OFFSET(19107, gl_dispatch_stub_1088, gl_dispatch_stub_1088, NULL, 1088), - NAME_FUNC_OFFSET(19119, gl_dispatch_stub_1089, gl_dispatch_stub_1089, NULL, 1089), - NAME_FUNC_OFFSET(19132, gl_dispatch_stub_1090, gl_dispatch_stub_1090, NULL, 1090), - NAME_FUNC_OFFSET(19148, gl_dispatch_stub_1091, gl_dispatch_stub_1091, NULL, 1091), - NAME_FUNC_OFFSET(19162, gl_dispatch_stub_1092, gl_dispatch_stub_1092, NULL, 1092), - NAME_FUNC_OFFSET(19182, gl_dispatch_stub_1093, gl_dispatch_stub_1093, NULL, 1093), - NAME_FUNC_OFFSET(19200, gl_dispatch_stub_1094, gl_dispatch_stub_1094, NULL, 1094), - NAME_FUNC_OFFSET(19219, gl_dispatch_stub_1095, gl_dispatch_stub_1095, NULL, 1095), - NAME_FUNC_OFFSET(19236, glTexGenf, glTexGenf, NULL, 190), - NAME_FUNC_OFFSET(19249, glTexGenfv, glTexGenfv, NULL, 191), - NAME_FUNC_OFFSET(19263, glTexGeni, glTexGeni, NULL, 192), - NAME_FUNC_OFFSET(19276, glTexGeniv, glTexGeniv, NULL, 193), - NAME_FUNC_OFFSET(19290, glReadBuffer, glReadBuffer, NULL, 254), - NAME_FUNC_OFFSET(19305, glGetTexGenfv, glGetTexGenfv, NULL, 279), - NAME_FUNC_OFFSET(19322, glGetTexGeniv, glGetTexGeniv, NULL, 280), - NAME_FUNC_OFFSET(19339, glArrayElement, glArrayElement, NULL, 306), - NAME_FUNC_OFFSET(19357, glBindTexture, glBindTexture, NULL, 307), - NAME_FUNC_OFFSET(19374, glDrawArrays, glDrawArrays, NULL, 310), - NAME_FUNC_OFFSET(19390, glAreTexturesResident, glAreTexturesResidentEXT, glAreTexturesResidentEXT, 322), - NAME_FUNC_OFFSET(19415, glCopyTexImage1D, glCopyTexImage1D, NULL, 323), - NAME_FUNC_OFFSET(19435, glCopyTexImage2D, glCopyTexImage2D, NULL, 324), - NAME_FUNC_OFFSET(19455, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, 325), - NAME_FUNC_OFFSET(19478, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, 326), - NAME_FUNC_OFFSET(19501, glDeleteTextures, glDeleteTexturesEXT, glDeleteTexturesEXT, 327), - NAME_FUNC_OFFSET(19521, glGenTextures, glGenTexturesEXT, glGenTexturesEXT, 328), - NAME_FUNC_OFFSET(19538, glGetPointerv, glGetPointerv, NULL, 329), - NAME_FUNC_OFFSET(19555, glIsTexture, glIsTextureEXT, glIsTextureEXT, 330), - NAME_FUNC_OFFSET(19570, glPrioritizeTextures, glPrioritizeTextures, NULL, 331), - NAME_FUNC_OFFSET(19594, glTexSubImage1D, glTexSubImage1D, NULL, 332), - NAME_FUNC_OFFSET(19613, glTexSubImage2D, glTexSubImage2D, NULL, 333), - NAME_FUNC_OFFSET(19632, glBlendColor, glBlendColor, NULL, 336), - NAME_FUNC_OFFSET(19648, glBlendEquation, glBlendEquation, NULL, 337), - NAME_FUNC_OFFSET(19667, glBlendEquation, glBlendEquation, NULL, 337), - NAME_FUNC_OFFSET(19686, glDrawRangeElements, glDrawRangeElements, NULL, 338), - NAME_FUNC_OFFSET(19709, glColorTable, glColorTable, NULL, 339), - NAME_FUNC_OFFSET(19725, glColorTable, glColorTable, NULL, 339), - NAME_FUNC_OFFSET(19741, glColorTableParameterfv, glColorTableParameterfv, NULL, 340), - NAME_FUNC_OFFSET(19768, glColorTableParameteriv, glColorTableParameteriv, NULL, 341), - NAME_FUNC_OFFSET(19795, glCopyColorTable, glCopyColorTable, NULL, 342), - NAME_FUNC_OFFSET(19815, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, 343), - NAME_FUNC_OFFSET(19834, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, 343), - NAME_FUNC_OFFSET(19853, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, 344), - NAME_FUNC_OFFSET(19883, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, 344), - NAME_FUNC_OFFSET(19913, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, 345), - NAME_FUNC_OFFSET(19943, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, 345), - NAME_FUNC_OFFSET(19973, glColorSubTable, glColorSubTable, NULL, 346), - NAME_FUNC_OFFSET(19992, glCopyColorSubTable, glCopyColorSubTable, NULL, 347), - NAME_FUNC_OFFSET(20015, glConvolutionFilter1D, glConvolutionFilter1D, NULL, 348), - NAME_FUNC_OFFSET(20040, glConvolutionFilter2D, glConvolutionFilter2D, NULL, 349), - NAME_FUNC_OFFSET(20065, glConvolutionParameterf, glConvolutionParameterf, NULL, 350), - NAME_FUNC_OFFSET(20092, glConvolutionParameterfv, glConvolutionParameterfv, NULL, 351), - NAME_FUNC_OFFSET(20120, glConvolutionParameteri, glConvolutionParameteri, NULL, 352), - NAME_FUNC_OFFSET(20147, glConvolutionParameteriv, glConvolutionParameteriv, NULL, 353), - NAME_FUNC_OFFSET(20175, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D, NULL, 354), - NAME_FUNC_OFFSET(20204, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D, NULL, 355), - NAME_FUNC_OFFSET(20233, glGetConvolutionFilter, gl_dispatch_stub_356, gl_dispatch_stub_356, 356), - NAME_FUNC_OFFSET(20259, glGetConvolutionParameterfv, gl_dispatch_stub_357, gl_dispatch_stub_357, 357), - NAME_FUNC_OFFSET(20290, glGetConvolutionParameteriv, gl_dispatch_stub_358, gl_dispatch_stub_358, 358), - NAME_FUNC_OFFSET(20321, glGetSeparableFilter, gl_dispatch_stub_359, gl_dispatch_stub_359, 359), - NAME_FUNC_OFFSET(20345, glSeparableFilter2D, glSeparableFilter2D, NULL, 360), - NAME_FUNC_OFFSET(20368, glGetHistogram, gl_dispatch_stub_361, gl_dispatch_stub_361, 361), - NAME_FUNC_OFFSET(20386, glGetHistogramParameterfv, gl_dispatch_stub_362, gl_dispatch_stub_362, 362), - NAME_FUNC_OFFSET(20415, glGetHistogramParameteriv, gl_dispatch_stub_363, gl_dispatch_stub_363, 363), - NAME_FUNC_OFFSET(20444, glGetMinmax, gl_dispatch_stub_364, gl_dispatch_stub_364, 364), - NAME_FUNC_OFFSET(20459, glGetMinmaxParameterfv, gl_dispatch_stub_365, gl_dispatch_stub_365, 365), - NAME_FUNC_OFFSET(20485, glGetMinmaxParameteriv, gl_dispatch_stub_366, gl_dispatch_stub_366, 366), - NAME_FUNC_OFFSET(20511, glHistogram, glHistogram, NULL, 367), - NAME_FUNC_OFFSET(20526, glMinmax, glMinmax, NULL, 368), - NAME_FUNC_OFFSET(20538, glResetHistogram, glResetHistogram, NULL, 369), - NAME_FUNC_OFFSET(20558, glResetMinmax, glResetMinmax, NULL, 370), - NAME_FUNC_OFFSET(20575, glTexImage3D, glTexImage3D, NULL, 371), - NAME_FUNC_OFFSET(20591, glTexImage3D, glTexImage3D, NULL, 371), - NAME_FUNC_OFFSET(20607, glTexSubImage3D, glTexSubImage3D, NULL, 372), - NAME_FUNC_OFFSET(20626, glTexSubImage3D, glTexSubImage3D, NULL, 372), - NAME_FUNC_OFFSET(20645, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, 373), - NAME_FUNC_OFFSET(20668, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, 373), - NAME_FUNC_OFFSET(20691, glActiveTexture, glActiveTexture, NULL, 374), - NAME_FUNC_OFFSET(20710, glClientActiveTexture, glClientActiveTexture, NULL, 375), - NAME_FUNC_OFFSET(20735, glMultiTexCoord1d, glMultiTexCoord1d, NULL, 376), - NAME_FUNC_OFFSET(20756, glMultiTexCoord1dv, glMultiTexCoord1dv, NULL, 377), - NAME_FUNC_OFFSET(20778, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL, 378), - NAME_FUNC_OFFSET(20796, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL, 379), - NAME_FUNC_OFFSET(20815, glMultiTexCoord1i, glMultiTexCoord1i, NULL, 380), - NAME_FUNC_OFFSET(20836, glMultiTexCoord1iv, glMultiTexCoord1iv, NULL, 381), - NAME_FUNC_OFFSET(20858, glMultiTexCoord1s, glMultiTexCoord1s, NULL, 382), - NAME_FUNC_OFFSET(20879, glMultiTexCoord1sv, glMultiTexCoord1sv, NULL, 383), - NAME_FUNC_OFFSET(20901, glMultiTexCoord2d, glMultiTexCoord2d, NULL, 384), - NAME_FUNC_OFFSET(20922, glMultiTexCoord2dv, glMultiTexCoord2dv, NULL, 385), - NAME_FUNC_OFFSET(20944, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL, 386), - NAME_FUNC_OFFSET(20962, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL, 387), - NAME_FUNC_OFFSET(20981, glMultiTexCoord2i, glMultiTexCoord2i, NULL, 388), - NAME_FUNC_OFFSET(21002, glMultiTexCoord2iv, glMultiTexCoord2iv, NULL, 389), - NAME_FUNC_OFFSET(21024, glMultiTexCoord2s, glMultiTexCoord2s, NULL, 390), - NAME_FUNC_OFFSET(21045, glMultiTexCoord2sv, glMultiTexCoord2sv, NULL, 391), - NAME_FUNC_OFFSET(21067, glMultiTexCoord3d, glMultiTexCoord3d, NULL, 392), - NAME_FUNC_OFFSET(21088, glMultiTexCoord3dv, glMultiTexCoord3dv, NULL, 393), - NAME_FUNC_OFFSET(21110, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL, 394), - NAME_FUNC_OFFSET(21128, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL, 395), - NAME_FUNC_OFFSET(21147, glMultiTexCoord3i, glMultiTexCoord3i, NULL, 396), - NAME_FUNC_OFFSET(21168, glMultiTexCoord3iv, glMultiTexCoord3iv, NULL, 397), - NAME_FUNC_OFFSET(21190, glMultiTexCoord3s, glMultiTexCoord3s, NULL, 398), - NAME_FUNC_OFFSET(21211, glMultiTexCoord3sv, glMultiTexCoord3sv, NULL, 399), - NAME_FUNC_OFFSET(21233, glMultiTexCoord4d, glMultiTexCoord4d, NULL, 400), - NAME_FUNC_OFFSET(21254, glMultiTexCoord4dv, glMultiTexCoord4dv, NULL, 401), - NAME_FUNC_OFFSET(21276, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL, 402), - NAME_FUNC_OFFSET(21294, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL, 403), - NAME_FUNC_OFFSET(21313, glMultiTexCoord4i, glMultiTexCoord4i, NULL, 404), - NAME_FUNC_OFFSET(21334, glMultiTexCoord4iv, glMultiTexCoord4iv, NULL, 405), - NAME_FUNC_OFFSET(21356, glMultiTexCoord4s, glMultiTexCoord4s, NULL, 406), - NAME_FUNC_OFFSET(21377, glMultiTexCoord4sv, glMultiTexCoord4sv, NULL, 407), - NAME_FUNC_OFFSET(21399, glCompressedTexImage1D, glCompressedTexImage1D, NULL, 408), - NAME_FUNC_OFFSET(21425, glCompressedTexImage2D, glCompressedTexImage2D, NULL, 409), - NAME_FUNC_OFFSET(21451, glCompressedTexImage3D, glCompressedTexImage3D, NULL, 410), - NAME_FUNC_OFFSET(21477, glCompressedTexImage3D, glCompressedTexImage3D, NULL, 410), - NAME_FUNC_OFFSET(21503, glCompressedTexSubImage1D, glCompressedTexSubImage1D, NULL, 411), - NAME_FUNC_OFFSET(21532, glCompressedTexSubImage2D, glCompressedTexSubImage2D, NULL, 412), - NAME_FUNC_OFFSET(21561, glCompressedTexSubImage3D, glCompressedTexSubImage3D, NULL, 413), - NAME_FUNC_OFFSET(21590, glCompressedTexSubImage3D, glCompressedTexSubImage3D, NULL, 413), - NAME_FUNC_OFFSET(21619, glGetCompressedTexImage, glGetCompressedTexImage, NULL, 414), - NAME_FUNC_OFFSET(21646, glLoadTransposeMatrixd, glLoadTransposeMatrixd, NULL, 415), - NAME_FUNC_OFFSET(21672, glLoadTransposeMatrixf, glLoadTransposeMatrixf, NULL, 416), - NAME_FUNC_OFFSET(21698, glMultTransposeMatrixd, glMultTransposeMatrixd, NULL, 417), - NAME_FUNC_OFFSET(21724, glMultTransposeMatrixf, glMultTransposeMatrixf, NULL, 418), - NAME_FUNC_OFFSET(21750, glSampleCoverage, glSampleCoverage, NULL, 419), - NAME_FUNC_OFFSET(21770, glBlendFuncSeparate, glBlendFuncSeparate, NULL, 420), - NAME_FUNC_OFFSET(21793, glBlendFuncSeparate, glBlendFuncSeparate, NULL, 420), - NAME_FUNC_OFFSET(21817, glBlendFuncSeparate, glBlendFuncSeparate, NULL, 420), - NAME_FUNC_OFFSET(21840, glFogCoordPointer, glFogCoordPointer, NULL, 421), - NAME_FUNC_OFFSET(21861, glFogCoordd, glFogCoordd, NULL, 422), - NAME_FUNC_OFFSET(21876, glFogCoorddv, glFogCoorddv, NULL, 423), - NAME_FUNC_OFFSET(21892, glMultiDrawArrays, glMultiDrawArrays, NULL, 424), - NAME_FUNC_OFFSET(21913, glPointParameterf, glPointParameterf, NULL, 425), - NAME_FUNC_OFFSET(21934, glPointParameterf, glPointParameterf, NULL, 425), - NAME_FUNC_OFFSET(21955, glPointParameterf, glPointParameterf, NULL, 425), - NAME_FUNC_OFFSET(21977, glPointParameterfv, glPointParameterfv, NULL, 426), - NAME_FUNC_OFFSET(21999, glPointParameterfv, glPointParameterfv, NULL, 426), - NAME_FUNC_OFFSET(22021, glPointParameterfv, glPointParameterfv, NULL, 426), - NAME_FUNC_OFFSET(22044, glPointParameteri, glPointParameteri, NULL, 427), - NAME_FUNC_OFFSET(22064, glPointParameteriv, glPointParameteriv, NULL, 428), - NAME_FUNC_OFFSET(22085, glSecondaryColor3b, glSecondaryColor3b, NULL, 429), - NAME_FUNC_OFFSET(22107, glSecondaryColor3bv, glSecondaryColor3bv, NULL, 430), - NAME_FUNC_OFFSET(22130, glSecondaryColor3d, glSecondaryColor3d, NULL, 431), - NAME_FUNC_OFFSET(22152, glSecondaryColor3dv, glSecondaryColor3dv, NULL, 432), - NAME_FUNC_OFFSET(22175, glSecondaryColor3i, glSecondaryColor3i, NULL, 433), - NAME_FUNC_OFFSET(22197, glSecondaryColor3iv, glSecondaryColor3iv, NULL, 434), - NAME_FUNC_OFFSET(22220, glSecondaryColor3s, glSecondaryColor3s, NULL, 435), - NAME_FUNC_OFFSET(22242, glSecondaryColor3sv, glSecondaryColor3sv, NULL, 436), - NAME_FUNC_OFFSET(22265, glSecondaryColor3ub, glSecondaryColor3ub, NULL, 437), - NAME_FUNC_OFFSET(22288, glSecondaryColor3ubv, glSecondaryColor3ubv, NULL, 438), - NAME_FUNC_OFFSET(22312, glSecondaryColor3ui, glSecondaryColor3ui, NULL, 439), - NAME_FUNC_OFFSET(22335, glSecondaryColor3uiv, glSecondaryColor3uiv, NULL, 440), - NAME_FUNC_OFFSET(22359, glSecondaryColor3us, glSecondaryColor3us, NULL, 441), - NAME_FUNC_OFFSET(22382, glSecondaryColor3usv, glSecondaryColor3usv, NULL, 442), - NAME_FUNC_OFFSET(22406, glSecondaryColorPointer, glSecondaryColorPointer, NULL, 443), - NAME_FUNC_OFFSET(22433, glWindowPos2d, glWindowPos2d, NULL, 444), - NAME_FUNC_OFFSET(22450, glWindowPos2d, glWindowPos2d, NULL, 444), - NAME_FUNC_OFFSET(22468, glWindowPos2dv, glWindowPos2dv, NULL, 445), - NAME_FUNC_OFFSET(22486, glWindowPos2dv, glWindowPos2dv, NULL, 445), - NAME_FUNC_OFFSET(22505, glWindowPos2f, glWindowPos2f, NULL, 446), - NAME_FUNC_OFFSET(22522, glWindowPos2f, glWindowPos2f, NULL, 446), - NAME_FUNC_OFFSET(22540, glWindowPos2fv, glWindowPos2fv, NULL, 447), - NAME_FUNC_OFFSET(22558, glWindowPos2fv, glWindowPos2fv, NULL, 447), - NAME_FUNC_OFFSET(22577, glWindowPos2i, glWindowPos2i, NULL, 448), - NAME_FUNC_OFFSET(22594, glWindowPos2i, glWindowPos2i, NULL, 448), - NAME_FUNC_OFFSET(22612, glWindowPos2iv, glWindowPos2iv, NULL, 449), - NAME_FUNC_OFFSET(22630, glWindowPos2iv, glWindowPos2iv, NULL, 449), - NAME_FUNC_OFFSET(22649, glWindowPos2s, glWindowPos2s, NULL, 450), - NAME_FUNC_OFFSET(22666, glWindowPos2s, glWindowPos2s, NULL, 450), - NAME_FUNC_OFFSET(22684, glWindowPos2sv, glWindowPos2sv, NULL, 451), - NAME_FUNC_OFFSET(22702, glWindowPos2sv, glWindowPos2sv, NULL, 451), - NAME_FUNC_OFFSET(22721, glWindowPos3d, glWindowPos3d, NULL, 452), - NAME_FUNC_OFFSET(22738, glWindowPos3d, glWindowPos3d, NULL, 452), - NAME_FUNC_OFFSET(22756, glWindowPos3dv, glWindowPos3dv, NULL, 453), - NAME_FUNC_OFFSET(22774, glWindowPos3dv, glWindowPos3dv, NULL, 453), - NAME_FUNC_OFFSET(22793, glWindowPos3f, glWindowPos3f, NULL, 454), - NAME_FUNC_OFFSET(22810, glWindowPos3f, glWindowPos3f, NULL, 454), - NAME_FUNC_OFFSET(22828, glWindowPos3fv, glWindowPos3fv, NULL, 455), - NAME_FUNC_OFFSET(22846, glWindowPos3fv, glWindowPos3fv, NULL, 455), - NAME_FUNC_OFFSET(22865, glWindowPos3i, glWindowPos3i, NULL, 456), - NAME_FUNC_OFFSET(22882, glWindowPos3i, glWindowPos3i, NULL, 456), - NAME_FUNC_OFFSET(22900, glWindowPos3iv, glWindowPos3iv, NULL, 457), - NAME_FUNC_OFFSET(22918, glWindowPos3iv, glWindowPos3iv, NULL, 457), - NAME_FUNC_OFFSET(22937, glWindowPos3s, glWindowPos3s, NULL, 458), - NAME_FUNC_OFFSET(22954, glWindowPos3s, glWindowPos3s, NULL, 458), - NAME_FUNC_OFFSET(22972, glWindowPos3sv, glWindowPos3sv, NULL, 459), - NAME_FUNC_OFFSET(22990, glWindowPos3sv, glWindowPos3sv, NULL, 459), - NAME_FUNC_OFFSET(23009, glBeginQuery, glBeginQuery, NULL, 460), - NAME_FUNC_OFFSET(23025, glBindBuffer, glBindBuffer, NULL, 461), - NAME_FUNC_OFFSET(23041, glBufferData, glBufferData, NULL, 462), - NAME_FUNC_OFFSET(23057, glBufferSubData, glBufferSubData, NULL, 463), - NAME_FUNC_OFFSET(23076, glDeleteBuffers, glDeleteBuffers, NULL, 464), - NAME_FUNC_OFFSET(23095, glDeleteQueries, glDeleteQueries, NULL, 465), - NAME_FUNC_OFFSET(23114, glEndQuery, glEndQuery, NULL, 466), - NAME_FUNC_OFFSET(23128, glGenBuffers, glGenBuffers, NULL, 467), - NAME_FUNC_OFFSET(23144, glGenQueries, glGenQueries, NULL, 468), - NAME_FUNC_OFFSET(23160, glGetBufferParameteriv, glGetBufferParameteriv, NULL, 469), - NAME_FUNC_OFFSET(23186, glGetBufferPointerv, glGetBufferPointerv, NULL, 470), - NAME_FUNC_OFFSET(23209, glGetBufferPointerv, glGetBufferPointerv, NULL, 470), - NAME_FUNC_OFFSET(23232, glGetBufferSubData, glGetBufferSubData, NULL, 471), - NAME_FUNC_OFFSET(23254, glGetQueryObjectiv, glGetQueryObjectiv, NULL, 472), - NAME_FUNC_OFFSET(23276, glGetQueryObjectuiv, glGetQueryObjectuiv, NULL, 473), - NAME_FUNC_OFFSET(23299, glGetQueryiv, glGetQueryiv, NULL, 474), - NAME_FUNC_OFFSET(23315, glIsBuffer, glIsBuffer, NULL, 475), - NAME_FUNC_OFFSET(23329, glIsQuery, glIsQuery, NULL, 476), - NAME_FUNC_OFFSET(23342, glMapBuffer, glMapBuffer, NULL, 477), - NAME_FUNC_OFFSET(23357, glMapBuffer, glMapBuffer, NULL, 477), - NAME_FUNC_OFFSET(23372, glUnmapBuffer, glUnmapBuffer, NULL, 478), - NAME_FUNC_OFFSET(23389, glUnmapBuffer, glUnmapBuffer, NULL, 478), - NAME_FUNC_OFFSET(23406, glBindAttribLocation, glBindAttribLocation, NULL, 480), - NAME_FUNC_OFFSET(23430, glBlendEquationSeparate, glBlendEquationSeparate, NULL, 481), - NAME_FUNC_OFFSET(23457, glBlendEquationSeparate, glBlendEquationSeparate, NULL, 481), - NAME_FUNC_OFFSET(23484, glBlendEquationSeparate, glBlendEquationSeparate, NULL, 481), - NAME_FUNC_OFFSET(23511, glCompileShader, glCompileShader, NULL, 482), - NAME_FUNC_OFFSET(23530, glDisableVertexAttribArray, glDisableVertexAttribArray, NULL, 488), - NAME_FUNC_OFFSET(23560, glDrawBuffers, glDrawBuffers, NULL, 489), - NAME_FUNC_OFFSET(23577, glDrawBuffers, glDrawBuffers, NULL, 489), - NAME_FUNC_OFFSET(23594, glDrawBuffers, glDrawBuffers, NULL, 489), - NAME_FUNC_OFFSET(23610, glEnableVertexAttribArray, glEnableVertexAttribArray, NULL, 490), - NAME_FUNC_OFFSET(23639, glGetActiveAttrib, glGetActiveAttrib, NULL, 491), - NAME_FUNC_OFFSET(23660, glGetActiveUniform, glGetActiveUniform, NULL, 492), - NAME_FUNC_OFFSET(23682, glGetAttribLocation, glGetAttribLocation, NULL, 494), - NAME_FUNC_OFFSET(23705, glGetShaderSource, glGetShaderSource, NULL, 498), - NAME_FUNC_OFFSET(23726, glGetUniformLocation, glGetUniformLocation, NULL, 500), - NAME_FUNC_OFFSET(23750, glGetUniformfv, glGetUniformfv, NULL, 501), - NAME_FUNC_OFFSET(23768, glGetUniformiv, glGetUniformiv, NULL, 502), - NAME_FUNC_OFFSET(23786, glGetVertexAttribPointerv, glGetVertexAttribPointerv, NULL, 503), - NAME_FUNC_OFFSET(23815, glGetVertexAttribPointerv, glGetVertexAttribPointerv, NULL, 503), - NAME_FUNC_OFFSET(23843, glGetVertexAttribdv, glGetVertexAttribdv, NULL, 504), - NAME_FUNC_OFFSET(23866, glGetVertexAttribfv, glGetVertexAttribfv, NULL, 505), - NAME_FUNC_OFFSET(23889, glGetVertexAttribiv, glGetVertexAttribiv, NULL, 506), - NAME_FUNC_OFFSET(23912, glLinkProgram, glLinkProgram, NULL, 509), - NAME_FUNC_OFFSET(23929, glShaderSource, glShaderSource, NULL, 510), - NAME_FUNC_OFFSET(23947, glStencilOpSeparate, glStencilOpSeparate, NULL, 513), - NAME_FUNC_OFFSET(23970, glUniform1f, glUniform1f, NULL, 514), - NAME_FUNC_OFFSET(23985, glUniform1fv, glUniform1fv, NULL, 515), - NAME_FUNC_OFFSET(24001, glUniform1i, glUniform1i, NULL, 516), - NAME_FUNC_OFFSET(24016, glUniform1iv, glUniform1iv, NULL, 517), - NAME_FUNC_OFFSET(24032, glUniform2f, glUniform2f, NULL, 518), - NAME_FUNC_OFFSET(24047, glUniform2fv, glUniform2fv, NULL, 519), - NAME_FUNC_OFFSET(24063, glUniform2i, glUniform2i, NULL, 520), - NAME_FUNC_OFFSET(24078, glUniform2iv, glUniform2iv, NULL, 521), - NAME_FUNC_OFFSET(24094, glUniform3f, glUniform3f, NULL, 522), - NAME_FUNC_OFFSET(24109, glUniform3fv, glUniform3fv, NULL, 523), - NAME_FUNC_OFFSET(24125, glUniform3i, glUniform3i, NULL, 524), - NAME_FUNC_OFFSET(24140, glUniform3iv, glUniform3iv, NULL, 525), - NAME_FUNC_OFFSET(24156, glUniform4f, glUniform4f, NULL, 526), - NAME_FUNC_OFFSET(24171, glUniform4fv, glUniform4fv, NULL, 527), - NAME_FUNC_OFFSET(24187, glUniform4i, glUniform4i, NULL, 528), - NAME_FUNC_OFFSET(24202, glUniform4iv, glUniform4iv, NULL, 529), - NAME_FUNC_OFFSET(24218, glUniformMatrix2fv, glUniformMatrix2fv, NULL, 530), - NAME_FUNC_OFFSET(24240, glUniformMatrix3fv, glUniformMatrix3fv, NULL, 531), - NAME_FUNC_OFFSET(24262, glUniformMatrix4fv, glUniformMatrix4fv, NULL, 532), - NAME_FUNC_OFFSET(24284, glUseProgram, glUseProgram, NULL, 533), - NAME_FUNC_OFFSET(24306, glValidateProgram, glValidateProgram, NULL, 534), - NAME_FUNC_OFFSET(24327, glVertexAttrib1d, glVertexAttrib1d, NULL, 535), - NAME_FUNC_OFFSET(24347, glVertexAttrib1dv, glVertexAttrib1dv, NULL, 536), - NAME_FUNC_OFFSET(24368, glVertexAttrib1s, glVertexAttrib1s, NULL, 537), - NAME_FUNC_OFFSET(24388, glVertexAttrib1sv, glVertexAttrib1sv, NULL, 538), - NAME_FUNC_OFFSET(24409, glVertexAttrib2d, glVertexAttrib2d, NULL, 539), - NAME_FUNC_OFFSET(24429, glVertexAttrib2dv, glVertexAttrib2dv, NULL, 540), - NAME_FUNC_OFFSET(24450, glVertexAttrib2s, glVertexAttrib2s, NULL, 541), - NAME_FUNC_OFFSET(24470, glVertexAttrib2sv, glVertexAttrib2sv, NULL, 542), - NAME_FUNC_OFFSET(24491, glVertexAttrib3d, glVertexAttrib3d, NULL, 543), - NAME_FUNC_OFFSET(24511, glVertexAttrib3dv, glVertexAttrib3dv, NULL, 544), - NAME_FUNC_OFFSET(24532, glVertexAttrib3s, glVertexAttrib3s, NULL, 545), - NAME_FUNC_OFFSET(24552, glVertexAttrib3sv, glVertexAttrib3sv, NULL, 546), - NAME_FUNC_OFFSET(24573, glVertexAttrib4Nbv, glVertexAttrib4Nbv, NULL, 547), - NAME_FUNC_OFFSET(24595, glVertexAttrib4Niv, glVertexAttrib4Niv, NULL, 548), - NAME_FUNC_OFFSET(24617, glVertexAttrib4Nsv, glVertexAttrib4Nsv, NULL, 549), - NAME_FUNC_OFFSET(24639, glVertexAttrib4Nub, glVertexAttrib4Nub, NULL, 550), - NAME_FUNC_OFFSET(24661, glVertexAttrib4Nubv, glVertexAttrib4Nubv, NULL, 551), - NAME_FUNC_OFFSET(24684, glVertexAttrib4Nuiv, glVertexAttrib4Nuiv, NULL, 552), - NAME_FUNC_OFFSET(24707, glVertexAttrib4Nusv, glVertexAttrib4Nusv, NULL, 553), - NAME_FUNC_OFFSET(24730, glVertexAttrib4bv, glVertexAttrib4bv, NULL, 554), - NAME_FUNC_OFFSET(24751, glVertexAttrib4d, glVertexAttrib4d, NULL, 555), - NAME_FUNC_OFFSET(24771, glVertexAttrib4dv, glVertexAttrib4dv, NULL, 556), - NAME_FUNC_OFFSET(24792, glVertexAttrib4iv, glVertexAttrib4iv, NULL, 557), - NAME_FUNC_OFFSET(24813, glVertexAttrib4s, glVertexAttrib4s, NULL, 558), - NAME_FUNC_OFFSET(24833, glVertexAttrib4sv, glVertexAttrib4sv, NULL, 559), - NAME_FUNC_OFFSET(24854, glVertexAttrib4ubv, glVertexAttrib4ubv, NULL, 560), - NAME_FUNC_OFFSET(24876, glVertexAttrib4uiv, glVertexAttrib4uiv, NULL, 561), - NAME_FUNC_OFFSET(24898, glVertexAttrib4usv, glVertexAttrib4usv, NULL, 562), - NAME_FUNC_OFFSET(24920, glVertexAttribPointer, glVertexAttribPointer, NULL, 563), - NAME_FUNC_OFFSET(24945, glBeginConditionalRender, glBeginConditionalRender, NULL, 570), - NAME_FUNC_OFFSET(24972, glBeginTransformFeedback, glBeginTransformFeedback, NULL, 571), - NAME_FUNC_OFFSET(25000, glBindBufferBase, glBindBufferBase, NULL, 572), - NAME_FUNC_OFFSET(25020, glBindBufferRange, glBindBufferRange, NULL, 573), - NAME_FUNC_OFFSET(25041, glBindFragDataLocation, glBindFragDataLocation, NULL, 574), - NAME_FUNC_OFFSET(25067, glClampColor, glClampColor, NULL, 575), - NAME_FUNC_OFFSET(25083, glColorMaski, glColorMaski, NULL, 580), - NAME_FUNC_OFFSET(25105, glDisablei, glDisablei, NULL, 581), - NAME_FUNC_OFFSET(25125, glEnablei, glEnablei, NULL, 582), - NAME_FUNC_OFFSET(25144, glEndConditionalRender, glEndConditionalRender, NULL, 583), - NAME_FUNC_OFFSET(25169, glEndTransformFeedback, glEndTransformFeedback, NULL, 584), - NAME_FUNC_OFFSET(25195, glGetBooleani_v, glGetBooleani_v, NULL, 585), - NAME_FUNC_OFFSET(25219, glGetFragDataLocation, glGetFragDataLocation, NULL, 586), - NAME_FUNC_OFFSET(25244, glGetIntegeri_v, glGetIntegeri_v, NULL, 587), - NAME_FUNC_OFFSET(25268, glGetTexParameterIiv, glGetTexParameterIiv, NULL, 589), - NAME_FUNC_OFFSET(25292, glGetTexParameterIuiv, glGetTexParameterIuiv, NULL, 590), - NAME_FUNC_OFFSET(25317, glGetTransformFeedbackVarying, glGetTransformFeedbackVarying, NULL, 591), - NAME_FUNC_OFFSET(25350, glGetUniformuiv, glGetUniformuiv, NULL, 592), - NAME_FUNC_OFFSET(25369, glGetVertexAttribIiv, glGetVertexAttribIiv, NULL, 593), - NAME_FUNC_OFFSET(25393, glGetVertexAttribIuiv, glGetVertexAttribIuiv, NULL, 594), - NAME_FUNC_OFFSET(25418, glIsEnabledi, glIsEnabledi, NULL, 595), - NAME_FUNC_OFFSET(25440, glTexParameterIiv, glTexParameterIiv, NULL, 596), - NAME_FUNC_OFFSET(25461, glTexParameterIuiv, glTexParameterIuiv, NULL, 597), - NAME_FUNC_OFFSET(25483, glTransformFeedbackVaryings, glTransformFeedbackVaryings, NULL, 598), - NAME_FUNC_OFFSET(25514, glUniform1ui, glUniform1ui, NULL, 599), - NAME_FUNC_OFFSET(25530, glUniform1uiv, glUniform1uiv, NULL, 600), - NAME_FUNC_OFFSET(25547, glUniform2ui, glUniform2ui, NULL, 601), - NAME_FUNC_OFFSET(25563, glUniform2uiv, glUniform2uiv, NULL, 602), - NAME_FUNC_OFFSET(25580, glUniform3ui, glUniform3ui, NULL, 603), - NAME_FUNC_OFFSET(25596, glUniform3uiv, glUniform3uiv, NULL, 604), - NAME_FUNC_OFFSET(25613, glUniform4ui, glUniform4ui, NULL, 605), - NAME_FUNC_OFFSET(25629, glUniform4uiv, glUniform4uiv, NULL, 606), - NAME_FUNC_OFFSET(25646, glVertexAttribI1iv, glVertexAttribI1iv, NULL, 607), - NAME_FUNC_OFFSET(25668, glVertexAttribI1uiv, glVertexAttribI1uiv, NULL, 608), - NAME_FUNC_OFFSET(25691, glVertexAttribI4bv, glVertexAttribI4bv, NULL, 609), - NAME_FUNC_OFFSET(25713, glVertexAttribI4sv, glVertexAttribI4sv, NULL, 610), - NAME_FUNC_OFFSET(25735, glVertexAttribI4ubv, glVertexAttribI4ubv, NULL, 611), - NAME_FUNC_OFFSET(25758, glVertexAttribI4usv, glVertexAttribI4usv, NULL, 612), - NAME_FUNC_OFFSET(25781, glVertexAttribIPointer, glVertexAttribIPointer, NULL, 613), - NAME_FUNC_OFFSET(25807, glPrimitiveRestartIndex, glPrimitiveRestartIndex, NULL, 614), - NAME_FUNC_OFFSET(25833, glTexBuffer, glTexBuffer, NULL, 615), - NAME_FUNC_OFFSET(25848, glFramebufferTexture, glFramebufferTexture, NULL, 616), - NAME_FUNC_OFFSET(25872, glVertexAttribDivisor, glVertexAttribDivisor, NULL, 619), - NAME_FUNC_OFFSET(25897, glMinSampleShading, glMinSampleShading, NULL, 620), - NAME_FUNC_OFFSET(25919, glBindProgramARB, glBindProgramARB, NULL, 621), - NAME_FUNC_OFFSET(25935, glDeleteProgramsARB, glDeleteProgramsARB, NULL, 622), - NAME_FUNC_OFFSET(25954, glGenProgramsARB, glGenProgramsARB, NULL, 623), - NAME_FUNC_OFFSET(25970, glIsProgramARB, glIsProgramARB, NULL, 630), - NAME_FUNC_OFFSET(25984, glProgramEnvParameter4dARB, glProgramEnvParameter4dARB, NULL, 631), - NAME_FUNC_OFFSET(26007, glProgramEnvParameter4dvARB, glProgramEnvParameter4dvARB, NULL, 632), - NAME_FUNC_OFFSET(26031, glProgramEnvParameter4fARB, glProgramEnvParameter4fARB, NULL, 633), - NAME_FUNC_OFFSET(26054, glProgramEnvParameter4fvARB, glProgramEnvParameter4fvARB, NULL, 634), - NAME_FUNC_OFFSET(26078, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, 640), - NAME_FUNC_OFFSET(26095, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL, 641), - NAME_FUNC_OFFSET(26113, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, 642), - NAME_FUNC_OFFSET(26130, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL, 643), - NAME_FUNC_OFFSET(26148, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, 644), - NAME_FUNC_OFFSET(26165, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL, 645), - NAME_FUNC_OFFSET(26183, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, 646), - NAME_FUNC_OFFSET(26200, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL, 647), - NAME_FUNC_OFFSET(26218, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 658), - NAME_FUNC_OFFSET(26243, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 658), - NAME_FUNC_OFFSET(26265, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 659), - NAME_FUNC_OFFSET(26292, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 659), - NAME_FUNC_OFFSET(26316, glBindFramebuffer, glBindFramebuffer, NULL, 660), - NAME_FUNC_OFFSET(26337, glBindRenderbuffer, glBindRenderbuffer, NULL, 661), - NAME_FUNC_OFFSET(26359, glBlitFramebuffer, glBlitFramebuffer, NULL, 662), - NAME_FUNC_OFFSET(26380, glCheckFramebufferStatus, glCheckFramebufferStatus, NULL, 663), - NAME_FUNC_OFFSET(26408, glCheckFramebufferStatus, glCheckFramebufferStatus, NULL, 663), - NAME_FUNC_OFFSET(26436, glDeleteFramebuffers, glDeleteFramebuffers, NULL, 664), - NAME_FUNC_OFFSET(26460, glDeleteFramebuffers, glDeleteFramebuffers, NULL, 664), - NAME_FUNC_OFFSET(26484, glDeleteRenderbuffers, glDeleteRenderbuffers, NULL, 665), - NAME_FUNC_OFFSET(26509, glDeleteRenderbuffers, glDeleteRenderbuffers, NULL, 665), - NAME_FUNC_OFFSET(26534, glFramebufferRenderbuffer, glFramebufferRenderbuffer, NULL, 666), - NAME_FUNC_OFFSET(26563, glFramebufferRenderbuffer, glFramebufferRenderbuffer, NULL, 666), - NAME_FUNC_OFFSET(26592, glFramebufferTexture1D, glFramebufferTexture1D, NULL, 667), - NAME_FUNC_OFFSET(26618, glFramebufferTexture2D, glFramebufferTexture2D, NULL, 668), - NAME_FUNC_OFFSET(26644, glFramebufferTexture2D, glFramebufferTexture2D, NULL, 668), - NAME_FUNC_OFFSET(26670, glFramebufferTexture3D, glFramebufferTexture3D, NULL, 669), - NAME_FUNC_OFFSET(26696, glFramebufferTexture3D, glFramebufferTexture3D, NULL, 669), - NAME_FUNC_OFFSET(26722, glFramebufferTextureLayer, glFramebufferTextureLayer, NULL, 670), - NAME_FUNC_OFFSET(26751, glFramebufferTextureLayer, glFramebufferTextureLayer, NULL, 670), - NAME_FUNC_OFFSET(26780, glGenFramebuffers, glGenFramebuffers, NULL, 671), - NAME_FUNC_OFFSET(26801, glGenFramebuffers, glGenFramebuffers, NULL, 671), - NAME_FUNC_OFFSET(26822, glGenRenderbuffers, glGenRenderbuffers, NULL, 672), - NAME_FUNC_OFFSET(26844, glGenRenderbuffers, glGenRenderbuffers, NULL, 672), - NAME_FUNC_OFFSET(26866, glGenerateMipmap, glGenerateMipmap, NULL, 673), - NAME_FUNC_OFFSET(26886, glGenerateMipmap, glGenerateMipmap, NULL, 673), - NAME_FUNC_OFFSET(26906, glGetFramebufferAttachmentParameteriv, glGetFramebufferAttachmentParameteriv, NULL, 674), - NAME_FUNC_OFFSET(26947, glGetFramebufferAttachmentParameteriv, glGetFramebufferAttachmentParameteriv, NULL, 674), - NAME_FUNC_OFFSET(26988, glGetRenderbufferParameteriv, glGetRenderbufferParameteriv, NULL, 675), - NAME_FUNC_OFFSET(27020, glGetRenderbufferParameteriv, glGetRenderbufferParameteriv, NULL, 675), - NAME_FUNC_OFFSET(27052, glIsFramebuffer, glIsFramebuffer, NULL, 676), - NAME_FUNC_OFFSET(27071, glIsFramebuffer, glIsFramebuffer, NULL, 676), - NAME_FUNC_OFFSET(27090, glIsRenderbuffer, glIsRenderbuffer, NULL, 677), - NAME_FUNC_OFFSET(27110, glIsRenderbuffer, glIsRenderbuffer, NULL, 677), - NAME_FUNC_OFFSET(27130, glRenderbufferStorage, glRenderbufferStorage, NULL, 678), - NAME_FUNC_OFFSET(27155, glRenderbufferStorage, glRenderbufferStorage, NULL, 678), - NAME_FUNC_OFFSET(27180, glRenderbufferStorageMultisample, glRenderbufferStorageMultisample, NULL, 679), - NAME_FUNC_OFFSET(27216, glFlushMappedBufferRange, glFlushMappedBufferRange, NULL, 681), - NAME_FUNC_OFFSET(27244, glMapBufferRange, glMapBufferRange, NULL, 682), - NAME_FUNC_OFFSET(27264, glBindVertexArray, glBindVertexArray, NULL, 683), - NAME_FUNC_OFFSET(27285, glDeleteVertexArrays, glDeleteVertexArrays, NULL, 684), - NAME_FUNC_OFFSET(27311, glDeleteVertexArrays, glDeleteVertexArrays, NULL, 684), - NAME_FUNC_OFFSET(27335, glGenVertexArrays, glGenVertexArrays, NULL, 685), - NAME_FUNC_OFFSET(27356, glIsVertexArray, glIsVertexArray, NULL, 686), - NAME_FUNC_OFFSET(27377, glIsVertexArray, glIsVertexArray, NULL, 686), - NAME_FUNC_OFFSET(27396, glProvokingVertex, glProvokingVertex, NULL, 706), - NAME_FUNC_OFFSET(27417, glBlendEquationSeparateiARB, glBlendEquationSeparateiARB, NULL, 711), - NAME_FUNC_OFFSET(27451, glBlendEquationiARB, glBlendEquationiARB, NULL, 712), - NAME_FUNC_OFFSET(27477, glBlendFuncSeparateiARB, glBlendFuncSeparateiARB, NULL, 713), - NAME_FUNC_OFFSET(27507, glBlendFunciARB, glBlendFunciARB, NULL, 714), - NAME_FUNC_OFFSET(27529, gl_dispatch_stub_731, gl_dispatch_stub_731, NULL, 731), - NAME_FUNC_OFFSET(27553, gl_dispatch_stub_732, gl_dispatch_stub_732, NULL, 732), - NAME_FUNC_OFFSET(27578, glClearDepthf, glClearDepthf, NULL, 785), - NAME_FUNC_OFFSET(27595, glDepthRangef, glDepthRangef, NULL, 786), - NAME_FUNC_OFFSET(27612, glGetProgramBinary, glGetProgramBinary, NULL, 790), - NAME_FUNC_OFFSET(27634, glProgramBinary, glProgramBinary, NULL, 791), - NAME_FUNC_OFFSET(27653, glProgramParameteri, glProgramParameteri, NULL, 792), - NAME_FUNC_OFFSET(27676, gl_dispatch_stub_875, gl_dispatch_stub_875, NULL, 875), - NAME_FUNC_OFFSET(27692, gl_dispatch_stub_876, gl_dispatch_stub_876, NULL, 876), - NAME_FUNC_OFFSET(27711, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, 896), - NAME_FUNC_OFFSET(27730, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, 897), - NAME_FUNC_OFFSET(27750, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, 898), - NAME_FUNC_OFFSET(27770, glFogCoordfEXT, glFogCoordfEXT, NULL, 899), - NAME_FUNC_OFFSET(27782, glFogCoordfvEXT, glFogCoordfvEXT, NULL, 900), - NAME_FUNC_OFFSET(27795, glVertexAttribI1iEXT, glVertexAttribI1iEXT, NULL, 1003), - NAME_FUNC_OFFSET(27813, glVertexAttribI1uiEXT, glVertexAttribI1uiEXT, NULL, 1004), - NAME_FUNC_OFFSET(27832, glVertexAttribI2iEXT, glVertexAttribI2iEXT, NULL, 1005), - NAME_FUNC_OFFSET(27850, glVertexAttribI2ivEXT, glVertexAttribI2ivEXT, NULL, 1006), - NAME_FUNC_OFFSET(27869, glVertexAttribI2uiEXT, glVertexAttribI2uiEXT, NULL, 1007), - NAME_FUNC_OFFSET(27888, glVertexAttribI2uivEXT, glVertexAttribI2uivEXT, NULL, 1008), - NAME_FUNC_OFFSET(27908, glVertexAttribI3iEXT, glVertexAttribI3iEXT, NULL, 1009), - NAME_FUNC_OFFSET(27926, glVertexAttribI3ivEXT, glVertexAttribI3ivEXT, NULL, 1010), - NAME_FUNC_OFFSET(27945, glVertexAttribI3uiEXT, glVertexAttribI3uiEXT, NULL, 1011), - NAME_FUNC_OFFSET(27964, glVertexAttribI3uivEXT, glVertexAttribI3uivEXT, NULL, 1012), - NAME_FUNC_OFFSET(27984, glVertexAttribI4iEXT, glVertexAttribI4iEXT, NULL, 1013), - NAME_FUNC_OFFSET(28002, glVertexAttribI4ivEXT, glVertexAttribI4ivEXT, NULL, 1014), - NAME_FUNC_OFFSET(28021, glVertexAttribI4uiEXT, glVertexAttribI4uiEXT, NULL, 1015), - NAME_FUNC_OFFSET(28040, glVertexAttribI4uivEXT, glVertexAttribI4uivEXT, NULL, 1016), - NAME_FUNC_OFFSET(28060, gl_dispatch_stub_1053, gl_dispatch_stub_1053, NULL, 1053), - NAME_FUNC_OFFSET(28076, gl_dispatch_stub_1054, gl_dispatch_stub_1054, NULL, 1054), - NAME_FUNC_OFFSET(28093, gl_dispatch_stub_1055, gl_dispatch_stub_1055, NULL, 1055), - NAME_FUNC_OFFSET(28110, gl_dispatch_stub_1056, gl_dispatch_stub_1056, NULL, 1056), - NAME_FUNC_OFFSET(28123, gl_dispatch_stub_1057, gl_dispatch_stub_1057, NULL, 1057), - NAME_FUNC_OFFSET(28140, gl_dispatch_stub_1058, gl_dispatch_stub_1058, NULL, 1058), - NAME_FUNC_OFFSET(28150, gl_dispatch_stub_1059, gl_dispatch_stub_1059, NULL, 1059), - NAME_FUNC_OFFSET(28161, gl_dispatch_stub_1060, gl_dispatch_stub_1060, NULL, 1060), - NAME_FUNC_OFFSET(28175, gl_dispatch_stub_1061, gl_dispatch_stub_1061, NULL, 1061), - NAME_FUNC_OFFSET(28189, gl_dispatch_stub_1062, gl_dispatch_stub_1062, NULL, 1062), - NAME_FUNC_OFFSET(28206, gl_dispatch_stub_1063, gl_dispatch_stub_1063, NULL, 1063), - NAME_FUNC_OFFSET(28224, gl_dispatch_stub_1064, gl_dispatch_stub_1064, NULL, 1064), - NAME_FUNC_OFFSET(28236, gl_dispatch_stub_1065, gl_dispatch_stub_1065, NULL, 1065), - NAME_FUNC_OFFSET(28249, gl_dispatch_stub_1066, gl_dispatch_stub_1066, NULL, 1066), - NAME_FUNC_OFFSET(28265, gl_dispatch_stub_1067, gl_dispatch_stub_1067, NULL, 1067), - NAME_FUNC_OFFSET(28282, gl_dispatch_stub_1068, gl_dispatch_stub_1068, NULL, 1068), - NAME_FUNC_OFFSET(28297, gl_dispatch_stub_1069, gl_dispatch_stub_1069, NULL, 1069), - NAME_FUNC_OFFSET(28313, gl_dispatch_stub_1070, gl_dispatch_stub_1070, NULL, 1070), - NAME_FUNC_OFFSET(28330, gl_dispatch_stub_1071, gl_dispatch_stub_1071, NULL, 1071), - NAME_FUNC_OFFSET(28351, gl_dispatch_stub_1072, gl_dispatch_stub_1072, NULL, 1072), - NAME_FUNC_OFFSET(28365, gl_dispatch_stub_1073, gl_dispatch_stub_1073, NULL, 1073), - NAME_FUNC_OFFSET(28377, gl_dispatch_stub_1074, gl_dispatch_stub_1074, NULL, 1074), - NAME_FUNC_OFFSET(28389, gl_dispatch_stub_1075, gl_dispatch_stub_1075, NULL, 1075), - NAME_FUNC_OFFSET(28405, gl_dispatch_stub_1076, gl_dispatch_stub_1076, NULL, 1076), - NAME_FUNC_OFFSET(28425, gl_dispatch_stub_1077, gl_dispatch_stub_1077, NULL, 1077), - NAME_FUNC_OFFSET(28438, gl_dispatch_stub_1078, gl_dispatch_stub_1078, NULL, 1078), - NAME_FUNC_OFFSET(28459, gl_dispatch_stub_1079, gl_dispatch_stub_1079, NULL, 1079), - NAME_FUNC_OFFSET(28471, gl_dispatch_stub_1080, gl_dispatch_stub_1080, NULL, 1080), - NAME_FUNC_OFFSET(28484, gl_dispatch_stub_1081, gl_dispatch_stub_1081, NULL, 1081), - NAME_FUNC_OFFSET(28498, gl_dispatch_stub_1082, gl_dispatch_stub_1082, NULL, 1082), - NAME_FUNC_OFFSET(28517, gl_dispatch_stub_1083, gl_dispatch_stub_1083, NULL, 1083), - NAME_FUNC_OFFSET(28533, gl_dispatch_stub_1084, gl_dispatch_stub_1084, NULL, 1084), - NAME_FUNC_OFFSET(28549, gl_dispatch_stub_1085, gl_dispatch_stub_1085, NULL, 1085), - NAME_FUNC_OFFSET(28565, gl_dispatch_stub_1086, gl_dispatch_stub_1086, NULL, 1086), - NAME_FUNC_OFFSET(28584, gl_dispatch_stub_1087, gl_dispatch_stub_1087, NULL, 1087), - NAME_FUNC_OFFSET(28603, gl_dispatch_stub_1088, gl_dispatch_stub_1088, NULL, 1088), - NAME_FUNC_OFFSET(28618, gl_dispatch_stub_1089, gl_dispatch_stub_1089, NULL, 1089), - NAME_FUNC_OFFSET(28634, gl_dispatch_stub_1090, gl_dispatch_stub_1090, NULL, 1090), - NAME_FUNC_OFFSET(28653, gl_dispatch_stub_1091, gl_dispatch_stub_1091, NULL, 1091), - NAME_FUNC_OFFSET(28670, gl_dispatch_stub_1092, gl_dispatch_stub_1092, NULL, 1092), - NAME_FUNC_OFFSET(28693, gl_dispatch_stub_1093, gl_dispatch_stub_1093, NULL, 1093), - NAME_FUNC_OFFSET(28714, gl_dispatch_stub_1094, gl_dispatch_stub_1094, NULL, 1094), - NAME_FUNC_OFFSET(28736, gl_dispatch_stub_1095, gl_dispatch_stub_1095, NULL, 1095), + NAME_FUNC_OFFSET(14448, glBufferStorage, glBufferStorage, NULL, 858), + NAME_FUNC_OFFSET(14464, glInvalidateBufferData, glInvalidateBufferData, NULL, 859), + NAME_FUNC_OFFSET(14487, glInvalidateBufferSubData, glInvalidateBufferSubData, NULL, 860), + NAME_FUNC_OFFSET(14513, glInvalidateFramebuffer, glInvalidateFramebuffer, NULL, 861), + NAME_FUNC_OFFSET(14537, glInvalidateSubFramebuffer, glInvalidateSubFramebuffer, NULL, 862), + NAME_FUNC_OFFSET(14564, glInvalidateTexImage, glInvalidateTexImage, NULL, 863), + NAME_FUNC_OFFSET(14585, glInvalidateTexSubImage, glInvalidateTexSubImage, NULL, 864), + NAME_FUNC_OFFSET(14609, glPolygonOffsetEXT, glPolygonOffsetEXT, NULL, 865), + NAME_FUNC_OFFSET(14628, gl_dispatch_stub_866, gl_dispatch_stub_866, NULL, 866), + NAME_FUNC_OFFSET(14642, gl_dispatch_stub_867, gl_dispatch_stub_867, NULL, 867), + NAME_FUNC_OFFSET(14657, gl_dispatch_stub_868, gl_dispatch_stub_868, NULL, 868), + NAME_FUNC_OFFSET(14671, gl_dispatch_stub_869, gl_dispatch_stub_869, NULL, 869), + NAME_FUNC_OFFSET(14686, gl_dispatch_stub_870, gl_dispatch_stub_870, NULL, 870), + NAME_FUNC_OFFSET(14700, gl_dispatch_stub_871, gl_dispatch_stub_871, NULL, 871), + NAME_FUNC_OFFSET(14715, gl_dispatch_stub_872, gl_dispatch_stub_872, NULL, 872), + NAME_FUNC_OFFSET(14729, gl_dispatch_stub_873, gl_dispatch_stub_873, NULL, 873), + NAME_FUNC_OFFSET(14744, gl_dispatch_stub_874, gl_dispatch_stub_874, NULL, 874), + NAME_FUNC_OFFSET(14766, gl_dispatch_stub_875, gl_dispatch_stub_875, NULL, 875), + NAME_FUNC_OFFSET(14784, gl_dispatch_stub_876, gl_dispatch_stub_876, NULL, 876), + NAME_FUNC_OFFSET(14801, gl_dispatch_stub_877, gl_dispatch_stub_877, NULL, 877), + NAME_FUNC_OFFSET(14821, glColorPointerEXT, glColorPointerEXT, NULL, 878), + NAME_FUNC_OFFSET(14839, glEdgeFlagPointerEXT, glEdgeFlagPointerEXT, NULL, 879), + NAME_FUNC_OFFSET(14860, glIndexPointerEXT, glIndexPointerEXT, NULL, 880), + NAME_FUNC_OFFSET(14878, glNormalPointerEXT, glNormalPointerEXT, NULL, 881), + NAME_FUNC_OFFSET(14897, glTexCoordPointerEXT, glTexCoordPointerEXT, NULL, 882), + NAME_FUNC_OFFSET(14918, glVertexPointerEXT, glVertexPointerEXT, NULL, 883), + NAME_FUNC_OFFSET(14937, gl_dispatch_stub_884, gl_dispatch_stub_884, NULL, 884), + NAME_FUNC_OFFSET(14961, glActiveShaderProgram, glActiveShaderProgram, NULL, 885), + NAME_FUNC_OFFSET(14983, glBindProgramPipeline, glBindProgramPipeline, NULL, 886), + NAME_FUNC_OFFSET(15005, glCreateShaderProgramv, glCreateShaderProgramv, NULL, 887), + NAME_FUNC_OFFSET(15028, glDeleteProgramPipelines, glDeleteProgramPipelines, NULL, 888), + NAME_FUNC_OFFSET(15053, glGenProgramPipelines, glGenProgramPipelines, NULL, 889), + NAME_FUNC_OFFSET(15075, glGetProgramPipelineInfoLog, glGetProgramPipelineInfoLog, NULL, 890), + NAME_FUNC_OFFSET(15103, glGetProgramPipelineiv, glGetProgramPipelineiv, NULL, 891), + NAME_FUNC_OFFSET(15126, glIsProgramPipeline, glIsProgramPipeline, NULL, 892), + NAME_FUNC_OFFSET(15146, glLockArraysEXT, glLockArraysEXT, NULL, 893), + NAME_FUNC_OFFSET(15162, glProgramUniform1f, glProgramUniform1f, NULL, 894), + NAME_FUNC_OFFSET(15181, glProgramUniform1fv, glProgramUniform1fv, NULL, 895), + NAME_FUNC_OFFSET(15201, glProgramUniform1i, glProgramUniform1i, NULL, 896), + NAME_FUNC_OFFSET(15220, glProgramUniform1iv, glProgramUniform1iv, NULL, 897), + NAME_FUNC_OFFSET(15240, glProgramUniform1ui, glProgramUniform1ui, NULL, 898), + NAME_FUNC_OFFSET(15260, glProgramUniform1uiv, glProgramUniform1uiv, NULL, 899), + NAME_FUNC_OFFSET(15281, glProgramUniform2f, glProgramUniform2f, NULL, 900), + NAME_FUNC_OFFSET(15300, glProgramUniform2fv, glProgramUniform2fv, NULL, 901), + NAME_FUNC_OFFSET(15320, glProgramUniform2i, glProgramUniform2i, NULL, 902), + NAME_FUNC_OFFSET(15339, glProgramUniform2iv, glProgramUniform2iv, NULL, 903), + NAME_FUNC_OFFSET(15359, glProgramUniform2ui, glProgramUniform2ui, NULL, 904), + NAME_FUNC_OFFSET(15379, glProgramUniform2uiv, glProgramUniform2uiv, NULL, 905), + NAME_FUNC_OFFSET(15400, glProgramUniform3f, glProgramUniform3f, NULL, 906), + NAME_FUNC_OFFSET(15419, glProgramUniform3fv, glProgramUniform3fv, NULL, 907), + NAME_FUNC_OFFSET(15439, glProgramUniform3i, glProgramUniform3i, NULL, 908), + NAME_FUNC_OFFSET(15458, glProgramUniform3iv, glProgramUniform3iv, NULL, 909), + NAME_FUNC_OFFSET(15478, glProgramUniform3ui, glProgramUniform3ui, NULL, 910), + NAME_FUNC_OFFSET(15498, glProgramUniform3uiv, glProgramUniform3uiv, NULL, 911), + NAME_FUNC_OFFSET(15519, glProgramUniform4f, glProgramUniform4f, NULL, 912), + NAME_FUNC_OFFSET(15538, glProgramUniform4fv, glProgramUniform4fv, NULL, 913), + NAME_FUNC_OFFSET(15558, glProgramUniform4i, glProgramUniform4i, NULL, 914), + NAME_FUNC_OFFSET(15577, glProgramUniform4iv, glProgramUniform4iv, NULL, 915), + NAME_FUNC_OFFSET(15597, glProgramUniform4ui, glProgramUniform4ui, NULL, 916), + NAME_FUNC_OFFSET(15617, glProgramUniform4uiv, glProgramUniform4uiv, NULL, 917), + NAME_FUNC_OFFSET(15638, glProgramUniformMatrix2fv, glProgramUniformMatrix2fv, NULL, 918), + NAME_FUNC_OFFSET(15664, glProgramUniformMatrix2x3fv, glProgramUniformMatrix2x3fv, NULL, 919), + NAME_FUNC_OFFSET(15692, glProgramUniformMatrix2x4fv, glProgramUniformMatrix2x4fv, NULL, 920), + NAME_FUNC_OFFSET(15720, glProgramUniformMatrix3fv, glProgramUniformMatrix3fv, NULL, 921), + NAME_FUNC_OFFSET(15746, glProgramUniformMatrix3x2fv, glProgramUniformMatrix3x2fv, NULL, 922), + NAME_FUNC_OFFSET(15774, glProgramUniformMatrix3x4fv, glProgramUniformMatrix3x4fv, NULL, 923), + NAME_FUNC_OFFSET(15802, glProgramUniformMatrix4fv, glProgramUniformMatrix4fv, NULL, 924), + NAME_FUNC_OFFSET(15828, glProgramUniformMatrix4x2fv, glProgramUniformMatrix4x2fv, NULL, 925), + NAME_FUNC_OFFSET(15856, glProgramUniformMatrix4x3fv, glProgramUniformMatrix4x3fv, NULL, 926), + NAME_FUNC_OFFSET(15884, glUnlockArraysEXT, glUnlockArraysEXT, NULL, 927), + NAME_FUNC_OFFSET(15902, glUseProgramStages, glUseProgramStages, NULL, 928), + NAME_FUNC_OFFSET(15921, glValidateProgramPipeline, glValidateProgramPipeline, NULL, 929), + NAME_FUNC_OFFSET(15947, glDebugMessageCallback, glDebugMessageCallback, NULL, 930), + NAME_FUNC_OFFSET(15970, glDebugMessageControl, glDebugMessageControl, NULL, 931), + NAME_FUNC_OFFSET(15992, glDebugMessageInsert, glDebugMessageInsert, NULL, 932), + NAME_FUNC_OFFSET(16013, glGetDebugMessageLog, glGetDebugMessageLog, NULL, 933), + NAME_FUNC_OFFSET(16034, glGetObjectLabel, glGetObjectLabel, NULL, 934), + NAME_FUNC_OFFSET(16051, glGetObjectPtrLabel, glGetObjectPtrLabel, NULL, 935), + NAME_FUNC_OFFSET(16071, glObjectLabel, glObjectLabel, NULL, 936), + NAME_FUNC_OFFSET(16085, glObjectPtrLabel, glObjectPtrLabel, NULL, 937), + NAME_FUNC_OFFSET(16102, glPopDebugGroup, glPopDebugGroup, NULL, 938), + NAME_FUNC_OFFSET(16118, glPushDebugGroup, glPushDebugGroup, NULL, 939), + NAME_FUNC_OFFSET(16135, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, 940), + NAME_FUNC_OFFSET(16157, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, 941), + NAME_FUNC_OFFSET(16180, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, 942), + NAME_FUNC_OFFSET(16203, glFogCoordfEXT, glFogCoordfEXT, NULL, 943), + NAME_FUNC_OFFSET(16218, glFogCoordfvEXT, glFogCoordfvEXT, NULL, 944), + NAME_FUNC_OFFSET(16234, glResizeBuffersMESA, glResizeBuffersMESA, NULL, 945), + NAME_FUNC_OFFSET(16254, glWindowPos4dMESA, glWindowPos4dMESA, NULL, 946), + NAME_FUNC_OFFSET(16272, glWindowPos4dvMESA, glWindowPos4dvMESA, NULL, 947), + NAME_FUNC_OFFSET(16291, glWindowPos4fMESA, glWindowPos4fMESA, NULL, 948), + NAME_FUNC_OFFSET(16309, glWindowPos4fvMESA, glWindowPos4fvMESA, NULL, 949), + NAME_FUNC_OFFSET(16328, glWindowPos4iMESA, glWindowPos4iMESA, NULL, 950), + NAME_FUNC_OFFSET(16346, glWindowPos4ivMESA, glWindowPos4ivMESA, NULL, 951), + NAME_FUNC_OFFSET(16365, glWindowPos4sMESA, glWindowPos4sMESA, NULL, 952), + NAME_FUNC_OFFSET(16383, glWindowPos4svMESA, glWindowPos4svMESA, NULL, 953), + NAME_FUNC_OFFSET(16402, gl_dispatch_stub_954, gl_dispatch_stub_954, NULL, 954), + NAME_FUNC_OFFSET(16427, gl_dispatch_stub_955, gl_dispatch_stub_955, NULL, 955), + NAME_FUNC_OFFSET(16454, glAreProgramsResidentNV, glAreProgramsResidentNV, NULL, 956), + NAME_FUNC_OFFSET(16478, glExecuteProgramNV, glExecuteProgramNV, NULL, 957), + NAME_FUNC_OFFSET(16497, glGetProgramParameterdvNV, glGetProgramParameterdvNV, NULL, 958), + NAME_FUNC_OFFSET(16523, glGetProgramParameterfvNV, glGetProgramParameterfvNV, NULL, 959), + NAME_FUNC_OFFSET(16549, glGetProgramStringNV, glGetProgramStringNV, NULL, 960), + NAME_FUNC_OFFSET(16570, glGetProgramivNV, glGetProgramivNV, NULL, 961), + NAME_FUNC_OFFSET(16587, glGetTrackMatrixivNV, glGetTrackMatrixivNV, NULL, 962), + NAME_FUNC_OFFSET(16608, glGetVertexAttribdvNV, glGetVertexAttribdvNV, NULL, 963), + NAME_FUNC_OFFSET(16630, glGetVertexAttribfvNV, glGetVertexAttribfvNV, NULL, 964), + NAME_FUNC_OFFSET(16652, glGetVertexAttribivNV, glGetVertexAttribivNV, NULL, 965), + NAME_FUNC_OFFSET(16674, glLoadProgramNV, glLoadProgramNV, NULL, 966), + NAME_FUNC_OFFSET(16690, glProgramParameters4dvNV, glProgramParameters4dvNV, NULL, 967), + NAME_FUNC_OFFSET(16715, glProgramParameters4fvNV, glProgramParameters4fvNV, NULL, 968), + NAME_FUNC_OFFSET(16740, glRequestResidentProgramsNV, glRequestResidentProgramsNV, NULL, 969), + NAME_FUNC_OFFSET(16768, glTrackMatrixNV, glTrackMatrixNV, NULL, 970), + NAME_FUNC_OFFSET(16784, glVertexAttrib1dNV, glVertexAttrib1dNV, NULL, 971), + NAME_FUNC_OFFSET(16803, glVertexAttrib1dvNV, glVertexAttrib1dvNV, NULL, 972), + NAME_FUNC_OFFSET(16823, glVertexAttrib1fNV, glVertexAttrib1fNV, NULL, 973), + NAME_FUNC_OFFSET(16842, glVertexAttrib1fvNV, glVertexAttrib1fvNV, NULL, 974), + NAME_FUNC_OFFSET(16862, glVertexAttrib1sNV, glVertexAttrib1sNV, NULL, 975), + NAME_FUNC_OFFSET(16881, glVertexAttrib1svNV, glVertexAttrib1svNV, NULL, 976), + NAME_FUNC_OFFSET(16901, glVertexAttrib2dNV, glVertexAttrib2dNV, NULL, 977), + NAME_FUNC_OFFSET(16920, glVertexAttrib2dvNV, glVertexAttrib2dvNV, NULL, 978), + NAME_FUNC_OFFSET(16940, glVertexAttrib2fNV, glVertexAttrib2fNV, NULL, 979), + NAME_FUNC_OFFSET(16959, glVertexAttrib2fvNV, glVertexAttrib2fvNV, NULL, 980), + NAME_FUNC_OFFSET(16979, glVertexAttrib2sNV, glVertexAttrib2sNV, NULL, 981), + NAME_FUNC_OFFSET(16998, glVertexAttrib2svNV, glVertexAttrib2svNV, NULL, 982), + NAME_FUNC_OFFSET(17018, glVertexAttrib3dNV, glVertexAttrib3dNV, NULL, 983), + NAME_FUNC_OFFSET(17037, glVertexAttrib3dvNV, glVertexAttrib3dvNV, NULL, 984), + NAME_FUNC_OFFSET(17057, glVertexAttrib3fNV, glVertexAttrib3fNV, NULL, 985), + NAME_FUNC_OFFSET(17076, glVertexAttrib3fvNV, glVertexAttrib3fvNV, NULL, 986), + NAME_FUNC_OFFSET(17096, glVertexAttrib3sNV, glVertexAttrib3sNV, NULL, 987), + NAME_FUNC_OFFSET(17115, glVertexAttrib3svNV, glVertexAttrib3svNV, NULL, 988), + NAME_FUNC_OFFSET(17135, glVertexAttrib4dNV, glVertexAttrib4dNV, NULL, 989), + NAME_FUNC_OFFSET(17154, glVertexAttrib4dvNV, glVertexAttrib4dvNV, NULL, 990), + NAME_FUNC_OFFSET(17174, glVertexAttrib4fNV, glVertexAttrib4fNV, NULL, 991), + NAME_FUNC_OFFSET(17193, glVertexAttrib4fvNV, glVertexAttrib4fvNV, NULL, 992), + NAME_FUNC_OFFSET(17213, glVertexAttrib4sNV, glVertexAttrib4sNV, NULL, 993), + NAME_FUNC_OFFSET(17232, glVertexAttrib4svNV, glVertexAttrib4svNV, NULL, 994), + NAME_FUNC_OFFSET(17252, glVertexAttrib4ubNV, glVertexAttrib4ubNV, NULL, 995), + NAME_FUNC_OFFSET(17272, glVertexAttrib4ubvNV, glVertexAttrib4ubvNV, NULL, 996), + NAME_FUNC_OFFSET(17293, glVertexAttribPointerNV, glVertexAttribPointerNV, NULL, 997), + NAME_FUNC_OFFSET(17317, glVertexAttribs1dvNV, glVertexAttribs1dvNV, NULL, 998), + NAME_FUNC_OFFSET(17338, glVertexAttribs1fvNV, glVertexAttribs1fvNV, NULL, 999), + NAME_FUNC_OFFSET(17359, glVertexAttribs1svNV, glVertexAttribs1svNV, NULL, 1000), + NAME_FUNC_OFFSET(17380, glVertexAttribs2dvNV, glVertexAttribs2dvNV, NULL, 1001), + NAME_FUNC_OFFSET(17401, glVertexAttribs2fvNV, glVertexAttribs2fvNV, NULL, 1002), + NAME_FUNC_OFFSET(17422, glVertexAttribs2svNV, glVertexAttribs2svNV, NULL, 1003), + NAME_FUNC_OFFSET(17443, glVertexAttribs3dvNV, glVertexAttribs3dvNV, NULL, 1004), + NAME_FUNC_OFFSET(17464, glVertexAttribs3fvNV, glVertexAttribs3fvNV, NULL, 1005), + NAME_FUNC_OFFSET(17485, glVertexAttribs3svNV, glVertexAttribs3svNV, NULL, 1006), + NAME_FUNC_OFFSET(17506, glVertexAttribs4dvNV, glVertexAttribs4dvNV, NULL, 1007), + NAME_FUNC_OFFSET(17527, glVertexAttribs4fvNV, glVertexAttribs4fvNV, NULL, 1008), + NAME_FUNC_OFFSET(17548, glVertexAttribs4svNV, glVertexAttribs4svNV, NULL, 1009), + NAME_FUNC_OFFSET(17569, glVertexAttribs4ubvNV, glVertexAttribs4ubvNV, NULL, 1010), + NAME_FUNC_OFFSET(17591, glGetTexBumpParameterfvATI, glGetTexBumpParameterfvATI, NULL, 1011), + NAME_FUNC_OFFSET(17618, glGetTexBumpParameterivATI, glGetTexBumpParameterivATI, NULL, 1012), + NAME_FUNC_OFFSET(17645, glTexBumpParameterfvATI, glTexBumpParameterfvATI, NULL, 1013), + NAME_FUNC_OFFSET(17669, glTexBumpParameterivATI, glTexBumpParameterivATI, NULL, 1014), + NAME_FUNC_OFFSET(17693, glAlphaFragmentOp1ATI, glAlphaFragmentOp1ATI, NULL, 1015), + NAME_FUNC_OFFSET(17715, glAlphaFragmentOp2ATI, glAlphaFragmentOp2ATI, NULL, 1016), + NAME_FUNC_OFFSET(17737, glAlphaFragmentOp3ATI, glAlphaFragmentOp3ATI, NULL, 1017), + NAME_FUNC_OFFSET(17759, glBeginFragmentShaderATI, glBeginFragmentShaderATI, NULL, 1018), + NAME_FUNC_OFFSET(17784, glBindFragmentShaderATI, glBindFragmentShaderATI, NULL, 1019), + NAME_FUNC_OFFSET(17808, glColorFragmentOp1ATI, glColorFragmentOp1ATI, NULL, 1020), + NAME_FUNC_OFFSET(17830, glColorFragmentOp2ATI, glColorFragmentOp2ATI, NULL, 1021), + NAME_FUNC_OFFSET(17852, glColorFragmentOp3ATI, glColorFragmentOp3ATI, NULL, 1022), + NAME_FUNC_OFFSET(17874, glDeleteFragmentShaderATI, glDeleteFragmentShaderATI, NULL, 1023), + NAME_FUNC_OFFSET(17900, glEndFragmentShaderATI, glEndFragmentShaderATI, NULL, 1024), + NAME_FUNC_OFFSET(17923, glGenFragmentShadersATI, glGenFragmentShadersATI, NULL, 1025), + NAME_FUNC_OFFSET(17947, glPassTexCoordATI, glPassTexCoordATI, NULL, 1026), + NAME_FUNC_OFFSET(17965, glSampleMapATI, glSampleMapATI, NULL, 1027), + NAME_FUNC_OFFSET(17980, glSetFragmentShaderConstantATI, glSetFragmentShaderConstantATI, NULL, 1028), + NAME_FUNC_OFFSET(18011, gl_dispatch_stub_1029, gl_dispatch_stub_1029, NULL, 1029), + NAME_FUNC_OFFSET(18034, gl_dispatch_stub_1030, gl_dispatch_stub_1030, NULL, 1030), + NAME_FUNC_OFFSET(18057, gl_dispatch_stub_1031, gl_dispatch_stub_1031, NULL, 1031), + NAME_FUNC_OFFSET(18080, glGetProgramNamedParameterdvNV, glGetProgramNamedParameterdvNV, NULL, 1032), + NAME_FUNC_OFFSET(18111, glGetProgramNamedParameterfvNV, glGetProgramNamedParameterfvNV, NULL, 1033), + NAME_FUNC_OFFSET(18142, glProgramNamedParameter4dNV, glProgramNamedParameter4dNV, NULL, 1034), + NAME_FUNC_OFFSET(18170, glProgramNamedParameter4dvNV, glProgramNamedParameter4dvNV, NULL, 1035), + NAME_FUNC_OFFSET(18199, glProgramNamedParameter4fNV, glProgramNamedParameter4fNV, NULL, 1036), + NAME_FUNC_OFFSET(18227, glProgramNamedParameter4fvNV, glProgramNamedParameter4fvNV, NULL, 1037), + NAME_FUNC_OFFSET(18256, glPrimitiveRestartNV, glPrimitiveRestartNV, NULL, 1038), + NAME_FUNC_OFFSET(18277, gl_dispatch_stub_1039, gl_dispatch_stub_1039, NULL, 1039), + NAME_FUNC_OFFSET(18294, gl_dispatch_stub_1040, gl_dispatch_stub_1040, NULL, 1040), + NAME_FUNC_OFFSET(18307, gl_dispatch_stub_1041, gl_dispatch_stub_1041, NULL, 1041), + NAME_FUNC_OFFSET(18321, gl_dispatch_stub_1042, gl_dispatch_stub_1042, NULL, 1042), + NAME_FUNC_OFFSET(18338, glBindFramebufferEXT, glBindFramebufferEXT, NULL, 1043), + NAME_FUNC_OFFSET(18359, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, 1044), + NAME_FUNC_OFFSET(18381, gl_dispatch_stub_1045, gl_dispatch_stub_1045, NULL, 1045), + NAME_FUNC_OFFSET(18405, gl_dispatch_stub_1046, gl_dispatch_stub_1046, NULL, 1046), + NAME_FUNC_OFFSET(18435, glVertexAttribI1iEXT, glVertexAttribI1iEXT, NULL, 1047), + NAME_FUNC_OFFSET(18456, glVertexAttribI1uiEXT, glVertexAttribI1uiEXT, NULL, 1048), + NAME_FUNC_OFFSET(18478, glVertexAttribI2iEXT, glVertexAttribI2iEXT, NULL, 1049), + NAME_FUNC_OFFSET(18499, glVertexAttribI2ivEXT, glVertexAttribI2ivEXT, NULL, 1050), + NAME_FUNC_OFFSET(18521, glVertexAttribI2uiEXT, glVertexAttribI2uiEXT, NULL, 1051), + NAME_FUNC_OFFSET(18543, glVertexAttribI2uivEXT, glVertexAttribI2uivEXT, NULL, 1052), + NAME_FUNC_OFFSET(18566, glVertexAttribI3iEXT, glVertexAttribI3iEXT, NULL, 1053), + NAME_FUNC_OFFSET(18587, glVertexAttribI3ivEXT, glVertexAttribI3ivEXT, NULL, 1054), + NAME_FUNC_OFFSET(18609, glVertexAttribI3uiEXT, glVertexAttribI3uiEXT, NULL, 1055), + NAME_FUNC_OFFSET(18631, glVertexAttribI3uivEXT, glVertexAttribI3uivEXT, NULL, 1056), + NAME_FUNC_OFFSET(18654, glVertexAttribI4iEXT, glVertexAttribI4iEXT, NULL, 1057), + NAME_FUNC_OFFSET(18675, glVertexAttribI4ivEXT, glVertexAttribI4ivEXT, NULL, 1058), + NAME_FUNC_OFFSET(18697, glVertexAttribI4uiEXT, glVertexAttribI4uiEXT, NULL, 1059), + NAME_FUNC_OFFSET(18719, glVertexAttribI4uivEXT, glVertexAttribI4uivEXT, NULL, 1060), + NAME_FUNC_OFFSET(18742, glClearColorIiEXT, glClearColorIiEXT, NULL, 1061), + NAME_FUNC_OFFSET(18760, glClearColorIuiEXT, glClearColorIuiEXT, NULL, 1062), + NAME_FUNC_OFFSET(18779, glBindBufferOffsetEXT, glBindBufferOffsetEXT, NULL, 1063), + NAME_FUNC_OFFSET(18801, glBeginPerfMonitorAMD, glBeginPerfMonitorAMD, NULL, 1064), + NAME_FUNC_OFFSET(18823, glDeletePerfMonitorsAMD, glDeletePerfMonitorsAMD, NULL, 1065), + NAME_FUNC_OFFSET(18847, glEndPerfMonitorAMD, glEndPerfMonitorAMD, NULL, 1066), + NAME_FUNC_OFFSET(18867, glGenPerfMonitorsAMD, glGenPerfMonitorsAMD, NULL, 1067), + NAME_FUNC_OFFSET(18888, glGetPerfMonitorCounterDataAMD, glGetPerfMonitorCounterDataAMD, NULL, 1068), + NAME_FUNC_OFFSET(18919, glGetPerfMonitorCounterInfoAMD, glGetPerfMonitorCounterInfoAMD, NULL, 1069), + NAME_FUNC_OFFSET(18950, glGetPerfMonitorCounterStringAMD, glGetPerfMonitorCounterStringAMD, NULL, 1070), + NAME_FUNC_OFFSET(18983, glGetPerfMonitorCountersAMD, glGetPerfMonitorCountersAMD, NULL, 1071), + NAME_FUNC_OFFSET(19011, glGetPerfMonitorGroupStringAMD, glGetPerfMonitorGroupStringAMD, NULL, 1072), + NAME_FUNC_OFFSET(19042, glGetPerfMonitorGroupsAMD, glGetPerfMonitorGroupsAMD, NULL, 1073), + NAME_FUNC_OFFSET(19068, glSelectPerfMonitorCountersAMD, glSelectPerfMonitorCountersAMD, NULL, 1074), + NAME_FUNC_OFFSET(19099, glGetObjectParameterivAPPLE, glGetObjectParameterivAPPLE, NULL, 1075), + NAME_FUNC_OFFSET(19127, glObjectPurgeableAPPLE, glObjectPurgeableAPPLE, NULL, 1076), + NAME_FUNC_OFFSET(19150, glObjectUnpurgeableAPPLE, glObjectUnpurgeableAPPLE, NULL, 1077), + NAME_FUNC_OFFSET(19175, glActiveProgramEXT, glActiveProgramEXT, NULL, 1078), + NAME_FUNC_OFFSET(19194, glCreateShaderProgramEXT, glCreateShaderProgramEXT, NULL, 1079), + NAME_FUNC_OFFSET(19219, glUseShaderProgramEXT, glUseShaderProgramEXT, NULL, 1080), + NAME_FUNC_OFFSET(19241, glTextureBarrierNV, glTextureBarrierNV, NULL, 1081), + NAME_FUNC_OFFSET(19260, glVDPAUFiniNV, glVDPAUFiniNV, NULL, 1082), + NAME_FUNC_OFFSET(19274, glVDPAUGetSurfaceivNV, glVDPAUGetSurfaceivNV, NULL, 1083), + NAME_FUNC_OFFSET(19296, glVDPAUInitNV, glVDPAUInitNV, NULL, 1084), + NAME_FUNC_OFFSET(19310, glVDPAUIsSurfaceNV, glVDPAUIsSurfaceNV, NULL, 1085), + NAME_FUNC_OFFSET(19329, glVDPAUMapSurfacesNV, glVDPAUMapSurfacesNV, NULL, 1086), + NAME_FUNC_OFFSET(19350, glVDPAURegisterOutputSurfaceNV, glVDPAURegisterOutputSurfaceNV, NULL, 1087), + NAME_FUNC_OFFSET(19381, glVDPAURegisterVideoSurfaceNV, glVDPAURegisterVideoSurfaceNV, NULL, 1088), + NAME_FUNC_OFFSET(19411, glVDPAUSurfaceAccessNV, glVDPAUSurfaceAccessNV, NULL, 1089), + NAME_FUNC_OFFSET(19434, glVDPAUUnmapSurfacesNV, glVDPAUUnmapSurfacesNV, NULL, 1090), + NAME_FUNC_OFFSET(19457, glVDPAUUnregisterSurfaceNV, glVDPAUUnregisterSurfaceNV, NULL, 1091), + NAME_FUNC_OFFSET(19484, gl_dispatch_stub_1092, gl_dispatch_stub_1092, NULL, 1092), + NAME_FUNC_OFFSET(19509, gl_dispatch_stub_1093, gl_dispatch_stub_1093, NULL, 1093), + NAME_FUNC_OFFSET(19538, gl_dispatch_stub_1094, gl_dispatch_stub_1094, NULL, 1094), + NAME_FUNC_OFFSET(19569, glEGLImageTargetRenderbufferStorageOES, glEGLImageTargetRenderbufferStorageOES, NULL, 1095), + NAME_FUNC_OFFSET(19608, glEGLImageTargetTexture2DOES, glEGLImageTargetTexture2DOES, NULL, 1096), + NAME_FUNC_OFFSET(19637, gl_dispatch_stub_1097, gl_dispatch_stub_1097, NULL, 1097), + NAME_FUNC_OFFSET(19650, gl_dispatch_stub_1098, gl_dispatch_stub_1098, NULL, 1098), + NAME_FUNC_OFFSET(19664, gl_dispatch_stub_1099, gl_dispatch_stub_1099, NULL, 1099), + NAME_FUNC_OFFSET(19678, gl_dispatch_stub_1100, gl_dispatch_stub_1100, NULL, 1100), + NAME_FUNC_OFFSET(19688, gl_dispatch_stub_1101, gl_dispatch_stub_1101, NULL, 1101), + NAME_FUNC_OFFSET(19702, gl_dispatch_stub_1102, gl_dispatch_stub_1102, NULL, 1102), + NAME_FUNC_OFFSET(19709, gl_dispatch_stub_1103, gl_dispatch_stub_1103, NULL, 1103), + NAME_FUNC_OFFSET(19717, gl_dispatch_stub_1104, gl_dispatch_stub_1104, NULL, 1104), + NAME_FUNC_OFFSET(19728, gl_dispatch_stub_1105, gl_dispatch_stub_1105, NULL, 1105), + NAME_FUNC_OFFSET(19739, gl_dispatch_stub_1106, gl_dispatch_stub_1106, NULL, 1106), + NAME_FUNC_OFFSET(19753, gl_dispatch_stub_1107, gl_dispatch_stub_1107, NULL, 1107), + NAME_FUNC_OFFSET(19768, gl_dispatch_stub_1108, gl_dispatch_stub_1108, NULL, 1108), + NAME_FUNC_OFFSET(19777, gl_dispatch_stub_1109, gl_dispatch_stub_1109, NULL, 1109), + NAME_FUNC_OFFSET(19787, gl_dispatch_stub_1110, gl_dispatch_stub_1110, NULL, 1110), + NAME_FUNC_OFFSET(19800, gl_dispatch_stub_1111, gl_dispatch_stub_1111, NULL, 1111), + NAME_FUNC_OFFSET(19814, gl_dispatch_stub_1112, gl_dispatch_stub_1112, NULL, 1112), + NAME_FUNC_OFFSET(19826, gl_dispatch_stub_1113, gl_dispatch_stub_1113, NULL, 1113), + NAME_FUNC_OFFSET(19839, gl_dispatch_stub_1114, gl_dispatch_stub_1114, NULL, 1114), + NAME_FUNC_OFFSET(19853, gl_dispatch_stub_1115, gl_dispatch_stub_1115, NULL, 1115), + NAME_FUNC_OFFSET(19871, gl_dispatch_stub_1116, gl_dispatch_stub_1116, NULL, 1116), + NAME_FUNC_OFFSET(19882, gl_dispatch_stub_1117, gl_dispatch_stub_1117, NULL, 1117), + NAME_FUNC_OFFSET(19891, gl_dispatch_stub_1118, gl_dispatch_stub_1118, NULL, 1118), + NAME_FUNC_OFFSET(19900, gl_dispatch_stub_1119, gl_dispatch_stub_1119, NULL, 1119), + NAME_FUNC_OFFSET(19913, gl_dispatch_stub_1120, gl_dispatch_stub_1120, NULL, 1120), + NAME_FUNC_OFFSET(19930, gl_dispatch_stub_1121, gl_dispatch_stub_1121, NULL, 1121), + NAME_FUNC_OFFSET(19940, gl_dispatch_stub_1122, gl_dispatch_stub_1122, NULL, 1122), + NAME_FUNC_OFFSET(19958, gl_dispatch_stub_1123, gl_dispatch_stub_1123, NULL, 1123), + NAME_FUNC_OFFSET(19967, gl_dispatch_stub_1124, gl_dispatch_stub_1124, NULL, 1124), + NAME_FUNC_OFFSET(19977, gl_dispatch_stub_1125, gl_dispatch_stub_1125, NULL, 1125), + NAME_FUNC_OFFSET(19988, gl_dispatch_stub_1126, gl_dispatch_stub_1126, NULL, 1126), + NAME_FUNC_OFFSET(20004, gl_dispatch_stub_1127, gl_dispatch_stub_1127, NULL, 1127), + NAME_FUNC_OFFSET(20017, gl_dispatch_stub_1128, gl_dispatch_stub_1128, NULL, 1128), + NAME_FUNC_OFFSET(20030, gl_dispatch_stub_1129, gl_dispatch_stub_1129, NULL, 1129), + NAME_FUNC_OFFSET(20043, gl_dispatch_stub_1130, gl_dispatch_stub_1130, NULL, 1130), + NAME_FUNC_OFFSET(20059, gl_dispatch_stub_1131, gl_dispatch_stub_1131, NULL, 1131), + NAME_FUNC_OFFSET(20075, gl_dispatch_stub_1132, gl_dispatch_stub_1132, NULL, 1132), + NAME_FUNC_OFFSET(20087, gl_dispatch_stub_1133, gl_dispatch_stub_1133, NULL, 1133), + NAME_FUNC_OFFSET(20100, gl_dispatch_stub_1134, gl_dispatch_stub_1134, NULL, 1134), + NAME_FUNC_OFFSET(20116, gl_dispatch_stub_1135, gl_dispatch_stub_1135, NULL, 1135), + NAME_FUNC_OFFSET(20130, gl_dispatch_stub_1136, gl_dispatch_stub_1136, NULL, 1136), + NAME_FUNC_OFFSET(20150, gl_dispatch_stub_1137, gl_dispatch_stub_1137, NULL, 1137), + NAME_FUNC_OFFSET(20168, gl_dispatch_stub_1138, gl_dispatch_stub_1138, NULL, 1138), + NAME_FUNC_OFFSET(20187, gl_dispatch_stub_1139, gl_dispatch_stub_1139, NULL, 1139), + NAME_FUNC_OFFSET(20204, glTexGenf, glTexGenf, NULL, 190), + NAME_FUNC_OFFSET(20217, glTexGenfv, glTexGenfv, NULL, 191), + NAME_FUNC_OFFSET(20231, glTexGeni, glTexGeni, NULL, 192), + NAME_FUNC_OFFSET(20244, glTexGeniv, glTexGeniv, NULL, 193), + NAME_FUNC_OFFSET(20258, glReadBuffer, glReadBuffer, NULL, 254), + NAME_FUNC_OFFSET(20273, glGetTexGenfv, glGetTexGenfv, NULL, 279), + NAME_FUNC_OFFSET(20290, glGetTexGeniv, glGetTexGeniv, NULL, 280), + NAME_FUNC_OFFSET(20307, glArrayElement, glArrayElement, NULL, 306), + NAME_FUNC_OFFSET(20325, glBindTexture, glBindTexture, NULL, 307), + NAME_FUNC_OFFSET(20342, glDrawArrays, glDrawArrays, NULL, 310), + NAME_FUNC_OFFSET(20358, glAreTexturesResident, glAreTexturesResidentEXT, glAreTexturesResidentEXT, 322), + NAME_FUNC_OFFSET(20383, glCopyTexImage1D, glCopyTexImage1D, NULL, 323), + NAME_FUNC_OFFSET(20403, glCopyTexImage2D, glCopyTexImage2D, NULL, 324), + NAME_FUNC_OFFSET(20423, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, 325), + NAME_FUNC_OFFSET(20446, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, 326), + NAME_FUNC_OFFSET(20469, glDeleteTextures, glDeleteTexturesEXT, glDeleteTexturesEXT, 327), + NAME_FUNC_OFFSET(20489, glGenTextures, glGenTexturesEXT, glGenTexturesEXT, 328), + NAME_FUNC_OFFSET(20506, glGetPointerv, glGetPointerv, NULL, 329), + NAME_FUNC_OFFSET(20523, glIsTexture, glIsTextureEXT, glIsTextureEXT, 330), + NAME_FUNC_OFFSET(20538, glPrioritizeTextures, glPrioritizeTextures, NULL, 331), + NAME_FUNC_OFFSET(20562, glTexSubImage1D, glTexSubImage1D, NULL, 332), + NAME_FUNC_OFFSET(20581, glTexSubImage2D, glTexSubImage2D, NULL, 333), + NAME_FUNC_OFFSET(20600, glBlendColor, glBlendColor, NULL, 336), + NAME_FUNC_OFFSET(20616, glBlendEquation, glBlendEquation, NULL, 337), + NAME_FUNC_OFFSET(20635, glBlendEquation, glBlendEquation, NULL, 337), + NAME_FUNC_OFFSET(20654, glDrawRangeElements, glDrawRangeElements, NULL, 338), + NAME_FUNC_OFFSET(20677, glColorTable, glColorTable, NULL, 339), + NAME_FUNC_OFFSET(20693, glColorTable, glColorTable, NULL, 339), + NAME_FUNC_OFFSET(20709, glColorTableParameterfv, glColorTableParameterfv, NULL, 340), + NAME_FUNC_OFFSET(20736, glColorTableParameteriv, glColorTableParameteriv, NULL, 341), + NAME_FUNC_OFFSET(20763, glCopyColorTable, glCopyColorTable, NULL, 342), + NAME_FUNC_OFFSET(20783, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, 343), + NAME_FUNC_OFFSET(20802, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, 343), + NAME_FUNC_OFFSET(20821, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, 344), + NAME_FUNC_OFFSET(20851, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, 344), + NAME_FUNC_OFFSET(20881, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, 345), + NAME_FUNC_OFFSET(20911, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, 345), + NAME_FUNC_OFFSET(20941, glColorSubTable, glColorSubTable, NULL, 346), + NAME_FUNC_OFFSET(20960, glCopyColorSubTable, glCopyColorSubTable, NULL, 347), + NAME_FUNC_OFFSET(20983, glConvolutionFilter1D, glConvolutionFilter1D, NULL, 348), + NAME_FUNC_OFFSET(21008, glConvolutionFilter2D, glConvolutionFilter2D, NULL, 349), + NAME_FUNC_OFFSET(21033, glConvolutionParameterf, glConvolutionParameterf, NULL, 350), + NAME_FUNC_OFFSET(21060, glConvolutionParameterfv, glConvolutionParameterfv, NULL, 351), + NAME_FUNC_OFFSET(21088, glConvolutionParameteri, glConvolutionParameteri, NULL, 352), + NAME_FUNC_OFFSET(21115, glConvolutionParameteriv, glConvolutionParameteriv, NULL, 353), + NAME_FUNC_OFFSET(21143, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D, NULL, 354), + NAME_FUNC_OFFSET(21172, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D, NULL, 355), + NAME_FUNC_OFFSET(21201, glGetConvolutionFilter, gl_dispatch_stub_356, gl_dispatch_stub_356, 356), + NAME_FUNC_OFFSET(21227, glGetConvolutionParameterfv, gl_dispatch_stub_357, gl_dispatch_stub_357, 357), + NAME_FUNC_OFFSET(21258, glGetConvolutionParameteriv, gl_dispatch_stub_358, gl_dispatch_stub_358, 358), + NAME_FUNC_OFFSET(21289, glGetSeparableFilter, gl_dispatch_stub_359, gl_dispatch_stub_359, 359), + NAME_FUNC_OFFSET(21313, glSeparableFilter2D, glSeparableFilter2D, NULL, 360), + NAME_FUNC_OFFSET(21336, glGetHistogram, gl_dispatch_stub_361, gl_dispatch_stub_361, 361), + NAME_FUNC_OFFSET(21354, glGetHistogramParameterfv, gl_dispatch_stub_362, gl_dispatch_stub_362, 362), + NAME_FUNC_OFFSET(21383, glGetHistogramParameteriv, gl_dispatch_stub_363, gl_dispatch_stub_363, 363), + NAME_FUNC_OFFSET(21412, glGetMinmax, gl_dispatch_stub_364, gl_dispatch_stub_364, 364), + NAME_FUNC_OFFSET(21427, glGetMinmaxParameterfv, gl_dispatch_stub_365, gl_dispatch_stub_365, 365), + NAME_FUNC_OFFSET(21453, glGetMinmaxParameteriv, gl_dispatch_stub_366, gl_dispatch_stub_366, 366), + NAME_FUNC_OFFSET(21479, glHistogram, glHistogram, NULL, 367), + NAME_FUNC_OFFSET(21494, glMinmax, glMinmax, NULL, 368), + NAME_FUNC_OFFSET(21506, glResetHistogram, glResetHistogram, NULL, 369), + NAME_FUNC_OFFSET(21526, glResetMinmax, glResetMinmax, NULL, 370), + NAME_FUNC_OFFSET(21543, glTexImage3D, glTexImage3D, NULL, 371), + NAME_FUNC_OFFSET(21559, glTexImage3D, glTexImage3D, NULL, 371), + NAME_FUNC_OFFSET(21575, glTexSubImage3D, glTexSubImage3D, NULL, 372), + NAME_FUNC_OFFSET(21594, glTexSubImage3D, glTexSubImage3D, NULL, 372), + NAME_FUNC_OFFSET(21613, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, 373), + NAME_FUNC_OFFSET(21636, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, 373), + NAME_FUNC_OFFSET(21659, glActiveTexture, glActiveTexture, NULL, 374), + NAME_FUNC_OFFSET(21678, glClientActiveTexture, glClientActiveTexture, NULL, 375), + NAME_FUNC_OFFSET(21703, glMultiTexCoord1d, glMultiTexCoord1d, NULL, 376), + NAME_FUNC_OFFSET(21724, glMultiTexCoord1dv, glMultiTexCoord1dv, NULL, 377), + NAME_FUNC_OFFSET(21746, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL, 378), + NAME_FUNC_OFFSET(21764, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL, 379), + NAME_FUNC_OFFSET(21783, glMultiTexCoord1i, glMultiTexCoord1i, NULL, 380), + NAME_FUNC_OFFSET(21804, glMultiTexCoord1iv, glMultiTexCoord1iv, NULL, 381), + NAME_FUNC_OFFSET(21826, glMultiTexCoord1s, glMultiTexCoord1s, NULL, 382), + NAME_FUNC_OFFSET(21847, glMultiTexCoord1sv, glMultiTexCoord1sv, NULL, 383), + NAME_FUNC_OFFSET(21869, glMultiTexCoord2d, glMultiTexCoord2d, NULL, 384), + NAME_FUNC_OFFSET(21890, glMultiTexCoord2dv, glMultiTexCoord2dv, NULL, 385), + NAME_FUNC_OFFSET(21912, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL, 386), + NAME_FUNC_OFFSET(21930, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL, 387), + NAME_FUNC_OFFSET(21949, glMultiTexCoord2i, glMultiTexCoord2i, NULL, 388), + NAME_FUNC_OFFSET(21970, glMultiTexCoord2iv, glMultiTexCoord2iv, NULL, 389), + NAME_FUNC_OFFSET(21992, glMultiTexCoord2s, glMultiTexCoord2s, NULL, 390), + NAME_FUNC_OFFSET(22013, glMultiTexCoord2sv, glMultiTexCoord2sv, NULL, 391), + NAME_FUNC_OFFSET(22035, glMultiTexCoord3d, glMultiTexCoord3d, NULL, 392), + NAME_FUNC_OFFSET(22056, glMultiTexCoord3dv, glMultiTexCoord3dv, NULL, 393), + NAME_FUNC_OFFSET(22078, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL, 394), + NAME_FUNC_OFFSET(22096, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL, 395), + NAME_FUNC_OFFSET(22115, glMultiTexCoord3i, glMultiTexCoord3i, NULL, 396), + NAME_FUNC_OFFSET(22136, glMultiTexCoord3iv, glMultiTexCoord3iv, NULL, 397), + NAME_FUNC_OFFSET(22158, glMultiTexCoord3s, glMultiTexCoord3s, NULL, 398), + NAME_FUNC_OFFSET(22179, glMultiTexCoord3sv, glMultiTexCoord3sv, NULL, 399), + NAME_FUNC_OFFSET(22201, glMultiTexCoord4d, glMultiTexCoord4d, NULL, 400), + NAME_FUNC_OFFSET(22222, glMultiTexCoord4dv, glMultiTexCoord4dv, NULL, 401), + NAME_FUNC_OFFSET(22244, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL, 402), + NAME_FUNC_OFFSET(22262, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL, 403), + NAME_FUNC_OFFSET(22281, glMultiTexCoord4i, glMultiTexCoord4i, NULL, 404), + NAME_FUNC_OFFSET(22302, glMultiTexCoord4iv, glMultiTexCoord4iv, NULL, 405), + NAME_FUNC_OFFSET(22324, glMultiTexCoord4s, glMultiTexCoord4s, NULL, 406), + NAME_FUNC_OFFSET(22345, glMultiTexCoord4sv, glMultiTexCoord4sv, NULL, 407), + NAME_FUNC_OFFSET(22367, glCompressedTexImage1D, glCompressedTexImage1D, NULL, 408), + NAME_FUNC_OFFSET(22393, glCompressedTexImage2D, glCompressedTexImage2D, NULL, 409), + NAME_FUNC_OFFSET(22419, glCompressedTexImage3D, glCompressedTexImage3D, NULL, 410), + NAME_FUNC_OFFSET(22445, glCompressedTexImage3D, glCompressedTexImage3D, NULL, 410), + NAME_FUNC_OFFSET(22471, glCompressedTexSubImage1D, glCompressedTexSubImage1D, NULL, 411), + NAME_FUNC_OFFSET(22500, glCompressedTexSubImage2D, glCompressedTexSubImage2D, NULL, 412), + NAME_FUNC_OFFSET(22529, glCompressedTexSubImage3D, glCompressedTexSubImage3D, NULL, 413), + NAME_FUNC_OFFSET(22558, glCompressedTexSubImage3D, glCompressedTexSubImage3D, NULL, 413), + NAME_FUNC_OFFSET(22587, glGetCompressedTexImage, glGetCompressedTexImage, NULL, 414), + NAME_FUNC_OFFSET(22614, glLoadTransposeMatrixd, glLoadTransposeMatrixd, NULL, 415), + NAME_FUNC_OFFSET(22640, glLoadTransposeMatrixf, glLoadTransposeMatrixf, NULL, 416), + NAME_FUNC_OFFSET(22666, glMultTransposeMatrixd, glMultTransposeMatrixd, NULL, 417), + NAME_FUNC_OFFSET(22692, glMultTransposeMatrixf, glMultTransposeMatrixf, NULL, 418), + NAME_FUNC_OFFSET(22718, glSampleCoverage, glSampleCoverage, NULL, 419), + NAME_FUNC_OFFSET(22738, glBlendFuncSeparate, glBlendFuncSeparate, NULL, 420), + NAME_FUNC_OFFSET(22761, glBlendFuncSeparate, glBlendFuncSeparate, NULL, 420), + NAME_FUNC_OFFSET(22785, glBlendFuncSeparate, glBlendFuncSeparate, NULL, 420), + NAME_FUNC_OFFSET(22808, glFogCoordPointer, glFogCoordPointer, NULL, 421), + NAME_FUNC_OFFSET(22829, glFogCoordd, glFogCoordd, NULL, 422), + NAME_FUNC_OFFSET(22844, glFogCoorddv, glFogCoorddv, NULL, 423), + NAME_FUNC_OFFSET(22860, glMultiDrawArrays, glMultiDrawArrays, NULL, 424), + NAME_FUNC_OFFSET(22881, glPointParameterf, glPointParameterf, NULL, 425), + NAME_FUNC_OFFSET(22902, glPointParameterf, glPointParameterf, NULL, 425), + NAME_FUNC_OFFSET(22923, glPointParameterf, glPointParameterf, NULL, 425), + NAME_FUNC_OFFSET(22945, glPointParameterfv, glPointParameterfv, NULL, 426), + NAME_FUNC_OFFSET(22967, glPointParameterfv, glPointParameterfv, NULL, 426), + NAME_FUNC_OFFSET(22989, glPointParameterfv, glPointParameterfv, NULL, 426), + NAME_FUNC_OFFSET(23012, glPointParameteri, glPointParameteri, NULL, 427), + NAME_FUNC_OFFSET(23032, glPointParameteriv, glPointParameteriv, NULL, 428), + NAME_FUNC_OFFSET(23053, glSecondaryColor3b, glSecondaryColor3b, NULL, 429), + NAME_FUNC_OFFSET(23075, glSecondaryColor3bv, glSecondaryColor3bv, NULL, 430), + NAME_FUNC_OFFSET(23098, glSecondaryColor3d, glSecondaryColor3d, NULL, 431), + NAME_FUNC_OFFSET(23120, glSecondaryColor3dv, glSecondaryColor3dv, NULL, 432), + NAME_FUNC_OFFSET(23143, glSecondaryColor3i, glSecondaryColor3i, NULL, 433), + NAME_FUNC_OFFSET(23165, glSecondaryColor3iv, glSecondaryColor3iv, NULL, 434), + NAME_FUNC_OFFSET(23188, glSecondaryColor3s, glSecondaryColor3s, NULL, 435), + NAME_FUNC_OFFSET(23210, glSecondaryColor3sv, glSecondaryColor3sv, NULL, 436), + NAME_FUNC_OFFSET(23233, glSecondaryColor3ub, glSecondaryColor3ub, NULL, 437), + NAME_FUNC_OFFSET(23256, glSecondaryColor3ubv, glSecondaryColor3ubv, NULL, 438), + NAME_FUNC_OFFSET(23280, glSecondaryColor3ui, glSecondaryColor3ui, NULL, 439), + NAME_FUNC_OFFSET(23303, glSecondaryColor3uiv, glSecondaryColor3uiv, NULL, 440), + NAME_FUNC_OFFSET(23327, glSecondaryColor3us, glSecondaryColor3us, NULL, 441), + NAME_FUNC_OFFSET(23350, glSecondaryColor3usv, glSecondaryColor3usv, NULL, 442), + NAME_FUNC_OFFSET(23374, glSecondaryColorPointer, glSecondaryColorPointer, NULL, 443), + NAME_FUNC_OFFSET(23401, glWindowPos2d, glWindowPos2d, NULL, 444), + NAME_FUNC_OFFSET(23418, glWindowPos2d, glWindowPos2d, NULL, 444), + NAME_FUNC_OFFSET(23436, glWindowPos2dv, glWindowPos2dv, NULL, 445), + NAME_FUNC_OFFSET(23454, glWindowPos2dv, glWindowPos2dv, NULL, 445), + NAME_FUNC_OFFSET(23473, glWindowPos2f, glWindowPos2f, NULL, 446), + NAME_FUNC_OFFSET(23490, glWindowPos2f, glWindowPos2f, NULL, 446), + NAME_FUNC_OFFSET(23508, glWindowPos2fv, glWindowPos2fv, NULL, 447), + NAME_FUNC_OFFSET(23526, glWindowPos2fv, glWindowPos2fv, NULL, 447), + NAME_FUNC_OFFSET(23545, glWindowPos2i, glWindowPos2i, NULL, 448), + NAME_FUNC_OFFSET(23562, glWindowPos2i, glWindowPos2i, NULL, 448), + NAME_FUNC_OFFSET(23580, glWindowPos2iv, glWindowPos2iv, NULL, 449), + NAME_FUNC_OFFSET(23598, glWindowPos2iv, glWindowPos2iv, NULL, 449), + NAME_FUNC_OFFSET(23617, glWindowPos2s, glWindowPos2s, NULL, 450), + NAME_FUNC_OFFSET(23634, glWindowPos2s, glWindowPos2s, NULL, 450), + NAME_FUNC_OFFSET(23652, glWindowPos2sv, glWindowPos2sv, NULL, 451), + NAME_FUNC_OFFSET(23670, glWindowPos2sv, glWindowPos2sv, NULL, 451), + NAME_FUNC_OFFSET(23689, glWindowPos3d, glWindowPos3d, NULL, 452), + NAME_FUNC_OFFSET(23706, glWindowPos3d, glWindowPos3d, NULL, 452), + NAME_FUNC_OFFSET(23724, glWindowPos3dv, glWindowPos3dv, NULL, 453), + NAME_FUNC_OFFSET(23742, glWindowPos3dv, glWindowPos3dv, NULL, 453), + NAME_FUNC_OFFSET(23761, glWindowPos3f, glWindowPos3f, NULL, 454), + NAME_FUNC_OFFSET(23778, glWindowPos3f, glWindowPos3f, NULL, 454), + NAME_FUNC_OFFSET(23796, glWindowPos3fv, glWindowPos3fv, NULL, 455), + NAME_FUNC_OFFSET(23814, glWindowPos3fv, glWindowPos3fv, NULL, 455), + NAME_FUNC_OFFSET(23833, glWindowPos3i, glWindowPos3i, NULL, 456), + NAME_FUNC_OFFSET(23850, glWindowPos3i, glWindowPos3i, NULL, 456), + NAME_FUNC_OFFSET(23868, glWindowPos3iv, glWindowPos3iv, NULL, 457), + NAME_FUNC_OFFSET(23886, glWindowPos3iv, glWindowPos3iv, NULL, 457), + NAME_FUNC_OFFSET(23905, glWindowPos3s, glWindowPos3s, NULL, 458), + NAME_FUNC_OFFSET(23922, glWindowPos3s, glWindowPos3s, NULL, 458), + NAME_FUNC_OFFSET(23940, glWindowPos3sv, glWindowPos3sv, NULL, 459), + NAME_FUNC_OFFSET(23958, glWindowPos3sv, glWindowPos3sv, NULL, 459), + NAME_FUNC_OFFSET(23977, glBeginQuery, glBeginQuery, NULL, 460), + NAME_FUNC_OFFSET(23993, glBindBuffer, glBindBuffer, NULL, 461), + NAME_FUNC_OFFSET(24009, glBufferData, glBufferData, NULL, 462), + NAME_FUNC_OFFSET(24025, glBufferSubData, glBufferSubData, NULL, 463), + NAME_FUNC_OFFSET(24044, glDeleteBuffers, glDeleteBuffers, NULL, 464), + NAME_FUNC_OFFSET(24063, glDeleteQueries, glDeleteQueries, NULL, 465), + NAME_FUNC_OFFSET(24082, glEndQuery, glEndQuery, NULL, 466), + NAME_FUNC_OFFSET(24096, glGenBuffers, glGenBuffers, NULL, 467), + NAME_FUNC_OFFSET(24112, glGenQueries, glGenQueries, NULL, 468), + NAME_FUNC_OFFSET(24128, glGetBufferParameteriv, glGetBufferParameteriv, NULL, 469), + NAME_FUNC_OFFSET(24154, glGetBufferPointerv, glGetBufferPointerv, NULL, 470), + NAME_FUNC_OFFSET(24177, glGetBufferPointerv, glGetBufferPointerv, NULL, 470), + NAME_FUNC_OFFSET(24200, glGetBufferSubData, glGetBufferSubData, NULL, 471), + NAME_FUNC_OFFSET(24222, glGetQueryObjectiv, glGetQueryObjectiv, NULL, 472), + NAME_FUNC_OFFSET(24244, glGetQueryObjectuiv, glGetQueryObjectuiv, NULL, 473), + NAME_FUNC_OFFSET(24267, glGetQueryiv, glGetQueryiv, NULL, 474), + NAME_FUNC_OFFSET(24283, glIsBuffer, glIsBuffer, NULL, 475), + NAME_FUNC_OFFSET(24297, glIsQuery, glIsQuery, NULL, 476), + NAME_FUNC_OFFSET(24310, glMapBuffer, glMapBuffer, NULL, 477), + NAME_FUNC_OFFSET(24325, glMapBuffer, glMapBuffer, NULL, 477), + NAME_FUNC_OFFSET(24340, glUnmapBuffer, glUnmapBuffer, NULL, 478), + NAME_FUNC_OFFSET(24357, glUnmapBuffer, glUnmapBuffer, NULL, 478), + NAME_FUNC_OFFSET(24374, glBindAttribLocation, glBindAttribLocation, NULL, 480), + NAME_FUNC_OFFSET(24398, glBlendEquationSeparate, glBlendEquationSeparate, NULL, 481), + NAME_FUNC_OFFSET(24425, glBlendEquationSeparate, glBlendEquationSeparate, NULL, 481), + NAME_FUNC_OFFSET(24452, glBlendEquationSeparate, glBlendEquationSeparate, NULL, 481), + NAME_FUNC_OFFSET(24479, glCompileShader, glCompileShader, NULL, 482), + NAME_FUNC_OFFSET(24498, glDisableVertexAttribArray, glDisableVertexAttribArray, NULL, 488), + NAME_FUNC_OFFSET(24528, glDrawBuffers, glDrawBuffers, NULL, 489), + NAME_FUNC_OFFSET(24545, glDrawBuffers, glDrawBuffers, NULL, 489), + NAME_FUNC_OFFSET(24562, glDrawBuffers, glDrawBuffers, NULL, 489), + NAME_FUNC_OFFSET(24578, glEnableVertexAttribArray, glEnableVertexAttribArray, NULL, 490), + NAME_FUNC_OFFSET(24607, glGetActiveAttrib, glGetActiveAttrib, NULL, 491), + NAME_FUNC_OFFSET(24628, glGetActiveUniform, glGetActiveUniform, NULL, 492), + NAME_FUNC_OFFSET(24650, glGetAttribLocation, glGetAttribLocation, NULL, 494), + NAME_FUNC_OFFSET(24673, glGetShaderSource, glGetShaderSource, NULL, 498), + NAME_FUNC_OFFSET(24694, glGetUniformLocation, glGetUniformLocation, NULL, 500), + NAME_FUNC_OFFSET(24718, glGetUniformfv, glGetUniformfv, NULL, 501), + NAME_FUNC_OFFSET(24736, glGetUniformiv, glGetUniformiv, NULL, 502), + NAME_FUNC_OFFSET(24754, glGetVertexAttribPointerv, glGetVertexAttribPointerv, NULL, 503), + NAME_FUNC_OFFSET(24783, glGetVertexAttribPointerv, glGetVertexAttribPointerv, NULL, 503), + NAME_FUNC_OFFSET(24811, glGetVertexAttribdv, glGetVertexAttribdv, NULL, 504), + NAME_FUNC_OFFSET(24834, glGetVertexAttribfv, glGetVertexAttribfv, NULL, 505), + NAME_FUNC_OFFSET(24857, glGetVertexAttribiv, glGetVertexAttribiv, NULL, 506), + NAME_FUNC_OFFSET(24880, glLinkProgram, glLinkProgram, NULL, 509), + NAME_FUNC_OFFSET(24897, glShaderSource, glShaderSource, NULL, 510), + NAME_FUNC_OFFSET(24915, glStencilOpSeparate, glStencilOpSeparate, NULL, 513), + NAME_FUNC_OFFSET(24938, glUniform1f, glUniform1f, NULL, 514), + NAME_FUNC_OFFSET(24953, glUniform1fv, glUniform1fv, NULL, 515), + NAME_FUNC_OFFSET(24969, glUniform1i, glUniform1i, NULL, 516), + NAME_FUNC_OFFSET(24984, glUniform1iv, glUniform1iv, NULL, 517), + NAME_FUNC_OFFSET(25000, glUniform2f, glUniform2f, NULL, 518), + NAME_FUNC_OFFSET(25015, glUniform2fv, glUniform2fv, NULL, 519), + NAME_FUNC_OFFSET(25031, glUniform2i, glUniform2i, NULL, 520), + NAME_FUNC_OFFSET(25046, glUniform2iv, glUniform2iv, NULL, 521), + NAME_FUNC_OFFSET(25062, glUniform3f, glUniform3f, NULL, 522), + NAME_FUNC_OFFSET(25077, glUniform3fv, glUniform3fv, NULL, 523), + NAME_FUNC_OFFSET(25093, glUniform3i, glUniform3i, NULL, 524), + NAME_FUNC_OFFSET(25108, glUniform3iv, glUniform3iv, NULL, 525), + NAME_FUNC_OFFSET(25124, glUniform4f, glUniform4f, NULL, 526), + NAME_FUNC_OFFSET(25139, glUniform4fv, glUniform4fv, NULL, 527), + NAME_FUNC_OFFSET(25155, glUniform4i, glUniform4i, NULL, 528), + NAME_FUNC_OFFSET(25170, glUniform4iv, glUniform4iv, NULL, 529), + NAME_FUNC_OFFSET(25186, glUniformMatrix2fv, glUniformMatrix2fv, NULL, 530), + NAME_FUNC_OFFSET(25208, glUniformMatrix3fv, glUniformMatrix3fv, NULL, 531), + NAME_FUNC_OFFSET(25230, glUniformMatrix4fv, glUniformMatrix4fv, NULL, 532), + NAME_FUNC_OFFSET(25252, glUseProgram, glUseProgram, NULL, 533), + NAME_FUNC_OFFSET(25274, glValidateProgram, glValidateProgram, NULL, 534), + NAME_FUNC_OFFSET(25295, glVertexAttrib1d, glVertexAttrib1d, NULL, 535), + NAME_FUNC_OFFSET(25315, glVertexAttrib1dv, glVertexAttrib1dv, NULL, 536), + NAME_FUNC_OFFSET(25336, glVertexAttrib1s, glVertexAttrib1s, NULL, 537), + NAME_FUNC_OFFSET(25356, glVertexAttrib1sv, glVertexAttrib1sv, NULL, 538), + NAME_FUNC_OFFSET(25377, glVertexAttrib2d, glVertexAttrib2d, NULL, 539), + NAME_FUNC_OFFSET(25397, glVertexAttrib2dv, glVertexAttrib2dv, NULL, 540), + NAME_FUNC_OFFSET(25418, glVertexAttrib2s, glVertexAttrib2s, NULL, 541), + NAME_FUNC_OFFSET(25438, glVertexAttrib2sv, glVertexAttrib2sv, NULL, 542), + NAME_FUNC_OFFSET(25459, glVertexAttrib3d, glVertexAttrib3d, NULL, 543), + NAME_FUNC_OFFSET(25479, glVertexAttrib3dv, glVertexAttrib3dv, NULL, 544), + NAME_FUNC_OFFSET(25500, glVertexAttrib3s, glVertexAttrib3s, NULL, 545), + NAME_FUNC_OFFSET(25520, glVertexAttrib3sv, glVertexAttrib3sv, NULL, 546), + NAME_FUNC_OFFSET(25541, glVertexAttrib4Nbv, glVertexAttrib4Nbv, NULL, 547), + NAME_FUNC_OFFSET(25563, glVertexAttrib4Niv, glVertexAttrib4Niv, NULL, 548), + NAME_FUNC_OFFSET(25585, glVertexAttrib4Nsv, glVertexAttrib4Nsv, NULL, 549), + NAME_FUNC_OFFSET(25607, glVertexAttrib4Nub, glVertexAttrib4Nub, NULL, 550), + NAME_FUNC_OFFSET(25629, glVertexAttrib4Nubv, glVertexAttrib4Nubv, NULL, 551), + NAME_FUNC_OFFSET(25652, glVertexAttrib4Nuiv, glVertexAttrib4Nuiv, NULL, 552), + NAME_FUNC_OFFSET(25675, glVertexAttrib4Nusv, glVertexAttrib4Nusv, NULL, 553), + NAME_FUNC_OFFSET(25698, glVertexAttrib4bv, glVertexAttrib4bv, NULL, 554), + NAME_FUNC_OFFSET(25719, glVertexAttrib4d, glVertexAttrib4d, NULL, 555), + NAME_FUNC_OFFSET(25739, glVertexAttrib4dv, glVertexAttrib4dv, NULL, 556), + NAME_FUNC_OFFSET(25760, glVertexAttrib4iv, glVertexAttrib4iv, NULL, 557), + NAME_FUNC_OFFSET(25781, glVertexAttrib4s, glVertexAttrib4s, NULL, 558), + NAME_FUNC_OFFSET(25801, glVertexAttrib4sv, glVertexAttrib4sv, NULL, 559), + NAME_FUNC_OFFSET(25822, glVertexAttrib4ubv, glVertexAttrib4ubv, NULL, 560), + NAME_FUNC_OFFSET(25844, glVertexAttrib4uiv, glVertexAttrib4uiv, NULL, 561), + NAME_FUNC_OFFSET(25866, glVertexAttrib4usv, glVertexAttrib4usv, NULL, 562), + NAME_FUNC_OFFSET(25888, glVertexAttribPointer, glVertexAttribPointer, NULL, 563), + NAME_FUNC_OFFSET(25913, glBeginConditionalRender, glBeginConditionalRender, NULL, 570), + NAME_FUNC_OFFSET(25940, glBeginTransformFeedback, glBeginTransformFeedback, NULL, 571), + NAME_FUNC_OFFSET(25968, glBindBufferBase, glBindBufferBase, NULL, 572), + NAME_FUNC_OFFSET(25988, glBindBufferRange, glBindBufferRange, NULL, 573), + NAME_FUNC_OFFSET(26009, glBindFragDataLocation, glBindFragDataLocation, NULL, 574), + NAME_FUNC_OFFSET(26035, glClampColor, glClampColor, NULL, 575), + NAME_FUNC_OFFSET(26051, glColorMaski, glColorMaski, NULL, 580), + NAME_FUNC_OFFSET(26073, glDisablei, glDisablei, NULL, 581), + NAME_FUNC_OFFSET(26093, glEnablei, glEnablei, NULL, 582), + NAME_FUNC_OFFSET(26112, glEndConditionalRender, glEndConditionalRender, NULL, 583), + NAME_FUNC_OFFSET(26137, glEndTransformFeedback, glEndTransformFeedback, NULL, 584), + NAME_FUNC_OFFSET(26163, glGetBooleani_v, glGetBooleani_v, NULL, 585), + NAME_FUNC_OFFSET(26187, glGetFragDataLocation, glGetFragDataLocation, NULL, 586), + NAME_FUNC_OFFSET(26212, glGetIntegeri_v, glGetIntegeri_v, NULL, 587), + NAME_FUNC_OFFSET(26236, glGetTexParameterIiv, glGetTexParameterIiv, NULL, 589), + NAME_FUNC_OFFSET(26260, glGetTexParameterIuiv, glGetTexParameterIuiv, NULL, 590), + NAME_FUNC_OFFSET(26285, glGetTransformFeedbackVarying, glGetTransformFeedbackVarying, NULL, 591), + NAME_FUNC_OFFSET(26318, glGetUniformuiv, glGetUniformuiv, NULL, 592), + NAME_FUNC_OFFSET(26337, glGetVertexAttribIiv, glGetVertexAttribIiv, NULL, 593), + NAME_FUNC_OFFSET(26361, glGetVertexAttribIuiv, glGetVertexAttribIuiv, NULL, 594), + NAME_FUNC_OFFSET(26386, glIsEnabledi, glIsEnabledi, NULL, 595), + NAME_FUNC_OFFSET(26408, glTexParameterIiv, glTexParameterIiv, NULL, 596), + NAME_FUNC_OFFSET(26429, glTexParameterIuiv, glTexParameterIuiv, NULL, 597), + NAME_FUNC_OFFSET(26451, glTransformFeedbackVaryings, glTransformFeedbackVaryings, NULL, 598), + NAME_FUNC_OFFSET(26482, glUniform1ui, glUniform1ui, NULL, 599), + NAME_FUNC_OFFSET(26498, glUniform1uiv, glUniform1uiv, NULL, 600), + NAME_FUNC_OFFSET(26515, glUniform2ui, glUniform2ui, NULL, 601), + NAME_FUNC_OFFSET(26531, glUniform2uiv, glUniform2uiv, NULL, 602), + NAME_FUNC_OFFSET(26548, glUniform3ui, glUniform3ui, NULL, 603), + NAME_FUNC_OFFSET(26564, glUniform3uiv, glUniform3uiv, NULL, 604), + NAME_FUNC_OFFSET(26581, glUniform4ui, glUniform4ui, NULL, 605), + NAME_FUNC_OFFSET(26597, glUniform4uiv, glUniform4uiv, NULL, 606), + NAME_FUNC_OFFSET(26614, glVertexAttribI1iv, glVertexAttribI1iv, NULL, 607), + NAME_FUNC_OFFSET(26636, glVertexAttribI1uiv, glVertexAttribI1uiv, NULL, 608), + NAME_FUNC_OFFSET(26659, glVertexAttribI4bv, glVertexAttribI4bv, NULL, 609), + NAME_FUNC_OFFSET(26681, glVertexAttribI4sv, glVertexAttribI4sv, NULL, 610), + NAME_FUNC_OFFSET(26703, glVertexAttribI4ubv, glVertexAttribI4ubv, NULL, 611), + NAME_FUNC_OFFSET(26726, glVertexAttribI4usv, glVertexAttribI4usv, NULL, 612), + NAME_FUNC_OFFSET(26749, glVertexAttribIPointer, glVertexAttribIPointer, NULL, 613), + NAME_FUNC_OFFSET(26775, glPrimitiveRestartIndex, glPrimitiveRestartIndex, NULL, 614), + NAME_FUNC_OFFSET(26801, glTexBuffer, glTexBuffer, NULL, 615), + NAME_FUNC_OFFSET(26816, glFramebufferTexture, glFramebufferTexture, NULL, 616), + NAME_FUNC_OFFSET(26840, glVertexAttribDivisor, glVertexAttribDivisor, NULL, 619), + NAME_FUNC_OFFSET(26865, glMinSampleShading, glMinSampleShading, NULL, 620), + NAME_FUNC_OFFSET(26887, glBindProgramARB, glBindProgramARB, NULL, 621), + NAME_FUNC_OFFSET(26903, glDeleteProgramsARB, glDeleteProgramsARB, NULL, 622), + NAME_FUNC_OFFSET(26922, glGenProgramsARB, glGenProgramsARB, NULL, 623), + NAME_FUNC_OFFSET(26938, glIsProgramARB, glIsProgramARB, NULL, 630), + NAME_FUNC_OFFSET(26952, glProgramEnvParameter4dARB, glProgramEnvParameter4dARB, NULL, 631), + NAME_FUNC_OFFSET(26975, glProgramEnvParameter4dvARB, glProgramEnvParameter4dvARB, NULL, 632), + NAME_FUNC_OFFSET(26999, glProgramEnvParameter4fARB, glProgramEnvParameter4fARB, NULL, 633), + NAME_FUNC_OFFSET(27022, glProgramEnvParameter4fvARB, glProgramEnvParameter4fvARB, NULL, 634), + NAME_FUNC_OFFSET(27046, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, 640), + NAME_FUNC_OFFSET(27063, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL, 641), + NAME_FUNC_OFFSET(27081, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, 642), + NAME_FUNC_OFFSET(27098, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL, 643), + NAME_FUNC_OFFSET(27116, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, 644), + NAME_FUNC_OFFSET(27133, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL, 645), + NAME_FUNC_OFFSET(27151, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, 646), + NAME_FUNC_OFFSET(27168, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL, 647), + NAME_FUNC_OFFSET(27186, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 658), + NAME_FUNC_OFFSET(27211, glDrawArraysInstancedARB, glDrawArraysInstancedARB, NULL, 658), + NAME_FUNC_OFFSET(27233, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 659), + NAME_FUNC_OFFSET(27260, glDrawElementsInstancedARB, glDrawElementsInstancedARB, NULL, 659), + NAME_FUNC_OFFSET(27284, glBindFramebuffer, glBindFramebuffer, NULL, 660), + NAME_FUNC_OFFSET(27305, glBindRenderbuffer, glBindRenderbuffer, NULL, 661), + NAME_FUNC_OFFSET(27327, glBlitFramebuffer, glBlitFramebuffer, NULL, 662), + NAME_FUNC_OFFSET(27348, glCheckFramebufferStatus, glCheckFramebufferStatus, NULL, 663), + NAME_FUNC_OFFSET(27376, glCheckFramebufferStatus, glCheckFramebufferStatus, NULL, 663), + NAME_FUNC_OFFSET(27404, glDeleteFramebuffers, glDeleteFramebuffers, NULL, 664), + NAME_FUNC_OFFSET(27428, glDeleteFramebuffers, glDeleteFramebuffers, NULL, 664), + NAME_FUNC_OFFSET(27452, glDeleteRenderbuffers, glDeleteRenderbuffers, NULL, 665), + NAME_FUNC_OFFSET(27477, glDeleteRenderbuffers, glDeleteRenderbuffers, NULL, 665), + NAME_FUNC_OFFSET(27502, glFramebufferRenderbuffer, glFramebufferRenderbuffer, NULL, 666), + NAME_FUNC_OFFSET(27531, glFramebufferRenderbuffer, glFramebufferRenderbuffer, NULL, 666), + NAME_FUNC_OFFSET(27560, glFramebufferTexture1D, glFramebufferTexture1D, NULL, 667), + NAME_FUNC_OFFSET(27586, glFramebufferTexture2D, glFramebufferTexture2D, NULL, 668), + NAME_FUNC_OFFSET(27612, glFramebufferTexture2D, glFramebufferTexture2D, NULL, 668), + NAME_FUNC_OFFSET(27638, glFramebufferTexture3D, glFramebufferTexture3D, NULL, 669), + NAME_FUNC_OFFSET(27664, glFramebufferTexture3D, glFramebufferTexture3D, NULL, 669), + NAME_FUNC_OFFSET(27690, glFramebufferTextureLayer, glFramebufferTextureLayer, NULL, 670), + NAME_FUNC_OFFSET(27719, glFramebufferTextureLayer, glFramebufferTextureLayer, NULL, 670), + NAME_FUNC_OFFSET(27748, glGenFramebuffers, glGenFramebuffers, NULL, 671), + NAME_FUNC_OFFSET(27769, glGenFramebuffers, glGenFramebuffers, NULL, 671), + NAME_FUNC_OFFSET(27790, glGenRenderbuffers, glGenRenderbuffers, NULL, 672), + NAME_FUNC_OFFSET(27812, glGenRenderbuffers, glGenRenderbuffers, NULL, 672), + NAME_FUNC_OFFSET(27834, glGenerateMipmap, glGenerateMipmap, NULL, 673), + NAME_FUNC_OFFSET(27854, glGenerateMipmap, glGenerateMipmap, NULL, 673), + NAME_FUNC_OFFSET(27874, glGetFramebufferAttachmentParameteriv, glGetFramebufferAttachmentParameteriv, NULL, 674), + NAME_FUNC_OFFSET(27915, glGetFramebufferAttachmentParameteriv, glGetFramebufferAttachmentParameteriv, NULL, 674), + NAME_FUNC_OFFSET(27956, glGetRenderbufferParameteriv, glGetRenderbufferParameteriv, NULL, 675), + NAME_FUNC_OFFSET(27988, glGetRenderbufferParameteriv, glGetRenderbufferParameteriv, NULL, 675), + NAME_FUNC_OFFSET(28020, glIsFramebuffer, glIsFramebuffer, NULL, 676), + NAME_FUNC_OFFSET(28039, glIsFramebuffer, glIsFramebuffer, NULL, 676), + NAME_FUNC_OFFSET(28058, glIsRenderbuffer, glIsRenderbuffer, NULL, 677), + NAME_FUNC_OFFSET(28078, glIsRenderbuffer, glIsRenderbuffer, NULL, 677), + NAME_FUNC_OFFSET(28098, glRenderbufferStorage, glRenderbufferStorage, NULL, 678), + NAME_FUNC_OFFSET(28123, glRenderbufferStorage, glRenderbufferStorage, NULL, 678), + NAME_FUNC_OFFSET(28148, glRenderbufferStorageMultisample, glRenderbufferStorageMultisample, NULL, 679), + NAME_FUNC_OFFSET(28184, glFlushMappedBufferRange, glFlushMappedBufferRange, NULL, 681), + NAME_FUNC_OFFSET(28212, glMapBufferRange, glMapBufferRange, NULL, 682), + NAME_FUNC_OFFSET(28232, glBindVertexArray, glBindVertexArray, NULL, 683), + NAME_FUNC_OFFSET(28253, glDeleteVertexArrays, glDeleteVertexArrays, NULL, 684), + NAME_FUNC_OFFSET(28279, glDeleteVertexArrays, glDeleteVertexArrays, NULL, 684), + NAME_FUNC_OFFSET(28303, glGenVertexArrays, glGenVertexArrays, NULL, 685), + NAME_FUNC_OFFSET(28324, glIsVertexArray, glIsVertexArray, NULL, 686), + NAME_FUNC_OFFSET(28345, glIsVertexArray, glIsVertexArray, NULL, 686), + NAME_FUNC_OFFSET(28364, glProvokingVertex, glProvokingVertex, NULL, 706), + NAME_FUNC_OFFSET(28385, glBlendEquationSeparateiARB, glBlendEquationSeparateiARB, NULL, 711), + NAME_FUNC_OFFSET(28419, glBlendEquationiARB, glBlendEquationiARB, NULL, 712), + NAME_FUNC_OFFSET(28445, glBlendFuncSeparateiARB, glBlendFuncSeparateiARB, NULL, 713), + NAME_FUNC_OFFSET(28475, glBlendFunciARB, glBlendFunciARB, NULL, 714), + NAME_FUNC_OFFSET(28497, gl_dispatch_stub_731, gl_dispatch_stub_731, NULL, 731), + NAME_FUNC_OFFSET(28521, gl_dispatch_stub_732, gl_dispatch_stub_732, NULL, 732), + NAME_FUNC_OFFSET(28546, glClearDepthf, glClearDepthf, NULL, 785), + NAME_FUNC_OFFSET(28563, glDepthRangef, glDepthRangef, NULL, 786), + NAME_FUNC_OFFSET(28580, glGetProgramBinary, glGetProgramBinary, NULL, 790), + NAME_FUNC_OFFSET(28602, glProgramBinary, glProgramBinary, NULL, 791), + NAME_FUNC_OFFSET(28621, glProgramParameteri, glProgramParameteri, NULL, 792), + NAME_FUNC_OFFSET(28644, gl_dispatch_stub_876, gl_dispatch_stub_876, NULL, 876), + NAME_FUNC_OFFSET(28660, gl_dispatch_stub_877, gl_dispatch_stub_877, NULL, 877), + NAME_FUNC_OFFSET(28679, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, 940), + NAME_FUNC_OFFSET(28698, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, 941), + NAME_FUNC_OFFSET(28718, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, 942), + NAME_FUNC_OFFSET(28738, glFogCoordfEXT, glFogCoordfEXT, NULL, 943), + NAME_FUNC_OFFSET(28750, glFogCoordfvEXT, glFogCoordfvEXT, NULL, 944), + NAME_FUNC_OFFSET(28763, glVertexAttribI1iEXT, glVertexAttribI1iEXT, NULL, 1047), + NAME_FUNC_OFFSET(28781, glVertexAttribI1uiEXT, glVertexAttribI1uiEXT, NULL, 1048), + NAME_FUNC_OFFSET(28800, glVertexAttribI2iEXT, glVertexAttribI2iEXT, NULL, 1049), + NAME_FUNC_OFFSET(28818, glVertexAttribI2ivEXT, glVertexAttribI2ivEXT, NULL, 1050), + NAME_FUNC_OFFSET(28837, glVertexAttribI2uiEXT, glVertexAttribI2uiEXT, NULL, 1051), + NAME_FUNC_OFFSET(28856, glVertexAttribI2uivEXT, glVertexAttribI2uivEXT, NULL, 1052), + NAME_FUNC_OFFSET(28876, glVertexAttribI3iEXT, glVertexAttribI3iEXT, NULL, 1053), + NAME_FUNC_OFFSET(28894, glVertexAttribI3ivEXT, glVertexAttribI3ivEXT, NULL, 1054), + NAME_FUNC_OFFSET(28913, glVertexAttribI3uiEXT, glVertexAttribI3uiEXT, NULL, 1055), + NAME_FUNC_OFFSET(28932, glVertexAttribI3uivEXT, glVertexAttribI3uivEXT, NULL, 1056), + NAME_FUNC_OFFSET(28952, glVertexAttribI4iEXT, glVertexAttribI4iEXT, NULL, 1057), + NAME_FUNC_OFFSET(28970, glVertexAttribI4ivEXT, glVertexAttribI4ivEXT, NULL, 1058), + NAME_FUNC_OFFSET(28989, glVertexAttribI4uiEXT, glVertexAttribI4uiEXT, NULL, 1059), + NAME_FUNC_OFFSET(29008, glVertexAttribI4uivEXT, glVertexAttribI4uivEXT, NULL, 1060), + NAME_FUNC_OFFSET(29028, gl_dispatch_stub_1097, gl_dispatch_stub_1097, NULL, 1097), + NAME_FUNC_OFFSET(29044, gl_dispatch_stub_1098, gl_dispatch_stub_1098, NULL, 1098), + NAME_FUNC_OFFSET(29061, gl_dispatch_stub_1099, gl_dispatch_stub_1099, NULL, 1099), + NAME_FUNC_OFFSET(29078, gl_dispatch_stub_1100, gl_dispatch_stub_1100, NULL, 1100), + NAME_FUNC_OFFSET(29091, gl_dispatch_stub_1101, gl_dispatch_stub_1101, NULL, 1101), + NAME_FUNC_OFFSET(29108, gl_dispatch_stub_1102, gl_dispatch_stub_1102, NULL, 1102), + NAME_FUNC_OFFSET(29118, gl_dispatch_stub_1103, gl_dispatch_stub_1103, NULL, 1103), + NAME_FUNC_OFFSET(29129, gl_dispatch_stub_1104, gl_dispatch_stub_1104, NULL, 1104), + NAME_FUNC_OFFSET(29143, gl_dispatch_stub_1105, gl_dispatch_stub_1105, NULL, 1105), + NAME_FUNC_OFFSET(29157, gl_dispatch_stub_1106, gl_dispatch_stub_1106, NULL, 1106), + NAME_FUNC_OFFSET(29174, gl_dispatch_stub_1107, gl_dispatch_stub_1107, NULL, 1107), + NAME_FUNC_OFFSET(29192, gl_dispatch_stub_1108, gl_dispatch_stub_1108, NULL, 1108), + NAME_FUNC_OFFSET(29204, gl_dispatch_stub_1109, gl_dispatch_stub_1109, NULL, 1109), + NAME_FUNC_OFFSET(29217, gl_dispatch_stub_1110, gl_dispatch_stub_1110, NULL, 1110), + NAME_FUNC_OFFSET(29233, gl_dispatch_stub_1111, gl_dispatch_stub_1111, NULL, 1111), + NAME_FUNC_OFFSET(29250, gl_dispatch_stub_1112, gl_dispatch_stub_1112, NULL, 1112), + NAME_FUNC_OFFSET(29265, gl_dispatch_stub_1113, gl_dispatch_stub_1113, NULL, 1113), + NAME_FUNC_OFFSET(29281, gl_dispatch_stub_1114, gl_dispatch_stub_1114, NULL, 1114), + NAME_FUNC_OFFSET(29298, gl_dispatch_stub_1115, gl_dispatch_stub_1115, NULL, 1115), + NAME_FUNC_OFFSET(29319, gl_dispatch_stub_1116, gl_dispatch_stub_1116, NULL, 1116), + NAME_FUNC_OFFSET(29333, gl_dispatch_stub_1117, gl_dispatch_stub_1117, NULL, 1117), + NAME_FUNC_OFFSET(29345, gl_dispatch_stub_1118, gl_dispatch_stub_1118, NULL, 1118), + NAME_FUNC_OFFSET(29357, gl_dispatch_stub_1119, gl_dispatch_stub_1119, NULL, 1119), + NAME_FUNC_OFFSET(29373, gl_dispatch_stub_1120, gl_dispatch_stub_1120, NULL, 1120), + NAME_FUNC_OFFSET(29393, gl_dispatch_stub_1121, gl_dispatch_stub_1121, NULL, 1121), + NAME_FUNC_OFFSET(29406, gl_dispatch_stub_1122, gl_dispatch_stub_1122, NULL, 1122), + NAME_FUNC_OFFSET(29427, gl_dispatch_stub_1123, gl_dispatch_stub_1123, NULL, 1123), + NAME_FUNC_OFFSET(29439, gl_dispatch_stub_1124, gl_dispatch_stub_1124, NULL, 1124), + NAME_FUNC_OFFSET(29452, gl_dispatch_stub_1125, gl_dispatch_stub_1125, NULL, 1125), + NAME_FUNC_OFFSET(29466, gl_dispatch_stub_1126, gl_dispatch_stub_1126, NULL, 1126), + NAME_FUNC_OFFSET(29485, gl_dispatch_stub_1127, gl_dispatch_stub_1127, NULL, 1127), + NAME_FUNC_OFFSET(29501, gl_dispatch_stub_1128, gl_dispatch_stub_1128, NULL, 1128), + NAME_FUNC_OFFSET(29517, gl_dispatch_stub_1129, gl_dispatch_stub_1129, NULL, 1129), + NAME_FUNC_OFFSET(29533, gl_dispatch_stub_1130, gl_dispatch_stub_1130, NULL, 1130), + NAME_FUNC_OFFSET(29552, gl_dispatch_stub_1131, gl_dispatch_stub_1131, NULL, 1131), + NAME_FUNC_OFFSET(29571, gl_dispatch_stub_1132, gl_dispatch_stub_1132, NULL, 1132), + NAME_FUNC_OFFSET(29586, gl_dispatch_stub_1133, gl_dispatch_stub_1133, NULL, 1133), + NAME_FUNC_OFFSET(29602, gl_dispatch_stub_1134, gl_dispatch_stub_1134, NULL, 1134), + NAME_FUNC_OFFSET(29621, gl_dispatch_stub_1135, gl_dispatch_stub_1135, NULL, 1135), + NAME_FUNC_OFFSET(29638, gl_dispatch_stub_1136, gl_dispatch_stub_1136, NULL, 1136), + NAME_FUNC_OFFSET(29661, gl_dispatch_stub_1137, gl_dispatch_stub_1137, NULL, 1137), + NAME_FUNC_OFFSET(29682, gl_dispatch_stub_1138, gl_dispatch_stub_1138, NULL, 1138), + NAME_FUNC_OFFSET(29704, gl_dispatch_stub_1139, gl_dispatch_stub_1139, NULL, 1139), NAME_FUNC_OFFSET(-1, NULL, NULL, NULL, 0) }; diff --git a/xorg-server/glx/glthread.c b/xorg-server/glx/glthread.c deleted file mode 100644 index fd4c6cc09..000000000 --- a/xorg-server/glx/glthread.c +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 6.5.1 - * - * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* - * XXX There's probably some work to do in order to make this file - * truly reusable outside of Mesa. - */ - -#ifdef HAVE_DIX_CONFIG_H -#include <dix-config.h> -#include <X11/Xfuncproto.h> -#endif - -#include <stdlib.h> -#include <stdio.h> -#include "glthread.h" - -/* - * This file should still compile even when THREADS is not defined. - * This is to make things easier to deal with on the makefile scene.. - */ -#ifdef THREADS -#include <errno.h> - -/* - * Error messages - */ -#define INIT_TSD_ERROR "_glthread_: failed to allocate key for thread specific data" -#define GET_TSD_ERROR "_glthread_: failed to get thread specific data" -#define SET_TSD_ERROR "_glthread_: thread failed to set thread specific data" - -/* - * Magic number to determine if a TSD object has been initialized. - * Kind of a hack but there doesn't appear to be a better cross-platform - * solution. - */ -#define INIT_MAGIC 0xff8adc98 - -/* - * POSIX Threads -- The best way to go if your platform supports them. - * Solaris >= 2.5 have POSIX threads, IRIX >= 6.4 reportedly - * has them, and many of the free Unixes now have them. - * Be sure to use appropriate -mt or -D_REENTRANT type - * compile flags when building. - */ -#ifdef PTHREADS - -_X_EXPORT unsigned long -_glthread_GetID(void) -{ - return (unsigned long) pthread_self(); -} - -void -_glthread_InitTSD(_glthread_TSD * tsd) -{ - if (pthread_key_create(&tsd->key, NULL /*free */ ) != 0) { - perror(INIT_TSD_ERROR); - exit(-1); - } - tsd->initMagic = INIT_MAGIC; -} - -void * -_glthread_GetTSD(_glthread_TSD * tsd) -{ - if (tsd->initMagic != (int) INIT_MAGIC) { - _glthread_InitTSD(tsd); - } - return pthread_getspecific(tsd->key); -} - -void -_glthread_SetTSD(_glthread_TSD * tsd, void *ptr) -{ - if (tsd->initMagic != (int) INIT_MAGIC) { - _glthread_InitTSD(tsd); - } - if (pthread_setspecific(tsd->key, ptr) != 0) { - perror(SET_TSD_ERROR); - exit(-1); - } -} - -#endif /* PTHREADS */ - -/* - * Win32 Threads. The only available option for Windows 95/NT. - * Be sure that you compile using the Multithreaded runtime, otherwise - * bad things will happen. - */ -#ifdef WIN32_THREADS - -void -FreeTSD(_glthread_TSD * p) -{ - if (p->initMagic == INIT_MAGIC) { - TlsFree(p->key); - p->initMagic = 0; - } -} - -void -InsteadOf_exit(int nCode) -{ - DWORD dwErr = GetLastError(); -} - -unsigned long -_glthread_GetID(void) -{ - return GetCurrentThreadId(); -} - -void -_glthread_InitTSD(_glthread_TSD * tsd) -{ - tsd->key = TlsAlloc(); - if (tsd->key == TLS_OUT_OF_INDEXES) { - perror("Mesa:_glthread_InitTSD"); - InsteadOf_exit(-1); - } - tsd->initMagic = INIT_MAGIC; -} - -void * -_glthread_GetTSD(_glthread_TSD * tsd) -{ - if (tsd->initMagic != INIT_MAGIC) { - _glthread_InitTSD(tsd); - } - return TlsGetValue(tsd->key); -} - -void -_glthread_SetTSD(_glthread_TSD * tsd, void *ptr) -{ - /* the following code assumes that the _glthread_TSD has been initialized - to zero at creation */ - if (tsd->initMagic != INIT_MAGIC) { - _glthread_InitTSD(tsd); - } - if (TlsSetValue(tsd->key, ptr) == 0) { - perror("Mesa:_glthread_SetTSD"); - InsteadOf_exit(-1); - } -} - -#endif /* WIN32_THREADS */ - -#else /* THREADS */ - -/* - * no-op functions - */ - -_X_EXPORT unsigned long -_glthread_GetID(void) -{ - return 0; -} - -void -_glthread_InitTSD(_glthread_TSD * tsd) -{ - (void) tsd; -} - -void * -_glthread_GetTSD(_glthread_TSD * tsd) -{ - (void) tsd; - return NULL; -} - -void -_glthread_SetTSD(_glthread_TSD * tsd, void *ptr) -{ - (void) tsd; - (void) ptr; -} - -#endif /* THREADS */ diff --git a/xorg-server/glx/glxext.c b/xorg-server/glx/glxext.c index 31cdfb3c9..7c1c564ca 100644 --- a/xorg-server/glx/glxext.c +++ b/xorg-server/glx/glxext.c @@ -559,9 +559,9 @@ __glXsetGetProcAddress(glx_gpa_proc get_proc_address) void *__glGetProcAddress(const char *proc) { - void *ret = _get_proc_address(proc); + void *ret = (void *) _get_proc_address(proc); - return ret ? ret : NoopDDA; + return ret ? ret : (void *) NoopDDA; } /* diff --git a/xorg-server/glx/glxserver.h b/xorg-server/glx/glxserver.h index 7f36e5f5e..3f2ae3593 100644 --- a/xorg-server/glx/glxserver.h +++ b/xorg-server/glx/glxserver.h @@ -46,7 +46,6 @@ #include <resource.h> #include <scrnintstr.h> -#define GL_GLEXT_PROTOTYPES /* we want prototypes */ #include <GL/gl.h> #include <GL/glext.h> #include <GL/glxproto.h> diff --git a/xorg-server/glx/indirect_dispatch.c b/xorg-server/glx/indirect_dispatch.c index 9fb5cc1f5..67e5280c3 100644 --- a/xorg-server/glx/indirect_dispatch.c +++ b/xorg-server/glx/indirect_dispatch.c @@ -43,7 +43,6 @@ #include "singlesize.h" #include "glapi.h" #include "glapitable.h" -#include "glthread.h" #include "dispatch.h" #define __GLX_PAD(x) (((x) + 3) & ~3) diff --git a/xorg-server/glx/indirect_dispatch.h b/xorg-server/glx/indirect_dispatch.h index 432fb9704..103914c97 100644 --- a/xorg-server/glx/indirect_dispatch.h +++ b/xorg-server/glx/indirect_dispatch.h @@ -516,6 +516,8 @@ extern _X_HIDDEN void __glXDisp_FramebufferTexture3D(GLbyte * pc); extern _X_HIDDEN void __glXDispSwap_FramebufferTexture3D(GLbyte * pc); extern _X_HIDDEN int __glXDisp_GetDrawableAttributesSGIX(struct __GLXclientStateRec *, GLbyte *); extern _X_HIDDEN int __glXDispSwap_GetDrawableAttributesSGIX(struct __GLXclientStateRec *, GLbyte *); +extern _X_HIDDEN void __glXDisp_SampleMaskSGIS(GLbyte * pc); +extern _X_HIDDEN void __glXDispSwap_SampleMaskSGIS(GLbyte * pc); extern _X_HIDDEN int __glXDisp_GetProgramParameterdvNV(struct __GLXclientStateRec *, GLbyte *); extern _X_HIDDEN int __glXDispSwap_GetProgramParameterdvNV(struct __GLXclientStateRec *, GLbyte *); extern _X_HIDDEN void __glXDisp_ColorTableParameteriv(GLbyte * pc); @@ -540,8 +542,6 @@ extern _X_HIDDEN void __glXDisp_Lightiv(GLbyte * pc); extern _X_HIDDEN void __glXDispSwap_Lightiv(GLbyte * pc); extern _X_HIDDEN int __glXDisp_GetTexParameteriv(struct __GLXclientStateRec *, GLbyte *); extern _X_HIDDEN int __glXDispSwap_GetTexParameteriv(struct __GLXclientStateRec *, GLbyte *); -extern _X_HIDDEN void __glXDisp_VertexAttribs4dvNV(GLbyte * pc); -extern _X_HIDDEN void __glXDispSwap_VertexAttribs4dvNV(GLbyte * pc); extern _X_HIDDEN void __glXDisp_VertexAttrib3sv(GLbyte * pc); extern _X_HIDDEN void __glXDispSwap_VertexAttrib3sv(GLbyte * pc); extern _X_HIDDEN int __glXDisp_IsQuery(struct __GLXclientStateRec *, GLbyte *); @@ -792,8 +792,6 @@ extern _X_HIDDEN void __glXDisp_MultiTexCoord1iv(GLbyte * pc); extern _X_HIDDEN void __glXDispSwap_MultiTexCoord1iv(GLbyte * pc); extern _X_HIDDEN void __glXDisp_Vertex2fv(GLbyte * pc); extern _X_HIDDEN void __glXDispSwap_Vertex2fv(GLbyte * pc); -extern _X_HIDDEN void __glXDisp_SampleMaskSGIS(GLbyte * pc); -extern _X_HIDDEN void __glXDispSwap_SampleMaskSGIS(GLbyte * pc); extern _X_HIDDEN void __glXDisp_BindRenderbufferEXT(GLbyte * pc); extern _X_HIDDEN void __glXDispSwap_BindRenderbufferEXT(GLbyte * pc); extern _X_HIDDEN void __glXDisp_Vertex3sv(GLbyte * pc); @@ -818,6 +816,8 @@ extern _X_HIDDEN void __glXDisp_VertexAttribs4fvNV(GLbyte * pc); extern _X_HIDDEN void __glXDispSwap_VertexAttribs4fvNV(GLbyte * pc); extern _X_HIDDEN void __glXDisp_TexGendv(GLbyte * pc); extern _X_HIDDEN void __glXDispSwap_TexGendv(GLbyte * pc); +extern _X_HIDDEN void __glXDisp_VertexAttribs4dvNV(GLbyte * pc); +extern _X_HIDDEN void __glXDispSwap_VertexAttribs4dvNV(GLbyte * pc); extern _X_HIDDEN void __glXDisp_ResetMinmax(GLbyte * pc); extern _X_HIDDEN void __glXDispSwap_ResetMinmax(GLbyte * pc); extern _X_HIDDEN int __glXDisp_GetConvolutionParameterfv(struct __GLXclientStateRec *, GLbyte *); diff --git a/xorg-server/glx/indirect_dispatch_swap.c b/xorg-server/glx/indirect_dispatch_swap.c index 7b493814b..4096023a7 100644 --- a/xorg-server/glx/indirect_dispatch_swap.c +++ b/xorg-server/glx/indirect_dispatch_swap.c @@ -43,7 +43,6 @@ #include "singlesize.h" #include "glapi.h" #include "glapitable.h" -#include "glthread.h" #include "dispatch.h" #define __GLX_PAD(x) (((x) + 3) & ~3) diff --git a/xorg-server/glx/indirect_texture_compression.c b/xorg-server/glx/indirect_texture_compression.c index 551250dc5..112811e50 100644 --- a/xorg-server/glx/indirect_texture_compression.c +++ b/xorg-server/glx/indirect_texture_compression.c @@ -37,9 +37,6 @@ #include "indirect_dispatch.h" #include "glfunctions.h" -#define glGetCompressedTexImageARB glGetCompressedTexImage - - int __glXDisp_GetCompressedTexImage(struct __GLXclientStateRec *cl, GLbyte * pc) { @@ -59,9 +56,11 @@ __glXDisp_GetCompressedTexImage(struct __GLXclientStateRec *cl, GLbyte * pc) &compsize); if (compsize != 0) { + PFNGLGETCOMPRESSEDTEXIMAGEARBPROC GetCompressedTexImageARB = + __glGetProcAddress("glGetCompressedTexImageARB"); __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1); __glXClearErrorOccured(); - glGetCompressedTexImageARB(target, level, answer); + GetCompressedTexImageARB(target, level, answer); } if (__glXErrorOccured()) { @@ -101,9 +100,11 @@ __glXDispSwap_GetCompressedTexImage(struct __GLXclientStateRec *cl, GLbyte * pc) &compsize); if (compsize != 0) { + PFNGLGETCOMPRESSEDTEXIMAGEARBPROC GetCompressedTexImageARB = + __glGetProcAddress("glGetCompressedTexImageARB"); __GLX_GET_ANSWER_BUFFER(answer, cl, compsize, 1); __glXClearErrorOccured(); - glGetCompressedTexImageARB(target, level, answer); + GetCompressedTexImageARB(target, level, answer); } if (__glXErrorOccured()) { diff --git a/xorg-server/glx/remap_helper.h b/xorg-server/glx/remap_helper.h index 9c2c68cc8..eac065709 100644 --- a/xorg-server/glx/remap_helper.h +++ b/xorg-server/glx/remap_helper.h @@ -43,5767 +43,5943 @@ static const char _mesa_function_pool[] = "iff\0" "glMapGrid1f\0" "\0" - /* _mesa_function_pool[34]: VertexAttribI4uivEXT (will be remapped) */ - "ip\0" - "glVertexAttribI4uivEXT\0" - "glVertexAttribI4uiv\0" - "\0" - /* _mesa_function_pool[81]: RasterPos4i (offset 82) */ - "iiii\0" - "glRasterPos4i\0" - "\0" - /* _mesa_function_pool[101]: VertexAttribI4uiEXT (will be remapped) */ - "iiiii\0" - "glVertexAttribI4uiEXT\0" - "glVertexAttribI4ui\0" - "\0" - /* _mesa_function_pool[149]: RasterPos4d (offset 78) */ - "dddd\0" - "glRasterPos4d\0" + /* _mesa_function_pool[34]: ReplacementCodeuiVertex3fvSUN (dynamic) */ + "pp\0" + "glReplacementCodeuiVertex3fvSUN\0" "\0" - /* _mesa_function_pool[169]: NewList (dynamic) */ + /* _mesa_function_pool[70]: PolygonOffsetx (will be remapped) */ "ii\0" - "glNewList\0" - "\0" - /* _mesa_function_pool[183]: RasterPos4f (offset 80) */ - "ffff\0" - "glRasterPos4f\0" - "\0" - /* _mesa_function_pool[203]: LoadIdentity (offset 290) */ - "\0" - "glLoadIdentity\0" - "\0" - /* _mesa_function_pool[220]: VertexAttribI4iEXT (will be remapped) */ - "iiiii\0" - "glVertexAttribI4iEXT\0" - "glVertexAttribI4i\0" - "\0" - /* _mesa_function_pool[266]: ConvolutionFilter1D (offset 348) */ - "iiiiip\0" - "glConvolutionFilter1D\0" - "glConvolutionFilter1DEXT\0" - "\0" - /* _mesa_function_pool[321]: GetQueryIndexediv (will be remapped) */ - "iiip\0" - "glGetQueryIndexediv\0" - "\0" - /* _mesa_function_pool[347]: RasterPos3dv (offset 71) */ - "p\0" - "glRasterPos3dv\0" - "\0" - /* _mesa_function_pool[365]: GetProgramiv (will be remapped) */ - "iip\0" - "glGetProgramiv\0" - "\0" - /* _mesa_function_pool[385]: GetQueryObjectui64v (will be remapped) */ - "iip\0" - "glGetQueryObjectui64v\0" - "glGetQueryObjectui64vEXT\0" - "\0" - /* _mesa_function_pool[437]: TexBuffer (will be remapped) */ - "iii\0" - "glTexBufferARB\0" - "glTexBuffer\0" - "\0" - /* _mesa_function_pool[469]: TexCoord1iv (offset 99) */ - "p\0" - "glTexCoord1iv\0" - "\0" - /* _mesa_function_pool[486]: TexCoord4sv (offset 125) */ - "p\0" - "glTexCoord4sv\0" - "\0" - /* _mesa_function_pool[503]: RasterPos4s (offset 84) */ - "iiii\0" - "glRasterPos4s\0" - "\0" - /* _mesa_function_pool[523]: PixelTexGenParameterfvSGIS (dynamic) */ - "ip\0" - "glPixelTexGenParameterfvSGIS\0" - "\0" - /* _mesa_function_pool[556]: TrackMatrixNV (will be remapped) */ - "iiii\0" - "glTrackMatrixNV\0" - "\0" - /* _mesa_function_pool[578]: VertexAttrib3dv (will be remapped) */ - "ip\0" - "glVertexAttrib3dv\0" - "glVertexAttrib3dvARB\0" - "\0" - /* _mesa_function_pool[621]: TexCoord1f (offset 96) */ - "f\0" - "glTexCoord1f\0" - "\0" - /* _mesa_function_pool[637]: Tangent3bvEXT (dynamic) */ - "p\0" - "glTangent3bvEXT\0" - "\0" - /* _mesa_function_pool[656]: TexCoord1d (offset 94) */ - "d\0" - "glTexCoord1d\0" - "\0" - /* _mesa_function_pool[672]: ViewportArrayv (will be remapped) */ - "iip\0" - "glViewportArrayv\0" - "\0" - /* _mesa_function_pool[694]: VertexAttrib4ubvNV (will be remapped) */ - "ip\0" - "glVertexAttrib4ubvNV\0" - "\0" - /* _mesa_function_pool[719]: TexCoord1i (offset 98) */ - "i\0" - "glTexCoord1i\0" - "\0" - /* _mesa_function_pool[735]: GetProgramNamedParameterdvNV (will be remapped) */ - "iipp\0" - "glGetProgramNamedParameterdvNV\0" + "glPolygonOffsetxOES\0" + "glPolygonOffsetx\0" "\0" - /* _mesa_function_pool[772]: Histogram (offset 367) */ + /* _mesa_function_pool[111]: FramebufferTexture (will be remapped) */ "iiii\0" - "glHistogram\0" - "glHistogramEXT\0" - "\0" - /* _mesa_function_pool[805]: TexCoord1s (offset 100) */ - "i\0" - "glTexCoord1s\0" - "\0" - /* _mesa_function_pool[821]: GetMapfv (offset 267) */ - "iip\0" - "glGetMapfv\0" - "\0" - /* _mesa_function_pool[837]: EvalCoord1f (offset 230) */ - "f\0" - "glEvalCoord1f\0" - "\0" - /* _mesa_function_pool[854]: Uniform2fv (will be remapped) */ - "iip\0" - "glUniform2fv\0" - "glUniform2fvARB\0" + "glFramebufferTextureARB\0" + "glFramebufferTexture\0" "\0" - /* _mesa_function_pool[888]: TexCoordP1ui (will be remapped) */ + /* _mesa_function_pool[162]: TexCoordP1ui (will be remapped) */ "ii\0" "glTexCoordP1ui\0" "\0" - /* _mesa_function_pool[907]: TexImage4DSGIS (dynamic) */ - "iiiiiiiiiip\0" - "glTexImage4DSGIS\0" - "\0" - /* _mesa_function_pool[937]: PolygonStipple (offset 175) */ + /* _mesa_function_pool[181]: PolygonStipple (offset 175) */ "p\0" "glPolygonStipple\0" "\0" - /* _mesa_function_pool[957]: WeightPointerARB (dynamic) */ - "iiip\0" - "glWeightPointerARB\0" - "glWeightPointerOES\0" - "\0" - /* _mesa_function_pool[1001]: ListParameterfSGIX (dynamic) */ + /* _mesa_function_pool[201]: ListParameterfSGIX (dynamic) */ "iif\0" "glListParameterfSGIX\0" "\0" - /* _mesa_function_pool[1027]: MultiTexCoord1dv (offset 377) */ + /* _mesa_function_pool[227]: MultiTexCoord1dv (offset 377) */ "ip\0" "glMultiTexCoord1dv\0" "glMultiTexCoord1dvARB\0" "\0" - /* _mesa_function_pool[1072]: TexStorage1D (will be remapped) */ - "iiii\0" - "glTexStorage1D\0" - "\0" - /* _mesa_function_pool[1093]: TexCoord4fColor4fNormal3fVertex4fvSUN (dynamic) */ - "pppp\0" - "glTexCoord4fColor4fNormal3fVertex4fvSUN\0" - "\0" - /* _mesa_function_pool[1139]: GetnPolygonStippleARB (will be remapped) */ - "ip\0" - "glGetnPolygonStippleARB\0" - "\0" - /* _mesa_function_pool[1167]: GetPixelMapfv (offset 271) */ - "ip\0" - "glGetPixelMapfv\0" - "\0" - /* _mesa_function_pool[1187]: Color3uiv (offset 22) */ - "p\0" - "glColor3uiv\0" - "\0" - /* _mesa_function_pool[1202]: IsEnabled (offset 286) */ + /* _mesa_function_pool[272]: IsEnabled (offset 286) */ "i\0" "glIsEnabled\0" "\0" - /* _mesa_function_pool[1217]: DebugMessageCallbackARB (will be remapped) */ - "pp\0" - "glDebugMessageCallbackARB\0" - "\0" - /* _mesa_function_pool[1247]: VertexAttrib4svNV (will be remapped) */ - "ip\0" - "glVertexAttrib4svNV\0" - "\0" - /* _mesa_function_pool[1271]: EvalCoord2fv (offset 235) */ - "p\0" - "glEvalCoord2fv\0" - "\0" - /* _mesa_function_pool[1289]: TexCoord2fColor4ubVertex3fvSUN (dynamic) */ - "ppp\0" - "glTexCoord2fColor4ubVertex3fvSUN\0" - "\0" - /* _mesa_function_pool[1327]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ - "ffffffffffff\0" - "glTexCoord2fColor4fNormal3fVertex3fSUN\0" + /* _mesa_function_pool[287]: GetTexFilterFuncSGIS (dynamic) */ + "iip\0" + "glGetTexFilterFuncSGIS\0" "\0" - /* _mesa_function_pool[1380]: AttachShader (will be remapped) */ + /* _mesa_function_pool[315]: AttachShader (will be remapped) */ "ii\0" "glAttachShader\0" "\0" - /* _mesa_function_pool[1399]: TextureStorage3DEXT (will be remapped) */ - "iiiiiii\0" - "glTextureStorage3DEXT\0" - "\0" - /* _mesa_function_pool[1430]: FramebufferTexture1D (will be remapped) */ - "iiiii\0" - "glFramebufferTexture1D\0" - "glFramebufferTexture1DEXT\0" - "\0" - /* _mesa_function_pool[1486]: VertexAttrib2fARB (will be remapped) */ - "iff\0" - "glVertexAttrib2f\0" - "glVertexAttrib2fARB\0" - "\0" - /* _mesa_function_pool[1528]: DrawTexxOES (will be remapped) */ - "iiiii\0" - "glDrawTexxOES\0" - "\0" - /* _mesa_function_pool[1549]: GetMapiv (offset 268) */ - "iip\0" - "glGetMapiv\0" - "\0" - /* _mesa_function_pool[1565]: VertexAttrib3fARB (will be remapped) */ + /* _mesa_function_pool[334]: VertexAttrib3fARB (will be remapped) */ "ifff\0" "glVertexAttrib3f\0" "glVertexAttrib3fARB\0" "\0" - /* _mesa_function_pool[1608]: WindowPos2fv (will be remapped) */ - "p\0" - "glWindowPos2fv\0" - "glWindowPos2fvARB\0" - "glWindowPos2fvMESA\0" - "\0" - /* _mesa_function_pool[1663]: Indexubv (offset 316) */ + /* _mesa_function_pool[377]: Indexubv (offset 316) */ "p\0" "glIndexubv\0" "\0" - /* _mesa_function_pool[1677]: GetShaderiv (will be remapped) */ - "iip\0" - "glGetShaderiv\0" - "\0" - /* _mesa_function_pool[1696]: TexImage3D (offset 371) */ - "iiiiiiiiip\0" - "glTexImage3D\0" - "glTexImage3DEXT\0" - "glTexImage3DOES\0" - "\0" - /* _mesa_function_pool[1753]: TexCoordP4ui (will be remapped) */ - "ii\0" - "glTexCoordP4ui\0" - "\0" - /* _mesa_function_pool[1772]: ReplacementCodeuiVertex3fvSUN (dynamic) */ - "pp\0" - "glReplacementCodeuiVertex3fvSUN\0" - "\0" - /* _mesa_function_pool[1808]: VertexAttrib1sv (will be remapped) */ - "ip\0" - "glVertexAttrib1sv\0" - "glVertexAttrib1svARB\0" - "\0" - /* _mesa_function_pool[1851]: BindFragDataLocation (will be remapped) */ + /* _mesa_function_pool[391]: MultiTexCoordP3uiv (will be remapped) */ "iip\0" - "glBindFragDataLocationEXT\0" - "glBindFragDataLocation\0" - "\0" - /* _mesa_function_pool[1905]: VertexAttribI4usv (will be remapped) */ - "ip\0" - "glVertexAttribI4usvEXT\0" - "glVertexAttribI4usv\0" + "glMultiTexCoordP3uiv\0" "\0" - /* _mesa_function_pool[1952]: EdgeFlagPointer (offset 312) */ - "ip\0" - "glEdgeFlagPointer\0" + /* _mesa_function_pool[417]: Color4fNormal3fVertex3fSUN (dynamic) */ + "ffffffffff\0" + "glColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[1974]: Color3ubv (offset 20) */ + /* _mesa_function_pool[458]: Color3ubv (offset 20) */ "p\0" "glColor3ubv\0" "\0" - /* _mesa_function_pool[1989]: Vertex3dv (offset 135) */ - "p\0" - "glVertex3dv\0" - "\0" - /* _mesa_function_pool[2004]: ReplacementCodeuiTexCoord2fVertex3fvSUN (dynamic) */ - "ppp\0" - "glReplacementCodeuiTexCoord2fVertex3fvSUN\0" - "\0" - /* _mesa_function_pool[2051]: CreateShaderProgramEXT (will be remapped) */ - "ip\0" - "glCreateShaderProgramEXT\0" - "\0" - /* _mesa_function_pool[2080]: GetnMapivARB (will be remapped) */ + /* _mesa_function_pool[473]: GetCombinerOutputParameterfvNV (dynamic) */ "iiip\0" - "glGetnMapivARB\0" + "glGetCombinerOutputParameterfvNV\0" "\0" - /* _mesa_function_pool[2101]: Binormal3ivEXT (dynamic) */ + /* _mesa_function_pool[512]: Binormal3ivEXT (dynamic) */ "p\0" "glBinormal3ivEXT\0" "\0" - /* _mesa_function_pool[2121]: WindowPos2f (will be remapped) */ - "ff\0" - "glWindowPos2f\0" - "glWindowPos2fARB\0" - "glWindowPos2fMESA\0" - "\0" - /* _mesa_function_pool[2174]: LightModeliv (offset 166) */ - "ip\0" - "glLightModeliv\0" - "\0" - /* _mesa_function_pool[2193]: WindowPos2d (will be remapped) */ - "dd\0" - "glWindowPos2d\0" - "glWindowPos2dARB\0" - "glWindowPos2dMESA\0" - "\0" - /* _mesa_function_pool[2246]: VertexAttribs1dvNV (will be remapped) */ - "iip\0" - "glVertexAttribs1dvNV\0" - "\0" - /* _mesa_function_pool[2272]: GetVertexAttribfv (will be remapped) */ - "iip\0" - "glGetVertexAttribfv\0" - "glGetVertexAttribfvARB\0" - "\0" - /* _mesa_function_pool[2320]: GetImageTransformParameterfvHP (dynamic) */ + /* _mesa_function_pool[532]: GetImageTransformParameterfvHP (dynamic) */ "iip\0" "glGetImageTransformParameterfvHP\0" "\0" - /* _mesa_function_pool[2358]: Normal3bv (offset 53) */ - "p\0" - "glNormal3bv\0" - "\0" - /* _mesa_function_pool[2373]: PointSizePointerOES (will be remapped) */ - "iip\0" - "glPointSizePointerOES\0" - "\0" - /* _mesa_function_pool[2400]: Color3fVertex3fSUN (dynamic) */ - "ffffff\0" - "glColor3fVertex3fSUN\0" - "\0" - /* _mesa_function_pool[2429]: TexGeniv (offset 193) */ - "iip\0" - "glTexGeniv\0" - "glTexGenivOES\0" - "\0" - /* _mesa_function_pool[2459]: TexCoordP1uiv (will be remapped) */ + /* _mesa_function_pool[570]: GetClipPlanex (will be remapped) */ "ip\0" - "glTexCoordP1uiv\0" - "\0" - /* _mesa_function_pool[2479]: BeginQueryIndexed (will be remapped) */ - "iii\0" - "glBeginQueryIndexed\0" + "glGetClipPlanexOES\0" + "glGetClipPlanex\0" "\0" - /* _mesa_function_pool[2504]: WeightubvARB (dynamic) */ + /* _mesa_function_pool[609]: TexCoordP1uiv (will be remapped) */ "ip\0" - "glWeightubvARB\0" - "\0" - /* _mesa_function_pool[2523]: WindowPos2s (will be remapped) */ - "ii\0" - "glWindowPos2s\0" - "glWindowPos2sARB\0" - "glWindowPos2sMESA\0" - "\0" - /* _mesa_function_pool[2576]: Vertex3iv (offset 139) */ - "p\0" - "glVertex3iv\0" + "glTexCoordP1uiv\0" "\0" - /* _mesa_function_pool[2591]: RenderbufferStorage (will be remapped) */ + /* _mesa_function_pool[629]: RenderbufferStorage (will be remapped) */ "iiii\0" "glRenderbufferStorage\0" "glRenderbufferStorageEXT\0" "glRenderbufferStorageOES\0" "\0" - /* _mesa_function_pool[2669]: CopyConvolutionFilter1D (offset 354) */ - "iiiii\0" - "glCopyConvolutionFilter1D\0" - "glCopyConvolutionFilter1DEXT\0" - "\0" - /* _mesa_function_pool[2731]: VertexAttribI1uiEXT (will be remapped) */ - "ii\0" - "glVertexAttribI1uiEXT\0" - "glVertexAttribI1ui\0" - "\0" - /* _mesa_function_pool[2776]: ReplacementCodeuiNormal3fVertex3fSUN (dynamic) */ - "iffffff\0" - "glReplacementCodeuiNormal3fVertex3fSUN\0" - "\0" - /* _mesa_function_pool[2824]: DeleteSync (will be remapped) */ - "i\0" - "glDeleteSync\0" - "\0" - /* _mesa_function_pool[2840]: DrawArraysIndirect (will be remapped) */ + /* _mesa_function_pool[707]: GetClipPlanef (will be remapped) */ "ip\0" - "glDrawArraysIndirect\0" + "glGetClipPlanefOES\0" + "glGetClipPlanef\0" "\0" - /* _mesa_function_pool[2865]: GenQueries (will be remapped) */ + /* _mesa_function_pool[746]: DrawArraysIndirect (will be remapped) */ "ip\0" - "glGenQueries\0" - "glGenQueriesARB\0" - "\0" - /* _mesa_function_pool[2898]: BlendColor (offset 336) */ - "ffff\0" - "glBlendColor\0" - "glBlendColorEXT\0" - "\0" - /* _mesa_function_pool[2933]: GetVertexAttribIuiv (will be remapped) */ - "iip\0" - "glGetVertexAttribIuivEXT\0" - "glGetVertexAttribIuiv\0" - "\0" - /* _mesa_function_pool[2985]: TexCoord2fVertex3fvSUN (dynamic) */ - "pp\0" - "glTexCoord2fVertex3fvSUN\0" - "\0" - /* _mesa_function_pool[3014]: CompressedTexImage3D (will be remapped) */ - "iiiiiiiip\0" - "glCompressedTexImage3D\0" - "glCompressedTexImage3DARB\0" - "glCompressedTexImage3DOES\0" + "glDrawArraysIndirect\0" "\0" - /* _mesa_function_pool[3100]: GetDebugMessageLogARB (will be remapped) */ - "iipppppp\0" - "glGetDebugMessageLogARB\0" + /* _mesa_function_pool[771]: Uniform3i (will be remapped) */ + "iiii\0" + "glUniform3i\0" + "glUniform3iARB\0" "\0" - /* _mesa_function_pool[3134]: VDPAUGetSurfaceivNV (will be remapped) */ + /* _mesa_function_pool[804]: VDPAUGetSurfaceivNV (will be remapped) */ "iiipp\0" "glVDPAUGetSurfaceivNV\0" "\0" - /* _mesa_function_pool[3163]: ReadInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[833]: ReadInstrumentsSGIX (dynamic) */ "i\0" "glReadInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[3188]: CallLists (offset 3) */ - "iip\0" - "glCallLists\0" - "\0" - /* _mesa_function_pool[3205]: Uniform3f (will be remapped) */ + /* _mesa_function_pool[858]: Uniform3f (will be remapped) */ "ifff\0" "glUniform3f\0" "glUniform3fARB\0" "\0" - /* _mesa_function_pool[3238]: UniformMatrix2fv (will be remapped) */ + /* _mesa_function_pool[891]: UniformMatrix2x4fv (will be remapped) */ "iiip\0" - "glUniformMatrix2fv\0" - "glUniformMatrix2fvARB\0" - "\0" - /* _mesa_function_pool[3285]: ReadnPixelsARB (will be remapped) */ - "iiiiiiip\0" - "glReadnPixelsARB\0" + "glUniformMatrix2x4fv\0" "\0" - /* _mesa_function_pool[3312]: Color4ubVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[918]: QueryMatrixxOES (will be remapped) */ "pp\0" - "glColor4ubVertex3fvSUN\0" + "glQueryMatrixxOES\0" "\0" - /* _mesa_function_pool[3339]: Normal3iv (offset 59) */ + /* _mesa_function_pool[940]: Normal3iv (offset 59) */ "p\0" "glNormal3iv\0" "\0" - /* _mesa_function_pool[3354]: SecondaryColor3dv (will be remapped) */ - "p\0" - "glSecondaryColor3dv\0" - "glSecondaryColor3dvEXT\0" - "\0" - /* _mesa_function_pool[3400]: DrawTexiOES (will be remapped) */ + /* _mesa_function_pool[955]: DrawTexiOES (will be remapped) */ "iiiii\0" "glDrawTexiOES\0" "\0" - /* _mesa_function_pool[3421]: PassThrough (offset 199) */ - "f\0" - "glPassThrough\0" - "\0" - /* _mesa_function_pool[3438]: VertexP3ui (will be remapped) */ - "ii\0" - "glVertexP3ui\0" - "\0" - /* _mesa_function_pool[3455]: TransformFeedbackVaryings (will be remapped) */ - "iipi\0" - "glTransformFeedbackVaryings\0" - "glTransformFeedbackVaryingsEXT\0" - "\0" - /* _mesa_function_pool[3520]: GetListParameterfvSGIX (dynamic) */ - "iip\0" - "glGetListParameterfvSGIX\0" - "\0" - /* _mesa_function_pool[3550]: Viewport (offset 305) */ + /* _mesa_function_pool[976]: Viewport (offset 305) */ "iiii\0" "glViewport\0" "\0" - /* _mesa_function_pool[3567]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[993]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */ "pppp\0" "glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[3623]: WindowPos4svMESA (will be remapped) */ + /* _mesa_function_pool[1049]: WindowPos4svMESA (will be remapped) */ "p\0" "glWindowPos4svMESA\0" "\0" - /* _mesa_function_pool[3645]: CreateProgramObjectARB (will be remapped) */ - "\0" - "glCreateProgramObjectARB\0" - "\0" - /* _mesa_function_pool[3672]: UniformMatrix3fv (will be remapped) */ - "iiip\0" - "glUniformMatrix3fv\0" - "glUniformMatrix3fvARB\0" - "\0" - /* _mesa_function_pool[3719]: FragmentLightModelivSGIX (dynamic) */ + /* _mesa_function_pool[1071]: FragmentLightModelivSGIX (dynamic) */ "ip\0" "glFragmentLightModelivSGIX\0" "\0" - /* _mesa_function_pool[3750]: UniformMatrix4x3fv (will be remapped) */ - "iiip\0" - "glUniformMatrix4x3fv\0" - "\0" - /* _mesa_function_pool[3777]: PrioritizeTextures (offset 331) */ - "ipp\0" - "glPrioritizeTextures\0" - "glPrioritizeTexturesEXT\0" - "\0" - /* _mesa_function_pool[3827]: VertexAttribI3uiEXT (will be remapped) */ - "iiii\0" - "glVertexAttribI3uiEXT\0" - "glVertexAttribI3ui\0" - "\0" - /* _mesa_function_pool[3874]: VertexAttribDivisor (will be remapped) */ - "ii\0" - "glVertexAttribDivisorARB\0" - "glVertexAttribDivisor\0" - "\0" - /* _mesa_function_pool[3925]: AsyncMarkerSGIX (dynamic) */ - "i\0" - "glAsyncMarkerSGIX\0" - "\0" - /* _mesa_function_pool[3946]: GetQueryiv (will be remapped) */ - "iip\0" - "glGetQueryiv\0" - "glGetQueryivARB\0" + /* _mesa_function_pool[1102]: DeleteVertexArrays (will be remapped) */ + "ip\0" + "glDeleteVertexArrays\0" + "glDeleteVertexArraysAPPLE\0" + "glDeleteVertexArraysOES\0" "\0" - /* _mesa_function_pool[3980]: ClearColorIuiEXT (will be remapped) */ + /* _mesa_function_pool[1177]: ClearColorIuiEXT (will be remapped) */ "iiii\0" "glClearColorIuiEXT\0" "\0" - /* _mesa_function_pool[4005]: VertexAttrib3d (will be remapped) */ - "iddd\0" - "glVertexAttrib3d\0" - "glVertexAttrib3dARB\0" - "\0" - /* _mesa_function_pool[4048]: Frustumx (will be remapped) */ - "iiiiii\0" - "glFrustumxOES\0" - "glFrustumx\0" - "\0" - /* _mesa_function_pool[4081]: ResetHistogram (offset 369) */ - "i\0" - "glResetHistogram\0" - "glResetHistogramEXT\0" - "\0" - /* _mesa_function_pool[4121]: GetProgramNamedParameterfvNV (will be remapped) */ - "iipp\0" - "glGetProgramNamedParameterfvNV\0" + /* _mesa_function_pool[1202]: GetnConvolutionFilterARB (will be remapped) */ + "iiiip\0" + "glGetnConvolutionFilterARB\0" "\0" - /* _mesa_function_pool[4158]: GetLightxv (will be remapped) */ + /* _mesa_function_pool[1236]: GetLightxv (will be remapped) */ "iip\0" "glGetLightxvOES\0" "glGetLightxv\0" "\0" - /* _mesa_function_pool[4192]: CompressedTexSubImage2D (will be remapped) */ - "iiiiiiiip\0" - "glCompressedTexSubImage2D\0" - "glCompressedTexSubImage2DARB\0" + /* _mesa_function_pool[1270]: GetConvolutionParameteriv (offset 358) */ + "iip\0" + "glGetConvolutionParameteriv\0" + "glGetConvolutionParameterivEXT\0" "\0" - /* _mesa_function_pool[4258]: GenFencesNV (dynamic) */ + /* _mesa_function_pool[1334]: VertexAttrib4usv (will be remapped) */ "ip\0" - "glGenFencesNV\0" + "glVertexAttrib4usv\0" + "glVertexAttrib4usvARB\0" "\0" - /* _mesa_function_pool[4276]: GetMaterialxv (will be remapped) */ - "iip\0" - "glGetMaterialxvOES\0" - "glGetMaterialxv\0" + /* _mesa_function_pool[1379]: TextureStorage1DEXT (will be remapped) */ + "iiiii\0" + "glTextureStorage1DEXT\0" "\0" - /* _mesa_function_pool[4316]: ImageTransformParameterfHP (dynamic) */ - "iif\0" - "glImageTransformParameterfHP\0" + /* _mesa_function_pool[1408]: VertexAttrib4Nub (will be remapped) */ + "iiiii\0" + "glVertexAttrib4Nub\0" + "glVertexAttrib4NubARB\0" "\0" - /* _mesa_function_pool[4350]: MatrixIndexusvARB (dynamic) */ - "ip\0" - "glMatrixIndexusvARB\0" + /* _mesa_function_pool[1456]: VertexAttribP3ui (will be remapped) */ + "iiii\0" + "glVertexAttribP3ui\0" "\0" - /* _mesa_function_pool[4374]: SecondaryColor3uiv (will be remapped) */ - "p\0" - "glSecondaryColor3uiv\0" - "glSecondaryColor3uivEXT\0" + /* _mesa_function_pool[1481]: Color4ubVertex3fSUN (dynamic) */ + "iiiifff\0" + "glColor4ubVertex3fSUN\0" "\0" - /* _mesa_function_pool[4422]: GetnConvolutionFilterARB (will be remapped) */ - "iiiip\0" - "glGetnConvolutionFilterARB\0" + /* _mesa_function_pool[1512]: PointSize (offset 173) */ + "f\0" + "glPointSize\0" "\0" - /* _mesa_function_pool[4456]: TexCoord2sv (offset 109) */ - "p\0" - "glTexCoord2sv\0" + /* _mesa_function_pool[1527]: TexCoord2fVertex3fSUN (dynamic) */ + "fffff\0" + "glTexCoord2fVertex3fSUN\0" "\0" - /* _mesa_function_pool[4473]: GetClipPlanex (will be remapped) */ - "ip\0" - "glGetClipPlanexOES\0" - "glGetClipPlanex\0" + /* _mesa_function_pool[1558]: PopName (offset 200) */ "\0" - /* _mesa_function_pool[4512]: Vertex4dv (offset 143) */ - "p\0" - "glVertex4dv\0" + "glPopName\0" "\0" - /* _mesa_function_pool[4527]: StencilMaskSeparate (will be remapped) */ - "ii\0" - "glStencilMaskSeparate\0" + /* _mesa_function_pool[1570]: VertexAttrib4ubNV (will be remapped) */ + "iiiii\0" + "glVertexAttrib4ubNV\0" "\0" - /* _mesa_function_pool[4553]: MapBuffer (will be remapped) */ - "ii\0" - "glMapBuffer\0" - "glMapBufferARB\0" - "glMapBufferOES\0" + /* _mesa_function_pool[1597]: ValidateProgramPipeline (will be remapped) */ + "i\0" + "glValidateProgramPipeline\0" "\0" - /* _mesa_function_pool[4599]: PolygonOffsetx (will be remapped) */ - "ii\0" - "glPolygonOffsetxOES\0" - "glPolygonOffsetx\0" + /* _mesa_function_pool[1626]: BindFragDataLocationIndexed (will be remapped) */ + "iiip\0" + "glBindFragDataLocationIndexed\0" "\0" - /* _mesa_function_pool[4640]: VertexAttrib4Nbv (will be remapped) */ + /* _mesa_function_pool[1662]: GetClipPlane (offset 259) */ "ip\0" - "glVertexAttrib4Nbv\0" - "glVertexAttrib4NbvARB\0" + "glGetClipPlane\0" "\0" - /* _mesa_function_pool[4685]: ProgramLocalParameter4dARB (will be remapped) */ - "iidddd\0" - "glProgramLocalParameter4dARB\0" + /* _mesa_function_pool[1681]: CombinerParameterfvNV (dynamic) */ + "ip\0" + "glCombinerParameterfvNV\0" "\0" - /* _mesa_function_pool[4722]: ProgramBinary (will be remapped) */ - "iipi\0" - "glProgramBinary\0" - "glProgramBinaryOES\0" + /* _mesa_function_pool[1709]: TexCoordP4uiv (will be remapped) */ + "ip\0" + "glTexCoordP4uiv\0" "\0" - /* _mesa_function_pool[4763]: InvalidateTexImage (will be remapped) */ - "ii\0" - "glInvalidateTexImage\0" + /* _mesa_function_pool[1729]: VertexAttribs3dvNV (will be remapped) */ + "iip\0" + "glVertexAttribs3dvNV\0" "\0" - /* _mesa_function_pool[4788]: Uniform4ui (will be remapped) */ - "iiiii\0" - "glUniform4uiEXT\0" - "glUniform4ui\0" + /* _mesa_function_pool[1755]: GenQueries (will be remapped) */ + "ip\0" + "glGenQueries\0" + "glGenQueriesARB\0" "\0" - /* _mesa_function_pool[4824]: VertexAttribs2svNV (will be remapped) */ - "iip\0" - "glVertexAttribs2svNV\0" + /* _mesa_function_pool[1788]: ProgramUniform4iv (will be remapped) */ + "iiip\0" + "glProgramUniform4iv\0" "\0" - /* _mesa_function_pool[4850]: Color3sv (offset 18) */ - "p\0" - "glColor3sv\0" + /* _mesa_function_pool[1814]: ObjectUnpurgeableAPPLE (will be remapped) */ + "iii\0" + "glObjectUnpurgeableAPPLE\0" "\0" - /* _mesa_function_pool[4864]: LoadMatrixx (will be remapped) */ + /* _mesa_function_pool[1844]: TexCoord2iv (offset 107) */ "p\0" - "glLoadMatrixxOES\0" - "glLoadMatrixx\0" + "glTexCoord2iv\0" "\0" - /* _mesa_function_pool[4898]: GetConvolutionParameteriv (offset 358) */ - "iip\0" - "glGetConvolutionParameteriv\0" - "glGetConvolutionParameterivEXT\0" + /* _mesa_function_pool[1861]: TexImage2DMultisample (will be remapped) */ + "iiiiii\0" + "glTexImage2DMultisample\0" "\0" - /* _mesa_function_pool[4962]: DeleteSamplers (will be remapped) */ - "ip\0" - "glDeleteSamplers\0" + /* _mesa_function_pool[1893]: TexParameterx (will be remapped) */ + "iii\0" + "glTexParameterxOES\0" + "glTexParameterx\0" "\0" - /* _mesa_function_pool[4983]: VertexAttrib1fARB (will be remapped) */ - "if\0" - "glVertexAttrib1f\0" - "glVertexAttrib1fARB\0" + /* _mesa_function_pool[1933]: Rotatef (offset 300) */ + "ffff\0" + "glRotatef\0" "\0" - /* _mesa_function_pool[5024]: Vertex2dv (offset 127) */ - "p\0" - "glVertex2dv\0" + /* _mesa_function_pool[1949]: TexParameterf (offset 178) */ + "iif\0" + "glTexParameterf\0" "\0" - /* _mesa_function_pool[5039]: TestFenceNV (dynamic) */ - "i\0" - "glTestFenceNV\0" + /* _mesa_function_pool[1970]: TexParameteri (offset 180) */ + "iii\0" + "glTexParameteri\0" "\0" - /* _mesa_function_pool[5056]: DeleteRenderbuffers (will be remapped) */ - "ip\0" - "glDeleteRenderbuffers\0" - "glDeleteRenderbuffersEXT\0" - "glDeleteRenderbuffersOES\0" + /* _mesa_function_pool[1991]: GetUniformiv (will be remapped) */ + "iip\0" + "glGetUniformiv\0" + "glGetUniformivARB\0" "\0" - /* _mesa_function_pool[5132]: MultiTexCoord1fvARB (offset 379) */ - "ip\0" - "glMultiTexCoord1fv\0" - "glMultiTexCoord1fvARB\0" + /* _mesa_function_pool[2029]: ClearBufferSubData (will be remapped) */ + "iiiiiip\0" + "glClearBufferSubData\0" "\0" - /* _mesa_function_pool[5177]: VertexAttribI4bv (will be remapped) */ - "ip\0" - "glVertexAttribI4bvEXT\0" - "glVertexAttribI4bv\0" + /* _mesa_function_pool[2059]: VDPAUFiniNV (will be remapped) */ "\0" - /* _mesa_function_pool[5222]: TexCoord3iv (offset 115) */ - "p\0" - "glTexCoord3iv\0" + "glVDPAUFiniNV\0" "\0" - /* _mesa_function_pool[5239]: GetObjectPtrLabel (will be remapped) */ - "pipp\0" - "glGetObjectPtrLabel\0" + /* _mesa_function_pool[2075]: GlobalAlphaFactordSUN (dynamic) */ + "d\0" + "glGlobalAlphaFactordSUN\0" "\0" - /* _mesa_function_pool[5265]: TexStorage2D (will be remapped) */ - "iiiii\0" - "glTexStorage2D\0" + /* _mesa_function_pool[2102]: ProgramUniformMatrix4x2fv (will be remapped) */ + "iiiip\0" + "glProgramUniformMatrix4x2fv\0" "\0" - /* _mesa_function_pool[5287]: LoadPaletteFromModelViewMatrixOES (dynamic) */ + /* _mesa_function_pool[2137]: ProgramUniform2f (will be remapped) */ + "iiff\0" + "glProgramUniform2f\0" "\0" - "glLoadPaletteFromModelViewMatrixOES\0" + /* _mesa_function_pool[2162]: PixelTransformParameterfvEXT (dynamic) */ + "iip\0" + "glPixelTransformParameterfvEXT\0" "\0" - /* _mesa_function_pool[5325]: ProgramParameteri (will be remapped) */ - "iii\0" - "glProgramParameteriARB\0" - "glProgramParameteri\0" + /* _mesa_function_pool[2198]: ProgramUniform2i (will be remapped) */ + "iiii\0" + "glProgramUniform2i\0" "\0" - /* _mesa_function_pool[5373]: VertexAttrib4usv (will be remapped) */ - "ip\0" - "glVertexAttrib4usv\0" - "glVertexAttrib4usvARB\0" + /* _mesa_function_pool[2223]: Fogx (will be remapped) */ + "ii\0" + "glFogxOES\0" + "glFogx\0" "\0" - /* _mesa_function_pool[5418]: FragmentLightfvSGIX (dynamic) */ - "iip\0" - "glFragmentLightfvSGIX\0" + /* _mesa_function_pool[2244]: Fogf (offset 153) */ + "if\0" + "glFogf\0" "\0" - /* _mesa_function_pool[5445]: GetPixelTexGenParameterivSGIS (dynamic) */ - "ip\0" - "glGetPixelTexGenParameterivSGIS\0" + /* _mesa_function_pool[2255]: TexSubImage1D (offset 332) */ + "iiiiiip\0" + "glTexSubImage1D\0" + "glTexSubImage1DEXT\0" "\0" - /* _mesa_function_pool[5481]: Color3fv (offset 14) */ + /* _mesa_function_pool[2299]: Color4usv (offset 40) */ "p\0" - "glColor3fv\0" - "\0" - /* _mesa_function_pool[5495]: VertexAttrib4fNV (will be remapped) */ - "iffff\0" - "glVertexAttrib4fNV\0" + "glColor4usv\0" "\0" - /* _mesa_function_pool[5521]: MultiTexCoord4sv (offset 407) */ - "ip\0" - "glMultiTexCoord4sv\0" - "glMultiTexCoord4svARB\0" + /* _mesa_function_pool[2314]: Fogi (offset 155) */ + "ii\0" + "glFogi\0" "\0" - /* _mesa_function_pool[5566]: TextureStorage1DEXT (will be remapped) */ - "iiiii\0" - "glTextureStorage1DEXT\0" + /* _mesa_function_pool[2325]: FinalCombinerInputNV (dynamic) */ + "iiii\0" + "glFinalCombinerInputNV\0" "\0" - /* _mesa_function_pool[5595]: ReplacementCodeubSUN (dynamic) */ + /* _mesa_function_pool[2354]: DepthFunc (offset 245) */ "i\0" - "glReplacementCodeubSUN\0" + "glDepthFunc\0" "\0" - /* _mesa_function_pool[5621]: VertexAttrib4Nub (will be remapped) */ + /* _mesa_function_pool[2369]: GetSamplerParameterIiv (will be remapped) */ + "iip\0" + "glGetSamplerParameterIiv\0" + "\0" + /* _mesa_function_pool[2399]: VertexAttribI4uiEXT (will be remapped) */ "iiiii\0" - "glVertexAttrib4Nub\0" - "glVertexAttrib4NubARB\0" + "glVertexAttribI4uiEXT\0" + "glVertexAttribI4ui\0" "\0" - /* _mesa_function_pool[5669]: PointParameterx (will be remapped) */ - "ii\0" - "glPointParameterxOES\0" - "glPointParameterx\0" + /* _mesa_function_pool[2447]: DrawElementsInstancedBaseVertexBaseInstance (will be remapped) */ + "iiipiii\0" + "glDrawElementsInstancedBaseVertexBaseInstance\0" "\0" - /* _mesa_function_pool[5712]: VertexAttribP3ui (will be remapped) */ - "iiii\0" - "glVertexAttribP3ui\0" + /* _mesa_function_pool[2502]: ProgramEnvParameter4dvARB (will be remapped) */ + "iip\0" + "glProgramEnvParameter4dvARB\0" + "glProgramParameter4dvNV\0" "\0" - /* _mesa_function_pool[5737]: Uniform4fv (will be remapped) */ + /* _mesa_function_pool[2559]: ColorTableParameteriv (offset 341) */ "iip\0" - "glUniform4fv\0" - "glUniform4fvARB\0" + "glColorTableParameteriv\0" + "glColorTableParameterivSGI\0" "\0" - /* _mesa_function_pool[5771]: TextureView (will be remapped) */ - "iiiiiiii\0" - "glTextureView\0" + /* _mesa_function_pool[2615]: GetnCompressedTexImageARB (will be remapped) */ + "iiip\0" + "glGetnCompressedTexImageARB\0" "\0" - /* _mesa_function_pool[5795]: Color4ubVertex3fSUN (dynamic) */ - "iiiifff\0" - "glColor4ubVertex3fSUN\0" + /* _mesa_function_pool[2649]: BindSampler (will be remapped) */ + "ii\0" + "glBindSampler\0" "\0" - /* _mesa_function_pool[5826]: FogCoordfEXT (will be remapped) */ - "f\0" - "glFogCoordf\0" - "glFogCoordfEXT\0" + /* _mesa_function_pool[2667]: MultiTexCoord2fARB (offset 386) */ + "iff\0" + "glMultiTexCoord2f\0" + "glMultiTexCoord2fARB\0" "\0" - /* _mesa_function_pool[5856]: PointSize (offset 173) */ - "f\0" - "glPointSize\0" + /* _mesa_function_pool[2711]: IndexPointer (offset 314) */ + "iip\0" + "glIndexPointer\0" "\0" - /* _mesa_function_pool[5871]: MultiTexCoord2i (offset 388) */ - "iii\0" - "glMultiTexCoord2i\0" - "glMultiTexCoord2iARB\0" + /* _mesa_function_pool[2731]: MultiTexCoord3iv (offset 397) */ + "ip\0" + "glMultiTexCoord3iv\0" + "glMultiTexCoord3ivARB\0" "\0" - /* _mesa_function_pool[5915]: TexCoord2fVertex3fSUN (dynamic) */ - "fffff\0" - "glTexCoord2fVertex3fSUN\0" + /* _mesa_function_pool[2776]: Finish (offset 216) */ "\0" - /* _mesa_function_pool[5946]: GetPerfMonitorCounterInfoAMD (will be remapped) */ - "iiip\0" - "glGetPerfMonitorCounterInfoAMD\0" + "glFinish\0" "\0" - /* _mesa_function_pool[5983]: MultiTexCoord2d (offset 384) */ - "idd\0" - "glMultiTexCoord2d\0" - "glMultiTexCoord2dARB\0" + /* _mesa_function_pool[2787]: ClearStencil (offset 207) */ + "i\0" + "glClearStencil\0" "\0" - /* _mesa_function_pool[6027]: UniformBlockBinding (will be remapped) */ - "iii\0" - "glUniformBlockBinding\0" + /* _mesa_function_pool[2805]: ClearColorIiEXT (will be remapped) */ + "iiii\0" + "glClearColorIiEXT\0" "\0" - /* _mesa_function_pool[6054]: PopName (offset 200) */ + /* _mesa_function_pool[2829]: LoadMatrixd (offset 292) */ + "p\0" + "glLoadMatrixd\0" "\0" - "glPopName\0" + /* _mesa_function_pool[2846]: VDPAURegisterOutputSurfaceNV (will be remapped) */ + "piip\0" + "glVDPAURegisterOutputSurfaceNV\0" "\0" - /* _mesa_function_pool[6066]: GetSamplerParameterfv (will be remapped) */ - "iip\0" - "glGetSamplerParameterfv\0" + /* _mesa_function_pool[2883]: VertexP4ui (will be remapped) */ + "ii\0" + "glVertexP4ui\0" "\0" - /* _mesa_function_pool[6095]: VertexAttrib2dv (will be remapped) */ + /* _mesa_function_pool[2900]: SpriteParameterfvSGIX (dynamic) */ "ip\0" - "glVertexAttrib2dv\0" - "glVertexAttrib2dvARB\0" + "glSpriteParameterfvSGIX\0" "\0" - /* _mesa_function_pool[6138]: VertexAttrib4Nusv (will be remapped) */ - "ip\0" - "glVertexAttrib4Nusv\0" - "glVertexAttrib4NusvARB\0" + /* _mesa_function_pool[2928]: GetActiveUniformName (will be remapped) */ + "iiipp\0" + "glGetActiveUniformName\0" "\0" - /* _mesa_function_pool[6185]: SampleMaski (will be remapped) */ - "ii\0" - "glSampleMaski\0" + /* _mesa_function_pool[2958]: DebugMessageControlARB (will be remapped) */ + "iiiipi\0" + "glDebugMessageControlARB\0" "\0" - /* _mesa_function_pool[6203]: GetProgramInfoLog (will be remapped) */ - "iipp\0" - "glGetProgramInfoLog\0" + /* _mesa_function_pool[2991]: GetnUniformivARB (will be remapped) */ + "iiip\0" + "glGetnUniformivARB\0" "\0" - /* _mesa_function_pool[6229]: VertexP2ui (will be remapped) */ - "ii\0" - "glVertexP2ui\0" + /* _mesa_function_pool[3016]: ReleaseShaderCompiler (will be remapped) */ "\0" - /* _mesa_function_pool[6246]: SamplerParameterIuiv (will be remapped) */ - "iip\0" - "glSamplerParameterIuiv\0" + "glReleaseShaderCompiler\0" "\0" - /* _mesa_function_pool[6274]: TexParameterx (will be remapped) */ + /* _mesa_function_pool[3042]: BlendFuncSeparate (will be remapped) */ + "iiii\0" + "glBlendFuncSeparate\0" + "glBlendFuncSeparateEXT\0" + "glBlendFuncSeparateINGR\0" + "glBlendFuncSeparateOES\0" + "\0" + /* _mesa_function_pool[3138]: Color3us (offset 23) */ "iii\0" - "glTexParameterxOES\0" - "glTexParameterx\0" + "glColor3us\0" "\0" - /* _mesa_function_pool[6314]: Vertex4sv (offset 149) */ - "p\0" - "glVertex4sv\0" + /* _mesa_function_pool[3154]: MultiDrawArraysIndirect (will be remapped) */ + "ipii\0" + "glMultiDrawArraysIndirect\0" "\0" - /* _mesa_function_pool[6329]: FramebufferTexture (will be remapped) */ - "iiii\0" - "glFramebufferTextureARB\0" - "glFramebufferTexture\0" + /* _mesa_function_pool[3186]: BufferStorage (will be remapped) */ + "iipi\0" + "glBufferStorage\0" "\0" - /* _mesa_function_pool[6380]: GetQueryObjecti64v (will be remapped) */ - "iip\0" - "glGetQueryObjecti64v\0" - "glGetQueryObjecti64vEXT\0" + /* _mesa_function_pool[3208]: Color3ub (offset 19) */ + "iii\0" + "glColor3ub\0" "\0" - /* _mesa_function_pool[6430]: GetActiveUniformBlockiv (will be remapped) */ - "iiip\0" - "glGetActiveUniformBlockiv\0" + /* _mesa_function_pool[3224]: GetInstrumentsSGIX (dynamic) */ "\0" - /* _mesa_function_pool[6462]: VertexAttrib4ubNV (will be remapped) */ - "iiiii\0" - "glVertexAttrib4ubNV\0" + "glGetInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[6489]: MultiTexCoord2s (offset 390) */ + /* _mesa_function_pool[3247]: Color3ui (offset 21) */ "iii\0" - "glMultiTexCoord2s\0" - "glMultiTexCoord2sARB\0" + "glColor3ui\0" "\0" - /* _mesa_function_pool[6533]: ClampColor (will be remapped) */ - "ii\0" - "glClampColorARB\0" - "glClampColor\0" + /* _mesa_function_pool[3263]: VertexAttrib4dvNV (will be remapped) */ + "ip\0" + "glVertexAttrib4dvNV\0" "\0" - /* _mesa_function_pool[6566]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */ - "ppp\0" - "glTexCoord2fNormal3fVertex3fvSUN\0" + /* _mesa_function_pool[3287]: AlphaFragmentOp2ATI (will be remapped) */ + "iiiiiiiii\0" + "glAlphaFragmentOp2ATI\0" "\0" - /* _mesa_function_pool[6604]: GetTexEnvfv (offset 276) */ - "iip\0" - "glGetTexEnvfv\0" + /* _mesa_function_pool[3320]: RasterPos4dv (offset 79) */ + "p\0" + "glRasterPos4dv\0" "\0" - /* _mesa_function_pool[6623]: BindAttribLocation (will be remapped) */ - "iip\0" - "glBindAttribLocation\0" - "glBindAttribLocationARB\0" + /* _mesa_function_pool[3338]: DeleteProgramPipelines (will be remapped) */ + "ip\0" + "glDeleteProgramPipelines\0" "\0" - /* _mesa_function_pool[6673]: BindFragDataLocationIndexed (will be remapped) */ - "iiip\0" - "glBindFragDataLocationIndexed\0" + /* _mesa_function_pool[3367]: LineWidthx (will be remapped) */ + "i\0" + "glLineWidthxOES\0" + "glLineWidthx\0" + "\0" + /* _mesa_function_pool[3399]: Indexdv (offset 45) */ + "p\0" + "glIndexdv\0" "\0" - /* _mesa_function_pool[6709]: DiscardFramebufferEXT (will be remapped) */ + /* _mesa_function_pool[3412]: GetnPixelMapfvARB (will be remapped) */ "iip\0" - "glDiscardFramebufferEXT\0" + "glGetnPixelMapfvARB\0" "\0" - /* _mesa_function_pool[6738]: VDPAURegisterVideoSurfaceNV (will be remapped) */ - "piip\0" - "glVDPAURegisterVideoSurfaceNV\0" + /* _mesa_function_pool[3437]: EGLImageTargetTexture2DOES (will be remapped) */ + "ip\0" + "glEGLImageTargetTexture2DOES\0" "\0" - /* _mesa_function_pool[6774]: BindTransformFeedback (will be remapped) */ - "ii\0" - "glBindTransformFeedback\0" + /* _mesa_function_pool[3470]: DepthMask (offset 211) */ + "i\0" + "glDepthMask\0" "\0" - /* _mesa_function_pool[6802]: TextureStorage2DEXT (will be remapped) */ - "iiiiii\0" - "glTextureStorage2DEXT\0" + /* _mesa_function_pool[3485]: WindowPos4ivMESA (will be remapped) */ + "p\0" + "glWindowPos4ivMESA\0" "\0" - /* _mesa_function_pool[6832]: BindBufferBase (will be remapped) */ - "iii\0" - "glBindBufferBase\0" - "glBindBufferBaseEXT\0" + /* _mesa_function_pool[3507]: GetShaderInfoLog (will be remapped) */ + "iipp\0" + "glGetShaderInfoLog\0" "\0" - /* _mesa_function_pool[6874]: Indexub (offset 315) */ + /* _mesa_function_pool[3532]: BindFragmentShaderATI (will be remapped) */ "i\0" - "glIndexub\0" + "glBindFragmentShaderATI\0" "\0" - /* _mesa_function_pool[6887]: GetPerfMonitorCounterDataAMD (will be remapped) */ - "iiipp\0" - "glGetPerfMonitorCounterDataAMD\0" + /* _mesa_function_pool[3559]: BlendFuncSeparateiARB (will be remapped) */ + "iiiii\0" + "glBlendFuncSeparateiARB\0" + "glBlendFuncSeparateIndexedAMD\0" "\0" - /* _mesa_function_pool[6925]: TexEnvi (offset 186) */ - "iii\0" - "glTexEnvi\0" + /* _mesa_function_pool[3620]: PixelTexGenParameteriSGIS (dynamic) */ + "ii\0" + "glPixelTexGenParameteriSGIS\0" "\0" - /* _mesa_function_pool[6940]: GetClipPlane (offset 259) */ + /* _mesa_function_pool[3652]: EGLImageTargetRenderbufferStorageOES (will be remapped) */ "ip\0" - "glGetClipPlane\0" + "glEGLImageTargetRenderbufferStorageOES\0" "\0" - /* _mesa_function_pool[6959]: CombinerParameterfvNV (dynamic) */ + /* _mesa_function_pool[3695]: GenTransformFeedbacks (will be remapped) */ "ip\0" - "glCombinerParameterfvNV\0" + "glGenTransformFeedbacks\0" "\0" - /* _mesa_function_pool[6987]: TexCoordP4uiv (will be remapped) */ - "ip\0" - "glTexCoordP4uiv\0" + /* _mesa_function_pool[3723]: DrawTexfvOES (will be remapped) */ + "p\0" + "glDrawTexfvOES\0" "\0" - /* _mesa_function_pool[7007]: VertexAttribs3dvNV (will be remapped) */ + /* _mesa_function_pool[3741]: GetCompressedTexImage (will be remapped) */ "iip\0" - "glVertexAttribs3dvNV\0" + "glGetCompressedTexImage\0" + "glGetCompressedTexImageARB\0" "\0" - /* _mesa_function_pool[7033]: VertexAttribs4fvNV (will be remapped) */ + /* _mesa_function_pool[3797]: ProgramLocalParameter4dvARB (will be remapped) */ "iip\0" - "glVertexAttribs4fvNV\0" - "\0" - /* _mesa_function_pool[7059]: VertexArrayRangeNV (dynamic) */ - "ip\0" - "glVertexArrayRangeNV\0" - "\0" - /* _mesa_function_pool[7084]: FragmentLightiSGIX (dynamic) */ - "iii\0" - "glFragmentLightiSGIX\0" - "\0" - /* _mesa_function_pool[7110]: ClearBufferfi (will be remapped) */ - "iifi\0" - "glClearBufferfi\0" - "\0" - /* _mesa_function_pool[7132]: DrawTransformFeedbackInstanced (will be remapped) */ - "iii\0" - "glDrawTransformFeedbackInstanced\0" + "glProgramLocalParameter4dvARB\0" "\0" - /* _mesa_function_pool[7170]: VDPAUInitNV (will be remapped) */ - "pp\0" - "glVDPAUInitNV\0" + /* _mesa_function_pool[3832]: TexCoord4fv (offset 121) */ + "p\0" + "glTexCoord4fv\0" "\0" - /* _mesa_function_pool[7188]: DrawElementsIndirect (will be remapped) */ + /* _mesa_function_pool[3849]: GetQueryObjectui64v (will be remapped) */ "iip\0" - "glDrawElementsIndirect\0" + "glGetQueryObjectui64v\0" + "glGetQueryObjectui64vEXT\0" "\0" - /* _mesa_function_pool[7216]: PolygonOffsetEXT (will be remapped) */ - "ff\0" - "glPolygonOffsetEXT\0" + /* _mesa_function_pool[3901]: VertexAttribP1uiv (will be remapped) */ + "iiip\0" + "glVertexAttribP1uiv\0" "\0" - /* _mesa_function_pool[7239]: WindowPos4dvMESA (will be remapped) */ - "p\0" - "glWindowPos4dvMESA\0" + /* _mesa_function_pool[3927]: IsProgram (will be remapped) */ + "i\0" + "glIsProgram\0" "\0" - /* _mesa_function_pool[7261]: Scalex (will be remapped) */ - "iii\0" - "glScalexOES\0" - "glScalex\0" + /* _mesa_function_pool[3942]: TexCoordPointerListIBM (dynamic) */ + "iiipi\0" + "glTexCoordPointerListIBM\0" "\0" - /* _mesa_function_pool[7287]: PollAsyncSGIX (dynamic) */ - "p\0" - "glPollAsyncSGIX\0" + /* _mesa_function_pool[3974]: ResizeBuffersMESA (will be remapped) */ "\0" - /* _mesa_function_pool[7306]: WindowPos3sv (will be remapped) */ - "p\0" - "glWindowPos3sv\0" - "glWindowPos3svARB\0" - "glWindowPos3svMESA\0" + "glResizeBuffersMESA\0" "\0" - /* _mesa_function_pool[7361]: DeleteFragmentShaderATI (will be remapped) */ - "i\0" - "glDeleteFragmentShaderATI\0" + /* _mesa_function_pool[3996]: GenTextures (offset 328) */ + "ip\0" + "glGenTextures\0" + "glGenTexturesEXT\0" "\0" - /* _mesa_function_pool[7390]: Scaled (offset 301) */ - "ddd\0" - "glScaled\0" + /* _mesa_function_pool[4031]: IndexPointerListIBM (dynamic) */ + "iipi\0" + "glIndexPointerListIBM\0" "\0" - /* _mesa_function_pool[7404]: TangentPointerEXT (dynamic) */ - "iip\0" - "glTangentPointerEXT\0" + /* _mesa_function_pool[4059]: WindowPos4fMESA (will be remapped) */ + "ffff\0" + "glWindowPos4fMESA\0" "\0" - /* _mesa_function_pool[7429]: Scalef (offset 302) */ - "fff\0" - "glScalef\0" + /* _mesa_function_pool[4083]: VertexAttribs2fvNV (will be remapped) */ + "iip\0" + "glVertexAttribs2fvNV\0" "\0" - /* _mesa_function_pool[7443]: IndexPointerEXT (will be remapped) */ - "iiip\0" - "glIndexPointerEXT\0" + /* _mesa_function_pool[4109]: VertexAttribP4ui (will be remapped) */ + "iiii\0" + "glVertexAttribP4ui\0" "\0" - /* _mesa_function_pool[7467]: VertexAttribI1iv (will be remapped) */ - "ip\0" - "glVertexAttribI1ivEXT\0" - "glVertexAttribI1iv\0" + /* _mesa_function_pool[4134]: Uniform4i (will be remapped) */ + "iiiii\0" + "glUniform4i\0" + "glUniform4iARB\0" "\0" - /* _mesa_function_pool[7512]: ListParameterfvSGIX (dynamic) */ - "iip\0" - "glListParameterfvSGIX\0" + /* _mesa_function_pool[4168]: BufferParameteriAPPLE (will be remapped) */ + "iii\0" + "glBufferParameteriAPPLE\0" "\0" - /* _mesa_function_pool[7539]: ViewportIndexedf (will be remapped) */ + /* _mesa_function_pool[4197]: Uniform4f (will be remapped) */ "iffff\0" - "glViewportIndexedf\0" - "\0" - /* _mesa_function_pool[7565]: GetUniformfv (will be remapped) */ - "iip\0" - "glGetUniformfv\0" - "glGetUniformfvARB\0" + "glUniform4f\0" + "glUniform4fARB\0" "\0" - /* _mesa_function_pool[7603]: ObjectUnpurgeableAPPLE (will be remapped) */ - "iii\0" - "glObjectUnpurgeableAPPLE\0" + /* _mesa_function_pool[4231]: ProgramUniform3f (will be remapped) */ + "iifff\0" + "glProgramUniform3f\0" "\0" - /* _mesa_function_pool[7633]: AlphaFunc (offset 240) */ - "if\0" - "glAlphaFunc\0" + /* _mesa_function_pool[4257]: ProgramUniform3i (will be remapped) */ + "iiiii\0" + "glProgramUniform3i\0" "\0" - /* _mesa_function_pool[7649]: ColorFragmentOp2ATI (will be remapped) */ - "iiiiiiiiii\0" - "glColorFragmentOp2ATI\0" + /* _mesa_function_pool[4283]: PointParameterfv (will be remapped) */ + "ip\0" + "glPointParameterfv\0" + "glPointParameterfvARB\0" + "glPointParameterfvEXT\0" + "glPointParameterfvSGIS\0" "\0" - /* _mesa_function_pool[7683]: IsShader (will be remapped) */ - "i\0" - "glIsShader\0" + /* _mesa_function_pool[4373]: GetHistogramParameterfv (offset 362) */ + "iip\0" + "glGetHistogramParameterfv\0" + "glGetHistogramParameterfvEXT\0" "\0" - /* _mesa_function_pool[7697]: EdgeFlag (offset 41) */ + /* _mesa_function_pool[4433]: GetString (offset 275) */ "i\0" - "glEdgeFlag\0" + "glGetString\0" "\0" - /* _mesa_function_pool[7711]: TexCoord2iv (offset 107) */ - "p\0" - "glTexCoord2iv\0" + /* _mesa_function_pool[4448]: ColorPointervINTEL (dynamic) */ + "iip\0" + "glColorPointervINTEL\0" "\0" - /* _mesa_function_pool[7728]: TexImage2DMultisample (will be remapped) */ - "iiiiii\0" - "glTexImage2DMultisample\0" + /* _mesa_function_pool[4474]: VDPAUUnmapSurfacesNV (will be remapped) */ + "ip\0" + "glVDPAUUnmapSurfacesNV\0" "\0" - /* _mesa_function_pool[7760]: Rotated (offset 299) */ - "dddd\0" - "glRotated\0" + /* _mesa_function_pool[4501]: GetnHistogramARB (will be remapped) */ + "iiiiip\0" + "glGetnHistogramARB\0" "\0" - /* _mesa_function_pool[7776]: ColorFragmentOp1ATI (will be remapped) */ - "iiiiiii\0" - "glColorFragmentOp1ATI\0" + /* _mesa_function_pool[4528]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */ + "pppp\0" + "glReplacementCodeuiColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[7807]: VertexAttrib2sNV (will be remapped) */ + /* _mesa_function_pool[4581]: SecondaryColor3s (will be remapped) */ "iii\0" - "glVertexAttrib2sNV\0" - "\0" - /* _mesa_function_pool[7831]: ReadPixels (offset 256) */ - "iiiiiip\0" - "glReadPixels\0" + "glSecondaryColor3s\0" + "glSecondaryColor3sEXT\0" "\0" - /* _mesa_function_pool[7853]: EdgeFlagv (offset 42) */ - "p\0" - "glEdgeFlagv\0" + /* _mesa_function_pool[4627]: VertexAttribP2uiv (will be remapped) */ + "iiip\0" + "glVertexAttribP2uiv\0" "\0" - /* _mesa_function_pool[7868]: NormalPointerListIBM (dynamic) */ - "iipi\0" - "glNormalPointerListIBM\0" + /* _mesa_function_pool[4653]: GetDetailTexFuncSGIS (dynamic) */ + "ip\0" + "glGetDetailTexFuncSGIS\0" "\0" - /* _mesa_function_pool[7897]: CompressedTexSubImage1D (will be remapped) */ - "iiiiiip\0" - "glCompressedTexSubImage1D\0" - "glCompressedTexSubImage1DARB\0" + /* _mesa_function_pool[4680]: VertexAttrib3fNV (will be remapped) */ + "ifff\0" + "glVertexAttrib3fNV\0" "\0" - /* _mesa_function_pool[7961]: QueryCounter (will be remapped) */ - "ii\0" - "glQueryCounter\0" + /* _mesa_function_pool[4705]: SecondaryColor3b (will be remapped) */ + "iii\0" + "glSecondaryColor3b\0" + "glSecondaryColor3bEXT\0" "\0" - /* _mesa_function_pool[7980]: Color4iv (offset 32) */ - "p\0" - "glColor4iv\0" + /* _mesa_function_pool[4751]: EnableClientState (offset 313) */ + "i\0" + "glEnableClientState\0" "\0" - /* _mesa_function_pool[7994]: DebugMessageCallback (will be remapped) */ + /* _mesa_function_pool[4774]: Color4ubVertex2fvSUN (dynamic) */ "pp\0" - "glDebugMessageCallback\0" - "\0" - /* _mesa_function_pool[8021]: TexParameterf (offset 178) */ - "iif\0" - "glTexParameterf\0" + "glColor4ubVertex2fvSUN\0" "\0" - /* _mesa_function_pool[8042]: TexParameteri (offset 180) */ + /* _mesa_function_pool[4801]: SecondaryColor3i (will be remapped) */ "iii\0" - "glTexParameteri\0" + "glSecondaryColor3i\0" + "glSecondaryColor3iEXT\0" "\0" - /* _mesa_function_pool[8063]: NormalPointerEXT (will be remapped) */ + /* _mesa_function_pool[4847]: TexFilterFuncSGIS (dynamic) */ "iiip\0" - "glNormalPointerEXT\0" + "glTexFilterFuncSGIS\0" "\0" - /* _mesa_function_pool[8088]: GetUniformiv (will be remapped) */ + /* _mesa_function_pool[4873]: GetFragmentMaterialfvSGIX (dynamic) */ "iip\0" - "glGetUniformiv\0" - "glGetUniformivARB\0" - "\0" - /* _mesa_function_pool[8126]: DrawPixels (offset 257) */ - "iiiip\0" - "glDrawPixels\0" + "glGetFragmentMaterialfvSGIX\0" "\0" - /* _mesa_function_pool[8146]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */ - "iffffffff\0" - "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN\0" + /* _mesa_function_pool[4906]: DetailTexFuncSGIS (dynamic) */ + "iip\0" + "glDetailTexFuncSGIS\0" "\0" - /* _mesa_function_pool[8206]: DepthRangex (will be remapped) */ - "ii\0" - "glDepthRangexOES\0" - "glDepthRangex\0" + /* _mesa_function_pool[4931]: FlushMappedBufferRange (will be remapped) */ + "iii\0" + "glFlushMappedBufferRange\0" + "glFlushMappedBufferRangeEXT\0" "\0" - /* _mesa_function_pool[8241]: ImageTransformParameterivHP (dynamic) */ + /* _mesa_function_pool[4989]: Lightfv (offset 160) */ "iip\0" - "glImageTransformParameterivHP\0" - "\0" - /* _mesa_function_pool[8276]: ClearBufferSubData (will be remapped) */ - "iiiiiip\0" - "glClearBufferSubData\0" + "glLightfv\0" "\0" - /* _mesa_function_pool[8306]: GetnUniformuivARB (will be remapped) */ + /* _mesa_function_pool[5004]: GetFramebufferAttachmentParameteriv (will be remapped) */ "iiip\0" - "glGetnUniformuivARB\0" - "\0" - /* _mesa_function_pool[8332]: DrawTransformFeedback (will be remapped) */ - "ii\0" - "glDrawTransformFeedback\0" + "glGetFramebufferAttachmentParameteriv\0" + "glGetFramebufferAttachmentParameterivEXT\0" + "glGetFramebufferAttachmentParameterivOES\0" "\0" - /* _mesa_function_pool[8360]: DrawElementsInstancedARB (will be remapped) */ - "iiipi\0" - "glDrawElementsInstancedARB\0" - "glDrawElementsInstancedEXT\0" - "glDrawElementsInstanced\0" + /* _mesa_function_pool[5130]: ColorSubTable (offset 346) */ + "iiiiip\0" + "glColorSubTable\0" + "glColorSubTableEXT\0" "\0" - /* _mesa_function_pool[8445]: MultiTexCoord3sv (offset 399) */ - "ip\0" - "glMultiTexCoord3sv\0" - "glMultiTexCoord3svARB\0" + /* _mesa_function_pool[5173]: EndPerfMonitorAMD (will be remapped) */ + "i\0" + "glEndPerfMonitorAMD\0" "\0" - /* _mesa_function_pool[8490]: VertexAttribBinding (will be remapped) */ + /* _mesa_function_pool[5196]: Uniform1ui (will be remapped) */ "ii\0" - "glVertexAttribBinding\0" - "\0" - /* _mesa_function_pool[8516]: WeightivARB (dynamic) */ - "ip\0" - "glWeightivARB\0" - "\0" - /* _mesa_function_pool[8534]: GlobalAlphaFactordSUN (dynamic) */ - "d\0" - "glGlobalAlphaFactordSUN\0" + "glUniform1uiEXT\0" + "glUniform1ui\0" "\0" - /* _mesa_function_pool[8561]: GetFinalCombinerInputParameterfvNV (dynamic) */ + /* _mesa_function_pool[5229]: MapParameterivNV (dynamic) */ "iip\0" - "glGetFinalCombinerInputParameterfvNV\0" + "glMapParameterivNV\0" "\0" - /* _mesa_function_pool[8603]: GenLists (offset 5) */ - "i\0" - "glGenLists\0" + /* _mesa_function_pool[5253]: GetMultisamplefv (will be remapped) */ + "iip\0" + "glGetMultisamplefv\0" "\0" - /* _mesa_function_pool[8617]: DepthRangef (will be remapped) */ - "ff\0" - "glDepthRangef\0" - "glDepthRangefOES\0" + /* _mesa_function_pool[5277]: WeightbvARB (dynamic) */ + "ip\0" + "glWeightbvARB\0" "\0" - /* _mesa_function_pool[8652]: Color3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[5295]: Rectdv (offset 87) */ "pp\0" - "glColor3fVertex3fvSUN\0" + "glRectdv\0" "\0" - /* _mesa_function_pool[8678]: SampleCoveragex (will be remapped) */ - "ii\0" - "glSampleCoveragexOES\0" - "glSampleCoveragex\0" + /* _mesa_function_pool[5308]: DrawArraysInstancedARB (will be remapped) */ + "iiii\0" + "glDrawArraysInstancedARB\0" + "glDrawArraysInstancedEXT\0" + "glDrawArraysInstanced\0" "\0" - /* _mesa_function_pool[8721]: GetMapAttribParameterivNV (dynamic) */ + /* _mesa_function_pool[5386]: ProgramEnvParameters4fvEXT (will be remapped) */ "iiip\0" - "glGetMapAttribParameterivNV\0" + "glProgramEnvParameters4fvEXT\0" "\0" - /* _mesa_function_pool[8755]: GetCombinerInputParameterfvNV (dynamic) */ - "iiiip\0" - "glGetCombinerInputParameterfvNV\0" + /* _mesa_function_pool[5421]: VertexAttrib2svNV (will be remapped) */ + "ip\0" + "glVertexAttrib2svNV\0" "\0" - /* _mesa_function_pool[8794]: GetSharpenTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[5445]: SecondaryColorP3uiv (will be remapped) */ "ip\0" - "glGetSharpenTexFuncSGIS\0" + "glSecondaryColorP3uiv\0" "\0" - /* _mesa_function_pool[8822]: PixelTransformParameterfvEXT (dynamic) */ + /* _mesa_function_pool[5471]: GetnPixelMapuivARB (will be remapped) */ "iip\0" - "glPixelTransformParameterfvEXT\0" - "\0" - /* _mesa_function_pool[8858]: MapGrid2d (offset 226) */ - "iddidd\0" - "glMapGrid2d\0" - "\0" - /* _mesa_function_pool[8878]: MapGrid2f (offset 227) */ - "iffiff\0" - "glMapGrid2f\0" - "\0" - /* _mesa_function_pool[8898]: SampleMapATI (will be remapped) */ - "iii\0" - "glSampleMapATI\0" - "\0" - /* _mesa_function_pool[8918]: ValidateProgram (will be remapped) */ - "i\0" - "glValidateProgram\0" - "glValidateProgramARB\0" - "\0" - /* _mesa_function_pool[8960]: VertexPointerEXT (will be remapped) */ - "iiiip\0" - "glVertexPointerEXT\0" + "glGetnPixelMapuivARB\0" "\0" - /* _mesa_function_pool[8986]: GetTexFilterFuncSGIS (dynamic) */ + /* _mesa_function_pool[5497]: GetSamplerParameterIuiv (will be remapped) */ "iip\0" - "glGetTexFilterFuncSGIS\0" + "glGetSamplerParameterIuiv\0" "\0" - /* _mesa_function_pool[9014]: VertexAttribI4sv (will be remapped) */ + /* _mesa_function_pool[5528]: PointParameterxv (will be remapped) */ "ip\0" - "glVertexAttribI4svEXT\0" - "glVertexAttribI4sv\0" + "glPointParameterxvOES\0" + "glPointParameterxv\0" "\0" - /* _mesa_function_pool[9059]: Scissor (offset 176) */ - "iiii\0" - "glScissor\0" + /* _mesa_function_pool[5573]: CompressedTexSubImage3D (will be remapped) */ + "iiiiiiiiiip\0" + "glCompressedTexSubImage3D\0" + "glCompressedTexSubImage3DARB\0" + "glCompressedTexSubImage3DOES\0" "\0" - /* _mesa_function_pool[9075]: Fogf (offset 153) */ - "if\0" - "glFogf\0" + /* _mesa_function_pool[5670]: BindFramebufferEXT (will be remapped) */ + "ii\0" + "glBindFramebufferEXT\0" "\0" - /* _mesa_function_pool[9086]: ReplacementCodeubvSUN (dynamic) */ + /* _mesa_function_pool[5695]: Color3dv (offset 12) */ "p\0" - "glReplacementCodeubvSUN\0" + "glColor3dv\0" "\0" - /* _mesa_function_pool[9113]: TexSubImage1D (offset 332) */ - "iiiiiip\0" - "glTexSubImage1D\0" - "glTexSubImage1DEXT\0" + /* _mesa_function_pool[5709]: BeginQuery (will be remapped) */ + "ii\0" + "glBeginQuery\0" + "glBeginQueryARB\0" "\0" - /* _mesa_function_pool[9157]: BeginTransformFeedback (will be remapped) */ - "i\0" - "glBeginTransformFeedback\0" - "glBeginTransformFeedbackEXT\0" + /* _mesa_function_pool[5742]: VertexP3uiv (will be remapped) */ + "ip\0" + "glVertexP3uiv\0" "\0" - /* _mesa_function_pool[9213]: FenceSync (will be remapped) */ - "ii\0" - "glFenceSync\0" + /* _mesa_function_pool[5760]: GetUniformLocation (will be remapped) */ + "ip\0" + "glGetUniformLocation\0" + "glGetUniformLocationARB\0" "\0" - /* _mesa_function_pool[9229]: Color4usv (offset 40) */ - "p\0" - "glColor4usv\0" + /* _mesa_function_pool[5809]: PixelStoref (offset 249) */ + "if\0" + "glPixelStoref\0" "\0" - /* _mesa_function_pool[9244]: GetnUniformfvARB (will be remapped) */ - "iiip\0" - "glGetnUniformfvARB\0" + /* _mesa_function_pool[5827]: WindowPos2iv (will be remapped) */ + "p\0" + "glWindowPos2iv\0" + "glWindowPos2ivARB\0" + "glWindowPos2ivMESA\0" "\0" - /* _mesa_function_pool[9269]: Fogi (offset 155) */ + /* _mesa_function_pool[5882]: PixelStorei (offset 250) */ "ii\0" - "glFogi\0" + "glPixelStorei\0" "\0" - /* _mesa_function_pool[9280]: DepthRange (offset 288) */ - "dd\0" - "glDepthRange\0" + /* _mesa_function_pool[5900]: VertexAttribs1svNV (will be remapped) */ + "iip\0" + "glVertexAttribs1svNV\0" "\0" - /* _mesa_function_pool[9297]: RasterPos3iv (offset 75) */ - "p\0" - "glRasterPos3iv\0" + /* _mesa_function_pool[5926]: RequestResidentProgramsNV (will be remapped) */ + "ip\0" + "glRequestResidentProgramsNV\0" "\0" - /* _mesa_function_pool[9315]: ColorMaski (will be remapped) */ - "iiiii\0" - "glColorMaskIndexedEXT\0" - "glColorMaski\0" + /* _mesa_function_pool[5958]: ListParameterivSGIX (dynamic) */ + "iip\0" + "glListParameterivSGIX\0" "\0" - /* _mesa_function_pool[9357]: GetActiveAttrib (will be remapped) */ - "iiipppp\0" - "glGetActiveAttrib\0" - "glGetActiveAttribARB\0" + /* _mesa_function_pool[5985]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ + "pppp\0" + "glTexCoord2fColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[9405]: TexCoord2i (offset 106) */ - "ii\0" - "glTexCoord2i\0" + /* _mesa_function_pool[6031]: CheckFramebufferStatus (will be remapped) */ + "i\0" + "glCheckFramebufferStatus\0" + "glCheckFramebufferStatusEXT\0" + "glCheckFramebufferStatusOES\0" "\0" - /* _mesa_function_pool[9422]: PixelMapfv (offset 251) */ - "iip\0" - "glPixelMapfv\0" + /* _mesa_function_pool[6115]: DispatchComputeIndirect (will be remapped) */ + "i\0" + "glDispatchComputeIndirect\0" "\0" - /* _mesa_function_pool[9440]: Color4ui (offset 37) */ - "iiii\0" - "glColor4ui\0" + /* _mesa_function_pool[6144]: InvalidateBufferData (will be remapped) */ + "i\0" + "glInvalidateBufferData\0" "\0" - /* _mesa_function_pool[9457]: RasterPos3s (offset 76) */ - "iii\0" - "glRasterPos3s\0" + /* _mesa_function_pool[6170]: VDPAUMapSurfacesNV (will be remapped) */ + "ip\0" + "glVDPAUMapSurfacesNV\0" "\0" - /* _mesa_function_pool[9476]: Color3usv (offset 24) */ - "p\0" - "glColor3usv\0" + /* _mesa_function_pool[6195]: IsFramebuffer (will be remapped) */ + "i\0" + "glIsFramebuffer\0" + "glIsFramebufferEXT\0" + "glIsFramebufferOES\0" "\0" - /* _mesa_function_pool[9491]: MultiTexCoord2iv (offset 389) */ + /* _mesa_function_pool[6252]: GetPixelTexGenParameterfvSGIS (dynamic) */ "ip\0" - "glMultiTexCoord2iv\0" - "glMultiTexCoord2ivARB\0" + "glGetPixelTexGenParameterfvSGIS\0" "\0" - /* _mesa_function_pool[9536]: TexCoord2f (offset 104) */ - "ff\0" - "glTexCoord2f\0" + /* _mesa_function_pool[6288]: GetDoublev (offset 260) */ + "ip\0" + "glGetDoublev\0" "\0" - /* _mesa_function_pool[9553]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */ - "ifffff\0" - "glReplacementCodeuiTexCoord2fVertex3fSUN\0" + /* _mesa_function_pool[6305]: GetObjectLabel (will be remapped) */ + "iiipp\0" + "glGetObjectLabel\0" "\0" - /* _mesa_function_pool[9602]: TexCoord2d (offset 102) */ - "dd\0" - "glTexCoord2d\0" + /* _mesa_function_pool[6329]: TextureLightEXT (dynamic) */ + "i\0" + "glTextureLightEXT\0" "\0" - /* _mesa_function_pool[9619]: RasterPos3d (offset 70) */ - "ddd\0" - "glRasterPos3d\0" + /* _mesa_function_pool[6350]: ColorP3uiv (will be remapped) */ + "ip\0" + "glColorP3uiv\0" "\0" - /* _mesa_function_pool[9638]: RasterPos3f (offset 72) */ - "fff\0" - "glRasterPos3f\0" + /* _mesa_function_pool[6367]: CombinerParameteriNV (dynamic) */ + "ii\0" + "glCombinerParameteriNV\0" "\0" - /* _mesa_function_pool[9657]: AreTexturesResident (offset 322) */ - "ipp\0" - "glAreTexturesResident\0" - "glAreTexturesResidentEXT\0" + /* _mesa_function_pool[6394]: Normal3fVertex3fvSUN (dynamic) */ + "pp\0" + "glNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[9709]: DrawElementsInstancedBaseVertexBaseInstance (will be remapped) */ - "iiipiii\0" - "glDrawElementsInstancedBaseVertexBaseInstance\0" + /* _mesa_function_pool[6421]: VertexAttribI4ivEXT (will be remapped) */ + "ip\0" + "glVertexAttribI4ivEXT\0" + "glVertexAttribI4iv\0" "\0" - /* _mesa_function_pool[9764]: TexCoord2s (offset 108) */ - "ii\0" - "glTexCoord2s\0" + /* _mesa_function_pool[6466]: SecondaryColor3ubv (will be remapped) */ + "p\0" + "glSecondaryColor3ubv\0" + "glSecondaryColor3ubvEXT\0" "\0" - /* _mesa_function_pool[9781]: StencilOpSeparate (will be remapped) */ - "iiii\0" - "glStencilOpSeparate\0" - "glStencilOpSeparateATI\0" + /* _mesa_function_pool[6514]: GetDebugMessageLog (will be remapped) */ + "iipppppp\0" + "glGetDebugMessageLog\0" "\0" - /* _mesa_function_pool[9830]: ColorTableParameteriv (offset 341) */ - "iip\0" - "glColorTableParameteriv\0" - "glColorTableParameterivSGI\0" + /* _mesa_function_pool[6545]: DeformationMap3fSGIX (dynamic) */ + "iffiiffiiffiip\0" + "glDeformationMap3fSGIX\0" "\0" - /* _mesa_function_pool[9886]: VertexAttribP2ui (will be remapped) */ - "iiii\0" - "glVertexAttribP2ui\0" + /* _mesa_function_pool[6584]: MatrixIndexubvARB (dynamic) */ + "ip\0" + "glMatrixIndexubvARB\0" "\0" - /* _mesa_function_pool[9911]: GenSamplers (will be remapped) */ + /* _mesa_function_pool[6608]: VertexAttribI4usv (will be remapped) */ "ip\0" - "glGenSamplers\0" + "glVertexAttribI4usvEXT\0" + "glVertexAttribI4usv\0" + "\0" + /* _mesa_function_pool[6655]: PixelTexGenParameterfSGIS (dynamic) */ + "if\0" + "glPixelTexGenParameterfSGIS\0" "\0" - /* _mesa_function_pool[9929]: Color4us (offset 39) */ + /* _mesa_function_pool[6687]: ProgramUniform2ui (will be remapped) */ "iiii\0" - "glColor4us\0" + "glProgramUniform2ui\0" "\0" - /* _mesa_function_pool[9946]: VDPAUFiniNV (will be remapped) */ + /* _mesa_function_pool[6713]: TexCoord2fVertex3fvSUN (dynamic) */ + "pp\0" + "glTexCoord2fVertex3fvSUN\0" "\0" - "glVDPAUFiniNV\0" + /* _mesa_function_pool[6742]: Color4ubVertex3fvSUN (dynamic) */ + "pp\0" + "glColor4ubVertex3fvSUN\0" "\0" - /* _mesa_function_pool[9962]: Color3bv (offset 10) */ - "p\0" - "glColor3bv\0" + /* _mesa_function_pool[6769]: GetShaderSource (will be remapped) */ + "iipp\0" + "glGetShaderSource\0" + "glGetShaderSourceARB\0" "\0" - /* _mesa_function_pool[9976]: GetnCompressedTexImageARB (will be remapped) */ - "iiip\0" - "glGetnCompressedTexImageARB\0" + /* _mesa_function_pool[6814]: BindProgramARB (will be remapped) */ + "ii\0" + "glBindProgramARB\0" + "glBindProgramNV\0" "\0" - /* _mesa_function_pool[10010]: DrawTransformFeedbackStreamInstanced (will be remapped) */ + /* _mesa_function_pool[6851]: VertexAttrib3sNV (will be remapped) */ "iiii\0" - "glDrawTransformFeedbackStreamInstanced\0" + "glVertexAttrib3sNV\0" "\0" - /* _mesa_function_pool[10055]: VertexAttrib2fvARB (will be remapped) */ - "ip\0" - "glVertexAttrib2fv\0" - "glVertexAttrib2fvARB\0" + /* _mesa_function_pool[6876]: ColorFragmentOp1ATI (will be remapped) */ + "iiiiiii\0" + "glColorFragmentOp1ATI\0" + "\0" + /* _mesa_function_pool[6907]: ProgramUniformMatrix4x3fv (will be remapped) */ + "iiiip\0" + "glProgramUniformMatrix4x3fv\0" + "\0" + /* _mesa_function_pool[6942]: PopClientAttrib (offset 334) */ + "\0" + "glPopClientAttrib\0" "\0" - /* _mesa_function_pool[10098]: VertexPointerListIBM (dynamic) */ + /* _mesa_function_pool[6962]: DrawElementsInstancedARB (will be remapped) */ "iiipi\0" - "glVertexPointerListIBM\0" + "glDrawElementsInstancedARB\0" + "glDrawElementsInstancedEXT\0" + "glDrawElementsInstanced\0" "\0" - /* _mesa_function_pool[10128]: GetProgramLocalParameterfvARB (will be remapped) */ + /* _mesa_function_pool[7047]: GetQueryObjectuiv (will be remapped) */ "iip\0" - "glGetProgramLocalParameterfvARB\0" + "glGetQueryObjectuiv\0" + "glGetQueryObjectuivARB\0" "\0" - /* _mesa_function_pool[10165]: FragmentMaterialfSGIX (dynamic) */ - "iif\0" - "glFragmentMaterialfSGIX\0" + /* _mesa_function_pool[7095]: VertexAttribI4bv (will be remapped) */ + "ip\0" + "glVertexAttribI4bvEXT\0" + "glVertexAttribI4bv\0" "\0" - /* _mesa_function_pool[10194]: BindSampler (will be remapped) */ - "ii\0" - "glBindSampler\0" + /* _mesa_function_pool[7140]: FogCoordPointerListIBM (dynamic) */ + "iipi\0" + "glFogCoordPointerListIBM\0" "\0" - /* _mesa_function_pool[10212]: GetUniformuiv (will be remapped) */ - "iip\0" - "glGetUniformuivEXT\0" - "glGetUniformuiv\0" + /* _mesa_function_pool[7171]: Binormal3sEXT (dynamic) */ + "iii\0" + "glBinormal3sEXT\0" "\0" - /* _mesa_function_pool[10252]: BindBufferOffsetEXT (will be remapped) */ - "iiii\0" - "glBindBufferOffsetEXT\0" + /* _mesa_function_pool[7192]: ListBase (offset 6) */ + "i\0" + "glListBase\0" "\0" - /* _mesa_function_pool[10280]: IsFenceNV (dynamic) */ + /* _mesa_function_pool[7206]: GenerateMipmap (will be remapped) */ "i\0" - "glIsFenceNV\0" + "glGenerateMipmap\0" + "glGenerateMipmapEXT\0" + "glGenerateMipmapOES\0" "\0" - /* _mesa_function_pool[10295]: ColorPointerListIBM (dynamic) */ - "iiipi\0" - "glColorPointerListIBM\0" + /* _mesa_function_pool[7266]: BindBufferRange (will be remapped) */ + "iiiii\0" + "glBindBufferRange\0" + "glBindBufferRangeEXT\0" "\0" - /* _mesa_function_pool[10324]: AttachObjectARB (will be remapped) */ - "ii\0" - "glAttachObjectARB\0" + /* _mesa_function_pool[7312]: ProgramUniformMatrix2x4fv (will be remapped) */ + "iiiip\0" + "glProgramUniformMatrix2x4fv\0" "\0" - /* _mesa_function_pool[10346]: GetFragmentLightivSGIX (dynamic) */ + /* _mesa_function_pool[7347]: GetQueryObjectiv (will be remapped) */ "iip\0" - "glGetFragmentLightivSGIX\0" + "glGetQueryObjectiv\0" + "glGetQueryObjectivARB\0" "\0" - /* _mesa_function_pool[10376]: MultiTexCoord2fARB (offset 386) */ - "iff\0" - "glMultiTexCoord2f\0" - "glMultiTexCoord2fARB\0" + /* _mesa_function_pool[7393]: VertexAttrib2s (will be remapped) */ + "iii\0" + "glVertexAttrib2s\0" + "glVertexAttrib2sARB\0" "\0" - /* _mesa_function_pool[10420]: ColorTable (offset 339) */ - "iiiiip\0" - "glColorTable\0" - "glColorTableSGI\0" - "glColorTableEXT\0" + /* _mesa_function_pool[7435]: SecondaryColor3fvEXT (will be remapped) */ + "p\0" + "glSecondaryColor3fv\0" + "glSecondaryColor3fvEXT\0" "\0" - /* _mesa_function_pool[10473]: IndexPointer (offset 314) */ - "iip\0" - "glIndexPointer\0" + /* _mesa_function_pool[7481]: VertexAttrib2d (will be remapped) */ + "idd\0" + "glVertexAttrib2d\0" + "glVertexAttrib2dARB\0" "\0" - /* _mesa_function_pool[10493]: Accum (offset 213) */ - "if\0" - "glAccum\0" + /* _mesa_function_pool[7523]: Uniform1fv (will be remapped) */ + "iip\0" + "glUniform1fv\0" + "glUniform1fvARB\0" "\0" - /* _mesa_function_pool[10505]: GetTexImage (offset 281) */ - "iiiip\0" - "glGetTexImage\0" + /* _mesa_function_pool[7557]: GetProgramPipelineInfoLog (will be remapped) */ + "iipp\0" + "glGetProgramPipelineInfoLog\0" "\0" - /* _mesa_function_pool[10526]: MapControlPointsNV (dynamic) */ - "iiiiiiiip\0" - "glMapControlPointsNV\0" + /* _mesa_function_pool[7591]: TextureMaterialEXT (dynamic) */ + "ii\0" + "glTextureMaterialEXT\0" "\0" - /* _mesa_function_pool[10558]: ConvolutionFilter2D (offset 349) */ - "iiiiiip\0" - "glConvolutionFilter2D\0" - "glConvolutionFilter2DEXT\0" + /* _mesa_function_pool[7616]: DepthBoundsEXT (will be remapped) */ + "dd\0" + "glDepthBoundsEXT\0" "\0" - /* _mesa_function_pool[10614]: MultMatrixx (will be remapped) */ + /* _mesa_function_pool[7637]: WindowPos3fv (will be remapped) */ "p\0" - "glMultMatrixxOES\0" - "glMultMatrixx\0" + "glWindowPos3fv\0" + "glWindowPos3fvARB\0" + "glWindowPos3fvMESA\0" "\0" - /* _mesa_function_pool[10648]: TexParameterIiv (will be remapped) */ - "iip\0" - "glTexParameterIivEXT\0" - "glTexParameterIiv\0" + /* _mesa_function_pool[7692]: BindVertexArrayAPPLE (will be remapped) */ + "i\0" + "glBindVertexArrayAPPLE\0" "\0" - /* _mesa_function_pool[10692]: Finish (offset 216) */ + /* _mesa_function_pool[7718]: GetHistogramParameteriv (offset 363) */ + "iip\0" + "glGetHistogramParameteriv\0" + "glGetHistogramParameterivEXT\0" "\0" - "glFinish\0" + /* _mesa_function_pool[7778]: PointParameteriv (will be remapped) */ + "ip\0" + "glPointParameteriv\0" + "glPointParameterivNV\0" "\0" - /* _mesa_function_pool[10703]: MapParameterfvNV (dynamic) */ + /* _mesa_function_pool[7822]: GetProgramivARB (will be remapped) */ "iip\0" - "glMapParameterfvNV\0" + "glGetProgramivARB\0" "\0" - /* _mesa_function_pool[10727]: ClearStencil (offset 207) */ - "i\0" - "glClearStencil\0" + /* _mesa_function_pool[7845]: BindRenderbuffer (will be remapped) */ + "ii\0" + "glBindRenderbuffer\0" + "glBindRenderbufferOES\0" "\0" - /* _mesa_function_pool[10745]: Color4x (will be remapped) */ - "iiii\0" - "glColor4xOES\0" - "glColor4x\0" + /* _mesa_function_pool[7890]: SecondaryColor3fEXT (will be remapped) */ + "fff\0" + "glSecondaryColor3f\0" + "glSecondaryColor3fEXT\0" "\0" - /* _mesa_function_pool[10774]: HintPGI (dynamic) */ - "ii\0" - "glHintPGI\0" + /* _mesa_function_pool[7936]: PrimitiveRestartIndex (will be remapped) */ + "i\0" + "glPrimitiveRestartIndex\0" + "glPrimitiveRestartIndexNV\0" "\0" - /* _mesa_function_pool[10788]: ConvolutionParameteriv (offset 353) */ - "iip\0" - "glConvolutionParameteriv\0" - "glConvolutionParameterivEXT\0" + /* _mesa_function_pool[7989]: VertexAttribI4ubv (will be remapped) */ + "ip\0" + "glVertexAttribI4ubvEXT\0" + "glVertexAttribI4ubv\0" "\0" - /* _mesa_function_pool[10846]: Color4s (offset 33) */ - "iiii\0" - "glColor4s\0" + /* _mesa_function_pool[8036]: GetGraphicsResetStatusARB (will be remapped) */ "\0" - /* _mesa_function_pool[10862]: InterleavedArrays (offset 317) */ - "iip\0" - "glInterleavedArrays\0" + "glGetGraphicsResetStatusARB\0" "\0" - /* _mesa_function_pool[10887]: RasterPos2fv (offset 65) */ - "p\0" - "glRasterPos2fv\0" + /* _mesa_function_pool[8066]: ActiveStencilFaceEXT (will be remapped) */ + "i\0" + "glActiveStencilFaceEXT\0" "\0" - /* _mesa_function_pool[10905]: TexCoord1fv (offset 97) */ - "p\0" - "glTexCoord1fv\0" + /* _mesa_function_pool[8092]: VertexAttrib4dNV (will be remapped) */ + "idddd\0" + "glVertexAttrib4dNV\0" "\0" - /* _mesa_function_pool[10922]: Vertex2d (offset 126) */ + /* _mesa_function_pool[8118]: DepthRange (offset 288) */ "dd\0" - "glVertex2d\0" + "glDepthRange\0" "\0" - /* _mesa_function_pool[10937]: CullParameterdvEXT (dynamic) */ + /* _mesa_function_pool[8135]: TexBumpParameterivATI (will be remapped) */ "ip\0" - "glCullParameterdvEXT\0" - "\0" - /* _mesa_function_pool[10962]: ProgramNamedParameter4fNV (will be remapped) */ - "iipffff\0" - "glProgramNamedParameter4fNV\0" - "\0" - /* _mesa_function_pool[10999]: Orthof (will be remapped) */ - "ffffff\0" - "glOrthofOES\0" - "glOrthof\0" + "glTexBumpParameterivATI\0" "\0" - /* _mesa_function_pool[11028]: MultiTexCoord4dv (offset 401) */ - "ip\0" - "glMultiTexCoord4dv\0" - "glMultiTexCoord4dvARB\0" + /* _mesa_function_pool[8163]: VertexAttrib4fNV (will be remapped) */ + "iffff\0" + "glVertexAttrib4fNV\0" "\0" - /* _mesa_function_pool[11073]: ProgramEnvParameter4fvARB (will be remapped) */ + /* _mesa_function_pool[8189]: Uniform4fv (will be remapped) */ "iip\0" - "glProgramEnvParameter4fvARB\0" - "glProgramParameter4fvNV\0" + "glUniform4fv\0" + "glUniform4fvARB\0" "\0" - /* _mesa_function_pool[11130]: Color4i (offset 31) */ + /* _mesa_function_pool[8223]: DrawMeshArraysSUN (dynamic) */ "iiii\0" - "glColor4i\0" + "glDrawMeshArraysSUN\0" "\0" - /* _mesa_function_pool[11146]: Color4f (offset 29) */ - "ffff\0" - "glColor4f\0" + /* _mesa_function_pool[8249]: GetMapControlPointsNV (dynamic) */ + "iiiiiip\0" + "glGetMapControlPointsNV\0" "\0" - /* _mesa_function_pool[11162]: RasterPos4fv (offset 81) */ - "p\0" - "glRasterPos4fv\0" + /* _mesa_function_pool[8282]: SpriteParameterivSGIX (dynamic) */ + "ip\0" + "glSpriteParameterivSGIX\0" "\0" - /* _mesa_function_pool[11180]: Color4d (offset 27) */ - "dddd\0" - "glColor4d\0" + /* _mesa_function_pool[8310]: Frustumf (will be remapped) */ + "ffffff\0" + "glFrustumfOES\0" + "glFrustumf\0" "\0" - /* _mesa_function_pool[11196]: ClearIndex (offset 205) */ - "f\0" - "glClearIndex\0" + /* _mesa_function_pool[8343]: ProgramUniform2uiv (will be remapped) */ + "iiip\0" + "glProgramUniform2uiv\0" "\0" - /* _mesa_function_pool[11212]: Color4b (offset 25) */ - "iiii\0" - "glColor4b\0" + /* _mesa_function_pool[8370]: Rectsv (offset 93) */ + "pp\0" + "glRectsv\0" "\0" - /* _mesa_function_pool[11228]: LoadMatrixd (offset 292) */ - "p\0" - "glLoadMatrixd\0" + /* _mesa_function_pool[8383]: Frustumx (will be remapped) */ + "iiiiii\0" + "glFrustumxOES\0" + "glFrustumx\0" "\0" - /* _mesa_function_pool[11245]: FragmentLightModeliSGIX (dynamic) */ + /* _mesa_function_pool[8416]: CullFace (offset 152) */ + "i\0" + "glCullFace\0" + "\0" + /* _mesa_function_pool[8430]: BindTexture (offset 307) */ "ii\0" - "glFragmentLightModeliSGIX\0" + "glBindTexture\0" + "glBindTextureEXT\0" "\0" - /* _mesa_function_pool[11275]: RasterPos2dv (offset 63) */ - "p\0" - "glRasterPos2dv\0" + /* _mesa_function_pool[8465]: MultiTexCoord4fARB (offset 402) */ + "iffff\0" + "glMultiTexCoord4f\0" + "glMultiTexCoord4fARB\0" "\0" - /* _mesa_function_pool[11293]: ConvolutionParameterfv (offset 351) */ + /* _mesa_function_pool[8511]: MultiTexCoordP2uiv (will be remapped) */ "iip\0" - "glConvolutionParameterfv\0" - "glConvolutionParameterfvEXT\0" - "\0" - /* _mesa_function_pool[11351]: TbufferMask3DFX (dynamic) */ - "i\0" - "glTbufferMask3DFX\0" - "\0" - /* _mesa_function_pool[11372]: VDPAURegisterOutputSurfaceNV (will be remapped) */ - "piip\0" - "glVDPAURegisterOutputSurfaceNV\0" + "glMultiTexCoordP2uiv\0" "\0" - /* _mesa_function_pool[11409]: GetTexGendv (offset 278) */ + /* _mesa_function_pool[8537]: NormalPointer (offset 318) */ "iip\0" - "glGetTexGendv\0" + "glNormalPointer\0" "\0" - /* _mesa_function_pool[11428]: FragmentLightModelfSGIX (dynamic) */ - "if\0" - "glFragmentLightModelfSGIX\0" + /* _mesa_function_pool[8558]: TangentPointerEXT (dynamic) */ + "iip\0" + "glTangentPointerEXT\0" "\0" - /* _mesa_function_pool[11458]: LoadProgramNV (will be remapped) */ - "iiip\0" - "glLoadProgramNV\0" + /* _mesa_function_pool[8583]: WindowPos4iMESA (will be remapped) */ + "iiii\0" + "glWindowPos4iMESA\0" "\0" - /* _mesa_function_pool[11480]: EndList (offset 1) */ + /* _mesa_function_pool[8607]: ReferencePlaneSGIX (dynamic) */ + "p\0" + "glReferencePlaneSGIX\0" "\0" - "glEndList\0" + /* _mesa_function_pool[8631]: VertexAttrib4bv (will be remapped) */ + "ip\0" + "glVertexAttrib4bv\0" + "glVertexAttrib4bvARB\0" "\0" - /* _mesa_function_pool[11492]: VertexP4ui (will be remapped) */ - "ii\0" - "glVertexP4ui\0" + /* _mesa_function_pool[8674]: ReplacementCodeuivSUN (dynamic) */ + "p\0" + "glReplacementCodeuivSUN\0" "\0" - /* _mesa_function_pool[11509]: MultiTexCoordP1ui (will be remapped) */ - "iii\0" - "glMultiTexCoordP1ui\0" + /* _mesa_function_pool[8701]: SecondaryColor3usv (will be remapped) */ + "p\0" + "glSecondaryColor3usv\0" + "glSecondaryColor3usvEXT\0" "\0" - /* _mesa_function_pool[11534]: GetAttachedObjectsARB (will be remapped) */ - "iipp\0" - "glGetAttachedObjectsARB\0" + /* _mesa_function_pool[8749]: GetPixelMapuiv (offset 272) */ + "ip\0" + "glGetPixelMapuiv\0" "\0" - /* _mesa_function_pool[11564]: EvalCoord1fv (offset 231) */ + /* _mesa_function_pool[8770]: Indexfv (offset 47) */ "p\0" - "glEvalCoord1fv\0" + "glIndexfv\0" "\0" - /* _mesa_function_pool[11582]: DrawRangeElements (offset 338) */ - "iiiiip\0" - "glDrawRangeElements\0" - "glDrawRangeElementsEXT\0" + /* _mesa_function_pool[8783]: AlphaFragmentOp1ATI (will be remapped) */ + "iiiiii\0" + "glAlphaFragmentOp1ATI\0" "\0" - /* _mesa_function_pool[11633]: EvalMesh2 (offset 238) */ - "iiiii\0" - "glEvalMesh2\0" + /* _mesa_function_pool[8813]: ListParameteriSGIX (dynamic) */ + "iii\0" + "glListParameteriSGIX\0" "\0" - /* _mesa_function_pool[11652]: TexCoordPointerListIBM (dynamic) */ - "iiipi\0" - "glTexCoordPointerListIBM\0" + /* _mesa_function_pool[8839]: GetFloatv (offset 262) */ + "ip\0" + "glGetFloatv\0" + "\0" + /* _mesa_function_pool[8855]: MultiTexCoord3i (offset 396) */ + "iiii\0" + "glMultiTexCoord3i\0" + "glMultiTexCoord3iARB\0" + "\0" + /* _mesa_function_pool[8900]: ProgramUniform1fv (will be remapped) */ + "iiip\0" + "glProgramUniform1fv\0" + "\0" + /* _mesa_function_pool[8926]: MultiTexCoord3d (offset 392) */ + "iddd\0" + "glMultiTexCoord3d\0" + "glMultiTexCoord3dARB\0" "\0" - /* _mesa_function_pool[11684]: Vertex4fv (offset 145) */ + /* _mesa_function_pool[8971]: TexCoord3sv (offset 117) */ "p\0" - "glVertex4fv\0" + "glTexCoord3sv\0" + "\0" + /* _mesa_function_pool[8988]: Fogfv (offset 154) */ + "ip\0" + "glFogfv\0" "\0" - /* _mesa_function_pool[11699]: VertexAttribLFormat (will be remapped) */ + /* _mesa_function_pool[9000]: Minmax (offset 368) */ + "iii\0" + "glMinmax\0" + "glMinmaxEXT\0" + "\0" + /* _mesa_function_pool[9026]: MultiTexCoord3s (offset 398) */ "iiii\0" - "glVertexAttribLFormat\0" + "glMultiTexCoord3s\0" + "glMultiTexCoord3sARB\0" "\0" - /* _mesa_function_pool[11727]: GenTransformFeedbacks (will be remapped) */ - "ip\0" - "glGenTransformFeedbacks\0" + /* _mesa_function_pool[9071]: FinishTextureSUNX (dynamic) */ "\0" - /* _mesa_function_pool[11755]: SpriteParameterfvSGIX (dynamic) */ - "ip\0" - "glSpriteParameterfvSGIX\0" + "glFinishTextureSUNX\0" "\0" - /* _mesa_function_pool[11783]: VertexAttribs3fvNV (will be remapped) */ + /* _mesa_function_pool[9093]: GetFinalCombinerInputParameterfvNV (dynamic) */ "iip\0" - "glVertexAttribs3fvNV\0" + "glGetFinalCombinerInputParameterfvNV\0" "\0" - /* _mesa_function_pool[11809]: GlobalAlphaFactoruiSUN (dynamic) */ - "i\0" - "glGlobalAlphaFactoruiSUN\0" + /* _mesa_function_pool[9135]: PollInstrumentsSGIX (dynamic) */ + "p\0" + "glPollInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[11837]: GetHandleARB (will be remapped) */ - "i\0" - "glGetHandleARB\0" + /* _mesa_function_pool[9160]: Vertex4iv (offset 147) */ + "p\0" + "glVertex4iv\0" "\0" - /* _mesa_function_pool[11855]: DebugMessageControlARB (will be remapped) */ - "iiiipi\0" - "glDebugMessageControlARB\0" + /* _mesa_function_pool[9175]: BufferSubData (will be remapped) */ + "iiip\0" + "glBufferSubData\0" + "glBufferSubDataARB\0" "\0" - /* _mesa_function_pool[11888]: DrawTexfvOES (will be remapped) */ - "p\0" - "glDrawTexfvOES\0" + /* _mesa_function_pool[9216]: AlphaFragmentOp3ATI (will be remapped) */ + "iiiiiiiiiiii\0" + "glAlphaFragmentOp3ATI\0" "\0" - /* _mesa_function_pool[11906]: BindFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[9252]: Begin (offset 7) */ "i\0" - "glBindFragmentShaderATI\0" + "glBegin\0" "\0" - /* _mesa_function_pool[11933]: BlendFunciARB (will be remapped) */ - "iii\0" - "glBlendFunciARB\0" - "glBlendFuncIndexedAMD\0" + /* _mesa_function_pool[9263]: LightModeli (offset 165) */ + "ii\0" + "glLightModeli\0" "\0" - /* _mesa_function_pool[11976]: GetProgramEnvParameterdvARB (will be remapped) */ + /* _mesa_function_pool[9281]: UniformMatrix2fv (will be remapped) */ + "iiip\0" + "glUniformMatrix2fv\0" + "glUniformMatrix2fvARB\0" + "\0" + /* _mesa_function_pool[9328]: LightModelf (offset 163) */ + "if\0" + "glLightModelf\0" + "\0" + /* _mesa_function_pool[9346]: GetTexParameterfv (offset 282) */ "iip\0" - "glGetProgramEnvParameterdvARB\0" + "glGetTexParameterfv\0" "\0" - /* _mesa_function_pool[12011]: GetnUniformivARB (will be remapped) */ - "iiip\0" - "glGetnUniformivARB\0" + /* _mesa_function_pool[9371]: BinormalPointerEXT (dynamic) */ + "iip\0" + "glBinormalPointerEXT\0" "\0" - /* _mesa_function_pool[12036]: ClearColorIiEXT (will be remapped) */ - "iiii\0" - "glClearColorIiEXT\0" + /* _mesa_function_pool[9397]: GetCombinerInputParameterivNV (dynamic) */ + "iiiip\0" + "glGetCombinerInputParameterivNV\0" "\0" - /* _mesa_function_pool[12060]: BindFramebuffer (will be remapped) */ + /* _mesa_function_pool[9436]: DeleteAsyncMarkersSGIX (dynamic) */ "ii\0" - "glBindFramebuffer\0" - "glBindFramebufferOES\0" + "glDeleteAsyncMarkersSGIX\0" "\0" - /* _mesa_function_pool[12103]: CreateProgram (will be remapped) */ + /* _mesa_function_pool[9465]: MultiTexCoord2fvARB (offset 387) */ + "ip\0" + "glMultiTexCoord2fv\0" + "glMultiTexCoord2fvARB\0" "\0" - "glCreateProgram\0" + /* _mesa_function_pool[9510]: VertexAttrib4ubv (will be remapped) */ + "ip\0" + "glVertexAttrib4ubv\0" + "glVertexAttrib4ubvARB\0" "\0" - /* _mesa_function_pool[12121]: ReleaseShaderCompiler (will be remapped) */ + /* _mesa_function_pool[9555]: GetnTexImageARB (will be remapped) */ + "iiiiip\0" + "glGetnTexImageARB\0" "\0" - "glReleaseShaderCompiler\0" + /* _mesa_function_pool[9581]: ColorMask (offset 210) */ + "iiii\0" + "glColorMask\0" "\0" - /* _mesa_function_pool[12147]: GetMinmax (offset 364) */ - "iiiip\0" - "glGetMinmax\0" - "glGetMinmaxEXT\0" + /* _mesa_function_pool[9599]: GenAsyncMarkersSGIX (dynamic) */ + "i\0" + "glGenAsyncMarkersSGIX\0" "\0" - /* _mesa_function_pool[12181]: BlendFuncSeparate (will be remapped) */ - "iiii\0" - "glBlendFuncSeparate\0" - "glBlendFuncSeparateEXT\0" - "glBlendFuncSeparateINGR\0" - "glBlendFuncSeparateOES\0" + /* _mesa_function_pool[9624]: ReplacementCodeuiVertex3fSUN (dynamic) */ + "ifff\0" + "glReplacementCodeuiVertex3fSUN\0" "\0" - /* _mesa_function_pool[12277]: StencilFuncSeparate (will be remapped) */ - "iiii\0" - "glStencilFuncSeparate\0" + /* _mesa_function_pool[9661]: VertexAttribI4sv (will be remapped) */ + "ip\0" + "glVertexAttribI4svEXT\0" + "glVertexAttribI4sv\0" "\0" - /* _mesa_function_pool[12305]: ShaderSource (will be remapped) */ - "iipp\0" - "glShaderSource\0" - "glShaderSourceARB\0" + /* _mesa_function_pool[9706]: DrawElementsInstancedBaseInstance (will be remapped) */ + "iiipii\0" + "glDrawElementsInstancedBaseInstance\0" "\0" - /* _mesa_function_pool[12344]: GetInteger64i_v (will be remapped) */ - "iip\0" - "glGetInteger64i_v\0" + /* _mesa_function_pool[9750]: UniformMatrix4fv (will be remapped) */ + "iiip\0" + "glUniformMatrix4fv\0" + "glUniformMatrix4fvARB\0" "\0" - /* _mesa_function_pool[12367]: GetVertexAttribdvNV (will be remapped) */ - "iip\0" - "glGetVertexAttribdvNV\0" + /* _mesa_function_pool[9797]: UniformMatrix3x2fv (will be remapped) */ + "iiip\0" + "glUniformMatrix3x2fv\0" "\0" - /* _mesa_function_pool[12394]: DeleteTransformFeedbacks (will be remapped) */ + /* _mesa_function_pool[9824]: VertexAttrib4Nuiv (will be remapped) */ "ip\0" - "glDeleteTransformFeedbacks\0" + "glVertexAttrib4Nuiv\0" + "glVertexAttrib4NuivARB\0" "\0" - /* _mesa_function_pool[12425]: Normal3fv (offset 57) */ - "p\0" - "glNormal3fv\0" + /* _mesa_function_pool[9871]: ClientActiveTexture (offset 375) */ + "i\0" + "glClientActiveTexture\0" + "glClientActiveTextureARB\0" "\0" - /* _mesa_function_pool[12440]: TexGenxOES (will be remapped) */ - "iii\0" - "glTexGenxOES\0" + /* _mesa_function_pool[9921]: GetUniformIndices (will be remapped) */ + "iipp\0" + "glGetUniformIndices\0" "\0" - /* _mesa_function_pool[12458]: GlobalAlphaFactorbSUN (dynamic) */ - "i\0" - "glGlobalAlphaFactorbSUN\0" + /* _mesa_function_pool[9947]: GetTexBumpParameterivATI (will be remapped) */ + "ip\0" + "glGetTexBumpParameterivATI\0" "\0" - /* _mesa_function_pool[12485]: Color3us (offset 23) */ + /* _mesa_function_pool[9978]: Binormal3bEXT (dynamic) */ "iii\0" - "glColor3us\0" + "glBinormal3bEXT\0" "\0" - /* _mesa_function_pool[12501]: ImageTransformParameterfvHP (dynamic) */ - "iip\0" - "glImageTransformParameterfvHP\0" + /* _mesa_function_pool[9999]: CombinerParameterivNV (dynamic) */ + "ip\0" + "glCombinerParameterivNV\0" + "\0" + /* _mesa_function_pool[10027]: MultiTexCoord2sv (offset 391) */ + "ip\0" + "glMultiTexCoord2sv\0" + "glMultiTexCoord2svARB\0" + "\0" + /* _mesa_function_pool[10072]: LoadIdentity (offset 290) */ "\0" - /* _mesa_function_pool[12536]: NormalP3ui (will be remapped) */ + "glLoadIdentity\0" + "\0" + /* _mesa_function_pool[10089]: ActiveShaderProgram (will be remapped) */ "ii\0" - "glNormalP3ui\0" + "glActiveShaderProgram\0" "\0" - /* _mesa_function_pool[12553]: ScissorIndexed (will be remapped) */ - "iiiii\0" - "glScissorIndexed\0" + /* _mesa_function_pool[10115]: DeleteTransformFeedbacks (will be remapped) */ + "ip\0" + "glDeleteTransformFeedbacks\0" "\0" - /* _mesa_function_pool[12577]: End (offset 43) */ + /* _mesa_function_pool[10146]: VertexAttrib4ubvNV (will be remapped) */ + "ip\0" + "glVertexAttrib4ubvNV\0" "\0" - "glEnd\0" + /* _mesa_function_pool[10171]: FogCoordfEXT (will be remapped) */ + "f\0" + "glFogCoordf\0" + "glFogCoordfEXT\0" "\0" - /* _mesa_function_pool[12585]: VertexAttribs3svNV (will be remapped) */ + /* _mesa_function_pool[10201]: GetMapfv (offset 267) */ "iip\0" - "glVertexAttribs3svNV\0" + "glGetMapfv\0" "\0" - /* _mesa_function_pool[12611]: VertexAttribFormat (will be remapped) */ - "iiiii\0" - "glVertexAttribFormat\0" + /* _mesa_function_pool[10217]: GetProgramInfoLog (will be remapped) */ + "iipp\0" + "glGetProgramInfoLog\0" "\0" - /* _mesa_function_pool[12639]: MultiTexCoordP3uiv (will be remapped) */ - "iip\0" - "glMultiTexCoordP3uiv\0" + /* _mesa_function_pool[10243]: BindTransformFeedback (will be remapped) */ + "ii\0" + "glBindTransformFeedback\0" "\0" - /* _mesa_function_pool[12665]: VertexAttribs2dvNV (will be remapped) */ - "iip\0" - "glVertexAttribs2dvNV\0" + /* _mesa_function_pool[10271]: TexCoord4fColor4fNormal3fVertex4fvSUN (dynamic) */ + "pppp\0" + "glTexCoord4fColor4fNormal3fVertex4fvSUN\0" "\0" - /* _mesa_function_pool[12691]: VertexAttribI4ivEXT (will be remapped) */ + /* _mesa_function_pool[10317]: GetPixelMapfv (offset 271) */ "ip\0" - "glVertexAttribI4ivEXT\0" - "glVertexAttribI4iv\0" + "glGetPixelMapfv\0" "\0" - /* _mesa_function_pool[12736]: MultiTexCoord3fvARB (offset 395) */ + /* _mesa_function_pool[10337]: WeightivARB (dynamic) */ "ip\0" - "glMultiTexCoord3fv\0" - "glMultiTexCoord3fvARB\0" + "glWeightivARB\0" "\0" - /* _mesa_function_pool[12781]: Color3ub (offset 19) */ - "iii\0" - "glColor3ub\0" + /* _mesa_function_pool[10355]: DebugMessageCallbackARB (will be remapped) */ + "pp\0" + "glDebugMessageCallbackARB\0" "\0" - /* _mesa_function_pool[12797]: GetProgramParameterfvNV (will be remapped) */ - "iiip\0" - "glGetProgramParameterfvNV\0" + /* _mesa_function_pool[10385]: VertexAttrib4svNV (will be remapped) */ + "ip\0" + "glVertexAttrib4svNV\0" "\0" - /* _mesa_function_pool[12829]: GetActiveUniformsiv (will be remapped) */ - "iipip\0" - "glGetActiveUniformsiv\0" + /* _mesa_function_pool[10409]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */ + "ifffff\0" + "glReplacementCodeuiTexCoord2fVertex3fSUN\0" "\0" - /* _mesa_function_pool[12858]: BindBuffer (will be remapped) */ + /* _mesa_function_pool[10458]: VDPAUSurfaceAccessNV (will be remapped) */ "ii\0" - "glBindBuffer\0" - "glBindBufferARB\0" + "glVDPAUSurfaceAccessNV\0" "\0" - /* _mesa_function_pool[12891]: GetInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[10485]: EdgeFlagPointer (offset 312) */ + "ip\0" + "glEdgeFlagPointer\0" "\0" - "glGetInstrumentsSGIX\0" + /* _mesa_function_pool[10507]: WindowPos2f (will be remapped) */ + "ff\0" + "glWindowPos2f\0" + "glWindowPos2fARB\0" + "glWindowPos2fMESA\0" "\0" - /* _mesa_function_pool[12914]: VertexAttrib2sv (will be remapped) */ - "ip\0" - "glVertexAttrib2sv\0" - "glVertexAttrib2svARB\0" + /* _mesa_function_pool[10560]: WindowPos2d (will be remapped) */ + "dd\0" + "glWindowPos2d\0" + "glWindowPos2dARB\0" + "glWindowPos2dMESA\0" "\0" - /* _mesa_function_pool[12957]: Color3ui (offset 21) */ - "iii\0" - "glColor3ui\0" + /* _mesa_function_pool[10613]: WindowPos2i (will be remapped) */ + "ii\0" + "glWindowPos2i\0" + "glWindowPos2iARB\0" + "glWindowPos2iMESA\0" "\0" - /* _mesa_function_pool[12973]: EvalMapsNV (dynamic) */ + /* _mesa_function_pool[10666]: WindowPos2s (will be remapped) */ "ii\0" - "glEvalMapsNV\0" + "glWindowPos2s\0" + "glWindowPos2sARB\0" + "glWindowPos2sMESA\0" "\0" - /* _mesa_function_pool[12990]: DrawTexxvOES (will be remapped) */ + /* _mesa_function_pool[10719]: VertexAttribI1uiEXT (will be remapped) */ + "ii\0" + "glVertexAttribI1uiEXT\0" + "glVertexAttribI1ui\0" + "\0" + /* _mesa_function_pool[10764]: DeleteSync (will be remapped) */ + "i\0" + "glDeleteSync\0" + "\0" + /* _mesa_function_pool[10780]: WindowPos4fvMESA (will be remapped) */ "p\0" - "glDrawTexxvOES\0" + "glWindowPos4fvMESA\0" "\0" - /* _mesa_function_pool[13008]: TexSubImage2D (offset 333) */ + /* _mesa_function_pool[10802]: CompressedTexImage3D (will be remapped) */ "iiiiiiiip\0" - "glTexSubImage2D\0" - "glTexSubImage2DEXT\0" + "glCompressedTexImage3D\0" + "glCompressedTexImage3DARB\0" + "glCompressedTexImage3DOES\0" "\0" - /* _mesa_function_pool[13054]: FragmentLightivSGIX (dynamic) */ - "iip\0" - "glFragmentLightivSGIX\0" + /* _mesa_function_pool[10888]: VertexAttribI1uiv (will be remapped) */ + "ip\0" + "glVertexAttribI1uivEXT\0" + "glVertexAttribI1uiv\0" "\0" - /* _mesa_function_pool[13081]: IndexPointerListIBM (dynamic) */ - "iipi\0" - "glIndexPointerListIBM\0" + /* _mesa_function_pool[10935]: SecondaryColor3dv (will be remapped) */ + "p\0" + "glSecondaryColor3dv\0" + "glSecondaryColor3dvEXT\0" "\0" - /* _mesa_function_pool[13109]: GetTexParameterPointervAPPLE (dynamic) */ + /* _mesa_function_pool[10981]: GetListParameterivSGIX (dynamic) */ "iip\0" - "glGetTexParameterPointervAPPLE\0" + "glGetListParameterivSGIX\0" "\0" - /* _mesa_function_pool[13145]: TexGenfv (offset 191) */ + /* _mesa_function_pool[11011]: GetnPixelMapusvARB (will be remapped) */ "iip\0" - "glTexGenfv\0" - "glTexGenfvOES\0" + "glGetnPixelMapusvARB\0" "\0" - /* _mesa_function_pool[13175]: VertexAttrib1dNV (will be remapped) */ - "id\0" - "glVertexAttrib1dNV\0" + /* _mesa_function_pool[11037]: VertexAttrib3s (will be remapped) */ + "iiii\0" + "glVertexAttrib3s\0" + "glVertexAttrib3sARB\0" "\0" - /* _mesa_function_pool[13198]: VertexAttrib4dvNV (will be remapped) */ - "ip\0" - "glVertexAttrib4dvNV\0" + /* _mesa_function_pool[11080]: UniformMatrix4x3fv (will be remapped) */ + "iiip\0" + "glUniformMatrix4x3fv\0" "\0" - /* _mesa_function_pool[13222]: GetVertexAttribiv (will be remapped) */ + /* _mesa_function_pool[11107]: Binormal3dEXT (dynamic) */ + "ddd\0" + "glBinormal3dEXT\0" + "\0" + /* _mesa_function_pool[11128]: GetQueryiv (will be remapped) */ "iip\0" - "glGetVertexAttribiv\0" - "glGetVertexAttribivARB\0" + "glGetQueryiv\0" + "glGetQueryivARB\0" "\0" - /* _mesa_function_pool[13270]: QueryMatrixxOES (will be remapped) */ - "pp\0" - "glQueryMatrixxOES\0" + /* _mesa_function_pool[11162]: VertexAttrib3d (will be remapped) */ + "iddd\0" + "glVertexAttrib3d\0" + "glVertexAttrib3dARB\0" "\0" - /* _mesa_function_pool[13292]: ShaderBinary (will be remapped) */ - "ipipi\0" - "glShaderBinary\0" + /* _mesa_function_pool[11205]: ImageTransformParameterfHP (dynamic) */ + "iif\0" + "glImageTransformParameterfHP\0" "\0" - /* _mesa_function_pool[13314]: TexCoordP2uiv (will be remapped) */ + /* _mesa_function_pool[11239]: MapBuffer (will be remapped) */ + "ii\0" + "glMapBuffer\0" + "glMapBufferARB\0" + "glMapBufferOES\0" + "\0" + /* _mesa_function_pool[11285]: VertexAttrib4Nbv (will be remapped) */ "ip\0" - "glTexCoordP2uiv\0" + "glVertexAttrib4Nbv\0" + "glVertexAttrib4NbvARB\0" "\0" - /* _mesa_function_pool[13334]: FragmentMaterialfvSGIX (dynamic) */ - "iip\0" - "glFragmentMaterialfvSGIX\0" + /* _mesa_function_pool[11330]: ProgramBinary (will be remapped) */ + "iipi\0" + "glProgramBinary\0" + "glProgramBinaryOES\0" "\0" - /* _mesa_function_pool[13364]: GetFragmentMaterialivSGIX (dynamic) */ - "iip\0" - "glGetFragmentMaterialivSGIX\0" + /* _mesa_function_pool[11371]: InvalidateTexImage (will be remapped) */ + "ii\0" + "glInvalidateTexImage\0" "\0" - /* _mesa_function_pool[13397]: WindowPos4dMESA (will be remapped) */ - "dddd\0" - "glWindowPos4dMESA\0" + /* _mesa_function_pool[11396]: Uniform4ui (will be remapped) */ + "iiiii\0" + "glUniform4uiEXT\0" + "glUniform4ui\0" "\0" - /* _mesa_function_pool[13421]: DrawBuffers (will be remapped) */ - "ip\0" - "glDrawBuffers\0" - "glDrawBuffersARB\0" - "glDrawBuffersATI\0" - "glDrawBuffersNV\0" + /* _mesa_function_pool[11432]: VertexAttrib1fARB (will be remapped) */ + "if\0" + "glVertexAttrib1f\0" + "glVertexAttrib1fARB\0" "\0" - /* _mesa_function_pool[13489]: Lightxv (will be remapped) */ + /* _mesa_function_pool[11473]: GetBooleani_v (will be remapped) */ "iip\0" - "glLightxvOES\0" - "glLightxv\0" + "glGetBooleanIndexedvEXT\0" + "glGetBooleani_v\0" "\0" - /* _mesa_function_pool[13517]: Uniform3fv (will be remapped) */ - "iip\0" - "glUniform3fv\0" - "glUniform3fvARB\0" + /* _mesa_function_pool[11518]: DrawTexsOES (will be remapped) */ + "iiiii\0" + "glDrawTexsOES\0" + "\0" + /* _mesa_function_pool[11539]: GetObjectPtrLabel (will be remapped) */ + "pipp\0" + "glGetObjectPtrLabel\0" + "\0" + /* _mesa_function_pool[11565]: ProgramParameteri (will be remapped) */ + "iii\0" + "glProgramParameteriARB\0" + "glProgramParameteri\0" + "\0" + /* _mesa_function_pool[11613]: SecondaryColorPointerListIBM (dynamic) */ + "iiipi\0" + "glSecondaryColorPointerListIBM\0" + "\0" + /* _mesa_function_pool[11651]: Color3fv (offset 14) */ + "p\0" + "glColor3fv\0" "\0" - /* _mesa_function_pool[13551]: BlendEquation (offset 337) */ + /* _mesa_function_pool[11665]: ReplacementCodeubSUN (dynamic) */ "i\0" - "glBlendEquation\0" - "glBlendEquationEXT\0" - "glBlendEquationOES\0" + "glReplacementCodeubSUN\0" "\0" - /* _mesa_function_pool[13608]: VertexAttrib3dNV (will be remapped) */ - "iddd\0" - "glVertexAttrib3dNV\0" + /* _mesa_function_pool[11691]: GetnMapfvARB (will be remapped) */ + "iiip\0" + "glGetnMapfvARB\0" "\0" - /* _mesa_function_pool[13633]: Normal3x (will be remapped) */ + /* _mesa_function_pool[11712]: MultiTexCoord2i (offset 388) */ "iii\0" - "glNormal3xOES\0" - "glNormal3x\0" + "glMultiTexCoord2i\0" + "glMultiTexCoord2iARB\0" "\0" - /* _mesa_function_pool[13663]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ - "ppppp\0" - "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN\0" + /* _mesa_function_pool[11756]: MultiTexCoord2d (offset 384) */ + "idd\0" + "glMultiTexCoord2d\0" + "glMultiTexCoord2dARB\0" "\0" - /* _mesa_function_pool[13727]: VertexAttrib4fARB (will be remapped) */ - "iffff\0" - "glVertexAttrib4f\0" - "glVertexAttrib4fARB\0" + /* _mesa_function_pool[11800]: SamplerParameterIuiv (will be remapped) */ + "iip\0" + "glSamplerParameterIuiv\0" "\0" - /* _mesa_function_pool[13771]: GetPerfMonitorGroupStringAMD (will be remapped) */ - "iipp\0" - "glGetPerfMonitorGroupStringAMD\0" + /* _mesa_function_pool[11828]: MultiTexCoord2s (offset 390) */ + "iii\0" + "glMultiTexCoord2s\0" + "glMultiTexCoord2sARB\0" "\0" - /* _mesa_function_pool[13808]: GetError (offset 261) */ + /* _mesa_function_pool[11872]: VDPAURegisterVideoSurfaceNV (will be remapped) */ + "piip\0" + "glVDPAURegisterVideoSurfaceNV\0" "\0" - "glGetError\0" + /* _mesa_function_pool[11908]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ + "ffffffffffff\0" + "glTexCoord2fColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[13821]: IndexFuncEXT (dynamic) */ - "if\0" - "glIndexFuncEXT\0" + /* _mesa_function_pool[11961]: BindBufferBase (will be remapped) */ + "iii\0" + "glBindBufferBase\0" + "glBindBufferBaseEXT\0" "\0" - /* _mesa_function_pool[13840]: TexCoord3dv (offset 111) */ - "p\0" - "glTexCoord3dv\0" + /* _mesa_function_pool[12003]: GetPerfMonitorCounterDataAMD (will be remapped) */ + "iiipp\0" + "glGetPerfMonitorCounterDataAMD\0" + "\0" + /* _mesa_function_pool[12041]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */ + "ppp\0" + "glReplacementCodeuiNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[13857]: Indexdv (offset 45) */ + /* _mesa_function_pool[12086]: MultTransposeMatrixf (will be remapped) */ "p\0" - "glIndexdv\0" + "glMultTransposeMatrixf\0" + "glMultTransposeMatrixfARB\0" "\0" - /* _mesa_function_pool[13870]: InvalidateTexSubImage (will be remapped) */ - "iiiiiiii\0" - "glInvalidateTexSubImage\0" + /* _mesa_function_pool[12138]: PolygonOffsetEXT (will be remapped) */ + "ff\0" + "glPolygonOffsetEXT\0" "\0" - /* _mesa_function_pool[13904]: Normal3s (offset 60) */ + /* _mesa_function_pool[12161]: Scalex (will be remapped) */ "iii\0" - "glNormal3s\0" + "glScalexOES\0" + "glScalex\0" "\0" - /* _mesa_function_pool[13920]: GetObjectParameterivAPPLE (will be remapped) */ - "iiip\0" - "glGetObjectParameterivAPPLE\0" + /* _mesa_function_pool[12187]: Scaled (offset 301) */ + "ddd\0" + "glScaled\0" "\0" - /* _mesa_function_pool[13954]: PushName (offset 201) */ - "i\0" - "glPushName\0" + /* _mesa_function_pool[12201]: Scalef (offset 302) */ + "fff\0" + "glScalef\0" "\0" - /* _mesa_function_pool[13968]: GetTexParameterIuiv (will be remapped) */ - "iip\0" - "glGetTexParameterIuivEXT\0" - "glGetTexParameterIuiv\0" + /* _mesa_function_pool[12215]: IndexPointerEXT (will be remapped) */ + "iiip\0" + "glIndexPointerEXT\0" "\0" - /* _mesa_function_pool[14020]: GetActiveUniformBlockName (will be remapped) */ - "iiipp\0" - "glGetActiveUniformBlockName\0" + /* _mesa_function_pool[12239]: GetUniformfv (will be remapped) */ + "iip\0" + "glGetUniformfv\0" + "glGetUniformfvARB\0" "\0" - /* _mesa_function_pool[14055]: CullParameterfvEXT (dynamic) */ - "ip\0" - "glCullParameterfvEXT\0" + /* _mesa_function_pool[12277]: ColorFragmentOp2ATI (will be remapped) */ + "iiiiiiiiii\0" + "glColorFragmentOp2ATI\0" "\0" - /* _mesa_function_pool[14080]: Normal3i (offset 58) */ + /* _mesa_function_pool[12311]: VertexAttrib2sNV (will be remapped) */ "iii\0" - "glNormal3i\0" + "glVertexAttrib2sNV\0" "\0" - /* _mesa_function_pool[14096]: ProgramNamedParameter4fvNV (will be remapped) */ - "iipp\0" - "glProgramNamedParameter4fvNV\0" + /* _mesa_function_pool[12335]: ReadPixels (offset 256) */ + "iiiiiip\0" + "glReadPixels\0" "\0" - /* _mesa_function_pool[14131]: VertexAttrib4fvARB (will be remapped) */ - "ip\0" - "glVertexAttrib4fv\0" - "glVertexAttrib4fvARB\0" + /* _mesa_function_pool[12357]: NormalPointerListIBM (dynamic) */ + "iipi\0" + "glNormalPointerListIBM\0" "\0" - /* _mesa_function_pool[14174]: VertexAttrib1dv (will be remapped) */ - "ip\0" - "glVertexAttrib1dv\0" - "glVertexAttrib1dvARB\0" + /* _mesa_function_pool[12386]: QueryCounter (will be remapped) */ + "ii\0" + "glQueryCounter\0" "\0" - /* _mesa_function_pool[14217]: PixelTexGenSGIX (dynamic) */ - "i\0" - "glPixelTexGenSGIX\0" + /* _mesa_function_pool[12405]: NormalPointerEXT (will be remapped) */ + "iiip\0" + "glNormalPointerEXT\0" "\0" - /* _mesa_function_pool[14238]: GetnPixelMapfvARB (will be remapped) */ - "iip\0" - "glGetnPixelMapfvARB\0" + /* _mesa_function_pool[12430]: ProgramUniform3iv (will be remapped) */ + "iiip\0" + "glProgramUniform3iv\0" "\0" - /* _mesa_function_pool[14263]: ImageTransformParameteriHP (dynamic) */ - "iii\0" - "glImageTransformParameteriHP\0" + /* _mesa_function_pool[12456]: GetActiveUniformBlockName (will be remapped) */ + "iiipp\0" + "glGetActiveUniformBlockName\0" "\0" - /* _mesa_function_pool[14297]: Normal3b (offset 52) */ - "iii\0" - "glNormal3b\0" + /* _mesa_function_pool[12491]: DrawElementsBaseVertex (will be remapped) */ + "iiipi\0" + "glDrawElementsBaseVertex\0" "\0" - /* _mesa_function_pool[14313]: WindowPos3dv (will be remapped) */ + /* _mesa_function_pool[12523]: RasterPos3iv (offset 75) */ "p\0" - "glWindowPos3dv\0" - "glWindowPos3dvARB\0" - "glWindowPos3dvMESA\0" + "glRasterPos3iv\0" "\0" - /* _mesa_function_pool[14368]: Normal3d (offset 54) */ - "ddd\0" - "glNormal3d\0" + /* _mesa_function_pool[12541]: ColorMaski (will be remapped) */ + "iiiii\0" + "glColorMaskIndexedEXT\0" + "glColorMaski\0" "\0" - /* _mesa_function_pool[14384]: PointParameterxv (will be remapped) */ - "ip\0" - "glPointParameterxvOES\0" - "glPointParameterxv\0" + /* _mesa_function_pool[12583]: Uniform2uiv (will be remapped) */ + "iip\0" + "glUniform2uivEXT\0" + "glUniform2uiv\0" "\0" - /* _mesa_function_pool[14429]: Normal3f (offset 56) */ + /* _mesa_function_pool[12619]: RasterPos3s (offset 76) */ + "iii\0" + "glRasterPos3s\0" + "\0" + /* _mesa_function_pool[12638]: RasterPos3d (offset 70) */ + "ddd\0" + "glRasterPos3d\0" + "\0" + /* _mesa_function_pool[12657]: RasterPos3f (offset 72) */ "fff\0" - "glNormal3f\0" + "glRasterPos3f\0" + "\0" + /* _mesa_function_pool[12676]: BindVertexArray (will be remapped) */ + "i\0" + "glBindVertexArray\0" + "glBindVertexArrayOES\0" + "\0" + /* _mesa_function_pool[12718]: RasterPos3i (offset 74) */ + "iii\0" + "glRasterPos3i\0" "\0" - /* _mesa_function_pool[14445]: FogCoordPointer (will be remapped) */ + /* _mesa_function_pool[12737]: GetTexParameterIuiv (will be remapped) */ "iip\0" - "glFogCoordPointer\0" - "glFogCoordPointerEXT\0" + "glGetTexParameterIuivEXT\0" + "glGetTexParameterIuiv\0" "\0" - /* _mesa_function_pool[14489]: Indexi (offset 48) */ - "i\0" - "glIndexi\0" + /* _mesa_function_pool[12789]: DrawTransformFeedbackStreamInstanced (will be remapped) */ + "iiii\0" + "glDrawTransformFeedbackStreamInstanced\0" "\0" - /* _mesa_function_pool[14501]: EGLImageTargetTexture2DOES (will be remapped) */ + /* _mesa_function_pool[12834]: VertexAttrib2fvARB (will be remapped) */ "ip\0" - "glEGLImageTargetTexture2DOES\0" + "glVertexAttrib2fv\0" + "glVertexAttrib2fvARB\0" "\0" - /* _mesa_function_pool[14534]: VertexAttribI2uiEXT (will be remapped) */ - "iii\0" - "glVertexAttribI2uiEXT\0" - "glVertexAttribI2ui\0" + /* _mesa_function_pool[12877]: VertexPointerListIBM (dynamic) */ + "iiipi\0" + "glVertexPointerListIBM\0" "\0" - /* _mesa_function_pool[14580]: DeleteFencesNV (dynamic) */ - "ip\0" - "glDeleteFencesNV\0" + /* _mesa_function_pool[12907]: TexCoord2fNormal3fVertex3fSUN (dynamic) */ + "ffffffff\0" + "glTexCoord2fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[14601]: IsRenderbuffer (will be remapped) */ + /* _mesa_function_pool[12949]: IsFenceNV (dynamic) */ "i\0" - "glIsRenderbuffer\0" - "glIsRenderbufferEXT\0" - "glIsRenderbufferOES\0" + "glIsFenceNV\0" "\0" - /* _mesa_function_pool[14661]: DepthMask (offset 211) */ + /* _mesa_function_pool[12964]: ColorTable (offset 339) */ + "iiiiip\0" + "glColorTable\0" + "glColorTableSGI\0" + "glColorTableEXT\0" + "\0" + /* _mesa_function_pool[13017]: LoadName (offset 198) */ "i\0" - "glDepthMask\0" + "glLoadName\0" "\0" - /* _mesa_function_pool[14676]: SecondaryColor3us (will be remapped) */ - "iii\0" - "glSecondaryColor3us\0" - "glSecondaryColor3usEXT\0" + /* _mesa_function_pool[13031]: Color3fVertex3fSUN (dynamic) */ + "ffffff\0" + "glColor3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[14724]: Indexf (offset 46) */ + /* _mesa_function_pool[13060]: GetnUniformuivARB (will be remapped) */ + "iiip\0" + "glGetnUniformuivARB\0" + "\0" + /* _mesa_function_pool[13086]: ClearIndex (offset 205) */ "f\0" - "glIndexf\0" + "glClearIndex\0" "\0" - /* _mesa_function_pool[14736]: GetImageTransformParameterivHP (dynamic) */ + /* _mesa_function_pool[13102]: ConvolutionParameterfv (offset 351) */ "iip\0" - "glGetImageTransformParameterivHP\0" + "glConvolutionParameterfv\0" + "glConvolutionParameterfvEXT\0" "\0" - /* _mesa_function_pool[14774]: Indexd (offset 44) */ - "d\0" - "glIndexd\0" + /* _mesa_function_pool[13160]: TbufferMask3DFX (dynamic) */ + "i\0" + "glTbufferMask3DFX\0" "\0" - /* _mesa_function_pool[14786]: GetMaterialiv (offset 270) */ + /* _mesa_function_pool[13181]: GetTexGendv (offset 278) */ "iip\0" - "glGetMaterialiv\0" + "glGetTexGendv\0" "\0" - /* _mesa_function_pool[14807]: StencilOp (offset 244) */ + /* _mesa_function_pool[13200]: MultiTexCoordP1ui (will be remapped) */ "iii\0" - "glStencilOp\0" - "\0" - /* _mesa_function_pool[14824]: WindowPos4ivMESA (will be remapped) */ - "p\0" - "glWindowPos4ivMESA\0" + "glMultiTexCoordP1ui\0" "\0" - /* _mesa_function_pool[14846]: FramebufferTextureLayer (will be remapped) */ + /* _mesa_function_pool[13225]: EvalMesh2 (offset 238) */ "iiiii\0" - "glFramebufferTextureLayer\0" - "glFramebufferTextureLayerARB\0" - "glFramebufferTextureLayerEXT\0" + "glEvalMesh2\0" "\0" - /* _mesa_function_pool[14937]: GetShaderInfoLog (will be remapped) */ - "iipp\0" - "glGetShaderInfoLog\0" + /* _mesa_function_pool[13244]: Vertex4fv (offset 145) */ + "p\0" + "glVertex4fv\0" "\0" - /* _mesa_function_pool[14962]: TexEnvfv (offset 185) */ - "iip\0" - "glTexEnvfv\0" + /* _mesa_function_pool[13259]: SelectPerfMonitorCountersAMD (will be remapped) */ + "iiiip\0" + "glSelectPerfMonitorCountersAMD\0" "\0" - /* _mesa_function_pool[14978]: DrawTexfOES (will be remapped) */ - "fffff\0" - "glDrawTexfOES\0" + /* _mesa_function_pool[13297]: BindFramebuffer (will be remapped) */ + "ii\0" + "glBindFramebuffer\0" + "glBindFramebufferOES\0" "\0" - /* _mesa_function_pool[14999]: Indexs (offset 50) */ + /* _mesa_function_pool[13340]: LoadIdentityDeformationMapSGIX (dynamic) */ "i\0" - "glIndexs\0" - "\0" - /* _mesa_function_pool[15011]: TexCoordP3ui (will be remapped) */ - "ii\0" - "glTexCoordP3ui\0" + "glLoadIdentityDeformationMapSGIX\0" "\0" - /* _mesa_function_pool[15030]: ResizeBuffersMESA (will be remapped) */ + /* _mesa_function_pool[13376]: GetMinmax (offset 364) */ + "iiiip\0" + "glGetMinmax\0" + "glGetMinmaxEXT\0" "\0" - "glResizeBuffersMESA\0" + /* _mesa_function_pool[13410]: Color3fVertex3fvSUN (dynamic) */ + "pp\0" + "glColor3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[15052]: MultiTexCoordP1uiv (will be remapped) */ + /* _mesa_function_pool[13436]: VertexAttribs3svNV (will be remapped) */ "iip\0" - "glMultiTexCoordP1uiv\0" - "\0" - /* _mesa_function_pool[15078]: BlendFuncSeparateiARB (will be remapped) */ - "iiiii\0" - "glBlendFuncSeparateiARB\0" - "glBlendFuncSeparateIndexedAMD\0" + "glVertexAttribs3svNV\0" "\0" - /* _mesa_function_pool[15139]: PixelTexGenParameteriSGIS (dynamic) */ - "ii\0" - "glPixelTexGenParameteriSGIS\0" + /* _mesa_function_pool[13462]: GetActiveUniformsiv (will be remapped) */ + "iipip\0" + "glGetActiveUniformsiv\0" "\0" - /* _mesa_function_pool[15171]: MultiTexCoordP2uiv (will be remapped) */ - "iip\0" - "glMultiTexCoordP2uiv\0" + /* _mesa_function_pool[13491]: VertexAttrib2sv (will be remapped) */ + "ip\0" + "glVertexAttrib2sv\0" + "glVertexAttrib2svARB\0" "\0" - /* _mesa_function_pool[15197]: VertexPointervINTEL (dynamic) */ + /* _mesa_function_pool[13534]: GetProgramEnvParameterdvARB (will be remapped) */ "iip\0" - "glVertexPointervINTEL\0" - "\0" - /* _mesa_function_pool[15224]: Vertex2i (offset 130) */ - "ii\0" - "glVertex2i\0" - "\0" - /* _mesa_function_pool[15239]: GetFragDataIndex (will be remapped) */ - "ip\0" - "glGetFragDataIndex\0" + "glGetProgramEnvParameterdvARB\0" "\0" - /* _mesa_function_pool[15262]: LoadMatrixf (offset 291) */ - "p\0" - "glLoadMatrixf\0" + /* _mesa_function_pool[13569]: VertexAttrib1dNV (will be remapped) */ + "id\0" + "glVertexAttrib1dNV\0" "\0" - /* _mesa_function_pool[15279]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[13592]: ReplacementCodeuiNormal3fVertex3fSUN (dynamic) */ "iffffff\0" - "glReplacementCodeuiColor3fVertex3fSUN\0" - "\0" - /* _mesa_function_pool[15326]: Vertex2f (offset 128) */ - "ff\0" - "glVertex2f\0" - "\0" - /* _mesa_function_pool[15341]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */ - "pppp\0" - "glReplacementCodeuiColor4fNormal3fVertex3fvSUN\0" - "\0" - /* _mesa_function_pool[15394]: Color4bv (offset 26) */ - "p\0" - "glColor4bv\0" - "\0" - /* _mesa_function_pool[15408]: VertexPointer (offset 321) */ - "iiip\0" - "glVertexPointer\0" - "\0" - /* _mesa_function_pool[15430]: VertexAttribP1ui (will be remapped) */ - "iiii\0" - "glVertexAttribP1ui\0" - "\0" - /* _mesa_function_pool[15455]: StartInstrumentsSGIX (dynamic) */ + "glReplacementCodeuiNormal3fVertex3fSUN\0" "\0" - "glStartInstrumentsSGIX\0" + /* _mesa_function_pool[13640]: GetPerfMonitorGroupStringAMD (will be remapped) */ + "iipp\0" + "glGetPerfMonitorGroupStringAMD\0" "\0" - /* _mesa_function_pool[15480]: MultiDrawArraysIndirect (will be remapped) */ - "ipii\0" - "glMultiDrawArraysIndirect\0" + /* _mesa_function_pool[13677]: GetError (offset 261) */ "\0" - /* _mesa_function_pool[15512]: GetCompressedTexImage (will be remapped) */ - "iip\0" - "glGetCompressedTexImage\0" - "glGetCompressedTexImageARB\0" + "glGetError\0" "\0" - /* _mesa_function_pool[15568]: VertexAttrib2fvNV (will be remapped) */ - "ip\0" - "glVertexAttrib2fvNV\0" + /* _mesa_function_pool[13690]: PassThrough (offset 199) */ + "f\0" + "glPassThrough\0" "\0" - /* _mesa_function_pool[15592]: ProgramLocalParameter4dvARB (will be remapped) */ + /* _mesa_function_pool[13707]: GetListParameterfvSGIX (dynamic) */ "iip\0" - "glProgramLocalParameter4dvARB\0" + "glGetListParameterfvSGIX\0" "\0" - /* _mesa_function_pool[15627]: DeleteLists (offset 4) */ - "ii\0" - "glDeleteLists\0" + /* _mesa_function_pool[13737]: GetObjectParameterivAPPLE (will be remapped) */ + "iiip\0" + "glGetObjectParameterivAPPLE\0" "\0" - /* _mesa_function_pool[15645]: LogicOp (offset 242) */ + /* _mesa_function_pool[13771]: GlobalAlphaFactorubSUN (dynamic) */ "i\0" - "glLogicOp\0" + "glGlobalAlphaFactorubSUN\0" "\0" - /* _mesa_function_pool[15658]: MatrixIndexuivARB (dynamic) */ + /* _mesa_function_pool[13799]: VertexAttrib4fvARB (will be remapped) */ "ip\0" - "glMatrixIndexuivARB\0" - "\0" - /* _mesa_function_pool[15682]: Vertex2s (offset 132) */ - "ii\0" - "glVertex2s\0" - "\0" - /* _mesa_function_pool[15697]: RenderbufferStorageMultisample (will be remapped) */ - "iiiii\0" - "glRenderbufferStorageMultisample\0" - "glRenderbufferStorageMultisampleEXT\0" + "glVertexAttrib4fv\0" + "glVertexAttrib4fvARB\0" "\0" - /* _mesa_function_pool[15773]: TexCoord4fv (offset 121) */ + /* _mesa_function_pool[13842]: WindowPos3dv (will be remapped) */ "p\0" - "glTexCoord4fv\0" - "\0" - /* _mesa_function_pool[15790]: ActiveTexture (offset 374) */ - "i\0" - "glActiveTexture\0" - "glActiveTextureARB\0" - "\0" - /* _mesa_function_pool[15828]: GlobalAlphaFactorfSUN (dynamic) */ - "f\0" - "glGlobalAlphaFactorfSUN\0" - "\0" - /* _mesa_function_pool[15855]: VertexAttribP1uiv (will be remapped) */ - "iiip\0" - "glVertexAttribP1uiv\0" - "\0" - /* _mesa_function_pool[15881]: IsProgram (will be remapped) */ - "i\0" - "glIsProgram\0" + "glWindowPos3dv\0" + "glWindowPos3dvARB\0" + "glWindowPos3dvMESA\0" "\0" - /* _mesa_function_pool[15896]: SecondaryColor3bv (will be remapped) */ + /* _mesa_function_pool[13897]: ReplacementCodeusvSUN (dynamic) */ "p\0" - "glSecondaryColor3bv\0" - "glSecondaryColor3bvEXT\0" + "glReplacementCodeusvSUN\0" "\0" - /* _mesa_function_pool[15942]: GlobalAlphaFactorusSUN (dynamic) */ - "i\0" - "glGlobalAlphaFactorusSUN\0" + /* _mesa_function_pool[13924]: DeleteFencesNV (dynamic) */ + "ip\0" + "glDeleteFencesNV\0" "\0" - /* _mesa_function_pool[15970]: Uniform2uiv (will be remapped) */ + /* _mesa_function_pool[13945]: GetImageTransformParameterivHP (dynamic) */ "iip\0" - "glUniform2uivEXT\0" - "glUniform2uiv\0" + "glGetImageTransformParameterivHP\0" "\0" - /* _mesa_function_pool[16006]: ColorP4uiv (will be remapped) */ - "ip\0" - "glColorP4uiv\0" + /* _mesa_function_pool[13983]: StencilOp (offset 244) */ + "iii\0" + "glStencilOp\0" "\0" - /* _mesa_function_pool[16023]: TextureRangeAPPLE (dynamic) */ - "iip\0" - "glTextureRangeAPPLE\0" + /* _mesa_function_pool[14000]: Binormal3fEXT (dynamic) */ + "fff\0" + "glBinormal3fEXT\0" "\0" - /* _mesa_function_pool[16048]: ClearBufferuiv (will be remapped) */ - "iip\0" - "glClearBufferuiv\0" + /* _mesa_function_pool[14021]: ProgramUniform1iv (will be remapped) */ + "iiip\0" + "glProgramUniform1iv\0" "\0" - /* _mesa_function_pool[16070]: VertexAttrib1dvNV (will be remapped) */ - "ip\0" - "glVertexAttrib1dvNV\0" + /* _mesa_function_pool[14047]: ProgramUniform3ui (will be remapped) */ + "iiiii\0" + "glProgramUniform3ui\0" "\0" - /* _mesa_function_pool[16094]: Uniform1ui (will be remapped) */ + /* _mesa_function_pool[14074]: SecondaryColor3sv (will be remapped) */ + "p\0" + "glSecondaryColor3sv\0" + "glSecondaryColor3svEXT\0" + "\0" + /* _mesa_function_pool[14120]: TexCoordP3ui (will be remapped) */ "ii\0" - "glUniform1uiEXT\0" - "glUniform1ui\0" + "glTexCoordP3ui\0" "\0" - /* _mesa_function_pool[16127]: GenTextures (offset 328) */ + /* _mesa_function_pool[14139]: Fogxv (will be remapped) */ "ip\0" - "glGenTextures\0" - "glGenTexturesEXT\0" + "glFogxvOES\0" + "glFogxv\0" "\0" - /* _mesa_function_pool[16162]: MultiTexCoordP4uiv (will be remapped) */ + /* _mesa_function_pool[14162]: VertexPointervINTEL (dynamic) */ "iip\0" - "glMultiTexCoordP4uiv\0" + "glVertexPointervINTEL\0" "\0" - /* _mesa_function_pool[16188]: GetCombinerOutputParameterivNV (dynamic) */ - "iiip\0" - "glGetCombinerOutputParameterivNV\0" + /* _mesa_function_pool[14189]: VertexAttribP1ui (will be remapped) */ + "iiii\0" + "glVertexAttribP1ui\0" "\0" - /* _mesa_function_pool[16227]: PixelTexGenParameterivSGIS (dynamic) */ - "ip\0" - "glPixelTexGenParameterivSGIS\0" + /* _mesa_function_pool[14214]: DeleteLists (offset 4) */ + "ii\0" + "glDeleteLists\0" "\0" - /* _mesa_function_pool[16260]: TextureNormalEXT (dynamic) */ + /* _mesa_function_pool[14232]: LogicOp (offset 242) */ "i\0" - "glTextureNormalEXT\0" + "glLogicOp\0" "\0" - /* _mesa_function_pool[16282]: WindowPos3d (will be remapped) */ + /* _mesa_function_pool[14245]: RenderbufferStorageMultisample (will be remapped) */ + "iiiii\0" + "glRenderbufferStorageMultisample\0" + "glRenderbufferStorageMultisampleEXT\0" + "\0" + /* _mesa_function_pool[14321]: WindowPos3d (will be remapped) */ "ddd\0" "glWindowPos3d\0" "glWindowPos3dARB\0" "glWindowPos3dMESA\0" "\0" - /* _mesa_function_pool[16336]: Enablei (will be remapped) */ + /* _mesa_function_pool[14375]: Enablei (will be remapped) */ "ii\0" "glEnableIndexedEXT\0" "glEnablei\0" "\0" - /* _mesa_function_pool[16369]: WindowPos3f (will be remapped) */ + /* _mesa_function_pool[14408]: WindowPos3f (will be remapped) */ "fff\0" "glWindowPos3f\0" "glWindowPos3fARB\0" "glWindowPos3fMESA\0" "\0" - /* _mesa_function_pool[16423]: SecondaryColor3ub (will be remapped) */ - "iii\0" - "glSecondaryColor3ub\0" - "glSecondaryColor3ubEXT\0" - "\0" - /* _mesa_function_pool[16471]: FinalCombinerInputNV (dynamic) */ - "iiii\0" - "glFinalCombinerInputNV\0" - "\0" - /* _mesa_function_pool[16500]: GenProgramsARB (will be remapped) */ + /* _mesa_function_pool[14462]: GenProgramsARB (will be remapped) */ "ip\0" "glGenProgramsARB\0" "glGenProgramsNV\0" "\0" - /* _mesa_function_pool[16537]: MultiTexCoordP3ui (will be remapped) */ - "iii\0" - "glMultiTexCoordP3ui\0" - "\0" - /* _mesa_function_pool[16562]: RasterPos2sv (offset 69) */ + /* _mesa_function_pool[14499]: RasterPos2sv (offset 69) */ "p\0" "glRasterPos2sv\0" "\0" - /* _mesa_function_pool[16580]: Color4ubv (offset 36) */ - "p\0" - "glColor4ubv\0" - "\0" - /* _mesa_function_pool[16595]: DrawBuffer (offset 202) */ - "i\0" - "glDrawBuffer\0" - "\0" - /* _mesa_function_pool[16611]: TexCoord2fv (offset 105) */ - "p\0" - "glTexCoord2fv\0" - "\0" - /* _mesa_function_pool[16628]: BeginFragmentShaderATI (will be remapped) */ - "\0" - "glBeginFragmentShaderATI\0" - "\0" - /* _mesa_function_pool[16655]: WindowPos4fMESA (will be remapped) */ - "ffff\0" - "glWindowPos4fMESA\0" + /* _mesa_function_pool[14517]: WindowPos3i (will be remapped) */ + "iii\0" + "glWindowPos3i\0" + "glWindowPos3iARB\0" + "glWindowPos3iMESA\0" "\0" - /* _mesa_function_pool[16679]: MultiTexCoord4iv (offset 405) */ + /* _mesa_function_pool[14571]: MultiTexCoord4iv (offset 405) */ "ip\0" "glMultiTexCoord4iv\0" "glMultiTexCoord4ivARB\0" "\0" - /* _mesa_function_pool[16724]: TexCoord1sv (offset 101) */ + /* _mesa_function_pool[14616]: TexCoord1sv (offset 101) */ "p\0" "glTexCoord1sv\0" "\0" - /* _mesa_function_pool[16741]: WindowPos2i (will be remapped) */ - "ii\0" - "glWindowPos2i\0" - "glWindowPos2iARB\0" - "glWindowPos2iMESA\0" - "\0" - /* _mesa_function_pool[16794]: WindowPos3s (will be remapped) */ + /* _mesa_function_pool[14633]: WindowPos3s (will be remapped) */ "iii\0" "glWindowPos3s\0" "glWindowPos3sARB\0" "glWindowPos3sMESA\0" "\0" - /* _mesa_function_pool[16848]: VertexAttribP4ui (will be remapped) */ - "iiii\0" - "glVertexAttribP4ui\0" - "\0" - /* _mesa_function_pool[16873]: DepthFunc (offset 245) */ - "i\0" - "glDepthFunc\0" - "\0" - /* _mesa_function_pool[16888]: PixelMapusv (offset 253) */ + /* _mesa_function_pool[14687]: PixelMapusv (offset 253) */ "iip\0" "glPixelMapusv\0" "\0" - /* _mesa_function_pool[16907]: GetSamplerParameterIiv (will be remapped) */ - "iip\0" - "glGetSamplerParameterIiv\0" - "\0" - /* _mesa_function_pool[16937]: IsSampler (will be remapped) */ - "i\0" - "glIsSampler\0" - "\0" - /* _mesa_function_pool[16952]: BlendFunc (offset 241) */ - "ii\0" - "glBlendFunc\0" - "\0" - /* _mesa_function_pool[16968]: Uniform4i (will be remapped) */ - "iiiii\0" - "glUniform4i\0" - "glUniform4iARB\0" - "\0" - /* _mesa_function_pool[17002]: ColorP3ui (will be remapped) */ - "ii\0" - "glColorP3ui\0" + /* _mesa_function_pool[14706]: DebugMessageInsert (will be remapped) */ + "iiiiip\0" + "glDebugMessageInsert\0" "\0" - /* _mesa_function_pool[17018]: BufferParameteriAPPLE (will be remapped) */ - "iii\0" - "glBufferParameteriAPPLE\0" + /* _mesa_function_pool[14735]: Orthof (will be remapped) */ + "ffffff\0" + "glOrthofOES\0" + "glOrthof\0" "\0" - /* _mesa_function_pool[17047]: CompressedTexImage2D (will be remapped) */ + /* _mesa_function_pool[14764]: CompressedTexImage2D (will be remapped) */ "iiiiiiip\0" "glCompressedTexImage2D\0" "glCompressedTexImage2DARB\0" "\0" - /* _mesa_function_pool[17106]: DeleteObjectARB (will be remapped) */ + /* _mesa_function_pool[14823]: DeleteObjectARB (will be remapped) */ "i\0" "glDeleteObjectARB\0" "\0" - /* _mesa_function_pool[17127]: GetShaderPrecisionFormat (will be remapped) */ - "iipp\0" - "glGetShaderPrecisionFormat\0" - "\0" - /* _mesa_function_pool[17160]: TextureBarrierNV (will be remapped) */ - "\0" - "glTextureBarrierNV\0" - "\0" - /* _mesa_function_pool[17181]: GetBooleani_v (will be remapped) */ - "iip\0" - "glGetBooleanIndexedvEXT\0" - "glGetBooleani_v\0" - "\0" - /* _mesa_function_pool[17226]: ProgramNamedParameter4dvNV (will be remapped) */ - "iipp\0" - "glProgramNamedParameter4dvNV\0" - "\0" - /* _mesa_function_pool[17261]: Tangent3fvEXT (dynamic) */ - "p\0" - "glTangent3fvEXT\0" - "\0" - /* _mesa_function_pool[17280]: Flush (offset 217) */ - "\0" - "glFlush\0" + /* _mesa_function_pool[14844]: IsSync (will be remapped) */ + "i\0" + "glIsSync\0" "\0" - /* _mesa_function_pool[17290]: Color4uiv (offset 38) */ + /* _mesa_function_pool[14856]: Color4uiv (offset 38) */ "p\0" "glColor4uiv\0" "\0" - /* _mesa_function_pool[17305]: MultiTexCoord1sv (offset 383) */ + /* _mesa_function_pool[14871]: MultiTexCoord1sv (offset 383) */ "ip\0" "glMultiTexCoord1sv\0" "glMultiTexCoord1svARB\0" "\0" - /* _mesa_function_pool[17350]: VDPAUIsSurfaceNV (will be remapped) */ - "i\0" - "glVDPAUIsSurfaceNV\0" - "\0" - /* _mesa_function_pool[17372]: FogCoordd (will be remapped) */ - "d\0" - "glFogCoordd\0" - "glFogCoorddEXT\0" - "\0" - /* _mesa_function_pool[17402]: RasterPos3sv (offset 77) */ - "p\0" - "glRasterPos3sv\0" - "\0" - /* _mesa_function_pool[17420]: TexCoordP2ui (will be remapped) */ - "ii\0" - "glTexCoordP2ui\0" - "\0" - /* _mesa_function_pool[17439]: BindFramebufferEXT (will be remapped) */ - "ii\0" - "glBindFramebufferEXT\0" - "\0" - /* _mesa_function_pool[17464]: Uniform1uiv (will be remapped) */ - "iip\0" - "glUniform1uivEXT\0" - "glUniform1uiv\0" - "\0" - /* _mesa_function_pool[17500]: ReferencePlaneSGIX (dynamic) */ - "p\0" - "glReferencePlaneSGIX\0" + /* _mesa_function_pool[14916]: Orthox (will be remapped) */ + "iiiiii\0" + "glOrthoxOES\0" + "glOrthox\0" "\0" - /* _mesa_function_pool[17524]: PushAttrib (offset 219) */ + /* _mesa_function_pool[14945]: PushAttrib (offset 219) */ "i\0" "glPushAttrib\0" "\0" - /* _mesa_function_pool[17540]: RasterPos2i (offset 66) */ + /* _mesa_function_pool[14961]: RasterPos2i (offset 66) */ "ii\0" "glRasterPos2i\0" "\0" - /* _mesa_function_pool[17558]: Uniform3iv (will be remapped) */ - "iip\0" - "glUniform3iv\0" - "glUniform3ivARB\0" - "\0" - /* _mesa_function_pool[17592]: SamplerParameteriv (will be remapped) */ - "iip\0" - "glSamplerParameteriv\0" - "\0" - /* _mesa_function_pool[17618]: TexParameteriv (offset 181) */ - "iip\0" - "glTexParameteriv\0" - "\0" - /* _mesa_function_pool[17640]: GetAttribLocation (will be remapped) */ + /* _mesa_function_pool[14979]: ClipPlane (offset 150) */ "ip\0" - "glGetAttribLocation\0" - "glGetAttribLocationARB\0" + "glClipPlane\0" "\0" - /* _mesa_function_pool[17687]: TexCoord2fColor3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[14995]: TexCoord2fColor3fVertex3fSUN (dynamic) */ "ffffffff\0" "glTexCoord2fColor3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[17728]: DeleteAsyncMarkersSGIX (dynamic) */ - "ii\0" - "glDeleteAsyncMarkersSGIX\0" + /* _mesa_function_pool[15036]: GetProgramivNV (will be remapped) */ + "iip\0" + "glGetProgramivNV\0" "\0" - /* _mesa_function_pool[17757]: RasterPos2f (offset 64) */ + /* _mesa_function_pool[15058]: RasterPos2f (offset 64) */ "ff\0" "glRasterPos2f\0" "\0" - /* _mesa_function_pool[17775]: TexCoord4fVertex4fSUN (dynamic) */ - "ffffffff\0" - "glTexCoord4fVertex4fSUN\0" - "\0" - /* _mesa_function_pool[17809]: RasterPos2d (offset 62) */ + /* _mesa_function_pool[15076]: RasterPos2d (offset 62) */ "dd\0" "glRasterPos2d\0" "\0" - /* _mesa_function_pool[17827]: VertexAttrib4iv (will be remapped) */ - "ip\0" - "glVertexAttrib4iv\0" - "glVertexAttrib4ivARB\0" - "\0" - /* _mesa_function_pool[17870]: RasterPos3fv (offset 73) */ + /* _mesa_function_pool[15094]: RasterPos3fv (offset 73) */ "p\0" "glRasterPos3fv\0" "\0" - /* _mesa_function_pool[17888]: CopyTexSubImage3D (offset 373) */ - "iiiiiiiii\0" - "glCopyTexSubImage3D\0" - "glCopyTexSubImage3DEXT\0" - "glCopyTexSubImage3DOES\0" + /* _mesa_function_pool[15112]: InvalidateSubFramebuffer (will be remapped) */ + "iipiiii\0" + "glInvalidateSubFramebuffer\0" "\0" - /* _mesa_function_pool[17965]: Color4ub (offset 35) */ + /* _mesa_function_pool[15148]: Color4ub (offset 35) */ "iiii\0" "glColor4ub\0" "\0" - /* _mesa_function_pool[17982]: GetInteger64v (will be remapped) */ - "ip\0" - "glGetInteger64v\0" - "\0" - /* _mesa_function_pool[18002]: TextureColorMaskSGIS (dynamic) */ - "iiii\0" - "glTextureColorMaskSGIS\0" - "\0" - /* _mesa_function_pool[18031]: RasterPos2s (offset 68) */ + /* _mesa_function_pool[15165]: RasterPos2s (offset 68) */ "ii\0" "glRasterPos2s\0" "\0" - /* _mesa_function_pool[18049]: GetColorTable (offset 343) */ - "iiip\0" - "glGetColorTable\0" - "glGetColorTableSGI\0" - "glGetColorTableEXT\0" + /* _mesa_function_pool[15183]: Color4fNormal3fVertex3fvSUN (dynamic) */ + "ppp\0" + "glColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[18109]: EndQueryIndexed (will be remapped) */ - "ii\0" - "glEndQueryIndexed\0" + /* _mesa_function_pool[15218]: GetVertexAttribivNV (will be remapped) */ + "iip\0" + "glGetVertexAttribivNV\0" "\0" - /* _mesa_function_pool[18131]: SelectBuffer (offset 195) */ + /* _mesa_function_pool[15245]: TexSubImage4DSGIS (dynamic) */ + "iiiiiiiiiiiip\0" + "glTexSubImage4DSGIS\0" + "\0" + /* _mesa_function_pool[15280]: MultiTexCoord3dv (offset 393) */ "ip\0" - "glSelectBuffer\0" + "glMultiTexCoord3dv\0" + "glMultiTexCoord3dvARB\0" "\0" - /* _mesa_function_pool[18150]: Indexiv (offset 49) */ - "p\0" - "glIndexiv\0" + /* _mesa_function_pool[15325]: BindProgramPipeline (will be remapped) */ + "i\0" + "glBindProgramPipeline\0" "\0" - /* _mesa_function_pool[18163]: TexCoord3i (offset 114) */ - "iii\0" - "glTexCoord3i\0" + /* _mesa_function_pool[15350]: VertexAttribP4uiv (will be remapped) */ + "iiip\0" + "glVertexAttribP4uiv\0" "\0" - /* _mesa_function_pool[18181]: CopyColorTable (offset 342) */ - "iiiii\0" - "glCopyColorTable\0" - "glCopyColorTableSGI\0" + /* _mesa_function_pool[15376]: DebugMessageCallback (will be remapped) */ + "pp\0" + "glDebugMessageCallback\0" "\0" - /* _mesa_function_pool[18225]: PointParameterfv (will be remapped) */ - "ip\0" - "glPointParameterfv\0" - "glPointParameterfvARB\0" - "glPointParameterfvEXT\0" - "glPointParameterfvSGIS\0" + /* _mesa_function_pool[15403]: MultiTexCoord1i (offset 380) */ + "ii\0" + "glMultiTexCoord1i\0" + "glMultiTexCoord1iARB\0" + "\0" + /* _mesa_function_pool[15446]: WindowPos2dv (will be remapped) */ + "p\0" + "glWindowPos2dv\0" + "glWindowPos2dvARB\0" + "glWindowPos2dvMESA\0" "\0" - /* _mesa_function_pool[18315]: GetHistogramParameterfv (offset 362) */ + /* _mesa_function_pool[15501]: TexParameterIuiv (will be remapped) */ "iip\0" - "glGetHistogramParameterfv\0" - "glGetHistogramParameterfvEXT\0" + "glTexParameterIuivEXT\0" + "glTexParameterIuiv\0" "\0" - /* _mesa_function_pool[18375]: Frustum (offset 289) */ - "dddddd\0" - "glFrustum\0" + /* _mesa_function_pool[15547]: MultiTexCoord1d (offset 376) */ + "id\0" + "glMultiTexCoord1d\0" + "glMultiTexCoord1dARB\0" "\0" - /* _mesa_function_pool[18393]: GetString (offset 275) */ - "i\0" - "glGetString\0" + /* _mesa_function_pool[15590]: GenVertexArraysAPPLE (will be remapped) */ + "ip\0" + "glGenVertexArraysAPPLE\0" "\0" - /* _mesa_function_pool[18408]: ColorPointervINTEL (dynamic) */ - "iip\0" - "glColorPointervINTEL\0" + /* _mesa_function_pool[15617]: MultiTexCoord1s (offset 382) */ + "ii\0" + "glMultiTexCoord1s\0" + "glMultiTexCoord1sARB\0" "\0" - /* _mesa_function_pool[18434]: TexEnvf (offset 184) */ - "iif\0" - "glTexEnvf\0" + /* _mesa_function_pool[15660]: BeginConditionalRender (will be remapped) */ + "ii\0" + "glBeginConditionalRender\0" + "glBeginConditionalRenderNV\0" "\0" - /* _mesa_function_pool[18449]: GetTexGenxvOES (will be remapped) */ - "iip\0" - "glGetTexGenxvOES\0" + /* _mesa_function_pool[15716]: LoadPaletteFromModelViewMatrixOES (dynamic) */ "\0" - /* _mesa_function_pool[18471]: TexCoord3d (offset 110) */ - "ddd\0" - "glTexCoord3d\0" + "glLoadPaletteFromModelViewMatrixOES\0" "\0" - /* _mesa_function_pool[18489]: AlphaFragmentOp1ATI (will be remapped) */ - "iiiiii\0" - "glAlphaFragmentOp1ATI\0" + /* _mesa_function_pool[15754]: GetShaderiv (will be remapped) */ + "iip\0" + "glGetShaderiv\0" "\0" - /* _mesa_function_pool[18519]: TexCoord3f (offset 112) */ - "fff\0" - "glTexCoord3f\0" + /* _mesa_function_pool[15773]: GetMapAttribParameterfvNV (dynamic) */ + "iiip\0" + "glGetMapAttribParameterfvNV\0" "\0" - /* _mesa_function_pool[18537]: GetnHistogramARB (will be remapped) */ - "iiiiip\0" - "glGetnHistogramARB\0" + /* _mesa_function_pool[15807]: CopyConvolutionFilter1D (offset 354) */ + "iiiii\0" + "glCopyConvolutionFilter1D\0" + "glCopyConvolutionFilter1DEXT\0" "\0" - /* _mesa_function_pool[18564]: DeleteTextures (offset 327) */ + /* _mesa_function_pool[15869]: ClearBufferfv (will be remapped) */ + "iip\0" + "glClearBufferfv\0" + "\0" + /* _mesa_function_pool[15890]: InstrumentsBufferSGIX (dynamic) */ "ip\0" - "glDeleteTextures\0" - "glDeleteTexturesEXT\0" + "glInstrumentsBufferSGIX\0" "\0" - /* _mesa_function_pool[18605]: TexCoordPointerEXT (will be remapped) */ - "iiiip\0" - "glTexCoordPointerEXT\0" + /* _mesa_function_pool[15918]: CreateShaderObjectARB (will be remapped) */ + "i\0" + "glCreateShaderObjectARB\0" "\0" - /* _mesa_function_pool[18633]: TexSubImage4DSGIS (dynamic) */ - "iiiiiiiiiiiip\0" - "glTexSubImage4DSGIS\0" + /* _mesa_function_pool[15945]: GetTexParameterxv (will be remapped) */ + "iip\0" + "glGetTexParameterxvOES\0" + "glGetTexParameterxv\0" "\0" - /* _mesa_function_pool[18668]: TexCoord3s (offset 116) */ - "iii\0" - "glTexCoord3s\0" + /* _mesa_function_pool[15993]: GetAttachedShaders (will be remapped) */ + "iipp\0" + "glGetAttachedShaders\0" "\0" - /* _mesa_function_pool[18686]: GetTexLevelParameteriv (offset 285) */ - "iiip\0" - "glGetTexLevelParameteriv\0" + /* _mesa_function_pool[16020]: ClearBufferfi (will be remapped) */ + "iifi\0" + "glClearBufferfi\0" "\0" - /* _mesa_function_pool[18717]: GetClipPlanef (will be remapped) */ - "ip\0" - "glGetClipPlanefOES\0" - "glGetClipPlanef\0" + /* _mesa_function_pool[16042]: Materialiv (offset 172) */ + "iip\0" + "glMaterialiv\0" "\0" - /* _mesa_function_pool[18756]: VertexAttribPointer (will be remapped) */ - "iiiiip\0" - "glVertexAttribPointer\0" - "glVertexAttribPointerARB\0" + /* _mesa_function_pool[16060]: DeleteFragmentShaderATI (will be remapped) */ + "i\0" + "glDeleteFragmentShaderATI\0" "\0" - /* _mesa_function_pool[18811]: TexStorage2DMultisample (will be remapped) */ - "iiiiii\0" - "glTexStorage2DMultisample\0" + /* _mesa_function_pool[16089]: Tangent3dvEXT (dynamic) */ + "p\0" + "glTangent3dvEXT\0" "\0" - /* _mesa_function_pool[18845]: VertexAttribP4uiv (will be remapped) */ - "iiip\0" - "glVertexAttribP4uiv\0" + /* _mesa_function_pool[16108]: DrawElementsInstancedBaseVertex (will be remapped) */ + "iiipii\0" + "glDrawElementsInstancedBaseVertex\0" "\0" - /* _mesa_function_pool[18871]: StopInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[16150]: DisableClientState (offset 309) */ "i\0" - "glStopInstrumentsSGIX\0" + "glDisableClientState\0" "\0" - /* _mesa_function_pool[18896]: SecondaryColor3s (will be remapped) */ + /* _mesa_function_pool[16174]: TexGeni (offset 192) */ "iii\0" - "glSecondaryColor3s\0" - "glSecondaryColor3sEXT\0" + "glTexGeni\0" + "glTexGeniOES\0" "\0" - /* _mesa_function_pool[18942]: ClearAccum (offset 204) */ - "ffff\0" - "glClearAccum\0" + /* _mesa_function_pool[16202]: TexGenf (offset 190) */ + "iif\0" + "glTexGenf\0" + "glTexGenfOES\0" "\0" - /* _mesa_function_pool[18961]: DeformSGIX (dynamic) */ - "i\0" - "glDeformSGIX\0" + /* _mesa_function_pool[16230]: TexGend (offset 188) */ + "iid\0" + "glTexGend\0" "\0" - /* _mesa_function_pool[18977]: InvalidateBufferSubData (will be remapped) */ - "iii\0" - "glInvalidateBufferSubData\0" + /* _mesa_function_pool[16245]: GetVertexAttribfvNV (will be remapped) */ + "iip\0" + "glGetVertexAttribfvNV\0" "\0" - /* _mesa_function_pool[19008]: Uniform3i (will be remapped) */ - "iiii\0" - "glUniform3i\0" - "glUniform3iARB\0" + /* _mesa_function_pool[16272]: ColorPointerListIBM (dynamic) */ + "iiipi\0" + "glColorPointerListIBM\0" "\0" - /* _mesa_function_pool[19041]: TexCoord4iv (offset 123) */ + /* _mesa_function_pool[16301]: Color4sv (offset 34) */ "p\0" - "glTexCoord4iv\0" - "\0" - /* _mesa_function_pool[19058]: TexStorage3D (will be remapped) */ - "iiiiii\0" - "glTexStorage3D\0" + "glColor4sv\0" "\0" - /* _mesa_function_pool[19081]: UniformMatrix4x2fv (will be remapped) */ - "iiip\0" - "glUniformMatrix4x2fv\0" + /* _mesa_function_pool[16315]: GetCombinerInputParameterfvNV (dynamic) */ + "iiiip\0" + "glGetCombinerInputParameterfvNV\0" "\0" - /* _mesa_function_pool[19108]: GetDetailTexFuncSGIS (dynamic) */ - "ip\0" - "glGetDetailTexFuncSGIS\0" + /* _mesa_function_pool[16354]: LoadTransposeMatrixf (will be remapped) */ + "p\0" + "glLoadTransposeMatrixf\0" + "glLoadTransposeMatrixfARB\0" "\0" - /* _mesa_function_pool[19135]: WindowPos3i (will be remapped) */ - "iii\0" - "glWindowPos3i\0" - "glWindowPos3iARB\0" - "glWindowPos3iMESA\0" + /* _mesa_function_pool[16406]: LoadTransposeMatrixd (will be remapped) */ + "p\0" + "glLoadTransposeMatrixd\0" + "glLoadTransposeMatrixdARB\0" "\0" - /* _mesa_function_pool[19189]: SecondaryColor3b (will be remapped) */ - "iii\0" - "glSecondaryColor3b\0" - "glSecondaryColor3bEXT\0" + /* _mesa_function_pool[16458]: PixelZoom (offset 246) */ + "ff\0" + "glPixelZoom\0" "\0" - /* _mesa_function_pool[19235]: FramebufferTexture3D (will be remapped) */ - "iiiiii\0" - "glFramebufferTexture3D\0" - "glFramebufferTexture3DEXT\0" - "glFramebufferTexture3DOES\0" + /* _mesa_function_pool[16474]: ProgramEnvParameter4dARB (will be remapped) */ + "iidddd\0" + "glProgramEnvParameter4dARB\0" + "glProgramParameter4dNV\0" "\0" - /* _mesa_function_pool[19318]: SamplerParameterIiv (will be remapped) */ + /* _mesa_function_pool[16532]: ColorTableParameterfv (offset 340) */ "iip\0" - "glSamplerParameterIiv\0" - "\0" - /* _mesa_function_pool[19345]: PolygonOffset (offset 319) */ - "ff\0" - "glPolygonOffset\0" + "glColorTableParameterfv\0" + "glColorTableParameterfvSGI\0" "\0" - /* _mesa_function_pool[19365]: BindVertexArray (will be remapped) */ + /* _mesa_function_pool[16588]: IsTexture (offset 330) */ "i\0" - "glBindVertexArray\0" - "glBindVertexArrayOES\0" + "glIsTexture\0" + "glIsTextureEXT\0" "\0" - /* _mesa_function_pool[19407]: Color4ubVertex2fvSUN (dynamic) */ - "pp\0" - "glColor4ubVertex2fvSUN\0" + /* _mesa_function_pool[16618]: ProgramUniform3uiv (will be remapped) */ + "iiip\0" + "glProgramUniform3uiv\0" "\0" - /* _mesa_function_pool[19434]: GetProgramBinary (will be remapped) */ - "iippp\0" - "glGetProgramBinary\0" - "glGetProgramBinaryOES\0" + /* _mesa_function_pool[16645]: ProgramUniform2fv (will be remapped) */ + "iiip\0" + "glProgramUniform2fv\0" "\0" - /* _mesa_function_pool[19482]: GetBufferParameteriv (will be remapped) */ + /* _mesa_function_pool[16671]: ImageTransformParameterivHP (dynamic) */ "iip\0" - "glGetBufferParameteriv\0" - "glGetBufferParameterivARB\0" + "glImageTransformParameterivHP\0" "\0" - /* _mesa_function_pool[19536]: Rectd (offset 86) */ - "dddd\0" - "glRectd\0" + /* _mesa_function_pool[16706]: VertexAttrib4sNV (will be remapped) */ + "iiiii\0" + "glVertexAttrib4sNV\0" "\0" - /* _mesa_function_pool[19550]: TexFilterFuncSGIS (dynamic) */ - "iiip\0" - "glTexFilterFuncSGIS\0" + /* _mesa_function_pool[16732]: GetMapdv (offset 266) */ + "iip\0" + "glGetMapdv\0" "\0" - /* _mesa_function_pool[19576]: NormalPointervINTEL (dynamic) */ + /* _mesa_function_pool[16748]: GenVertexArrays (will be remapped) */ "ip\0" - "glNormalPointervINTEL\0" + "glGenVertexArrays\0" + "glGenVertexArraysOES\0" "\0" - /* _mesa_function_pool[19602]: ProvokingVertex (will be remapped) */ + /* _mesa_function_pool[16791]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */ + "iiiiifff\0" + "glReplacementCodeuiColor4ubVertex3fSUN\0" + "\0" + /* _mesa_function_pool[16840]: IsBuffer (will be remapped) */ "i\0" - "glProvokingVertexEXT\0" - "glProvokingVertex\0" + "glIsBuffer\0" + "glIsBufferARB\0" "\0" - /* _mesa_function_pool[19644]: SamplerParameterfv (will be remapped) */ - "iip\0" - "glSamplerParameterfv\0" + /* _mesa_function_pool[16868]: ColorP4ui (will be remapped) */ + "ii\0" + "glColorP4ui\0" "\0" - /* _mesa_function_pool[19670]: MultiTexCoord1i (offset 380) */ + /* _mesa_function_pool[16884]: SpriteParameteriSGIX (dynamic) */ "ii\0" - "glMultiTexCoord1i\0" - "glMultiTexCoord1iARB\0" + "glSpriteParameteriSGIX\0" "\0" - /* _mesa_function_pool[19713]: WindowPos2dv (will be remapped) */ - "p\0" - "glWindowPos2dv\0" - "glWindowPos2dvARB\0" - "glWindowPos2dvMESA\0" + /* _mesa_function_pool[16911]: TexCoordP3uiv (will be remapped) */ + "ip\0" + "glTexCoordP3uiv\0" "\0" - /* _mesa_function_pool[19768]: GetProgramParameterdvNV (will be remapped) */ - "iiip\0" - "glGetProgramParameterdvNV\0" + /* _mesa_function_pool[16931]: WeightusvARB (dynamic) */ + "ip\0" + "glWeightusvARB\0" "\0" - /* _mesa_function_pool[19800]: VertexAttrib3fNV (will be remapped) */ - "ifff\0" - "glVertexAttrib3fNV\0" + /* _mesa_function_pool[16950]: EvalMapsNV (dynamic) */ + "ii\0" + "glEvalMapsNV\0" "\0" - /* _mesa_function_pool[19825]: RasterPos3i (offset 74) */ - "iii\0" - "glRasterPos3i\0" + /* _mesa_function_pool[16967]: ReplacementCodeuiSUN (dynamic) */ + "i\0" + "glReplacementCodeuiSUN\0" "\0" - /* _mesa_function_pool[19844]: GetFragmentLightfvSGIX (dynamic) */ - "iip\0" - "glGetFragmentLightfvSGIX\0" + /* _mesa_function_pool[16993]: GlobalAlphaFactoruiSUN (dynamic) */ + "i\0" + "glGlobalAlphaFactoruiSUN\0" "\0" - /* _mesa_function_pool[19874]: MultiTexCoord1d (offset 376) */ - "id\0" - "glMultiTexCoord1d\0" - "glMultiTexCoord1dARB\0" + /* _mesa_function_pool[17021]: Uniform1iv (will be remapped) */ + "iip\0" + "glUniform1iv\0" + "glUniform1ivARB\0" "\0" - /* _mesa_function_pool[19917]: DetailTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[17055]: Uniform4uiv (will be remapped) */ "iip\0" - "glDetailTexFuncSGIS\0" + "glUniform4uivEXT\0" + "glUniform4uiv\0" "\0" - /* _mesa_function_pool[19942]: Normal3fVertex3fSUN (dynamic) */ - "ffffff\0" - "glNormal3fVertex3fSUN\0" + /* _mesa_function_pool[17091]: PopDebugGroup (will be remapped) */ "\0" - /* _mesa_function_pool[19972]: CopyTexImage2D (offset 324) */ - "iiiiiiii\0" - "glCopyTexImage2D\0" - "glCopyTexImage2DEXT\0" + "glPopDebugGroup\0" "\0" - /* _mesa_function_pool[20019]: FlushMappedBufferRange (will be remapped) */ - "iii\0" - "glFlushMappedBufferRange\0" - "glFlushMappedBufferRangeEXT\0" + /* _mesa_function_pool[17109]: VertexAttrib1d (will be remapped) */ + "id\0" + "glVertexAttrib1d\0" + "glVertexAttrib1dARB\0" "\0" - /* _mesa_function_pool[20077]: MultiTexCoord2dv (offset 385) */ - "ip\0" - "glMultiTexCoord2dv\0" - "glMultiTexCoord2dvARB\0" + /* _mesa_function_pool[17150]: CompressedTexImage1D (will be remapped) */ + "iiiiiip\0" + "glCompressedTexImage1D\0" + "glCompressedTexImage1DARB\0" "\0" - /* _mesa_function_pool[20122]: SelectPerfMonitorCountersAMD (will be remapped) */ - "iiiip\0" - "glSelectPerfMonitorCountersAMD\0" + /* _mesa_function_pool[17208]: TexBufferRange (will be remapped) */ + "iiiii\0" + "glTexBufferRange\0" "\0" - /* _mesa_function_pool[20160]: ProgramEnvParameter4fARB (will be remapped) */ - "iiffff\0" - "glProgramEnvParameter4fARB\0" - "glProgramParameter4fNV\0" + /* _mesa_function_pool[17232]: VertexAttrib1s (will be remapped) */ + "ii\0" + "glVertexAttrib1s\0" + "glVertexAttrib1sARB\0" "\0" - /* _mesa_function_pool[20218]: GenVertexArraysAPPLE (will be remapped) */ - "ip\0" - "glGenVertexArraysAPPLE\0" + /* _mesa_function_pool[17273]: MultiDrawElementsIndirect (will be remapped) */ + "iipii\0" + "glMultiDrawElementsIndirect\0" "\0" - /* _mesa_function_pool[20245]: Lightfv (offset 160) */ + /* _mesa_function_pool[17308]: FogCoordfvEXT (will be remapped) */ + "p\0" + "glFogCoordfv\0" + "glFogCoordfvEXT\0" + "\0" + /* _mesa_function_pool[17340]: BeginPerfMonitorAMD (will be remapped) */ + "i\0" + "glBeginPerfMonitorAMD\0" + "\0" + /* _mesa_function_pool[17365]: GetColorTableParameterfv (offset 344) */ "iip\0" - "glLightfv\0" + "glGetColorTableParameterfv\0" + "glGetColorTableParameterfvSGI\0" + "glGetColorTableParameterfvEXT\0" "\0" - /* _mesa_function_pool[20260]: GetFramebufferAttachmentParameteriv (will be remapped) */ + /* _mesa_function_pool[17457]: MultiTexCoord3fARB (offset 394) */ + "ifff\0" + "glMultiTexCoord3f\0" + "glMultiTexCoord3fARB\0" + "\0" + /* _mesa_function_pool[17502]: GetTexLevelParameterfv (offset 284) */ "iiip\0" - "glGetFramebufferAttachmentParameteriv\0" - "glGetFramebufferAttachmentParameterivEXT\0" - "glGetFramebufferAttachmentParameterivOES\0" + "glGetTexLevelParameterfv\0" "\0" - /* _mesa_function_pool[20386]: MultiTexCoord1s (offset 382) */ - "ii\0" - "glMultiTexCoord1s\0" - "glMultiTexCoord1sARB\0" + /* _mesa_function_pool[17533]: Vertex2sv (offset 133) */ + "p\0" + "glVertex2sv\0" "\0" - /* _mesa_function_pool[20429]: ClearDepth (offset 208) */ - "d\0" - "glClearDepth\0" + /* _mesa_function_pool[17548]: GetnMapdvARB (will be remapped) */ + "iiip\0" + "glGetnMapdvARB\0" "\0" - /* _mesa_function_pool[20445]: GetFenceivNV (dynamic) */ + /* _mesa_function_pool[17569]: VertexAttrib2dNV (will be remapped) */ + "idd\0" + "glVertexAttrib2dNV\0" + "\0" + /* _mesa_function_pool[17593]: GetTrackMatrixivNV (will be remapped) */ + "iiip\0" + "glGetTrackMatrixivNV\0" + "\0" + /* _mesa_function_pool[17620]: VertexAttrib3svNV (will be remapped) */ + "ip\0" + "glVertexAttrib3svNV\0" + "\0" + /* _mesa_function_pool[17644]: GetTexEnviv (offset 277) */ "iip\0" - "glGetFenceivNV\0" + "glGetTexEnviv\0" "\0" - /* _mesa_function_pool[20465]: GetVertexAttribPointerv (will be remapped) */ + /* _mesa_function_pool[17663]: ViewportArrayv (will be remapped) */ "iip\0" - "glGetVertexAttribPointerv\0" - "glGetVertexAttribPointervARB\0" - "glGetVertexAttribPointervNV\0" + "glViewportArrayv\0" "\0" - /* _mesa_function_pool[20553]: ColorSubTable (offset 346) */ - "iiiiip\0" - "glColorSubTable\0" - "glColorSubTableEXT\0" + /* _mesa_function_pool[17685]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ + "iffffffffffff\0" + "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN\0" + "\0" + /* _mesa_function_pool[17756]: SeparableFilter2D (offset 360) */ + "iiiiiipp\0" + "glSeparableFilter2D\0" + "glSeparableFilter2DEXT\0" + "\0" + /* _mesa_function_pool[17809]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */ + "ppp\0" + "glReplacementCodeuiColor4ubVertex3fvSUN\0" + "\0" + /* _mesa_function_pool[17854]: ArrayElement (offset 306) */ + "i\0" + "glArrayElement\0" + "glArrayElementEXT\0" + "\0" + /* _mesa_function_pool[17890]: TexImage2D (offset 183) */ + "iiiiiiiip\0" + "glTexImage2D\0" + "\0" + /* _mesa_function_pool[17914]: FragmentMaterialiSGIX (dynamic) */ + "iii\0" + "glFragmentMaterialiSGIX\0" "\0" - /* _mesa_function_pool[20596]: Color4fv (offset 30) */ + /* _mesa_function_pool[17943]: RasterPos2dv (offset 63) */ "p\0" - "glColor4fv\0" + "glRasterPos2dv\0" "\0" - /* _mesa_function_pool[20610]: EndPerfMonitorAMD (will be remapped) */ + /* _mesa_function_pool[17961]: Fogiv (offset 156) */ + "ip\0" + "glFogiv\0" + "\0" + /* _mesa_function_pool[17973]: EndQuery (will be remapped) */ "i\0" - "glEndPerfMonitorAMD\0" + "glEndQuery\0" + "glEndQueryARB\0" "\0" - /* _mesa_function_pool[20633]: GetnMinmaxARB (will be remapped) */ - "iiiiip\0" - "glGetnMinmaxARB\0" + /* _mesa_function_pool[18001]: TexCoord1dv (offset 95) */ + "p\0" + "glTexCoord1dv\0" "\0" - /* _mesa_function_pool[20657]: ProgramLocalParameters4fvEXT (will be remapped) */ - "iiip\0" - "glProgramLocalParameters4fvEXT\0" + /* _mesa_function_pool[18018]: TexCoord4dv (offset 119) */ + "p\0" + "glTexCoord4dv\0" "\0" - /* _mesa_function_pool[20694]: BeginConditionalRender (will be remapped) */ - "ii\0" - "glBeginConditionalRender\0" - "glBeginConditionalRenderNV\0" + /* _mesa_function_pool[18035]: GetVertexAttribdvNV (will be remapped) */ + "iip\0" + "glGetVertexAttribdvNV\0" "\0" - /* _mesa_function_pool[20750]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */ - "fffffffffffffff\0" - "glTexCoord4fColor4fNormal3fVertex4fSUN\0" + /* _mesa_function_pool[18062]: Clear (offset 203) */ + "i\0" + "glClear\0" "\0" - /* _mesa_function_pool[20806]: VertexAttribI1uiv (will be remapped) */ + /* _mesa_function_pool[18073]: VertexAttrib4sv (will be remapped) */ "ip\0" - "glVertexAttribI1uivEXT\0" - "glVertexAttribI1uiv\0" + "glVertexAttrib4sv\0" + "glVertexAttrib4svARB\0" "\0" - /* _mesa_function_pool[20853]: ColorPointer (offset 308) */ - "iiip\0" - "glColorPointer\0" + /* _mesa_function_pool[18116]: Ortho (offset 296) */ + "dddddd\0" + "glOrtho\0" "\0" - /* _mesa_function_pool[20874]: Rects (offset 92) */ - "iiii\0" - "glRects\0" + /* _mesa_function_pool[18132]: Uniform3uiv (will be remapped) */ + "iip\0" + "glUniform3uivEXT\0" + "glUniform3uiv\0" "\0" - /* _mesa_function_pool[20888]: GetMapAttribParameterfvNV (dynamic) */ + /* _mesa_function_pool[18168]: MatrixIndexPointerARB (dynamic) */ "iiip\0" - "glGetMapAttribParameterfvNV\0" + "glMatrixIndexPointerARB\0" + "glMatrixIndexPointerOES\0" "\0" - /* _mesa_function_pool[20922]: ClearColorx (will be remapped) */ - "iiii\0" - "glClearColorxOES\0" - "glClearColorx\0" + /* _mesa_function_pool[18222]: EndQueryIndexed (will be remapped) */ + "ii\0" + "glEndQueryIndexed\0" "\0" - /* _mesa_function_pool[20959]: MultiTexCoordP2ui (will be remapped) */ - "iii\0" - "glMultiTexCoordP2ui\0" + /* _mesa_function_pool[18244]: TexParameterxv (will be remapped) */ + "iip\0" + "glTexParameterxvOES\0" + "glTexParameterxv\0" "\0" - /* _mesa_function_pool[20984]: ActiveProgramEXT (will be remapped) */ - "i\0" - "glActiveProgramEXT\0" + /* _mesa_function_pool[18286]: SampleMaskSGIS (will be remapped) */ + "fi\0" + "glSampleMaskSGIS\0" + "glSampleMaskEXT\0" "\0" - /* _mesa_function_pool[21006]: Lightiv (offset 162) */ - "iip\0" - "glLightiv\0" + /* _mesa_function_pool[18323]: FramebufferTextureFaceARB (will be remapped) */ + "iiiii\0" + "glFramebufferTextureFaceARB\0" "\0" - /* _mesa_function_pool[21021]: Tangent3svEXT (dynamic) */ - "p\0" - "glTangent3svEXT\0" + /* _mesa_function_pool[18358]: ProgramUniformMatrix2fv (will be remapped) */ + "iiiip\0" + "glProgramUniformMatrix2fv\0" "\0" - /* _mesa_function_pool[21040]: TexCoordPointervINTEL (dynamic) */ + /* _mesa_function_pool[18391]: ProgramLocalParameter4fvARB (will be remapped) */ "iip\0" - "glTexCoordPointervINTEL\0" + "glProgramLocalParameter4fvARB\0" "\0" - /* _mesa_function_pool[21069]: GetTexParameteriv (offset 283) */ + /* _mesa_function_pool[18426]: GetProgramStringNV (will be remapped) */ "iip\0" - "glGetTexParameteriv\0" + "glGetProgramStringNV\0" "\0" - /* _mesa_function_pool[21094]: MapParameterivNV (dynamic) */ - "iip\0" - "glMapParameterivNV\0" + /* _mesa_function_pool[18452]: Binormal3svEXT (dynamic) */ + "p\0" + "glBinormal3svEXT\0" + "\0" + /* _mesa_function_pool[18472]: LightModelx (will be remapped) */ + "ii\0" + "glLightModelxOES\0" + "glLightModelx\0" + "\0" + /* _mesa_function_pool[18507]: VertexAttribI3iEXT (will be remapped) */ + "iiii\0" + "glVertexAttribI3iEXT\0" + "glVertexAttribI3i\0" + "\0" + /* _mesa_function_pool[18552]: ClearColorx (will be remapped) */ + "iiii\0" + "glClearColorxOES\0" + "glClearColorx\0" + "\0" + /* _mesa_function_pool[18589]: EndTransformFeedback (will be remapped) */ + "\0" + "glEndTransformFeedback\0" + "glEndTransformFeedbackEXT\0" "\0" - /* _mesa_function_pool[21118]: VertexAttribs4dvNV (will be remapped) */ + /* _mesa_function_pool[18640]: VertexAttribs4dvNV (will be remapped) */ "iip\0" "glVertexAttribs4dvNV\0" "\0" - /* _mesa_function_pool[21144]: VertexAttrib3sv (will be remapped) */ - "ip\0" - "glVertexAttrib3sv\0" - "glVertexAttrib3svARB\0" + /* _mesa_function_pool[18666]: GetProgramBinary (will be remapped) */ + "iippp\0" + "glGetProgramBinary\0" + "glGetProgramBinaryOES\0" "\0" - /* _mesa_function_pool[21187]: ClearBufferData (will be remapped) */ - "iiiip\0" - "glClearBufferData\0" + /* _mesa_function_pool[18714]: ViewportIndexedfv (will be remapped) */ + "ip\0" + "glViewportIndexedfv\0" "\0" - /* _mesa_function_pool[21212]: IsQuery (will be remapped) */ + /* _mesa_function_pool[18738]: CallList (offset 2) */ "i\0" - "glIsQuery\0" - "glIsQueryARB\0" + "glCallList\0" "\0" - /* _mesa_function_pool[21238]: ClearBufferfv (will be remapped) */ + /* _mesa_function_pool[18752]: Materialfv (offset 170) */ "iip\0" - "glClearBufferfv\0" + "glMaterialfv\0" "\0" - /* _mesa_function_pool[21259]: PrimitiveRestartNV (will be remapped) */ + /* _mesa_function_pool[18770]: DeleteProgram (will be remapped) */ + "i\0" + "glDeleteProgram\0" "\0" - "glPrimitiveRestartNV\0" + /* _mesa_function_pool[18789]: GetActiveAtomicCounterBufferiv (will be remapped) */ + "iiip\0" + "glGetActiveAtomicCounterBufferiv\0" "\0" - /* _mesa_function_pool[21282]: EdgeFlagPointerEXT (will be remapped) */ + /* _mesa_function_pool[18828]: TexParameterIiv (will be remapped) */ "iip\0" - "glEdgeFlagPointerEXT\0" + "glTexParameterIivEXT\0" + "glTexParameterIiv\0" "\0" - /* _mesa_function_pool[21308]: IsVertexArray (will be remapped) */ - "i\0" - "glIsVertexArray\0" - "glIsVertexArrayAPPLE\0" - "glIsVertexArrayOES\0" + /* _mesa_function_pool[18872]: VertexWeightfEXT (dynamic) */ + "f\0" + "glVertexWeightfEXT\0" + "\0" + /* _mesa_function_pool[18894]: FlushVertexArrayRangeNV (dynamic) */ + "\0" + "glFlushVertexArrayRangeNV\0" "\0" - /* _mesa_function_pool[21367]: GetMultisamplefv (will be remapped) */ + /* _mesa_function_pool[18922]: GetConvolutionFilter (offset 356) */ + "iiip\0" + "glGetConvolutionFilter\0" + "glGetConvolutionFilterEXT\0" + "\0" + /* _mesa_function_pool[18977]: MultiModeDrawElementsIBM (will be remapped) */ + "ppipii\0" + "glMultiModeDrawElementsIBM\0" + "\0" + /* _mesa_function_pool[19012]: Uniform2iv (will be remapped) */ "iip\0" - "glGetMultisamplefv\0" + "glUniform2iv\0" + "glUniform2ivARB\0" "\0" - /* _mesa_function_pool[21391]: WeightbvARB (dynamic) */ + /* _mesa_function_pool[19046]: GetFixedv (will be remapped) */ "ip\0" - "glWeightbvARB\0" + "glGetFixedvOES\0" + "glGetFixedv\0" "\0" - /* _mesa_function_pool[21409]: Rectdv (offset 87) */ - "pp\0" - "glRectdv\0" + /* _mesa_function_pool[19077]: ProgramParameters4dvNV (will be remapped) */ + "iiip\0" + "glProgramParameters4dvNV\0" "\0" - /* _mesa_function_pool[21422]: ListParameteriSGIX (dynamic) */ - "iii\0" - "glListParameteriSGIX\0" + /* _mesa_function_pool[19108]: Binormal3dvEXT (dynamic) */ + "p\0" + "glBinormal3dvEXT\0" "\0" - /* _mesa_function_pool[21448]: BlendEquationiARB (will be remapped) */ + /* _mesa_function_pool[19128]: SampleCoveragex (will be remapped) */ "ii\0" - "glBlendEquationiARB\0" - "glBlendEquationIndexedAMD\0" + "glSampleCoveragexOES\0" + "glSampleCoveragex\0" "\0" - /* _mesa_function_pool[21498]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */ - "iffffffffff\0" - "glReplacementCodeuiColor4fNormal3fVertex3fSUN\0" + /* _mesa_function_pool[19171]: DeleteFramebuffers (will be remapped) */ + "ip\0" + "glDeleteFramebuffers\0" + "glDeleteFramebuffersEXT\0" + "glDeleteFramebuffersOES\0" + "\0" + /* _mesa_function_pool[19244]: CombinerInputNV (dynamic) */ + "iiiiii\0" + "glCombinerInputNV\0" "\0" - /* _mesa_function_pool[21557]: VertexAttrib4dv (will be remapped) */ + /* _mesa_function_pool[19270]: VertexAttrib4uiv (will be remapped) */ "ip\0" - "glVertexAttrib4dv\0" - "glVertexAttrib4dvARB\0" + "glVertexAttrib4uiv\0" + "glVertexAttrib4uivARB\0" "\0" - /* _mesa_function_pool[21600]: InstrumentsBufferSGIX (dynamic) */ + /* _mesa_function_pool[19315]: VertexAttrib4Nsv (will be remapped) */ "ip\0" - "glInstrumentsBufferSGIX\0" + "glVertexAttrib4Nsv\0" + "glVertexAttrib4NsvARB\0" + "\0" + /* _mesa_function_pool[19360]: Vertex4s (offset 148) */ + "iiii\0" + "glVertex4s\0" "\0" - /* _mesa_function_pool[21628]: SharpenTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[19377]: VertexAttribI2iEXT (will be remapped) */ + "iii\0" + "glVertexAttribI2iEXT\0" + "glVertexAttribI2i\0" + "\0" + /* _mesa_function_pool[19421]: Vertex4f (offset 144) */ + "ffff\0" + "glVertex4f\0" + "\0" + /* _mesa_function_pool[19438]: Vertex4d (offset 142) */ + "dddd\0" + "glVertex4d\0" + "\0" + /* _mesa_function_pool[19455]: GetTexGenfv (offset 279) */ "iip\0" - "glSharpenTexFuncSGIS\0" + "glGetTexGenfv\0" + "glGetTexGenfvOES\0" "\0" - /* _mesa_function_pool[21654]: DrawArraysInstancedARB (will be remapped) */ + /* _mesa_function_pool[19491]: Vertex4i (offset 146) */ "iiii\0" - "glDrawArraysInstancedARB\0" - "glDrawArraysInstancedEXT\0" - "glDrawArraysInstanced\0" + "glVertex4i\0" "\0" - /* _mesa_function_pool[21732]: GetTexParameterxv (will be remapped) */ + /* _mesa_function_pool[19508]: VertexWeightPointerEXT (dynamic) */ + "iiip\0" + "glVertexWeightPointerEXT\0" + "\0" + /* _mesa_function_pool[19539]: StencilFuncSeparateATI (will be remapped) */ + "iiii\0" + "glStencilFuncSeparateATI\0" + "\0" + /* _mesa_function_pool[19570]: GetVertexAttribIuiv (will be remapped) */ "iip\0" - "glGetTexParameterxvOES\0" - "glGetTexParameterxv\0" + "glGetVertexAttribIuivEXT\0" + "glGetVertexAttribIuiv\0" + "\0" + /* _mesa_function_pool[19622]: LightModelfv (offset 164) */ + "ip\0" + "glLightModelfv\0" + "\0" + /* _mesa_function_pool[19641]: Vertex4dv (offset 143) */ + "p\0" + "glVertex4dv\0" "\0" - /* _mesa_function_pool[21780]: GetAttachedShaders (will be remapped) */ + /* _mesa_function_pool[19656]: ProgramParameters4fvNV (will be remapped) */ + "iiip\0" + "glProgramParameters4fvNV\0" + "\0" + /* _mesa_function_pool[19687]: GetInfoLogARB (will be remapped) */ "iipp\0" - "glGetAttachedShaders\0" + "glGetInfoLogARB\0" "\0" - /* _mesa_function_pool[21807]: DebugMessageInsert (will be remapped) */ - "iiiiip\0" - "glDebugMessageInsert\0" + /* _mesa_function_pool[19709]: StencilMask (offset 209) */ + "i\0" + "glStencilMask\0" + "\0" + /* _mesa_function_pool[19726]: IsList (offset 287) */ + "i\0" + "glIsList\0" "\0" - /* _mesa_function_pool[21836]: Materialiv (offset 172) */ + /* _mesa_function_pool[19738]: ClearBufferiv (will be remapped) */ "iip\0" - "glMaterialiv\0" + "glClearBufferiv\0" "\0" - /* _mesa_function_pool[21854]: PushClientAttrib (offset 335) */ - "i\0" - "glPushClientAttrib\0" + /* _mesa_function_pool[19759]: GetIntegeri_v (will be remapped) */ + "iip\0" + "glGetIntegerIndexedvEXT\0" + "glGetIntegeri_v\0" "\0" - /* _mesa_function_pool[21876]: ProgramEnvParameters4fvEXT (will be remapped) */ + /* _mesa_function_pool[19804]: ProgramUniform2iv (will be remapped) */ "iiip\0" - "glProgramEnvParameters4fvEXT\0" + "glProgramUniform2iv\0" "\0" - /* _mesa_function_pool[21911]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ - "pppp\0" - "glTexCoord2fColor4fNormal3fVertex3fvSUN\0" + /* _mesa_function_pool[19830]: VertexAttribs4svNV (will be remapped) */ + "iip\0" + "glVertexAttribs4svNV\0" + "\0" + /* _mesa_function_pool[19856]: FogCoordPointer (will be remapped) */ + "iip\0" + "glFogCoordPointer\0" + "glFogCoordPointerEXT\0" + "\0" + /* _mesa_function_pool[19900]: SecondaryColor3us (will be remapped) */ + "iii\0" + "glSecondaryColor3us\0" + "glSecondaryColor3usEXT\0" + "\0" + /* _mesa_function_pool[19948]: DeformationMap3dSGIX (dynamic) */ + "iddiiddiiddiip\0" + "glDeformationMap3dSGIX\0" "\0" - /* _mesa_function_pool[21957]: LineWidthx (will be remapped) */ + /* _mesa_function_pool[19987]: TextureNormalEXT (dynamic) */ "i\0" - "glLineWidthxOES\0" - "glLineWidthx\0" + "glTextureNormalEXT\0" "\0" - /* _mesa_function_pool[21989]: SecondaryColor3fvEXT (will be remapped) */ - "p\0" - "glSecondaryColor3fv\0" - "glSecondaryColor3fvEXT\0" + /* _mesa_function_pool[20009]: SecondaryColor3ub (will be remapped) */ + "iii\0" + "glSecondaryColor3ub\0" + "glSecondaryColor3ubEXT\0" "\0" - /* _mesa_function_pool[22035]: PolygonMode (offset 174) */ - "ii\0" - "glPolygonMode\0" + /* _mesa_function_pool[20057]: SecondaryColor3ui (will be remapped) */ + "iii\0" + "glSecondaryColor3ui\0" + "glSecondaryColor3uiEXT\0" "\0" - /* _mesa_function_pool[22053]: SecondaryColor3iv (will be remapped) */ + /* _mesa_function_pool[20105]: VertexAttribI3uivEXT (will be remapped) */ + "ip\0" + "glVertexAttribI3uivEXT\0" + "glVertexAttribI3uiv\0" + "\0" + /* _mesa_function_pool[20152]: Binormal3fvEXT (dynamic) */ "p\0" - "glSecondaryColor3iv\0" - "glSecondaryColor3ivEXT\0" + "glBinormal3fvEXT\0" "\0" - /* _mesa_function_pool[22099]: VertexAttribIFormat (will be remapped) */ - "iiii\0" - "glVertexAttribIFormat\0" + /* _mesa_function_pool[20172]: TexCoordPointervINTEL (dynamic) */ + "iip\0" + "glTexCoordPointervINTEL\0" "\0" - /* _mesa_function_pool[22127]: VertexAttribI1iEXT (will be remapped) */ + /* _mesa_function_pool[20201]: VertexAttrib1sNV (will be remapped) */ "ii\0" - "glVertexAttribI1iEXT\0" - "glVertexAttribI1i\0" + "glVertexAttrib1sNV\0" + "\0" + /* _mesa_function_pool[20224]: Tangent3bEXT (dynamic) */ + "iii\0" + "glTangent3bEXT\0" "\0" - /* _mesa_function_pool[22170]: VertexAttrib4Niv (will be remapped) */ + /* _mesa_function_pool[20244]: FragmentLightModelfSGIX (dynamic) */ + "if\0" + "glFragmentLightModelfSGIX\0" + "\0" + /* _mesa_function_pool[20274]: InitNames (offset 197) */ + "\0" + "glInitNames\0" + "\0" + /* _mesa_function_pool[20288]: Normal3sv (offset 61) */ + "p\0" + "glNormal3sv\0" + "\0" + /* _mesa_function_pool[20303]: DeleteQueries (will be remapped) */ "ip\0" - "glVertexAttrib4Niv\0" - "glVertexAttrib4NivARB\0" + "glDeleteQueries\0" + "glDeleteQueriesARB\0" "\0" - /* _mesa_function_pool[22215]: GetVertexAttribivNV (will be remapped) */ + /* _mesa_function_pool[20342]: InvalidateFramebuffer (will be remapped) */ "iip\0" - "glGetVertexAttribivNV\0" + "glInvalidateFramebuffer\0" "\0" - /* _mesa_function_pool[22242]: GetProgramStringARB (will be remapped) */ - "iip\0" - "glGetProgramStringARB\0" + /* _mesa_function_pool[20371]: Hint (offset 158) */ + "ii\0" + "glHint\0" + "\0" + /* _mesa_function_pool[20382]: MemoryBarrier (will be remapped) */ + "i\0" + "glMemoryBarrier\0" "\0" - /* _mesa_function_pool[22269]: GetFloati_v (will be remapped) */ + /* _mesa_function_pool[20401]: CopyColorSubTable (offset 347) */ + "iiiii\0" + "glCopyColorSubTable\0" + "glCopyColorSubTableEXT\0" + "\0" + /* _mesa_function_pool[20451]: WeightdvARB (dynamic) */ + "ip\0" + "glWeightdvARB\0" + "\0" + /* _mesa_function_pool[20469]: GetObjectParameterfvARB (will be remapped) */ "iip\0" - "glGetFloati_v\0" + "glGetObjectParameterfvARB\0" "\0" - /* _mesa_function_pool[22288]: GetnUniformdvARB (will be remapped) */ - "iiip\0" - "glGetnUniformdvARB\0" + /* _mesa_function_pool[20500]: GetTexEnvxv (will be remapped) */ + "iip\0" + "glGetTexEnvxvOES\0" + "glGetTexEnvxv\0" "\0" - /* _mesa_function_pool[22313]: DrawElementsInstancedBaseVertex (will be remapped) */ - "iiipii\0" - "glDrawElementsInstancedBaseVertex\0" + /* _mesa_function_pool[20536]: DrawTexsvOES (will be remapped) */ + "p\0" + "glDrawTexsvOES\0" "\0" - /* _mesa_function_pool[22355]: LinkProgram (will be remapped) */ + /* _mesa_function_pool[20554]: Disable (offset 214) */ "i\0" - "glLinkProgram\0" - "glLinkProgramARB\0" + "glDisable\0" + "\0" + /* _mesa_function_pool[20567]: ClearColor (offset 206) */ + "ffff\0" + "glClearColor\0" "\0" - /* _mesa_function_pool[22389]: TexBumpParameterfvATI (will be remapped) */ + /* _mesa_function_pool[20586]: WeightuivARB (dynamic) */ "ip\0" - "glTexBumpParameterfvATI\0" + "glWeightuivARB\0" "\0" - /* _mesa_function_pool[22417]: Tangent3ivEXT (dynamic) */ + /* _mesa_function_pool[20605]: RasterPos4iv (offset 83) */ "p\0" - "glTangent3ivEXT\0" - "\0" - /* _mesa_function_pool[22436]: Uniform1f (will be remapped) */ - "if\0" - "glUniform1f\0" - "glUniform1fARB\0" + "glRasterPos4iv\0" "\0" - /* _mesa_function_pool[22467]: DisableClientState (offset 309) */ + /* _mesa_function_pool[20623]: VDPAUIsSurfaceNV (will be remapped) */ "i\0" - "glDisableClientState\0" + "glVDPAUIsSurfaceNV\0" "\0" - /* _mesa_function_pool[22491]: TexGeni (offset 192) */ - "iii\0" - "glTexGeni\0" - "glTexGeniOES\0" + /* _mesa_function_pool[20645]: ProgramUniformMatrix2x3fv (will be remapped) */ + "iiiip\0" + "glProgramUniformMatrix2x3fv\0" "\0" - /* _mesa_function_pool[22519]: TexGenf (offset 190) */ - "iif\0" - "glTexGenf\0" - "glTexGenfOES\0" + /* _mesa_function_pool[20680]: BindVertexBuffer (will be remapped) */ + "iiii\0" + "glBindVertexBuffer\0" "\0" - /* _mesa_function_pool[22547]: TexEnvx (will be remapped) */ + /* _mesa_function_pool[20705]: Binormal3iEXT (dynamic) */ "iii\0" - "glTexEnvxOES\0" - "glTexEnvx\0" + "glBinormal3iEXT\0" "\0" - /* _mesa_function_pool[22575]: TexGend (offset 188) */ - "iid\0" - "glTexGend\0" + /* _mesa_function_pool[20726]: RasterPos4i (offset 82) */ + "iiii\0" + "glRasterPos4i\0" "\0" - /* _mesa_function_pool[22590]: Uniform1i (will be remapped) */ - "ii\0" - "glUniform1i\0" - "glUniform1iARB\0" + /* _mesa_function_pool[20746]: RasterPos4d (offset 78) */ + "dddd\0" + "glRasterPos4d\0" "\0" - /* _mesa_function_pool[22621]: GetPolygonStipple (offset 274) */ - "p\0" - "glGetPolygonStipple\0" + /* _mesa_function_pool[20766]: RasterPos4f (offset 80) */ + "ffff\0" + "glRasterPos4f\0" "\0" - /* _mesa_function_pool[22644]: Orthox (will be remapped) */ - "iiiiii\0" - "glOrthoxOES\0" - "glOrthox\0" + /* _mesa_function_pool[20786]: GetQueryIndexediv (will be remapped) */ + "iiip\0" + "glGetQueryIndexediv\0" "\0" - /* _mesa_function_pool[22673]: VertexAttrib4d (will be remapped) */ - "idddd\0" - "glVertexAttrib4d\0" - "glVertexAttrib4dARB\0" + /* _mesa_function_pool[20812]: RasterPos3dv (offset 71) */ + "p\0" + "glRasterPos3dv\0" "\0" - /* _mesa_function_pool[22717]: GetVertexAttribfvNV (will be remapped) */ + /* _mesa_function_pool[20830]: GetProgramiv (will be remapped) */ "iip\0" - "glGetVertexAttribfvNV\0" + "glGetProgramiv\0" "\0" - /* _mesa_function_pool[22744]: Tangent3iEXT (dynamic) */ - "iii\0" - "glTangent3iEXT\0" + /* _mesa_function_pool[20850]: GetDebugMessageLogARB (will be remapped) */ + "iipppppp\0" + "glGetDebugMessageLogARB\0" "\0" - /* _mesa_function_pool[22764]: DrawArraysInstancedBaseInstance (will be remapped) */ - "iiiii\0" - "glDrawArraysInstancedBaseInstance\0" + /* _mesa_function_pool[20884]: TexCoord1iv (offset 99) */ + "p\0" + "glTexCoord1iv\0" "\0" - /* _mesa_function_pool[22805]: VertexAttrib2svNV (will be remapped) */ - "ip\0" - "glVertexAttrib2svNV\0" + /* _mesa_function_pool[20901]: RasterPos4s (offset 84) */ + "iiii\0" + "glRasterPos4s\0" "\0" - /* _mesa_function_pool[22829]: NormalP3uiv (will be remapped) */ + /* _mesa_function_pool[20921]: PixelTexGenParameterfvSGIS (dynamic) */ "ip\0" - "glNormalP3uiv\0" + "glPixelTexGenParameterfvSGIS\0" "\0" - /* _mesa_function_pool[22847]: SecondaryColorP3uiv (will be remapped) */ + /* _mesa_function_pool[20954]: VertexAttrib3dv (will be remapped) */ "ip\0" - "glSecondaryColorP3uiv\0" + "glVertexAttrib3dv\0" + "glVertexAttrib3dvARB\0" "\0" - /* _mesa_function_pool[22873]: VertexAttribs1fvNV (will be remapped) */ + /* _mesa_function_pool[20997]: Histogram (offset 367) */ + "iiii\0" + "glHistogram\0" + "glHistogramEXT\0" + "\0" + /* _mesa_function_pool[21030]: Uniform2fv (will be remapped) */ "iip\0" - "glVertexAttribs1fvNV\0" + "glUniform2fv\0" + "glUniform2fvARB\0" "\0" - /* _mesa_function_pool[22899]: GetPerfMonitorCountersAMD (will be remapped) */ - "ippip\0" - "glGetPerfMonitorCountersAMD\0" + /* _mesa_function_pool[21064]: TexImage4DSGIS (dynamic) */ + "iiiiiiiiiip\0" + "glTexImage4DSGIS\0" "\0" - /* _mesa_function_pool[22934]: DrawTexsvOES (will be remapped) */ - "p\0" - "glDrawTexsvOES\0" + /* _mesa_function_pool[21094]: DrawBuffers (will be remapped) */ + "ip\0" + "glDrawBuffers\0" + "glDrawBuffersARB\0" + "glDrawBuffersATI\0" + "glDrawBuffersNV\0" "\0" - /* _mesa_function_pool[22952]: WindowPos4sMESA (will be remapped) */ - "iiii\0" - "glWindowPos4sMESA\0" + /* _mesa_function_pool[21162]: GetnPolygonStippleARB (will be remapped) */ + "ip\0" + "glGetnPolygonStippleARB\0" "\0" - /* _mesa_function_pool[22976]: GetnPixelMapuivARB (will be remapped) */ - "iip\0" - "glGetnPixelMapuivARB\0" + /* _mesa_function_pool[21190]: Color3uiv (offset 22) */ + "p\0" + "glColor3uiv\0" "\0" - /* _mesa_function_pool[23002]: VertexAttrib4s (will be remapped) */ - "iiiii\0" - "glVertexAttrib4s\0" - "glVertexAttrib4sARB\0" + /* _mesa_function_pool[21205]: EvalCoord2fv (offset 235) */ + "p\0" + "glEvalCoord2fv\0" "\0" - /* _mesa_function_pool[23046]: GetSamplerParameterIuiv (will be remapped) */ - "iip\0" - "glGetSamplerParameterIuiv\0" + /* _mesa_function_pool[21223]: TextureStorage3DEXT (will be remapped) */ + "iiiiiii\0" + "glTextureStorage3DEXT\0" "\0" - /* _mesa_function_pool[23077]: ReplacementCodeusvSUN (dynamic) */ + /* _mesa_function_pool[21254]: VertexAttrib2fARB (will be remapped) */ + "iff\0" + "glVertexAttrib2f\0" + "glVertexAttrib2fARB\0" + "\0" + /* _mesa_function_pool[21296]: WindowPos2fv (will be remapped) */ "p\0" - "glReplacementCodeusvSUN\0" + "glWindowPos2fv\0" + "glWindowPos2fvARB\0" + "glWindowPos2fvMESA\0" "\0" - /* _mesa_function_pool[23104]: VertexAttrib2dvNV (will be remapped) */ - "ip\0" - "glVertexAttrib2dvNV\0" + /* _mesa_function_pool[21351]: Tangent3fEXT (dynamic) */ + "fff\0" + "glTangent3fEXT\0" "\0" - /* _mesa_function_pool[23128]: UseProgram (will be remapped) */ - "i\0" - "glUseProgram\0" - "glUseProgramObjectARB\0" + /* _mesa_function_pool[21371]: TexImage3D (offset 371) */ + "iiiiiiiiip\0" + "glTexImage3D\0" + "glTexImage3DEXT\0" + "glTexImage3DOES\0" "\0" - /* _mesa_function_pool[23166]: GlobalAlphaFactoriSUN (dynamic) */ - "i\0" - "glGlobalAlphaFactoriSUN\0" + /* _mesa_function_pool[21428]: BindFragDataLocation (will be remapped) */ + "iip\0" + "glBindFragDataLocationEXT\0" + "glBindFragDataLocation\0" "\0" - /* _mesa_function_pool[23193]: CompileShader (will be remapped) */ - "i\0" - "glCompileShader\0" - "glCompileShaderARB\0" + /* _mesa_function_pool[21482]: LightModeliv (offset 166) */ + "ip\0" + "glLightModeliv\0" "\0" - /* _mesa_function_pool[23231]: Color4sv (offset 34) */ + /* _mesa_function_pool[21501]: Normal3bv (offset 53) */ "p\0" - "glColor4sv\0" - "\0" - /* _mesa_function_pool[23245]: MultiModeDrawArraysIBM (will be remapped) */ - "pppii\0" - "glMultiModeDrawArraysIBM\0" + "glNormal3bv\0" "\0" - /* _mesa_function_pool[23277]: MultiTexCoord3d (offset 392) */ - "iddd\0" - "glMultiTexCoord3d\0" - "glMultiTexCoord3dARB\0" + /* _mesa_function_pool[21516]: BeginQueryIndexed (will be remapped) */ + "iii\0" + "glBeginQueryIndexed\0" "\0" - /* _mesa_function_pool[23322]: LoadTransposeMatrixf (will be remapped) */ + /* _mesa_function_pool[21541]: Vertex3iv (offset 139) */ "p\0" - "glLoadTransposeMatrixf\0" - "glLoadTransposeMatrixfARB\0" + "glVertex3iv\0" "\0" - /* _mesa_function_pool[23374]: LoadTransposeMatrixd (will be remapped) */ + /* _mesa_function_pool[21556]: TexCoord3dv (offset 111) */ "p\0" - "glLoadTransposeMatrixd\0" - "glLoadTransposeMatrixdARB\0" + "glTexCoord3dv\0" "\0" - /* _mesa_function_pool[23426]: FlushMappedBufferRangeAPPLE (will be remapped) */ - "iii\0" - "glFlushMappedBufferRangeAPPLE\0" + /* _mesa_function_pool[21573]: GetProgramStringARB (will be remapped) */ + "iip\0" + "glGetProgramStringARB\0" "\0" - /* _mesa_function_pool[23461]: PixelZoom (offset 246) */ - "ff\0" - "glPixelZoom\0" + /* _mesa_function_pool[21600]: VertexP3ui (will be remapped) */ + "ii\0" + "glVertexP3ui\0" "\0" - /* _mesa_function_pool[23477]: ReplacementCodePointerSUN (dynamic) */ - "iip\0" - "glReplacementCodePointerSUN\0" + /* _mesa_function_pool[21617]: CreateProgramObjectARB (will be remapped) */ "\0" - /* _mesa_function_pool[23510]: ProgramEnvParameter4dARB (will be remapped) */ - "iidddd\0" - "glProgramEnvParameter4dARB\0" - "glProgramParameter4dNV\0" + "glCreateProgramObjectARB\0" + "\0" + /* _mesa_function_pool[21644]: UniformMatrix3fv (will be remapped) */ + "iiip\0" + "glUniformMatrix3fv\0" + "glUniformMatrix3fvARB\0" + "\0" + /* _mesa_function_pool[21691]: PrioritizeTextures (offset 331) */ + "ipp\0" + "glPrioritizeTextures\0" + "glPrioritizeTexturesEXT\0" "\0" - /* _mesa_function_pool[23568]: ColorTableParameterfv (offset 340) */ + /* _mesa_function_pool[21741]: VertexAttribI3uiEXT (will be remapped) */ + "iiii\0" + "glVertexAttribI3uiEXT\0" + "glVertexAttribI3ui\0" + "\0" + /* _mesa_function_pool[21788]: AsyncMarkerSGIX (dynamic) */ + "i\0" + "glAsyncMarkerSGIX\0" + "\0" + /* _mesa_function_pool[21809]: GetProgramNamedParameterfvNV (will be remapped) */ + "iipp\0" + "glGetProgramNamedParameterfvNV\0" + "\0" + /* _mesa_function_pool[21846]: GetMaterialxv (will be remapped) */ "iip\0" - "glColorTableParameterfv\0" - "glColorTableParameterfvSGI\0" + "glGetMaterialxvOES\0" + "glGetMaterialxv\0" "\0" - /* _mesa_function_pool[23624]: GetFragDataLocation (will be remapped) */ + /* _mesa_function_pool[21886]: MatrixIndexusvARB (dynamic) */ "ip\0" - "glGetFragDataLocationEXT\0" - "glGetFragDataLocation\0" - "\0" - /* _mesa_function_pool[23675]: TexStorage3DMultisample (will be remapped) */ - "iiiiiii\0" - "glTexStorage3DMultisample\0" + "glMatrixIndexusvARB\0" "\0" - /* _mesa_function_pool[23710]: Binormal3bvEXT (dynamic) */ + /* _mesa_function_pool[21910]: SecondaryColor3uiv (will be remapped) */ "p\0" - "glBinormal3bvEXT\0" + "glSecondaryColor3uiv\0" + "glSecondaryColor3uivEXT\0" "\0" - /* _mesa_function_pool[23730]: LoadIdentityDeformationMapSGIX (dynamic) */ - "i\0" - "glLoadIdentityDeformationMapSGIX\0" + /* _mesa_function_pool[21958]: EndConditionalRender (will be remapped) */ "\0" - /* _mesa_function_pool[23766]: PixelMapuiv (offset 252) */ - "iip\0" - "glPixelMapuiv\0" + "glEndConditionalRender\0" + "glEndConditionalRenderNV\0" "\0" - /* _mesa_function_pool[23785]: Color3dv (offset 12) */ + /* _mesa_function_pool[22008]: ProgramLocalParameter4dARB (will be remapped) */ + "iidddd\0" + "glProgramLocalParameter4dARB\0" + "\0" + /* _mesa_function_pool[22045]: Color3sv (offset 18) */ "p\0" - "glColor3dv\0" + "glColor3sv\0" "\0" - /* _mesa_function_pool[23799]: IsTexture (offset 330) */ + /* _mesa_function_pool[22059]: GenFragmentShadersATI (will be remapped) */ "i\0" - "glIsTexture\0" - "glIsTextureEXT\0" + "glGenFragmentShadersATI\0" + "\0" + /* _mesa_function_pool[22086]: BlendEquationSeparateiARB (will be remapped) */ + "iii\0" + "glBlendEquationSeparateiARB\0" + "glBlendEquationSeparateIndexedAMD\0" + "\0" + /* _mesa_function_pool[22153]: TestFenceNV (dynamic) */ + "i\0" + "glTestFenceNV\0" "\0" - /* _mesa_function_pool[23829]: VertexAttrib4fvNV (will be remapped) */ + /* _mesa_function_pool[22170]: MultiTexCoord1fvARB (offset 379) */ "ip\0" - "glVertexAttrib4fvNV\0" + "glMultiTexCoord1fv\0" + "glMultiTexCoord1fvARB\0" "\0" - /* _mesa_function_pool[23853]: BeginQuery (will be remapped) */ - "ii\0" - "glBeginQuery\0" - "glBeginQueryARB\0" + /* _mesa_function_pool[22215]: TexStorage2D (will be remapped) */ + "iiiii\0" + "glTexStorage2D\0" "\0" - /* _mesa_function_pool[23886]: ColorPointerEXT (will be remapped) */ - "iiiip\0" - "glColorPointerEXT\0" + /* _mesa_function_pool[22237]: GetPixelTexGenParameterivSGIS (dynamic) */ + "ip\0" + "glGetPixelTexGenParameterivSGIS\0" + "\0" + /* _mesa_function_pool[22273]: FramebufferTexture2D (will be remapped) */ + "iiiii\0" + "glFramebufferTexture2D\0" + "glFramebufferTexture2DEXT\0" + "glFramebufferTexture2DOES\0" "\0" - /* _mesa_function_pool[23911]: ScissorIndexedv (will be remapped) */ + /* _mesa_function_pool[22355]: GetSamplerParameterfv (will be remapped) */ + "iip\0" + "glGetSamplerParameterfv\0" + "\0" + /* _mesa_function_pool[22384]: VertexAttrib2dv (will be remapped) */ "ip\0" - "glScissorIndexedv\0" + "glVertexAttrib2dv\0" + "glVertexAttrib2dvARB\0" "\0" - /* _mesa_function_pool[23933]: VertexWeightfvEXT (dynamic) */ + /* _mesa_function_pool[22427]: Vertex4sv (offset 149) */ "p\0" - "glVertexWeightfvEXT\0" + "glVertex4sv\0" "\0" - /* _mesa_function_pool[23956]: VertexP3uiv (will be remapped) */ - "ip\0" - "glVertexP3uiv\0" + /* _mesa_function_pool[22442]: GetQueryObjecti64v (will be remapped) */ + "iip\0" + "glGetQueryObjecti64v\0" + "glGetQueryObjecti64vEXT\0" "\0" - /* _mesa_function_pool[23974]: VertexAttrib3s (will be remapped) */ - "iiii\0" - "glVertexAttrib3s\0" - "glVertexAttrib3sARB\0" + /* _mesa_function_pool[22492]: ClampColor (will be remapped) */ + "ii\0" + "glClampColorARB\0" + "glClampColor\0" "\0" - /* _mesa_function_pool[24017]: GetCombinerStageParameterfvNV (dynamic) */ + /* _mesa_function_pool[22525]: TextureRangeAPPLE (dynamic) */ "iip\0" - "glGetCombinerStageParameterfvNV\0" + "glTextureRangeAPPLE\0" "\0" - /* _mesa_function_pool[24054]: TexCoord4i (offset 122) */ - "iiii\0" - "glTexCoord4i\0" + /* _mesa_function_pool[22550]: ConvolutionFilter1D (offset 348) */ + "iiiiip\0" + "glConvolutionFilter1D\0" + "glConvolutionFilter1DEXT\0" "\0" - /* _mesa_function_pool[24073]: Color4ubVertex2fSUN (dynamic) */ - "iiiiff\0" - "glColor4ubVertex2fSUN\0" + /* _mesa_function_pool[22605]: DrawElementsIndirect (will be remapped) */ + "iip\0" + "glDrawElementsIndirect\0" "\0" - /* _mesa_function_pool[24103]: FragmentColorMaterialSGIX (dynamic) */ - "ii\0" - "glFragmentColorMaterialSGIX\0" + /* _mesa_function_pool[22633]: WindowPos3sv (will be remapped) */ + "p\0" + "glWindowPos3sv\0" + "glWindowPos3svARB\0" + "glWindowPos3svMESA\0" "\0" - /* _mesa_function_pool[24135]: CurrentPaletteMatrixARB (dynamic) */ - "i\0" - "glCurrentPaletteMatrixARB\0" - "glCurrentPaletteMatrixOES\0" + /* _mesa_function_pool[22688]: FragmentMaterialfvSGIX (dynamic) */ + "iip\0" + "glFragmentMaterialfvSGIX\0" "\0" - /* _mesa_function_pool[24190]: GetMapdv (offset 266) */ + /* _mesa_function_pool[22718]: CallLists (offset 3) */ "iip\0" - "glGetMapdv\0" + "glCallLists\0" "\0" - /* _mesa_function_pool[24206]: Color4fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[22735]: AlphaFunc (offset 240) */ + "if\0" + "glAlphaFunc\0" + "\0" + /* _mesa_function_pool[22751]: EdgeFlag (offset 41) */ + "i\0" + "glEdgeFlag\0" + "\0" + /* _mesa_function_pool[22765]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */ "ppp\0" - "glColor4fNormal3fVertex3fvSUN\0" + "glTexCoord2fNormal3fVertex3fvSUN\0" + "\0" + /* _mesa_function_pool[22803]: EdgeFlagv (offset 42) */ + "p\0" + "glEdgeFlagv\0" "\0" - /* _mesa_function_pool[24241]: GetStringi (will be remapped) */ + /* _mesa_function_pool[22818]: DepthRangex (will be remapped) */ "ii\0" - "glGetStringi\0" + "glDepthRangexOES\0" + "glDepthRangex\0" "\0" - /* _mesa_function_pool[24258]: MultiTexCoord3iv (offset 397) */ - "ip\0" - "glMultiTexCoord3iv\0" - "glMultiTexCoord3ivARB\0" + /* _mesa_function_pool[22853]: ReplacementCodeubvSUN (dynamic) */ + "p\0" + "glReplacementCodeubvSUN\0" + "\0" + /* _mesa_function_pool[22880]: VDPAUInitNV (will be remapped) */ + "pp\0" + "glVDPAUInitNV\0" + "\0" + /* _mesa_function_pool[22898]: GetBufferParameteri64v (will be remapped) */ + "iip\0" + "glGetBufferParameteri64v\0" + "\0" + /* _mesa_function_pool[22928]: CreateProgram (will be remapped) */ + "\0" + "glCreateProgram\0" + "\0" + /* _mesa_function_pool[22946]: DepthRangef (will be remapped) */ + "ff\0" + "glDepthRangef\0" + "glDepthRangefOES\0" "\0" - /* _mesa_function_pool[24303]: GetUniformLocation (will be remapped) */ + /* _mesa_function_pool[22981]: GetSharpenTexFuncSGIS (dynamic) */ "ip\0" - "glGetUniformLocation\0" - "glGetUniformLocationARB\0" + "glGetSharpenTexFuncSGIS\0" "\0" - /* _mesa_function_pool[24352]: PixelStoref (offset 249) */ - "if\0" - "glPixelStoref\0" + /* _mesa_function_pool[23009]: ColorFragmentOp3ATI (will be remapped) */ + "iiiiiiiiiiiii\0" + "glColorFragmentOp3ATI\0" "\0" - /* _mesa_function_pool[24370]: WindowPos2iv (will be remapped) */ - "p\0" - "glWindowPos2iv\0" - "glWindowPos2ivARB\0" - "glWindowPos2ivMESA\0" + /* _mesa_function_pool[23046]: ValidateProgram (will be remapped) */ + "i\0" + "glValidateProgram\0" + "glValidateProgramARB\0" "\0" - /* _mesa_function_pool[24425]: Binormal3dEXT (dynamic) */ - "ddd\0" - "glBinormal3dEXT\0" + /* _mesa_function_pool[23088]: VertexPointerEXT (will be remapped) */ + "iiiip\0" + "glVertexPointerEXT\0" "\0" - /* _mesa_function_pool[24446]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */ - "iiiiifff\0" - "glReplacementCodeuiColor4ubVertex3fSUN\0" + /* _mesa_function_pool[23114]: Scissor (offset 176) */ + "iiii\0" + "glScissor\0" + "\0" + /* _mesa_function_pool[23130]: BeginTransformFeedback (will be remapped) */ + "i\0" + "glBeginTransformFeedback\0" + "glBeginTransformFeedbackEXT\0" "\0" - /* _mesa_function_pool[24495]: PixelStorei (offset 250) */ + /* _mesa_function_pool[23186]: TexCoord2i (offset 106) */ "ii\0" - "glPixelStorei\0" + "glTexCoord2i\0" "\0" - /* _mesa_function_pool[24513]: IsBuffer (will be remapped) */ - "i\0" - "glIsBuffer\0" - "glIsBufferARB\0" + /* _mesa_function_pool[23203]: Color4ui (offset 37) */ + "iiii\0" + "glColor4ui\0" "\0" - /* _mesa_function_pool[24541]: VertexAttrib2fNV (will be remapped) */ - "iff\0" - "glVertexAttrib2fNV\0" + /* _mesa_function_pool[23220]: TexCoord2f (offset 104) */ + "ff\0" + "glTexCoord2f\0" "\0" - /* _mesa_function_pool[24565]: FragmentMaterialiSGIX (dynamic) */ - "iii\0" - "glFragmentMaterialiSGIX\0" + /* _mesa_function_pool[23237]: TexCoord2d (offset 102) */ + "dd\0" + "glTexCoord2d\0" "\0" - /* _mesa_function_pool[24594]: VertexAttribI4ubv (will be remapped) */ - "ip\0" - "glVertexAttribI4ubvEXT\0" - "glVertexAttribI4ubv\0" + /* _mesa_function_pool[23254]: TexCoord2s (offset 108) */ + "ii\0" + "glTexCoord2s\0" "\0" - /* _mesa_function_pool[24641]: EvalCoord2dv (offset 233) */ + /* _mesa_function_pool[23271]: PointSizePointerOES (will be remapped) */ + "iip\0" + "glPointSizePointerOES\0" + "\0" + /* _mesa_function_pool[23298]: Color4us (offset 39) */ + "iiii\0" + "glColor4us\0" + "\0" + /* _mesa_function_pool[23315]: Color3bv (offset 10) */ "p\0" - "glEvalCoord2dv\0" + "glColor3bv\0" "\0" - /* _mesa_function_pool[24659]: GenVertexArrays (will be remapped) */ - "ip\0" - "glGenVertexArrays\0" - "glGenVertexArraysOES\0" + /* _mesa_function_pool[23329]: PrimitiveRestartNV (will be remapped) */ "\0" - /* _mesa_function_pool[24702]: ColorMaterial (offset 151) */ - "ii\0" - "glColorMaterial\0" + "glPrimitiveRestartNV\0" "\0" - /* _mesa_function_pool[24722]: InvalidateSubFramebuffer (will be remapped) */ - "iipiiii\0" - "glInvalidateSubFramebuffer\0" + /* _mesa_function_pool[23352]: BindBufferOffsetEXT (will be remapped) */ + "iiii\0" + "glBindBufferOffsetEXT\0" "\0" - /* _mesa_function_pool[24758]: SamplePatternSGIS (will be remapped) */ + /* _mesa_function_pool[23380]: ProvokingVertex (will be remapped) */ "i\0" - "glSamplePatternSGIS\0" - "glSamplePatternEXT\0" + "glProvokingVertexEXT\0" + "glProvokingVertex\0" "\0" - /* _mesa_function_pool[24800]: ColorP4ui (will be remapped) */ + /* _mesa_function_pool[23422]: VertexAttribs4fvNV (will be remapped) */ + "iip\0" + "glVertexAttribs4fvNV\0" + "\0" + /* _mesa_function_pool[23448]: MapControlPointsNV (dynamic) */ + "iiiiiiiip\0" + "glMapControlPointsNV\0" + "\0" + /* _mesa_function_pool[23480]: Vertex2i (offset 130) */ "ii\0" - "glColorP4ui\0" + "glVertex2i\0" + "\0" + /* _mesa_function_pool[23495]: HintPGI (dynamic) */ + "ii\0" + "glHintPGI\0" "\0" - /* _mesa_function_pool[24816]: VertexAttribs1svNV (will be remapped) */ + /* _mesa_function_pool[23509]: InterleavedArrays (offset 317) */ "iip\0" - "glVertexAttribs1svNV\0" + "glInterleavedArrays\0" "\0" - /* _mesa_function_pool[24842]: DrawTexsOES (will be remapped) */ - "iiiii\0" - "glDrawTexsOES\0" + /* _mesa_function_pool[23534]: RasterPos2fv (offset 65) */ + "p\0" + "glRasterPos2fv\0" "\0" - /* _mesa_function_pool[24863]: Uniform2ui (will be remapped) */ - "iii\0" - "glUniform2uiEXT\0" - "glUniform2ui\0" + /* _mesa_function_pool[23552]: TexCoord1fv (offset 97) */ + "p\0" + "glTexCoord1fv\0" "\0" - /* _mesa_function_pool[24897]: VertexAttrib1fvNV (will be remapped) */ - "ip\0" - "glVertexAttrib1fvNV\0" + /* _mesa_function_pool[23569]: PixelTransferf (offset 247) */ + "if\0" + "glPixelTransferf\0" "\0" - /* _mesa_function_pool[24921]: TexBumpParameterivATI (will be remapped) */ + /* _mesa_function_pool[23590]: MultiTexCoord4dv (offset 401) */ "ip\0" - "glTexBumpParameterivATI\0" + "glMultiTexCoord4dv\0" + "glMultiTexCoord4dvARB\0" "\0" - /* _mesa_function_pool[24949]: GetSeparableFilter (offset 359) */ - "iiippp\0" - "glGetSeparableFilter\0" - "glGetSeparableFilterEXT\0" + /* _mesa_function_pool[23635]: ProgramEnvParameter4fvARB (will be remapped) */ + "iip\0" + "glProgramEnvParameter4fvARB\0" + "glProgramParameter4fvNV\0" "\0" - /* _mesa_function_pool[25002]: DeleteVertexArrays (will be remapped) */ - "ip\0" - "glDeleteVertexArrays\0" - "glDeleteVertexArraysAPPLE\0" - "glDeleteVertexArraysOES\0" + /* _mesa_function_pool[23692]: RasterPos4fv (offset 81) */ + "p\0" + "glRasterPos4fv\0" "\0" - /* _mesa_function_pool[25077]: SpriteParameteriSGIX (dynamic) */ + /* _mesa_function_pool[23710]: FragmentLightModeliSGIX (dynamic) */ "ii\0" - "glSpriteParameteriSGIX\0" + "glFragmentLightModeliSGIX\0" "\0" - /* _mesa_function_pool[25104]: RequestResidentProgramsNV (will be remapped) */ - "ip\0" - "glRequestResidentProgramsNV\0" + /* _mesa_function_pool[23740]: PushMatrix (offset 298) */ "\0" - /* _mesa_function_pool[25136]: TexCoordP3uiv (will be remapped) */ - "ip\0" - "glTexCoordP3uiv\0" + "glPushMatrix\0" "\0" - /* _mesa_function_pool[25156]: ReplacementCodeusSUN (dynamic) */ - "i\0" - "glReplacementCodeusSUN\0" + /* _mesa_function_pool[23755]: EndList (offset 1) */ "\0" - /* _mesa_function_pool[25182]: FeedbackBuffer (offset 194) */ - "iip\0" - "glFeedbackBuffer\0" - "\0" - /* _mesa_function_pool[25204]: RasterPos2iv (offset 67) */ - "p\0" - "glRasterPos2iv\0" + "glEndList\0" "\0" - /* _mesa_function_pool[25222]: TexImage1D (offset 182) */ - "iiiiiiip\0" - "glTexImage1D\0" + /* _mesa_function_pool[23767]: DrawRangeElements (offset 338) */ + "iiiiip\0" + "glDrawRangeElements\0" + "glDrawRangeElementsEXT\0" "\0" - /* _mesa_function_pool[25245]: TexEnvxv (will be remapped) */ + /* _mesa_function_pool[23818]: GetTexGenxvOES (will be remapped) */ "iip\0" - "glTexEnvxvOES\0" - "glTexEnvxv\0" + "glGetTexGenxvOES\0" "\0" - /* _mesa_function_pool[25275]: ListParameterivSGIX (dynamic) */ - "iip\0" - "glListParameterivSGIX\0" + /* _mesa_function_pool[23840]: GetHandleARB (will be remapped) */ + "i\0" + "glGetHandleARB\0" "\0" - /* _mesa_function_pool[25302]: MultiDrawElementsEXT (will be remapped) */ - "ipipi\0" - "glMultiDrawElements\0" - "glMultiDrawElementsEXT\0" + /* _mesa_function_pool[23858]: VertexPointer (offset 321) */ + "iiip\0" + "glVertexPointer\0" "\0" - /* _mesa_function_pool[25352]: Color3s (offset 17) */ + /* _mesa_function_pool[23880]: BlendFunciARB (will be remapped) */ "iii\0" - "glColor3s\0" + "glBlendFunciARB\0" + "glBlendFuncIndexedAMD\0" "\0" - /* _mesa_function_pool[25367]: MultiTexCoord3s (offset 398) */ - "iiii\0" - "glMultiTexCoord3s\0" - "glMultiTexCoord3sARB\0" + /* _mesa_function_pool[23923]: GlobalAlphaFactorbSUN (dynamic) */ + "i\0" + "glGlobalAlphaFactorbSUN\0" "\0" - /* _mesa_function_pool[25412]: WeightusvARB (dynamic) */ - "ip\0" - "glWeightusvARB\0" + /* _mesa_function_pool[23950]: Uniform2ui (will be remapped) */ + "iii\0" + "glUniform2uiEXT\0" + "glUniform2ui\0" "\0" - /* _mesa_function_pool[25431]: TexCoordPointer (offset 320) */ - "iiip\0" - "glTexCoordPointer\0" + /* _mesa_function_pool[23984]: ScissorIndexed (will be remapped) */ + "iiiii\0" + "glScissorIndexed\0" "\0" - /* _mesa_function_pool[25455]: GetnSeparableFilterARB (will be remapped) */ - "iiiipipp\0" - "glGetnSeparableFilterARB\0" + /* _mesa_function_pool[24008]: End (offset 43) */ "\0" - /* _mesa_function_pool[25490]: InvalidateBufferData (will be remapped) */ - "i\0" - "glInvalidateBufferData\0" + "glEnd\0" "\0" - /* _mesa_function_pool[25516]: Color3i (offset 15) */ - "iii\0" - "glColor3i\0" + /* _mesa_function_pool[24016]: GetSamplerParameteriv (will be remapped) */ + "iip\0" + "glGetSamplerParameteriv\0" "\0" - /* _mesa_function_pool[25531]: FrontFace (offset 157) */ + /* _mesa_function_pool[24045]: GenProgramPipelines (will be remapped) */ + "ip\0" + "glGenProgramPipelines\0" + "\0" + /* _mesa_function_pool[24071]: Enable (offset 215) */ "i\0" - "glFrontFace\0" + "glEnable\0" "\0" - /* _mesa_function_pool[25546]: EvalCoord2d (offset 232) */ - "dd\0" - "glEvalCoord2d\0" + /* _mesa_function_pool[24083]: IsProgramPipeline (will be remapped) */ + "i\0" + "glIsProgramPipeline\0" "\0" - /* _mesa_function_pool[25564]: EvalCoord2f (offset 234) */ - "ff\0" - "glEvalCoord2f\0" + /* _mesa_function_pool[24106]: ShaderBinary (will be remapped) */ + "ipipi\0" + "glShaderBinary\0" + "\0" + /* _mesa_function_pool[24128]: GetFragmentMaterialivSGIX (dynamic) */ + "iip\0" + "glGetFragmentMaterialivSGIX\0" "\0" - /* _mesa_function_pool[25582]: Color3b (offset 9) */ + /* _mesa_function_pool[24161]: WeightPointerARB (dynamic) */ + "iiip\0" + "glWeightPointerARB\0" + "glWeightPointerOES\0" + "\0" + /* _mesa_function_pool[24205]: Normal3x (will be remapped) */ "iii\0" - "glColor3b\0" + "glNormal3xOES\0" + "glNormal3x\0" "\0" - /* _mesa_function_pool[25597]: ExecuteProgramNV (will be remapped) */ - "iip\0" - "glExecuteProgramNV\0" + /* _mesa_function_pool[24235]: VertexAttrib4fARB (will be remapped) */ + "iffff\0" + "glVertexAttrib4f\0" + "glVertexAttrib4fARB\0" "\0" - /* _mesa_function_pool[25621]: Color3f (offset 13) */ - "fff\0" - "glColor3f\0" + /* _mesa_function_pool[24279]: ReadnPixelsARB (will be remapped) */ + "iiiiiiip\0" + "glReadnPixelsARB\0" "\0" - /* _mesa_function_pool[25636]: LightEnviSGIX (dynamic) */ - "ii\0" - "glLightEnviSGIX\0" + /* _mesa_function_pool[24306]: InvalidateTexSubImage (will be remapped) */ + "iiiiiiii\0" + "glInvalidateTexSubImage\0" "\0" - /* _mesa_function_pool[25656]: Color3d (offset 11) */ - "ddd\0" - "glColor3d\0" + /* _mesa_function_pool[24340]: Normal3s (offset 60) */ + "iii\0" + "glNormal3s\0" "\0" - /* _mesa_function_pool[25671]: GetVertexAttribdv (will be remapped) */ + /* _mesa_function_pool[24356]: Materialxv (will be remapped) */ "iip\0" - "glGetVertexAttribdv\0" - "glGetVertexAttribdvARB\0" + "glMaterialxvOES\0" + "glMaterialxv\0" "\0" - /* _mesa_function_pool[25719]: VDPAUUnregisterSurfaceNV (will be remapped) */ - "i\0" - "glVDPAUUnregisterSurfaceNV\0" + /* _mesa_function_pool[24390]: Normal3i (offset 58) */ + "iii\0" + "glNormal3i\0" "\0" - /* _mesa_function_pool[25749]: Normal3dv (offset 55) */ - "p\0" - "glNormal3dv\0" + /* _mesa_function_pool[24406]: ProgramNamedParameter4fvNV (will be remapped) */ + "iipp\0" + "glProgramNamedParameter4fvNV\0" "\0" - /* _mesa_function_pool[25764]: Lightf (offset 159) */ - "iif\0" - "glLightf\0" + /* _mesa_function_pool[24441]: Normal3b (offset 52) */ + "iii\0" + "glNormal3b\0" "\0" - /* _mesa_function_pool[25778]: FinishTextureSUNX (dynamic) */ + /* _mesa_function_pool[24457]: Normal3d (offset 54) */ + "ddd\0" + "glNormal3d\0" "\0" - "glFinishTextureSUNX\0" + /* _mesa_function_pool[24473]: Normal3f (offset 56) */ + "fff\0" + "glNormal3f\0" "\0" - /* _mesa_function_pool[25800]: MatrixMode (offset 293) */ + /* _mesa_function_pool[24489]: Indexi (offset 48) */ "i\0" - "glMatrixMode\0" + "glIndexi\0" "\0" - /* _mesa_function_pool[25816]: GetPixelMapusv (offset 273) */ - "ip\0" - "glGetPixelMapusv\0" + /* _mesa_function_pool[24501]: Uniform1uiv (will be remapped) */ + "iip\0" + "glUniform1uivEXT\0" + "glUniform1uiv\0" "\0" - /* _mesa_function_pool[25837]: Lighti (offset 161) */ + /* _mesa_function_pool[24537]: VertexAttribI2uiEXT (will be remapped) */ "iii\0" - "glLighti\0" + "glVertexAttribI2uiEXT\0" + "glVertexAttribI2ui\0" "\0" - /* _mesa_function_pool[25851]: VertexAttribPointerNV (will be remapped) */ - "iiiip\0" - "glVertexAttribPointerNV\0" + /* _mesa_function_pool[24583]: IsRenderbuffer (will be remapped) */ + "i\0" + "glIsRenderbuffer\0" + "glIsRenderbufferEXT\0" + "glIsRenderbufferOES\0" "\0" - /* _mesa_function_pool[25882]: GenFramebuffers (will be remapped) */ + /* _mesa_function_pool[24643]: NormalP3uiv (will be remapped) */ "ip\0" - "glGenFramebuffers\0" - "glGenFramebuffersEXT\0" - "glGenFramebuffersOES\0" + "glNormalP3uiv\0" "\0" - /* _mesa_function_pool[25946]: GenBuffers (will be remapped) */ - "ip\0" - "glGenBuffers\0" - "glGenBuffersARB\0" + /* _mesa_function_pool[24661]: Indexf (offset 46) */ + "f\0" + "glIndexf\0" "\0" - /* _mesa_function_pool[25979]: VDPAUMapSurfacesNV (will be remapped) */ - "ip\0" - "glVDPAUMapSurfacesNV\0" + /* _mesa_function_pool[24673]: Indexd (offset 44) */ + "d\0" + "glIndexd\0" + "\0" + /* _mesa_function_pool[24685]: GetMaterialiv (offset 270) */ + "iip\0" + "glGetMaterialiv\0" "\0" - /* _mesa_function_pool[26004]: ClearDepthx (will be remapped) */ + /* _mesa_function_pool[24706]: Indexs (offset 50) */ "i\0" - "glClearDepthxOES\0" - "glClearDepthx\0" + "glIndexs\0" "\0" - /* _mesa_function_pool[26038]: Uniform4uiv (will be remapped) */ + /* _mesa_function_pool[24718]: MultiTexCoordP1uiv (will be remapped) */ "iip\0" - "glUniform4uivEXT\0" - "glUniform4uiv\0" + "glMultiTexCoordP1uiv\0" "\0" - /* _mesa_function_pool[26074]: IsFramebuffer (will be remapped) */ + /* _mesa_function_pool[24744]: ConvolutionFilter2D (offset 349) */ + "iiiiiip\0" + "glConvolutionFilter2D\0" + "glConvolutionFilter2DEXT\0" + "\0" + /* _mesa_function_pool[24800]: Vertex2d (offset 126) */ + "dd\0" + "glVertex2d\0" + "\0" + /* _mesa_function_pool[24815]: Vertex2f (offset 128) */ + "ff\0" + "glVertex2f\0" + "\0" + /* _mesa_function_pool[24830]: Color4bv (offset 26) */ + "p\0" + "glColor4bv\0" + "\0" + /* _mesa_function_pool[24844]: VertexAttrib2fvNV (will be remapped) */ + "ip\0" + "glVertexAttrib2fvNV\0" + "\0" + /* _mesa_function_pool[24868]: Vertex2s (offset 132) */ + "ii\0" + "glVertex2s\0" + "\0" + /* _mesa_function_pool[24883]: ActiveTexture (offset 374) */ "i\0" - "glIsFramebuffer\0" - "glIsFramebufferEXT\0" - "glIsFramebufferOES\0" + "glActiveTexture\0" + "glActiveTextureARB\0" "\0" - /* _mesa_function_pool[26131]: PopDebugGroup (will be remapped) */ + /* _mesa_function_pool[24921]: GlobalAlphaFactorfSUN (dynamic) */ + "f\0" + "glGlobalAlphaFactorfSUN\0" "\0" - "glPopDebugGroup\0" + /* _mesa_function_pool[24948]: ColorP4uiv (will be remapped) */ + "ip\0" + "glColorP4uiv\0" "\0" - /* _mesa_function_pool[26149]: PixelTransformParameterfEXT (dynamic) */ - "iif\0" - "glPixelTransformParameterfEXT\0" + /* _mesa_function_pool[24965]: DrawTexxOES (will be remapped) */ + "iiiii\0" + "glDrawTexxOES\0" "\0" - /* _mesa_function_pool[26184]: BlendEquationSeparate (will be remapped) */ + /* _mesa_function_pool[24986]: SetFenceNV (dynamic) */ "ii\0" - "glBlendEquationSeparate\0" - "glBlendEquationSeparateEXT\0" - "glBlendEquationSeparateATI\0" - "glBlendEquationSeparateOES\0" + "glSetFenceNV\0" "\0" - /* _mesa_function_pool[26293]: Lightx (will be remapped) */ - "iii\0" - "glLightxOES\0" - "glLightx\0" + /* _mesa_function_pool[25003]: PixelTexGenParameterivSGIS (dynamic) */ + "ip\0" + "glPixelTexGenParameterivSGIS\0" "\0" - /* _mesa_function_pool[26319]: PixelTransformParameteriEXT (dynamic) */ + /* _mesa_function_pool[25036]: MultiTexCoordP3ui (will be remapped) */ "iii\0" - "glPixelTransformParameteriEXT\0" + "glMultiTexCoordP3ui\0" "\0" - /* _mesa_function_pool[26354]: GetDoublev (offset 260) */ + /* _mesa_function_pool[25061]: GetAttribLocation (will be remapped) */ "ip\0" - "glGetDoublev\0" + "glGetAttribLocation\0" + "glGetAttribLocationARB\0" "\0" - /* _mesa_function_pool[26371]: MultiTexCoordP4ui (will be remapped) */ - "iii\0" - "glMultiTexCoordP4ui\0" + /* _mesa_function_pool[25108]: GetCombinerStageParameterfvNV (dynamic) */ + "iip\0" + "glGetCombinerStageParameterfvNV\0" "\0" - /* _mesa_function_pool[26396]: GetObjectLabel (will be remapped) */ - "iiipp\0" - "glGetObjectLabel\0" + /* _mesa_function_pool[25145]: DrawBuffer (offset 202) */ + "i\0" + "glDrawBuffer\0" "\0" - /* _mesa_function_pool[26420]: MultMatrixd (offset 295) */ - "p\0" - "glMultMatrixd\0" + /* _mesa_function_pool[25161]: MultiTexCoord2dv (offset 385) */ + "ip\0" + "glMultiTexCoord2dv\0" + "glMultiTexCoord2dvARB\0" "\0" - /* _mesa_function_pool[26437]: MultMatrixf (offset 294) */ - "p\0" - "glMultMatrixf\0" + /* _mesa_function_pool[25206]: IsSampler (will be remapped) */ + "i\0" + "glIsSampler\0" "\0" - /* _mesa_function_pool[26454]: TextureMaterialEXT (dynamic) */ + /* _mesa_function_pool[25221]: BlendFunc (offset 241) */ "ii\0" - "glTextureMaterialEXT\0" + "glBlendFunc\0" "\0" - /* _mesa_function_pool[26479]: TexCoord2fColor4ubVertex3fSUN (dynamic) */ - "ffiiiifff\0" - "glTexCoord2fColor4ubVertex3fSUN\0" + /* _mesa_function_pool[25237]: LineStipple (offset 167) */ + "ii\0" + "glLineStipple\0" "\0" - /* _mesa_function_pool[26522]: VertexAttrib1d (will be remapped) */ - "id\0" - "glVertexAttrib1d\0" - "glVertexAttrib1dARB\0" + /* _mesa_function_pool[25255]: Tangent3fvEXT (dynamic) */ + "p\0" + "glTangent3fvEXT\0" "\0" - /* _mesa_function_pool[26563]: CompressedTexImage1D (will be remapped) */ - "iiiiiip\0" - "glCompressedTexImage1D\0" - "glCompressedTexImage1DARB\0" + /* _mesa_function_pool[25274]: ColorMaterial (offset 151) */ + "ii\0" + "glColorMaterial\0" "\0" - /* _mesa_function_pool[26621]: UnlockArraysEXT (will be remapped) */ + /* _mesa_function_pool[25294]: RasterPos3sv (offset 77) */ + "p\0" + "glRasterPos3sv\0" "\0" - "glUnlockArraysEXT\0" + /* _mesa_function_pool[25312]: TexCoordP2ui (will be remapped) */ + "ii\0" + "glTexCoordP2ui\0" "\0" - /* _mesa_function_pool[26641]: TexBufferRange (will be remapped) */ - "iiiii\0" - "glTexBufferRange\0" + /* _mesa_function_pool[25331]: TexParameteriv (offset 181) */ + "iip\0" + "glTexParameteriv\0" "\0" - /* _mesa_function_pool[26665]: MultiTexCoord4fvARB (offset 403) */ + /* _mesa_function_pool[25353]: VertexAttrib3fvARB (will be remapped) */ "ip\0" - "glMultiTexCoord4fv\0" - "glMultiTexCoord4fvARB\0" + "glVertexAttrib3fv\0" + "glVertexAttrib3fvARB\0" "\0" - /* _mesa_function_pool[26710]: TagSampleBufferSGIX (dynamic) */ + /* _mesa_function_pool[25396]: ProgramUniformMatrix3x4fv (will be remapped) */ + "iiiip\0" + "glProgramUniformMatrix3x4fv\0" "\0" - "glTagSampleBufferSGIX\0" + /* _mesa_function_pool[25431]: PixelTransformParameterfEXT (dynamic) */ + "iif\0" + "glPixelTransformParameterfEXT\0" + "\0" + /* _mesa_function_pool[25466]: TextureColorMaskSGIS (dynamic) */ + "iiii\0" + "glTextureColorMaskSGIS\0" "\0" - /* _mesa_function_pool[26734]: UniformMatrix2x3fv (will be remapped) */ + /* _mesa_function_pool[25495]: GetColorTable (offset 343) */ "iiip\0" - "glUniformMatrix2x3fv\0" + "glGetColorTable\0" + "glGetColorTableSGI\0" + "glGetColorTableEXT\0" "\0" - /* _mesa_function_pool[26761]: SamplerParameteri (will be remapped) */ + /* _mesa_function_pool[25555]: TexCoord3i (offset 114) */ "iii\0" - "glSamplerParameteri\0" + "glTexCoord3i\0" "\0" - /* _mesa_function_pool[26786]: SamplerParameterf (will be remapped) */ - "iif\0" - "glSamplerParameterf\0" + /* _mesa_function_pool[25573]: CopyColorTable (offset 342) */ + "iiiii\0" + "glCopyColorTable\0" + "glCopyColorTableSGI\0" "\0" - /* _mesa_function_pool[26811]: CombinerParameteriNV (dynamic) */ - "ii\0" - "glCombinerParameteriNV\0" + /* _mesa_function_pool[25617]: Frustum (offset 289) */ + "dddddd\0" + "glFrustum\0" "\0" - /* _mesa_function_pool[26838]: VertexAttrib1s (will be remapped) */ - "ii\0" - "glVertexAttrib1s\0" - "glVertexAttrib1sARB\0" + /* _mesa_function_pool[25635]: TexCoord3d (offset 110) */ + "ddd\0" + "glTexCoord3d\0" "\0" - /* _mesa_function_pool[26879]: EnableVertexAttribArray (will be remapped) */ - "i\0" - "glEnableVertexAttribArray\0" - "glEnableVertexAttribArrayARB\0" + /* _mesa_function_pool[25653]: TexCoord3f (offset 112) */ + "fff\0" + "glTexCoord3f\0" "\0" - /* _mesa_function_pool[26937]: FrameZoomSGIX (dynamic) */ - "i\0" - "glFrameZoomSGIX\0" + /* _mesa_function_pool[25671]: DepthRangeArrayv (will be remapped) */ + "iip\0" + "glDepthRangeArrayv\0" "\0" - /* _mesa_function_pool[26956]: Normal3fVertex3fvSUN (dynamic) */ - "pp\0" - "glNormal3fVertex3fvSUN\0" + /* _mesa_function_pool[25695]: DeleteTextures (offset 327) */ + "ip\0" + "glDeleteTextures\0" + "glDeleteTexturesEXT\0" "\0" - /* _mesa_function_pool[26983]: Tangent3dvEXT (dynamic) */ - "p\0" - "glTangent3dvEXT\0" + /* _mesa_function_pool[25736]: TexCoordPointerEXT (will be remapped) */ + "iiiip\0" + "glTexCoordPointerEXT\0" "\0" - /* _mesa_function_pool[27002]: MultiDrawElementsIndirect (will be remapped) */ - "iipii\0" - "glMultiDrawElementsIndirect\0" + /* _mesa_function_pool[25764]: TexCoord3s (offset 116) */ + "iii\0" + "glTexCoord3s\0" "\0" - /* _mesa_function_pool[27037]: RasterPos4sv (offset 85) */ - "p\0" - "glRasterPos4sv\0" + /* _mesa_function_pool[25782]: TexCoord4fVertex4fSUN (dynamic) */ + "ffffffff\0" + "glTexCoord4fVertex4fSUN\0" + "\0" + /* _mesa_function_pool[25816]: CombinerStageParameterfvNV (dynamic) */ + "iip\0" + "glCombinerStageParameterfvNV\0" "\0" - /* _mesa_function_pool[27055]: VertexAttrib3fvARB (will be remapped) */ + /* _mesa_function_pool[25850]: GenPerfMonitorsAMD (will be remapped) */ "ip\0" - "glVertexAttrib3fv\0" - "glVertexAttrib3fvARB\0" + "glGenPerfMonitorsAMD\0" "\0" - /* _mesa_function_pool[27098]: ClearColor (offset 206) */ + /* _mesa_function_pool[25875]: ClearAccum (offset 204) */ "ffff\0" - "glClearColor\0" - "\0" - /* _mesa_function_pool[27117]: Materialx (will be remapped) */ - "iii\0" - "glMaterialxOES\0" - "glMaterialx\0" - "\0" - /* _mesa_function_pool[27149]: GetSynciv (will be remapped) */ - "iiipp\0" - "glGetSynciv\0" + "glClearAccum\0" "\0" - /* _mesa_function_pool[27168]: VertexAttrib1svNV (will be remapped) */ - "ip\0" - "glVertexAttrib1svNV\0" + /* _mesa_function_pool[25894]: DeformSGIX (dynamic) */ + "i\0" + "glDeformSGIX\0" "\0" - /* _mesa_function_pool[27192]: SecondaryColor3ubv (will be remapped) */ + /* _mesa_function_pool[25910]: TexCoord4iv (offset 123) */ "p\0" - "glSecondaryColor3ubv\0" - "glSecondaryColor3ubvEXT\0" + "glTexCoord4iv\0" "\0" - /* _mesa_function_pool[27240]: PointParameteri (will be remapped) */ - "ii\0" - "glPointParameteri\0" - "glPointParameteriNV\0" + /* _mesa_function_pool[25927]: TexStorage3D (will be remapped) */ + "iiiiii\0" + "glTexStorage3D\0" "\0" - /* _mesa_function_pool[27282]: PointParameterf (will be remapped) */ - "if\0" - "glPointParameterf\0" - "glPointParameterfARB\0" - "glPointParameterfEXT\0" - "glPointParameterfSGIS\0" + /* _mesa_function_pool[25950]: FramebufferTexture3D (will be remapped) */ + "iiiiii\0" + "glFramebufferTexture3D\0" + "glFramebufferTexture3DEXT\0" + "glFramebufferTexture3DOES\0" "\0" - /* _mesa_function_pool[27368]: GlobalAlphaFactorsSUN (dynamic) */ - "i\0" - "glGlobalAlphaFactorsSUN\0" + /* _mesa_function_pool[26033]: FragmentLightModelfvSGIX (dynamic) */ + "ip\0" + "glFragmentLightModelfvSGIX\0" "\0" - /* _mesa_function_pool[27395]: GetDebugMessageLog (will be remapped) */ - "iipppppp\0" - "glGetDebugMessageLog\0" + /* _mesa_function_pool[26064]: GetBufferParameteriv (will be remapped) */ + "iip\0" + "glGetBufferParameteriv\0" + "glGetBufferParameterivARB\0" + "\0" + /* _mesa_function_pool[26118]: VertexAttrib2fNV (will be remapped) */ + "iff\0" + "glVertexAttrib2fNV\0" "\0" - /* _mesa_function_pool[27426]: TexEnviv (offset 187) */ + /* _mesa_function_pool[26142]: GetFragmentLightfvSGIX (dynamic) */ "iip\0" - "glTexEnviv\0" + "glGetFragmentLightfvSGIX\0" "\0" - /* _mesa_function_pool[27442]: TexSubImage3D (offset 372) */ - "iiiiiiiiiip\0" - "glTexSubImage3D\0" - "glTexSubImage3DEXT\0" - "glTexSubImage3DOES\0" + /* _mesa_function_pool[26172]: CopyTexImage2D (offset 324) */ + "iiiiiiii\0" + "glCopyTexImage2D\0" + "glCopyTexImage2DEXT\0" "\0" - /* _mesa_function_pool[27509]: Tangent3fEXT (dynamic) */ - "fff\0" - "glTangent3fEXT\0" + /* _mesa_function_pool[26219]: DebugMessageInsertARB (will be remapped) */ + "iiiiip\0" + "glDebugMessageInsertARB\0" "\0" - /* _mesa_function_pool[27529]: DeformationMap3fSGIX (dynamic) */ - "iffiiffiiffiip\0" - "glDeformationMap3fSGIX\0" + /* _mesa_function_pool[26251]: Vertex3fv (offset 137) */ + "p\0" + "glVertex3fv\0" "\0" - /* _mesa_function_pool[27568]: BeginPerfMonitorAMD (will be remapped) */ - "i\0" - "glBeginPerfMonitorAMD\0" + /* _mesa_function_pool[26266]: WindowPos4dvMESA (will be remapped) */ + "p\0" + "glWindowPos4dvMESA\0" "\0" - /* _mesa_function_pool[27593]: MatrixIndexubvARB (dynamic) */ + /* _mesa_function_pool[26288]: CreateShaderProgramEXT (will be remapped) */ "ip\0" - "glMatrixIndexubvARB\0" - "\0" - /* _mesa_function_pool[27617]: Color4fNormal3fVertex3fSUN (dynamic) */ - "ffffffffff\0" - "glColor4fNormal3fVertex3fSUN\0" + "glCreateShaderProgramEXT\0" "\0" - /* _mesa_function_pool[27658]: PixelTexGenParameterfSGIS (dynamic) */ - "if\0" - "glPixelTexGenParameterfSGIS\0" + /* _mesa_function_pool[26317]: VertexAttribs1dvNV (will be remapped) */ + "iip\0" + "glVertexAttribs1dvNV\0" "\0" - /* _mesa_function_pool[27690]: CreateShader (will be remapped) */ + /* _mesa_function_pool[26343]: IsQuery (will be remapped) */ "i\0" - "glCreateShader\0" + "glIsQuery\0" + "glIsQueryARB\0" "\0" - /* _mesa_function_pool[27708]: GetColorTableParameterfv (offset 344) */ + /* _mesa_function_pool[26369]: EdgeFlagPointerEXT (will be remapped) */ "iip\0" - "glGetColorTableParameterfv\0" - "glGetColorTableParameterfvSGI\0" - "glGetColorTableParameterfvEXT\0" - "\0" - /* _mesa_function_pool[27800]: FragmentLightModelfvSGIX (dynamic) */ - "ip\0" - "glFragmentLightModelfvSGIX\0" - "\0" - /* _mesa_function_pool[27831]: FramebufferTexture2D (will be remapped) */ - "iiiii\0" - "glFramebufferTexture2D\0" - "glFramebufferTexture2DEXT\0" - "glFramebufferTexture2DOES\0" + "glEdgeFlagPointerEXT\0" "\0" - /* _mesa_function_pool[27913]: Bitmap (offset 8) */ - "iiffffp\0" - "glBitmap\0" + /* _mesa_function_pool[26395]: VertexAttribs2svNV (will be remapped) */ + "iip\0" + "glVertexAttribs2svNV\0" "\0" - /* _mesa_function_pool[27931]: MultiTexCoord3fARB (offset 394) */ - "ifff\0" - "glMultiTexCoord3f\0" - "glMultiTexCoord3fARB\0" + /* _mesa_function_pool[26421]: CreateShaderProgramv (will be remapped) */ + "iip\0" + "glCreateShaderProgramv\0" "\0" - /* _mesa_function_pool[27976]: GetTexLevelParameterfv (offset 284) */ - "iiip\0" - "glGetTexLevelParameterfv\0" + /* _mesa_function_pool[26449]: BlendEquationiARB (will be remapped) */ + "ii\0" + "glBlendEquationiARB\0" + "glBlendEquationIndexedAMD\0" "\0" - /* _mesa_function_pool[28007]: GetPixelTexGenParameterfvSGIS (dynamic) */ + /* _mesa_function_pool[26499]: VertexAttribI4uivEXT (will be remapped) */ "ip\0" - "glGetPixelTexGenParameterfvSGIS\0" + "glVertexAttribI4uivEXT\0" + "glVertexAttribI4uiv\0" "\0" - /* _mesa_function_pool[28043]: CheckFramebufferStatus (will be remapped) */ + /* _mesa_function_pool[26546]: PointSizex (will be remapped) */ "i\0" - "glCheckFramebufferStatus\0" - "glCheckFramebufferStatusEXT\0" - "glCheckFramebufferStatusOES\0" + "glPointSizexOES\0" + "glPointSizex\0" "\0" - /* _mesa_function_pool[28127]: DrawTransformFeedbackStream (will be remapped) */ - "iii\0" - "glDrawTransformFeedbackStream\0" + /* _mesa_function_pool[26578]: PolygonMode (offset 174) */ + "ii\0" + "glPolygonMode\0" "\0" - /* _mesa_function_pool[28162]: Vertex2sv (offset 133) */ + /* _mesa_function_pool[26596]: SecondaryColor3iv (will be remapped) */ "p\0" - "glVertex2sv\0" + "glSecondaryColor3iv\0" + "glSecondaryColor3ivEXT\0" + "\0" + /* _mesa_function_pool[26642]: VertexAttribI1iEXT (will be remapped) */ + "ii\0" + "glVertexAttribI1iEXT\0" + "glVertexAttribI1i\0" "\0" - /* _mesa_function_pool[28177]: GetIntegerv (offset 263) */ + /* _mesa_function_pool[26685]: VertexAttrib4Niv (will be remapped) */ "ip\0" - "glGetIntegerv\0" + "glVertexAttrib4Niv\0" + "glVertexAttrib4NivARB\0" + "\0" + /* _mesa_function_pool[26730]: GetMapAttribParameterivNV (dynamic) */ + "iiip\0" + "glGetMapAttribParameterivNV\0" "\0" - /* _mesa_function_pool[28195]: GenFragmentShadersATI (will be remapped) */ + /* _mesa_function_pool[26764]: GetnUniformdvARB (will be remapped) */ + "iiip\0" + "glGetnUniformdvARB\0" + "\0" + /* _mesa_function_pool[26789]: LinkProgram (will be remapped) */ "i\0" - "glGenFragmentShadersATI\0" + "glLinkProgram\0" + "glLinkProgramARB\0" "\0" - /* _mesa_function_pool[28222]: GetShaderSource (will be remapped) */ - "iipp\0" - "glGetShaderSource\0" - "glGetShaderSourceARB\0" + /* _mesa_function_pool[26823]: ProgramUniform4f (will be remapped) */ + "iiffff\0" + "glProgramUniform4f\0" "\0" - /* _mesa_function_pool[28267]: GetTexBumpParameterfvATI (will be remapped) */ - "ip\0" - "glGetTexBumpParameterfvATI\0" + /* _mesa_function_pool[26850]: ProgramUniform4i (will be remapped) */ + "iiiiii\0" + "glProgramUniform4i\0" "\0" - /* _mesa_function_pool[28298]: BindProgramARB (will be remapped) */ - "ii\0" - "glBindProgramARB\0" - "glBindProgramNV\0" + /* _mesa_function_pool[26877]: ListParameterfvSGIX (dynamic) */ + "iip\0" + "glListParameterfvSGIX\0" "\0" - /* _mesa_function_pool[28335]: GetnMapdvARB (will be remapped) */ - "iiip\0" - "glGetnMapdvARB\0" + /* _mesa_function_pool[26904]: VertexAttrib4d (will be remapped) */ + "idddd\0" + "glVertexAttrib4d\0" + "glVertexAttrib4dARB\0" "\0" - /* _mesa_function_pool[28356]: VertexAttrib3sNV (will be remapped) */ + /* _mesa_function_pool[26948]: WindowPos4sMESA (will be remapped) */ "iiii\0" - "glVertexAttrib3sNV\0" + "glWindowPos4sMESA\0" + "\0" + /* _mesa_function_pool[26972]: VertexAttrib4s (will be remapped) */ + "iiiii\0" + "glVertexAttrib4s\0" + "glVertexAttrib4sARB\0" "\0" - /* _mesa_function_pool[28381]: VertexAttribI2uivEXT (will be remapped) */ + /* _mesa_function_pool[27016]: VertexAttrib1dvNV (will be remapped) */ "ip\0" - "glVertexAttribI2uivEXT\0" - "glVertexAttribI2uiv\0" + "glVertexAttrib1dvNV\0" "\0" - /* _mesa_function_pool[28428]: GetProgramEnvParameterfvARB (will be remapped) */ + /* _mesa_function_pool[27040]: ReplacementCodePointerSUN (dynamic) */ "iip\0" - "glGetProgramEnvParameterfvARB\0" + "glReplacementCodePointerSUN\0" "\0" - /* _mesa_function_pool[28463]: GetTrackMatrixivNV (will be remapped) */ + /* _mesa_function_pool[27073]: TexStorage3DMultisample (will be remapped) */ + "iiiiiii\0" + "glTexStorage3DMultisample\0" + "\0" + /* _mesa_function_pool[27108]: Binormal3bvEXT (dynamic) */ + "p\0" + "glBinormal3bvEXT\0" + "\0" + /* _mesa_function_pool[27128]: SamplerParameteriv (will be remapped) */ + "iip\0" + "glSamplerParameteriv\0" + "\0" + /* _mesa_function_pool[27154]: VertexAttribP3uiv (will be remapped) */ "iiip\0" - "glGetTrackMatrixivNV\0" + "glVertexAttribP3uiv\0" "\0" - /* _mesa_function_pool[28490]: VertexAttrib3svNV (will be remapped) */ + /* _mesa_function_pool[27180]: ScissorIndexedv (will be remapped) */ "ip\0" - "glVertexAttrib3svNV\0" + "glScissorIndexedv\0" "\0" - /* _mesa_function_pool[28514]: GetActiveUniform (will be remapped) */ - "iiipppp\0" - "glGetActiveUniform\0" - "glGetActiveUniformARB\0" + /* _mesa_function_pool[27202]: Color4ubVertex2fSUN (dynamic) */ + "iiiiff\0" + "glColor4ubVertex2fSUN\0" "\0" - /* _mesa_function_pool[28564]: DeleteBuffers (will be remapped) */ - "ip\0" - "glDeleteBuffers\0" - "glDeleteBuffersARB\0" + /* _mesa_function_pool[27232]: FragmentColorMaterialSGIX (dynamic) */ + "ii\0" + "glFragmentColorMaterialSGIX\0" "\0" - /* _mesa_function_pool[28603]: AlphaFuncx (will be remapped) */ + /* _mesa_function_pool[27264]: GetStringi (will be remapped) */ "ii\0" - "glAlphaFuncxOES\0" - "glAlphaFuncx\0" + "glGetStringi\0" "\0" - /* _mesa_function_pool[28636]: TexCoord2fNormal3fVertex3fSUN (dynamic) */ - "ffffffff\0" - "glTexCoord2fNormal3fVertex3fSUN\0" + /* _mesa_function_pool[27281]: VertexAttrib4dv (will be remapped) */ + "ip\0" + "glVertexAttrib4dv\0" + "glVertexAttrib4dvARB\0" + "\0" + /* _mesa_function_pool[27324]: EvalCoord2dv (offset 233) */ + "p\0" + "glEvalCoord2dv\0" + "\0" + /* _mesa_function_pool[27342]: VertexAttrib1fNV (will be remapped) */ + "if\0" + "glVertexAttrib1fNV\0" + "\0" + /* _mesa_function_pool[27365]: CompressedTexSubImage1D (will be remapped) */ + "iiiiiip\0" + "glCompressedTexSubImage1D\0" + "glCompressedTexSubImage1DARB\0" + "\0" + /* _mesa_function_pool[27429]: GetSeparableFilter (offset 359) */ + "iiippp\0" + "glGetSeparableFilter\0" + "glGetSeparableFilterEXT\0" + "\0" + /* _mesa_function_pool[27482]: ReplacementCodeusSUN (dynamic) */ + "i\0" + "glReplacementCodeusSUN\0" "\0" - /* _mesa_function_pool[28678]: GetTexEnviv (offset 277) */ + /* _mesa_function_pool[27508]: FeedbackBuffer (offset 194) */ "iip\0" - "glGetTexEnviv\0" + "glFeedbackBuffer\0" "\0" - /* _mesa_function_pool[28697]: DrawTexivOES (will be remapped) */ + /* _mesa_function_pool[27530]: RasterPos2iv (offset 67) */ "p\0" - "glDrawTexivOES\0" + "glRasterPos2iv\0" "\0" - /* _mesa_function_pool[28715]: GetBufferSubData (will be remapped) */ - "iiip\0" - "glGetBufferSubData\0" - "glGetBufferSubDataARB\0" + /* _mesa_function_pool[27548]: TexImage1D (offset 182) */ + "iiiiiiip\0" + "glTexImage1D\0" "\0" - /* _mesa_function_pool[28762]: EGLImageTargetRenderbufferStorageOES (will be remapped) */ - "ip\0" - "glEGLImageTargetRenderbufferStorageOES\0" + /* _mesa_function_pool[27571]: MultiDrawElementsEXT (will be remapped) */ + "ipipi\0" + "glMultiDrawElements\0" + "glMultiDrawElementsEXT\0" "\0" - /* _mesa_function_pool[28805]: VertexAttribI2ivEXT (will be remapped) */ - "ip\0" - "glVertexAttribI2ivEXT\0" - "glVertexAttribI2iv\0" + /* _mesa_function_pool[27621]: GetnSeparableFilterARB (will be remapped) */ + "iiiipipp\0" + "glGetnSeparableFilterARB\0" "\0" - /* _mesa_function_pool[28850]: PopClientAttrib (offset 334) */ + /* _mesa_function_pool[27656]: FrontFace (offset 157) */ + "i\0" + "glFrontFace\0" "\0" - "glPopClientAttrib\0" + /* _mesa_function_pool[27671]: MultiModeDrawArraysIBM (will be remapped) */ + "pppii\0" + "glMultiModeDrawArraysIBM\0" "\0" - /* _mesa_function_pool[28870]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ - "iffffffffffff\0" - "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN\0" + /* _mesa_function_pool[27703]: Tangent3ivEXT (dynamic) */ + "p\0" + "glTangent3ivEXT\0" "\0" - /* _mesa_function_pool[28941]: DetachObjectARB (will be remapped) */ + /* _mesa_function_pool[27722]: LightEnviSGIX (dynamic) */ "ii\0" - "glDetachObjectARB\0" + "glLightEnviSGIX\0" "\0" - /* _mesa_function_pool[28963]: VertexBlendARB (dynamic) */ + /* _mesa_function_pool[27742]: Normal3dv (offset 55) */ + "p\0" + "glNormal3dv\0" + "\0" + /* _mesa_function_pool[27757]: Lightf (offset 159) */ + "iif\0" + "glLightf\0" + "\0" + /* _mesa_function_pool[27771]: MatrixMode (offset 293) */ "i\0" - "glVertexBlendARB\0" + "glMatrixMode\0" "\0" - /* _mesa_function_pool[28983]: EndTransformFeedback (will be remapped) */ + /* _mesa_function_pool[27787]: GetPixelMapusv (offset 273) */ + "ip\0" + "glGetPixelMapusv\0" "\0" - "glEndTransformFeedback\0" - "glEndTransformFeedbackEXT\0" + /* _mesa_function_pool[27808]: Lighti (offset 161) */ + "iii\0" + "glLighti\0" "\0" - /* _mesa_function_pool[29034]: SeparableFilter2D (offset 360) */ - "iiiiiipp\0" - "glSeparableFilter2D\0" - "glSeparableFilter2DEXT\0" + /* _mesa_function_pool[27822]: VertexAttribPointerNV (will be remapped) */ + "iiiip\0" + "glVertexAttribPointerNV\0" "\0" - /* _mesa_function_pool[29087]: DispatchComputeIndirect (will be remapped) */ - "i\0" - "glDispatchComputeIndirect\0" + /* _mesa_function_pool[27853]: GetFragDataIndex (will be remapped) */ + "ip\0" + "glGetFragDataIndex\0" "\0" - /* _mesa_function_pool[29116]: GetQueryObjectuiv (will be remapped) */ - "iip\0" - "glGetQueryObjectuiv\0" - "glGetQueryObjectuivARB\0" + /* _mesa_function_pool[27876]: Lightx (will be remapped) */ + "iii\0" + "glLightxOES\0" + "glLightx\0" "\0" - /* _mesa_function_pool[29164]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */ - "ppp\0" - "glReplacementCodeuiColor4ubVertex3fvSUN\0" + /* _mesa_function_pool[27902]: ProgramUniform3fv (will be remapped) */ + "iiip\0" + "glProgramUniform3fv\0" "\0" - /* _mesa_function_pool[29209]: Map1d (offset 220) */ - "iddiip\0" - "glMap1d\0" + /* _mesa_function_pool[27928]: MultMatrixd (offset 295) */ + "p\0" + "glMultMatrixd\0" "\0" - /* _mesa_function_pool[29225]: Map1f (offset 221) */ - "iffiip\0" - "glMap1f\0" + /* _mesa_function_pool[27945]: MultMatrixf (offset 294) */ + "p\0" + "glMultMatrixf\0" "\0" - /* _mesa_function_pool[29241]: FlushRasterSGIX (dynamic) */ + /* _mesa_function_pool[27962]: MultiTexCoord4fvARB (offset 403) */ + "ip\0" + "glMultiTexCoord4fv\0" + "glMultiTexCoord4fvARB\0" "\0" - "glFlushRasterSGIX\0" + /* _mesa_function_pool[28007]: UniformMatrix2x3fv (will be remapped) */ + "iiip\0" + "glUniformMatrix2x3fv\0" "\0" - /* _mesa_function_pool[29261]: ArrayElement (offset 306) */ - "i\0" - "glArrayElement\0" - "glArrayElementEXT\0" + /* _mesa_function_pool[28034]: TrackMatrixNV (will be remapped) */ + "iiii\0" + "glTrackMatrixNV\0" "\0" - /* _mesa_function_pool[29297]: TexImage2D (offset 183) */ - "iiiiiiiip\0" - "glTexImage2D\0" + /* _mesa_function_pool[28056]: MultMatrixx (will be remapped) */ + "p\0" + "glMultMatrixxOES\0" + "glMultMatrixx\0" "\0" - /* _mesa_function_pool[29321]: DepthBoundsEXT (will be remapped) */ - "dd\0" - "glDepthBoundsEXT\0" + /* _mesa_function_pool[28090]: PointParameterx (will be remapped) */ + "ii\0" + "glPointParameterxOES\0" + "glPointParameterx\0" "\0" - /* _mesa_function_pool[29342]: GetProgramivNV (will be remapped) */ - "iip\0" - "glGetProgramivNV\0" + /* _mesa_function_pool[28133]: DrawArrays (offset 310) */ + "iii\0" + "glDrawArrays\0" + "glDrawArraysEXT\0" "\0" - /* _mesa_function_pool[29364]: GetMinmaxParameteriv (offset 366) */ - "iip\0" - "glGetMinmaxParameteriv\0" - "glGetMinmaxParameterivEXT\0" + /* _mesa_function_pool[28167]: PointParameteri (will be remapped) */ + "ii\0" + "glPointParameteri\0" + "glPointParameteriNV\0" "\0" - /* _mesa_function_pool[29418]: PixelTransferf (offset 247) */ + /* _mesa_function_pool[28209]: PointParameterf (will be remapped) */ "if\0" - "glPixelTransferf\0" - "\0" - /* _mesa_function_pool[29439]: CopyTexImage1D (offset 323) */ - "iiiiiii\0" - "glCopyTexImage1D\0" - "glCopyTexImage1DEXT\0" + "glPointParameterf\0" + "glPointParameterfARB\0" + "glPointParameterfEXT\0" + "glPointParameterfSGIS\0" "\0" - /* _mesa_function_pool[29485]: PushMatrix (offset 298) */ + /* _mesa_function_pool[28295]: GlobalAlphaFactorsSUN (dynamic) */ + "i\0" + "glGlobalAlphaFactorsSUN\0" "\0" - "glPushMatrix\0" + /* _mesa_function_pool[28322]: VertexAttribBinding (will be remapped) */ + "ii\0" + "glVertexAttribBinding\0" "\0" - /* _mesa_function_pool[29500]: Fogiv (offset 156) */ - "ip\0" - "glFogiv\0" + /* _mesa_function_pool[28348]: ReplacementCodeuiTexCoord2fVertex3fvSUN (dynamic) */ + "ppp\0" + "glReplacementCodeuiTexCoord2fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[29512]: EndQuery (will be remapped) */ + /* _mesa_function_pool[28395]: CreateShader (will be remapped) */ "i\0" - "glEndQuery\0" - "glEndQueryARB\0" + "glCreateShader\0" "\0" - /* _mesa_function_pool[29540]: TexCoord1dv (offset 95) */ - "p\0" - "glTexCoord1dv\0" + /* _mesa_function_pool[28413]: GetProgramParameterdvNV (will be remapped) */ + "iiip\0" + "glGetProgramParameterdvNV\0" "\0" - /* _mesa_function_pool[29557]: AlphaFragmentOp3ATI (will be remapped) */ - "iiiiiiiiiiii\0" - "glAlphaFragmentOp3ATI\0" + /* _mesa_function_pool[28445]: GetProgramEnvParameterfvARB (will be remapped) */ + "iip\0" + "glGetProgramEnvParameterfvARB\0" "\0" - /* _mesa_function_pool[29593]: PixelTransferi (offset 248) */ - "ii\0" - "glPixelTransferi\0" + /* _mesa_function_pool[28480]: DeleteBuffers (will be remapped) */ + "ip\0" + "glDeleteBuffers\0" + "glDeleteBuffersARB\0" "\0" - /* _mesa_function_pool[29614]: GetnColorTableARB (will be remapped) */ - "iiiip\0" - "glGetnColorTableARB\0" + /* _mesa_function_pool[28519]: GetBufferSubData (will be remapped) */ + "iiip\0" + "glGetBufferSubData\0" + "glGetBufferSubDataARB\0" "\0" - /* _mesa_function_pool[29641]: VertexAttrib3fvNV (will be remapped) */ - "ip\0" - "glVertexAttrib3fvNV\0" + /* _mesa_function_pool[28566]: GetPerfMonitorGroupsAMD (will be remapped) */ + "pip\0" + "glGetPerfMonitorGroupsAMD\0" "\0" - /* _mesa_function_pool[29665]: Rotatef (offset 300) */ - "ffff\0" - "glRotatef\0" + /* _mesa_function_pool[28597]: FlushRasterSGIX (dynamic) */ "\0" - /* _mesa_function_pool[29681]: GetFinalCombinerInputParameterivNV (dynamic) */ - "iip\0" - "glGetFinalCombinerInputParameterivNV\0" + "glFlushRasterSGIX\0" "\0" - /* _mesa_function_pool[29723]: Vertex3i (offset 138) */ - "iii\0" - "glVertex3i\0" + /* _mesa_function_pool[28617]: VertexAttribP2ui (will be remapped) */ + "iiii\0" + "glVertexAttribP2ui\0" "\0" - /* _mesa_function_pool[29739]: GetTexEnvxv (will be remapped) */ + /* _mesa_function_pool[28642]: GetMinmaxParameteriv (offset 366) */ "iip\0" - "glGetTexEnvxvOES\0" - "glGetTexEnvxv\0" + "glGetMinmaxParameteriv\0" + "glGetMinmaxParameterivEXT\0" "\0" - /* _mesa_function_pool[29775]: SecondaryColorP3ui (will be remapped) */ - "ii\0" - "glSecondaryColorP3ui\0" + /* _mesa_function_pool[28696]: DrawTexivOES (will be remapped) */ + "p\0" + "glDrawTexivOES\0" + "\0" + /* _mesa_function_pool[28714]: CopyTexImage1D (offset 323) */ + "iiiiiii\0" + "glCopyTexImage1D\0" + "glCopyTexImage1DEXT\0" + "\0" + /* _mesa_function_pool[28760]: GetnColorTableARB (will be remapped) */ + "iiiip\0" + "glGetnColorTableARB\0" + "\0" + /* _mesa_function_pool[28787]: VertexAttribFormat (will be remapped) */ + "iiiii\0" + "glVertexAttribFormat\0" + "\0" + /* _mesa_function_pool[28815]: Vertex3i (offset 138) */ + "iii\0" + "glVertex3i\0" "\0" - /* _mesa_function_pool[29800]: Vertex3f (offset 136) */ + /* _mesa_function_pool[28831]: Vertex3f (offset 136) */ "fff\0" "glVertex3f\0" "\0" - /* _mesa_function_pool[29816]: Clear (offset 203) */ - "i\0" - "glClear\0" - "\0" - /* _mesa_function_pool[29827]: Vertex3d (offset 134) */ + /* _mesa_function_pool[28847]: Vertex3d (offset 134) */ "ddd\0" "glVertex3d\0" "\0" - /* _mesa_function_pool[29843]: GetMapParameterivNV (dynamic) */ + /* _mesa_function_pool[28863]: GetProgramPipelineiv (will be remapped) */ "iip\0" - "glGetMapParameterivNV\0" - "\0" - /* _mesa_function_pool[29870]: IndexMaterialEXT (dynamic) */ - "ii\0" - "glIndexMaterialEXT\0" - "\0" - /* _mesa_function_pool[29893]: Disablei (will be remapped) */ - "ii\0" - "glDisableIndexedEXT\0" - "glDisablei\0" + "glGetProgramPipelineiv\0" "\0" - /* _mesa_function_pool[29928]: ReadBuffer (offset 254) */ + /* _mesa_function_pool[28891]: ReadBuffer (offset 254) */ "i\0" "glReadBuffer\0" "glReadBufferNV\0" "\0" - /* _mesa_function_pool[29959]: ConvolutionParameteri (offset 352) */ + /* _mesa_function_pool[28922]: ConvolutionParameteri (offset 352) */ "iii\0" "glConvolutionParameteri\0" "glConvolutionParameteriEXT\0" "\0" - /* _mesa_function_pool[30015]: VertexAttrib4sv (will be remapped) */ - "ip\0" - "glVertexAttrib4sv\0" - "glVertexAttrib4svARB\0" - "\0" - /* _mesa_function_pool[30058]: Ortho (offset 296) */ - "dddddd\0" - "glOrtho\0" - "\0" - /* _mesa_function_pool[30074]: Binormal3sEXT (dynamic) */ - "iii\0" - "glBinormal3sEXT\0" - "\0" - /* _mesa_function_pool[30095]: VDPAUUnmapSurfacesNV (will be remapped) */ - "ip\0" - "glVDPAUUnmapSurfacesNV\0" - "\0" - /* _mesa_function_pool[30122]: ListBase (offset 6) */ - "i\0" - "glListBase\0" - "\0" - /* _mesa_function_pool[30136]: GetTexParameterIiv (will be remapped) */ + /* _mesa_function_pool[28978]: GetTexParameterIiv (will be remapped) */ "iip\0" "glGetTexParameterIivEXT\0" "glGetTexParameterIiv\0" "\0" - /* _mesa_function_pool[30186]: Tangent3sEXT (dynamic) */ - "iii\0" - "glTangent3sEXT\0" - "\0" - /* _mesa_function_pool[30206]: Vertex3s (offset 140) */ + /* _mesa_function_pool[29028]: Vertex3s (offset 140) */ "iii\0" "glVertex3s\0" "\0" - /* _mesa_function_pool[30222]: ConvolutionParameterf (offset 350) */ + /* _mesa_function_pool[29044]: ConvolutionParameterf (offset 350) */ "iif\0" "glConvolutionParameterf\0" "glConvolutionParameterfEXT\0" "\0" - /* _mesa_function_pool[30278]: GetColorTableParameteriv (offset 345) */ + /* _mesa_function_pool[29100]: GetColorTableParameteriv (offset 345) */ "iip\0" "glGetColorTableParameteriv\0" "glGetColorTableParameterivSGI\0" "glGetColorTableParameterivEXT\0" "\0" - /* _mesa_function_pool[30370]: ProgramEnvParameter4dvARB (will be remapped) */ - "iip\0" - "glProgramEnvParameter4dvARB\0" - "glProgramParameter4dvNV\0" + /* _mesa_function_pool[29192]: GetTransformFeedbackVarying (will be remapped) */ + "iiipppp\0" + "glGetTransformFeedbackVarying\0" + "glGetTransformFeedbackVaryingEXT\0" "\0" - /* _mesa_function_pool[30427]: ShadeModel (offset 177) */ - "i\0" - "glShadeModel\0" + /* _mesa_function_pool[29264]: TexCoord3fv (offset 113) */ + "p\0" + "glTexCoord3fv\0" "\0" - /* _mesa_function_pool[30443]: Uniform3uiv (will be remapped) */ - "iip\0" - "glUniform3uivEXT\0" - "glUniform3uiv\0" + /* _mesa_function_pool[29281]: TextureBarrierNV (will be remapped) */ "\0" - /* _mesa_function_pool[30479]: GenerateMipmap (will be remapped) */ - "i\0" - "glGenerateMipmap\0" - "glGenerateMipmapEXT\0" - "glGenerateMipmapOES\0" + "glTextureBarrierNV\0" "\0" - /* _mesa_function_pool[30539]: Rectiv (offset 91) */ - "pp\0" - "glRectiv\0" + /* _mesa_function_pool[29302]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */ + "iffffffffff\0" + "glReplacementCodeuiColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[30552]: TexImage3DMultisample (will be remapped) */ - "iiiiiii\0" - "glTexImage3DMultisample\0" + /* _mesa_function_pool[29361]: ProgramLocalParameter4fARB (will be remapped) */ + "iiffff\0" + "glProgramLocalParameter4fARB\0" "\0" - /* _mesa_function_pool[30585]: MatrixIndexPointerARB (dynamic) */ + /* _mesa_function_pool[29398]: ObjectLabel (will be remapped) */ "iiip\0" - "glMatrixIndexPointerARB\0" - "glMatrixIndexPointerOES\0" + "glObjectLabel\0" + "\0" + /* _mesa_function_pool[29418]: PauseTransformFeedback (will be remapped) */ "\0" - /* _mesa_function_pool[30639]: GetMapParameterfvNV (dynamic) */ + "glPauseTransformFeedback\0" + "\0" + /* _mesa_function_pool[29445]: DeleteShader (will be remapped) */ + "i\0" + "glDeleteShader\0" + "\0" + /* _mesa_function_pool[29463]: CompileShader (will be remapped) */ + "i\0" + "glCompileShader\0" + "glCompileShaderARB\0" + "\0" + /* _mesa_function_pool[29501]: Vertex2iv (offset 131) */ + "p\0" + "glVertex2iv\0" + "\0" + /* _mesa_function_pool[29516]: TexGendv (offset 189) */ "iip\0" - "glGetMapParameterfvNV\0" + "glTexGendv\0" "\0" - /* _mesa_function_pool[30666]: MultiTexCoord1iv (offset 381) */ - "ip\0" - "glMultiTexCoord1iv\0" - "glMultiTexCoord1ivARB\0" + /* _mesa_function_pool[29532]: ProgramLocalParameters4fvEXT (will be remapped) */ + "iiip\0" + "glProgramLocalParameters4fvEXT\0" "\0" - /* _mesa_function_pool[30711]: PassTexCoordATI (will be remapped) */ - "iii\0" - "glPassTexCoordATI\0" + /* _mesa_function_pool[29569]: ResetMinmax (offset 370) */ + "i\0" + "glResetMinmax\0" + "glResetMinmaxEXT\0" + "\0" + /* _mesa_function_pool[29603]: SpriteParameterfSGIX (dynamic) */ + "if\0" + "glSpriteParameterfSGIX\0" + "\0" + /* _mesa_function_pool[29630]: DeleteProgramsARB (will be remapped) */ + "ip\0" + "glDeleteProgramsARB\0" + "glDeleteProgramsNV\0" "\0" - /* _mesa_function_pool[30734]: DeleteProgram (will be remapped) */ + /* _mesa_function_pool[29673]: ShadeModel (offset 177) */ "i\0" - "glDeleteProgram\0" + "glShadeModel\0" "\0" - /* _mesa_function_pool[30753]: GetSamplerParameteriv (will be remapped) */ + /* _mesa_function_pool[29689]: VertexAttribs1fvNV (will be remapped) */ "iip\0" - "glGetSamplerParameteriv\0" + "glVertexAttribs1fvNV\0" "\0" - /* _mesa_function_pool[30782]: BindBufferRange (will be remapped) */ - "iiiii\0" - "glBindBufferRange\0" - "glBindBufferRangeEXT\0" + /* _mesa_function_pool[29715]: FogFuncSGIS (dynamic) */ + "ip\0" + "glFogFuncSGIS\0" "\0" - /* _mesa_function_pool[30828]: Tangent3dEXT (dynamic) */ - "ddd\0" - "glTangent3dEXT\0" + /* _mesa_function_pool[29733]: GetTexLevelParameteriv (offset 285) */ + "iiip\0" + "glGetTexLevelParameteriv\0" "\0" - /* _mesa_function_pool[30848]: TexParameterxv (will be remapped) */ + /* _mesa_function_pool[29764]: MultiDrawArrays (will be remapped) */ + "ippi\0" + "glMultiDrawArrays\0" + "glMultiDrawArraysEXT\0" + "\0" + /* _mesa_function_pool[29809]: GetProgramLocalParameterdvARB (will be remapped) */ "iip\0" - "glTexParameterxvOES\0" - "glTexParameterxv\0" + "glGetProgramLocalParameterdvARB\0" + "\0" + /* _mesa_function_pool[29846]: MapBufferRange (will be remapped) */ + "iiii\0" + "glMapBufferRange\0" + "glMapBufferRangeEXT\0" "\0" - /* _mesa_function_pool[30890]: BlendEquationSeparateiARB (will be remapped) */ + /* _mesa_function_pool[29889]: DispatchCompute (will be remapped) */ "iii\0" - "glBlendEquationSeparateiARB\0" - "glBlendEquationSeparateIndexedAMD\0" + "glDispatchCompute\0" "\0" - /* _mesa_function_pool[30957]: AlphaFragmentOp2ATI (will be remapped) */ - "iiiiiiiii\0" - "glAlphaFragmentOp2ATI\0" + /* _mesa_function_pool[29912]: UseProgramStages (will be remapped) */ + "iii\0" + "glUseProgramStages\0" "\0" - /* _mesa_function_pool[30990]: Vertex2fv (offset 129) */ + /* _mesa_function_pool[29936]: ProgramUniformMatrix4fv (will be remapped) */ + "iiiip\0" + "glProgramUniformMatrix4fv\0" + "\0" + /* _mesa_function_pool[29969]: FinishAsyncSGIX (dynamic) */ "p\0" - "glVertex2fv\0" + "glFinishAsyncSGIX\0" "\0" - /* _mesa_function_pool[31005]: SampleMaskSGIS (will be remapped) */ - "fi\0" - "glSampleMaskSGIS\0" - "glSampleMaskEXT\0" + /* _mesa_function_pool[29990]: FramebufferRenderbuffer (will be remapped) */ + "iiii\0" + "glFramebufferRenderbuffer\0" + "glFramebufferRenderbufferEXT\0" + "glFramebufferRenderbufferOES\0" "\0" - /* _mesa_function_pool[31042]: BindRenderbufferEXT (will be remapped) */ - "ii\0" - "glBindRenderbufferEXT\0" + /* _mesa_function_pool[30080]: IsProgramARB (will be remapped) */ + "i\0" + "glIsProgramARB\0" + "glIsProgramNV\0" "\0" - /* _mesa_function_pool[31068]: VertexAttrib1fNV (will be remapped) */ - "if\0" - "glVertexAttrib1fNV\0" + /* _mesa_function_pool[30112]: Map2d (offset 222) */ + "iddiiddiip\0" + "glMap2d\0" "\0" - /* _mesa_function_pool[31091]: Rotatex (will be remapped) */ - "iiii\0" - "glRotatexOES\0" - "glRotatex\0" + /* _mesa_function_pool[30132]: Map2f (offset 223) */ + "iffiiffiip\0" + "glMap2f\0" + "\0" + /* _mesa_function_pool[30152]: ProgramStringARB (will be remapped) */ + "iiip\0" + "glProgramStringARB\0" "\0" - /* _mesa_function_pool[31120]: FramebufferTextureFaceARB (will be remapped) */ + /* _mesa_function_pool[30177]: MultiTexCoord4x (will be remapped) */ "iiiii\0" - "glFramebufferTextureFaceARB\0" + "glMultiTexCoord4xOES\0" + "glMultiTexCoord4x\0" "\0" - /* _mesa_function_pool[31155]: Vertex3sv (offset 141) */ - "p\0" - "glVertex3sv\0" + /* _mesa_function_pool[30223]: MultiTexCoord4s (offset 406) */ + "iiiii\0" + "glMultiTexCoord4s\0" + "glMultiTexCoord4sARB\0" "\0" - /* _mesa_function_pool[31170]: GetQueryObjectiv (will be remapped) */ - "iip\0" - "glGetQueryObjectiv\0" - "glGetQueryObjectivARB\0" + /* _mesa_function_pool[30269]: ViewportIndexedf (will be remapped) */ + "iffff\0" + "glViewportIndexedf\0" "\0" - /* _mesa_function_pool[31216]: VertexAttrib2s (will be remapped) */ - "iii\0" - "glVertexAttrib2s\0" - "glVertexAttrib2sARB\0" + /* _mesa_function_pool[30295]: MultiTexCoord4i (offset 404) */ + "iiiii\0" + "glMultiTexCoord4i\0" + "glMultiTexCoord4iARB\0" "\0" - /* _mesa_function_pool[31258]: VertexWeightfEXT (dynamic) */ - "f\0" - "glVertexWeightfEXT\0" + /* _mesa_function_pool[30341]: ApplyTextureEXT (dynamic) */ + "i\0" + "glApplyTextureEXT\0" "\0" - /* _mesa_function_pool[31280]: ProgramLocalParameter4fvARB (will be remapped) */ - "iip\0" - "glProgramLocalParameter4fvARB\0" + /* _mesa_function_pool[30362]: DebugMessageControl (will be remapped) */ + "iiiipi\0" + "glDebugMessageControl\0" "\0" - /* _mesa_function_pool[31315]: EvalMesh1 (offset 236) */ - "iii\0" - "glEvalMesh1\0" + /* _mesa_function_pool[30392]: MultiTexCoord4d (offset 400) */ + "idddd\0" + "glMultiTexCoord4d\0" + "glMultiTexCoord4dARB\0" "\0" - /* _mesa_function_pool[31332]: ObjectLabel (will be remapped) */ - "iiip\0" - "glObjectLabel\0" + /* _mesa_function_pool[30438]: GetHistogram (offset 361) */ + "iiiip\0" + "glGetHistogram\0" + "glGetHistogramEXT\0" "\0" - /* _mesa_function_pool[31352]: PauseTransformFeedback (will be remapped) */ + /* _mesa_function_pool[30478]: Translatex (will be remapped) */ + "iii\0" + "glTranslatexOES\0" + "glTranslatex\0" "\0" - "glPauseTransformFeedback\0" + /* _mesa_function_pool[30512]: IglooInterfaceSGIX (dynamic) */ + "ip\0" + "glIglooInterfaceSGIX\0" "\0" - /* _mesa_function_pool[31379]: DeleteShader (will be remapped) */ - "i\0" - "glDeleteShader\0" + /* _mesa_function_pool[30537]: Indexsv (offset 51) */ + "p\0" + "glIndexsv\0" "\0" - /* _mesa_function_pool[31397]: BindImageTexture (will be remapped) */ - "iiiiiii\0" - "glBindImageTexture\0" + /* _mesa_function_pool[30550]: VertexAttrib1fvARB (will be remapped) */ + "ip\0" + "glVertexAttrib1fv\0" + "glVertexAttrib1fvARB\0" "\0" - /* _mesa_function_pool[31425]: Uniform2f (will be remapped) */ - "iff\0" - "glUniform2f\0" - "glUniform2fARB\0" + /* _mesa_function_pool[30593]: TexCoord2dv (offset 103) */ + "p\0" + "glTexCoord2dv\0" "\0" - /* _mesa_function_pool[31457]: VertexAttrib2d (will be remapped) */ - "idd\0" - "glVertexAttrib2d\0" - "glVertexAttrib2dARB\0" + /* _mesa_function_pool[30610]: Translated (offset 303) */ + "ddd\0" + "glTranslated\0" "\0" - /* _mesa_function_pool[31499]: CompressedTexSubImage3D (will be remapped) */ - "iiiiiiiiiip\0" - "glCompressedTexSubImage3D\0" - "glCompressedTexSubImage3DARB\0" - "glCompressedTexSubImage3DOES\0" + /* _mesa_function_pool[30628]: Translatef (offset 304) */ + "fff\0" + "glTranslatef\0" "\0" - /* _mesa_function_pool[31596]: Vertex2iv (offset 131) */ + /* _mesa_function_pool[30646]: MultTransposeMatrixd (will be remapped) */ "p\0" - "glVertex2iv\0" + "glMultTransposeMatrixd\0" + "glMultTransposeMatrixdARB\0" + "\0" + /* _mesa_function_pool[30698]: ProgramUniform4uiv (will be remapped) */ + "iiip\0" + "glProgramUniform4uiv\0" + "\0" + /* _mesa_function_pool[30725]: RenderMode (offset 196) */ + "i\0" + "glRenderMode\0" + "\0" + /* _mesa_function_pool[30741]: MultiTexCoord1fARB (offset 378) */ + "if\0" + "glMultiTexCoord1f\0" + "glMultiTexCoord1fARB\0" + "\0" + /* _mesa_function_pool[30784]: SecondaryColor3d (will be remapped) */ + "ddd\0" + "glSecondaryColor3d\0" + "glSecondaryColor3dEXT\0" "\0" - /* _mesa_function_pool[31611]: GetProgramStringNV (will be remapped) */ + /* _mesa_function_pool[30830]: VertexAttribs4ubvNV (will be remapped) */ "iip\0" - "glGetProgramStringNV\0" + "glVertexAttribs4ubvNV\0" + "\0" + /* _mesa_function_pool[30857]: WeightsvARB (dynamic) */ + "ip\0" + "glWeightsvARB\0" "\0" - /* _mesa_function_pool[31637]: VertexAttribP3uiv (will be remapped) */ + /* _mesa_function_pool[30875]: ProgramUniform4fv (will be remapped) */ "iiip\0" - "glVertexAttribP3uiv\0" + "glProgramUniform4fv\0" "\0" - /* _mesa_function_pool[31663]: LineWidth (offset 168) */ - "f\0" - "glLineWidth\0" + /* _mesa_function_pool[30901]: LightModelxv (will be remapped) */ + "ip\0" + "glLightModelxvOES\0" + "glLightModelxv\0" + "\0" + /* _mesa_function_pool[30938]: CopyTexSubImage1D (offset 325) */ + "iiiiii\0" + "glCopyTexSubImage1D\0" + "glCopyTexSubImage1DEXT\0" "\0" - /* _mesa_function_pool[31678]: GetActiveAtomicCounterBufferiv (will be remapped) */ + /* _mesa_function_pool[30989]: PushDebugGroup (will be remapped) */ "iiip\0" - "glGetActiveAtomicCounterBufferiv\0" + "glPushDebugGroup\0" "\0" - /* _mesa_function_pool[31717]: Uniform2i (will be remapped) */ + /* _mesa_function_pool[31012]: StencilFunc (offset 243) */ "iii\0" - "glUniform2i\0" - "glUniform2iARB\0" + "glStencilFunc\0" "\0" - /* _mesa_function_pool[31749]: MultiDrawElementsBaseVertex (will be remapped) */ - "ipipip\0" - "glMultiDrawElementsBaseVertex\0" + /* _mesa_function_pool[31031]: CopyPixels (offset 255) */ + "iiiii\0" + "glCopyPixels\0" "\0" - /* _mesa_function_pool[31787]: FogFuncSGIS (dynamic) */ - "ip\0" - "glFogFuncSGIS\0" + /* _mesa_function_pool[31051]: TexGenxvOES (will be remapped) */ + "iip\0" + "glTexGenxvOES\0" "\0" - /* _mesa_function_pool[31805]: GenPerfMonitorsAMD (will be remapped) */ + /* _mesa_function_pool[31070]: VertexAttrib4Nubv (will be remapped) */ "ip\0" - "glGenPerfMonitorsAMD\0" + "glVertexAttrib4Nubv\0" + "glVertexAttrib4NubvARB\0" "\0" - /* _mesa_function_pool[31830]: Binormal3svEXT (dynamic) */ + /* _mesa_function_pool[31117]: GetFogFuncSGIS (dynamic) */ "p\0" - "glBinormal3svEXT\0" - "\0" - /* _mesa_function_pool[31850]: GetBufferParameteri64v (will be remapped) */ - "iip\0" - "glGetBufferParameteri64v\0" + "glGetFogFuncSGIS\0" "\0" - /* _mesa_function_pool[31880]: TexGendv (offset 189) */ - "iip\0" - "glTexGendv\0" + /* _mesa_function_pool[31137]: VertexP2uiv (will be remapped) */ + "ip\0" + "glVertexP2uiv\0" "\0" - /* _mesa_function_pool[31896]: Uniform1fv (will be remapped) */ - "iip\0" - "glUniform1fv\0" - "glUniform1fvARB\0" + /* _mesa_function_pool[31155]: VertexAttribPointer (will be remapped) */ + "iiiiip\0" + "glVertexAttribPointer\0" + "glVertexAttribPointerARB\0" "\0" - /* _mesa_function_pool[31930]: DepthRangeIndexed (will be remapped) */ - "idd\0" - "glDepthRangeIndexed\0" + /* _mesa_function_pool[31210]: IndexMask (offset 212) */ + "i\0" + "glIndexMask\0" "\0" - /* _mesa_function_pool[31955]: LightModelx (will be remapped) */ - "ii\0" - "glLightModelxOES\0" - "glLightModelx\0" + /* _mesa_function_pool[31225]: SharpenTexFuncSGIS (dynamic) */ + "iip\0" + "glSharpenTexFuncSGIS\0" "\0" - /* _mesa_function_pool[31990]: VertexAttribI3iEXT (will be remapped) */ + /* _mesa_function_pool[31251]: VertexAttribIFormat (will be remapped) */ "iiii\0" - "glVertexAttribI3iEXT\0" - "glVertexAttribI3i\0" + "glVertexAttribIFormat\0" "\0" - /* _mesa_function_pool[32035]: EndConditionalRender (will be remapped) */ + /* _mesa_function_pool[31279]: CombinerOutputNV (dynamic) */ + "iiiiiiiiii\0" + "glCombinerOutputNV\0" "\0" - "glEndConditionalRender\0" - "glEndConditionalRenderNV\0" + /* _mesa_function_pool[31310]: DrawArraysInstancedBaseInstance (will be remapped) */ + "iiiii\0" + "glDrawArraysInstancedBaseInstance\0" "\0" - /* _mesa_function_pool[32085]: GetBufferPointerv (will be remapped) */ - "iip\0" - "glGetBufferPointerv\0" - "glGetBufferPointervARB\0" - "glGetBufferPointervOES\0" + /* _mesa_function_pool[31351]: PopAttrib (offset 218) */ "\0" - /* _mesa_function_pool[32156]: TextureLightEXT (dynamic) */ - "i\0" - "glTextureLightEXT\0" + "glPopAttrib\0" "\0" - /* _mesa_function_pool[32177]: ResetMinmax (offset 370) */ + /* _mesa_function_pool[31365]: SamplePatternSGIS (will be remapped) */ "i\0" - "glResetMinmax\0" - "glResetMinmaxEXT\0" - "\0" - /* _mesa_function_pool[32211]: SpriteParameterfSGIX (dynamic) */ - "if\0" - "glSpriteParameterfSGIX\0" + "glSamplePatternSGIS\0" + "glSamplePatternEXT\0" "\0" - /* _mesa_function_pool[32238]: EnableClientState (offset 313) */ - "i\0" - "glEnableClientState\0" + /* _mesa_function_pool[31407]: Uniform3ui (will be remapped) */ + "iiii\0" + "glUniform3uiEXT\0" + "glUniform3ui\0" "\0" - /* _mesa_function_pool[32261]: VertexAttrib4sNV (will be remapped) */ - "iiiii\0" - "glVertexAttrib4sNV\0" + /* _mesa_function_pool[31442]: DeletePerfMonitorsAMD (will be remapped) */ + "ip\0" + "glDeletePerfMonitorsAMD\0" "\0" - /* _mesa_function_pool[32287]: GetConvolutionParameterfv (offset 357) */ - "iip\0" - "glGetConvolutionParameterfv\0" - "glGetConvolutionParameterfvEXT\0" + /* _mesa_function_pool[31470]: Color4dv (offset 28) */ + "p\0" + "glColor4dv\0" "\0" - /* _mesa_function_pool[32351]: GetActiveUniformName (will be remapped) */ - "iiipp\0" - "glGetActiveUniformName\0" + /* _mesa_function_pool[31484]: AreProgramsResidentNV (will be remapped) */ + "ipp\0" + "glAreProgramsResidentNV\0" "\0" - /* _mesa_function_pool[32381]: Uniform1iv (will be remapped) */ - "iip\0" - "glUniform1iv\0" - "glUniform1ivARB\0" + /* _mesa_function_pool[31513]: DisableVertexAttribArray (will be remapped) */ + "i\0" + "glDisableVertexAttribArray\0" + "glDisableVertexAttribArrayARB\0" "\0" - /* _mesa_function_pool[32415]: MultiTexCoord4i (offset 404) */ - "iiiii\0" - "glMultiTexCoord4i\0" - "glMultiTexCoord4iARB\0" + /* _mesa_function_pool[31573]: ProgramUniformMatrix3x2fv (will be remapped) */ + "iiiip\0" + "glProgramUniformMatrix3x2fv\0" "\0" - /* _mesa_function_pool[32461]: CombinerStageParameterfvNV (dynamic) */ + /* _mesa_function_pool[31608]: GetDoublei_v (will be remapped) */ "iip\0" - "glCombinerStageParameterfvNV\0" - "\0" - /* _mesa_function_pool[32495]: ProgramNamedParameter4dNV (will be remapped) */ - "iipdddd\0" - "glProgramNamedParameter4dNV\0" + "glGetDoublei_v\0" "\0" - /* _mesa_function_pool[32532]: GetMaterialfv (offset 269) */ - "iip\0" - "glGetMaterialfv\0" + /* _mesa_function_pool[31628]: IsTransformFeedback (will be remapped) */ + "i\0" + "glIsTransformFeedback\0" "\0" - /* _mesa_function_pool[32553]: ViewportIndexedfv (will be remapped) */ + /* _mesa_function_pool[31653]: ClipPlanex (will be remapped) */ "ip\0" - "glViewportIndexedfv\0" + "glClipPlanexOES\0" + "glClipPlanex\0" "\0" - /* _mesa_function_pool[32577]: WindowPos3fv (will be remapped) */ - "p\0" - "glWindowPos3fv\0" - "glWindowPos3fvARB\0" - "glWindowPos3fvMESA\0" + /* _mesa_function_pool[31686]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */ + "iffffff\0" + "glReplacementCodeuiColor3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[32632]: SecondaryColorPointerListIBM (dynamic) */ - "iiipi\0" - "glSecondaryColorPointerListIBM\0" + /* _mesa_function_pool[31733]: GetLightfv (offset 264) */ + "iip\0" + "glGetLightfv\0" "\0" - /* _mesa_function_pool[32670]: DeleteProgramsARB (will be remapped) */ + /* _mesa_function_pool[31751]: ClipPlanef (will be remapped) */ "ip\0" - "glDeleteProgramsARB\0" - "glDeleteProgramsNV\0" + "glClipPlanefOES\0" + "glClipPlanef\0" "\0" - /* _mesa_function_pool[32713]: VDPAUSurfaceAccessNV (will be remapped) */ - "ii\0" - "glVDPAUSurfaceAccessNV\0" + /* _mesa_function_pool[31784]: ProgramUniform1ui (will be remapped) */ + "iii\0" + "glProgramUniform1ui\0" "\0" - /* _mesa_function_pool[32740]: SetFragmentShaderConstantATI (will be remapped) */ - "ip\0" - "glSetFragmentShaderConstantATI\0" + /* _mesa_function_pool[31809]: SecondaryColorPointer (will be remapped) */ + "iiip\0" + "glSecondaryColorPointer\0" + "glSecondaryColorPointerEXT\0" "\0" - /* _mesa_function_pool[32775]: Binormal3fEXT (dynamic) */ - "fff\0" - "glBinormal3fEXT\0" + /* _mesa_function_pool[31866]: Tangent3svEXT (dynamic) */ + "p\0" + "glTangent3svEXT\0" + "\0" + /* _mesa_function_pool[31885]: Tangent3iEXT (dynamic) */ + "iii\0" + "glTangent3iEXT\0" "\0" - /* _mesa_function_pool[32796]: CallList (offset 2) */ + /* _mesa_function_pool[31905]: Indexub (offset 315) */ "i\0" - "glCallList\0" + "glIndexub\0" "\0" - /* _mesa_function_pool[32810]: Materialfv (offset 170) */ - "iip\0" - "glMaterialfv\0" + /* _mesa_function_pool[31918]: FragmentLightfSGIX (dynamic) */ + "iif\0" + "glFragmentLightfSGIX\0" "\0" - /* _mesa_function_pool[32828]: TexCoord3fv (offset 113) */ - "p\0" - "glTexCoord3fv\0" + /* _mesa_function_pool[31944]: BeginFragmentShaderATI (will be remapped) */ "\0" - /* _mesa_function_pool[32845]: WeightfvARB (dynamic) */ - "ip\0" - "glWeightfvARB\0" + "glBeginFragmentShaderATI\0" "\0" - /* _mesa_function_pool[32863]: GetUniformBlockIndex (will be remapped) */ + /* _mesa_function_pool[31971]: GenRenderbuffers (will be remapped) */ "ip\0" - "glGetUniformBlockIndex\0" + "glGenRenderbuffers\0" + "glGenRenderbuffersEXT\0" + "glGenRenderbuffersOES\0" "\0" - /* _mesa_function_pool[32890]: FogCoordfvEXT (will be remapped) */ - "p\0" - "glFogCoordfv\0" - "glFogCoordfvEXT\0" + /* _mesa_function_pool[32038]: GetMinmaxParameterfv (offset 365) */ + "iip\0" + "glGetMinmaxParameterfv\0" + "glGetMinmaxParameterfvEXT\0" "\0" - /* _mesa_function_pool[32922]: DetachShader (will be remapped) */ + /* _mesa_function_pool[32092]: IsEnabledi (will be remapped) */ "ii\0" - "glDetachShader\0" - "\0" - /* _mesa_function_pool[32941]: ClearDepthf (will be remapped) */ - "f\0" - "glClearDepthf\0" - "glClearDepthfOES\0" + "glIsEnabledIndexedEXT\0" + "glIsEnabledi\0" "\0" - /* _mesa_function_pool[32975]: CopyTexSubImage2D (offset 326) */ - "iiiiiiii\0" - "glCopyTexSubImage2D\0" - "glCopyTexSubImage2DEXT\0" + /* _mesa_function_pool[32131]: FragmentMaterialivSGIX (dynamic) */ + "iip\0" + "glFragmentMaterialivSGIX\0" "\0" - /* _mesa_function_pool[33028]: SampleCoverage (will be remapped) */ - "fi\0" - "glSampleCoverage\0" - "glSampleCoverageARB\0" + /* _mesa_function_pool[32161]: WaitSync (will be remapped) */ + "iii\0" + "glWaitSync\0" "\0" - /* _mesa_function_pool[33069]: GetObjectParameterivARB (will be remapped) */ + /* _mesa_function_pool[32177]: GetVertexAttribPointerv (will be remapped) */ "iip\0" - "glGetObjectParameterivARB\0" + "glGetVertexAttribPointerv\0" + "glGetVertexAttribPointervARB\0" + "glGetVertexAttribPointervNV\0" + "\0" + /* _mesa_function_pool[32265]: NewList (dynamic) */ + "ii\0" + "glNewList\0" "\0" - /* _mesa_function_pool[33100]: Color3iv (offset 16) */ + /* _mesa_function_pool[32279]: TexBuffer (will be remapped) */ + "iii\0" + "glTexBufferARB\0" + "glTexBuffer\0" + "\0" + /* _mesa_function_pool[32311]: TexCoord4sv (offset 125) */ "p\0" - "glColor3iv\0" + "glTexCoord4sv\0" "\0" - /* _mesa_function_pool[33114]: GlobalAlphaFactorubSUN (dynamic) */ - "i\0" - "glGlobalAlphaFactorubSUN\0" + /* _mesa_function_pool[32328]: TexCoord1f (offset 96) */ + "f\0" + "glTexCoord1f\0" "\0" - /* _mesa_function_pool[33142]: VertexAttrib4ubv (will be remapped) */ - "ip\0" - "glVertexAttrib4ubv\0" - "glVertexAttrib4ubvARB\0" + /* _mesa_function_pool[32344]: TexCoord1d (offset 94) */ + "d\0" + "glTexCoord1d\0" "\0" - /* _mesa_function_pool[33187]: MultiDrawArrays (will be remapped) */ - "ippi\0" - "glMultiDrawArrays\0" - "glMultiDrawArraysEXT\0" + /* _mesa_function_pool[32360]: TexCoord1i (offset 98) */ + "i\0" + "glTexCoord1i\0" "\0" - /* _mesa_function_pool[33232]: DrawElements (offset 311) */ + /* _mesa_function_pool[32376]: GetnUniformfvARB (will be remapped) */ "iiip\0" - "glDrawElements\0" + "glGetnUniformfvARB\0" "\0" - /* _mesa_function_pool[33253]: BindVertexArrayAPPLE (will be remapped) */ + /* _mesa_function_pool[32401]: TexCoord1s (offset 100) */ "i\0" - "glBindVertexArrayAPPLE\0" + "glTexCoord1s\0" "\0" - /* _mesa_function_pool[33279]: GetProgramLocalParameterdvARB (will be remapped) */ - "iip\0" - "glGetProgramLocalParameterdvARB\0" + /* _mesa_function_pool[32417]: GlobalAlphaFactoriSUN (dynamic) */ + "i\0" + "glGlobalAlphaFactoriSUN\0" "\0" - /* _mesa_function_pool[33316]: GetHistogramParameteriv (offset 363) */ - "iip\0" - "glGetHistogramParameteriv\0" - "glGetHistogramParameterivEXT\0" + /* _mesa_function_pool[32444]: TexStorage1D (will be remapped) */ + "iiii\0" + "glTexStorage1D\0" + "\0" + /* _mesa_function_pool[32465]: BlitFramebuffer (will be remapped) */ + "iiiiiiiiii\0" + "glBlitFramebuffer\0" + "glBlitFramebufferEXT\0" + "\0" + /* _mesa_function_pool[32516]: FramebufferTexture1D (will be remapped) */ + "iiiii\0" + "glFramebufferTexture1D\0" + "glFramebufferTexture1DEXT\0" "\0" - /* _mesa_function_pool[33376]: TexGenxvOES (will be remapped) */ + /* _mesa_function_pool[32572]: GetMapiv (offset 268) */ "iip\0" - "glTexGenxvOES\0" + "glGetMapiv\0" + "\0" + /* _mesa_function_pool[32588]: TexCoordP4ui (will be remapped) */ + "ii\0" + "glTexCoordP4ui\0" "\0" - /* _mesa_function_pool[33395]: PointParameteriv (will be remapped) */ + /* _mesa_function_pool[32607]: VertexAttrib1sv (will be remapped) */ "ip\0" - "glPointParameteriv\0" - "glPointParameterivNV\0" + "glVertexAttrib1sv\0" + "glVertexAttrib1svARB\0" "\0" - /* _mesa_function_pool[33439]: UniformMatrix2x4fv (will be remapped) */ - "iiip\0" - "glUniformMatrix2x4fv\0" + /* _mesa_function_pool[32650]: WindowPos4dMESA (will be remapped) */ + "dddd\0" + "glWindowPos4dMESA\0" "\0" - /* _mesa_function_pool[33466]: SecondaryColor3d (will be remapped) */ - "ddd\0" - "glSecondaryColor3d\0" - "glSecondaryColor3dEXT\0" + /* _mesa_function_pool[32674]: Vertex3dv (offset 135) */ + "p\0" + "glVertex3dv\0" "\0" - /* _mesa_function_pool[33512]: GetConvolutionFilter (offset 356) */ + /* _mesa_function_pool[32689]: MultiTexCoordP2ui (will be remapped) */ + "iii\0" + "glMultiTexCoordP2ui\0" + "\0" + /* _mesa_function_pool[32714]: GetnMapivARB (will be remapped) */ "iiip\0" - "glGetConvolutionFilter\0" - "glGetConvolutionFilterEXT\0" + "glGetnMapivARB\0" "\0" - /* _mesa_function_pool[33567]: GetProgramivARB (will be remapped) */ + /* _mesa_function_pool[32735]: MapParameterfvNV (dynamic) */ "iip\0" - "glGetProgramivARB\0" - "\0" - /* _mesa_function_pool[33590]: FlushVertexArrayRangeNV (dynamic) */ + "glMapParameterfvNV\0" "\0" - "glFlushVertexArrayRangeNV\0" + /* _mesa_function_pool[32759]: GetVertexAttribfv (will be remapped) */ + "iip\0" + "glGetVertexAttribfv\0" + "glGetVertexAttribfvARB\0" "\0" - /* _mesa_function_pool[33618]: ScissorArrayv (will be remapped) */ + /* _mesa_function_pool[32807]: MultiTexCoordP4uiv (will be remapped) */ "iip\0" - "glScissorArrayv\0" + "glMultiTexCoordP4uiv\0" "\0" - /* _mesa_function_pool[33639]: Uniform2iv (will be remapped) */ + /* _mesa_function_pool[32833]: TexGeniv (offset 193) */ "iip\0" - "glUniform2iv\0" - "glUniform2ivARB\0" + "glTexGeniv\0" + "glTexGenivOES\0" "\0" - /* _mesa_function_pool[33673]: GetFixedv (will be remapped) */ + /* _mesa_function_pool[32863]: WeightubvARB (dynamic) */ "ip\0" - "glGetFixedvOES\0" - "glGetFixedv\0" - "\0" - /* _mesa_function_pool[33704]: BindRenderbuffer (will be remapped) */ - "ii\0" - "glBindRenderbuffer\0" - "glBindRenderbufferOES\0" + "glWeightubvARB\0" "\0" - /* _mesa_function_pool[33749]: ProgramParameters4dvNV (will be remapped) */ - "iiip\0" - "glProgramParameters4dvNV\0" + /* _mesa_function_pool[32882]: BlendColor (offset 336) */ + "ffff\0" + "glBlendColor\0" + "glBlendColorEXT\0" "\0" - /* _mesa_function_pool[33780]: TexCoord2fColor3fVertex3fvSUN (dynamic) */ - "ppp\0" - "glTexCoord2fColor3fVertex3fvSUN\0" + /* _mesa_function_pool[32917]: Materiali (offset 171) */ + "iii\0" + "glMateriali\0" "\0" - /* _mesa_function_pool[33817]: EvalPoint2 (offset 239) */ - "ii\0" - "glEvalPoint2\0" + /* _mesa_function_pool[32934]: VertexAttrib2dvNV (will be remapped) */ + "ip\0" + "glVertexAttrib2dvNV\0" "\0" - /* _mesa_function_pool[33834]: EvalPoint1 (offset 237) */ + /* _mesa_function_pool[32958]: ResetHistogram (offset 369) */ "i\0" - "glEvalPoint1\0" + "glResetHistogram\0" + "glResetHistogramEXT\0" "\0" - /* _mesa_function_pool[33850]: Binormal3dvEXT (dynamic) */ + /* _mesa_function_pool[32998]: CompressedTexSubImage2D (will be remapped) */ + "iiiiiiiip\0" + "glCompressedTexSubImage2D\0" + "glCompressedTexSubImage2DARB\0" + "\0" + /* _mesa_function_pool[33064]: TexCoord2sv (offset 109) */ "p\0" - "glBinormal3dvEXT\0" + "glTexCoord2sv\0" "\0" - /* _mesa_function_pool[33870]: PopMatrix (offset 297) */ + /* _mesa_function_pool[33081]: StencilMaskSeparate (will be remapped) */ + "ii\0" + "glStencilMaskSeparate\0" "\0" - "glPopMatrix\0" + /* _mesa_function_pool[33107]: MultiTexCoord3sv (offset 399) */ + "ip\0" + "glMultiTexCoord3sv\0" + "glMultiTexCoord3svARB\0" "\0" - /* _mesa_function_pool[33884]: FinishFenceNV (dynamic) */ - "i\0" - "glFinishFenceNV\0" + /* _mesa_function_pool[33152]: GetMapParameterfvNV (dynamic) */ + "iip\0" + "glGetMapParameterfvNV\0" "\0" - /* _mesa_function_pool[33903]: GetFogFuncSGIS (dynamic) */ + /* _mesa_function_pool[33179]: TexCoord3iv (offset 115) */ "p\0" - "glGetFogFuncSGIS\0" + "glTexCoord3iv\0" "\0" - /* _mesa_function_pool[33923]: DeleteFramebuffers (will be remapped) */ + /* _mesa_function_pool[33196]: MultiTexCoord4sv (offset 407) */ "ip\0" - "glDeleteFramebuffers\0" - "glDeleteFramebuffersEXT\0" - "glDeleteFramebuffersOES\0" - "\0" - /* _mesa_function_pool[33996]: DispatchCompute (will be remapped) */ - "iii\0" - "glDispatchCompute\0" - "\0" - /* _mesa_function_pool[34019]: SecondaryColor3fEXT (will be remapped) */ - "fff\0" - "glSecondaryColor3f\0" - "glSecondaryColor3fEXT\0" - "\0" - /* _mesa_function_pool[34065]: GetTexGeniv (offset 280) */ - "iip\0" - "glGetTexGeniv\0" - "glGetTexGenivOES\0" - "\0" - /* _mesa_function_pool[34101]: CombinerInputNV (dynamic) */ - "iiiiii\0" - "glCombinerInputNV\0" + "glMultiTexCoord4sv\0" + "glMultiTexCoord4svARB\0" "\0" - /* _mesa_function_pool[34127]: VertexBindingDivisor (will be remapped) */ + /* _mesa_function_pool[33241]: VertexBindingDivisor (will be remapped) */ "ii\0" "glVertexBindingDivisor\0" "\0" - /* _mesa_function_pool[34154]: FramebufferRenderbuffer (will be remapped) */ - "iiii\0" - "glFramebufferRenderbuffer\0" - "glFramebufferRenderbufferEXT\0" - "glFramebufferRenderbufferOES\0" + /* _mesa_function_pool[33268]: GetPerfMonitorCounterInfoAMD (will be remapped) */ + "iiip\0" + "glGetPerfMonitorCounterInfoAMD\0" "\0" - /* _mesa_function_pool[34244]: IsProgramARB (will be remapped) */ - "i\0" - "glIsProgramARB\0" - "glIsProgramNV\0" + /* _mesa_function_pool[33305]: UniformBlockBinding (will be remapped) */ + "iii\0" + "glUniformBlockBinding\0" "\0" - /* _mesa_function_pool[34276]: VertexAttrib4uiv (will be remapped) */ - "ip\0" - "glVertexAttrib4uiv\0" - "glVertexAttrib4uivARB\0" + /* _mesa_function_pool[33332]: FenceSync (will be remapped) */ + "ii\0" + "glFenceSync\0" "\0" - /* _mesa_function_pool[34321]: VertexAttrib4Nsv (will be remapped) */ + /* _mesa_function_pool[33348]: VertexAttrib4Nusv (will be remapped) */ "ip\0" - "glVertexAttrib4Nsv\0" - "glVertexAttrib4NsvARB\0" + "glVertexAttrib4Nusv\0" + "glVertexAttrib4NusvARB\0" "\0" - /* _mesa_function_pool[34366]: Map2d (offset 222) */ - "iddiiddiip\0" - "glMap2d\0" + /* _mesa_function_pool[33395]: SetFragmentShaderConstantATI (will be remapped) */ + "ip\0" + "glSetFragmentShaderConstantATI\0" "\0" - /* _mesa_function_pool[34386]: Map2f (offset 223) */ - "iffiiffiip\0" - "glMap2f\0" + /* _mesa_function_pool[33430]: VertexP2ui (will be remapped) */ + "ii\0" + "glVertexP2ui\0" "\0" - /* _mesa_function_pool[34406]: ProgramStringARB (will be remapped) */ - "iiip\0" - "glProgramStringARB\0" + /* _mesa_function_pool[33447]: GetTexEnvfv (offset 276) */ + "iip\0" + "glGetTexEnvfv\0" "\0" - /* _mesa_function_pool[34431]: MultiTexCoord4x (will be remapped) */ - "iiiii\0" - "glMultiTexCoord4xOES\0" - "glMultiTexCoord4x\0" + /* _mesa_function_pool[33466]: BindAttribLocation (will be remapped) */ + "iip\0" + "glBindAttribLocation\0" + "glBindAttribLocationARB\0" "\0" - /* _mesa_function_pool[34477]: Vertex4s (offset 148) */ - "iiii\0" - "glVertex4s\0" + /* _mesa_function_pool[33516]: TextureStorage2DEXT (will be remapped) */ + "iiiiii\0" + "glTextureStorage2DEXT\0" "\0" - /* _mesa_function_pool[34494]: TexCoord4fVertex4fvSUN (dynamic) */ - "pp\0" - "glTexCoord4fVertex4fvSUN\0" + /* _mesa_function_pool[33546]: FragmentLightiSGIX (dynamic) */ + "iii\0" + "glFragmentLightiSGIX\0" "\0" - /* _mesa_function_pool[34523]: UnmapBuffer (will be remapped) */ - "i\0" - "glUnmapBuffer\0" - "glUnmapBufferARB\0" - "glUnmapBufferOES\0" + /* _mesa_function_pool[33572]: DrawTransformFeedbackInstanced (will be remapped) */ + "iii\0" + "glDrawTransformFeedbackInstanced\0" "\0" - /* _mesa_function_pool[34574]: MultiTexCoord4s (offset 406) */ - "iiiii\0" - "glMultiTexCoord4s\0" - "glMultiTexCoord4sARB\0" + /* _mesa_function_pool[33610]: PollAsyncSGIX (dynamic) */ + "p\0" + "glPollAsyncSGIX\0" "\0" - /* _mesa_function_pool[34620]: VertexAttribI2iEXT (will be remapped) */ - "iii\0" - "glVertexAttribI2iEXT\0" - "glVertexAttribI2i\0" + /* _mesa_function_pool[33629]: ResumeTransformFeedback (will be remapped) */ "\0" - /* _mesa_function_pool[34664]: Vertex4f (offset 144) */ - "ffff\0" - "glVertex4f\0" + "glResumeTransformFeedback\0" "\0" - /* _mesa_function_pool[34681]: EvalCoord1d (offset 228) */ - "d\0" - "glEvalCoord1d\0" + /* _mesa_function_pool[33657]: GetProgramNamedParameterdvNV (will be remapped) */ + "iipp\0" + "glGetProgramNamedParameterdvNV\0" "\0" - /* _mesa_function_pool[34698]: Vertex4d (offset 142) */ - "dddd\0" - "glVertex4d\0" + /* _mesa_function_pool[33694]: VertexAttribI1iv (will be remapped) */ + "ip\0" + "glVertexAttribI1ivEXT\0" + "glVertexAttribI1iv\0" "\0" - /* _mesa_function_pool[34715]: RasterPos4dv (offset 79) */ + /* _mesa_function_pool[33739]: Vertex2dv (offset 127) */ "p\0" - "glRasterPos4dv\0" - "\0" - /* _mesa_function_pool[34733]: GetGraphicsResetStatusARB (will be remapped) */ + "glVertex2dv\0" "\0" - "glGetGraphicsResetStatusARB\0" + /* _mesa_function_pool[33754]: VertexAttribI2uivEXT (will be remapped) */ + "ip\0" + "glVertexAttribI2uivEXT\0" + "glVertexAttribI2uiv\0" "\0" - /* _mesa_function_pool[34763]: UseShaderProgramEXT (will be remapped) */ + /* _mesa_function_pool[33801]: SampleMaski (will be remapped) */ "ii\0" - "glUseShaderProgramEXT\0" + "glSampleMaski\0" "\0" - /* _mesa_function_pool[34789]: VertexAttribP2uiv (will be remapped) */ - "iiip\0" - "glVertexAttribP2uiv\0" + /* _mesa_function_pool[33819]: GetFloati_v (will be remapped) */ + "iip\0" + "glGetFloati_v\0" "\0" - /* _mesa_function_pool[34815]: VertexAttrib4bv (will be remapped) */ + /* _mesa_function_pool[33838]: MultiTexCoord2iv (offset 389) */ "ip\0" - "glVertexAttrib4bv\0" - "glVertexAttrib4bvARB\0" + "glMultiTexCoord2iv\0" + "glMultiTexCoord2ivARB\0" "\0" - /* _mesa_function_pool[34858]: DebugMessageControl (will be remapped) */ - "iiiipi\0" - "glDebugMessageControl\0" + /* _mesa_function_pool[33883]: DrawPixels (offset 257) */ + "iiiip\0" + "glDrawPixels\0" "\0" - /* _mesa_function_pool[34888]: GetTexGenfv (offset 279) */ - "iip\0" - "glGetTexGenfv\0" - "glGetTexGenfvOES\0" + /* _mesa_function_pool[33903]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */ + "iffffffff\0" + "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[34924]: MultiTexCoord4d (offset 400) */ - "idddd\0" - "glMultiTexCoord4d\0" - "glMultiTexCoord4dARB\0" + /* _mesa_function_pool[33963]: DrawTransformFeedback (will be remapped) */ + "ii\0" + "glDrawTransformFeedback\0" "\0" - /* _mesa_function_pool[34970]: Vertex4i (offset 146) */ - "iiii\0" - "glVertex4i\0" + /* _mesa_function_pool[33991]: VertexAttribs3fvNV (will be remapped) */ + "iip\0" + "glVertexAttribs3fvNV\0" "\0" - /* _mesa_function_pool[34987]: VertexWeightPointerEXT (dynamic) */ - "iiip\0" - "glVertexWeightPointerEXT\0" + /* _mesa_function_pool[34017]: GenLists (offset 5) */ + "i\0" + "glGenLists\0" "\0" - /* _mesa_function_pool[35018]: GetHistogram (offset 361) */ - "iiiip\0" - "glGetHistogram\0" - "glGetHistogramEXT\0" + /* _mesa_function_pool[34031]: MapGrid2d (offset 226) */ + "iddidd\0" + "glMapGrid2d\0" "\0" - /* _mesa_function_pool[35058]: ActiveStencilFaceEXT (will be remapped) */ - "i\0" - "glActiveStencilFaceEXT\0" + /* _mesa_function_pool[34051]: MapGrid2f (offset 227) */ + "iffiff\0" + "glMapGrid2f\0" "\0" - /* _mesa_function_pool[35084]: Translatex (will be remapped) */ + /* _mesa_function_pool[34071]: SampleMapATI (will be remapped) */ "iii\0" - "glTranslatexOES\0" - "glTranslatex\0" + "glSampleMapATI\0" "\0" - /* _mesa_function_pool[35118]: StencilFuncSeparateATI (will be remapped) */ - "iiii\0" - "glStencilFuncSeparateATI\0" + /* _mesa_function_pool[34091]: TexBumpParameterfvATI (will be remapped) */ + "ip\0" + "glTexBumpParameterfvATI\0" "\0" - /* _mesa_function_pool[35149]: Materialf (offset 169) */ - "iif\0" - "glMaterialf\0" + /* _mesa_function_pool[34119]: GetActiveAttrib (will be remapped) */ + "iiipppp\0" + "glGetActiveAttrib\0" + "glGetActiveAttribARB\0" "\0" - /* _mesa_function_pool[35166]: GetnMapfvARB (will be remapped) */ - "iiip\0" - "glGetnMapfvARB\0" + /* _mesa_function_pool[34167]: TexCoord2fColor4ubVertex3fvSUN (dynamic) */ + "ppp\0" + "glTexCoord2fColor4ubVertex3fvSUN\0" + "\0" + /* _mesa_function_pool[34205]: PixelMapfv (offset 251) */ + "iip\0" + "glPixelMapfv\0" + "\0" + /* _mesa_function_pool[34223]: ClearBufferData (will be remapped) */ + "iiiip\0" + "glClearBufferData\0" + "\0" + /* _mesa_function_pool[34248]: Color3usv (offset 24) */ + "p\0" + "glColor3usv\0" + "\0" + /* _mesa_function_pool[34263]: StencilOpSeparate (will be remapped) */ + "iiii\0" + "glStencilOpSeparate\0" + "glStencilOpSeparateATI\0" "\0" - /* _mesa_function_pool[35187]: IglooInterfaceSGIX (dynamic) */ + /* _mesa_function_pool[34312]: GenSamplers (will be remapped) */ "ip\0" - "glIglooInterfaceSGIX\0" + "glGenSamplers\0" "\0" - /* _mesa_function_pool[35212]: Materiali (offset 171) */ - "iii\0" - "glMateriali\0" + /* _mesa_function_pool[34330]: DrawTexfOES (will be remapped) */ + "fffff\0" + "glDrawTexfOES\0" "\0" - /* _mesa_function_pool[35229]: VertexAttrib4dNV (will be remapped) */ - "idddd\0" - "glVertexAttrib4dNV\0" + /* _mesa_function_pool[34351]: AttachObjectARB (will be remapped) */ + "ii\0" + "glAttachObjectARB\0" "\0" - /* _mesa_function_pool[35255]: MultiModeDrawElementsIBM (will be remapped) */ - "ppipii\0" - "glMultiModeDrawElementsIBM\0" + /* _mesa_function_pool[34373]: GetFragmentLightivSGIX (dynamic) */ + "iip\0" + "glGetFragmentLightivSGIX\0" "\0" - /* _mesa_function_pool[35290]: Indexsv (offset 51) */ - "p\0" - "glIndexsv\0" + /* _mesa_function_pool[34403]: Accum (offset 213) */ + "if\0" + "glAccum\0" "\0" - /* _mesa_function_pool[35303]: VertexAttrib1fvARB (will be remapped) */ - "ip\0" - "glVertexAttrib1fv\0" - "glVertexAttrib1fvARB\0" + /* _mesa_function_pool[34415]: GetTexImage (offset 281) */ + "iiiip\0" + "glGetTexImage\0" "\0" - /* _mesa_function_pool[35346]: LightModelfv (offset 164) */ - "ip\0" - "glLightModelfv\0" + /* _mesa_function_pool[34436]: Color4x (will be remapped) */ + "iiii\0" + "glColor4xOES\0" + "glColor4x\0" "\0" - /* _mesa_function_pool[35365]: TexCoord2dv (offset 103) */ - "p\0" - "glTexCoord2dv\0" + /* _mesa_function_pool[34465]: ConvolutionParameteriv (offset 353) */ + "iip\0" + "glConvolutionParameteriv\0" + "glConvolutionParameterivEXT\0" "\0" - /* _mesa_function_pool[35382]: ProgramParameters4fvNV (will be remapped) */ - "iiip\0" - "glProgramParameters4fvNV\0" + /* _mesa_function_pool[34523]: Color4s (offset 33) */ + "iiii\0" + "glColor4s\0" "\0" - /* _mesa_function_pool[35413]: EvalCoord1dv (offset 229) */ - "p\0" - "glEvalCoord1dv\0" + /* _mesa_function_pool[34539]: CullParameterdvEXT (dynamic) */ + "ip\0" + "glCullParameterdvEXT\0" "\0" - /* _mesa_function_pool[35431]: ReplacementCodeuiVertex3fSUN (dynamic) */ - "ifff\0" - "glReplacementCodeuiVertex3fSUN\0" + /* _mesa_function_pool[34564]: GetUniformuiv (will be remapped) */ + "iip\0" + "glGetUniformuivEXT\0" + "glGetUniformuiv\0" "\0" - /* _mesa_function_pool[35468]: MapBufferRange (will be remapped) */ + /* _mesa_function_pool[34604]: Color4i (offset 31) */ "iiii\0" - "glMapBufferRange\0" - "glMapBufferRangeEXT\0" + "glColor4i\0" "\0" - /* _mesa_function_pool[35511]: Translated (offset 303) */ - "ddd\0" - "glTranslated\0" + /* _mesa_function_pool[34620]: Color4f (offset 29) */ + "ffff\0" + "glColor4f\0" "\0" - /* _mesa_function_pool[35529]: Translatef (offset 304) */ - "fff\0" - "glTranslatef\0" + /* _mesa_function_pool[34636]: Color4d (offset 27) */ + "dddd\0" + "glColor4d\0" "\0" - /* _mesa_function_pool[35547]: StencilMask (offset 209) */ - "i\0" - "glStencilMask\0" + /* _mesa_function_pool[34652]: Color4b (offset 25) */ + "iiii\0" + "glColor4b\0" "\0" - /* _mesa_function_pool[35564]: MinSampleShading (will be remapped) */ - "f\0" - "glMinSampleShadingARB\0" - "glMinSampleShading\0" + /* _mesa_function_pool[34668]: LoadProgramNV (will be remapped) */ + "iiip\0" + "glLoadProgramNV\0" "\0" - /* _mesa_function_pool[35608]: MultTransposeMatrixd (will be remapped) */ - "p\0" - "glMultTransposeMatrixd\0" - "glMultTransposeMatrixdARB\0" + /* _mesa_function_pool[34690]: GetAttachedObjectsARB (will be remapped) */ + "iipp\0" + "glGetAttachedObjectsARB\0" "\0" - /* _mesa_function_pool[35660]: MultTransposeMatrixf (will be remapped) */ + /* _mesa_function_pool[34720]: EvalCoord1fv (offset 231) */ "p\0" - "glMultTransposeMatrixf\0" - "glMultTransposeMatrixfARB\0" + "glEvalCoord1fv\0" "\0" - /* _mesa_function_pool[35712]: GetLightiv (offset 265) */ - "iip\0" - "glGetLightiv\0" + /* _mesa_function_pool[34738]: VertexAttribLFormat (will be remapped) */ + "iiii\0" + "glVertexAttribLFormat\0" "\0" - /* _mesa_function_pool[35730]: DrawElementsInstancedBaseInstance (will be remapped) */ - "iiipii\0" - "glDrawElementsInstancedBaseInstance\0" + /* _mesa_function_pool[34766]: StencilFuncSeparate (will be remapped) */ + "iiii\0" + "glStencilFuncSeparate\0" "\0" - /* _mesa_function_pool[35774]: IsList (offset 287) */ - "i\0" - "glIsList\0" + /* _mesa_function_pool[34794]: ShaderSource (will be remapped) */ + "iipp\0" + "glShaderSource\0" + "glShaderSourceARB\0" "\0" - /* _mesa_function_pool[35786]: PointSizex (will be remapped) */ - "i\0" - "glPointSizexOES\0" - "glPointSizex\0" + /* _mesa_function_pool[34833]: Normal3fv (offset 57) */ + "p\0" + "glNormal3fv\0" "\0" - /* _mesa_function_pool[35818]: GetnPixelMapusvARB (will be remapped) */ + /* _mesa_function_pool[34848]: ImageTransformParameterfvHP (dynamic) */ "iip\0" - "glGetnPixelMapusvARB\0" + "glImageTransformParameterfvHP\0" "\0" - /* _mesa_function_pool[35844]: IsSync (will be remapped) */ - "i\0" - "glIsSync\0" + /* _mesa_function_pool[34883]: NormalP3ui (will be remapped) */ + "ii\0" + "glNormalP3ui\0" "\0" - /* _mesa_function_pool[35856]: RenderMode (offset 196) */ - "i\0" - "glRenderMode\0" + /* _mesa_function_pool[34900]: MultiTexCoord3fvARB (offset 395) */ + "ip\0" + "glMultiTexCoord3fv\0" + "glMultiTexCoord3fvARB\0" "\0" - /* _mesa_function_pool[35872]: PrimitiveRestartIndex (will be remapped) */ - "i\0" - "glPrimitiveRestartIndex\0" - "glPrimitiveRestartIndexNV\0" + /* _mesa_function_pool[34945]: GetProgramParameterfvNV (will be remapped) */ + "iiip\0" + "glGetProgramParameterfvNV\0" "\0" - /* _mesa_function_pool[35925]: GetMapControlPointsNV (dynamic) */ - "iiiiiip\0" - "glGetMapControlPointsNV\0" + /* _mesa_function_pool[34977]: BufferData (will be remapped) */ + "iipi\0" + "glBufferData\0" + "glBufferDataARB\0" + "\0" + /* _mesa_function_pool[35012]: TexSubImage2D (offset 333) */ + "iiiiiiiip\0" + "glTexSubImage2D\0" + "glTexSubImage2DEXT\0" "\0" - /* _mesa_function_pool[35958]: ClearBufferiv (will be remapped) */ + /* _mesa_function_pool[35058]: FragmentLightivSGIX (dynamic) */ "iip\0" - "glClearBufferiv\0" + "glFragmentLightivSGIX\0" "\0" - /* _mesa_function_pool[35979]: ProgramLocalParameter4fARB (will be remapped) */ - "iiffff\0" - "glProgramLocalParameter4fARB\0" + /* _mesa_function_pool[35085]: GetTexParameterPointervAPPLE (dynamic) */ + "iip\0" + "glGetTexParameterPointervAPPLE\0" + "\0" + /* _mesa_function_pool[35121]: TexGenfv (offset 191) */ + "iip\0" + "glTexGenfv\0" + "glTexGenfvOES\0" "\0" - /* _mesa_function_pool[36016]: SpriteParameterivSGIX (dynamic) */ + /* _mesa_function_pool[35151]: GetVertexAttribiv (will be remapped) */ + "iip\0" + "glGetVertexAttribiv\0" + "glGetVertexAttribivARB\0" + "\0" + /* _mesa_function_pool[35199]: TexCoordP2uiv (will be remapped) */ "ip\0" - "glSpriteParameterivSGIX\0" + "glTexCoordP2uiv\0" "\0" - /* _mesa_function_pool[36044]: MultiTexCoord1fARB (offset 378) */ - "if\0" - "glMultiTexCoord1f\0" - "glMultiTexCoord1fARB\0" + /* _mesa_function_pool[35219]: ReplacementCodeuiColor3fVertex3fvSUN (dynamic) */ + "ppp\0" + "glReplacementCodeuiColor3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[36087]: LoadName (offset 198) */ + /* _mesa_function_pool[35263]: Uniform3fv (will be remapped) */ + "iip\0" + "glUniform3fv\0" + "glUniform3fvARB\0" + "\0" + /* _mesa_function_pool[35297]: BlendEquation (offset 337) */ "i\0" - "glLoadName\0" + "glBlendEquation\0" + "glBlendEquationEXT\0" + "glBlendEquationOES\0" "\0" - /* _mesa_function_pool[36101]: GetInternalformativ (will be remapped) */ - "iiiip\0" - "glGetInternalformativ\0" + /* _mesa_function_pool[35354]: VertexAttrib3dNV (will be remapped) */ + "iddd\0" + "glVertexAttrib3dNV\0" "\0" - /* _mesa_function_pool[36130]: VertexAttribs4ubvNV (will be remapped) */ - "iip\0" - "glVertexAttribs4ubvNV\0" + /* _mesa_function_pool[35379]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ + "ppppp\0" + "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[36157]: Frustumf (will be remapped) */ - "ffffff\0" - "glFrustumfOES\0" - "glFrustumf\0" + /* _mesa_function_pool[35443]: IndexFuncEXT (dynamic) */ + "if\0" + "glIndexFuncEXT\0" "\0" - /* _mesa_function_pool[36190]: WeightsvARB (dynamic) */ - "ip\0" - "glWeightsvARB\0" + /* _mesa_function_pool[35462]: UseShaderProgramEXT (will be remapped) */ + "ii\0" + "glUseShaderProgramEXT\0" "\0" - /* _mesa_function_pool[36208]: GetIntegeri_v (will be remapped) */ - "iip\0" - "glGetIntegerIndexedvEXT\0" - "glGetIntegeri_v\0" + /* _mesa_function_pool[35488]: PushName (offset 201) */ + "i\0" + "glPushName\0" "\0" - /* _mesa_function_pool[36253]: LightModelxv (will be remapped) */ + /* _mesa_function_pool[35502]: GenFencesNV (dynamic) */ "ip\0" - "glLightModelxvOES\0" - "glLightModelxv\0" + "glGenFencesNV\0" "\0" - /* _mesa_function_pool[36290]: IsTransformFeedback (will be remapped) */ - "i\0" - "glIsTransformFeedback\0" + /* _mesa_function_pool[35520]: CullParameterfvEXT (dynamic) */ + "ip\0" + "glCullParameterfvEXT\0" "\0" - /* _mesa_function_pool[36315]: CopyTexSubImage1D (offset 325) */ - "iiiiii\0" - "glCopyTexSubImage1D\0" - "glCopyTexSubImage1DEXT\0" + /* _mesa_function_pool[35545]: DeleteRenderbuffers (will be remapped) */ + "ip\0" + "glDeleteRenderbuffers\0" + "glDeleteRenderbuffersEXT\0" + "glDeleteRenderbuffersOES\0" "\0" - /* _mesa_function_pool[36366]: ReplacementCodeuiColor3fVertex3fvSUN (dynamic) */ - "ppp\0" - "glReplacementCodeuiColor3fVertex3fvSUN\0" + /* _mesa_function_pool[35621]: VertexAttrib1dv (will be remapped) */ + "ip\0" + "glVertexAttrib1dv\0" + "glVertexAttrib1dvARB\0" "\0" - /* _mesa_function_pool[36410]: CullFace (offset 152) */ + /* _mesa_function_pool[35664]: ImageTransformParameteriHP (dynamic) */ + "iii\0" + "glImageTransformParameteriHP\0" + "\0" + /* _mesa_function_pool[35698]: IsShader (will be remapped) */ "i\0" - "glCullFace\0" + "glIsShader\0" + "\0" + /* _mesa_function_pool[35712]: Rotated (offset 299) */ + "dddd\0" + "glRotated\0" + "\0" + /* _mesa_function_pool[35728]: Color4iv (offset 32) */ + "p\0" + "glColor4iv\0" "\0" - /* _mesa_function_pool[36424]: BindTexture (offset 307) */ + /* _mesa_function_pool[35742]: Disablei (will be remapped) */ "ii\0" - "glBindTexture\0" - "glBindTextureEXT\0" + "glDisableIndexedEXT\0" + "glDisablei\0" + "\0" + /* _mesa_function_pool[35777]: Rotatex (will be remapped) */ + "iiii\0" + "glRotatexOES\0" + "glRotatex\0" + "\0" + /* _mesa_function_pool[35806]: FramebufferTextureLayer (will be remapped) */ + "iiiii\0" + "glFramebufferTextureLayer\0" + "glFramebufferTextureLayerARB\0" + "glFramebufferTextureLayerEXT\0" "\0" - /* _mesa_function_pool[36459]: VertexAttribs2fvNV (will be remapped) */ + /* _mesa_function_pool[35897]: TexEnvfv (offset 185) */ "iip\0" - "glVertexAttribs2fvNV\0" + "glTexEnvfv\0" "\0" - /* _mesa_function_pool[36485]: MultiTexCoord4fARB (offset 402) */ - "iffff\0" - "glMultiTexCoord4f\0" - "glMultiTexCoord4fARB\0" + /* _mesa_function_pool[35913]: ProgramUniformMatrix3fv (will be remapped) */ + "iiiip\0" + "glProgramUniformMatrix3fv\0" "\0" - /* _mesa_function_pool[36531]: ResumeTransformFeedback (will be remapped) */ + /* _mesa_function_pool[35946]: LoadMatrixf (offset 291) */ + "p\0" + "glLoadMatrixf\0" "\0" - "glResumeTransformFeedback\0" + /* _mesa_function_pool[35963]: GetProgramLocalParameterfvARB (will be remapped) */ + "iip\0" + "glGetProgramLocalParameterfvARB\0" "\0" - /* _mesa_function_pool[36559]: PushDebugGroup (will be remapped) */ - "iiip\0" - "glPushDebugGroup\0" + /* _mesa_function_pool[36000]: LoadMatrixx (will be remapped) */ + "p\0" + "glLoadMatrixxOES\0" + "glLoadMatrixx\0" "\0" - /* _mesa_function_pool[36582]: DrawMeshArraysSUN (dynamic) */ - "iiii\0" - "glDrawMeshArraysSUN\0" + /* _mesa_function_pool[36034]: DrawRangeElementsBaseVertex (will be remapped) */ + "iiiiipi\0" + "glDrawRangeElementsBaseVertex\0" "\0" - /* _mesa_function_pool[36608]: SecondaryColor3i (will be remapped) */ - "iii\0" - "glSecondaryColor3i\0" - "glSecondaryColor3iEXT\0" + /* _mesa_function_pool[36073]: MatrixIndexuivARB (dynamic) */ + "ip\0" + "glMatrixIndexuivARB\0" "\0" - /* _mesa_function_pool[36654]: StencilFunc (offset 243) */ + /* _mesa_function_pool[36097]: Tangent3sEXT (dynamic) */ "iii\0" - "glStencilFunc\0" + "glTangent3sEXT\0" "\0" - /* _mesa_function_pool[36673]: CopyPixels (offset 255) */ - "iiiii\0" - "glCopyPixels\0" + /* _mesa_function_pool[36117]: SecondaryColor3bv (will be remapped) */ + "p\0" + "glSecondaryColor3bv\0" + "glSecondaryColor3bvEXT\0" "\0" - /* _mesa_function_pool[36693]: Rectsv (offset 93) */ - "pp\0" - "glRectsv\0" + /* _mesa_function_pool[36163]: GlobalAlphaFactorusSUN (dynamic) */ + "i\0" + "glGlobalAlphaFactorusSUN\0" "\0" - /* _mesa_function_pool[36706]: WindowPos3iv (will be remapped) */ + /* _mesa_function_pool[36191]: GetCombinerOutputParameterivNV (dynamic) */ + "iiip\0" + "glGetCombinerOutputParameterivNV\0" + "\0" + /* _mesa_function_pool[36230]: DrawTexxvOES (will be remapped) */ "p\0" - "glWindowPos3iv\0" - "glWindowPos3ivARB\0" - "glWindowPos3ivMESA\0" + "glDrawTexxvOES\0" + "\0" + /* _mesa_function_pool[36248]: TexParameterfv (offset 179) */ + "iip\0" + "glTexParameterfv\0" "\0" - /* _mesa_function_pool[36761]: ReplacementCodeuivSUN (dynamic) */ + /* _mesa_function_pool[36270]: Color4ubv (offset 36) */ "p\0" - "glReplacementCodeuivSUN\0" + "glColor4ubv\0" "\0" - /* _mesa_function_pool[36788]: DrawElementsBaseVertex (will be remapped) */ - "iiipi\0" - "glDrawElementsBaseVertex\0" + /* _mesa_function_pool[36285]: TexCoord2fv (offset 105) */ + "p\0" + "glTexCoord2fv\0" "\0" - /* _mesa_function_pool[36820]: CopyConvolutionFilter2D (offset 355) */ - "iiiiii\0" - "glCopyConvolutionFilter2D\0" - "glCopyConvolutionFilter2DEXT\0" + /* _mesa_function_pool[36302]: FogCoorddv (will be remapped) */ + "p\0" + "glFogCoorddv\0" + "glFogCoorddvEXT\0" "\0" - /* _mesa_function_pool[36883]: ApplyTextureEXT (dynamic) */ + /* _mesa_function_pool[36334]: VDPAUUnregisterSurfaceNV (will be remapped) */ "i\0" - "glApplyTextureEXT\0" + "glVDPAUUnregisterSurfaceNV\0" "\0" - /* _mesa_function_pool[36904]: CopyBufferSubData (will be remapped) */ - "iiiii\0" - "glCopyBufferSubData\0" + /* _mesa_function_pool[36364]: ColorP3ui (will be remapped) */ + "ii\0" + "glColorP3ui\0" "\0" - /* _mesa_function_pool[36931]: NormalPointer (offset 318) */ + /* _mesa_function_pool[36380]: ClearBufferuiv (will be remapped) */ "iip\0" - "glNormalPointer\0" + "glClearBufferuiv\0" + "\0" + /* _mesa_function_pool[36402]: GetShaderPrecisionFormat (will be remapped) */ + "iipp\0" + "glGetShaderPrecisionFormat\0" + "\0" + /* _mesa_function_pool[36435]: ProgramNamedParameter4dvNV (will be remapped) */ + "iipp\0" + "glProgramNamedParameter4dvNV\0" + "\0" + /* _mesa_function_pool[36470]: Flush (offset 217) */ + "\0" + "glFlush\0" "\0" - /* _mesa_function_pool[36952]: TexParameterfv (offset 179) */ + /* _mesa_function_pool[36480]: VertexAttribI4iEXT (will be remapped) */ + "iiiii\0" + "glVertexAttribI4iEXT\0" + "glVertexAttribI4i\0" + "\0" + /* _mesa_function_pool[36526]: FogCoordd (will be remapped) */ + "d\0" + "glFogCoordd\0" + "glFogCoorddEXT\0" + "\0" + /* _mesa_function_pool[36556]: Uniform3iv (will be remapped) */ "iip\0" - "glTexParameterfv\0" + "glUniform3iv\0" + "glUniform3ivARB\0" "\0" - /* _mesa_function_pool[36974]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */ - "ppp\0" - "glReplacementCodeuiNormal3fVertex3fvSUN\0" + /* _mesa_function_pool[36590]: TexStorage2DMultisample (will be remapped) */ + "iiiiii\0" + "glTexStorage2DMultisample\0" "\0" - /* _mesa_function_pool[37019]: GetCombinerOutputParameterfvNV (dynamic) */ - "iiip\0" - "glGetCombinerOutputParameterfvNV\0" + /* _mesa_function_pool[36624]: UnlockArraysEXT (will be remapped) */ "\0" - /* _mesa_function_pool[37058]: WindowPos4iMESA (will be remapped) */ - "iiii\0" - "glWindowPos4iMESA\0" + "glUnlockArraysEXT\0" "\0" - /* _mesa_function_pool[37082]: VertexAttrib4Nubv (will be remapped) */ + /* _mesa_function_pool[36644]: VertexAttrib1svNV (will be remapped) */ "ip\0" - "glVertexAttrib4Nubv\0" - "glVertexAttrib4NubvARB\0" - "\0" - /* _mesa_function_pool[37129]: SecondaryColor3ui (will be remapped) */ - "iii\0" - "glSecondaryColor3ui\0" - "glSecondaryColor3uiEXT\0" + "glVertexAttrib1svNV\0" "\0" - /* _mesa_function_pool[37177]: VertexAttribI3uivEXT (will be remapped) */ + /* _mesa_function_pool[36668]: VertexAttrib4iv (will be remapped) */ "ip\0" - "glVertexAttribI3uivEXT\0" - "glVertexAttribI3uiv\0" + "glVertexAttrib4iv\0" + "glVertexAttrib4ivARB\0" "\0" - /* _mesa_function_pool[37224]: UniformMatrix3x4fv (will be remapped) */ - "iiip\0" - "glUniformMatrix3x4fv\0" + /* _mesa_function_pool[36711]: CopyTexSubImage3D (offset 373) */ + "iiiiiiiii\0" + "glCopyTexSubImage3D\0" + "glCopyTexSubImage3DEXT\0" + "glCopyTexSubImage3DOES\0" "\0" - /* _mesa_function_pool[37251]: ClipPlane (offset 150) */ + /* _mesa_function_pool[36788]: GetInteger64v (will be remapped) */ "ip\0" - "glClipPlane\0" + "glGetInteger64v\0" "\0" - /* _mesa_function_pool[37267]: Recti (offset 90) */ - "iiii\0" - "glRecti\0" + /* _mesa_function_pool[36808]: DetachObjectARB (will be remapped) */ + "ii\0" + "glDetachObjectARB\0" "\0" - /* _mesa_function_pool[37281]: VertexAttribI3ivEXT (will be remapped) */ - "ip\0" - "glVertexAttribI3ivEXT\0" - "glVertexAttribI3iv\0" + /* _mesa_function_pool[36830]: Indexiv (offset 49) */ + "p\0" + "glIndexiv\0" "\0" - /* _mesa_function_pool[37326]: DrawRangeElementsBaseVertex (will be remapped) */ - "iiiiipi\0" - "glDrawRangeElementsBaseVertex\0" + /* _mesa_function_pool[36843]: TexEnvi (offset 186) */ + "iii\0" + "glTexEnvi\0" "\0" - /* _mesa_function_pool[37365]: VertexAttribIPointer (will be remapped) */ - "iiiip\0" - "glVertexAttribIPointerEXT\0" - "glVertexAttribIPointer\0" + /* _mesa_function_pool[36858]: TexEnvf (offset 184) */ + "iif\0" + "glTexEnvf\0" "\0" - /* _mesa_function_pool[37421]: SecondaryColor3usv (will be remapped) */ - "p\0" - "glSecondaryColor3usv\0" - "glSecondaryColor3usvEXT\0" + /* _mesa_function_pool[36873]: TexEnvx (will be remapped) */ + "iii\0" + "glTexEnvxOES\0" + "glTexEnvx\0" "\0" - /* _mesa_function_pool[37469]: VertexP2uiv (will be remapped) */ - "ip\0" - "glVertexP2uiv\0" + /* _mesa_function_pool[36901]: StopInstrumentsSGIX (dynamic) */ + "i\0" + "glStopInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[37487]: Fogxv (will be remapped) */ - "ip\0" - "glFogxvOES\0" - "glFogxv\0" + /* _mesa_function_pool[36926]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */ + "fffffffffffffff\0" + "glTexCoord4fColor4fNormal3fVertex4fSUN\0" "\0" - /* _mesa_function_pool[37510]: MultiTexCoord3dv (offset 393) */ - "ip\0" - "glMultiTexCoord3dv\0" - "glMultiTexCoord3dvARB\0" + /* _mesa_function_pool[36982]: InvalidateBufferSubData (will be remapped) */ + "iii\0" + "glInvalidateBufferSubData\0" "\0" - /* _mesa_function_pool[37555]: WindowPos4fvMESA (will be remapped) */ - "p\0" - "glWindowPos4fvMESA\0" + /* _mesa_function_pool[37013]: UniformMatrix4x2fv (will be remapped) */ + "iiip\0" + "glUniformMatrix4x2fv\0" + "\0" + /* _mesa_function_pool[37040]: SamplerParameterIiv (will be remapped) */ + "iip\0" + "glSamplerParameterIiv\0" "\0" - /* _mesa_function_pool[37577]: GetPixelMapuiv (offset 272) */ + /* _mesa_function_pool[37067]: PolygonOffset (offset 319) */ + "ff\0" + "glPolygonOffset\0" + "\0" + /* _mesa_function_pool[37087]: NormalPointervINTEL (dynamic) */ "ip\0" - "glGetPixelMapuiv\0" + "glNormalPointervINTEL\0" "\0" - /* _mesa_function_pool[37598]: Rectf (offset 88) */ - "ffff\0" - "glRectf\0" + /* _mesa_function_pool[37113]: SamplerParameterfv (will be remapped) */ + "iip\0" + "glSamplerParameterfv\0" "\0" - /* _mesa_function_pool[37612]: VertexAttrib1sNV (will be remapped) */ - "ii\0" - "glVertexAttrib1sNV\0" + /* _mesa_function_pool[37139]: Normal3fVertex3fSUN (dynamic) */ + "ffffff\0" + "glNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[37635]: Indexfv (offset 47) */ - "p\0" - "glIndexfv\0" + /* _mesa_function_pool[37169]: ProgramEnvParameter4fARB (will be remapped) */ + "iiffff\0" + "glProgramEnvParameter4fARB\0" + "glProgramParameter4fNV\0" + "\0" + /* _mesa_function_pool[37227]: ClearDepth (offset 208) */ + "d\0" + "glClearDepth\0" "\0" - /* _mesa_function_pool[37648]: ColorP3uiv (will be remapped) */ + /* _mesa_function_pool[37243]: VertexAttrib3dvNV (will be remapped) */ "ip\0" - "glColorP3uiv\0" + "glVertexAttrib3dvNV\0" "\0" - /* _mesa_function_pool[37665]: TexParameterIuiv (will be remapped) */ - "iip\0" - "glTexParameterIuivEXT\0" - "glTexParameterIuiv\0" + /* _mesa_function_pool[37267]: Color4fv (offset 30) */ + "p\0" + "glColor4fv\0" "\0" - /* _mesa_function_pool[37711]: BlitFramebuffer (will be remapped) */ - "iiiiiiiiii\0" - "glBlitFramebuffer\0" - "glBlitFramebufferEXT\0" + /* _mesa_function_pool[37281]: GetnMinmaxARB (will be remapped) */ + "iiiiip\0" + "glGetnMinmaxARB\0" "\0" - /* _mesa_function_pool[37762]: GetPointerv (offset 329) */ + /* _mesa_function_pool[37305]: ColorPointer (offset 308) */ + "iiip\0" + "glColorPointer\0" + "\0" + /* _mesa_function_pool[37326]: GetPointerv (offset 329) */ "ip\0" "glGetPointerv\0" "glGetPointervEXT\0" "\0" - /* _mesa_function_pool[37797]: Tangent3bEXT (dynamic) */ - "iii\0" - "glTangent3bEXT\0" + /* _mesa_function_pool[37361]: Lightiv (offset 162) */ + "iip\0" + "glLightiv\0" "\0" - /* _mesa_function_pool[37817]: CombinerParameterfNV (dynamic) */ - "if\0" - "glCombinerParameterfNV\0" + /* _mesa_function_pool[37376]: GetTexParameteriv (offset 283) */ + "iip\0" + "glGetTexParameteriv\0" "\0" - /* _mesa_function_pool[37844]: IndexMask (offset 212) */ - "i\0" - "glIndexMask\0" + /* _mesa_function_pool[37401]: TransformFeedbackVaryings (will be remapped) */ + "iipi\0" + "glTransformFeedbackVaryings\0" + "glTransformFeedbackVaryingsEXT\0" "\0" - /* _mesa_function_pool[37859]: CreateShaderObjectARB (will be remapped) */ + /* _mesa_function_pool[37466]: VertexAttrib3sv (will be remapped) */ + "ip\0" + "glVertexAttrib3sv\0" + "glVertexAttrib3svARB\0" + "\0" + /* _mesa_function_pool[37509]: IsVertexArray (will be remapped) */ "i\0" - "glCreateShaderObjectARB\0" + "glIsVertexArray\0" + "glIsVertexArrayAPPLE\0" + "glIsVertexArrayOES\0" "\0" - /* _mesa_function_pool[37886]: ReplacementCodeuiSUN (dynamic) */ + /* _mesa_function_pool[37568]: PushClientAttrib (offset 335) */ "i\0" - "glReplacementCodeuiSUN\0" + "glPushClientAttrib\0" "\0" - /* _mesa_function_pool[37912]: GetFloatv (offset 262) */ - "ip\0" - "glGetFloatv\0" + /* _mesa_function_pool[37590]: ProgramUniform4ui (will be remapped) */ + "iiiiii\0" + "glProgramUniform4ui\0" "\0" - /* _mesa_function_pool[37928]: CombinerOutputNV (dynamic) */ - "iiiiiiiiii\0" - "glCombinerOutputNV\0" + /* _mesa_function_pool[37618]: Uniform1f (will be remapped) */ + "if\0" + "glUniform1f\0" + "glUniform1fARB\0" "\0" - /* _mesa_function_pool[37959]: MultiTexCoord3i (offset 396) */ - "iiii\0" - "glMultiTexCoord3i\0" - "glMultiTexCoord3iARB\0" + /* _mesa_function_pool[37649]: FragmentMaterialfSGIX (dynamic) */ + "iif\0" + "glFragmentMaterialfSGIX\0" "\0" - /* _mesa_function_pool[38004]: GetVertexAttribIiv (will be remapped) */ - "iip\0" - "glGetVertexAttribIivEXT\0" - "glGetVertexAttribIiv\0" + /* _mesa_function_pool[37678]: Uniform1i (will be remapped) */ + "ii\0" + "glUniform1i\0" + "glUniform1iARB\0" + "\0" + /* _mesa_function_pool[37709]: GetPolygonStipple (offset 274) */ + "p\0" + "glGetPolygonStipple\0" + "\0" + /* _mesa_function_pool[37732]: PixelTexGenSGIX (dynamic) */ + "i\0" + "glPixelTexGenSGIX\0" "\0" - /* _mesa_function_pool[38054]: ClientWaitSync (will be remapped) */ + /* _mesa_function_pool[37753]: TexGenxOES (will be remapped) */ "iii\0" - "glClientWaitSync\0" + "glTexGenxOES\0" "\0" - /* _mesa_function_pool[38076]: TexCoord4s (offset 124) */ - "iiii\0" - "glTexCoord4s\0" + /* _mesa_function_pool[37771]: UseProgram (will be remapped) */ + "i\0" + "glUseProgram\0" + "glUseProgramObjectARB\0" "\0" - /* _mesa_function_pool[38095]: GetPerfMonitorGroupsAMD (will be remapped) */ - "pip\0" - "glGetPerfMonitorGroupsAMD\0" + /* _mesa_function_pool[37809]: StartInstrumentsSGIX (dynamic) */ "\0" - /* _mesa_function_pool[38126]: TexCoord3sv (offset 117) */ - "p\0" - "glTexCoord3sv\0" + "glStartInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[38143]: VertexAttrib2dNV (will be remapped) */ - "idd\0" - "glVertexAttrib2dNV\0" + /* _mesa_function_pool[37834]: FlushMappedBufferRangeAPPLE (will be remapped) */ + "iii\0" + "glFlushMappedBufferRangeAPPLE\0" "\0" - /* _mesa_function_pool[38167]: FogCoorddv (will be remapped) */ + /* _mesa_function_pool[37869]: GetFragDataLocation (will be remapped) */ + "ip\0" + "glGetFragDataLocationEXT\0" + "glGetFragDataLocation\0" + "\0" + /* _mesa_function_pool[37920]: PixelMapuiv (offset 252) */ + "iip\0" + "glPixelMapuiv\0" + "\0" + /* _mesa_function_pool[37939]: VertexWeightfvEXT (dynamic) */ "p\0" - "glFogCoorddv\0" - "glFogCoorddvEXT\0" + "glVertexWeightfvEXT\0" "\0" - /* _mesa_function_pool[38199]: PopAttrib (offset 218) */ + /* _mesa_function_pool[37962]: GetFenceivNV (dynamic) */ + "iip\0" + "glGetFenceivNV\0" "\0" - "glPopAttrib\0" + /* _mesa_function_pool[37982]: CurrentPaletteMatrixARB (dynamic) */ + "i\0" + "glCurrentPaletteMatrixARB\0" + "glCurrentPaletteMatrixOES\0" "\0" - /* _mesa_function_pool[38213]: Fogfv (offset 154) */ - "ip\0" - "glFogfv\0" + /* _mesa_function_pool[38037]: GetInteger64i_v (will be remapped) */ + "iip\0" + "glGetInteger64i_v\0" "\0" - /* _mesa_function_pool[38225]: ObjectPurgeableAPPLE (will be remapped) */ - "iii\0" - "glObjectPurgeableAPPLE\0" + /* _mesa_function_pool[38060]: TexCoord2fColor4ubVertex3fSUN (dynamic) */ + "ffiiiifff\0" + "glTexCoord2fColor4ubVertex3fSUN\0" "\0" - /* _mesa_function_pool[38253]: InitNames (offset 197) */ + /* _mesa_function_pool[38103]: TagSampleBufferSGIX (dynamic) */ "\0" - "glInitNames\0" + "glTagSampleBufferSGIX\0" "\0" - /* _mesa_function_pool[38267]: Normal3sv (offset 61) */ - "p\0" - "glNormal3sv\0" + /* _mesa_function_pool[38127]: Color3s (offset 17) */ + "iii\0" + "glColor3s\0" "\0" - /* _mesa_function_pool[38282]: GetTransformFeedbackVarying (will be remapped) */ - "iiipppp\0" - "glGetTransformFeedbackVarying\0" - "glGetTransformFeedbackVaryingEXT\0" + /* _mesa_function_pool[38142]: TexCoordPointer (offset 320) */ + "iiip\0" + "glTexCoordPointer\0" "\0" - /* _mesa_function_pool[38354]: Minmax (offset 368) */ + /* _mesa_function_pool[38166]: Color3i (offset 15) */ "iii\0" - "glMinmax\0" - "glMinmaxEXT\0" + "glColor3i\0" "\0" - /* _mesa_function_pool[38380]: BufferData (will be remapped) */ - "iipi\0" - "glBufferData\0" - "glBufferDataARB\0" + /* _mesa_function_pool[38181]: EvalCoord2d (offset 232) */ + "dd\0" + "glEvalCoord2d\0" "\0" - /* _mesa_function_pool[38415]: DeleteQueries (will be remapped) */ - "ip\0" - "glDeleteQueries\0" - "glDeleteQueriesARB\0" + /* _mesa_function_pool[38199]: EvalCoord2f (offset 234) */ + "ff\0" + "glEvalCoord2f\0" "\0" - /* _mesa_function_pool[38454]: TexCoord4d (offset 118) */ - "dddd\0" - "glTexCoord4d\0" + /* _mesa_function_pool[38217]: Color3b (offset 9) */ + "iii\0" + "glColor3b\0" "\0" - /* _mesa_function_pool[38473]: IsEnabledi (will be remapped) */ - "ii\0" - "glIsEnabledIndexedEXT\0" - "glIsEnabledi\0" + /* _mesa_function_pool[38232]: ExecuteProgramNV (will be remapped) */ + "iip\0" + "glExecuteProgramNV\0" "\0" - /* _mesa_function_pool[38512]: TexCoord4f (offset 120) */ - "ffff\0" - "glTexCoord4f\0" + /* _mesa_function_pool[38256]: Color3f (offset 13) */ + "fff\0" + "glColor3f\0" "\0" - /* _mesa_function_pool[38531]: Uniform3ui (will be remapped) */ - "iiii\0" - "glUniform3uiEXT\0" - "glUniform3ui\0" + /* _mesa_function_pool[38271]: Color3d (offset 11) */ + "ddd\0" + "glColor3d\0" "\0" - /* _mesa_function_pool[38566]: InvalidateFramebuffer (will be remapped) */ + /* _mesa_function_pool[38286]: GetVertexAttribdv (will be remapped) */ "iip\0" - "glInvalidateFramebuffer\0" + "glGetVertexAttribdv\0" + "glGetVertexAttribdvARB\0" "\0" - /* _mesa_function_pool[38595]: GetFragmentMaterialfvSGIX (dynamic) */ + /* _mesa_function_pool[38334]: GetBufferPointerv (will be remapped) */ "iip\0" - "glGetFragmentMaterialfvSGIX\0" + "glGetBufferPointerv\0" + "glGetBufferPointervARB\0" + "glGetBufferPointervOES\0" "\0" - /* _mesa_function_pool[38628]: Binormal3fvEXT (dynamic) */ - "p\0" - "glBinormal3fvEXT\0" + /* _mesa_function_pool[38405]: GenFramebuffers (will be remapped) */ + "ip\0" + "glGenFramebuffers\0" + "glGenFramebuffersEXT\0" + "glGenFramebuffersOES\0" "\0" - /* _mesa_function_pool[38648]: GetBooleanv (offset 258) */ + /* _mesa_function_pool[38469]: GenBuffers (will be remapped) */ "ip\0" - "glGetBooleanv\0" + "glGenBuffers\0" + "glGenBuffersARB\0" "\0" - /* _mesa_function_pool[38666]: ColorFragmentOp3ATI (will be remapped) */ - "iiiiiiiiiiiii\0" - "glColorFragmentOp3ATI\0" + /* _mesa_function_pool[38502]: ClearDepthx (will be remapped) */ + "i\0" + "glClearDepthxOES\0" + "glClearDepthx\0" "\0" - /* _mesa_function_pool[38703]: Hint (offset 158) */ + /* _mesa_function_pool[38536]: BlendEquationSeparate (will be remapped) */ "ii\0" - "glHint\0" + "glBlendEquationSeparate\0" + "glBlendEquationSeparateEXT\0" + "glBlendEquationSeparateATI\0" + "glBlendEquationSeparateOES\0" "\0" - /* _mesa_function_pool[38714]: DeletePerfMonitorsAMD (will be remapped) */ - "ip\0" - "glDeletePerfMonitorsAMD\0" + /* _mesa_function_pool[38645]: PixelTransformParameteriEXT (dynamic) */ + "iii\0" + "glPixelTransformParameteriEXT\0" "\0" - /* _mesa_function_pool[38742]: Color4dv (offset 28) */ - "p\0" - "glColor4dv\0" + /* _mesa_function_pool[38680]: MultiTexCoordP4ui (will be remapped) */ + "iii\0" + "glMultiTexCoordP4ui\0" "\0" - /* _mesa_function_pool[38756]: IsAsyncMarkerSGIX (dynamic) */ - "i\0" - "glIsAsyncMarkerSGIX\0" + /* _mesa_function_pool[38705]: VertexAttribIPointer (will be remapped) */ + "iiiip\0" + "glVertexAttribIPointerEXT\0" + "glVertexAttribIPointer\0" "\0" - /* _mesa_function_pool[38779]: MemoryBarrier (will be remapped) */ + /* _mesa_function_pool[38761]: EnableVertexAttribArray (will be remapped) */ "i\0" - "glMemoryBarrier\0" - "\0" - /* _mesa_function_pool[38798]: AreProgramsResidentNV (will be remapped) */ - "ipp\0" - "glAreProgramsResidentNV\0" + "glEnableVertexAttribArray\0" + "glEnableVertexAttribArrayARB\0" "\0" - /* _mesa_function_pool[38827]: DisableVertexAttribArray (will be remapped) */ + /* _mesa_function_pool[38819]: FrameZoomSGIX (dynamic) */ "i\0" - "glDisableVertexAttribArray\0" - "glDisableVertexAttribArrayARB\0" + "glFrameZoomSGIX\0" "\0" - /* _mesa_function_pool[38887]: CopyColorSubTable (offset 347) */ - "iiiii\0" - "glCopyColorSubTable\0" - "glCopyColorSubTableEXT\0" + /* _mesa_function_pool[38838]: RasterPos4sv (offset 85) */ + "p\0" + "glRasterPos4sv\0" "\0" - /* _mesa_function_pool[38937]: WeightdvARB (dynamic) */ + /* _mesa_function_pool[38856]: SelectBuffer (offset 195) */ "ip\0" - "glWeightdvARB\0" + "glSelectBuffer\0" "\0" - /* _mesa_function_pool[38955]: PollInstrumentsSGIX (dynamic) */ - "p\0" - "glPollInstrumentsSGIX\0" + /* _mesa_function_pool[38875]: GetSynciv (will be remapped) */ + "iiipp\0" + "glGetSynciv\0" "\0" - /* _mesa_function_pool[38980]: VertexAttrib3dvNV (will be remapped) */ - "ip\0" - "glVertexAttrib3dvNV\0" + /* _mesa_function_pool[38894]: TextureView (will be remapped) */ + "iiiiiiii\0" + "glTextureView\0" "\0" - /* _mesa_function_pool[39004]: GetObjectParameterfvARB (will be remapped) */ + /* _mesa_function_pool[38918]: TexEnviv (offset 187) */ "iip\0" - "glGetObjectParameterfvARB\0" + "glTexEnviv\0" "\0" - /* _mesa_function_pool[39035]: Vertex4iv (offset 147) */ - "p\0" - "glVertex4iv\0" + /* _mesa_function_pool[38934]: TexSubImage3D (offset 372) */ + "iiiiiiiiiip\0" + "glTexSubImage3D\0" + "glTexSubImage3DEXT\0" + "glTexSubImage3DOES\0" + "\0" + /* _mesa_function_pool[39001]: Bitmap (offset 8) */ + "iiffffp\0" + "glBitmap\0" + "\0" + /* _mesa_function_pool[39019]: VertexAttribDivisor (will be remapped) */ + "ii\0" + "glVertexAttribDivisorARB\0" + "glVertexAttribDivisor\0" + "\0" + /* _mesa_function_pool[39070]: DrawTransformFeedbackStream (will be remapped) */ + "iii\0" + "glDrawTransformFeedbackStream\0" + "\0" + /* _mesa_function_pool[39105]: GetIntegerv (offset 263) */ + "ip\0" + "glGetIntegerv\0" "\0" - /* _mesa_function_pool[39050]: GetDoublei_v (will be remapped) */ + /* _mesa_function_pool[39123]: FragmentLightfvSGIX (dynamic) */ "iip\0" - "glGetDoublei_v\0" + "glFragmentLightfvSGIX\0" "\0" - /* _mesa_function_pool[39070]: BufferSubData (will be remapped) */ - "iiip\0" - "glBufferSubData\0" - "glBufferSubDataARB\0" + /* _mesa_function_pool[39150]: TexCoord2fColor3fVertex3fvSUN (dynamic) */ + "ppp\0" + "glTexCoord2fColor3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[39111]: TexCoord4dv (offset 119) */ - "p\0" - "glTexCoord4dv\0" + /* _mesa_function_pool[39187]: GetActiveUniform (will be remapped) */ + "iiipppp\0" + "glGetActiveUniform\0" + "glGetActiveUniformARB\0" "\0" - /* _mesa_function_pool[39128]: LockArraysEXT (will be remapped) */ + /* _mesa_function_pool[39237]: AlphaFuncx (will be remapped) */ "ii\0" - "glLockArraysEXT\0" + "glAlphaFuncxOES\0" + "glAlphaFuncx\0" "\0" - /* _mesa_function_pool[39148]: Begin (offset 7) */ + /* _mesa_function_pool[39270]: VertexAttribI2ivEXT (will be remapped) */ + "ip\0" + "glVertexAttribI2ivEXT\0" + "glVertexAttribI2iv\0" + "\0" + /* _mesa_function_pool[39315]: VertexBlendARB (dynamic) */ "i\0" - "glBegin\0" + "glVertexBlendARB\0" "\0" - /* _mesa_function_pool[39159]: LightModeli (offset 165) */ + /* _mesa_function_pool[39335]: Map1d (offset 220) */ + "iddiip\0" + "glMap1d\0" + "\0" + /* _mesa_function_pool[39351]: Map1f (offset 221) */ + "iffiip\0" + "glMap1f\0" + "\0" + /* _mesa_function_pool[39367]: AreTexturesResident (offset 322) */ + "ipp\0" + "glAreTexturesResident\0" + "glAreTexturesResidentEXT\0" + "\0" + /* _mesa_function_pool[39419]: ProgramNamedParameter4fNV (will be remapped) */ + "iipffff\0" + "glProgramNamedParameter4fNV\0" + "\0" + /* _mesa_function_pool[39456]: PixelTransferi (offset 248) */ "ii\0" - "glLightModeli\0" + "glPixelTransferi\0" "\0" - /* _mesa_function_pool[39177]: FogCoordPointerListIBM (dynamic) */ - "iipi\0" - "glFogCoordPointerListIBM\0" + /* _mesa_function_pool[39477]: VertexAttrib3fvNV (will be remapped) */ + "ip\0" + "glVertexAttrib3fvNV\0" "\0" - /* _mesa_function_pool[39208]: ObjectPtrLabel (will be remapped) */ - "pip\0" - "glObjectPtrLabel\0" + /* _mesa_function_pool[39501]: GetFinalCombinerInputParameterivNV (dynamic) */ + "iip\0" + "glGetFinalCombinerInputParameterivNV\0" "\0" - /* _mesa_function_pool[39230]: Rectfv (offset 89) */ + /* _mesa_function_pool[39543]: SecondaryColorP3ui (will be remapped) */ + "ii\0" + "glSecondaryColorP3ui\0" + "\0" + /* _mesa_function_pool[39568]: GetMapParameterivNV (dynamic) */ + "iip\0" + "glGetMapParameterivNV\0" + "\0" + /* _mesa_function_pool[39595]: VertexAttrib4fvNV (will be remapped) */ + "ip\0" + "glVertexAttrib4fvNV\0" + "\0" + /* _mesa_function_pool[39619]: Rectiv (offset 91) */ "pp\0" - "glRectfv\0" + "glRectiv\0" "\0" - /* _mesa_function_pool[39243]: ClipPlanex (will be remapped) */ + /* _mesa_function_pool[39632]: MultiTexCoord1iv (offset 381) */ "ip\0" - "glClipPlanexOES\0" - "glClipPlanex\0" + "glMultiTexCoord1iv\0" + "glMultiTexCoord1ivARB\0" "\0" - /* _mesa_function_pool[39276]: Uniform4f (will be remapped) */ - "iffff\0" - "glUniform4f\0" - "glUniform4fARB\0" + /* _mesa_function_pool[39677]: PassTexCoordATI (will be remapped) */ + "iii\0" + "glPassTexCoordATI\0" "\0" - /* _mesa_function_pool[39310]: LightModelf (offset 163) */ - "if\0" - "glLightModelf\0" + /* _mesa_function_pool[39700]: Tangent3dEXT (dynamic) */ + "ddd\0" + "glTangent3dEXT\0" "\0" - /* _mesa_function_pool[39328]: GetTexParameterfv (offset 282) */ - "iip\0" - "glGetTexParameterfv\0" + /* _mesa_function_pool[39720]: Vertex2fv (offset 129) */ + "p\0" + "glVertex2fv\0" + "\0" + /* _mesa_function_pool[39735]: BindRenderbufferEXT (will be remapped) */ + "ii\0" + "glBindRenderbufferEXT\0" + "\0" + /* _mesa_function_pool[39761]: Vertex3sv (offset 141) */ + "p\0" + "glVertex3sv\0" "\0" - /* _mesa_function_pool[39353]: GetLightfv (offset 264) */ + /* _mesa_function_pool[39776]: EvalMesh1 (offset 236) */ + "iii\0" + "glEvalMesh1\0" + "\0" + /* _mesa_function_pool[39793]: DiscardFramebufferEXT (will be remapped) */ "iip\0" - "glGetLightfv\0" + "glDiscardFramebufferEXT\0" + "\0" + /* _mesa_function_pool[39822]: Uniform2f (will be remapped) */ + "iff\0" + "glUniform2f\0" + "glUniform2fARB\0" + "\0" + /* _mesa_function_pool[39854]: ColorPointerEXT (will be remapped) */ + "iiiip\0" + "glColorPointerEXT\0" + "\0" + /* _mesa_function_pool[39879]: LineWidth (offset 168) */ + "f\0" + "glLineWidth\0" + "\0" + /* _mesa_function_pool[39894]: Uniform2i (will be remapped) */ + "iii\0" + "glUniform2i\0" + "glUniform2iARB\0" + "\0" + /* _mesa_function_pool[39926]: MultiDrawElementsBaseVertex (will be remapped) */ + "ipipip\0" + "glMultiDrawElementsBaseVertex\0" "\0" - /* _mesa_function_pool[39371]: PixelTransformParameterivEXT (dynamic) */ + /* _mesa_function_pool[39964]: Lightxv (will be remapped) */ "iip\0" - "glPixelTransformParameterivEXT\0" + "glLightxvOES\0" + "glLightxv\0" + "\0" + /* _mesa_function_pool[39992]: DepthRangeIndexed (will be remapped) */ + "idd\0" + "glDepthRangeIndexed\0" "\0" - /* _mesa_function_pool[39407]: BinormalPointerEXT (dynamic) */ + /* _mesa_function_pool[40017]: GetConvolutionParameterfv (offset 357) */ "iip\0" - "glBinormalPointerEXT\0" + "glGetConvolutionParameterfv\0" + "glGetConvolutionParameterfvEXT\0" "\0" - /* _mesa_function_pool[39433]: VertexP4uiv (will be remapped) */ + /* _mesa_function_pool[40081]: GetTexBumpParameterfvATI (will be remapped) */ "ip\0" - "glVertexP4uiv\0" + "glGetTexBumpParameterfvATI\0" "\0" - /* _mesa_function_pool[39451]: GetCombinerInputParameterivNV (dynamic) */ - "iiiip\0" - "glGetCombinerInputParameterivNV\0" + /* _mesa_function_pool[40112]: ProgramNamedParameter4dNV (will be remapped) */ + "iipdddd\0" + "glProgramNamedParameter4dNV\0" "\0" - /* _mesa_function_pool[39490]: Disable (offset 214) */ - "i\0" - "glDisable\0" + /* _mesa_function_pool[40149]: GetMaterialfv (offset 269) */ + "iip\0" + "glGetMaterialfv\0" + "\0" + /* _mesa_function_pool[40170]: TexImage3DMultisample (will be remapped) */ + "iiiiiii\0" + "glTexImage3DMultisample\0" "\0" - /* _mesa_function_pool[39503]: ClipPlanef (will be remapped) */ + /* _mesa_function_pool[40203]: VertexAttrib1fvNV (will be remapped) */ "ip\0" - "glClipPlanefOES\0" - "glClipPlanef\0" + "glVertexAttrib1fvNV\0" "\0" - /* _mesa_function_pool[39536]: MultiTexCoord2fvARB (offset 387) */ + /* _mesa_function_pool[40227]: GetUniformBlockIndex (will be remapped) */ "ip\0" - "glMultiTexCoord2fv\0" - "glMultiTexCoord2fvARB\0" + "glGetUniformBlockIndex\0" "\0" - /* _mesa_function_pool[39581]: GetPerfMonitorCounterStringAMD (will be remapped) */ - "iiipp\0" - "glGetPerfMonitorCounterStringAMD\0" + /* _mesa_function_pool[40254]: DetachShader (will be remapped) */ + "ii\0" + "glDetachShader\0" "\0" - /* _mesa_function_pool[39621]: SecondaryColorPointer (will be remapped) */ - "iiip\0" - "glSecondaryColorPointer\0" - "glSecondaryColorPointerEXT\0" + /* _mesa_function_pool[40273]: CopyTexSubImage2D (offset 326) */ + "iiiiiiii\0" + "glCopyTexSubImage2D\0" + "glCopyTexSubImage2DEXT\0" + "\0" + /* _mesa_function_pool[40326]: SampleCoverage (will be remapped) */ + "fi\0" + "glSampleCoverage\0" + "glSampleCoverageARB\0" + "\0" + /* _mesa_function_pool[40367]: GetObjectParameterivARB (will be remapped) */ + "iip\0" + "glGetObjectParameterivARB\0" "\0" - /* _mesa_function_pool[39678]: FinishAsyncSGIX (dynamic) */ + /* _mesa_function_pool[40398]: Color3iv (offset 16) */ "p\0" - "glFinishAsyncSGIX\0" + "glColor3iv\0" "\0" - /* _mesa_function_pool[39699]: DrawArrays (offset 310) */ - "iii\0" - "glDrawArrays\0" - "glDrawArraysEXT\0" + /* _mesa_function_pool[40412]: DrawElements (offset 311) */ + "iiip\0" + "glDrawElements\0" "\0" - /* _mesa_function_pool[39733]: WeightuivARB (dynamic) */ - "ip\0" - "glWeightuivARB\0" + /* _mesa_function_pool[40433]: ScissorArrayv (will be remapped) */ + "iip\0" + "glScissorArrayv\0" "\0" - /* _mesa_function_pool[39752]: GetnTexImageARB (will be remapped) */ - "iiiiip\0" - "glGetnTexImageARB\0" + /* _mesa_function_pool[40454]: GetInternalformativ (will be remapped) */ + "iiiip\0" + "glGetInternalformativ\0" "\0" - /* _mesa_function_pool[39778]: ColorMask (offset 210) */ - "iiii\0" - "glColorMask\0" + /* _mesa_function_pool[40483]: EvalPoint2 (offset 239) */ + "ii\0" + "glEvalPoint2\0" "\0" - /* _mesa_function_pool[39796]: GenAsyncMarkersSGIX (dynamic) */ + /* _mesa_function_pool[40500]: EvalPoint1 (offset 237) */ "i\0" - "glGenAsyncMarkersSGIX\0" + "glEvalPoint1\0" + "\0" + /* _mesa_function_pool[40516]: PopMatrix (offset 297) */ "\0" - /* _mesa_function_pool[39821]: Materialxv (will be remapped) */ + "glPopMatrix\0" + "\0" + /* _mesa_function_pool[40530]: FinishFenceNV (dynamic) */ + "i\0" + "glFinishFenceNV\0" + "\0" + /* _mesa_function_pool[40549]: Tangent3bvEXT (dynamic) */ + "p\0" + "glTangent3bvEXT\0" + "\0" + /* _mesa_function_pool[40568]: GetTexGeniv (offset 280) */ "iip\0" - "glMaterialxvOES\0" - "glMaterialxv\0" + "glGetTexGeniv\0" + "glGetTexGenivOES\0" "\0" - /* _mesa_function_pool[39855]: DebugMessageInsertARB (will be remapped) */ - "iiiiip\0" - "glDebugMessageInsertARB\0" + /* _mesa_function_pool[40604]: ActiveProgramEXT (will be remapped) */ + "i\0" + "glActiveProgramEXT\0" "\0" - /* _mesa_function_pool[39887]: GetListParameterivSGIX (dynamic) */ + /* _mesa_function_pool[40626]: PixelTransformParameterivEXT (dynamic) */ "iip\0" - "glGetListParameterivSGIX\0" + "glPixelTransformParameterivEXT\0" "\0" - /* _mesa_function_pool[39917]: GetInfoLogARB (will be remapped) */ - "iipp\0" - "glGetInfoLogARB\0" + /* _mesa_function_pool[40662]: TexCoord4fVertex4fvSUN (dynamic) */ + "pp\0" + "glTexCoord4fVertex4fvSUN\0" + "\0" + /* _mesa_function_pool[40691]: UnmapBuffer (will be remapped) */ + "i\0" + "glUnmapBuffer\0" + "glUnmapBufferARB\0" + "glUnmapBufferOES\0" + "\0" + /* _mesa_function_pool[40742]: EvalCoord1d (offset 228) */ + "d\0" + "glEvalCoord1d\0" + "\0" + /* _mesa_function_pool[40759]: EvalCoord1f (offset 230) */ + "f\0" + "glEvalCoord1f\0" "\0" - /* _mesa_function_pool[39939]: RasterPos4iv (offset 83) */ + /* _mesa_function_pool[40776]: IndexMaterialEXT (dynamic) */ + "ii\0" + "glIndexMaterialEXT\0" + "\0" + /* _mesa_function_pool[40799]: Materialf (offset 169) */ + "iif\0" + "glMaterialf\0" + "\0" + /* _mesa_function_pool[40816]: VertexAttribs2dvNV (will be remapped) */ + "iip\0" + "glVertexAttribs2dvNV\0" + "\0" + /* _mesa_function_pool[40842]: ProgramUniform1uiv (will be remapped) */ + "iiip\0" + "glProgramUniform1uiv\0" + "\0" + /* _mesa_function_pool[40869]: EvalCoord1dv (offset 229) */ "p\0" - "glRasterPos4iv\0" + "glEvalCoord1dv\0" "\0" - /* _mesa_function_pool[39957]: Enable (offset 215) */ - "i\0" - "glEnable\0" + /* _mesa_function_pool[40887]: Materialx (will be remapped) */ + "iii\0" + "glMaterialxOES\0" + "glMaterialx\0" "\0" - /* _mesa_function_pool[39969]: GetRenderbufferParameteriv (will be remapped) */ + /* _mesa_function_pool[40919]: GetLightiv (offset 265) */ "iip\0" - "glGetRenderbufferParameteriv\0" - "glGetRenderbufferParameterivEXT\0" - "glGetRenderbufferParameterivOES\0" + "glGetLightiv\0" "\0" - /* _mesa_function_pool[40067]: LineStipple (offset 167) */ + /* _mesa_function_pool[40937]: BindBuffer (will be remapped) */ "ii\0" - "glLineStipple\0" + "glBindBuffer\0" + "glBindBufferARB\0" + "\0" + /* _mesa_function_pool[40970]: ProgramUniform1i (will be remapped) */ + "iii\0" + "glProgramUniform1i\0" "\0" - /* _mesa_function_pool[40085]: FragmentLightfSGIX (dynamic) */ + /* _mesa_function_pool[40994]: ProgramUniform1f (will be remapped) */ "iif\0" - "glFragmentLightfSGIX\0" + "glProgramUniform1f\0" "\0" - /* _mesa_function_pool[40111]: SetFenceNV (dynamic) */ - "ii\0" - "glSetFenceNV\0" + /* _mesa_function_pool[41018]: WindowPos3iv (will be remapped) */ + "p\0" + "glWindowPos3iv\0" + "glWindowPos3ivARB\0" + "glWindowPos3ivMESA\0" "\0" - /* _mesa_function_pool[40128]: DepthRangeArrayv (will be remapped) */ - "iip\0" - "glDepthRangeArrayv\0" + /* _mesa_function_pool[41073]: CopyConvolutionFilter2D (offset 355) */ + "iiiiii\0" + "glCopyConvolutionFilter2D\0" + "glCopyConvolutionFilter2DEXT\0" "\0" - /* _mesa_function_pool[40152]: VertexAttribs4svNV (will be remapped) */ - "iip\0" - "glVertexAttribs4svNV\0" + /* _mesa_function_pool[41136]: CopyBufferSubData (will be remapped) */ + "iiiii\0" + "glCopyBufferSubData\0" "\0" - /* _mesa_function_pool[40178]: GenRenderbuffers (will be remapped) */ + /* _mesa_function_pool[41163]: WeightfvARB (dynamic) */ "ip\0" - "glGenRenderbuffers\0" - "glGenRenderbuffersEXT\0" - "glGenRenderbuffersOES\0" - "\0" - /* _mesa_function_pool[40245]: EdgeFlagPointerListIBM (dynamic) */ - "ipi\0" - "glEdgeFlagPointerListIBM\0" + "glWeightfvARB\0" "\0" - /* _mesa_function_pool[40275]: UniformMatrix4fv (will be remapped) */ + /* _mesa_function_pool[41181]: UniformMatrix3x4fv (will be remapped) */ "iiip\0" - "glUniformMatrix4fv\0" - "glUniformMatrix4fvARB\0" + "glUniformMatrix3x4fv\0" "\0" - /* _mesa_function_pool[40322]: UniformMatrix3x2fv (will be remapped) */ - "iiip\0" - "glUniformMatrix3x2fv\0" + /* _mesa_function_pool[41208]: Recti (offset 90) */ + "iiii\0" + "glRecti\0" "\0" - /* _mesa_function_pool[40349]: GetMinmaxParameterfv (offset 365) */ - "iip\0" - "glGetMinmaxParameterfv\0" - "glGetMinmaxParameterfvEXT\0" + /* _mesa_function_pool[41222]: VertexAttribI3ivEXT (will be remapped) */ + "ip\0" + "glVertexAttribI3ivEXT\0" + "glVertexAttribI3iv\0" "\0" - /* _mesa_function_pool[40403]: VertexAttrib4Nuiv (will be remapped) */ + /* _mesa_function_pool[41267]: DeleteSamplers (will be remapped) */ "ip\0" - "glVertexAttrib4Nuiv\0" - "glVertexAttrib4NuivARB\0" + "glDeleteSamplers\0" "\0" - /* _mesa_function_pool[40450]: ClientActiveTexture (offset 375) */ - "i\0" - "glClientActiveTexture\0" - "glClientActiveTextureARB\0" + /* _mesa_function_pool[41288]: SamplerParameteri (will be remapped) */ + "iii\0" + "glSamplerParameteri\0" "\0" - /* _mesa_function_pool[40500]: WindowPos2sv (will be remapped) */ - "p\0" - "glWindowPos2sv\0" - "glWindowPos2svARB\0" - "glWindowPos2svMESA\0" + /* _mesa_function_pool[41313]: Rectf (offset 88) */ + "ffff\0" + "glRectf\0" "\0" - /* _mesa_function_pool[40555]: Vertex3fv (offset 137) */ - "p\0" - "glVertex3fv\0" + /* _mesa_function_pool[41327]: Rectd (offset 86) */ + "dddd\0" + "glRectd\0" "\0" - /* _mesa_function_pool[40570]: GetUniformIndices (will be remapped) */ - "iipp\0" - "glGetUniformIndices\0" + /* _mesa_function_pool[41341]: SamplerParameterf (will be remapped) */ + "iif\0" + "glSamplerParameterf\0" "\0" - /* _mesa_function_pool[40596]: GetTexBumpParameterivATI (will be remapped) */ - "ip\0" - "glGetTexBumpParameterivATI\0" + /* _mesa_function_pool[41366]: Rects (offset 92) */ + "iiii\0" + "glRects\0" "\0" - /* _mesa_function_pool[40627]: SecondaryColor3sv (will be remapped) */ - "p\0" - "glSecondaryColor3sv\0" - "glSecondaryColor3svEXT\0" + /* _mesa_function_pool[41380]: CombinerParameterfNV (dynamic) */ + "if\0" + "glCombinerParameterfNV\0" "\0" - /* _mesa_function_pool[40673]: Fogx (will be remapped) */ - "ii\0" - "glFogxOES\0" - "glFogx\0" + /* _mesa_function_pool[41407]: GetVertexAttribIiv (will be remapped) */ + "iip\0" + "glGetVertexAttribIivEXT\0" + "glGetVertexAttribIiv\0" "\0" - /* _mesa_function_pool[40694]: Binormal3bEXT (dynamic) */ + /* _mesa_function_pool[41457]: ClientWaitSync (will be remapped) */ "iii\0" - "glBinormal3bEXT\0" + "glClientWaitSync\0" + "\0" + /* _mesa_function_pool[41479]: TexCoord4s (offset 124) */ + "iiii\0" + "glTexCoord4s\0" "\0" - /* _mesa_function_pool[40715]: FragmentMaterialivSGIX (dynamic) */ + /* _mesa_function_pool[41498]: TexEnvxv (will be remapped) */ "iip\0" - "glFragmentMaterialivSGIX\0" + "glTexEnvxvOES\0" + "glTexEnvxv\0" + "\0" + /* _mesa_function_pool[41528]: TexCoord4i (offset 122) */ + "iiii\0" + "glTexCoord4i\0" "\0" - /* _mesa_function_pool[40745]: WaitSync (will be remapped) */ + /* _mesa_function_pool[41547]: ObjectPurgeableAPPLE (will be remapped) */ "iii\0" - "glWaitSync\0" + "glObjectPurgeableAPPLE\0" + "\0" + /* _mesa_function_pool[41575]: TexCoord4d (offset 118) */ + "dddd\0" + "glTexCoord4d\0" "\0" - /* _mesa_function_pool[40761]: CombinerParameterivNV (dynamic) */ + /* _mesa_function_pool[41594]: TexCoord4f (offset 120) */ + "ffff\0" + "glTexCoord4f\0" + "\0" + /* _mesa_function_pool[41613]: GetBooleanv (offset 258) */ "ip\0" - "glCombinerParameterivNV\0" + "glGetBooleanv\0" "\0" - /* _mesa_function_pool[40789]: BindVertexBuffer (will be remapped) */ - "iiii\0" - "glBindVertexBuffer\0" + /* _mesa_function_pool[41631]: IsAsyncMarkerSGIX (dynamic) */ + "i\0" + "glIsAsyncMarkerSGIX\0" + "\0" + /* _mesa_function_pool[41654]: LockArraysEXT (will be remapped) */ + "ii\0" + "glLockArraysEXT\0" + "\0" + /* _mesa_function_pool[41674]: GetActiveUniformBlockiv (will be remapped) */ + "iiip\0" + "glGetActiveUniformBlockiv\0" + "\0" + /* _mesa_function_pool[41706]: GetPerfMonitorCountersAMD (will be remapped) */ + "ippip\0" + "glGetPerfMonitorCountersAMD\0" + "\0" + /* _mesa_function_pool[41741]: ObjectPtrLabel (will be remapped) */ + "pip\0" + "glObjectPtrLabel\0" + "\0" + /* _mesa_function_pool[41763]: Rectfv (offset 89) */ + "pp\0" + "glRectfv\0" + "\0" + /* _mesa_function_pool[41776]: BindImageTexture (will be remapped) */ + "iiiiiii\0" + "glBindImageTexture\0" + "\0" + /* _mesa_function_pool[41804]: ClearDepthf (will be remapped) */ + "f\0" + "glClearDepthf\0" + "glClearDepthfOES\0" "\0" - /* _mesa_function_pool[40814]: MultiTexCoord2sv (offset 391) */ + /* _mesa_function_pool[41838]: VertexP4uiv (will be remapped) */ "ip\0" - "glMultiTexCoord2sv\0" - "glMultiTexCoord2svARB\0" + "glVertexP4uiv\0" "\0" - /* _mesa_function_pool[40859]: DeformationMap3dSGIX (dynamic) */ - "iddiiddiiddiip\0" - "glDeformationMap3dSGIX\0" + /* _mesa_function_pool[41856]: MinSampleShading (will be remapped) */ + "f\0" + "glMinSampleShadingARB\0" + "glMinSampleShading\0" "\0" - /* _mesa_function_pool[40898]: EndFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[41900]: GetRenderbufferParameteriv (will be remapped) */ + "iip\0" + "glGetRenderbufferParameteriv\0" + "glGetRenderbufferParameterivEXT\0" + "glGetRenderbufferParameterivOES\0" "\0" - "glEndFragmentShaderATI\0" + /* _mesa_function_pool[41998]: EdgeFlagPointerListIBM (dynamic) */ + "ipi\0" + "glEdgeFlagPointerListIBM\0" "\0" - /* _mesa_function_pool[40923]: Binormal3iEXT (dynamic) */ - "iii\0" - "glBinormal3iEXT\0" + /* _mesa_function_pool[42028]: WindowPos2sv (will be remapped) */ + "p\0" + "glWindowPos2sv\0" + "glWindowPos2svARB\0" + "glWindowPos2svMESA\0" + "\0" + /* _mesa_function_pool[42083]: VertexArrayRangeNV (dynamic) */ + "ip\0" + "glVertexArrayRangeNV\0" + "\0" + /* _mesa_function_pool[42108]: GetPerfMonitorCounterStringAMD (will be remapped) */ + "iiipp\0" + "glGetPerfMonitorCounterStringAMD\0" + "\0" + /* _mesa_function_pool[42148]: EndFragmentShaderATI (will be remapped) */ + "\0" + "glEndFragmentShaderATI\0" "\0" - /* _mesa_function_pool[40944]: Uniform4iv (will be remapped) */ + /* _mesa_function_pool[42173]: Uniform4iv (will be remapped) */ "iip\0" "glUniform4iv\0" "glUniform4ivARB\0" @@ -5812,784 +5988,828 @@ static const char _mesa_function_pool[] = /* these functions need to be remapped */ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { - { 26563, CompressedTexImage1D_remap_index }, - { 17047, CompressedTexImage2D_remap_index }, - { 3014, CompressedTexImage3D_remap_index }, - { 7897, CompressedTexSubImage1D_remap_index }, - { 4192, CompressedTexSubImage2D_remap_index }, - { 31499, CompressedTexSubImage3D_remap_index }, - { 15512, GetCompressedTexImage_remap_index }, - { 23374, LoadTransposeMatrixd_remap_index }, - { 23322, LoadTransposeMatrixf_remap_index }, - { 35608, MultTransposeMatrixd_remap_index }, - { 35660, MultTransposeMatrixf_remap_index }, - { 33028, SampleCoverage_remap_index }, - { 12181, BlendFuncSeparate_remap_index }, - { 14445, FogCoordPointer_remap_index }, - { 17372, FogCoordd_remap_index }, - { 38167, FogCoorddv_remap_index }, - { 33187, MultiDrawArrays_remap_index }, - { 27282, PointParameterf_remap_index }, - { 18225, PointParameterfv_remap_index }, - { 27240, PointParameteri_remap_index }, - { 33395, PointParameteriv_remap_index }, - { 19189, SecondaryColor3b_remap_index }, - { 15896, SecondaryColor3bv_remap_index }, - { 33466, SecondaryColor3d_remap_index }, - { 3354, SecondaryColor3dv_remap_index }, - { 36608, SecondaryColor3i_remap_index }, - { 22053, SecondaryColor3iv_remap_index }, - { 18896, SecondaryColor3s_remap_index }, - { 40627, SecondaryColor3sv_remap_index }, - { 16423, SecondaryColor3ub_remap_index }, - { 27192, SecondaryColor3ubv_remap_index }, - { 37129, SecondaryColor3ui_remap_index }, - { 4374, SecondaryColor3uiv_remap_index }, - { 14676, SecondaryColor3us_remap_index }, - { 37421, SecondaryColor3usv_remap_index }, - { 39621, SecondaryColorPointer_remap_index }, - { 2193, WindowPos2d_remap_index }, - { 19713, WindowPos2dv_remap_index }, - { 2121, WindowPos2f_remap_index }, - { 1608, WindowPos2fv_remap_index }, - { 16741, WindowPos2i_remap_index }, - { 24370, WindowPos2iv_remap_index }, - { 2523, WindowPos2s_remap_index }, - { 40500, WindowPos2sv_remap_index }, - { 16282, WindowPos3d_remap_index }, - { 14313, WindowPos3dv_remap_index }, - { 16369, WindowPos3f_remap_index }, - { 32577, WindowPos3fv_remap_index }, - { 19135, WindowPos3i_remap_index }, - { 36706, WindowPos3iv_remap_index }, - { 16794, WindowPos3s_remap_index }, - { 7306, WindowPos3sv_remap_index }, - { 23853, BeginQuery_remap_index }, - { 12858, BindBuffer_remap_index }, - { 38380, BufferData_remap_index }, - { 39070, BufferSubData_remap_index }, - { 28564, DeleteBuffers_remap_index }, - { 38415, DeleteQueries_remap_index }, - { 29512, EndQuery_remap_index }, - { 25946, GenBuffers_remap_index }, - { 2865, GenQueries_remap_index }, - { 19482, GetBufferParameteriv_remap_index }, - { 32085, GetBufferPointerv_remap_index }, - { 28715, GetBufferSubData_remap_index }, - { 31170, GetQueryObjectiv_remap_index }, - { 29116, GetQueryObjectuiv_remap_index }, - { 3946, GetQueryiv_remap_index }, - { 24513, IsBuffer_remap_index }, - { 21212, IsQuery_remap_index }, - { 4553, MapBuffer_remap_index }, - { 34523, UnmapBuffer_remap_index }, - { 1380, AttachShader_remap_index }, - { 6623, BindAttribLocation_remap_index }, - { 26184, BlendEquationSeparate_remap_index }, - { 23193, CompileShader_remap_index }, - { 12103, CreateProgram_remap_index }, - { 27690, CreateShader_remap_index }, - { 30734, DeleteProgram_remap_index }, - { 31379, DeleteShader_remap_index }, - { 32922, DetachShader_remap_index }, - { 38827, DisableVertexAttribArray_remap_index }, - { 13421, DrawBuffers_remap_index }, - { 26879, EnableVertexAttribArray_remap_index }, - { 9357, GetActiveAttrib_remap_index }, - { 28514, GetActiveUniform_remap_index }, - { 21780, GetAttachedShaders_remap_index }, - { 17640, GetAttribLocation_remap_index }, - { 6203, GetProgramInfoLog_remap_index }, - { 365, GetProgramiv_remap_index }, - { 14937, GetShaderInfoLog_remap_index }, - { 28222, GetShaderSource_remap_index }, - { 1677, GetShaderiv_remap_index }, - { 24303, GetUniformLocation_remap_index }, - { 7565, GetUniformfv_remap_index }, - { 8088, GetUniformiv_remap_index }, - { 20465, GetVertexAttribPointerv_remap_index }, - { 25671, GetVertexAttribdv_remap_index }, - { 2272, GetVertexAttribfv_remap_index }, - { 13222, GetVertexAttribiv_remap_index }, - { 15881, IsProgram_remap_index }, - { 7683, IsShader_remap_index }, - { 22355, LinkProgram_remap_index }, - { 12305, ShaderSource_remap_index }, - { 12277, StencilFuncSeparate_remap_index }, - { 4527, StencilMaskSeparate_remap_index }, - { 9781, StencilOpSeparate_remap_index }, - { 22436, Uniform1f_remap_index }, - { 31896, Uniform1fv_remap_index }, - { 22590, Uniform1i_remap_index }, - { 32381, Uniform1iv_remap_index }, - { 31425, Uniform2f_remap_index }, - { 854, Uniform2fv_remap_index }, - { 31717, Uniform2i_remap_index }, - { 33639, Uniform2iv_remap_index }, - { 3205, Uniform3f_remap_index }, - { 13517, Uniform3fv_remap_index }, - { 19008, Uniform3i_remap_index }, - { 17558, Uniform3iv_remap_index }, - { 39276, Uniform4f_remap_index }, - { 5737, Uniform4fv_remap_index }, - { 16968, Uniform4i_remap_index }, - { 40944, Uniform4iv_remap_index }, - { 3238, UniformMatrix2fv_remap_index }, - { 3672, UniformMatrix3fv_remap_index }, - { 40275, UniformMatrix4fv_remap_index }, - { 23128, UseProgram_remap_index }, - { 8918, ValidateProgram_remap_index }, - { 26522, VertexAttrib1d_remap_index }, - { 14174, VertexAttrib1dv_remap_index }, - { 26838, VertexAttrib1s_remap_index }, - { 1808, VertexAttrib1sv_remap_index }, - { 31457, VertexAttrib2d_remap_index }, - { 6095, VertexAttrib2dv_remap_index }, - { 31216, VertexAttrib2s_remap_index }, - { 12914, VertexAttrib2sv_remap_index }, - { 4005, VertexAttrib3d_remap_index }, - { 578, VertexAttrib3dv_remap_index }, - { 23974, VertexAttrib3s_remap_index }, - { 21144, VertexAttrib3sv_remap_index }, - { 4640, VertexAttrib4Nbv_remap_index }, - { 22170, VertexAttrib4Niv_remap_index }, - { 34321, VertexAttrib4Nsv_remap_index }, - { 5621, VertexAttrib4Nub_remap_index }, - { 37082, VertexAttrib4Nubv_remap_index }, - { 40403, VertexAttrib4Nuiv_remap_index }, - { 6138, VertexAttrib4Nusv_remap_index }, - { 34815, VertexAttrib4bv_remap_index }, - { 22673, VertexAttrib4d_remap_index }, - { 21557, VertexAttrib4dv_remap_index }, - { 17827, VertexAttrib4iv_remap_index }, - { 23002, VertexAttrib4s_remap_index }, - { 30015, VertexAttrib4sv_remap_index }, - { 33142, VertexAttrib4ubv_remap_index }, - { 34276, VertexAttrib4uiv_remap_index }, - { 5373, VertexAttrib4usv_remap_index }, - { 18756, VertexAttribPointer_remap_index }, - { 26734, UniformMatrix2x3fv_remap_index }, - { 33439, UniformMatrix2x4fv_remap_index }, - { 40322, UniformMatrix3x2fv_remap_index }, - { 37224, UniformMatrix3x4fv_remap_index }, - { 19081, UniformMatrix4x2fv_remap_index }, - { 3750, UniformMatrix4x3fv_remap_index }, - { 20694, BeginConditionalRender_remap_index }, - { 9157, BeginTransformFeedback_remap_index }, - { 6832, BindBufferBase_remap_index }, - { 30782, BindBufferRange_remap_index }, - { 1851, BindFragDataLocation_remap_index }, - { 6533, ClampColor_remap_index }, - { 7110, ClearBufferfi_remap_index }, - { 21238, ClearBufferfv_remap_index }, - { 35958, ClearBufferiv_remap_index }, - { 16048, ClearBufferuiv_remap_index }, - { 9315, ColorMaski_remap_index }, - { 29893, Disablei_remap_index }, - { 16336, Enablei_remap_index }, - { 32035, EndConditionalRender_remap_index }, - { 28983, EndTransformFeedback_remap_index }, - { 17181, GetBooleani_v_remap_index }, - { 23624, GetFragDataLocation_remap_index }, - { 36208, GetIntegeri_v_remap_index }, - { 24241, GetStringi_remap_index }, - { 30136, GetTexParameterIiv_remap_index }, - { 13968, GetTexParameterIuiv_remap_index }, - { 38282, GetTransformFeedbackVarying_remap_index }, - { 10212, GetUniformuiv_remap_index }, - { 38004, GetVertexAttribIiv_remap_index }, - { 2933, GetVertexAttribIuiv_remap_index }, - { 38473, IsEnabledi_remap_index }, - { 10648, TexParameterIiv_remap_index }, - { 37665, TexParameterIuiv_remap_index }, - { 3455, TransformFeedbackVaryings_remap_index }, - { 16094, Uniform1ui_remap_index }, - { 17464, Uniform1uiv_remap_index }, - { 24863, Uniform2ui_remap_index }, - { 15970, Uniform2uiv_remap_index }, - { 38531, Uniform3ui_remap_index }, - { 30443, Uniform3uiv_remap_index }, - { 4788, Uniform4ui_remap_index }, - { 26038, Uniform4uiv_remap_index }, - { 7467, VertexAttribI1iv_remap_index }, - { 20806, VertexAttribI1uiv_remap_index }, - { 5177, VertexAttribI4bv_remap_index }, - { 9014, VertexAttribI4sv_remap_index }, - { 24594, VertexAttribI4ubv_remap_index }, - { 1905, VertexAttribI4usv_remap_index }, - { 37365, VertexAttribIPointer_remap_index }, - { 35872, PrimitiveRestartIndex_remap_index }, - { 437, TexBuffer_remap_index }, - { 6329, FramebufferTexture_remap_index }, - { 31850, GetBufferParameteri64v_remap_index }, - { 12344, GetInteger64i_v_remap_index }, - { 3874, VertexAttribDivisor_remap_index }, - { 35564, MinSampleShading_remap_index }, - { 28298, BindProgramARB_remap_index }, - { 32670, DeleteProgramsARB_remap_index }, - { 16500, GenProgramsARB_remap_index }, - { 11976, GetProgramEnvParameterdvARB_remap_index }, - { 28428, GetProgramEnvParameterfvARB_remap_index }, - { 33279, GetProgramLocalParameterdvARB_remap_index }, - { 10128, GetProgramLocalParameterfvARB_remap_index }, - { 22242, GetProgramStringARB_remap_index }, - { 33567, GetProgramivARB_remap_index }, - { 34244, IsProgramARB_remap_index }, - { 23510, ProgramEnvParameter4dARB_remap_index }, - { 30370, ProgramEnvParameter4dvARB_remap_index }, - { 20160, ProgramEnvParameter4fARB_remap_index }, - { 11073, ProgramEnvParameter4fvARB_remap_index }, - { 4685, ProgramLocalParameter4dARB_remap_index }, - { 15592, ProgramLocalParameter4dvARB_remap_index }, - { 35979, ProgramLocalParameter4fARB_remap_index }, - { 31280, ProgramLocalParameter4fvARB_remap_index }, - { 34406, ProgramStringARB_remap_index }, - { 4983, VertexAttrib1fARB_remap_index }, - { 35303, VertexAttrib1fvARB_remap_index }, - { 1486, VertexAttrib2fARB_remap_index }, - { 10055, VertexAttrib2fvARB_remap_index }, - { 1565, VertexAttrib3fARB_remap_index }, - { 27055, VertexAttrib3fvARB_remap_index }, - { 13727, VertexAttrib4fARB_remap_index }, - { 14131, VertexAttrib4fvARB_remap_index }, - { 10324, AttachObjectARB_remap_index }, - { 3645, CreateProgramObjectARB_remap_index }, - { 37859, CreateShaderObjectARB_remap_index }, - { 17106, DeleteObjectARB_remap_index }, - { 28941, DetachObjectARB_remap_index }, - { 11534, GetAttachedObjectsARB_remap_index }, - { 11837, GetHandleARB_remap_index }, - { 39917, GetInfoLogARB_remap_index }, - { 39004, GetObjectParameterfvARB_remap_index }, - { 33069, GetObjectParameterivARB_remap_index }, - { 21654, DrawArraysInstancedARB_remap_index }, - { 8360, DrawElementsInstancedARB_remap_index }, - { 12060, BindFramebuffer_remap_index }, - { 33704, BindRenderbuffer_remap_index }, - { 37711, BlitFramebuffer_remap_index }, - { 28043, CheckFramebufferStatus_remap_index }, - { 33923, DeleteFramebuffers_remap_index }, - { 5056, DeleteRenderbuffers_remap_index }, - { 34154, FramebufferRenderbuffer_remap_index }, - { 1430, FramebufferTexture1D_remap_index }, - { 27831, FramebufferTexture2D_remap_index }, - { 19235, FramebufferTexture3D_remap_index }, - { 14846, FramebufferTextureLayer_remap_index }, - { 25882, GenFramebuffers_remap_index }, - { 40178, GenRenderbuffers_remap_index }, - { 30479, GenerateMipmap_remap_index }, - { 20260, GetFramebufferAttachmentParameteriv_remap_index }, - { 39969, GetRenderbufferParameteriv_remap_index }, - { 26074, IsFramebuffer_remap_index }, - { 14601, IsRenderbuffer_remap_index }, - { 2591, RenderbufferStorage_remap_index }, - { 15697, RenderbufferStorageMultisample_remap_index }, - { 31120, FramebufferTextureFaceARB_remap_index }, - { 20019, FlushMappedBufferRange_remap_index }, - { 35468, MapBufferRange_remap_index }, - { 19365, BindVertexArray_remap_index }, - { 25002, DeleteVertexArrays_remap_index }, - { 24659, GenVertexArrays_remap_index }, - { 21308, IsVertexArray_remap_index }, - { 14020, GetActiveUniformBlockName_remap_index }, - { 6430, GetActiveUniformBlockiv_remap_index }, - { 32351, GetActiveUniformName_remap_index }, - { 12829, GetActiveUniformsiv_remap_index }, - { 32863, GetUniformBlockIndex_remap_index }, - { 40570, GetUniformIndices_remap_index }, - { 6027, UniformBlockBinding_remap_index }, - { 36904, CopyBufferSubData_remap_index }, - { 38054, ClientWaitSync_remap_index }, - { 2824, DeleteSync_remap_index }, - { 9213, FenceSync_remap_index }, - { 17982, GetInteger64v_remap_index }, - { 27149, GetSynciv_remap_index }, - { 35844, IsSync_remap_index }, - { 40745, WaitSync_remap_index }, - { 36788, DrawElementsBaseVertex_remap_index }, - { 22313, DrawElementsInstancedBaseVertex_remap_index }, - { 37326, DrawRangeElementsBaseVertex_remap_index }, - { 31749, MultiDrawElementsBaseVertex_remap_index }, - { 19602, ProvokingVertex_remap_index }, - { 21367, GetMultisamplefv_remap_index }, - { 6185, SampleMaski_remap_index }, - { 7728, TexImage2DMultisample_remap_index }, - { 30552, TexImage3DMultisample_remap_index }, - { 30890, BlendEquationSeparateiARB_remap_index }, - { 21448, BlendEquationiARB_remap_index }, - { 15078, BlendFuncSeparateiARB_remap_index }, - { 11933, BlendFunciARB_remap_index }, - { 6673, BindFragDataLocationIndexed_remap_index }, - { 15239, GetFragDataIndex_remap_index }, - { 10194, BindSampler_remap_index }, - { 4962, DeleteSamplers_remap_index }, - { 9911, GenSamplers_remap_index }, - { 16907, GetSamplerParameterIiv_remap_index }, - { 23046, GetSamplerParameterIuiv_remap_index }, - { 6066, GetSamplerParameterfv_remap_index }, - { 30753, GetSamplerParameteriv_remap_index }, - { 16937, IsSampler_remap_index }, - { 19318, SamplerParameterIiv_remap_index }, - { 6246, SamplerParameterIuiv_remap_index }, - { 26786, SamplerParameterf_remap_index }, - { 19644, SamplerParameterfv_remap_index }, - { 26761, SamplerParameteri_remap_index }, - { 17592, SamplerParameteriv_remap_index }, - { 6380, GetQueryObjecti64v_remap_index }, - { 385, GetQueryObjectui64v_remap_index }, - { 7961, QueryCounter_remap_index }, - { 17002, ColorP3ui_remap_index }, - { 37648, ColorP3uiv_remap_index }, - { 24800, ColorP4ui_remap_index }, - { 16006, ColorP4uiv_remap_index }, - { 11509, MultiTexCoordP1ui_remap_index }, - { 15052, MultiTexCoordP1uiv_remap_index }, - { 20959, MultiTexCoordP2ui_remap_index }, - { 15171, MultiTexCoordP2uiv_remap_index }, - { 16537, MultiTexCoordP3ui_remap_index }, - { 12639, MultiTexCoordP3uiv_remap_index }, - { 26371, MultiTexCoordP4ui_remap_index }, - { 16162, MultiTexCoordP4uiv_remap_index }, - { 12536, NormalP3ui_remap_index }, - { 22829, NormalP3uiv_remap_index }, - { 29775, SecondaryColorP3ui_remap_index }, - { 22847, SecondaryColorP3uiv_remap_index }, - { 888, TexCoordP1ui_remap_index }, - { 2459, TexCoordP1uiv_remap_index }, - { 17420, TexCoordP2ui_remap_index }, - { 13314, TexCoordP2uiv_remap_index }, - { 15011, TexCoordP3ui_remap_index }, - { 25136, TexCoordP3uiv_remap_index }, - { 1753, TexCoordP4ui_remap_index }, - { 6987, TexCoordP4uiv_remap_index }, - { 15430, VertexAttribP1ui_remap_index }, - { 15855, VertexAttribP1uiv_remap_index }, - { 9886, VertexAttribP2ui_remap_index }, - { 34789, VertexAttribP2uiv_remap_index }, - { 5712, VertexAttribP3ui_remap_index }, - { 31637, VertexAttribP3uiv_remap_index }, - { 16848, VertexAttribP4ui_remap_index }, - { 18845, VertexAttribP4uiv_remap_index }, - { 6229, VertexP2ui_remap_index }, - { 37469, VertexP2uiv_remap_index }, - { 3438, VertexP3ui_remap_index }, - { 23956, VertexP3uiv_remap_index }, - { 11492, VertexP4ui_remap_index }, - { 39433, VertexP4uiv_remap_index }, - { 2840, DrawArraysIndirect_remap_index }, - { 7188, DrawElementsIndirect_remap_index }, - { 6774, BindTransformFeedback_remap_index }, - { 12394, DeleteTransformFeedbacks_remap_index }, - { 8332, DrawTransformFeedback_remap_index }, - { 11727, GenTransformFeedbacks_remap_index }, - { 36290, IsTransformFeedback_remap_index }, - { 31352, PauseTransformFeedback_remap_index }, - { 36531, ResumeTransformFeedback_remap_index }, - { 2479, BeginQueryIndexed_remap_index }, - { 28127, DrawTransformFeedbackStream_remap_index }, - { 18109, EndQueryIndexed_remap_index }, - { 321, GetQueryIndexediv_remap_index }, - { 32941, ClearDepthf_remap_index }, - { 8617, DepthRangef_remap_index }, - { 17127, GetShaderPrecisionFormat_remap_index }, - { 12121, ReleaseShaderCompiler_remap_index }, - { 13292, ShaderBinary_remap_index }, - { 19434, GetProgramBinary_remap_index }, - { 4722, ProgramBinary_remap_index }, - { 5325, ProgramParameteri_remap_index }, - { 40128, DepthRangeArrayv_remap_index }, - { 31930, DepthRangeIndexed_remap_index }, - { 39050, GetDoublei_v_remap_index }, - { 22269, GetFloati_v_remap_index }, - { 33618, ScissorArrayv_remap_index }, - { 12553, ScissorIndexed_remap_index }, - { 23911, ScissorIndexedv_remap_index }, - { 672, ViewportArrayv_remap_index }, - { 7539, ViewportIndexedf_remap_index }, - { 32553, ViewportIndexedfv_remap_index }, - { 1217, DebugMessageCallbackARB_remap_index }, - { 11855, DebugMessageControlARB_remap_index }, - { 39855, DebugMessageInsertARB_remap_index }, - { 3100, GetDebugMessageLogARB_remap_index }, - { 34733, GetGraphicsResetStatusARB_remap_index }, - { 29614, GetnColorTableARB_remap_index }, - { 9976, GetnCompressedTexImageARB_remap_index }, - { 4422, GetnConvolutionFilterARB_remap_index }, - { 18537, GetnHistogramARB_remap_index }, - { 28335, GetnMapdvARB_remap_index }, - { 35166, GetnMapfvARB_remap_index }, - { 2080, GetnMapivARB_remap_index }, - { 20633, GetnMinmaxARB_remap_index }, - { 14238, GetnPixelMapfvARB_remap_index }, - { 22976, GetnPixelMapuivARB_remap_index }, - { 35818, GetnPixelMapusvARB_remap_index }, - { 1139, GetnPolygonStippleARB_remap_index }, - { 25455, GetnSeparableFilterARB_remap_index }, - { 39752, GetnTexImageARB_remap_index }, - { 22288, GetnUniformdvARB_remap_index }, - { 9244, GetnUniformfvARB_remap_index }, - { 12011, GetnUniformivARB_remap_index }, - { 8306, GetnUniformuivARB_remap_index }, - { 3285, ReadnPixelsARB_remap_index }, - { 22764, DrawArraysInstancedBaseInstance_remap_index }, - { 35730, DrawElementsInstancedBaseInstance_remap_index }, - { 9709, DrawElementsInstancedBaseVertexBaseInstance_remap_index }, - { 7132, DrawTransformFeedbackInstanced_remap_index }, - { 10010, DrawTransformFeedbackStreamInstanced_remap_index }, - { 36101, GetInternalformativ_remap_index }, - { 31678, GetActiveAtomicCounterBufferiv_remap_index }, - { 31397, BindImageTexture_remap_index }, - { 38779, MemoryBarrier_remap_index }, - { 1072, TexStorage1D_remap_index }, - { 5265, TexStorage2D_remap_index }, - { 19058, TexStorage3D_remap_index }, - { 5566, TextureStorage1DEXT_remap_index }, - { 6802, TextureStorage2DEXT_remap_index }, - { 1399, TextureStorage3DEXT_remap_index }, - { 21187, ClearBufferData_remap_index }, - { 8276, ClearBufferSubData_remap_index }, - { 33996, DispatchCompute_remap_index }, - { 29087, DispatchComputeIndirect_remap_index }, - { 5771, TextureView_remap_index }, - { 40789, BindVertexBuffer_remap_index }, - { 8490, VertexAttribBinding_remap_index }, - { 12611, VertexAttribFormat_remap_index }, - { 22099, VertexAttribIFormat_remap_index }, - { 11699, VertexAttribLFormat_remap_index }, - { 34127, VertexBindingDivisor_remap_index }, - { 15480, MultiDrawArraysIndirect_remap_index }, - { 27002, MultiDrawElementsIndirect_remap_index }, - { 26641, TexBufferRange_remap_index }, - { 18811, TexStorage2DMultisample_remap_index }, - { 23675, TexStorage3DMultisample_remap_index }, - { 25490, InvalidateBufferData_remap_index }, - { 18977, InvalidateBufferSubData_remap_index }, - { 38566, InvalidateFramebuffer_remap_index }, - { 24722, InvalidateSubFramebuffer_remap_index }, - { 4763, InvalidateTexImage_remap_index }, - { 13870, InvalidateTexSubImage_remap_index }, - { 7216, PolygonOffsetEXT_remap_index }, - { 14978, DrawTexfOES_remap_index }, - { 11888, DrawTexfvOES_remap_index }, - { 3400, DrawTexiOES_remap_index }, - { 28697, DrawTexivOES_remap_index }, - { 24842, DrawTexsOES_remap_index }, - { 22934, DrawTexsvOES_remap_index }, - { 1528, DrawTexxOES_remap_index }, - { 12990, DrawTexxvOES_remap_index }, - { 2373, PointSizePointerOES_remap_index }, - { 13270, QueryMatrixxOES_remap_index }, - { 31005, SampleMaskSGIS_remap_index }, - { 24758, SamplePatternSGIS_remap_index }, - { 23886, ColorPointerEXT_remap_index }, - { 21282, EdgeFlagPointerEXT_remap_index }, - { 7443, IndexPointerEXT_remap_index }, - { 8063, NormalPointerEXT_remap_index }, - { 18605, TexCoordPointerEXT_remap_index }, - { 8960, VertexPointerEXT_remap_index }, - { 6709, DiscardFramebufferEXT_remap_index }, - { 39128, LockArraysEXT_remap_index }, - { 26621, UnlockArraysEXT_remap_index }, - { 7994, DebugMessageCallback_remap_index }, - { 34858, DebugMessageControl_remap_index }, - { 21807, DebugMessageInsert_remap_index }, - { 27395, GetDebugMessageLog_remap_index }, - { 26396, GetObjectLabel_remap_index }, - { 5239, GetObjectPtrLabel_remap_index }, - { 31332, ObjectLabel_remap_index }, - { 39208, ObjectPtrLabel_remap_index }, - { 26131, PopDebugGroup_remap_index }, - { 36559, PushDebugGroup_remap_index }, - { 34019, SecondaryColor3fEXT_remap_index }, - { 21989, SecondaryColor3fvEXT_remap_index }, - { 25302, MultiDrawElementsEXT_remap_index }, - { 5826, FogCoordfEXT_remap_index }, - { 32890, FogCoordfvEXT_remap_index }, - { 15030, ResizeBuffersMESA_remap_index }, - { 13397, WindowPos4dMESA_remap_index }, - { 7239, WindowPos4dvMESA_remap_index }, - { 16655, WindowPos4fMESA_remap_index }, - { 37555, WindowPos4fvMESA_remap_index }, - { 37058, WindowPos4iMESA_remap_index }, - { 14824, WindowPos4ivMESA_remap_index }, - { 22952, WindowPos4sMESA_remap_index }, - { 3623, WindowPos4svMESA_remap_index }, - { 23245, MultiModeDrawArraysIBM_remap_index }, - { 35255, MultiModeDrawElementsIBM_remap_index }, - { 38798, AreProgramsResidentNV_remap_index }, - { 25597, ExecuteProgramNV_remap_index }, - { 19768, GetProgramParameterdvNV_remap_index }, - { 12797, GetProgramParameterfvNV_remap_index }, - { 31611, GetProgramStringNV_remap_index }, - { 29342, GetProgramivNV_remap_index }, - { 28463, GetTrackMatrixivNV_remap_index }, - { 12367, GetVertexAttribdvNV_remap_index }, - { 22717, GetVertexAttribfvNV_remap_index }, - { 22215, GetVertexAttribivNV_remap_index }, - { 11458, LoadProgramNV_remap_index }, - { 33749, ProgramParameters4dvNV_remap_index }, - { 35382, ProgramParameters4fvNV_remap_index }, - { 25104, RequestResidentProgramsNV_remap_index }, - { 556, TrackMatrixNV_remap_index }, - { 13175, VertexAttrib1dNV_remap_index }, - { 16070, VertexAttrib1dvNV_remap_index }, - { 31068, VertexAttrib1fNV_remap_index }, - { 24897, VertexAttrib1fvNV_remap_index }, - { 37612, VertexAttrib1sNV_remap_index }, - { 27168, VertexAttrib1svNV_remap_index }, - { 38143, VertexAttrib2dNV_remap_index }, - { 23104, VertexAttrib2dvNV_remap_index }, - { 24541, VertexAttrib2fNV_remap_index }, - { 15568, VertexAttrib2fvNV_remap_index }, - { 7807, VertexAttrib2sNV_remap_index }, - { 22805, VertexAttrib2svNV_remap_index }, - { 13608, VertexAttrib3dNV_remap_index }, - { 38980, VertexAttrib3dvNV_remap_index }, - { 19800, VertexAttrib3fNV_remap_index }, - { 29641, VertexAttrib3fvNV_remap_index }, - { 28356, VertexAttrib3sNV_remap_index }, - { 28490, VertexAttrib3svNV_remap_index }, - { 35229, VertexAttrib4dNV_remap_index }, - { 13198, VertexAttrib4dvNV_remap_index }, - { 5495, VertexAttrib4fNV_remap_index }, - { 23829, VertexAttrib4fvNV_remap_index }, - { 32261, VertexAttrib4sNV_remap_index }, - { 1247, VertexAttrib4svNV_remap_index }, - { 6462, VertexAttrib4ubNV_remap_index }, - { 694, VertexAttrib4ubvNV_remap_index }, - { 25851, VertexAttribPointerNV_remap_index }, - { 2246, VertexAttribs1dvNV_remap_index }, - { 22873, VertexAttribs1fvNV_remap_index }, - { 24816, VertexAttribs1svNV_remap_index }, - { 12665, VertexAttribs2dvNV_remap_index }, - { 36459, VertexAttribs2fvNV_remap_index }, - { 4824, VertexAttribs2svNV_remap_index }, - { 7007, VertexAttribs3dvNV_remap_index }, - { 11783, VertexAttribs3fvNV_remap_index }, - { 12585, VertexAttribs3svNV_remap_index }, - { 21118, VertexAttribs4dvNV_remap_index }, - { 7033, VertexAttribs4fvNV_remap_index }, - { 40152, VertexAttribs4svNV_remap_index }, - { 36130, VertexAttribs4ubvNV_remap_index }, - { 28267, GetTexBumpParameterfvATI_remap_index }, - { 40596, GetTexBumpParameterivATI_remap_index }, - { 22389, TexBumpParameterfvATI_remap_index }, - { 24921, TexBumpParameterivATI_remap_index }, - { 18489, AlphaFragmentOp1ATI_remap_index }, - { 30957, AlphaFragmentOp2ATI_remap_index }, - { 29557, AlphaFragmentOp3ATI_remap_index }, - { 16628, BeginFragmentShaderATI_remap_index }, - { 11906, BindFragmentShaderATI_remap_index }, - { 7776, ColorFragmentOp1ATI_remap_index }, - { 7649, ColorFragmentOp2ATI_remap_index }, - { 38666, ColorFragmentOp3ATI_remap_index }, - { 7361, DeleteFragmentShaderATI_remap_index }, - { 40898, EndFragmentShaderATI_remap_index }, - { 28195, GenFragmentShadersATI_remap_index }, - { 30711, PassTexCoordATI_remap_index }, - { 8898, SampleMapATI_remap_index }, - { 32740, SetFragmentShaderConstantATI_remap_index }, - { 35058, ActiveStencilFaceEXT_remap_index }, - { 33253, BindVertexArrayAPPLE_remap_index }, - { 20218, GenVertexArraysAPPLE_remap_index }, - { 735, GetProgramNamedParameterdvNV_remap_index }, - { 4121, GetProgramNamedParameterfvNV_remap_index }, - { 32495, ProgramNamedParameter4dNV_remap_index }, - { 17226, ProgramNamedParameter4dvNV_remap_index }, - { 10962, ProgramNamedParameter4fNV_remap_index }, - { 14096, ProgramNamedParameter4fvNV_remap_index }, - { 21259, PrimitiveRestartNV_remap_index }, - { 18449, GetTexGenxvOES_remap_index }, - { 12440, TexGenxOES_remap_index }, - { 33376, TexGenxvOES_remap_index }, - { 29321, DepthBoundsEXT_remap_index }, - { 17439, BindFramebufferEXT_remap_index }, - { 31042, BindRenderbufferEXT_remap_index }, - { 17018, BufferParameteriAPPLE_remap_index }, - { 23426, FlushMappedBufferRangeAPPLE_remap_index }, - { 22127, VertexAttribI1iEXT_remap_index }, - { 2731, VertexAttribI1uiEXT_remap_index }, - { 34620, VertexAttribI2iEXT_remap_index }, - { 28805, VertexAttribI2ivEXT_remap_index }, - { 14534, VertexAttribI2uiEXT_remap_index }, - { 28381, VertexAttribI2uivEXT_remap_index }, - { 31990, VertexAttribI3iEXT_remap_index }, - { 37281, VertexAttribI3ivEXT_remap_index }, - { 3827, VertexAttribI3uiEXT_remap_index }, - { 37177, VertexAttribI3uivEXT_remap_index }, - { 220, VertexAttribI4iEXT_remap_index }, - { 12691, VertexAttribI4ivEXT_remap_index }, - { 101, VertexAttribI4uiEXT_remap_index }, - { 34, VertexAttribI4uivEXT_remap_index }, - { 12036, ClearColorIiEXT_remap_index }, - { 3980, ClearColorIuiEXT_remap_index }, - { 10252, BindBufferOffsetEXT_remap_index }, - { 27568, BeginPerfMonitorAMD_remap_index }, - { 38714, DeletePerfMonitorsAMD_remap_index }, - { 20610, EndPerfMonitorAMD_remap_index }, - { 31805, GenPerfMonitorsAMD_remap_index }, - { 6887, GetPerfMonitorCounterDataAMD_remap_index }, - { 5946, GetPerfMonitorCounterInfoAMD_remap_index }, - { 39581, GetPerfMonitorCounterStringAMD_remap_index }, - { 22899, GetPerfMonitorCountersAMD_remap_index }, - { 13771, GetPerfMonitorGroupStringAMD_remap_index }, - { 38095, GetPerfMonitorGroupsAMD_remap_index }, - { 20122, SelectPerfMonitorCountersAMD_remap_index }, - { 13920, GetObjectParameterivAPPLE_remap_index }, - { 38225, ObjectPurgeableAPPLE_remap_index }, - { 7603, ObjectUnpurgeableAPPLE_remap_index }, - { 20984, ActiveProgramEXT_remap_index }, - { 2051, CreateShaderProgramEXT_remap_index }, - { 34763, UseShaderProgramEXT_remap_index }, - { 17160, TextureBarrierNV_remap_index }, - { 9946, VDPAUFiniNV_remap_index }, - { 3134, VDPAUGetSurfaceivNV_remap_index }, - { 7170, VDPAUInitNV_remap_index }, - { 17350, VDPAUIsSurfaceNV_remap_index }, - { 25979, VDPAUMapSurfacesNV_remap_index }, - { 11372, VDPAURegisterOutputSurfaceNV_remap_index }, - { 6738, VDPAURegisterVideoSurfaceNV_remap_index }, - { 32713, VDPAUSurfaceAccessNV_remap_index }, - { 30095, VDPAUUnmapSurfacesNV_remap_index }, - { 25719, VDPAUUnregisterSurfaceNV_remap_index }, - { 35118, StencilFuncSeparateATI_remap_index }, - { 21876, ProgramEnvParameters4fvEXT_remap_index }, - { 20657, ProgramLocalParameters4fvEXT_remap_index }, - { 28762, EGLImageTargetRenderbufferStorageOES_remap_index }, - { 14501, EGLImageTargetTexture2DOES_remap_index }, - { 28603, AlphaFuncx_remap_index }, - { 20922, ClearColorx_remap_index }, - { 26004, ClearDepthx_remap_index }, - { 10745, Color4x_remap_index }, - { 8206, DepthRangex_remap_index }, - { 40673, Fogx_remap_index }, - { 37487, Fogxv_remap_index }, - { 36157, Frustumf_remap_index }, - { 4048, Frustumx_remap_index }, - { 31955, LightModelx_remap_index }, - { 36253, LightModelxv_remap_index }, - { 26293, Lightx_remap_index }, - { 13489, Lightxv_remap_index }, - { 21957, LineWidthx_remap_index }, - { 4864, LoadMatrixx_remap_index }, - { 27117, Materialx_remap_index }, - { 39821, Materialxv_remap_index }, - { 10614, MultMatrixx_remap_index }, - { 34431, MultiTexCoord4x_remap_index }, - { 13633, Normal3x_remap_index }, - { 10999, Orthof_remap_index }, - { 22644, Orthox_remap_index }, - { 35786, PointSizex_remap_index }, - { 4599, PolygonOffsetx_remap_index }, - { 31091, Rotatex_remap_index }, - { 8678, SampleCoveragex_remap_index }, - { 7261, Scalex_remap_index }, - { 22547, TexEnvx_remap_index }, - { 25245, TexEnvxv_remap_index }, - { 6274, TexParameterx_remap_index }, - { 35084, Translatex_remap_index }, - { 39503, ClipPlanef_remap_index }, - { 39243, ClipPlanex_remap_index }, - { 18717, GetClipPlanef_remap_index }, - { 4473, GetClipPlanex_remap_index }, - { 33673, GetFixedv_remap_index }, - { 4158, GetLightxv_remap_index }, - { 4276, GetMaterialxv_remap_index }, - { 29739, GetTexEnvxv_remap_index }, - { 21732, GetTexParameterxv_remap_index }, - { 5669, PointParameterx_remap_index }, - { 14384, PointParameterxv_remap_index }, - { 30848, TexParameterxv_remap_index }, + { 17150, CompressedTexImage1D_remap_index }, + { 14764, CompressedTexImage2D_remap_index }, + { 10802, CompressedTexImage3D_remap_index }, + { 27365, CompressedTexSubImage1D_remap_index }, + { 32998, CompressedTexSubImage2D_remap_index }, + { 5573, CompressedTexSubImage3D_remap_index }, + { 3741, GetCompressedTexImage_remap_index }, + { 16406, LoadTransposeMatrixd_remap_index }, + { 16354, LoadTransposeMatrixf_remap_index }, + { 30646, MultTransposeMatrixd_remap_index }, + { 12086, MultTransposeMatrixf_remap_index }, + { 40326, SampleCoverage_remap_index }, + { 3042, BlendFuncSeparate_remap_index }, + { 19856, FogCoordPointer_remap_index }, + { 36526, FogCoordd_remap_index }, + { 36302, FogCoorddv_remap_index }, + { 29764, MultiDrawArrays_remap_index }, + { 28209, PointParameterf_remap_index }, + { 4283, PointParameterfv_remap_index }, + { 28167, PointParameteri_remap_index }, + { 7778, PointParameteriv_remap_index }, + { 4705, SecondaryColor3b_remap_index }, + { 36117, SecondaryColor3bv_remap_index }, + { 30784, SecondaryColor3d_remap_index }, + { 10935, SecondaryColor3dv_remap_index }, + { 4801, SecondaryColor3i_remap_index }, + { 26596, SecondaryColor3iv_remap_index }, + { 4581, SecondaryColor3s_remap_index }, + { 14074, SecondaryColor3sv_remap_index }, + { 20009, SecondaryColor3ub_remap_index }, + { 6466, SecondaryColor3ubv_remap_index }, + { 20057, SecondaryColor3ui_remap_index }, + { 21910, SecondaryColor3uiv_remap_index }, + { 19900, SecondaryColor3us_remap_index }, + { 8701, SecondaryColor3usv_remap_index }, + { 31809, SecondaryColorPointer_remap_index }, + { 10560, WindowPos2d_remap_index }, + { 15446, WindowPos2dv_remap_index }, + { 10507, WindowPos2f_remap_index }, + { 21296, WindowPos2fv_remap_index }, + { 10613, WindowPos2i_remap_index }, + { 5827, WindowPos2iv_remap_index }, + { 10666, WindowPos2s_remap_index }, + { 42028, WindowPos2sv_remap_index }, + { 14321, WindowPos3d_remap_index }, + { 13842, WindowPos3dv_remap_index }, + { 14408, WindowPos3f_remap_index }, + { 7637, WindowPos3fv_remap_index }, + { 14517, WindowPos3i_remap_index }, + { 41018, WindowPos3iv_remap_index }, + { 14633, WindowPos3s_remap_index }, + { 22633, WindowPos3sv_remap_index }, + { 5709, BeginQuery_remap_index }, + { 40937, BindBuffer_remap_index }, + { 34977, BufferData_remap_index }, + { 9175, BufferSubData_remap_index }, + { 28480, DeleteBuffers_remap_index }, + { 20303, DeleteQueries_remap_index }, + { 17973, EndQuery_remap_index }, + { 38469, GenBuffers_remap_index }, + { 1755, GenQueries_remap_index }, + { 26064, GetBufferParameteriv_remap_index }, + { 38334, GetBufferPointerv_remap_index }, + { 28519, GetBufferSubData_remap_index }, + { 7347, GetQueryObjectiv_remap_index }, + { 7047, GetQueryObjectuiv_remap_index }, + { 11128, GetQueryiv_remap_index }, + { 16840, IsBuffer_remap_index }, + { 26343, IsQuery_remap_index }, + { 11239, MapBuffer_remap_index }, + { 40691, UnmapBuffer_remap_index }, + { 315, AttachShader_remap_index }, + { 33466, BindAttribLocation_remap_index }, + { 38536, BlendEquationSeparate_remap_index }, + { 29463, CompileShader_remap_index }, + { 22928, CreateProgram_remap_index }, + { 28395, CreateShader_remap_index }, + { 18770, DeleteProgram_remap_index }, + { 29445, DeleteShader_remap_index }, + { 40254, DetachShader_remap_index }, + { 31513, DisableVertexAttribArray_remap_index }, + { 21094, DrawBuffers_remap_index }, + { 38761, EnableVertexAttribArray_remap_index }, + { 34119, GetActiveAttrib_remap_index }, + { 39187, GetActiveUniform_remap_index }, + { 15993, GetAttachedShaders_remap_index }, + { 25061, GetAttribLocation_remap_index }, + { 10217, GetProgramInfoLog_remap_index }, + { 20830, GetProgramiv_remap_index }, + { 3507, GetShaderInfoLog_remap_index }, + { 6769, GetShaderSource_remap_index }, + { 15754, GetShaderiv_remap_index }, + { 5760, GetUniformLocation_remap_index }, + { 12239, GetUniformfv_remap_index }, + { 1991, GetUniformiv_remap_index }, + { 32177, GetVertexAttribPointerv_remap_index }, + { 38286, GetVertexAttribdv_remap_index }, + { 32759, GetVertexAttribfv_remap_index }, + { 35151, GetVertexAttribiv_remap_index }, + { 3927, IsProgram_remap_index }, + { 35698, IsShader_remap_index }, + { 26789, LinkProgram_remap_index }, + { 34794, ShaderSource_remap_index }, + { 34766, StencilFuncSeparate_remap_index }, + { 33081, StencilMaskSeparate_remap_index }, + { 34263, StencilOpSeparate_remap_index }, + { 37618, Uniform1f_remap_index }, + { 7523, Uniform1fv_remap_index }, + { 37678, Uniform1i_remap_index }, + { 17021, Uniform1iv_remap_index }, + { 39822, Uniform2f_remap_index }, + { 21030, Uniform2fv_remap_index }, + { 39894, Uniform2i_remap_index }, + { 19012, Uniform2iv_remap_index }, + { 858, Uniform3f_remap_index }, + { 35263, Uniform3fv_remap_index }, + { 771, Uniform3i_remap_index }, + { 36556, Uniform3iv_remap_index }, + { 4197, Uniform4f_remap_index }, + { 8189, Uniform4fv_remap_index }, + { 4134, Uniform4i_remap_index }, + { 42173, Uniform4iv_remap_index }, + { 9281, UniformMatrix2fv_remap_index }, + { 21644, UniformMatrix3fv_remap_index }, + { 9750, UniformMatrix4fv_remap_index }, + { 37771, UseProgram_remap_index }, + { 23046, ValidateProgram_remap_index }, + { 17109, VertexAttrib1d_remap_index }, + { 35621, VertexAttrib1dv_remap_index }, + { 17232, VertexAttrib1s_remap_index }, + { 32607, VertexAttrib1sv_remap_index }, + { 7481, VertexAttrib2d_remap_index }, + { 22384, VertexAttrib2dv_remap_index }, + { 7393, VertexAttrib2s_remap_index }, + { 13491, VertexAttrib2sv_remap_index }, + { 11162, VertexAttrib3d_remap_index }, + { 20954, VertexAttrib3dv_remap_index }, + { 11037, VertexAttrib3s_remap_index }, + { 37466, VertexAttrib3sv_remap_index }, + { 11285, VertexAttrib4Nbv_remap_index }, + { 26685, VertexAttrib4Niv_remap_index }, + { 19315, VertexAttrib4Nsv_remap_index }, + { 1408, VertexAttrib4Nub_remap_index }, + { 31070, VertexAttrib4Nubv_remap_index }, + { 9824, VertexAttrib4Nuiv_remap_index }, + { 33348, VertexAttrib4Nusv_remap_index }, + { 8631, VertexAttrib4bv_remap_index }, + { 26904, VertexAttrib4d_remap_index }, + { 27281, VertexAttrib4dv_remap_index }, + { 36668, VertexAttrib4iv_remap_index }, + { 26972, VertexAttrib4s_remap_index }, + { 18073, VertexAttrib4sv_remap_index }, + { 9510, VertexAttrib4ubv_remap_index }, + { 19270, VertexAttrib4uiv_remap_index }, + { 1334, VertexAttrib4usv_remap_index }, + { 31155, VertexAttribPointer_remap_index }, + { 28007, UniformMatrix2x3fv_remap_index }, + { 891, UniformMatrix2x4fv_remap_index }, + { 9797, UniformMatrix3x2fv_remap_index }, + { 41181, UniformMatrix3x4fv_remap_index }, + { 37013, UniformMatrix4x2fv_remap_index }, + { 11080, UniformMatrix4x3fv_remap_index }, + { 15660, BeginConditionalRender_remap_index }, + { 23130, BeginTransformFeedback_remap_index }, + { 11961, BindBufferBase_remap_index }, + { 7266, BindBufferRange_remap_index }, + { 21428, BindFragDataLocation_remap_index }, + { 22492, ClampColor_remap_index }, + { 16020, ClearBufferfi_remap_index }, + { 15869, ClearBufferfv_remap_index }, + { 19738, ClearBufferiv_remap_index }, + { 36380, ClearBufferuiv_remap_index }, + { 12541, ColorMaski_remap_index }, + { 35742, Disablei_remap_index }, + { 14375, Enablei_remap_index }, + { 21958, EndConditionalRender_remap_index }, + { 18589, EndTransformFeedback_remap_index }, + { 11473, GetBooleani_v_remap_index }, + { 37869, GetFragDataLocation_remap_index }, + { 19759, GetIntegeri_v_remap_index }, + { 27264, GetStringi_remap_index }, + { 28978, GetTexParameterIiv_remap_index }, + { 12737, GetTexParameterIuiv_remap_index }, + { 29192, GetTransformFeedbackVarying_remap_index }, + { 34564, GetUniformuiv_remap_index }, + { 41407, GetVertexAttribIiv_remap_index }, + { 19570, GetVertexAttribIuiv_remap_index }, + { 32092, IsEnabledi_remap_index }, + { 18828, TexParameterIiv_remap_index }, + { 15501, TexParameterIuiv_remap_index }, + { 37401, TransformFeedbackVaryings_remap_index }, + { 5196, Uniform1ui_remap_index }, + { 24501, Uniform1uiv_remap_index }, + { 23950, Uniform2ui_remap_index }, + { 12583, Uniform2uiv_remap_index }, + { 31407, Uniform3ui_remap_index }, + { 18132, Uniform3uiv_remap_index }, + { 11396, Uniform4ui_remap_index }, + { 17055, Uniform4uiv_remap_index }, + { 33694, VertexAttribI1iv_remap_index }, + { 10888, VertexAttribI1uiv_remap_index }, + { 7095, VertexAttribI4bv_remap_index }, + { 9661, VertexAttribI4sv_remap_index }, + { 7989, VertexAttribI4ubv_remap_index }, + { 6608, VertexAttribI4usv_remap_index }, + { 38705, VertexAttribIPointer_remap_index }, + { 7936, PrimitiveRestartIndex_remap_index }, + { 32279, TexBuffer_remap_index }, + { 111, FramebufferTexture_remap_index }, + { 22898, GetBufferParameteri64v_remap_index }, + { 38037, GetInteger64i_v_remap_index }, + { 39019, VertexAttribDivisor_remap_index }, + { 41856, MinSampleShading_remap_index }, + { 6814, BindProgramARB_remap_index }, + { 29630, DeleteProgramsARB_remap_index }, + { 14462, GenProgramsARB_remap_index }, + { 13534, GetProgramEnvParameterdvARB_remap_index }, + { 28445, GetProgramEnvParameterfvARB_remap_index }, + { 29809, GetProgramLocalParameterdvARB_remap_index }, + { 35963, GetProgramLocalParameterfvARB_remap_index }, + { 21573, GetProgramStringARB_remap_index }, + { 7822, GetProgramivARB_remap_index }, + { 30080, IsProgramARB_remap_index }, + { 16474, ProgramEnvParameter4dARB_remap_index }, + { 2502, ProgramEnvParameter4dvARB_remap_index }, + { 37169, ProgramEnvParameter4fARB_remap_index }, + { 23635, ProgramEnvParameter4fvARB_remap_index }, + { 22008, ProgramLocalParameter4dARB_remap_index }, + { 3797, ProgramLocalParameter4dvARB_remap_index }, + { 29361, ProgramLocalParameter4fARB_remap_index }, + { 18391, ProgramLocalParameter4fvARB_remap_index }, + { 30152, ProgramStringARB_remap_index }, + { 11432, VertexAttrib1fARB_remap_index }, + { 30550, VertexAttrib1fvARB_remap_index }, + { 21254, VertexAttrib2fARB_remap_index }, + { 12834, VertexAttrib2fvARB_remap_index }, + { 334, VertexAttrib3fARB_remap_index }, + { 25353, VertexAttrib3fvARB_remap_index }, + { 24235, VertexAttrib4fARB_remap_index }, + { 13799, VertexAttrib4fvARB_remap_index }, + { 34351, AttachObjectARB_remap_index }, + { 21617, CreateProgramObjectARB_remap_index }, + { 15918, CreateShaderObjectARB_remap_index }, + { 14823, DeleteObjectARB_remap_index }, + { 36808, DetachObjectARB_remap_index }, + { 34690, GetAttachedObjectsARB_remap_index }, + { 23840, GetHandleARB_remap_index }, + { 19687, GetInfoLogARB_remap_index }, + { 20469, GetObjectParameterfvARB_remap_index }, + { 40367, GetObjectParameterivARB_remap_index }, + { 5308, DrawArraysInstancedARB_remap_index }, + { 6962, DrawElementsInstancedARB_remap_index }, + { 13297, BindFramebuffer_remap_index }, + { 7845, BindRenderbuffer_remap_index }, + { 32465, BlitFramebuffer_remap_index }, + { 6031, CheckFramebufferStatus_remap_index }, + { 19171, DeleteFramebuffers_remap_index }, + { 35545, DeleteRenderbuffers_remap_index }, + { 29990, FramebufferRenderbuffer_remap_index }, + { 32516, FramebufferTexture1D_remap_index }, + { 22273, FramebufferTexture2D_remap_index }, + { 25950, FramebufferTexture3D_remap_index }, + { 35806, FramebufferTextureLayer_remap_index }, + { 38405, GenFramebuffers_remap_index }, + { 31971, GenRenderbuffers_remap_index }, + { 7206, GenerateMipmap_remap_index }, + { 5004, GetFramebufferAttachmentParameteriv_remap_index }, + { 41900, GetRenderbufferParameteriv_remap_index }, + { 6195, IsFramebuffer_remap_index }, + { 24583, IsRenderbuffer_remap_index }, + { 629, RenderbufferStorage_remap_index }, + { 14245, RenderbufferStorageMultisample_remap_index }, + { 18323, FramebufferTextureFaceARB_remap_index }, + { 4931, FlushMappedBufferRange_remap_index }, + { 29846, MapBufferRange_remap_index }, + { 12676, BindVertexArray_remap_index }, + { 1102, DeleteVertexArrays_remap_index }, + { 16748, GenVertexArrays_remap_index }, + { 37509, IsVertexArray_remap_index }, + { 12456, GetActiveUniformBlockName_remap_index }, + { 41674, GetActiveUniformBlockiv_remap_index }, + { 2928, GetActiveUniformName_remap_index }, + { 13462, GetActiveUniformsiv_remap_index }, + { 40227, GetUniformBlockIndex_remap_index }, + { 9921, GetUniformIndices_remap_index }, + { 33305, UniformBlockBinding_remap_index }, + { 41136, CopyBufferSubData_remap_index }, + { 41457, ClientWaitSync_remap_index }, + { 10764, DeleteSync_remap_index }, + { 33332, FenceSync_remap_index }, + { 36788, GetInteger64v_remap_index }, + { 38875, GetSynciv_remap_index }, + { 14844, IsSync_remap_index }, + { 32161, WaitSync_remap_index }, + { 12491, DrawElementsBaseVertex_remap_index }, + { 16108, DrawElementsInstancedBaseVertex_remap_index }, + { 36034, DrawRangeElementsBaseVertex_remap_index }, + { 39926, MultiDrawElementsBaseVertex_remap_index }, + { 23380, ProvokingVertex_remap_index }, + { 5253, GetMultisamplefv_remap_index }, + { 33801, SampleMaski_remap_index }, + { 1861, TexImage2DMultisample_remap_index }, + { 40170, TexImage3DMultisample_remap_index }, + { 22086, BlendEquationSeparateiARB_remap_index }, + { 26449, BlendEquationiARB_remap_index }, + { 3559, BlendFuncSeparateiARB_remap_index }, + { 23880, BlendFunciARB_remap_index }, + { 1626, BindFragDataLocationIndexed_remap_index }, + { 27853, GetFragDataIndex_remap_index }, + { 2649, BindSampler_remap_index }, + { 41267, DeleteSamplers_remap_index }, + { 34312, GenSamplers_remap_index }, + { 2369, GetSamplerParameterIiv_remap_index }, + { 5497, GetSamplerParameterIuiv_remap_index }, + { 22355, GetSamplerParameterfv_remap_index }, + { 24016, GetSamplerParameteriv_remap_index }, + { 25206, IsSampler_remap_index }, + { 37040, SamplerParameterIiv_remap_index }, + { 11800, SamplerParameterIuiv_remap_index }, + { 41341, SamplerParameterf_remap_index }, + { 37113, SamplerParameterfv_remap_index }, + { 41288, SamplerParameteri_remap_index }, + { 27128, SamplerParameteriv_remap_index }, + { 22442, GetQueryObjecti64v_remap_index }, + { 3849, GetQueryObjectui64v_remap_index }, + { 12386, QueryCounter_remap_index }, + { 36364, ColorP3ui_remap_index }, + { 6350, ColorP3uiv_remap_index }, + { 16868, ColorP4ui_remap_index }, + { 24948, ColorP4uiv_remap_index }, + { 13200, MultiTexCoordP1ui_remap_index }, + { 24718, MultiTexCoordP1uiv_remap_index }, + { 32689, MultiTexCoordP2ui_remap_index }, + { 8511, MultiTexCoordP2uiv_remap_index }, + { 25036, MultiTexCoordP3ui_remap_index }, + { 391, MultiTexCoordP3uiv_remap_index }, + { 38680, MultiTexCoordP4ui_remap_index }, + { 32807, MultiTexCoordP4uiv_remap_index }, + { 34883, NormalP3ui_remap_index }, + { 24643, NormalP3uiv_remap_index }, + { 39543, SecondaryColorP3ui_remap_index }, + { 5445, SecondaryColorP3uiv_remap_index }, + { 162, TexCoordP1ui_remap_index }, + { 609, TexCoordP1uiv_remap_index }, + { 25312, TexCoordP2ui_remap_index }, + { 35199, TexCoordP2uiv_remap_index }, + { 14120, TexCoordP3ui_remap_index }, + { 16911, TexCoordP3uiv_remap_index }, + { 32588, TexCoordP4ui_remap_index }, + { 1709, TexCoordP4uiv_remap_index }, + { 14189, VertexAttribP1ui_remap_index }, + { 3901, VertexAttribP1uiv_remap_index }, + { 28617, VertexAttribP2ui_remap_index }, + { 4627, VertexAttribP2uiv_remap_index }, + { 1456, VertexAttribP3ui_remap_index }, + { 27154, VertexAttribP3uiv_remap_index }, + { 4109, VertexAttribP4ui_remap_index }, + { 15350, VertexAttribP4uiv_remap_index }, + { 33430, VertexP2ui_remap_index }, + { 31137, VertexP2uiv_remap_index }, + { 21600, VertexP3ui_remap_index }, + { 5742, VertexP3uiv_remap_index }, + { 2883, VertexP4ui_remap_index }, + { 41838, VertexP4uiv_remap_index }, + { 746, DrawArraysIndirect_remap_index }, + { 22605, DrawElementsIndirect_remap_index }, + { 10243, BindTransformFeedback_remap_index }, + { 10115, DeleteTransformFeedbacks_remap_index }, + { 33963, DrawTransformFeedback_remap_index }, + { 3695, GenTransformFeedbacks_remap_index }, + { 31628, IsTransformFeedback_remap_index }, + { 29418, PauseTransformFeedback_remap_index }, + { 33629, ResumeTransformFeedback_remap_index }, + { 21516, BeginQueryIndexed_remap_index }, + { 39070, DrawTransformFeedbackStream_remap_index }, + { 18222, EndQueryIndexed_remap_index }, + { 20786, GetQueryIndexediv_remap_index }, + { 41804, ClearDepthf_remap_index }, + { 22946, DepthRangef_remap_index }, + { 36402, GetShaderPrecisionFormat_remap_index }, + { 3016, ReleaseShaderCompiler_remap_index }, + { 24106, ShaderBinary_remap_index }, + { 18666, GetProgramBinary_remap_index }, + { 11330, ProgramBinary_remap_index }, + { 11565, ProgramParameteri_remap_index }, + { 25671, DepthRangeArrayv_remap_index }, + { 39992, DepthRangeIndexed_remap_index }, + { 31608, GetDoublei_v_remap_index }, + { 33819, GetFloati_v_remap_index }, + { 40433, ScissorArrayv_remap_index }, + { 23984, ScissorIndexed_remap_index }, + { 27180, ScissorIndexedv_remap_index }, + { 17663, ViewportArrayv_remap_index }, + { 30269, ViewportIndexedf_remap_index }, + { 18714, ViewportIndexedfv_remap_index }, + { 10355, DebugMessageCallbackARB_remap_index }, + { 2958, DebugMessageControlARB_remap_index }, + { 26219, DebugMessageInsertARB_remap_index }, + { 20850, GetDebugMessageLogARB_remap_index }, + { 8036, GetGraphicsResetStatusARB_remap_index }, + { 28760, GetnColorTableARB_remap_index }, + { 2615, GetnCompressedTexImageARB_remap_index }, + { 1202, GetnConvolutionFilterARB_remap_index }, + { 4501, GetnHistogramARB_remap_index }, + { 17548, GetnMapdvARB_remap_index }, + { 11691, GetnMapfvARB_remap_index }, + { 32714, GetnMapivARB_remap_index }, + { 37281, GetnMinmaxARB_remap_index }, + { 3412, GetnPixelMapfvARB_remap_index }, + { 5471, GetnPixelMapuivARB_remap_index }, + { 11011, GetnPixelMapusvARB_remap_index }, + { 21162, GetnPolygonStippleARB_remap_index }, + { 27621, GetnSeparableFilterARB_remap_index }, + { 9555, GetnTexImageARB_remap_index }, + { 26764, GetnUniformdvARB_remap_index }, + { 32376, GetnUniformfvARB_remap_index }, + { 2991, GetnUniformivARB_remap_index }, + { 13060, GetnUniformuivARB_remap_index }, + { 24279, ReadnPixelsARB_remap_index }, + { 31310, DrawArraysInstancedBaseInstance_remap_index }, + { 9706, DrawElementsInstancedBaseInstance_remap_index }, + { 2447, DrawElementsInstancedBaseVertexBaseInstance_remap_index }, + { 33572, DrawTransformFeedbackInstanced_remap_index }, + { 12789, DrawTransformFeedbackStreamInstanced_remap_index }, + { 40454, GetInternalformativ_remap_index }, + { 18789, GetActiveAtomicCounterBufferiv_remap_index }, + { 41776, BindImageTexture_remap_index }, + { 20382, MemoryBarrier_remap_index }, + { 32444, TexStorage1D_remap_index }, + { 22215, TexStorage2D_remap_index }, + { 25927, TexStorage3D_remap_index }, + { 1379, TextureStorage1DEXT_remap_index }, + { 33516, TextureStorage2DEXT_remap_index }, + { 21223, TextureStorage3DEXT_remap_index }, + { 34223, ClearBufferData_remap_index }, + { 2029, ClearBufferSubData_remap_index }, + { 29889, DispatchCompute_remap_index }, + { 6115, DispatchComputeIndirect_remap_index }, + { 38894, TextureView_remap_index }, + { 20680, BindVertexBuffer_remap_index }, + { 28322, VertexAttribBinding_remap_index }, + { 28787, VertexAttribFormat_remap_index }, + { 31251, VertexAttribIFormat_remap_index }, + { 34738, VertexAttribLFormat_remap_index }, + { 33241, VertexBindingDivisor_remap_index }, + { 3154, MultiDrawArraysIndirect_remap_index }, + { 17273, MultiDrawElementsIndirect_remap_index }, + { 17208, TexBufferRange_remap_index }, + { 36590, TexStorage2DMultisample_remap_index }, + { 27073, TexStorage3DMultisample_remap_index }, + { 3186, BufferStorage_remap_index }, + { 6144, InvalidateBufferData_remap_index }, + { 36982, InvalidateBufferSubData_remap_index }, + { 20342, InvalidateFramebuffer_remap_index }, + { 15112, InvalidateSubFramebuffer_remap_index }, + { 11371, InvalidateTexImage_remap_index }, + { 24306, InvalidateTexSubImage_remap_index }, + { 12138, PolygonOffsetEXT_remap_index }, + { 34330, DrawTexfOES_remap_index }, + { 3723, DrawTexfvOES_remap_index }, + { 955, DrawTexiOES_remap_index }, + { 28696, DrawTexivOES_remap_index }, + { 11518, DrawTexsOES_remap_index }, + { 20536, DrawTexsvOES_remap_index }, + { 24965, DrawTexxOES_remap_index }, + { 36230, DrawTexxvOES_remap_index }, + { 23271, PointSizePointerOES_remap_index }, + { 918, QueryMatrixxOES_remap_index }, + { 18286, SampleMaskSGIS_remap_index }, + { 31365, SamplePatternSGIS_remap_index }, + { 39854, ColorPointerEXT_remap_index }, + { 26369, EdgeFlagPointerEXT_remap_index }, + { 12215, IndexPointerEXT_remap_index }, + { 12405, NormalPointerEXT_remap_index }, + { 25736, TexCoordPointerEXT_remap_index }, + { 23088, VertexPointerEXT_remap_index }, + { 39793, DiscardFramebufferEXT_remap_index }, + { 10089, ActiveShaderProgram_remap_index }, + { 15325, BindProgramPipeline_remap_index }, + { 26421, CreateShaderProgramv_remap_index }, + { 3338, DeleteProgramPipelines_remap_index }, + { 24045, GenProgramPipelines_remap_index }, + { 7557, GetProgramPipelineInfoLog_remap_index }, + { 28863, GetProgramPipelineiv_remap_index }, + { 24083, IsProgramPipeline_remap_index }, + { 41654, LockArraysEXT_remap_index }, + { 40994, ProgramUniform1f_remap_index }, + { 8900, ProgramUniform1fv_remap_index }, + { 40970, ProgramUniform1i_remap_index }, + { 14021, ProgramUniform1iv_remap_index }, + { 31784, ProgramUniform1ui_remap_index }, + { 40842, ProgramUniform1uiv_remap_index }, + { 2137, ProgramUniform2f_remap_index }, + { 16645, ProgramUniform2fv_remap_index }, + { 2198, ProgramUniform2i_remap_index }, + { 19804, ProgramUniform2iv_remap_index }, + { 6687, ProgramUniform2ui_remap_index }, + { 8343, ProgramUniform2uiv_remap_index }, + { 4231, ProgramUniform3f_remap_index }, + { 27902, ProgramUniform3fv_remap_index }, + { 4257, ProgramUniform3i_remap_index }, + { 12430, ProgramUniform3iv_remap_index }, + { 14047, ProgramUniform3ui_remap_index }, + { 16618, ProgramUniform3uiv_remap_index }, + { 26823, ProgramUniform4f_remap_index }, + { 30875, ProgramUniform4fv_remap_index }, + { 26850, ProgramUniform4i_remap_index }, + { 1788, ProgramUniform4iv_remap_index }, + { 37590, ProgramUniform4ui_remap_index }, + { 30698, ProgramUniform4uiv_remap_index }, + { 18358, ProgramUniformMatrix2fv_remap_index }, + { 20645, ProgramUniformMatrix2x3fv_remap_index }, + { 7312, ProgramUniformMatrix2x4fv_remap_index }, + { 35913, ProgramUniformMatrix3fv_remap_index }, + { 31573, ProgramUniformMatrix3x2fv_remap_index }, + { 25396, ProgramUniformMatrix3x4fv_remap_index }, + { 29936, ProgramUniformMatrix4fv_remap_index }, + { 2102, ProgramUniformMatrix4x2fv_remap_index }, + { 6907, ProgramUniformMatrix4x3fv_remap_index }, + { 36624, UnlockArraysEXT_remap_index }, + { 29912, UseProgramStages_remap_index }, + { 1597, ValidateProgramPipeline_remap_index }, + { 15376, DebugMessageCallback_remap_index }, + { 30362, DebugMessageControl_remap_index }, + { 14706, DebugMessageInsert_remap_index }, + { 6514, GetDebugMessageLog_remap_index }, + { 6305, GetObjectLabel_remap_index }, + { 11539, GetObjectPtrLabel_remap_index }, + { 29398, ObjectLabel_remap_index }, + { 41741, ObjectPtrLabel_remap_index }, + { 17091, PopDebugGroup_remap_index }, + { 30989, PushDebugGroup_remap_index }, + { 7890, SecondaryColor3fEXT_remap_index }, + { 7435, SecondaryColor3fvEXT_remap_index }, + { 27571, MultiDrawElementsEXT_remap_index }, + { 10171, FogCoordfEXT_remap_index }, + { 17308, FogCoordfvEXT_remap_index }, + { 3974, ResizeBuffersMESA_remap_index }, + { 32650, WindowPos4dMESA_remap_index }, + { 26266, WindowPos4dvMESA_remap_index }, + { 4059, WindowPos4fMESA_remap_index }, + { 10780, WindowPos4fvMESA_remap_index }, + { 8583, WindowPos4iMESA_remap_index }, + { 3485, WindowPos4ivMESA_remap_index }, + { 26948, WindowPos4sMESA_remap_index }, + { 1049, WindowPos4svMESA_remap_index }, + { 27671, MultiModeDrawArraysIBM_remap_index }, + { 18977, MultiModeDrawElementsIBM_remap_index }, + { 31484, AreProgramsResidentNV_remap_index }, + { 38232, ExecuteProgramNV_remap_index }, + { 28413, GetProgramParameterdvNV_remap_index }, + { 34945, GetProgramParameterfvNV_remap_index }, + { 18426, GetProgramStringNV_remap_index }, + { 15036, GetProgramivNV_remap_index }, + { 17593, GetTrackMatrixivNV_remap_index }, + { 18035, GetVertexAttribdvNV_remap_index }, + { 16245, GetVertexAttribfvNV_remap_index }, + { 15218, GetVertexAttribivNV_remap_index }, + { 34668, LoadProgramNV_remap_index }, + { 19077, ProgramParameters4dvNV_remap_index }, + { 19656, ProgramParameters4fvNV_remap_index }, + { 5926, RequestResidentProgramsNV_remap_index }, + { 28034, TrackMatrixNV_remap_index }, + { 13569, VertexAttrib1dNV_remap_index }, + { 27016, VertexAttrib1dvNV_remap_index }, + { 27342, VertexAttrib1fNV_remap_index }, + { 40203, VertexAttrib1fvNV_remap_index }, + { 20201, VertexAttrib1sNV_remap_index }, + { 36644, VertexAttrib1svNV_remap_index }, + { 17569, VertexAttrib2dNV_remap_index }, + { 32934, VertexAttrib2dvNV_remap_index }, + { 26118, VertexAttrib2fNV_remap_index }, + { 24844, VertexAttrib2fvNV_remap_index }, + { 12311, VertexAttrib2sNV_remap_index }, + { 5421, VertexAttrib2svNV_remap_index }, + { 35354, VertexAttrib3dNV_remap_index }, + { 37243, VertexAttrib3dvNV_remap_index }, + { 4680, VertexAttrib3fNV_remap_index }, + { 39477, VertexAttrib3fvNV_remap_index }, + { 6851, VertexAttrib3sNV_remap_index }, + { 17620, VertexAttrib3svNV_remap_index }, + { 8092, VertexAttrib4dNV_remap_index }, + { 3263, VertexAttrib4dvNV_remap_index }, + { 8163, VertexAttrib4fNV_remap_index }, + { 39595, VertexAttrib4fvNV_remap_index }, + { 16706, VertexAttrib4sNV_remap_index }, + { 10385, VertexAttrib4svNV_remap_index }, + { 1570, VertexAttrib4ubNV_remap_index }, + { 10146, VertexAttrib4ubvNV_remap_index }, + { 27822, VertexAttribPointerNV_remap_index }, + { 26317, VertexAttribs1dvNV_remap_index }, + { 29689, VertexAttribs1fvNV_remap_index }, + { 5900, VertexAttribs1svNV_remap_index }, + { 40816, VertexAttribs2dvNV_remap_index }, + { 4083, VertexAttribs2fvNV_remap_index }, + { 26395, VertexAttribs2svNV_remap_index }, + { 1729, VertexAttribs3dvNV_remap_index }, + { 33991, VertexAttribs3fvNV_remap_index }, + { 13436, VertexAttribs3svNV_remap_index }, + { 18640, VertexAttribs4dvNV_remap_index }, + { 23422, VertexAttribs4fvNV_remap_index }, + { 19830, VertexAttribs4svNV_remap_index }, + { 30830, VertexAttribs4ubvNV_remap_index }, + { 40081, GetTexBumpParameterfvATI_remap_index }, + { 9947, GetTexBumpParameterivATI_remap_index }, + { 34091, TexBumpParameterfvATI_remap_index }, + { 8135, TexBumpParameterivATI_remap_index }, + { 8783, AlphaFragmentOp1ATI_remap_index }, + { 3287, AlphaFragmentOp2ATI_remap_index }, + { 9216, AlphaFragmentOp3ATI_remap_index }, + { 31944, BeginFragmentShaderATI_remap_index }, + { 3532, BindFragmentShaderATI_remap_index }, + { 6876, ColorFragmentOp1ATI_remap_index }, + { 12277, ColorFragmentOp2ATI_remap_index }, + { 23009, ColorFragmentOp3ATI_remap_index }, + { 16060, DeleteFragmentShaderATI_remap_index }, + { 42148, EndFragmentShaderATI_remap_index }, + { 22059, GenFragmentShadersATI_remap_index }, + { 39677, PassTexCoordATI_remap_index }, + { 34071, SampleMapATI_remap_index }, + { 33395, SetFragmentShaderConstantATI_remap_index }, + { 8066, ActiveStencilFaceEXT_remap_index }, + { 7692, BindVertexArrayAPPLE_remap_index }, + { 15590, GenVertexArraysAPPLE_remap_index }, + { 33657, GetProgramNamedParameterdvNV_remap_index }, + { 21809, GetProgramNamedParameterfvNV_remap_index }, + { 40112, ProgramNamedParameter4dNV_remap_index }, + { 36435, ProgramNamedParameter4dvNV_remap_index }, + { 39419, ProgramNamedParameter4fNV_remap_index }, + { 24406, ProgramNamedParameter4fvNV_remap_index }, + { 23329, PrimitiveRestartNV_remap_index }, + { 23818, GetTexGenxvOES_remap_index }, + { 37753, TexGenxOES_remap_index }, + { 31051, TexGenxvOES_remap_index }, + { 7616, DepthBoundsEXT_remap_index }, + { 5670, BindFramebufferEXT_remap_index }, + { 39735, BindRenderbufferEXT_remap_index }, + { 4168, BufferParameteriAPPLE_remap_index }, + { 37834, FlushMappedBufferRangeAPPLE_remap_index }, + { 26642, VertexAttribI1iEXT_remap_index }, + { 10719, VertexAttribI1uiEXT_remap_index }, + { 19377, VertexAttribI2iEXT_remap_index }, + { 39270, VertexAttribI2ivEXT_remap_index }, + { 24537, VertexAttribI2uiEXT_remap_index }, + { 33754, VertexAttribI2uivEXT_remap_index }, + { 18507, VertexAttribI3iEXT_remap_index }, + { 41222, VertexAttribI3ivEXT_remap_index }, + { 21741, VertexAttribI3uiEXT_remap_index }, + { 20105, VertexAttribI3uivEXT_remap_index }, + { 36480, VertexAttribI4iEXT_remap_index }, + { 6421, VertexAttribI4ivEXT_remap_index }, + { 2399, VertexAttribI4uiEXT_remap_index }, + { 26499, VertexAttribI4uivEXT_remap_index }, + { 2805, ClearColorIiEXT_remap_index }, + { 1177, ClearColorIuiEXT_remap_index }, + { 23352, BindBufferOffsetEXT_remap_index }, + { 17340, BeginPerfMonitorAMD_remap_index }, + { 31442, DeletePerfMonitorsAMD_remap_index }, + { 5173, EndPerfMonitorAMD_remap_index }, + { 25850, GenPerfMonitorsAMD_remap_index }, + { 12003, GetPerfMonitorCounterDataAMD_remap_index }, + { 33268, GetPerfMonitorCounterInfoAMD_remap_index }, + { 42108, GetPerfMonitorCounterStringAMD_remap_index }, + { 41706, GetPerfMonitorCountersAMD_remap_index }, + { 13640, GetPerfMonitorGroupStringAMD_remap_index }, + { 28566, GetPerfMonitorGroupsAMD_remap_index }, + { 13259, SelectPerfMonitorCountersAMD_remap_index }, + { 13737, GetObjectParameterivAPPLE_remap_index }, + { 41547, ObjectPurgeableAPPLE_remap_index }, + { 1814, ObjectUnpurgeableAPPLE_remap_index }, + { 40604, ActiveProgramEXT_remap_index }, + { 26288, CreateShaderProgramEXT_remap_index }, + { 35462, UseShaderProgramEXT_remap_index }, + { 29281, TextureBarrierNV_remap_index }, + { 2059, VDPAUFiniNV_remap_index }, + { 804, VDPAUGetSurfaceivNV_remap_index }, + { 22880, VDPAUInitNV_remap_index }, + { 20623, VDPAUIsSurfaceNV_remap_index }, + { 6170, VDPAUMapSurfacesNV_remap_index }, + { 2846, VDPAURegisterOutputSurfaceNV_remap_index }, + { 11872, VDPAURegisterVideoSurfaceNV_remap_index }, + { 10458, VDPAUSurfaceAccessNV_remap_index }, + { 4474, VDPAUUnmapSurfacesNV_remap_index }, + { 36334, VDPAUUnregisterSurfaceNV_remap_index }, + { 19539, StencilFuncSeparateATI_remap_index }, + { 5386, ProgramEnvParameters4fvEXT_remap_index }, + { 29532, ProgramLocalParameters4fvEXT_remap_index }, + { 3652, EGLImageTargetRenderbufferStorageOES_remap_index }, + { 3437, EGLImageTargetTexture2DOES_remap_index }, + { 39237, AlphaFuncx_remap_index }, + { 18552, ClearColorx_remap_index }, + { 38502, ClearDepthx_remap_index }, + { 34436, Color4x_remap_index }, + { 22818, DepthRangex_remap_index }, + { 2223, Fogx_remap_index }, + { 14139, Fogxv_remap_index }, + { 8310, Frustumf_remap_index }, + { 8383, Frustumx_remap_index }, + { 18472, LightModelx_remap_index }, + { 30901, LightModelxv_remap_index }, + { 27876, Lightx_remap_index }, + { 39964, Lightxv_remap_index }, + { 3367, LineWidthx_remap_index }, + { 36000, LoadMatrixx_remap_index }, + { 40887, Materialx_remap_index }, + { 24356, Materialxv_remap_index }, + { 28056, MultMatrixx_remap_index }, + { 30177, MultiTexCoord4x_remap_index }, + { 24205, Normal3x_remap_index }, + { 14735, Orthof_remap_index }, + { 14916, Orthox_remap_index }, + { 26546, PointSizex_remap_index }, + { 70, PolygonOffsetx_remap_index }, + { 35777, Rotatex_remap_index }, + { 19128, SampleCoveragex_remap_index }, + { 12161, Scalex_remap_index }, + { 36873, TexEnvx_remap_index }, + { 41498, TexEnvxv_remap_index }, + { 1893, TexParameterx_remap_index }, + { 30478, Translatex_remap_index }, + { 31751, ClipPlanef_remap_index }, + { 31653, ClipPlanex_remap_index }, + { 707, GetClipPlanef_remap_index }, + { 570, GetClipPlanex_remap_index }, + { 19046, GetFixedv_remap_index }, + { 1236, GetLightxv_remap_index }, + { 21846, GetMaterialxv_remap_index }, + { 20500, GetTexEnvxv_remap_index }, + { 15945, GetTexParameterxv_remap_index }, + { 28090, PointParameterx_remap_index }, + { 5528, PointParameterxv_remap_index }, + { 18244, TexParameterxv_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 */ - { 2898, _gloffset_BlendColor }, + { 32882, _gloffset_BlendColor }, /* from GL_EXT_blend_minmax */ - { 13551, _gloffset_BlendEquation }, + { 35297, _gloffset_BlendEquation }, /* from GL_EXT_color_subtable */ - { 20553, _gloffset_ColorSubTable }, - { 38887, _gloffset_CopyColorSubTable }, + { 5130, _gloffset_ColorSubTable }, + { 20401, _gloffset_CopyColorSubTable }, /* from GL_EXT_convolution */ - { 266, _gloffset_ConvolutionFilter1D }, - { 2669, _gloffset_CopyConvolutionFilter1D }, - { 4898, _gloffset_GetConvolutionParameteriv }, - { 10558, _gloffset_ConvolutionFilter2D }, - { 10788, _gloffset_ConvolutionParameteriv }, - { 11293, _gloffset_ConvolutionParameterfv }, - { 24949, _gloffset_GetSeparableFilter }, - { 29034, _gloffset_SeparableFilter2D }, - { 29959, _gloffset_ConvolutionParameteri }, - { 30222, _gloffset_ConvolutionParameterf }, - { 32287, _gloffset_GetConvolutionParameterfv }, - { 33512, _gloffset_GetConvolutionFilter }, - { 36820, _gloffset_CopyConvolutionFilter2D }, + { 1270, _gloffset_GetConvolutionParameteriv }, + { 13102, _gloffset_ConvolutionParameterfv }, + { 15807, _gloffset_CopyConvolutionFilter1D }, + { 17756, _gloffset_SeparableFilter2D }, + { 18922, _gloffset_GetConvolutionFilter }, + { 22550, _gloffset_ConvolutionFilter1D }, + { 24744, _gloffset_ConvolutionFilter2D }, + { 27429, _gloffset_GetSeparableFilter }, + { 28922, _gloffset_ConvolutionParameteri }, + { 29044, _gloffset_ConvolutionParameterf }, + { 34465, _gloffset_ConvolutionParameteriv }, + { 40017, _gloffset_GetConvolutionParameterfv }, + { 41073, _gloffset_CopyConvolutionFilter2D }, /* from GL_EXT_copy_texture */ - { 17888, _gloffset_CopyTexSubImage3D }, - { 19972, _gloffset_CopyTexImage2D }, - { 29439, _gloffset_CopyTexImage1D }, - { 32975, _gloffset_CopyTexSubImage2D }, - { 36315, _gloffset_CopyTexSubImage1D }, + { 26172, _gloffset_CopyTexImage2D }, + { 28714, _gloffset_CopyTexImage1D }, + { 30938, _gloffset_CopyTexSubImage1D }, + { 36711, _gloffset_CopyTexSubImage3D }, + { 40273, _gloffset_CopyTexSubImage2D }, /* from GL_EXT_draw_range_elements */ - { 11582, _gloffset_DrawRangeElements }, + { 23767, _gloffset_DrawRangeElements }, /* from GL_EXT_histogram */ - { 772, _gloffset_Histogram }, - { 4081, _gloffset_ResetHistogram }, - { 12147, _gloffset_GetMinmax }, - { 18315, _gloffset_GetHistogramParameterfv }, - { 29364, _gloffset_GetMinmaxParameteriv }, - { 32177, _gloffset_ResetMinmax }, - { 33316, _gloffset_GetHistogramParameteriv }, - { 35018, _gloffset_GetHistogram }, - { 38354, _gloffset_Minmax }, - { 40349, _gloffset_GetMinmaxParameterfv }, + { 4373, _gloffset_GetHistogramParameterfv }, + { 7718, _gloffset_GetHistogramParameteriv }, + { 9000, _gloffset_Minmax }, + { 13376, _gloffset_GetMinmax }, + { 20997, _gloffset_Histogram }, + { 28642, _gloffset_GetMinmaxParameteriv }, + { 29569, _gloffset_ResetMinmax }, + { 30438, _gloffset_GetHistogram }, + { 32038, _gloffset_GetMinmaxParameterfv }, + { 32958, _gloffset_ResetHistogram }, /* from GL_EXT_paletted_texture */ - { 10420, _gloffset_ColorTable }, - { 18049, _gloffset_GetColorTable }, - { 27708, _gloffset_GetColorTableParameterfv }, - { 30278, _gloffset_GetColorTableParameteriv }, + { 12964, _gloffset_ColorTable }, + { 17365, _gloffset_GetColorTableParameterfv }, + { 25495, _gloffset_GetColorTable }, + { 29100, _gloffset_GetColorTableParameteriv }, /* from GL_EXT_subtexture */ - { 9113, _gloffset_TexSubImage1D }, - { 13008, _gloffset_TexSubImage2D }, + { 2255, _gloffset_TexSubImage1D }, + { 35012, _gloffset_TexSubImage2D }, /* from GL_EXT_texture3D */ - { 1696, _gloffset_TexImage3D }, - { 27442, _gloffset_TexSubImage3D }, + { 21371, _gloffset_TexImage3D }, + { 38934, _gloffset_TexSubImage3D }, /* from GL_EXT_texture_object */ - { 3777, _gloffset_PrioritizeTextures }, - { 9657, _gloffset_AreTexturesResident }, - { 16127, _gloffset_GenTextures }, - { 18564, _gloffset_DeleteTextures }, - { 23799, _gloffset_IsTexture }, - { 36424, _gloffset_BindTexture }, + { 3996, _gloffset_GenTextures }, + { 8430, _gloffset_BindTexture }, + { 16588, _gloffset_IsTexture }, + { 21691, _gloffset_PrioritizeTextures }, + { 25695, _gloffset_DeleteTextures }, + { 39367, _gloffset_AreTexturesResident }, /* from GL_EXT_vertex_array */ - { 29261, _gloffset_ArrayElement }, - { 37762, _gloffset_GetPointerv }, - { 39699, _gloffset_DrawArrays }, + { 17854, _gloffset_ArrayElement }, + { 28133, _gloffset_DrawArrays }, + { 37326, _gloffset_GetPointerv }, /* from GL_NV_read_buffer */ - { 29928, _gloffset_ReadBuffer }, + { 28891, _gloffset_ReadBuffer }, /* from GL_OES_blend_subtract */ - { 13551, _gloffset_BlendEquation }, + { 35297, _gloffset_BlendEquation }, /* from GL_OES_texture_3D */ - { 1696, _gloffset_TexImage3D }, - { 17888, _gloffset_CopyTexSubImage3D }, - { 27442, _gloffset_TexSubImage3D }, + { 21371, _gloffset_TexImage3D }, + { 36711, _gloffset_CopyTexSubImage3D }, + { 38934, _gloffset_TexSubImage3D }, /* from GL_OES_texture_cube_map */ - { 2429, _gloffset_TexGeniv }, - { 13145, _gloffset_TexGenfv }, - { 22491, _gloffset_TexGeni }, - { 22519, _gloffset_TexGenf }, - { 34065, _gloffset_GetTexGeniv }, - { 34888, _gloffset_GetTexGenfv }, + { 16174, _gloffset_TexGeni }, + { 16202, _gloffset_TexGenf }, + { 19455, _gloffset_GetTexGenfv }, + { 32833, _gloffset_TexGeniv }, + { 35121, _gloffset_TexGenfv }, + { 40568, _gloffset_GetTexGeniv }, /* from GL_SGI_color_table */ - { 9830, _gloffset_ColorTableParameteriv }, - { 10420, _gloffset_ColorTable }, - { 18049, _gloffset_GetColorTable }, - { 18181, _gloffset_CopyColorTable }, - { 23568, _gloffset_ColorTableParameterfv }, - { 27708, _gloffset_GetColorTableParameterfv }, - { 30278, _gloffset_GetColorTableParameteriv }, + { 2559, _gloffset_ColorTableParameteriv }, + { 12964, _gloffset_ColorTable }, + { 16532, _gloffset_ColorTableParameterfv }, + { 17365, _gloffset_GetColorTableParameterfv }, + { 25495, _gloffset_GetColorTable }, + { 25573, _gloffset_CopyColorTable }, + { 29100, _gloffset_GetColorTableParameteriv }, { -1, -1 } }; diff --git a/xorg-server/glx/glthread.h b/xorg-server/glx/u_thread.h index 62c9bd4f1..62c9bd4f1 100644 --- a/xorg-server/glx/glthread.h +++ b/xorg-server/glx/u_thread.h diff --git a/xorg-server/hw/kdrive/ephyr/ephyr.c b/xorg-server/hw/kdrive/ephyr/ephyr.c index 3e1495876..ba22ba225 100644 --- a/xorg-server/hw/kdrive/ephyr/ephyr.c +++ b/xorg-server/hw/kdrive/ephyr/ephyr.c @@ -1243,6 +1243,9 @@ ephyrGetColors(ScreenPtr pScreen, int n, xColorItem * pdefs) void ephyrPutColors(ScreenPtr pScreen, int n, xColorItem * pdefs) { + KdScreenPriv(pScreen); + KdScreenInfo *screen = pScreenPriv->screen; + EphyrScrPriv *scrpriv = screen->driver; int min, max, p; /* XXX Not sure if this is right */ @@ -1262,6 +1265,18 @@ ephyrPutColors(ScreenPtr pScreen, int n, xColorItem * pdefs) pdefs->green >> 8, pdefs->blue >> 8); pdefs++; } + if (scrpriv->pDamage) { + BoxRec box; + RegionRec region; + + box.x1 = 0; + box.y1 = 0; + box.x2 = pScreen->width; + box.y2 = pScreen->height; + RegionInit(®ion, &box, 1); + DamageReportDamage(scrpriv->pDamage, ®ion); + RegionUninit(®ion); + } } /* Mouse calls */ diff --git a/xorg-server/hw/xfree86/common/xf86Config.c b/xorg-server/hw/xfree86/common/xf86Config.c index 258b22bfe..542d5abf6 100644 --- a/xorg-server/hw/xfree86/common/xf86Config.c +++ b/xorg-server/hw/xfree86/common/xf86Config.c @@ -777,13 +777,7 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts) MessageType from; const char *s; XkbRMLVOSet set; - - /* Default options. */ - set.rules = "base"; - set.model = "pc105"; - set.layout = "us"; - set.variant = NULL; - set.options = NULL; + const char *rules; /* * Merge the ServerLayout and ServerFlags options. The former have @@ -963,9 +957,15 @@ configServerFlags(XF86ConfFlagsPtr flagsconf, XF86OptionPtr layoutopts) * evdev rules set. */ #if defined(linux) if (!xf86Info.forceInputDevices) - set.rules = "evdev"; + rules = "evdev"; + else #endif + rules = "base"; + + /* Xkb default options. */ + XkbInitRules(&set, rules, "pc105", "us", NULL, NULL); XkbSetRulesDflts(&set); + XkbFreeRMLVOSet(&set, FALSE); xf86Info.useDefaultFontPath = TRUE; xf86Info.useDefaultFontPathFrom = X_DEFAULT; diff --git a/xorg-server/hw/xfree86/common/xf86Configure.c b/xorg-server/hw/xfree86/common/xf86Configure.c index 30dc5505c..967bfbc93 100644 --- a/xorg-server/hw/xfree86/common/xf86Configure.c +++ b/xorg-server/hw/xfree86/common/xf86Configure.c @@ -159,8 +159,8 @@ configureInputSection(void) parsePrologue(XF86ConfInputPtr, XF86ConfInputRec) - ptr->inp_identifier = "Keyboard0"; - ptr->inp_driver = "kbd"; + ptr->inp_identifier = xnfstrdup("Keyboard0"); + ptr->inp_driver = xnfstrdup("kbd"); ptr->list.next = NULL; /* Crude mechanism to auto-detect mouse (os dependent) */ @@ -175,17 +175,17 @@ configureInputSection(void) } mouse = calloc(1, sizeof(XF86ConfInputRec)); - mouse->inp_identifier = "Mouse0"; - mouse->inp_driver = "mouse"; + mouse->inp_identifier = xnfstrdup("Mouse0"); + mouse->inp_driver = xnfstrdup("mouse"); mouse->inp_option_lst = - xf86addNewOption(mouse->inp_option_lst, strdup("Protocol"), - strdup(DFLT_MOUSE_PROTO)); + xf86addNewOption(mouse->inp_option_lst, xnfstrdup("Protocol"), + xnfstrdup(DFLT_MOUSE_PROTO)); mouse->inp_option_lst = - xf86addNewOption(mouse->inp_option_lst, strdup("Device"), - strdup(DFLT_MOUSE_DEV)); + xf86addNewOption(mouse->inp_option_lst, xnfstrdup("Device"), + xnfstrdup(DFLT_MOUSE_DEV)); mouse->inp_option_lst = - xf86addNewOption(mouse->inp_option_lst, strdup("ZAxisMapping"), - strdup("4 5 6 7")); + xf86addNewOption(mouse->inp_option_lst, xnfstrdup("ZAxisMapping"), + xnfstrdup("4 5 6 7")); ptr = (XF86ConfInputPtr) xf86addListItem((glp) ptr, (glp) mouse); return ptr; } @@ -290,7 +290,7 @@ configureDeviceSection(int screennum) " ### <string>: \"String\", <freq>: \"<f> Hz/kHz/MHz\",\n" " ### <percent>: \"<f>%\"\n" " ### [arg]: arg optional\n"; - ptr->dev_comment = strdup(descrip); + ptr->dev_comment = xnfstrdup(descrip); if (ptr->dev_comment) { for (p = DevToConfig[screennum].GDev.options; p->name != NULL; p++) { char *p_e; @@ -337,9 +337,9 @@ configureLayoutSection(void) iptr = malloc(sizeof(XF86ConfInputrefRec)); iptr->list.next = NULL; iptr->iref_option_lst = NULL; - iptr->iref_inputdev_str = "Mouse0"; + iptr->iref_inputdev_str = xnfstrdup("Mouse0"); iptr->iref_option_lst = - xf86addNewOption(iptr->iref_option_lst, strdup("CorePointer"), + xf86addNewOption(iptr->iref_option_lst, xnfstrdup("CorePointer"), NULL); ptr->lay_input_lst = (XF86ConfInputrefPtr) xf86addListItem((glp) ptr->lay_input_lst, (glp) iptr); @@ -351,9 +351,9 @@ configureLayoutSection(void) iptr = malloc(sizeof(XF86ConfInputrefRec)); iptr->list.next = NULL; iptr->iref_option_lst = NULL; - iptr->iref_inputdev_str = "Keyboard0"; + iptr->iref_inputdev_str = xnfstrdup("Keyboard0"); iptr->iref_option_lst = - xf86addNewOption(iptr->iref_option_lst, strdup("CoreKeyboard"), + xf86addNewOption(iptr->iref_option_lst, xnfstrdup("CoreKeyboard"), NULL); ptr->lay_input_lst = (XF86ConfInputrefPtr) xf86addListItem((glp) ptr->lay_input_lst, (glp) iptr); @@ -431,9 +431,9 @@ configureFilesSection(void) parsePrologue(XF86ConfFilesPtr, XF86ConfFilesRec) if (xf86ModulePath) - ptr->file_modulepath = strdup(xf86ModulePath); + ptr->file_modulepath = xnfstrdup(xf86ModulePath); if (defaultFontPath) - ptr->file_fontpath = strdup(defaultFontPath); + ptr->file_fontpath = xnfstrdup(defaultFontPath); return ptr; } @@ -446,8 +446,8 @@ configureMonitorSection(int screennum) XNFasprintf(&tmp, "Monitor%d", screennum); ptr->mon_identifier = tmp; - ptr->mon_vendor = strdup("Monitor Vendor"); - ptr->mon_modelname = strdup("Monitor Model"); + ptr->mon_vendor = xnfstrdup("Monitor Vendor"); + ptr->mon_modelname = xnfstrdup("Monitor Model"); return ptr; } @@ -491,7 +491,7 @@ configureDDCMonitorSection(int screennum) XNFasprintf(&tmp, "Monitor%d", screennum); ptr->mon_identifier = tmp; - ptr->mon_vendor = strdup(ConfiguredMonitor->vendor.name); + ptr->mon_vendor = xnfstrdup(ConfiguredMonitor->vendor.name); XNFasprintf(&ptr->mon_modelname, "%x", ConfiguredMonitor->vendor.prod_id); /* features in centimetres, we want millimetres */ @@ -529,7 +529,7 @@ configureDDCMonitorSection(int screennum) if (ConfiguredMonitor->features.dpms) { ptr->mon_option_lst = - xf86addNewOption(ptr->mon_option_lst, strdup("DPMS"), NULL); + xf86addNewOption(ptr->mon_option_lst, xnfstrdup("DPMS"), NULL); } return ptr; diff --git a/xorg-server/hw/xfree86/common/xf86Xinput.c b/xorg-server/hw/xfree86/common/xf86Xinput.c index 3a0151374..f6f2b90dd 100644 --- a/xorg-server/hw/xfree86/common/xf86Xinput.c +++ b/xorg-server/hw/xfree86/common/xf86Xinput.c @@ -539,7 +539,7 @@ MatchAttrToken(const char *attr, struct xorg_list *patterns, * match. Each list entry is a separate Match line of the same type. */ xorg_list_for_each_entry(group, patterns, entry) { - const char *const *cur; + char *const *cur; Bool match = FALSE; for (cur = group->values; *cur; cur++) @@ -598,7 +598,7 @@ InputClassMatches(const XF86ConfInputClassPtr iclass, const InputInfoPtr idev, * See if any of the device's tags match any of the MatchTag tokens. */ if (!xorg_list_is_empty(&iclass->match_tag)) { - const char *const *tag; + char *const *tag; Bool match; if (!attrs->tags) diff --git a/xorg-server/hw/xfree86/common/xf86Xinput.h b/xorg-server/hw/xfree86/common/xf86Xinput.h index f94261a01..b6d125128 100644 --- a/xorg-server/hw/xfree86/common/xf86Xinput.h +++ b/xorg-server/hw/xfree86/common/xf86Xinput.h @@ -82,8 +82,8 @@ typedef struct _InputDriverRec { typedef struct _InputInfoRec { struct _InputInfoRec *next; - const char *name; - const char *driver; + char *name; + char *driver; int flags; diff --git a/xorg-server/hw/xfree86/os-support/linux/lnx_video.c b/xorg-server/hw/xfree86/os-support/linux/lnx_video.c index 824003d26..47f5abc2c 100644 --- a/xorg-server/hw/xfree86/os-support/linux/lnx_video.c +++ b/xorg-server/hw/xfree86/os-support/linux/lnx_video.c @@ -204,7 +204,7 @@ mtrr_cull_wc_region(int screenNum, unsigned long base, unsigned long size, xf86DrvMsgVerb(screenNum, X_WARNING, 0, "Failed to remove MMIO " "write-combining range (0x%lx,0x%lx)\n", - gent.base, (unsigned long) gent.size); + (unsigned long)gent.base, (unsigned long) gent.size); } } return wcreturn; diff --git a/xorg-server/hw/xfree86/parser/InputClass.c b/xorg-server/hw/xfree86/parser/InputClass.c index 24a124691..c2fbd22a7 100644 --- a/xorg-server/hw/xfree86/parser/InputClass.c +++ b/xorg-server/hw/xfree86/parser/InputClass.c @@ -63,7 +63,7 @@ xf86ConfigSymTabRec InputClassTab[] = { #define TOKEN_SEP "|" static void -add_group_entry(struct xorg_list *head, const char **values) +add_group_entry(struct xorg_list *head, char **values) { xf86MatchGroup *group; @@ -256,7 +256,7 @@ void xf86printInputClassSection(FILE * cf, XF86ConfInputClassPtr ptr) { const xf86MatchGroup *group; - const char *const *cur; + char *const *cur; while (ptr) { fprintf(cf, "Section \"InputClass\"\n"); @@ -362,7 +362,7 @@ xf86freeInputClassList(XF86ConfInputClassPtr ptr) while (ptr) { xf86MatchGroup *group, *next; - const char **list; + char **list; TestFree(ptr->identifier); TestFree(ptr->driver); @@ -370,55 +370,55 @@ xf86freeInputClassList(XF86ConfInputClassPtr ptr) xorg_list_for_each_entry_safe(group, next, &ptr->match_product, entry) { xorg_list_del(&group->entry); for (list = group->values; *list; list++) - free((void *) *list); + free(*list); free(group); } xorg_list_for_each_entry_safe(group, next, &ptr->match_vendor, entry) { xorg_list_del(&group->entry); for (list = group->values; *list; list++) - free((void *) *list); + free(*list); free(group); } xorg_list_for_each_entry_safe(group, next, &ptr->match_device, entry) { xorg_list_del(&group->entry); for (list = group->values; *list; list++) - free((void *) *list); + free(*list); free(group); } xorg_list_for_each_entry_safe(group, next, &ptr->match_os, entry) { xorg_list_del(&group->entry); for (list = group->values; *list; list++) - free((void *) *list); + free(*list); free(group); } xorg_list_for_each_entry_safe(group, next, &ptr->match_pnpid, entry) { xorg_list_del(&group->entry); for (list = group->values; *list; list++) - free((void *) *list); + free(*list); free(group); } xorg_list_for_each_entry_safe(group, next, &ptr->match_usbid, entry) { xorg_list_del(&group->entry); for (list = group->values; *list; list++) - free((void *) *list); + free(*list); free(group); } xorg_list_for_each_entry_safe(group, next, &ptr->match_driver, entry) { xorg_list_del(&group->entry); for (list = group->values; *list; list++) - free((void *) *list); + free(*list); free(group); } xorg_list_for_each_entry_safe(group, next, &ptr->match_tag, entry) { xorg_list_del(&group->entry); for (list = group->values; *list; list++) - free((void *) *list); + free(*list); free(group); } xorg_list_for_each_entry_safe(group, next, &ptr->match_layout, entry) { xorg_list_del(&group->entry); for (list = group->values; *list; list++) - free((void *) *list); + free(*list); free(group); } diff --git a/xorg-server/hw/xfree86/parser/xf86Parser.h b/xorg-server/hw/xfree86/parser/xf86Parser.h index 83607f26c..8f855ac09 100644 --- a/xorg-server/hw/xfree86/parser/xf86Parser.h +++ b/xorg-server/hw/xfree86/parser/xf86Parser.h @@ -279,8 +279,8 @@ typedef struct { typedef struct { GenericListRec list; - const char *inp_identifier; - const char *inp_driver; + char *inp_identifier; + char *inp_driver; XF86OptionPtr inp_option_lst; char *inp_comment; } XF86ConfInputRec, *XF86ConfInputPtr; @@ -288,7 +288,7 @@ typedef struct { typedef struct { GenericListRec list; XF86ConfInputPtr iref_inputdev; - const char *iref_inputdev_str; + char *iref_inputdev_str; XF86OptionPtr iref_option_lst; } XF86ConfInputrefRec, *XF86ConfInputrefPtr; @@ -299,13 +299,13 @@ typedef struct { typedef struct { struct xorg_list entry; - const char **values; + char **values; } xf86MatchGroup; typedef struct { GenericListRec list; char *identifier; - const char *driver; + char *driver; struct xorg_list match_product; struct xorg_list match_vendor; struct xorg_list match_device; diff --git a/xorg-server/hw/xquartz/quartzCocoa.m b/xorg-server/hw/xquartz/quartzCocoa.m index db2b3cfd6..d21fb7d91 100644 --- a/xorg-server/hw/xquartz/quartzCocoa.m +++ b/xorg-server/hw/xquartz/quartzCocoa.m @@ -48,9 +48,9 @@ * Clean out any autoreleased objects. */ void -QuartzBlockHandler(pointer blockData, +QuartzBlockHandler(void *blockData, OSTimePtr pTimeout, - pointer pReadmask) + void *pReadmask) { static NSAutoreleasePool *aPool = nil; @@ -62,9 +62,9 @@ QuartzBlockHandler(pointer blockData, * QuartzWakeupHandler */ void -QuartzWakeupHandler(pointer blockData, +QuartzWakeupHandler(void *blockData, int result, - pointer pReadmask) + void *pReadmask) { // nothing here } diff --git a/xorg-server/hw/xwin/InitOutput.c b/xorg-server/hw/xwin/InitOutput.c index defbbadd8..91242259f 100644 --- a/xorg-server/hw/xwin/InitOutput.c +++ b/xorg-server/hw/xwin/InitOutput.c @@ -53,8 +53,11 @@ typedef HRESULT (__stdcall * SHGETFOLDERPATHPROC)(HWND hwndOwner, HANDLE hToken, DWORD dwFlags, LPTSTR pszPath); #endif - #include "glx_extinit.h" +#ifdef XWIN_GLX_WINDOWS +#include "glx/glwindows.h" +#endif + /* * References to external symbols */ diff --git a/xorg-server/hw/xwin/glx/gen_gl_wrappers.py b/xorg-server/hw/xwin/glx/gen_gl_wrappers.py index e5fa57142..840e4366b 100755 --- a/xorg-server/hw/xwin/glx/gen_gl_wrappers.py +++ b/xorg-server/hw/xwin/glx/gen_gl_wrappers.py @@ -48,34 +48,18 @@ preresolve=False staticwrappers=False nodebugcallcounting=False -WinGDI={key: 1 for key in [ - "wglCopyContext" - ,"wglCreateContext" - ,"wglCreateLayerContext" - ,"wglDeleteContext" - ,"wglGetCurrentContext" - ,"wglGetCurrentDC" - ,"wglGetProcAddress" - ,"wglMakeCurrent" - ,"wglShareLists" - ,"wglUseFontBitmapsA" - ,"wglUseFontBitmapsW" - ,"wglUseFontBitmaps" - ,"SwapBuffers" - ,"wglUseFontOutlinesA" - ,"wglUseFontOutlinesW" - ,"wglUseFontOutlines" - ,"wglDescribeLayerPlane" - ,"wglSetLayerPaletteEntries" - ,"wglGetLayerPaletteEntries" - ,"wglRealizeLayerPalette" - ,"wglSwapLayerBuffers" - ,"wglSwapMultipleBuffers" - ,"ChoosePixelFormat" - ,"DescribePixelFormat" - ,"GetEnhMetaFilePixelFormat" - ,"GetPixelFormat" - ,"SetPixelFormat" +# list of WGL extension functions we use +used_wgl_ext_fns = {key: 1 for key in [ + "wglSwapIntervalEXT", + "wglGetExtensionsStringARB", + "wglDestroyPbufferARB", + "wglGetPbufferDCARB", + "wglReleasePbufferDCARB", + "wglCreatePbufferARB", + "wglMakeContextCurrentARB", + "wglChoosePixelFormatARB", + "wglGetPixelFormatAttribivARB", + "wglGetPixelFormatAttribivARB" ]} if __name__ == '__main__': @@ -260,7 +244,7 @@ class PreResolveOutputGenerator(OutputGenerator): OutputGenerator.genEnum(self, enuminfo, name) def genCmd(self, cmd, name): OutputGenerator.genCmd(self, cmd, name) - if name in WinGDI: + if prefix == 'wgl' and not name in used_wgl_ext_fns: return self.outFile.write('RESOLVE_DECL(PFN' + name.upper() + 'PROC);\n') @@ -293,7 +277,7 @@ class MyOutputGenerator(OutputGenerator): self.outFile.write('/* No wrapper for ' + name + ', not in dispatch table */\n') return - if name in WinGDI: + if prefix == 'wgl' and not name in used_wgl_ext_fns: return self.wrappers[name]=1 diff --git a/xorg-server/hw/xwin/glx/genheaders.py b/xorg-server/hw/xwin/glx/genheaders.py index 78171c982..baaf93de9 100644 --- a/xorg-server/hw/xwin/glx/genheaders.py +++ b/xorg-server/hw/xwin/glx/genheaders.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# Copyright (c) 2013 The Khronos Group Inc. +# Copyright (c) 2013-2014 The Khronos Group Inc. # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and/or associated documentation files (the @@ -139,7 +139,7 @@ glx13andLaterPat = '1\.[3-9]' # Copyright text prefixing all headers (list of strings). prefixStrings = [ '/*', - '** Copyright (c) 2013 The Khronos Group Inc.', + '** Copyright (c) 2013-2014 The Khronos Group Inc.', '**', '** Permission is hereby granted, free of charge, to any person obtaining a', '** copy of this software and/or associated documentation files (the', diff --git a/xorg-server/hw/xwin/glx/gl.xml b/xorg-server/hw/xwin/glx/gl.xml index e46fcaf48..669ff8d26 100644 --- a/xorg-server/hw/xwin/glx/gl.xml +++ b/xorg-server/hw/xwin/glx/gl.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <registry> <comment> -Copyright (c) 2013 The Khronos Group Inc. +Copyright (c) 2013-2014 The Khronos Group Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and/or associated documentation files (the @@ -546,6 +546,11 @@ typedef unsigned int GLhandleARB; <enum name="GL_TEXTURE_DEFORMATION_SGIX"/> </group> + <group name="FogCoordinatePointerType"> + <enum name="GL_FLOAT"/> + <enum name="GL_DOUBLE"/> + </group> + <group name="FogMode"> <enum name="GL_EXP"/> <enum name="GL_EXP2"/> @@ -563,6 +568,16 @@ typedef unsigned int GLhandleARB; <enum name="GL_FOG_START"/> </group> + <group name="FogPointerTypeEXT"> + <enum name="GL_FLOAT"/> + <enum name="GL_DOUBLE"/> + </group> + + <group name="FogPointerTypeIBM"> + <enum name="GL_FLOAT"/> + <enum name="GL_DOUBLE"/> + </group> + <group name="FragmentLightModelParameterSGIX"> <enum name="GL_FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX"/> <enum name="GL_FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX"/> @@ -1726,6 +1741,14 @@ typedef unsigned int GLhandleARB; <enum name="GL_TRIANGLE_STRIP_ADJACENCY_EXT"/> </group> + <group name="OcclusionQueryEventMaskAMD"> + <enum name="GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD"/> + <enum name="GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD"/> + <enum name="GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD"/> + <enum name="GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD"/> + <enum name="GL_QUERY_ALL_EVENT_BITS_AMD"/> + </group> + <group name="ReadBufferMode"> <enum name="GL_AUX0"/> <enum name="GL_AUX1"/> @@ -2090,6 +2113,14 @@ typedef unsigned int GLhandleARB; <enum value="0xFFFFFFFF" name="GL_ALL_BARRIER_BITS_EXT"/> </enums> + <enums namespace="OcclusionQueryEventMaskAMD"> + <enum value="0x00000001" name="GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD"/> + <enum value="0x00000002" name="GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD"/> + <enum value="0x00000004" name="GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD"/> + <enum value="0x00000008" name="GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD"/> + <enum value="0xFFFFFFFF" name="GL_QUERY_ALL_EVENT_BITS_AMD"/> + </enums> + <enums namespace="GL" group="SyncObjectMask" type="bitmask"> <enum value="0x00000001" name="GL_SYNC_FLUSH_COMMANDS_BIT"/> <enum value="0x00000001" name="GL_SYNC_FLUSH_COMMANDS_BIT_APPLE"/> @@ -2174,6 +2205,11 @@ typedef unsigned int GLhandleARB; <enum value="0x10000000" name="GL_FONT_HAS_KERNING_BIT_NV"/> </enums> + <enums namespace="GL" group="PerformanceQueryCapsMaskINTEL" type="bitmask"> + <enum value="0x00000000" name="GL_PERFQUERY_SINGLE_CONTEXT_INTEL"/> + <enum value="0x00000001" name="GL_PERFQUERY_GLOBAL_CONTEXT_INTEL"/> + </enums> + <enums namespace="GL" group="VertexHintsMaskPGI" type="bitmask"> <enum value="0x00000004" name="GL_VERTEX23_BIT_PGI"/> <enum value="0x00000008" name="GL_VERTEX4_BIT_PGI"/> @@ -4152,7 +4188,10 @@ typedef unsigned int GLhandleARB; <enum value="0x83F6" name="GL_NORMAL_ARRAY_PARALLEL_POINTERS_INTEL"/> <enum value="0x83F7" name="GL_COLOR_ARRAY_PARALLEL_POINTERS_INTEL"/> <enum value="0x83F8" name="GL_TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL"/> - <unused start="0x83F9" end="0x83FE"/> + <enum value="0x83F9" name="GL_PERFQUERY_DONOT_FLUSH_INTEL"/> + <enum value="0x83FA" name="GL_PERFQUERY_FLUSH_INTEL"/> + <enum value="0x83FB" name="GL_PERFQUERY_WAIT_INTEL"/> + <unused start="0x83FC" end="0x83FE"/> <enum value="0x83FF" name="GL_TEXTURE_MEMORY_LAYOUT_INTEL"/> </enums> @@ -5103,7 +5142,7 @@ typedef unsigned int GLhandleARB; <enum value="0x874C" name="GL_STENCIL_OP_VALUE_AMD"/> <enum value="0x874D" name="GL_STENCIL_BACK_OP_VALUE_AMD"/> <enum value="0x874E" name="GL_VERTEX_ATTRIB_ARRAY_LONG"/> - <unused start="0x874F"/> + <enum value="0x874F" name="GL_OCCLUSION_QUERY_EVENT_MASK_AMD"/> </enums> <enums namespace="GL" start="0x8750" end="0x875F" vendor="MESA"> @@ -5455,7 +5494,9 @@ typedef unsigned int GLhandleARB; <enum value="0x8834" name="GL_DRAW_BUFFER15_EXT"/> <enum value="0x8834" name="GL_DRAW_BUFFER15_NV"/> <enum value="0x8835" name="GL_COLOR_CLEAR_UNCLAMPED_VALUE_ATI"/> - <unused start="0x8836" end="0x883C"/> + <unused start="0x8836"/> + <enum value="0x8837" name="GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI" comment="Defined by Mesa but not ATI"/> + <unused start="0x8838" end="0x883C"/> <enum value="0x883D" name="GL_BLEND_EQUATION_ALPHA"/> <enum value="0x883D" name="GL_BLEND_EQUATION_ALPHA_EXT"/> <enum value="0x883D" name="GL_BLEND_EQUATION_ALPHA_OES"/> @@ -6934,9 +6975,13 @@ typedef unsigned int GLhandleARB; <enum value="0x8E88" name="GL_TESS_CONTROL_SHADER"/> <enum value="0x8E89" name="GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS"/> <enum value="0x8E8A" name="GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS"/> + <enum value="0x8E8C" name="GL_COMPRESSED_RGBA_BPTC_UNORM"/> <enum value="0x8E8C" name="GL_COMPRESSED_RGBA_BPTC_UNORM_ARB"/> + <enum value="0x8E8D" name="GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM"/> <enum value="0x8E8D" name="GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB"/> + <enum value="0x8E8E" name="GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT"/> <enum value="0x8E8E" name="GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB"/> + <enum value="0x8E8F" name="GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT"/> <enum value="0x8E8F" name="GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB"/> </enums> @@ -7191,7 +7236,11 @@ typedef unsigned int GLhandleARB; <unused start="0x903D" end="0x9044"/> <enum value="0x9045" name="GL_TEXTURE_COVERAGE_SAMPLES_NV"/> <enum value="0x9046" name="GL_TEXTURE_COLOR_SAMPLES_NV"/> - <unused start="0x9047" end="0x904B"/> + <enum value="0x9047" name="GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX"/> + <enum value="0x9048" name="GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX"/> + <enum value="0x9049" name="GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX"/> + <enum value="0x904A" name="GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX"/> + <enum value="0x904B" name="GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX"/> <enum value="0x904C" name="GL_IMAGE_1D"/> <enum value="0x904C" name="GL_IMAGE_1D_EXT"/> <enum value="0x904D" name="GL_IMAGE_2D"/> @@ -7780,7 +7829,18 @@ typedef unsigned int GLhandleARB; <enum value="0x93BB" name="GL_COMPRESSED_RGBA_ASTC_10x10_KHR"/> <enum value="0x93BC" name="GL_COMPRESSED_RGBA_ASTC_12x10_KHR"/> <enum value="0x93BD" name="GL_COMPRESSED_RGBA_ASTC_12x12_KHR"/> - <unused start="0x93BE" end="0x93CF"/> + <unused start="0x93BE" end="0x93BF"/> + <enum value="0x93C0" name="GL_COMPRESSED_RGBA_ASTC_3x3x3_OES"/> + <enum value="0x93C1" name="GL_COMPRESSED_RGBA_ASTC_4x3x3_OES"/> + <enum value="0x93C2" name="GL_COMPRESSED_RGBA_ASTC_4x4x3_OES"/> + <enum value="0x93C3" name="GL_COMPRESSED_RGBA_ASTC_4x4x4_OES"/> + <enum value="0x93C4" name="GL_COMPRESSED_RGBA_ASTC_5x4x4_OES"/> + <enum value="0x93C5" name="GL_COMPRESSED_RGBA_ASTC_5x5x4_OES"/> + <enum value="0x93C6" name="GL_COMPRESSED_RGBA_ASTC_5x5x5_OES"/> + <enum value="0x93C7" name="GL_COMPRESSED_RGBA_ASTC_6x5x5_OES"/> + <enum value="0x93C8" name="GL_COMPRESSED_RGBA_ASTC_6x6x5_OES"/> + <enum value="0x93C9" name="GL_COMPRESSED_RGBA_ASTC_6x6x6_OES"/> + <unused start="0x93CA" end="0x93CF"/> <enum value="0x93D0" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR"/> <enum value="0x93D1" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR"/> <enum value="0x93D2" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR"/> @@ -7795,13 +7855,44 @@ typedef unsigned int GLhandleARB; <enum value="0x93DB" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR"/> <enum value="0x93DC" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR"/> <enum value="0x93DD" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR"/> - <unused start="0x93DE" end="0x93EF"/> + <unused start="0x93DE" end="0x93DF"/> + <enum value="0x93E0" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES"/> + <enum value="0x93E1" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES"/> + <enum value="0x93E2" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES"/> + <enum value="0x93E3" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES"/> + <enum value="0x93E4" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES"/> + <enum value="0x93E5" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES"/> + <enum value="0x93E6" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES"/> + <enum value="0x93E7" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES"/> + <enum value="0x93E8" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES"/> + <enum value="0x93E9" name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES"/> + <unused start="0x93EA" end="0x93EF"/> </enums> <enums namespace="GL" start="0x93F0" end="0x94EF" vendor="APPLE" comment="Khronos bug 10233"> <unused start="0x93F0" end="0x94EF"/> </enums> + <enums namespace="GL" start="0x94F0" end="0x950F" vendor="INTEL" comment="Khronos bug 11345"> + <enum value="0x94F0" name="GL_PERFQUERY_COUNTER_EVENT_INTEL"/> + <enum value="0x94F1" name="GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL"/> + <enum value="0x94F2" name="GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL"/> + <enum value="0x94F3" name="GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL"/> + <enum value="0x94F4" name="GL_PERFQUERY_COUNTER_RAW_INTEL"/> + <enum value="0x94F5" name="GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL"/> + <unused start="0x94F6" end="0x94F7"/> + <enum value="0x94F8" name="GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL"/> + <enum value="0x94F9" name="GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL"/> + <enum value="0x94FA" name="GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL"/> + <enum value="0x94FB" name="GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL"/> + <enum value="0x94FC" name="GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL"/> + <enum value="0x94FD" name="GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL"/> + <enum value="0x94FE" name="GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL"/> + <enum value="0x94FF" name="GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL"/> + <enum value="0x9500" name="GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL"/> + <unused start="0x9501" end="0x950F"/> + </enums> + <!-- Enums reservable for future use. To reserve a new range, allocate one or more multiples of 16 starting at the lowest available point in this block and note it in a new <enums> block immediately above. @@ -7811,8 +7902,8 @@ typedef unsigned int GLhandleARB; file) File requests in the Khronos Bugzilla, OpenGL project, Registry component. --> - <enums namespace="GL" start="0x94F0" end="99999" vendor="ARB" comment="RESERVED FOR FUTURE ALLOCATIONS BY KHRONOS"> - <unused start="0x94F0" end="99999"/> + <enums namespace="GL" start="0x9510" end="99999" vendor="ARB" comment="RESERVED FOR FUTURE ALLOCATIONS BY KHRONOS"> + <unused start="0x9510" end="99999"/> </enums> <!-- Historical large block allocations, all unused except (in older days) by IBM --> @@ -8072,6 +8163,10 @@ typedef unsigned int GLhandleARB; <param><ptype>GLuint</ptype> <name>monitor</name></param> </command> <command> + <proto>void <name>glBeginPerfQueryINTEL</name></proto> + <param><ptype>GLuint</ptype> <name>queryHandle</name></param> + </command> + <command> <proto>void <name>glBeginQuery</name></proto> <param><ptype>GLenum</ptype> <name>target</name></param> <param><ptype>GLuint</ptype> <name>id</name></param> @@ -8205,16 +8300,16 @@ typedef unsigned int GLhandleARB; <param><ptype>GLenum</ptype> <name>target</name></param> <param><ptype>GLuint</ptype> <name>first</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> - <param>const <ptype>GLuint</ptype> *<name>buffers</name></param> + <param len="count">const <ptype>GLuint</ptype> *<name>buffers</name></param> </command> <command> <proto>void <name>glBindBuffersRange</name></proto> <param><ptype>GLenum</ptype> <name>target</name></param> <param><ptype>GLuint</ptype> <name>first</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> - <param>const <ptype>GLuint</ptype> *<name>buffers</name></param> - <param>const <ptype>GLintptr</ptype> *<name>offsets</name></param> - <param>const <ptype>GLsizeiptr</ptype> *<name>sizes</name></param> + <param len="count">const <ptype>GLuint</ptype> *<name>buffers</name></param> + <param len="count">const <ptype>GLintptr</ptype> *<name>offsets</name></param> + <param len="count">const <ptype>GLsizeiptr</ptype> *<name>sizes</name></param> </command> <command> <proto>void <name>glBindFragDataLocation</name></proto> @@ -8281,7 +8376,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glBindImageTextures</name></proto> <param><ptype>GLuint</ptype> <name>first</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> - <param>const <ptype>GLuint</ptype> *<name>textures</name></param> + <param len="count">const <ptype>GLuint</ptype> *<name>textures</name></param> </command> <command> <proto><ptype>GLuint</ptype> <name>glBindLightParameterEXT</name></proto> @@ -8350,7 +8445,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glBindSamplers</name></proto> <param><ptype>GLuint</ptype> <name>first</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> - <param>const <ptype>GLuint</ptype> *<name>samplers</name></param> + <param len="count">const <ptype>GLuint</ptype> *<name>samplers</name></param> </command> <command> <proto><ptype>GLuint</ptype> <name>glBindTexGenParameterEXT</name></proto> @@ -8380,7 +8475,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glBindTextures</name></proto> <param><ptype>GLuint</ptype> <name>first</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> - <param>const <ptype>GLuint</ptype> *<name>textures</name></param> + <param len="count">const <ptype>GLuint</ptype> *<name>textures</name></param> </command> <command> <proto>void <name>glBindTransformFeedback</name></proto> @@ -8400,11 +8495,11 @@ typedef unsigned int GLhandleARB; <command> <proto>void <name>glBindVertexArrayAPPLE</name></proto> <param><ptype>GLuint</ptype> <name>array</name></param> - <alias name="glBindVertexArray"/> </command> <command> <proto>void <name>glBindVertexArrayOES</name></proto> <param><ptype>GLuint</ptype> <name>array</name></param> + <alias name="glBindVertexArray"/> </command> <command> <proto>void <name>glBindVertexBuffer</name></proto> @@ -8417,9 +8512,9 @@ typedef unsigned int GLhandleARB; <proto>void <name>glBindVertexBuffers</name></proto> <param><ptype>GLuint</ptype> <name>first</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> - <param>const <ptype>GLuint</ptype> *<name>buffers</name></param> - <param>const <ptype>GLintptr</ptype> *<name>offsets</name></param> - <param>const <ptype>GLsizei</ptype> *<name>strides</name></param> + <param len="count">const <ptype>GLuint</ptype> *<name>buffers</name></param> + <param len="count">const <ptype>GLintptr</ptype> *<name>offsets</name></param> + <param len="count">const <ptype>GLsizei</ptype> *<name>strides</name></param> </command> <command> <proto>void <name>glBindVertexShaderEXT</name></proto> @@ -8521,7 +8616,10 @@ typedef unsigned int GLhandleARB; <param><ptype>GLfixed</ptype> <name>yorig</name></param> <param><ptype>GLfixed</ptype> <name>xmove</name></param> <param><ptype>GLfixed</ptype> <name>ymove</name></param> - <param len="COMPSIZE()">const <ptype>GLubyte</ptype> *<name>bitmap</name></param> + <param len="COMPSIZE(width,height)">const <ptype>GLubyte</ptype> *<name>bitmap</name></param> + </command> + <command> + <proto>void <name>glBlendBarrierNV</name></proto> </command> <command> <proto>void <name>glBlendColor</name></proto> @@ -8708,9 +8806,6 @@ typedef unsigned int GLhandleARB; <param><ptype>GLint</ptype> <name>value</name></param> </command> <command> - <proto>void <name>glBlendBarrierNV</name></proto> - </command> - <command> <proto>void <name>glBlitFramebuffer</name></proto> <param><ptype>GLint</ptype> <name>srcX0</name></param> <param><ptype>GLint</ptype> <name>srcY0</name></param> @@ -8764,6 +8859,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLint</ptype> <name>dstY1</name></param> <param><ptype>GLbitfield</ptype> <name>mask</name></param> <param><ptype>GLenum</ptype> <name>filter</name></param> + <alias name="glBlitFramebuffer"/> </command> <command> <proto>void <name>glBufferAddressRangeNV</name></proto> @@ -8797,7 +8893,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glBufferStorage</name></proto> <param><ptype>GLenum</ptype> <name>target</name></param> <param><ptype>GLsizeiptr</ptype> <name>size</name></param> - <param>const void *<name>data</name></param> + <param len="size">const void *<name>data</name></param> <param><ptype>GLbitfield</ptype> <name>flags</name></param> </command> <command> @@ -9006,10 +9102,10 @@ typedef unsigned int GLhandleARB; <proto>void <name>glClearNamedBufferSubDataEXT</name></proto> <param><ptype>GLuint</ptype> <name>buffer</name></param> <param><ptype>GLenum</ptype> <name>internalformat</name></param> - <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param> - <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param> <param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>offset</name></param> <param group="BufferSize"><ptype>GLsizeiptr</ptype> <name>size</name></param> + <param group="PixelFormat"><ptype>GLenum</ptype> <name>format</name></param> + <param group="PixelType"><ptype>GLenum</ptype> <name>type</name></param> <param len="COMPSIZE(format,type)">const void *<name>data</name></param> </command> <command> @@ -9023,7 +9119,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLint</ptype> <name>level</name></param> <param><ptype>GLenum</ptype> <name>format</name></param> <param><ptype>GLenum</ptype> <name>type</name></param> - <param>const void *<name>data</name></param> + <param len="COMPSIZE(format,type)">const void *<name>data</name></param> </command> <command> <proto>void <name>glClearTexSubImage</name></proto> @@ -9037,7 +9133,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLsizei</ptype> <name>depth</name></param> <param><ptype>GLenum</ptype> <name>format</name></param> <param><ptype>GLenum</ptype> <name>type</name></param> - <param>const void *<name>data</name></param> + <param len="COMPSIZE(format,type)">const void *<name>data</name></param> </command> <command> <proto>void <name>glClientActiveTexture</name></proto> @@ -9067,6 +9163,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLsync</ptype> <name>sync</name></param> <param><ptype>GLbitfield</ptype> <name>flags</name></param> <param><ptype>GLuint64</ptype> <name>timeout</name></param> + <alias name="glClientWaitSync"/> </command> <command> <proto>void <name>glClipPlane</name></proto> @@ -9077,12 +9174,12 @@ typedef unsigned int GLhandleARB; <command> <proto>void <name>glClipPlanef</name></proto> <param><ptype>GLenum</ptype> <name>p</name></param> - <param>const <ptype>GLfloat</ptype> *<name>eqn</name></param> + <param len="4">const <ptype>GLfloat</ptype> *<name>eqn</name></param> </command> <command> <proto>void <name>glClipPlanefIMG</name></proto> <param><ptype>GLenum</ptype> <name>p</name></param> - <param>const <ptype>GLfloat</ptype> *<name>eqn</name></param> + <param len="4">const <ptype>GLfloat</ptype> *<name>eqn</name></param> </command> <command> <proto>void <name>glClipPlanefOES</name></proto> @@ -9093,12 +9190,12 @@ typedef unsigned int GLhandleARB; <command> <proto>void <name>glClipPlanex</name></proto> <param><ptype>GLenum</ptype> <name>plane</name></param> - <param>const <ptype>GLfixed</ptype> *<name>equation</name></param> + <param len="4">const <ptype>GLfixed</ptype> *<name>equation</name></param> </command> <command> <proto>void <name>glClipPlanexIMG</name></proto> <param><ptype>GLenum</ptype> <name>p</name></param> - <param>const <ptype>GLfixed</ptype> *<name>eqn</name></param> + <param len="4">const <ptype>GLfixed</ptype> *<name>eqn</name></param> </command> <command> <proto>void <name>glClipPlanexOES</name></proto> @@ -9861,7 +9958,8 @@ typedef unsigned int GLhandleARB; <param><ptype>GLsizei</ptype> <name>depth</name></param> <param><ptype>GLint</ptype> <name>border</name></param> <param><ptype>GLsizei</ptype> <name>imageSize</name></param> - <param>const void *<name>data</name></param> + <param len="imageSize">const void *<name>data</name></param> + <alias name="glCompressedTexImage3D"/> </command> <command> <proto>void <name>glCompressedTexSubImage1D</name></proto> @@ -9959,7 +10057,8 @@ typedef unsigned int GLhandleARB; <param><ptype>GLsizei</ptype> <name>depth</name></param> <param><ptype>GLenum</ptype> <name>format</name></param> <param><ptype>GLsizei</ptype> <name>imageSize</name></param> - <param>const void *<name>data</name></param> + <param len="imageSize">const void *<name>data</name></param> + <alias name="glCompressedTexSubImage3D"/> </command> <command> <proto>void <name>glCompressedTextureImage1DEXT</name></proto> @@ -10489,6 +10588,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLint</ptype> <name>y</name></param> <param><ptype>GLsizei</ptype> <name>width</name></param> <param><ptype>GLsizei</ptype> <name>height</name></param> + <alias name="glCopyTexSubImage3D"/> </command> <command> <proto>void <name>glCopyTextureImage1DEXT</name></proto> @@ -10594,6 +10694,11 @@ typedef unsigned int GLhandleARB; <param><ptype>GLenum</ptype> <name>operation</name></param> </command> <command> + <proto>void <name>glCreatePerfQueryINTEL</name></proto> + <param><ptype>GLuint</ptype> <name>queryId</name></param> + <param><ptype>GLuint</ptype> *<name>queryHandle</name></param> + </command> + <command> <proto><ptype>GLuint</ptype> <name>glCreateProgram</name></proto> </command> <command> @@ -10624,7 +10729,7 @@ typedef unsigned int GLhandleARB; <proto><ptype>GLuint</ptype> <name>glCreateShaderProgramvEXT</name></proto> <param><ptype>GLenum</ptype> <name>type</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> - <param>const <ptype>GLchar</ptype> **<name>strings</name></param> + <param len="count">const <ptype>GLchar</ptype> **<name>strings</name></param> </command> <command> <proto group="sync"><ptype>GLsync</ptype> <name>glCreateSyncFromCLeventARB</name></proto> @@ -10840,7 +10945,7 @@ typedef unsigned int GLhandleARB; <command> <proto>void <name>glDeleteFramebuffersOES</name></proto> <param><ptype>GLsizei</ptype> <name>n</name></param> - <param>const <ptype>GLuint</ptype> *<name>framebuffers</name></param> + <param len="n">const <ptype>GLuint</ptype> *<name>framebuffers</name></param> </command> <command> <proto>void <name>glDeleteLists</name></proto> @@ -10879,6 +10984,10 @@ typedef unsigned int GLhandleARB; <param len="n"><ptype>GLuint</ptype> *<name>monitors</name></param> </command> <command> + <proto>void <name>glDeletePerfQueryINTEL</name></proto> + <param><ptype>GLuint</ptype> <name>queryHandle</name></param> + </command> + <command> <proto>void <name>glDeleteProgram</name></proto> <param><ptype>GLuint</ptype> <name>program</name></param> <glx type="single" opcode="202"/> @@ -10891,7 +11000,7 @@ typedef unsigned int GLhandleARB; <command> <proto>void <name>glDeleteProgramPipelinesEXT</name></proto> <param><ptype>GLsizei</ptype> <name>n</name></param> - <param>const <ptype>GLuint</ptype> *<name>pipelines</name></param> + <param len="n">const <ptype>GLuint</ptype> *<name>pipelines</name></param> </command> <command> <proto>void <name>glDeleteProgramsARB</name></proto> @@ -10921,7 +11030,7 @@ typedef unsigned int GLhandleARB; <command> <proto>void <name>glDeleteQueriesEXT</name></proto> <param><ptype>GLsizei</ptype> <name>n</name></param> - <param>const <ptype>GLuint</ptype> *<name>ids</name></param> + <param len="n">const <ptype>GLuint</ptype> *<name>ids</name></param> </command> <command> <proto>void <name>glDeleteRenderbuffers</name></proto> @@ -10939,7 +11048,7 @@ typedef unsigned int GLhandleARB; <command> <proto>void <name>glDeleteRenderbuffersOES</name></proto> <param><ptype>GLsizei</ptype> <name>n</name></param> - <param>const <ptype>GLuint</ptype> *<name>renderbuffers</name></param> + <param len="n">const <ptype>GLuint</ptype> *<name>renderbuffers</name></param> </command> <command> <proto>void <name>glDeleteSamplers</name></proto> @@ -10958,6 +11067,7 @@ typedef unsigned int GLhandleARB; <command> <proto>void <name>glDeleteSyncAPPLE</name></proto> <param><ptype>GLsync</ptype> <name>sync</name></param> + <alias name="glDeleteSync"/> </command> <command> <proto>void <name>glDeleteTextures</name></proto> @@ -10997,7 +11107,8 @@ typedef unsigned int GLhandleARB; <command> <proto>void <name>glDeleteVertexArraysOES</name></proto> <param><ptype>GLsizei</ptype> <name>n</name></param> - <param>const <ptype>GLuint</ptype> *<name>arrays</name></param> + <param len="n">const <ptype>GLuint</ptype> *<name>arrays</name></param> + <alias name="glDeleteVertexArrays"/> </command> <command> <proto>void <name>glDeleteVertexShaderEXT</name></proto> @@ -11155,7 +11266,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glDiscardFramebufferEXT</name></proto> <param><ptype>GLenum</ptype> <name>target</name></param> <param><ptype>GLsizei</ptype> <name>numAttachments</name></param> - <param>const <ptype>GLenum</ptype> *<name>attachments</name></param> + <param len="numAttachments">const <ptype>GLenum</ptype> *<name>attachments</name></param> </command> <command> <proto>void <name>glDispatchCompute</name></proto> @@ -11209,6 +11320,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLint</ptype> <name>first</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> <param><ptype>GLsizei</ptype> <name>primcount</name></param> + <alias name="glDrawArraysInstanced"/> </command> <command> <proto>void <name>glDrawArraysInstancedARB</name></proto> @@ -11240,6 +11352,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLint</ptype> <name>first</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> <param><ptype>GLsizei</ptype> <name>primcount</name></param> + <alias name="glDrawArraysInstanced"/> </command> <command> <proto>void <name>glDrawBuffer</name></proto> @@ -11274,13 +11387,13 @@ typedef unsigned int GLhandleARB; <command> <proto>void <name>glDrawBuffersIndexedEXT</name></proto> <param><ptype>GLint</ptype> <name>n</name></param> - <param>const <ptype>GLenum</ptype> *<name>location</name></param> - <param>const <ptype>GLint</ptype> *<name>indices</name></param> + <param len="n">const <ptype>GLenum</ptype> *<name>location</name></param> + <param len="n">const <ptype>GLint</ptype> *<name>indices</name></param> </command> <command> <proto>void <name>glDrawBuffersNV</name></proto> <param><ptype>GLsizei</ptype> <name>n</name></param> - <param>const <ptype>GLenum</ptype> *<name>bufs</name></param> + <param len="n">const <ptype>GLenum</ptype> *<name>bufs</name></param> </command> <command> <proto>void <name>glDrawElementArrayAPPLE</name></proto> @@ -11327,8 +11440,9 @@ typedef unsigned int GLhandleARB; <param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> <param><ptype>GLenum</ptype> <name>type</name></param> - <param>const void *<name>indices</name></param> + <param len="COMPSIZE(count,type)">const void *<name>indices</name></param> <param><ptype>GLsizei</ptype> <name>primcount</name></param> + <alias name="glDrawElementsInstanced"/> </command> <command> <proto>void <name>glDrawElementsInstancedARB</name></proto> @@ -11381,8 +11495,9 @@ typedef unsigned int GLhandleARB; <param group="PrimitiveType"><ptype>GLenum</ptype> <name>mode</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> <param><ptype>GLenum</ptype> <name>type</name></param> - <param>const void *<name>indices</name></param> + <param len="COMPSIZE(count,type)">const void *<name>indices</name></param> <param><ptype>GLsizei</ptype> <name>primcount</name></param> + <alias name="glDrawElementsInstanced"/> </command> <command> <proto>void <name>glDrawMeshArraysSUN</name></proto> @@ -11575,7 +11690,7 @@ typedef unsigned int GLhandleARB; </command> <command> <proto>void <name>glEdgeFlagv</name></proto> - <param group="Boolean">const <ptype>GLboolean</ptype> *<name>flag</name></param> + <param group="Boolean" len="1">const <ptype>GLboolean</ptype> *<name>flag</name></param> <glx type="render" opcode="22"/> </command> <command> @@ -11681,6 +11796,10 @@ typedef unsigned int GLhandleARB; <param><ptype>GLuint</ptype> <name>monitor</name></param> </command> <command> + <proto>void <name>glEndPerfQueryINTEL</name></proto> + <param><ptype>GLuint</ptype> <name>queryHandle</name></param> + </command> + <command> <proto>void <name>glEndQuery</name></proto> <param><ptype>GLenum</ptype> <name>target</name></param> <glx type="render" opcode="232"/> @@ -11826,15 +11945,15 @@ typedef unsigned int GLhandleARB; </command> <command> <proto>void <name>glExtGetBuffersQCOM</name></proto> - <param><ptype>GLuint</ptype> *<name>buffers</name></param> + <param len="maxBuffers"><ptype>GLuint</ptype> *<name>buffers</name></param> <param><ptype>GLint</ptype> <name>maxBuffers</name></param> - <param><ptype>GLint</ptype> *<name>numBuffers</name></param> + <param len="1"><ptype>GLint</ptype> *<name>numBuffers</name></param> </command> <command> <proto>void <name>glExtGetFramebuffersQCOM</name></proto> - <param><ptype>GLuint</ptype> *<name>framebuffers</name></param> + <param len="maxFramebuffers"><ptype>GLuint</ptype> *<name>framebuffers</name></param> <param><ptype>GLint</ptype> <name>maxFramebuffers</name></param> - <param><ptype>GLint</ptype> *<name>numFramebuffers</name></param> + <param len="1"><ptype>GLint</ptype> *<name>numFramebuffers</name></param> </command> <command> <proto>void <name>glExtGetProgramBinarySourceQCOM</name></proto> @@ -11845,21 +11964,21 @@ typedef unsigned int GLhandleARB; </command> <command> <proto>void <name>glExtGetProgramsQCOM</name></proto> - <param><ptype>GLuint</ptype> *<name>programs</name></param> + <param len="maxPrograms"><ptype>GLuint</ptype> *<name>programs</name></param> <param><ptype>GLint</ptype> <name>maxPrograms</name></param> - <param><ptype>GLint</ptype> *<name>numPrograms</name></param> + <param len="1"><ptype>GLint</ptype> *<name>numPrograms</name></param> </command> <command> <proto>void <name>glExtGetRenderbuffersQCOM</name></proto> - <param><ptype>GLuint</ptype> *<name>renderbuffers</name></param> + <param len="maxRenderbuffers"><ptype>GLuint</ptype> *<name>renderbuffers</name></param> <param><ptype>GLint</ptype> <name>maxRenderbuffers</name></param> - <param><ptype>GLint</ptype> *<name>numRenderbuffers</name></param> + <param len="1"><ptype>GLint</ptype> *<name>numRenderbuffers</name></param> </command> <command> <proto>void <name>glExtGetShadersQCOM</name></proto> - <param><ptype>GLuint</ptype> *<name>shaders</name></param> + <param len="maxShaders"><ptype>GLuint</ptype> *<name>shaders</name></param> <param><ptype>GLint</ptype> <name>maxShaders</name></param> - <param><ptype>GLint</ptype> *<name>numShaders</name></param> + <param len="1"><ptype>GLint</ptype> *<name>numShaders</name></param> </command> <command> <proto>void <name>glExtGetTexLevelParameterivQCOM</name></proto> @@ -11927,6 +12046,7 @@ typedef unsigned int GLhandleARB; <proto><ptype>GLsync</ptype> <name>glFenceSyncAPPLE</name></proto> <param><ptype>GLenum</ptype> <name>condition</name></param> <param><ptype>GLbitfield</ptype> <name>flags</name></param> + <alias name="glFenceSync"/> </command> <command> <proto>void <name>glFinalCombinerInputNV</name></proto> @@ -11983,6 +12103,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLenum</ptype> <name>target</name></param> <param><ptype>GLintptr</ptype> <name>offset</name></param> <param><ptype>GLsizeiptr</ptype> <name>length</name></param> + <alias name="glFlushMappedBufferRange"/> </command> <command> <proto>void <name>glFlushMappedNamedBufferRangeEXT</name></proto> @@ -12132,7 +12253,7 @@ typedef unsigned int GLhandleARB; <command> <proto>void <name>glFogxv</name></proto> <param><ptype>GLenum</ptype> <name>pname</name></param> - <param>const <ptype>GLfixed</ptype> *<name>param</name></param> + <param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>param</name></param> </command> <command> <proto>void <name>glFogxvOES</name></proto> @@ -12366,6 +12487,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLuint</ptype> <name>texture</name></param> <param><ptype>GLint</ptype> <name>level</name></param> <param><ptype>GLint</ptype> <name>zoffset</name></param> + <alias name="glFramebufferTexture3D"/> </command> <command> <proto>void <name>glFramebufferTextureARB</name></proto> @@ -12529,7 +12651,7 @@ typedef unsigned int GLhandleARB; <command> <proto>void <name>glGenFramebuffersOES</name></proto> <param><ptype>GLsizei</ptype> <name>n</name></param> - <param><ptype>GLuint</ptype> *<name>framebuffers</name></param> + <param len="n"><ptype>GLuint</ptype> *<name>framebuffers</name></param> </command> <command> <proto group="List"><ptype>GLuint</ptype> <name>glGenLists</name></proto> @@ -12564,7 +12686,7 @@ typedef unsigned int GLhandleARB; <command> <proto>void <name>glGenProgramPipelinesEXT</name></proto> <param><ptype>GLsizei</ptype> <name>n</name></param> - <param><ptype>GLuint</ptype> *<name>pipelines</name></param> + <param len="n"><ptype>GLuint</ptype> *<name>pipelines</name></param> </command> <command> <proto>void <name>glGenProgramsARB</name></proto> @@ -12594,7 +12716,7 @@ typedef unsigned int GLhandleARB; <command> <proto>void <name>glGenQueriesEXT</name></proto> <param><ptype>GLsizei</ptype> <name>n</name></param> - <param><ptype>GLuint</ptype> *<name>ids</name></param> + <param len="n"><ptype>GLuint</ptype> *<name>ids</name></param> </command> <command> <proto>void <name>glGenRenderbuffers</name></proto> @@ -12612,7 +12734,7 @@ typedef unsigned int GLhandleARB; <command> <proto>void <name>glGenRenderbuffersOES</name></proto> <param><ptype>GLsizei</ptype> <name>n</name></param> - <param><ptype>GLuint</ptype> *<name>renderbuffers</name></param> + <param len="n"><ptype>GLuint</ptype> *<name>renderbuffers</name></param> </command> <command> <proto>void <name>glGenSamplers</name></proto> @@ -12664,7 +12786,8 @@ typedef unsigned int GLhandleARB; <command> <proto>void <name>glGenVertexArraysOES</name></proto> <param><ptype>GLsizei</ptype> <name>n</name></param> - <param><ptype>GLuint</ptype> *<name>arrays</name></param> + <param len="n"><ptype>GLuint</ptype> *<name>arrays</name></param> + <alias name="glGenVertexArrays"/> </command> <command> <proto><ptype>GLuint</ptype> <name>glGenVertexShadersEXT</name></proto> @@ -12823,20 +12946,19 @@ typedef unsigned int GLhandleARB; <param group="ArrayObjectPNameATI"><ptype>GLenum</ptype> <name>pname</name></param> <param len="1"><ptype>GLint</ptype> *<name>params</name></param> </command> - <command> + <command comment="Could be an alias of glGetAttachedShaders except that GLhandleARB is different on MacOS X"> <proto>void <name>glGetAttachedObjectsARB</name></proto> <param group="handleARB"><ptype>GLhandleARB</ptype> <name>containerObj</name></param> <param><ptype>GLsizei</ptype> <name>maxCount</name></param> <param len="1"><ptype>GLsizei</ptype> *<name>count</name></param> - <param group="handleARB" len="count"><ptype>GLhandleARB</ptype> *<name>obj</name></param> - <alias name="glGetAttachedShaders"/> + <param group="handleARB" len="maxCount"><ptype>GLhandleARB</ptype> *<name>obj</name></param> </command> <command> <proto>void <name>glGetAttachedShaders</name></proto> <param><ptype>GLuint</ptype> <name>program</name></param> <param><ptype>GLsizei</ptype> <name>maxCount</name></param> <param len="1"><ptype>GLsizei</ptype> *<name>count</name></param> - <param><ptype>GLuint</ptype> *<name>shaders</name></param> + <param len="maxCount"><ptype>GLuint</ptype> *<name>shaders</name></param> </command> <command> <proto><ptype>GLint</ptype> <name>glGetAttribLocation</name></proto> @@ -12911,6 +13033,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLenum</ptype> <name>target</name></param> <param><ptype>GLenum</ptype> <name>pname</name></param> <param>void **<name>params</name></param> + <alias name="glGetBufferPointerv"/> </command> <command> <proto>void <name>glGetBufferSubData</name></proto> @@ -12936,7 +13059,7 @@ typedef unsigned int GLhandleARB; <command> <proto>void <name>glGetClipPlanef</name></proto> <param><ptype>GLenum</ptype> <name>plane</name></param> - <param><ptype>GLfloat</ptype> *<name>equation</name></param> + <param len="4"><ptype>GLfloat</ptype> *<name>equation</name></param> </command> <command> <proto>void <name>glGetClipPlanefOES</name></proto> @@ -12947,7 +13070,7 @@ typedef unsigned int GLhandleARB; <command> <proto>void <name>glGetClipPlanex</name></proto> <param><ptype>GLenum</ptype> <name>plane</name></param> - <param><ptype>GLfixed</ptype> *<name>equation</name></param> + <param len="4"><ptype>GLfixed</ptype> *<name>equation</name></param> </command> <command> <proto>void <name>glGetClipPlanexOES</name></proto> @@ -13258,6 +13381,10 @@ typedef unsigned int GLhandleARB; <glx type="vendor" opcode="1275"/> </command> <command> + <proto>void <name>glGetFirstPerfQueryIdINTEL</name></proto> + <param><ptype>GLuint</ptype> *<name>queryId</name></param> + </command> + <command> <proto>void <name>glGetFixedv</name></proto> <param><ptype>GLenum</ptype> <name>pname</name></param> <param><ptype>GLfixed</ptype> *<name>params</name></param> @@ -13359,7 +13486,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLenum</ptype> <name>target</name></param> <param><ptype>GLenum</ptype> <name>attachment</name></param> <param><ptype>GLenum</ptype> <name>pname</name></param> - <param><ptype>GLint</ptype> *<name>params</name></param> + <param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param> </command> <command> <proto>void <name>glGetFramebufferParameteriv</name></proto> @@ -13490,6 +13617,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glGetInteger64vAPPLE</name></proto> <param><ptype>GLenum</ptype> <name>pname</name></param> <param><ptype>GLint64</ptype> *<name>params</name></param> + <alias name="glGetInteger64v"/> </command> <command> <proto>void <name>glGetIntegerIndexedvEXT</name></proto> @@ -13585,13 +13713,13 @@ typedef unsigned int GLhandleARB; <proto>void <name>glGetLightxv</name></proto> <param><ptype>GLenum</ptype> <name>light</name></param> <param><ptype>GLenum</ptype> <name>pname</name></param> - <param><ptype>GLfixed</ptype> *<name>params</name></param> + <param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param> </command> <command> <proto>void <name>glGetLightxvOES</name></proto> <param><ptype>GLenum</ptype> <name>light</name></param> <param><ptype>GLenum</ptype> <name>pname</name></param> - <param><ptype>GLfixed</ptype> *<name>params</name></param> + <param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param> </command> <command> <proto>void <name>glGetListParameterfvSGIX</name></proto> @@ -13710,13 +13838,13 @@ typedef unsigned int GLhandleARB; <proto>void <name>glGetMaterialxv</name></proto> <param><ptype>GLenum</ptype> <name>face</name></param> <param><ptype>GLenum</ptype> <name>pname</name></param> - <param><ptype>GLfixed</ptype> *<name>params</name></param> + <param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param> </command> <command> <proto>void <name>glGetMaterialxvOES</name></proto> <param><ptype>GLenum</ptype> <name>face</name></param> <param><ptype>GLenum</ptype> <name>pname</name></param> - <param><ptype>GLfixed</ptype> *<name>params</name></param> + <param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param> </command> <command> <proto>void <name>glGetMinmax</name></proto> @@ -13968,6 +14096,11 @@ typedef unsigned int GLhandleARB; <param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param> </command> <command> + <proto>void <name>glGetNextPerfQueryIdINTEL</name></proto> + <param><ptype>GLuint</ptype> <name>queryId</name></param> + <param><ptype>GLuint</ptype> *<name>nextQueryId</name></param> + </command> + <command> <proto>void <name>glGetObjectBufferfvATI</name></proto> <param><ptype>GLuint</ptype> <name>buffer</name></param> <param group="ArrayObjectPNameATI"><ptype>GLenum</ptype> <name>pname</name></param> @@ -13984,7 +14117,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLenum</ptype> <name>identifier</name></param> <param><ptype>GLuint</ptype> <name>name</name></param> <param><ptype>GLsizei</ptype> <name>bufSize</name></param> - <param><ptype>GLsizei</ptype> *<name>length</name></param> + <param len="1"><ptype>GLsizei</ptype> *<name>length</name></param> <param len="bufSize"><ptype>GLchar</ptype> *<name>label</name></param> </command> <command> @@ -13992,7 +14125,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLenum</ptype> <name>type</name></param> <param><ptype>GLuint</ptype> <name>object</name></param> <param><ptype>GLsizei</ptype> <name>bufSize</name></param> - <param><ptype>GLsizei</ptype> *<name>length</name></param> + <param len="1"><ptype>GLsizei</ptype> *<name>length</name></param> <param len="bufSize"><ptype>GLchar</ptype> *<name>label</name></param> </command> <command> @@ -14027,14 +14160,14 @@ typedef unsigned int GLhandleARB; <proto>void <name>glGetObjectPtrLabel</name></proto> <param>const void *<name>ptr</name></param> <param><ptype>GLsizei</ptype> <name>bufSize</name></param> - <param><ptype>GLsizei</ptype> *<name>length</name></param> + <param len="1"><ptype>GLsizei</ptype> *<name>length</name></param> <param len="bufSize"><ptype>GLchar</ptype> *<name>label</name></param> </command> <command> <proto>void <name>glGetObjectPtrLabelKHR</name></proto> <param>const void *<name>ptr</name></param> <param><ptype>GLsizei</ptype> <name>bufSize</name></param> - <param><ptype>GLsizei</ptype> *<name>length</name></param> + <param len="1"><ptype>GLsizei</ptype> *<name>length</name></param> <param len="bufSize"><ptype>GLchar</ptype> *<name>label</name></param> <alias name="glGetObjectPtrLabel"/> </command> @@ -14138,6 +14271,20 @@ typedef unsigned int GLhandleARB; <param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>value</name></param> </command> <command> + <proto>void <name>glGetPerfCounterInfoINTEL</name></proto> + <param><ptype>GLuint</ptype> <name>queryId</name></param> + <param><ptype>GLuint</ptype> <name>counterId</name></param> + <param><ptype>GLuint</ptype> <name>counterNameLength</name></param> + <param><ptype>GLchar</ptype> *<name>counterName</name></param> + <param><ptype>GLuint</ptype> <name>counterDescLength</name></param> + <param><ptype>GLchar</ptype> *<name>counterDesc</name></param> + <param><ptype>GLuint</ptype> *<name>counterOffset</name></param> + <param><ptype>GLuint</ptype> *<name>counterDataSize</name></param> + <param><ptype>GLuint</ptype> *<name>counterTypeEnum</name></param> + <param><ptype>GLuint</ptype> *<name>counterDataTypeEnum</name></param> + <param><ptype>GLuint64</ptype> *<name>rawCounterMaxValue</name></param> + </command> + <command> <proto>void <name>glGetPerfMonitorCounterDataAMD</name></proto> <param><ptype>GLuint</ptype> <name>monitor</name></param> <param><ptype>GLenum</ptype> <name>pname</name></param> @@ -14182,6 +14329,29 @@ typedef unsigned int GLhandleARB; <param len="groupsSize"><ptype>GLuint</ptype> *<name>groups</name></param> </command> <command> + <proto>void <name>glGetPerfQueryDataINTEL</name></proto> + <param><ptype>GLuint</ptype> <name>queryHandle</name></param> + <param><ptype>GLuint</ptype> <name>flags</name></param> + <param><ptype>GLsizei</ptype> <name>dataSize</name></param> + <param><ptype>GLvoid</ptype> *<name>data</name></param> + <param><ptype>GLuint</ptype> *<name>bytesWritten</name></param> + </command> + <command> + <proto>void <name>glGetPerfQueryIdByNameINTEL</name></proto> + <param><ptype>GLchar</ptype> *<name>queryName</name></param> + <param><ptype>GLuint</ptype> *<name>queryId</name></param> + </command> + <command> + <proto>void <name>glGetPerfQueryInfoINTEL</name></proto> + <param><ptype>GLuint</ptype> <name>queryId</name></param> + <param><ptype>GLuint</ptype> <name>queryNameLength</name></param> + <param><ptype>GLchar</ptype> *<name>queryName</name></param> + <param><ptype>GLuint</ptype> *<name>dataSize</name></param> + <param><ptype>GLuint</ptype> *<name>noCounters</name></param> + <param><ptype>GLuint</ptype> *<name>noInstances</name></param> + <param><ptype>GLuint</ptype> *<name>capsMask</name></param> + </command> + <command> <proto>void <name>glGetPixelMapfv</name></proto> <param group="PixelMap"><ptype>GLenum</ptype> <name>map</name></param> <param len="COMPSIZE(map)"><ptype>GLfloat</ptype> *<name>values</name></param> @@ -14247,7 +14417,7 @@ typedef unsigned int GLhandleARB; <command> <proto>void <name>glGetPointerv</name></proto> <param group="GetPointervPName"><ptype>GLenum</ptype> <name>pname</name></param> - <param>void **<name>params</name></param> + <param len="1">void **<name>params</name></param> <glx type="single" opcode="208"/> </command> <command> @@ -14280,9 +14450,10 @@ typedef unsigned int GLhandleARB; <proto>void <name>glGetProgramBinaryOES</name></proto> <param><ptype>GLuint</ptype> <name>program</name></param> <param><ptype>GLsizei</ptype> <name>bufSize</name></param> - <param><ptype>GLsizei</ptype> *<name>length</name></param> - <param><ptype>GLenum</ptype> *<name>binaryFormat</name></param> + <param len="1"><ptype>GLsizei</ptype> *<name>length</name></param> + <param len="1"><ptype>GLenum</ptype> *<name>binaryFormat</name></param> <param len="bufSize">void *<name>binary</name></param> + <alias name="glGetProgramBinary"/> </command> <command> <proto>void <name>glGetProgramEnvParameterIivNV</name></proto> @@ -14390,7 +14561,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glGetProgramPipelineInfoLogEXT</name></proto> <param><ptype>GLuint</ptype> <name>pipeline</name></param> <param><ptype>GLsizei</ptype> <name>bufSize</name></param> - <param><ptype>GLsizei</ptype> *<name>length</name></param> + <param len="1"><ptype>GLsizei</ptype> *<name>length</name></param> <param len="bufSize"><ptype>GLchar</ptype> *<name>infoLog</name></param> </command> <command> @@ -14429,7 +14600,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLenum</ptype> <name>programInterface</name></param> <param><ptype>GLuint</ptype> <name>index</name></param> <param><ptype>GLsizei</ptype> <name>bufSize</name></param> - <param><ptype>GLsizei</ptype> *<name>length</name></param> + <param len="1"><ptype>GLsizei</ptype> *<name>length</name></param> <param len="bufSize"><ptype>GLchar</ptype> *<name>name</name></param> </command> <command> @@ -14440,7 +14611,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLsizei</ptype> <name>propCount</name></param> <param len="propCount">const <ptype>GLenum</ptype> *<name>props</name></param> <param><ptype>GLsizei</ptype> <name>bufSize</name></param> - <param><ptype>GLsizei</ptype> *<name>length</name></param> + <param len="1"><ptype>GLsizei</ptype> *<name>length</name></param> <param len="bufSize"><ptype>GLint</ptype> *<name>params</name></param> </command> <command> @@ -14604,7 +14775,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glGetRenderbufferParameterivOES</name></proto> <param><ptype>GLenum</ptype> <name>target</name></param> <param><ptype>GLenum</ptype> <name>pname</name></param> - <param><ptype>GLint</ptype> *<name>params</name></param> + <param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param> </command> <command> <proto>void <name>glGetSamplerParameterIiv</name></proto> @@ -14731,6 +14902,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLsizei</ptype> <name>bufSize</name></param> <param><ptype>GLsizei</ptype> *<name>length</name></param> <param len="bufSize"><ptype>GLint</ptype> *<name>values</name></param> + <alias name="glGetSynciv"/> </command> <command> <proto>void <name>glGetTexBumpParameterfvATI</name></proto> @@ -14760,7 +14932,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glGetTexEnvxv</name></proto> <param><ptype>GLenum</ptype> <name>target</name></param> <param><ptype>GLenum</ptype> <name>pname</name></param> - <param><ptype>GLfixed</ptype> *<name>params</name></param> + <param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param> </command> <command> <proto>void <name>glGetTexEnvxvOES</name></proto> @@ -14793,7 +14965,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glGetTexGenfvOES</name></proto> <param><ptype>GLenum</ptype> <name>coord</name></param> <param><ptype>GLenum</ptype> <name>pname</name></param> - <param><ptype>GLfloat</ptype> *<name>params</name></param> + <param len="COMPSIZE(pname)"><ptype>GLfloat</ptype> *<name>params</name></param> </command> <command> <proto>void <name>glGetTexGeniv</name></proto> @@ -14806,7 +14978,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glGetTexGenivOES</name></proto> <param><ptype>GLenum</ptype> <name>coord</name></param> <param><ptype>GLenum</ptype> <name>pname</name></param> - <param><ptype>GLint</ptype> *<name>params</name></param> + <param len="COMPSIZE(pname)"><ptype>GLint</ptype> *<name>params</name></param> </command> <command> <proto>void <name>glGetTexGenxvOES</name></proto> @@ -14899,7 +15071,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glGetTexParameterxv</name></proto> <param><ptype>GLenum</ptype> <name>target</name></param> <param><ptype>GLenum</ptype> <name>pname</name></param> - <param><ptype>GLfixed</ptype> *<name>params</name></param> + <param len="COMPSIZE(pname)"><ptype>GLfixed</ptype> *<name>params</name></param> </command> <command> <proto>void <name>glGetTexParameterxvOES</name></proto> @@ -15017,7 +15189,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glGetTranslatedShaderSourceANGLE</name></proto> <param><ptype>GLuint</ptype> <name>shader</name></param> <param><ptype>GLsizei</ptype> <name>bufsize</name></param> - <param><ptype>GLsizei</ptype> *<name>length</name></param> + <param len="1"><ptype>GLsizei</ptype> *<name>length</name></param> <param><ptype>GLchar</ptype> *<name>source</name></param> </command> <command> @@ -15181,7 +15353,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glGetVertexArrayPointervEXT</name></proto> <param><ptype>GLuint</ptype> <name>vaobj</name></param> <param><ptype>GLenum</ptype> <name>pname</name></param> - <param>void **<name>param</name></param> + <param len="1">void **<name>param</name></param> </command> <command> <proto>void <name>glGetVertexAttribArrayObjectfvATI</name></proto> @@ -15988,6 +16160,7 @@ typedef unsigned int GLhandleARB; <command> <proto><ptype>GLboolean</ptype> <name>glIsSyncAPPLE</name></proto> <param><ptype>GLsync</ptype> <name>sync</name></param> + <alias name="glIsSync"/> </command> <command> <proto group="Boolean"><ptype>GLboolean</ptype> <name>glIsTexture</name></proto> @@ -16034,6 +16207,7 @@ typedef unsigned int GLhandleARB; <command> <proto><ptype>GLboolean</ptype> <name>glIsVertexArrayOES</name></proto> <param><ptype>GLuint</ptype> <name>array</name></param> + <alias name="glIsVertexArray"/> </command> <command> <proto group="Boolean"><ptype>GLboolean</ptype> <name>glIsVertexAttribEnabledAPPLE</name></proto> @@ -16089,7 +16263,7 @@ typedef unsigned int GLhandleARB; <command> <proto>void <name>glLightModelxv</name></proto> <param><ptype>GLenum</ptype> <name>pname</name></param> - <param>const <ptype>GLfixed</ptype> *<name>param</name></param> + <param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>param</name></param> </command> <command> <proto>void <name>glLightModelxvOES</name></proto> @@ -16140,7 +16314,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glLightxv</name></proto> <param><ptype>GLenum</ptype> <name>light</name></param> <param><ptype>GLenum</ptype> <name>pname</name></param> - <param>const <ptype>GLfixed</ptype> *<name>params</name></param> + <param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>params</name></param> </command> <command> <proto>void <name>glLightxvOES</name></proto> @@ -16230,7 +16404,7 @@ typedef unsigned int GLhandleARB; </command> <command> <proto>void <name>glLoadMatrixx</name></proto> - <param>const <ptype>GLfixed</ptype> *<name>m</name></param> + <param len="16">const <ptype>GLfixed</ptype> *<name>m</name></param> </command> <command> <proto>void <name>glLoadMatrixxOES</name></proto> @@ -16421,6 +16595,7 @@ typedef unsigned int GLhandleARB; <proto>void *<name>glMapBufferOES</name></proto> <param><ptype>GLenum</ptype> <name>target</name></param> <param><ptype>GLenum</ptype> <name>access</name></param> + <alias name="glMapBuffer"/> </command> <command> <proto>void *<name>glMapBufferRange</name></proto> @@ -16436,6 +16611,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLintptr</ptype> <name>offset</name></param> <param><ptype>GLsizeiptr</ptype> <name>length</name></param> <param><ptype>GLbitfield</ptype> <name>access</name></param> + <alias name="glMapBufferRange"/> </command> <command> <proto>void <name>glMapControlPointsNV</name></proto> @@ -16625,7 +16801,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glMaterialxv</name></proto> <param><ptype>GLenum</ptype> <name>face</name></param> <param><ptype>GLenum</ptype> <name>pname</name></param> - <param>const <ptype>GLfixed</ptype> *<name>param</name></param> + <param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>param</name></param> </command> <command> <proto>void <name>glMaterialxvOES</name></proto> @@ -16648,14 +16824,14 @@ typedef unsigned int GLhandleARB; <param><ptype>GLint</ptype> <name>size</name></param> <param group="MatrixIndexPointerTypeARB"><ptype>GLenum</ptype> <name>type</name></param> <param><ptype>GLsizei</ptype> <name>stride</name></param> - <param len="COMPSIZE(type,stride)">const void *<name>pointer</name></param> + <param len="COMPSIZE(size,type,stride)">const void *<name>pointer</name></param> </command> <command> <proto>void <name>glMatrixIndexPointerOES</name></proto> <param><ptype>GLint</ptype> <name>size</name></param> <param><ptype>GLenum</ptype> <name>type</name></param> <param><ptype>GLsizei</ptype> <name>stride</name></param> - <param>const void *<name>pointer</name></param> + <param len="COMPSIZE(size,type,stride)">const void *<name>pointer</name></param> </command> <command> <proto>void <name>glMatrixIndexubvARB</name></proto> @@ -16831,7 +17007,7 @@ typedef unsigned int GLhandleARB; </command> <command> <proto>void <name>glMultMatrixx</name></proto> - <param>const <ptype>GLfixed</ptype> *<name>m</name></param> + <param len="16">const <ptype>GLfixed</ptype> *<name>m</name></param> </command> <command> <proto>void <name>glMultMatrixxOES</name></proto> @@ -16898,15 +17074,6 @@ typedef unsigned int GLhandleARB; <param><ptype>GLint</ptype> <name>vertexBufferCount</name></param> </command> <command> - <proto>void <name>glMultiDrawElementsIndirectBindlessNV</name></proto> - <param><ptype>GLenum</ptype> <name>mode</name></param> - <param><ptype>GLenum</ptype> <name>type</name></param> - <param>const void *<name>indirect</name></param> - <param><ptype>GLsizei</ptype> <name>drawCount</name></param> - <param><ptype>GLsizei</ptype> <name>stride</name></param> - <param><ptype>GLint</ptype> <name>vertexBufferCount</name></param> - </command> - <command> <proto>void <name>glMultiDrawArraysIndirectCountARB</name></proto> <param><ptype>GLenum</ptype> <name>mode</name></param> <param><ptype>GLintptr</ptype> <name>indirect</name></param> @@ -16965,6 +17132,15 @@ typedef unsigned int GLhandleARB; <alias name="glMultiDrawElementsIndirect"/> </command> <command> + <proto>void <name>glMultiDrawElementsIndirectBindlessNV</name></proto> + <param><ptype>GLenum</ptype> <name>mode</name></param> + <param><ptype>GLenum</ptype> <name>type</name></param> + <param>const void *<name>indirect</name></param> + <param><ptype>GLsizei</ptype> <name>drawCount</name></param> + <param><ptype>GLsizei</ptype> <name>stride</name></param> + <param><ptype>GLint</ptype> <name>vertexBufferCount</name></param> + </command> + <command> <proto>void <name>glMultiDrawElementsIndirectCountARB</name></proto> <param><ptype>GLenum</ptype> <name>mode</name></param> <param><ptype>GLenum</ptype> <name>type</name></param> @@ -17894,7 +18070,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glNamedBufferStorageEXT</name></proto> <param><ptype>GLuint</ptype> <name>buffer</name></param> <param><ptype>GLsizeiptr</ptype> <name>size</name></param> - <param>const void *<name>data</name></param> + <param len="size">const void *<name>data</name></param> <param><ptype>GLbitfield</ptype> <name>flags</name></param> </command> <command> @@ -18814,7 +18990,7 @@ typedef unsigned int GLhandleARB; <command> <proto>void <name>glPointParameterxv</name></proto> <param><ptype>GLenum</ptype> <name>pname</name></param> - <param>const <ptype>GLfixed</ptype> *<name>params</name></param> + <param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>params</name></param> </command> <command> <proto>void <name>glPointParameterxvOES</name></proto> @@ -18830,7 +19006,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glPointSizePointerOES</name></proto> <param><ptype>GLenum</ptype> <name>type</name></param> <param><ptype>GLsizei</ptype> <name>stride</name></param> - <param>const void *<name>pointer</name></param> + <param len="COMPSIZE(type,stride)">const void *<name>pointer</name></param> </command> <command> <proto>void <name>glPointSizex</name></proto> @@ -18981,8 +19157,9 @@ typedef unsigned int GLhandleARB; <proto>void <name>glProgramBinaryOES</name></proto> <param><ptype>GLuint</ptype> <name>program</name></param> <param><ptype>GLenum</ptype> <name>binaryFormat</name></param> - <param>const void *<name>binary</name></param> + <param len="length">const void *<name>binary</name></param> <param><ptype>GLint</ptype> <name>length</name></param> + <alias name="glProgramBinary"/> </command> <command> <proto>void <name>glProgramBufferParametersIivNV</name></proto> @@ -19514,7 +19691,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLuint</ptype> <name>program</name></param> <param><ptype>GLint</ptype> <name>location</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> - <param len="COMPSIZE(count*2)">const <ptype>GLint64EXT</ptype> *<name>value</name></param> + <param len="count*2">const <ptype>GLint64EXT</ptype> *<name>value</name></param> </command> <command> <proto>void <name>glProgramUniform2iEXT</name></proto> @@ -19558,7 +19735,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLuint</ptype> <name>program</name></param> <param><ptype>GLint</ptype> <name>location</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> - <param len="COMPSIZE(count*2)">const <ptype>GLuint64EXT</ptype> *<name>value</name></param> + <param len="count*2">const <ptype>GLuint64EXT</ptype> *<name>value</name></param> </command> <command> <proto>void <name>glProgramUniform2uiEXT</name></proto> @@ -19666,7 +19843,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLuint</ptype> <name>program</name></param> <param><ptype>GLint</ptype> <name>location</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> - <param len="COMPSIZE(count*3)">const <ptype>GLint64EXT</ptype> *<name>value</name></param> + <param len="count*3">const <ptype>GLint64EXT</ptype> *<name>value</name></param> </command> <command> <proto>void <name>glProgramUniform3iEXT</name></proto> @@ -19713,7 +19890,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLuint</ptype> <name>program</name></param> <param><ptype>GLint</ptype> <name>location</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> - <param len="COMPSIZE(count*3)">const <ptype>GLuint64EXT</ptype> *<name>value</name></param> + <param len="count*3">const <ptype>GLuint64EXT</ptype> *<name>value</name></param> </command> <command> <proto>void <name>glProgramUniform3uiEXT</name></proto> @@ -19828,7 +20005,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLuint</ptype> <name>program</name></param> <param><ptype>GLint</ptype> <name>location</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> - <param len="COMPSIZE(count*4)">const <ptype>GLint64EXT</ptype> *<name>value</name></param> + <param len="count*4">const <ptype>GLint64EXT</ptype> *<name>value</name></param> </command> <command> <proto>void <name>glProgramUniform4iEXT</name></proto> @@ -19878,7 +20055,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLuint</ptype> <name>program</name></param> <param><ptype>GLint</ptype> <name>location</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> - <param len="COMPSIZE(count*4)">const <ptype>GLuint64EXT</ptype> *<name>value</name></param> + <param len="count*4">const <ptype>GLuint64EXT</ptype> *<name>value</name></param> </command> <command> <proto>void <name>glProgramUniform4uiEXT</name></proto> @@ -19922,7 +20099,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLuint</ptype> <name>program</name></param> <param><ptype>GLint</ptype> <name>location</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> - <param>const <ptype>GLuint64</ptype> *<name>values</name></param> + <param len="count">const <ptype>GLuint64</ptype> *<name>values</name></param> </command> <command> <proto>void <name>glProgramUniformHandleui64vNV</name></proto> @@ -20314,6 +20491,13 @@ typedef unsigned int GLhandleARB; <param len="16"><ptype>GLint</ptype> *<name>exponent</name></param> </command> <command> + <proto>void <name>glQueryObjectParameteruiAMD</name></proto> + <param><ptype>GLenum</ptype> <name>target</name></param> + <param><ptype>GLuint</ptype> <name>id</name></param> + <param><ptype>GLenum</ptype> <name>pname</name></param> + <param group="OcclusionQueryEventMaskAMD"><ptype>GLuint</ptype> <name>param</name></param> + </command> + <command> <proto>void <name>glRasterPos2d</name></proto> <param group="CoordD"><ptype>GLdouble</ptype> <name>x</name></param> <param group="CoordD"><ptype>GLdouble</ptype> <name>y</name></param> @@ -20697,6 +20881,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLenum</ptype> <name>internalformat</name></param> <param><ptype>GLsizei</ptype> <name>width</name></param> <param><ptype>GLsizei</ptype> <name>height</name></param> + <alias name="glRenderbufferStorageMultisample"/> </command> <command> <proto>void <name>glRenderbufferStorageOES</name></proto> @@ -20998,7 +21183,7 @@ typedef unsigned int GLhandleARB; </command> <command> <proto>void <name>glSampleMaski</name></proto> - <param><ptype>GLuint</ptype> <name>index</name></param> + <param><ptype>GLuint</ptype> <name>maskNumber</name></param> <param><ptype>GLbitfield</ptype> <name>mask</name></param> </command> <command> @@ -22332,7 +22517,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glTexEnvxv</name></proto> <param><ptype>GLenum</ptype> <name>target</name></param> <param><ptype>GLenum</ptype> <name>pname</name></param> - <param>const <ptype>GLfixed</ptype> *<name>params</name></param> + <param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>params</name></param> </command> <command> <proto>void <name>glTexEnvxvOES</name></proto> @@ -22386,7 +22571,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glTexGenfvOES</name></proto> <param><ptype>GLenum</ptype> <name>coord</name></param> <param><ptype>GLenum</ptype> <name>pname</name></param> - <param>const <ptype>GLfloat</ptype> *<name>params</name></param> + <param len="COMPSIZE(pname)">const <ptype>GLfloat</ptype> *<name>params</name></param> </command> <command> <proto>void <name>glTexGeni</name></proto> @@ -22412,7 +22597,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glTexGenivOES</name></proto> <param><ptype>GLenum</ptype> <name>coord</name></param> <param><ptype>GLenum</ptype> <name>pname</name></param> - <param>const <ptype>GLint</ptype> *<name>params</name></param> + <param len="COMPSIZE(pname)">const <ptype>GLint</ptype> *<name>params</name></param> </command> <command> <proto>void <name>glTexGenxOES</name></proto> @@ -22534,7 +22719,8 @@ typedef unsigned int GLhandleARB; <param><ptype>GLint</ptype> <name>border</name></param> <param><ptype>GLenum</ptype> <name>format</name></param> <param><ptype>GLenum</ptype> <name>type</name></param> - <param>const void *<name>pixels</name></param> + <param len="COMPSIZE(format,type,width,height,depth)">const void *<name>pixels</name></param> + <alias name="glTexImage3D"/> </command> <command> <proto>void <name>glTexImage4DSGIS</name></proto> @@ -22635,7 +22821,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glTexParameterxv</name></proto> <param><ptype>GLenum</ptype> <name>target</name></param> <param><ptype>GLenum</ptype> <name>pname</name></param> - <param>const <ptype>GLfixed</ptype> *<name>params</name></param> + <param len="COMPSIZE(pname)">const <ptype>GLfixed</ptype> *<name>params</name></param> </command> <command> <proto>void <name>glTexParameterxvOES</name></proto> @@ -22661,6 +22847,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLsizei</ptype> <name>levels</name></param> <param><ptype>GLenum</ptype> <name>internalformat</name></param> <param><ptype>GLsizei</ptype> <name>width</name></param> + <alias name="glTexStorage1D"/> </command> <command> <proto>void <name>glTexStorage2D</name></proto> @@ -22677,6 +22864,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLenum</ptype> <name>internalformat</name></param> <param><ptype>GLsizei</ptype> <name>width</name></param> <param><ptype>GLsizei</ptype> <name>height</name></param> + <alias name="glTexStorage2D"/> </command> <command> <proto>void <name>glTexStorage2DMultisample</name></proto> @@ -22704,6 +22892,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLsizei</ptype> <name>width</name></param> <param><ptype>GLsizei</ptype> <name>height</name></param> <param><ptype>GLsizei</ptype> <name>depth</name></param> + <alias name="glTexStorage3D"/> </command> <command> <proto>void <name>glTexStorage3DMultisample</name></proto> @@ -22821,7 +23010,8 @@ typedef unsigned int GLhandleARB; <param><ptype>GLsizei</ptype> <name>depth</name></param> <param><ptype>GLenum</ptype> <name>format</name></param> <param><ptype>GLenum</ptype> <name>type</name></param> - <param>const void *<name>pixels</name></param> + <param len="COMPSIZE(format,type,width,height,depth)">const void *<name>pixels</name></param> + <alias name="glTexSubImage3D"/> </command> <command> <proto>void <name>glTexSubImage4DSGIS</name></proto> @@ -23377,7 +23567,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glUniform2i64vNV</name></proto> <param><ptype>GLint</ptype> <name>location</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> - <param len="COMPSIZE(count*2)">const <ptype>GLint64EXT</ptype> *<name>value</name></param> + <param len="count*2">const <ptype>GLint64EXT</ptype> *<name>value</name></param> </command> <command> <proto>void <name>glUniform2iARB</name></proto> @@ -23415,7 +23605,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glUniform2ui64vNV</name></proto> <param><ptype>GLint</ptype> <name>location</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> - <param len="COMPSIZE(count*2)">const <ptype>GLuint64EXT</ptype> *<name>value</name></param> + <param len="count*2">const <ptype>GLuint64EXT</ptype> *<name>value</name></param> </command> <command> <proto>void <name>glUniform2uiEXT</name></proto> @@ -23496,7 +23686,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glUniform3i64vNV</name></proto> <param><ptype>GLint</ptype> <name>location</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> - <param len="COMPSIZE(count*3)">const <ptype>GLint64EXT</ptype> *<name>value</name></param> + <param len="count*3">const <ptype>GLint64EXT</ptype> *<name>value</name></param> </command> <command> <proto>void <name>glUniform3iARB</name></proto> @@ -23537,7 +23727,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glUniform3ui64vNV</name></proto> <param><ptype>GLint</ptype> <name>location</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> - <param len="COMPSIZE(count*3)">const <ptype>GLuint64EXT</ptype> *<name>value</name></param> + <param len="count*3">const <ptype>GLuint64EXT</ptype> *<name>value</name></param> </command> <command> <proto>void <name>glUniform3uiEXT</name></proto> @@ -23624,7 +23814,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glUniform4i64vNV</name></proto> <param><ptype>GLint</ptype> <name>location</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> - <param len="COMPSIZE(count*4)">const <ptype>GLint64EXT</ptype> *<name>value</name></param> + <param len="count*4">const <ptype>GLint64EXT</ptype> *<name>value</name></param> </command> <command> <proto>void <name>glUniform4iARB</name></proto> @@ -23668,7 +23858,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glUniform4ui64vNV</name></proto> <param><ptype>GLint</ptype> <name>location</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> - <param len="COMPSIZE(count*4)">const <ptype>GLuint64EXT</ptype> *<name>value</name></param> + <param len="count*4">const <ptype>GLuint64EXT</ptype> *<name>value</name></param> </command> <command> <proto>void <name>glUniform4uiEXT</name></proto> @@ -23718,7 +23908,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glUniformHandleui64vARB</name></proto> <param><ptype>GLint</ptype> <name>location</name></param> <param><ptype>GLsizei</ptype> <name>count</name></param> - <param>const <ptype>GLuint64</ptype> *<name>value</name></param> + <param len="count">const <ptype>GLuint64</ptype> *<name>value</name></param> </command> <command> <proto>void <name>glUniformHandleui64vNV</name></proto> @@ -23837,7 +24027,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLsizei</ptype> <name>count</name></param> <param group="Boolean"><ptype>GLboolean</ptype> <name>transpose</name></param> <param len="6">const <ptype>GLfloat</ptype> *<name>value</name></param> - <alias name="glUniformMatrix3x2"/> + <alias name="glUniformMatrix3x2fv"/> </command> <command> <proto>void <name>glUniformMatrix3x4dv</name></proto> @@ -23962,6 +24152,7 @@ typedef unsigned int GLhandleARB; <command> <proto><ptype>GLboolean</ptype> <name>glUnmapBufferOES</name></proto> <param><ptype>GLenum</ptype> <name>target</name></param> + <alias name="glUnmapBuffer"/> </command> <command> <proto group="Boolean"><ptype>GLboolean</ptype> <name>glUnmapNamedBufferEXT</name></proto> @@ -24027,7 +24218,7 @@ typedef unsigned int GLhandleARB; <param>const void *<name>getProcAddress</name></param> </command> <command> - <proto>void <name>glVDPAUIsSurfaceNV</name></proto> + <proto><ptype>GLboolean</ptype> <name>glVDPAUIsSurfaceNV</name></proto> <param group="vdpauSurfaceNV"><ptype>GLvdpauSurfaceNV</ptype> <name>surface</name></param> </command> <command> @@ -25312,6 +25503,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glVertexAttribDivisorANGLE</name></proto> <param><ptype>GLuint</ptype> <name>index</name></param> <param><ptype>GLuint</ptype> <name>divisor</name></param> + <alias name="glVertexAttribDivisor"/> </command> <command> <proto>void <name>glVertexAttribDivisorARB</name></proto> @@ -25329,6 +25521,7 @@ typedef unsigned int GLhandleARB; <proto>void <name>glVertexAttribDivisorNV</name></proto> <param><ptype>GLuint</ptype> <name>index</name></param> <param><ptype>GLuint</ptype> <name>divisor</name></param> + <alias name="glVertexAttribDivisor"/> </command> <command> <proto>void <name>glVertexAttribFormat</name></proto> @@ -26439,6 +26632,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLsync</ptype> <name>sync</name></param> <param><ptype>GLbitfield</ptype> <name>flags</name></param> <param><ptype>GLuint64</ptype> <name>timeout</name></param> + <alias name="glWaitSync"/> </command> <command> <proto>void <name>glWeightPathsNV</name></proto> @@ -26459,7 +26653,7 @@ typedef unsigned int GLhandleARB; <param><ptype>GLint</ptype> <name>size</name></param> <param><ptype>GLenum</ptype> <name>type</name></param> <param><ptype>GLsizei</ptype> <name>stride</name></param> - <param>const void *<name>pointer</name></param> + <param len="COMPSIZE(type,stride)">const void *<name>pointer</name></param> </command> <command> <proto>void <name>glWeightbvARB</name></proto> @@ -30173,6 +30367,12 @@ typedef unsigned int GLhandleARB; </require> <require comment="Reuse tokens from ARB_shading_language_packing (none)"> </require> + <require comment="Reuse tokens from ARB_texture_compression_bptc"> + <enum name="GL_COMPRESSED_RGBA_BPTC_UNORM"/> + <enum name="GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM"/> + <enum name="GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT"/> + <enum name="GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT"/> + </require> <require comment="Reuse tokens from ARB_texture_storage"> <enum name="GL_TEXTURE_IMMUTABLE_FORMAT"/> </require> @@ -32158,6 +32358,17 @@ typedef unsigned int GLhandleARB; <command name="glIsNameAMD"/> </require> </extension> + <extension name="GL_AMD_occlusion_query_event" supported="gl"> + <require> + <enum name="GL_OCCLUSION_QUERY_EVENT_MASK_AMD"/> + <enum name="GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD"/> + <enum name="GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD"/> + <enum name="GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD"/> + <enum name="GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD"/> + <enum name="GL_QUERY_ALL_EVENT_BITS_AMD"/> + <command name="glQueryObjectParameteruiAMD"/> + </require> + </extension> <extension name="GL_AMD_performance_monitor" supported="gl|gles2"> <require> <enum name="GL_COUNTER_TYPE_AMD"/> @@ -36779,7 +36990,7 @@ typedef unsigned int GLhandleARB; <command name="glUseProgramStagesEXT"/> <command name="glValidateProgramPipelineEXT"/> </require> - <require api="gles2" comment="Depends on OpenGL ES 3.0"> + <require api="gles2" comment="Depends on OpenGL ES 3.0 or GL_NV_non_square_matrices"> <command name="glProgramUniform1uiEXT"/> <command name="glProgramUniform2uiEXT"/> <command name="glProgramUniform3uiEXT"/> @@ -37840,6 +38051,40 @@ typedef unsigned int GLhandleARB; <command name="glTexCoordPointervINTEL"/> </require> </extension> + <extension name="GL_INTEL_performance_query" supported="gl|gles2"> + <require> + <enum name="GL_PERFQUERY_SINGLE_CONTEXT_INTEL"/> + <enum name="GL_PERFQUERY_GLOBAL_CONTEXT_INTEL"/> + <enum name="GL_PERFQUERY_WAIT_INTEL"/> + <enum name="GL_PERFQUERY_FLUSH_INTEL"/> + <enum name="GL_PERFQUERY_DONOT_FLUSH_INTEL"/> + <enum name="GL_PERFQUERY_COUNTER_EVENT_INTEL"/> + <enum name="GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL"/> + <enum name="GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL"/> + <enum name="GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL"/> + <enum name="GL_PERFQUERY_COUNTER_RAW_INTEL"/> + <enum name="GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL"/> + <enum name="GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL"/> + <enum name="GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL"/> + <enum name="GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL"/> + <enum name="GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL"/> + <enum name="GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL"/> + <enum name="GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL"/> + <enum name="GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL"/> + <enum name="GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL"/> + <enum name="GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL"/> + <command name="glBeginPerfQueryINTEL"/> + <command name="glCreatePerfQueryINTEL"/> + <command name="glDeletePerfQueryINTEL"/> + <command name="glEndPerfQueryINTEL"/> + <command name="glGetFirstPerfQueryIdINTEL"/> + <command name="glGetNextPerfQueryIdINTEL"/> + <command name="glGetPerfCounterInfoINTEL"/> + <command name="glGetPerfQueryDataINTEL"/> + <command name="glGetPerfQueryIdByNameINTEL"/> + <command name="glGetPerfQueryInfoINTEL"/> + </require> + </extension> <extension name="GL_KHR_debug" supported="gl|glcore|gles2"> <require api="gl" comment="KHR extensions *mandate* suffixes for ES, unlike for GL"> <enum name="GL_DEBUG_OUTPUT_SYNCHRONOUS"/> @@ -38077,6 +38322,15 @@ typedef unsigned int GLhandleARB; <command name="glEndConditionalRenderNVX"/> </require> </extension> + <extension name="GL_NVX_gpu_memory_info" supported="gl"> + <require> + <enum name="GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX"/> + <enum name="GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX"/> + <enum name="GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX"/> + <enum name="GL_GPU_MEMORY_INFO_EVICTION_COUNT_NVX"/> + <enum name="GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX"/> + </require> + </extension> <extension name="GL_NV_bindless_multi_draw_indirect" supported="gl"> <require> <command name="glMultiDrawArraysIndirectBindlessNV"/> @@ -38101,21 +38355,10 @@ typedef unsigned int GLhandleARB; </require> </extension> <extension name="GL_NV_blend_equation_advanced" supported="gl|gles2"> - <require api="gles2" comment="Really only required for ES 2.0, not ES 3.0"> - <enum name="GL_BLUE_NV"/> - <enum name="GL_GREEN_NV"/> - <enum name="GL_RED_NV"/> - <enum name="GL_XOR_NV"/> - </require> - <require api="gl" comment="GL has these enums in core"> - <enum name="GL_BLUE"/> - <enum name="GL_GREEN"/> - <enum name="GL_RED"/> - <enum name="GL_XOR"/> - </require> <require> <enum name="GL_BLEND_OVERLAP_NV"/> <enum name="GL_BLEND_PREMULTIPLIED_SRC_NV"/> + <enum name="GL_BLUE_NV"/> <enum name="GL_COLORBURN_NV"/> <enum name="GL_COLORDODGE_NV"/> <enum name="GL_CONJOINT_NV"/> @@ -38129,6 +38372,7 @@ typedef unsigned int GLhandleARB; <enum name="GL_DST_OUT_NV"/> <enum name="GL_DST_OVER_NV"/> <enum name="GL_EXCLUSION_NV"/> + <enum name="GL_GREEN_NV"/> <enum name="GL_HARDLIGHT_NV"/> <enum name="GL_HARDMIX_NV"/> <enum name="GL_HSL_COLOR_NV"/> @@ -38151,6 +38395,7 @@ typedef unsigned int GLhandleARB; <enum name="GL_PLUS_CLAMPED_NV"/> <enum name="GL_PLUS_DARKER_NV"/> <enum name="GL_PLUS_NV"/> + <enum name="GL_RED_NV"/> <enum name="GL_SCREEN_NV"/> <enum name="GL_SOFTLIGHT_NV"/> <enum name="GL_SRC_ATOP_NV"/> @@ -38160,6 +38405,7 @@ typedef unsigned int GLhandleARB; <enum name="GL_SRC_OVER_NV"/> <enum name="GL_UNCORRELATED_NV"/> <enum name="GL_VIVIDLIGHT_NV"/> + <enum name="GL_XOR_NV"/> <enum name="GL_ZERO"/> <command name="glBlendParameteriNV"/> <command name="glBlendBarrierNV"/> @@ -40239,6 +40485,26 @@ typedef unsigned int GLhandleARB; <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR"/> <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR"/> <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR"/> + <enum name="GL_COMPRESSED_RGBA_ASTC_3x3x3_OES"/> + <enum name="GL_COMPRESSED_RGBA_ASTC_4x3x3_OES"/> + <enum name="GL_COMPRESSED_RGBA_ASTC_4x4x3_OES"/> + <enum name="GL_COMPRESSED_RGBA_ASTC_4x4x4_OES"/> + <enum name="GL_COMPRESSED_RGBA_ASTC_5x4x4_OES"/> + <enum name="GL_COMPRESSED_RGBA_ASTC_5x5x4_OES"/> + <enum name="GL_COMPRESSED_RGBA_ASTC_5x5x5_OES"/> + <enum name="GL_COMPRESSED_RGBA_ASTC_6x5x5_OES"/> + <enum name="GL_COMPRESSED_RGBA_ASTC_6x6x5_OES"/> + <enum name="GL_COMPRESSED_RGBA_ASTC_6x6x6_OES"/> + <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES"/> + <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES"/> + <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES"/> + <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES"/> + <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES"/> + <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES"/> + <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES"/> + <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES"/> + <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES"/> + <enum name="GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES"/> </require> </extension> <extension name="GL_OES_texture_cube_map" supported="gles1"> diff --git a/xorg-server/hw/xwin/glx/indirect.c b/xorg-server/hw/xwin/glx/indirect.c index 32d227b31..908786b73 100644 --- a/xorg-server/hw/xwin/glx/indirect.c +++ b/xorg-server/hw/xwin/glx/indirect.c @@ -1784,7 +1784,7 @@ glxWinCreateContext(__GLXscreen * screen, glxWinReleaseTexImage }; - context = (__GLXWinContext *) calloc(1, sizeof(__GLXWinContext)); + context = calloc(1, sizeof(__GLXWinContext)); if (!context) return NULL; diff --git a/xorg-server/hw/xwin/glx/reg.py b/xorg-server/hw/xwin/glx/reg.py index de28323d5..1bbe0a052 100644 --- a/xorg-server/hw/xwin/glx/reg.py +++ b/xorg-server/hw/xwin/glx/reg.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 -i # -# Copyright (c) 2013 The Khronos Group Inc. +# Copyright (c) 2013-2014 The Khronos Group Inc. # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and/or associated documentation files (the diff --git a/xorg-server/hw/xwin/glx/wgl.xml b/xorg-server/hw/xwin/glx/wgl.xml index 8e0315308..102185a03 100644 --- a/xorg-server/hw/xwin/glx/wgl.xml +++ b/xorg-server/hw/xwin/glx/wgl.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <registry> <!-- - Copyright (c) 2013 The Khronos Group Inc. + Copyright (c) 2013-2014 The Khronos Group Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and/or associated documentation files (the diff --git a/xorg-server/hw/xwin/glx/wglext.h b/xorg-server/hw/xwin/glx/wglext.h index dc73a01aa..cf9781ddd 100644 --- a/xorg-server/hw/xwin/glx/wglext.h +++ b/xorg-server/hw/xwin/glx/wglext.h @@ -6,7 +6,7 @@ extern "C" { #endif /* -** Copyright (c) 2013 The Khronos Group Inc. +** Copyright (c) 2013-2014 The Khronos Group Inc. ** ** Permission is hereby granted, free of charge, to any person obtaining a ** copy of this software and/or associated documentation files (the @@ -33,7 +33,7 @@ extern "C" { ** used to make the header, and the header can be found at ** http://www.opengl.org/registry/ ** -** Khronos $Revision: 23649 $ on $Date: 2013-10-23 00:21:49 -0700 (Wed, 23 Oct 2013) $ +** Khronos $Revision: 25401 $ on $Date: 2014-02-18 15:43:24 -0800 (Tue, 18 Feb 2014) $ */ #if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) @@ -41,7 +41,7 @@ extern "C" { #include <windows.h> #endif -#define WGL_WGLEXT_VERSION 20130916 +#define WGL_WGLEXT_VERSION 20140203 /* Generated C header for: * API: wgl diff --git a/xorg-server/hw/xwin/win.h b/xorg-server/hw/xwin/win.h index 63a92f5e3..47e8f36eb 100644 --- a/xorg-server/hw/xwin/win.h +++ b/xorg-server/hw/xwin/win.h @@ -716,7 +716,7 @@ Bool winAllocatePrivates(ScreenPtr pScreen); Bool - winInitCmapPrivates(ColormapPtr pCmap, int index); + winInitCmapPrivates(ColormapPtr pCmap, int i); Bool winAllocateCmapPrivates(ColormapPtr pCmap); @@ -1024,12 +1024,12 @@ Bool winScreenInit(ScreenPtr pScreen, int argc, char **argv); Bool - winFinishScreenInitFB(int index, ScreenPtr pScreen, int argc, char **argv); + winFinishScreenInitFB(int i, ScreenPtr pScreen, int argc, char **argv); #if defined(XWIN_NATIVEGDI) Bool -winFinishScreenInitNativeGDI(int index, +winFinishScreenInitNativeGDI(int i, ScreenPtr pScreen, int argc, char **argv); #endif diff --git a/xorg-server/hw/xwin/winallpriv.c b/xorg-server/hw/xwin/winallpriv.c index 248d03658..0bbac20cd 100644 --- a/xorg-server/hw/xwin/winallpriv.c +++ b/xorg-server/hw/xwin/winallpriv.c @@ -56,7 +56,7 @@ winAllocatePrivates(ScreenPtr pScreen) } /* Allocate memory for the screen private structure */ - pScreenPriv = (winPrivScreenPtr) malloc(sizeof(winPrivScreenRec)); + pScreenPriv = malloc(sizeof(winPrivScreenRec)); if (!pScreenPriv) { ErrorF("winAllocateScreenPrivates - malloc () failed\n"); return FALSE; @@ -144,7 +144,7 @@ winAllocateCmapPrivates(ColormapPtr pCmap) } /* Allocate memory for our private structure */ - pCmapPriv = (winPrivCmapPtr) malloc(sizeof(winPrivCmapRec)); + pCmapPriv = malloc(sizeof(winPrivCmapRec)); if (!pCmapPriv) { ErrorF("winAllocateCmapPrivates - malloc () failed\n"); return FALSE; diff --git a/xorg-server/hw/xwin/winclipboardinit.c b/xorg-server/hw/xwin/winclipboardinit.c index 90fcf0086..45cf5e048 100644 --- a/xorg-server/hw/xwin/winclipboardinit.c +++ b/xorg-server/hw/xwin/winclipboardinit.c @@ -80,7 +80,7 @@ winInitClipboard(void) } /* - * Create the Windows window that we use to recieve Windows messages + * Create the Windows window that we use to receive Windows messages */ HWND diff --git a/xorg-server/hw/xwin/winclipboardxevents.c b/xorg-server/hw/xwin/winclipboardxevents.c index 4aff0659b..15ee0ab18 100644 --- a/xorg-server/hw/xwin/winclipboardxevents.c +++ b/xorg-server/hw/xwin/winclipboardxevents.c @@ -267,7 +267,7 @@ winClipboardFlushXEvents(HWND hwnd, (LPCWSTR) pszGlobalData, -1, NULL, 0, NULL, NULL); /* NOTE: iConvertDataLen includes space for null terminator */ - pszConvertData = (char *) malloc(iConvertDataLen); + pszConvertData = malloc(iConvertDataLen); WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR) pszGlobalData, @@ -606,8 +606,7 @@ winClipboardFlushXEvents(HWND hwnd, pszReturnData, -1, NULL, 0); /* Allocate memory for the Unicode string */ - pwszUnicodeStr - = (wchar_t *) malloc(sizeof(wchar_t) * (iUnicodeLen + 1)); + pwszUnicodeStr = malloc(sizeof(wchar_t) * (iUnicodeLen + 1)); if (!pwszUnicodeStr) { ErrorF("winClipboardFlushXEvents - SelectionNotify " "malloc failed for pwszUnicodeStr, aborting.\n"); diff --git a/xorg-server/hw/xwin/wincursor.c b/xorg-server/hw/xwin/wincursor.c index d55ff5bde..55c304f04 100644 --- a/xorg-server/hw/xwin/wincursor.c +++ b/xorg-server/hw/xwin/wincursor.c @@ -254,10 +254,8 @@ winLoadCursor(ScreenPtr pScreen, CursorPtr pCursor, int screen) bi.bV4BlueMask = 0x000000FF; bi.bV4AlphaMask = 0xFF000000; - lpBits = - (uint32_t *) calloc(pScreenPriv->cursor.sm_cx * - pScreenPriv->cursor.sm_cy, - sizeof(uint32_t)); + lpBits = calloc(pScreenPriv->cursor.sm_cx * pScreenPriv->cursor.sm_cy, + sizeof(uint32_t)); if (lpBits) { int y; @@ -301,9 +299,7 @@ winLoadCursor(ScreenPtr pScreen, CursorPtr pCursor, int screen) pbmiColors[2].rgbBlue = pCursor->foreBlue >> 8; pbmiColors[2].rgbReserved = 0; - lpBits = - (uint32_t *) calloc(pScreenPriv->cursor.sm_cx * - pScreenPriv->cursor.sm_cy, sizeof(char)); + lpBits = calloc(pScreenPriv->cursor.sm_cx * pScreenPriv->cursor.sm_cy, 1); pCur = (unsigned char *) lpBits; if (lpBits) { diff --git a/xorg-server/hw/xwin/wingc.c b/xorg-server/hw/xwin/wingc.c index aba398d0a..aba398d0a 100755..100644 --- a/xorg-server/hw/xwin/wingc.c +++ b/xorg-server/hw/xwin/wingc.c diff --git a/xorg-server/hw/xwin/winkeybd.c b/xorg-server/hw/xwin/winkeybd.c index e74672529..d76ed005e 100644 --- a/xorg-server/hw/xwin/winkeybd.c +++ b/xorg-server/hw/xwin/winkeybd.c @@ -128,7 +128,7 @@ winKeybdBell(int iPercent, DeviceIntPtr pDeviceInt, void *pCtrl, int iClass) * sound on systems with a sound card or it will beep the PC speaker * on systems that do not have a sound card. */ - MessageBeep(MB_OK); + if (iPercent > 0) MessageBeep(MB_OK); } /* Change some keyboard configuration parameters */ diff --git a/xorg-server/hw/xwin/winmonitors.h b/xorg-server/hw/xwin/winmonitors.h index 8201e47f4..5fe3ecd52 100644 --- a/xorg-server/hw/xwin/winmonitors.h +++ b/xorg-server/hw/xwin/winmonitors.h @@ -40,4 +40,4 @@ struct GetMonitorInfoData { HMONITOR monitorHandle; }; -Bool QueryMonitor(int index, struct GetMonitorInfoData *data); +Bool QueryMonitor(int i, struct GetMonitorInfoData *data); diff --git a/xorg-server/hw/xwin/winmultiwindowwm.c b/xorg-server/hw/xwin/winmultiwindowwm.c index 2b619a2b6..8518147a6 100644 --- a/xorg-server/hw/xwin/winmultiwindowwm.c +++ b/xorg-server/hw/xwin/winmultiwindowwm.c @@ -114,6 +114,7 @@ typedef struct _WMInfo { WMMsgQueueRec wmMsgQueue; Atom atmWmProtos; Atom atmWmDelete; + Atom atmWmTakeFocus; Atom atmPrivMap; #ifdef XWIN_MULTIWINDOWINTWM Bool fAllowOtherWM; @@ -372,7 +373,7 @@ Xutf8TextPropertyToString(Display * pDisplay, XTextProperty * xtp) for (i = 0; i < nNum; i++) iLen += strlen(ppList[i]); - pszReturnData = (char *) malloc(iLen + 1); + pszReturnData = malloc(iLen + 1); pszReturnData[0] = '\0'; for (i = 0; i < nNum; i++) strcat(pszReturnData, ppList[i]); @@ -380,7 +381,7 @@ Xutf8TextPropertyToString(Display * pDisplay, XTextProperty * xtp) XFreeStringList(ppList); } else { - pszReturnData = (char *) malloc(1); + pszReturnData = malloc(1); pszReturnData[0] = '\0'; } @@ -416,6 +417,27 @@ GetWindowName(Display * pDisplay, Window iWin, char **ppWindowName) } /* + * Does the client support the specified WM_PROTOCOLS protocol? + */ + +static Bool +IsWmProtocolAvailable(Display * pDisplay, Window iWindow, Atom atmProtocol) +{ + int i, n, found = 0; + Atom *protocols; + + if (XGetWMProtocols(pDisplay, iWindow, &protocols, &n)) { + for (i = 0; i < n; ++i) + if (protocols[i] == atmProtocol) + ++found; + + XFree(protocols); + } + + return found > 0; +} + +/* * Send a message to the X server from the WM thread */ @@ -500,7 +522,7 @@ UpdateName(WMInfoPtr pWMInfo, Window iWindow) int iLen = MultiByteToWideChar(CP_UTF8, 0, pszWindowName, -1, NULL, 0); wchar_t *pwszWideWindowName = - (wchar_t *) malloc(sizeof(wchar_t) * (iLen + 1)); + malloc(sizeof(wchar_t)*(iLen + 1)); MultiByteToWideChar(CP_UTF8, 0, pszWindowName, -1, pwszWideWindowName, iLen); @@ -743,21 +765,10 @@ winMultiWindowWMProc(void *pArg) case WM_WM_KILL: winDebug ("\tWM_WM_KILL\n"); { - int i, n, found = 0; - Atom *protocols; - - /* --- */ - if (XGetWMProtocols(pWMInfo->pDisplay, - pNode->msg.iWindow, &protocols, &n)) { - for (i = 0; i < n; ++i) - if (protocols[i] == pWMInfo->atmWmDelete) - ++found; - - XFree(protocols); - } - /* --- */ - if (found) + if (IsWmProtocolAvailable(pWMInfo->pDisplay, + pNode->msg.iWindow, + pWMInfo->atmWmDelete)) SendXMessage(pWMInfo->pDisplay, pNode->msg.iWindow, pWMInfo->atmWmProtos, pWMInfo->atmWmDelete); @@ -768,11 +779,39 @@ winMultiWindowWMProc(void *pArg) case WM_WM_ACTIVATE: winDebug ("\tWM_WM_ACTIVATE\n"); - /* Set the input focus */ - XSetInputFocus(pWMInfo->pDisplay, - pNode->msg.iWindow, - RevertToPointerRoot, CurrentTime); + + /* + ICCCM 4.1.7 is pretty opaque, but it appears that the rules are + actually quite simple: + -- the WM_HINTS input field determines whether the WM should call + XSetInputFocus() + -- independently, the WM_TAKE_FOCUS protocol determines whether + the WM should send a WM_TAKE_FOCUS ClientMessage. + */ + { + Bool neverFocus = FALSE; + XWMHints *hints = XGetWMHints(pWMInfo->pDisplay, pNode->msg.iWindow); + + if (hints) { + if (hints->flags & InputHint) + neverFocus = !hints->input; + XFree(hints); + } + + if (!neverFocus) + XSetInputFocus(pWMInfo->pDisplay, + pNode->msg.iWindow, + RevertToPointerRoot, CurrentTime); + + if (IsWmProtocolAvailable(pWMInfo->pDisplay, + pNode->msg.iWindow, + pWMInfo->atmWmTakeFocus)) + SendXMessage(pWMInfo->pDisplay, + pNode->msg.iWindow, + pWMInfo->atmWmProtos, pWMInfo->atmWmTakeFocus); + + } break; case WM_WM_NAME_EVENT: @@ -1177,9 +1216,9 @@ winInitWM(void **ppWMInfo, pthread_mutex_t * ppmServerStarted, int dwScreen, HWND hwndScreen, BOOL allowOtherWM) { - WMProcArgPtr pArg = (WMProcArgPtr) malloc(sizeof(WMProcArgRec)); - WMInfoPtr pWMInfo = (WMInfoPtr) malloc(sizeof(WMInfoRec)); - XMsgProcArgPtr pXMsgArg = (XMsgProcArgPtr) malloc(sizeof(XMsgProcArgRec)); + WMProcArgPtr pArg = malloc(sizeof(WMProcArgRec)); + WMInfoPtr pWMInfo = malloc(sizeof(WMInfoRec)); + XMsgProcArgPtr pXMsgArg = malloc(sizeof(XMsgProcArgRec)); /* Bail if the input parameters are bad */ if (pArg == NULL || pWMInfo == NULL || pXMsgArg == NULL) { @@ -1332,6 +1371,8 @@ winInitMultiWindowWM(WMInfoPtr pWMInfo, WMProcArgPtr pProcArg) "WM_PROTOCOLS", False); pWMInfo->atmWmDelete = XInternAtom(pWMInfo->pDisplay, "WM_DELETE_WINDOW", False); + pWMInfo->atmWmTakeFocus = XInternAtom(pWMInfo->pDisplay, + "WM_TAKE_FOCUS", False); pWMInfo->atmPrivMap = XInternAtom(pWMInfo->pDisplay, WINDOWSWM_NATIVE_HWND, False); @@ -1358,7 +1399,7 @@ winSendMessageToWM(void *pWMInfo, winWMMessagePtr pMsg) winDebug("winSendMessageToWM ()\n"); - pNode = (WMMsgNodePtr) malloc(sizeof(WMMsgNodeRec)); + pNode = malloc(sizeof(WMMsgNodeRec)); if (pNode != NULL) { memcpy(&pNode->msg, pMsg, sizeof(winWMMessageRec)); PushMessage(&((WMInfoPtr) pWMInfo)->wmMsgQueue, pNode); diff --git a/xorg-server/hw/xwin/winnativegdi.c b/xorg-server/hw/xwin/winnativegdi.c index 3cd565313..e0916bb8a 100644 --- a/xorg-server/hw/xwin/winnativegdi.c +++ b/xorg-server/hw/xwin/winnativegdi.c @@ -342,8 +342,7 @@ winCreateDIBNativeGDI(int iWidth, int iHeight, int iDepth, } /* Allocate bitmap info header */ - pbmih = (BITMAPINFOHEADER *) malloc(sizeof(BITMAPINFOHEADER) - + 256 * sizeof(RGBQUAD)); + pbmih = malloc(sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD)); if (pbmih == NULL) { ErrorF("winCreateDIBNativeGDI - malloc () failed\n"); return FALSE; diff --git a/xorg-server/hw/xwin/winprefslex.l b/xorg-server/hw/xwin/winprefslex.l index 66d12ede7..ff4459fda 100644 --- a/xorg-server/hw/xwin/winprefslex.l +++ b/xorg-server/hw/xwin/winprefslex.l @@ -43,7 +43,7 @@ extern int yyparse(void); static char *makestr(char *str) { char *ptr; - ptr = (char*)malloc (strlen(str)+1); + ptr = malloc(strlen(str)+1); if (!ptr) { ErrorF ("winMultiWindowLex:makestr() out of memory\n"); @@ -88,6 +88,7 @@ ALWAYSONTOP { return ALWAYSONTOP; } DEBUG { return DEBUGOUTPUT; } RELOAD { return RELOAD; } TRAYICON { return TRAYICON; } +FORCEEXIT { return FORCEEXIT; } SILENTEXIT { return SILENTEXIT; } "{" { return LB; } "}" { return RB; } diff --git a/xorg-server/hw/xwin/winprefsyacc.y b/xorg-server/hw/xwin/winprefsyacc.y index ff051f233..73fb5d56e 100644 --- a/xorg-server/hw/xwin/winprefsyacc.y +++ b/xorg-server/hw/xwin/winprefsyacc.y @@ -315,10 +315,9 @@ static void AddMenuLine (char *text, MENUCOMMANDTYPE cmd, char *param) { if (menu.menuItem==NULL) - menu.menuItem = (MENUITEM*)malloc(sizeof(MENUITEM)); + menu.menuItem = malloc(sizeof(MENUITEM)); else - menu.menuItem = (MENUITEM*) - realloc(menu.menuItem, sizeof(MENUITEM)*(menu.menuItems+1)); + menu.menuItem = realloc(menu.menuItem, sizeof(MENUITEM)*(menu.menuItems+1)); strncpy (menu.menuItem[menu.menuItems].text, text, MENU_MAX); menu.menuItem[menu.menuItems].text[MENU_MAX] = 0; @@ -343,10 +342,9 @@ CloseMenu (void) } if (pref.menuItems) - pref.menu = (MENUPARSED*) - realloc (pref.menu, (pref.menuItems+1)*sizeof(MENUPARSED)); + pref.menu = realloc (pref.menu, (pref.menuItems+1)*sizeof(MENUPARSED)); else - pref.menu = (MENUPARSED*)malloc (sizeof(MENUPARSED)); + pref.menu = malloc (sizeof(MENUPARSED)); memcpy (pref.menu+pref.menuItems, &menu, sizeof(MENUPARSED)); pref.menuItems++; @@ -369,10 +367,9 @@ static void AddIconLine (char *matchstr, char *iconfile) { if (pref.icon==NULL) - pref.icon = (ICONITEM*)malloc(sizeof(ICONITEM)); + pref.icon = malloc(sizeof(ICONITEM)); else - pref.icon = (ICONITEM*) - realloc(pref.icon, sizeof(ICONITEM)*(pref.iconItems+1)); + pref.icon = realloc(pref.icon, sizeof(ICONITEM)*(pref.iconItems+1)); strncpy(pref.icon[pref.iconItems].match, matchstr, MENU_MAX); pref.icon[pref.iconItems].match[MENU_MAX] = 0; @@ -405,10 +402,9 @@ static void AddStyleLine (char *matchstr, unsigned long style) { if (pref.style==NULL) - pref.style = (STYLEITEM*)malloc(sizeof(STYLEITEM)); + pref.style = malloc(sizeof(STYLEITEM)); else - pref.style = (STYLEITEM*) - realloc(pref.style, sizeof(STYLEITEM)*(pref.styleItems+1)); + pref.style = realloc(pref.style, sizeof(STYLEITEM)*(pref.styleItems+1)); strncpy(pref.style[pref.styleItems].match, matchstr, MENU_MAX); pref.style[pref.styleItems].match[MENU_MAX] = 0; @@ -438,10 +434,9 @@ static void AddSysMenuLine (char *matchstr, char *menuname, int pos) { if (pref.sysMenu==NULL) - pref.sysMenu = (SYSMENUITEM*)malloc(sizeof(SYSMENUITEM)); + pref.sysMenu = malloc(sizeof(SYSMENUITEM)); else - pref.sysMenu = (SYSMENUITEM*) - realloc(pref.sysMenu, sizeof(SYSMENUITEM)*(pref.sysMenuItems+1)); + pref.sysMenu = realloc(pref.sysMenu, sizeof(SYSMENUITEM)*(pref.sysMenuItems+1)); strncpy (pref.sysMenu[pref.sysMenuItems].match, matchstr, MENU_MAX); pref.sysMenu[pref.sysMenuItems].match[MENU_MAX] = 0; diff --git a/xorg-server/hw/xwin/winshadgdi.c b/xorg-server/hw/xwin/winshadgdi.c index d2a357f8e..7d41369db 100644 --- a/xorg-server/hw/xwin/winshadgdi.c +++ b/xorg-server/hw/xwin/winshadgdi.c @@ -183,8 +183,7 @@ winQueryRGBBitsAndMasks(ScreenPtr pScreen) } /* Allocate a bitmap header and color table */ - pbmih = (BITMAPINFOHEADER *) malloc(sizeof(BITMAPINFOHEADER) - + 256 * sizeof(RGBQUAD)); + pbmih = malloc(sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD)); if (pbmih == NULL) { ErrorF("winQueryRGBBitsAndMasks - malloc failed\n"); return FALSE; @@ -531,8 +530,7 @@ winInitScreenShadowGDI(ScreenPtr pScreen) pScreenPriv->hdcShadow = CreateCompatibleDC(pScreenPriv->hdcScreen); /* Allocate bitmap info header */ - pScreenPriv->pbmih = (BITMAPINFOHEADER *) malloc(sizeof(BITMAPINFOHEADER) - + 256 * sizeof(RGBQUAD)); + pScreenPriv->pbmih = malloc(sizeof(BITMAPINFOHEADER) + 256 * sizeof(RGBQUAD)); if (pScreenPriv->pbmih == NULL) { ErrorF("winInitScreenShadowGDI - malloc () failed\n"); return FALSE; diff --git a/xorg-server/hw/xwin/winwin32rootless.c b/xorg-server/hw/xwin/winwin32rootless.c index 7ea7f0c4d..024458063 100644 --- a/xorg-server/hw/xwin/winwin32rootless.c +++ b/xorg-server/hw/xwin/winwin32rootless.c @@ -183,8 +183,8 @@ InitWin32RootlessEngine(win32RootlessWindowPtr pRLWinPriv) /* Allocate bitmap info header */ pRLWinPriv->pbmihShadow = - (BITMAPINFOHEADER *) malloc(sizeof(BITMAPINFOHEADER) - + 256 * sizeof(RGBQUAD)); + malloc(sizeof(BITMAPINFOHEADER) + + 256 * sizeof(RGBQUAD)); if (pRLWinPriv->pbmihShadow == NULL) { ErrorF("InitWin32RootlessEngine - malloc () failed\n"); return; @@ -211,8 +211,7 @@ winMWExtWMCreateFrame(RootlessWindowPtr pFrame, ScreenPtr pScreen, winDebug("winMWExtWMCreateFrame %d %d - %d %d\n", newX, newY, pFrame->width, pFrame->height); - pRLWinPriv = - (win32RootlessWindowPtr) malloc(sizeof(win32RootlessWindowRec)); + pRLWinPriv = malloc(sizeof(win32RootlessWindowRec)); pRLWinPriv->pFrame = pFrame; pRLWinPriv->pfb = NULL; pRLWinPriv->hbmpShadow = NULL; diff --git a/xorg-server/hw/xwin/winwindow.c b/xorg-server/hw/xwin/winwindow.c index c67a1a610..d00a312c1 100644 --- a/xorg-server/hw/xwin/winwindow.c +++ b/xorg-server/hw/xwin/winwindow.c @@ -146,7 +146,7 @@ winCopyWindowNativeGDI(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc) nbox = RegionNumRects(prgnDst); /* Allocate source points for each box */ - if (!(pptSrc = (DDXPointPtr) malloc(nbox * sizeof(DDXPointRec)))) + if (!(pptSrc = malloc(nbox * sizeof(DDXPointRec)))) return; /* Set an iterator pointer */ diff --git a/xorg-server/hw/xwin/winwindowswm.c b/xorg-server/hw/xwin/winwindowswm.c index c61f5b79e..26dfa7e6f 100755..100644 --- a/xorg-server/hw/xwin/winwindowswm.c +++ b/xorg-server/hw/xwin/winwindowswm.c @@ -162,7 +162,7 @@ ProcWindowsWMSelectInput(ClientPtr client) } /* build the entry */ - pNewEvent = (WMEventPtr) malloc(sizeof(WMEventRec)); + pNewEvent = malloc(sizeof(WMEventRec)); if (!pNewEvent) return BadAlloc; pNewEvent->next = 0; @@ -183,7 +183,7 @@ ProcWindowsWMSelectInput(ClientPtr client) * done through the resource database. */ if (!pHead) { - pHead = (WMEventPtr *) malloc(sizeof(WMEventPtr)); + pHead = malloc(sizeof(WMEventPtr)); if (!pHead || !AddResource(eventResource, eventResourceType, (void *) pHead)) { diff --git a/xorg-server/include/gc.h b/xorg-server/include/gc.h index 1e69b5c3d..1e69b5c3d 100755..100644 --- a/xorg-server/include/gc.h +++ b/xorg-server/include/gc.h diff --git a/xorg-server/include/input.h b/xorg-server/include/input.h index fd3e209e5..bd947dab3 100644 --- a/xorg-server/include/input.h +++ b/xorg-server/include/input.h @@ -95,8 +95,8 @@ SOFTWARE. #define NO_AXIS_LIMITS -1 -#define MAP_LENGTH 256 -#define DOWN_LENGTH 32 /* 256/8 => number of bytes to hold 256 bits */ +#define MAP_LENGTH MAX_BUTTONS +#define DOWN_LENGTH (MAX_BUTTONS/8) /* 256/8 => number of bytes to hold 256 bits */ #define NullGrab ((GrabPtr)NULL) #define PointerRootWin ((WindowPtr)PointerRoot) #define NoneWin ((WindowPtr)None) @@ -221,12 +221,12 @@ typedef struct _InputOption InputOption; typedef struct _XI2Mask XI2Mask; typedef struct _InputAttributes { - const char *product; - const char *vendor; - const char *device; - const char *pnp_id; - const char *usb_id; - const char **tags; /* null-terminated */ + char *product; + char *vendor; + char *device; + char *pnp_id; + char *usb_id; + char **tags; /* null-terminated */ uint32_t flags; } InputAttributes; diff --git a/xorg-server/include/inputstr.h b/xorg-server/include/inputstr.h index dfcf7c383..f6cfb049d 100644 --- a/xorg-server/include/inputstr.h +++ b/xorg-server/include/inputstr.h @@ -542,7 +542,7 @@ typedef struct _DeviceIntRec { GrabInfoRec deviceGrab; /* grab on the device */ int type; /* MASTER_POINTER, MASTER_KEYBOARD, SLAVE */ Atom xinput_type; - const char *name; + char *name; int id; KeyClassPtr key; ValuatorClassPtr valuator; diff --git a/xorg-server/include/misc.h b/xorg-server/include/misc.h index 660200558..19e71035c 100644 --- a/xorg-server/include/misc.h +++ b/xorg-server/include/misc.h @@ -256,7 +256,7 @@ padding_for_int32(const int bytes) } -extern const char **xstrtokenize(const char *str, const char *separators); +extern char **xstrtokenize(const char *str, const char *separators); extern void FormatInt64(int64_t num, char *string); extern void FormatUInt64(uint64_t num, char *string); extern void FormatUInt64Hex(uint64_t num, char *string); diff --git a/xorg-server/include/xkbrules.h b/xorg-server/include/xkbrules.h index 956eade0b..ab5b4b266 100644 --- a/xorg-server/include/xkbrules.h +++ b/xorg-server/include/xkbrules.h @@ -30,11 +30,11 @@ /***====================================================================***/ typedef struct _XkbRMLVOSet { - const char *rules; - const char *model; - const char *layout; - const char *variant; - const char *options; + char *rules; + char *model; + char *layout; + char *variant; + char *options; } XkbRMLVOSet; typedef struct _XkbRF_VarDefs { diff --git a/xorg-server/include/xkbsrv.h b/xorg-server/include/xkbsrv.h index 111b3fe6b..7b3db0f86 100644 --- a/xorg-server/include/xkbsrv.h +++ b/xorg-server/include/xkbsrv.h @@ -738,6 +738,14 @@ extern _X_EXPORT void XkbClearAllLatchesAndLocks(DeviceIntPtr /* dev */ , XkbEventCausePtr /* cause */ ); +extern _X_EXPORT void XkbInitRules(XkbRMLVOSet * /* rmlvo */, + const char * /* rules */, + const char * /* model */, + const char * /* layout */, + const char * /* variant */, + const char * /* options */ + ) ; + extern _X_EXPORT void XkbGetRulesDflts(XkbRMLVOSet * /* rmlvo */ ); diff --git a/xorg-server/mi/mieq.c b/xorg-server/mi/mieq.c index 284bdac8b..dbd5a47ac 100644 --- a/xorg-server/mi/mieq.c +++ b/xorg-server/mi/mieq.c @@ -286,7 +286,7 @@ mieqEnqueue(DeviceIntPtr pDev, InternalEvent *e) else if (miEventQueue.dropped % QUEUE_DROP_BACKTRACE_FREQUENCY == 0 && miEventQueue.dropped / QUEUE_DROP_BACKTRACE_FREQUENCY <= QUEUE_DROP_BACKTRACE_MAX) { - ErrorFSigSafe("[mi] EQ overflow continuing. %u events have been " + ErrorFSigSafe("[mi] EQ overflow continuing. %zu events have been " "dropped.\n", miEventQueue.dropped); if (miEventQueue.dropped / QUEUE_DROP_BACKTRACE_FREQUENCY == QUEUE_DROP_BACKTRACE_MAX) { diff --git a/xorg-server/os/access.c b/xorg-server/os/access.c index 62c3d9925..62c3d9925 100755..100644 --- a/xorg-server/os/access.c +++ b/xorg-server/os/access.c diff --git a/xorg-server/os/log.c b/xorg-server/os/log.c index 97b93632b..67c27eefa 100644 --- a/xorg-server/os/log.c +++ b/xorg-server/os/log.c @@ -201,7 +201,9 @@ LogInit(const char *fname, const char *backup) char *logFileName = NULL; if (fname && *fname) { +#if __GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ > 2 #pragma GCC diagnostic ignored "-Wformat-nonliteral" +#endif if (asprintf(&logFileName, fname, display) == -1) FatalError("Cannot allocate space for the log file name\n"); @@ -212,7 +214,9 @@ LogInit(const char *fname, const char *backup) char *suffix; char *oldLog; +#if __GNUC__ > 4 || __GNUC__ == 4 && __GNUC_MINOR__ > 2 #pragma GCC diagnostic ignored "-Wformat-nonliteral" +#endif if ((asprintf(&suffix, backup, display) == -1) || (asprintf(&oldLog, "%s%s", logFileName, suffix) == -1)) FatalError("Cannot allocate space for the log file name\n"); diff --git a/xorg-server/os/utils.c b/xorg-server/os/utils.c index d73ef1903..cbd5c7ad5 100644 --- a/xorg-server/os/utils.c +++ b/xorg-server/os/utils.c @@ -2031,10 +2031,10 @@ CheckUserAuthorization(void) * Tokenize a string into a NULL terminated array of strings. Always returns * an allocated array unless an error occurs. */ -const char ** +char ** xstrtokenize(const char *str, const char *separators) { - const char **list, **nlist; + char **list, **nlist; char *tok, *tmp; unsigned num = 0, n; @@ -2062,7 +2062,7 @@ xstrtokenize(const char *str, const char *separators) error: free(tmp); for (n = 0; n < num; n++) - free((void *) list[n]); + free(list[n]); free(list); return NULL; } diff --git a/xorg-server/os/xdmcp.c b/xorg-server/os/xdmcp.c index bc7dcb3df..bc7dcb3df 100755..100644 --- a/xorg-server/os/xdmcp.c +++ b/xorg-server/os/xdmcp.c diff --git a/xorg-server/randr/rrcrtc.c b/xorg-server/randr/rrcrtc.c index c18241848..76d24f60a 100644 --- a/xorg-server/randr/rrcrtc.c +++ b/xorg-server/randr/rrcrtc.c @@ -523,9 +523,19 @@ RRCrtcSet(RRCrtcPtr crtc, ScreenPtr pScreen = crtc->pScreen; Bool ret = FALSE; Bool recompute = TRUE; + Bool crtcChanged; + int o; rrScrPriv(pScreen); + crtcChanged = FALSE; + for (o = 0; o < numOutputs; o++) { + if (outputs[o] && outputs[o]->crtc != crtc) { + crtcChanged = TRUE; + break; + } + } + /* See if nothing changed */ if (crtc->mode == mode && crtc->x == x && @@ -533,7 +543,8 @@ RRCrtcSet(RRCrtcPtr crtc, crtc->rotation == rotation && crtc->numOutputs == numOutputs && !memcmp(crtc->outputs, outputs, numOutputs * sizeof(RROutputPtr)) && - !RRCrtcPendingProperties(crtc) && !RRCrtcPendingTransform(crtc)) { + !RRCrtcPendingProperties(crtc) && !RRCrtcPendingTransform(crtc) && + !crtcChanged) { recompute = FALSE; ret = TRUE; } @@ -605,7 +616,6 @@ RRCrtcSet(RRCrtcPtr crtc, #endif } if (ret) { - int o; RRTellChanged(pScreen); diff --git a/xorg-server/test/Makefile.am b/xorg-server/test/Makefile.am index 2852bb3e0..f8aa65950 100644 --- a/xorg-server/test/Makefile.am +++ b/xorg-server/test/Makefile.am @@ -36,7 +36,7 @@ fixes_LDADD=$(TEST_LDADD) xfree86_LDADD=$(TEST_LDADD) touch_LDADD=$(TEST_LDADD) signal_logging_LDADD=$(TEST_LDADD) -hashtabletest_LDADD=$(TEST_LDADD) $(top_srcdir)/Xext/hashtable.c +hashtabletest_LDADD=$(TEST_LDADD) os_LDADD=$(TEST_LDADD) libxservertest_la_LIBADD = $(XSERVER_LIBS) diff --git a/xorg-server/test/input.c b/xorg-server/test/input.c index aaa7a69d3..9b5db8991 100644 --- a/xorg-server/test/input.c +++ b/xorg-server/test/input.c @@ -1101,7 +1101,7 @@ xi_unregister_handlers(void) static void cmp_attr_fields(InputAttributes * attr1, InputAttributes * attr2) { - const char **tags1, **tags2; + char **tags1, **tags2; assert(attr1 && attr2); assert(attr1 != attr2); @@ -1180,50 +1180,54 @@ cmp_attr_fields(InputAttributes * attr1, InputAttributes * attr2) static void dix_input_attributes(void) { - InputAttributes orig = { 0 }; + InputAttributes *orig; InputAttributes *new; - const char *tags[4] = { "tag1", "tag2", "tag2", NULL }; new = DuplicateInputAttributes(NULL); assert(!new); - new = DuplicateInputAttributes(&orig); - assert(memcmp(&orig, new, sizeof(InputAttributes)) == 0); + orig = calloc(1, sizeof(InputAttributes)); + assert(orig); - orig.product = "product name"; - new = DuplicateInputAttributes(&orig); - cmp_attr_fields(&orig, new); + new = DuplicateInputAttributes(orig); + assert(memcmp(orig, new, sizeof(InputAttributes)) == 0); + + orig->product = xnfstrdup("product name"); + new = DuplicateInputAttributes(orig); + cmp_attr_fields(orig, new); FreeInputAttributes(new); - orig.vendor = "vendor name"; - new = DuplicateInputAttributes(&orig); - cmp_attr_fields(&orig, new); + orig->vendor = xnfstrdup("vendor name"); + new = DuplicateInputAttributes(orig); + cmp_attr_fields(orig, new); FreeInputAttributes(new); - orig.device = "device path"; - new = DuplicateInputAttributes(&orig); - cmp_attr_fields(&orig, new); + orig->device = xnfstrdup("device path"); + new = DuplicateInputAttributes(orig); + cmp_attr_fields(orig, new); FreeInputAttributes(new); - orig.pnp_id = "PnPID"; - new = DuplicateInputAttributes(&orig); - cmp_attr_fields(&orig, new); + orig->pnp_id = xnfstrdup("PnPID"); + new = DuplicateInputAttributes(orig); + cmp_attr_fields(orig, new); FreeInputAttributes(new); - orig.usb_id = "USBID"; - new = DuplicateInputAttributes(&orig); - cmp_attr_fields(&orig, new); + orig->usb_id = xnfstrdup("USBID"); + new = DuplicateInputAttributes(orig); + cmp_attr_fields(orig, new); FreeInputAttributes(new); - orig.flags = 0xF0; - new = DuplicateInputAttributes(&orig); - cmp_attr_fields(&orig, new); + orig->flags = 0xF0; + new = DuplicateInputAttributes(orig); + cmp_attr_fields(orig, new); FreeInputAttributes(new); - orig.tags = tags; - new = DuplicateInputAttributes(&orig); - cmp_attr_fields(&orig, new); + orig->tags = xstrtokenize("tag1 tag2 tag3", " "); + new = DuplicateInputAttributes(orig); + cmp_attr_fields(orig, new); FreeInputAttributes(new); + + FreeInputAttributes(orig); } static void @@ -1386,8 +1390,8 @@ dix_valuator_alloc(void) assert(v->numAxes == num_axes); #if !defined(__i386__) && !defined(__m68k__) && !defined(__sh__) /* must be double-aligned on 64 bit */ - assert(((void *) v->axisVal - (void *) v) % sizeof(double) == 0); - assert(((void *) v->axes - (void *) v) % sizeof(double) == 0); + assert(offsetof(struct _ValuatorClassRec, axisVal) % sizeof(double) == 0); + assert(offsetof(struct _ValuatorClassRec, axes) % sizeof(double) == 0); #endif num_axes++; } diff --git a/xorg-server/test/os.c b/xorg-server/test/os.c index 2d005a0d4..d85dcffbe 100644 --- a/xorg-server/test/os.c +++ b/xorg-server/test/os.c @@ -150,10 +150,10 @@ static void block_sigio_test_nested(void) tail guard must be hit. */ void (*old_handler)(int); - old_handler = signal(SIGIO, sighandler); + old_handler = OsSignal(SIGIO, sighandler); expect_signal = 1; assert(raise(SIGIO) == 0); - assert(signal(SIGIO, old_handler) == sighandler); + assert(OsSignal(SIGIO, old_handler) == sighandler); #endif } diff --git a/xorg-server/test/signal-logging.c b/xorg-server/test/signal-logging.c index d894373f0..88b37c14e 100644 --- a/xorg-server/test/signal-logging.c +++ b/xorg-server/test/signal-logging.c @@ -346,7 +346,11 @@ static void logging_format(void) ptr = 1; do { char expected[30]; +#ifdef __sun /* Solaris doesn't autoadd "0x" to %p format */ + sprintf(expected, "(EE) 0x%p\n", (void*)ptr); +#else sprintf(expected, "(EE) %p\n", (void*)ptr); +#endif LogMessageVerbSigSafe(X_ERROR, -1, "%p\n", (void*)ptr); read_log_msg(logmsg); assert(strcmp(logmsg, expected) == 0); diff --git a/xorg-server/test/touch.c b/xorg-server/test/touch.c index df1db11de..981c694b6 100644 --- a/xorg-server/test/touch.c +++ b/xorg-server/test/touch.c @@ -40,7 +40,7 @@ touch_grow_queue(void) int i; memset(&dev, 0, sizeof(dev)); - dev.name = "test device"; + dev.name = xnfstrdup("test device"); dev.id = 2; dev.valuator = &val; val.numAxes = 5; @@ -82,6 +82,8 @@ touch_grow_queue(void) assert(t->client_id == 0); assert(t->ddx_id == 0); } + + free(dev.name); } static void @@ -95,7 +97,7 @@ touch_find_ddxid(void) int i; memset(&dev, 0, sizeof(dev)); - dev.name = "test device"; + dev.name = xnfstrdup("test device"); dev.id = 2; dev.valuator = &val; val.numAxes = 5; @@ -150,6 +152,8 @@ touch_find_ddxid(void) ProcessWorkQueue(); ti = TouchFindByDDXID(&dev, 40, TRUE); assert(ti == &dev.last.touches[size]); + + free(dev.name); } static void @@ -164,7 +168,7 @@ touch_begin_ddxtouch(void) int size = 5; memset(&dev, 0, sizeof(dev)); - dev.name = "test device"; + dev.name = xnfstrdup("test device"); dev.id = 2; dev.valuator = &val; val.numAxes = 5; @@ -195,6 +199,8 @@ touch_begin_ddxtouch(void) assert(ti->client_id > last_client_id); assert(!ti->emulate_pointer); last_client_id = ti->client_id; + + free(dev.name); } static void @@ -212,7 +218,7 @@ touch_begin_touch(void) screenInfo.screens[0] = &screen; memset(&dev, 0, sizeof(dev)); - dev.name = "test device"; + dev.name = xnfstrdup("test device"); dev.id = 2; memset(&sprite, 0, sizeof(sprite)); @@ -237,6 +243,8 @@ touch_begin_touch(void) assert(ti->emulate_pointer); assert(touch.num_touches == 1); + + free(dev.name); } static void @@ -251,7 +259,7 @@ touch_init(void) screenInfo.screens[0] = &screen; memset(&dev, 0, sizeof(dev)); - dev.name = "test device"; + dev.name = xnfstrdup("test device"); memset(&sprite, 0, sizeof(sprite)); dev.spriteInfo = &sprite; @@ -264,6 +272,8 @@ touch_init(void) rc = InitTouchClassDeviceStruct(&dev, 1, XIDirectTouch, 2); assert(rc == TRUE); assert(dev.touch); + + free(dev.name); } int diff --git a/xorg-server/test/xkb.c b/xorg-server/test/xkb.c index 955e72dff..9047f594c 100644 --- a/xorg-server/test/xkb.c +++ b/xorg-server/test/xkb.c @@ -82,15 +82,17 @@ xkb_get_rules_test(void) static void xkb_set_rules_test(void) { - XkbRMLVOSet rmlvo = { - .rules = "test-rules", - .model = "test-model", - .layout = "test-layout", - .variant = "test-variant", - .options = "test-options" - }; + XkbRMLVOSet rmlvo; XkbRMLVOSet rmlvo_new = { NULL }; + XkbInitRules(&rmlvo, "test-rules", "test-model", "test-layout", + "test-variant", "test-options"); + assert(rmlvo.rules); + assert(rmlvo.model); + assert(rmlvo.layout); + assert(rmlvo.variant); + assert(rmlvo.options); + XkbSetRulesDflts(&rmlvo); XkbGetRulesDflts(&rmlvo_new); @@ -106,6 +108,8 @@ xkb_set_rules_test(void) assert(strcmp(rmlvo.layout, rmlvo_new.layout) == 0); assert(strcmp(rmlvo.variant, rmlvo_new.variant) == 0); assert(strcmp(rmlvo.options, rmlvo_new.options) == 0); + + XkbFreeRMLVOSet(&rmlvo, FALSE); } /** diff --git a/xorg-server/xkb/xkbInit.c b/xorg-server/xkb/xkbInit.c index d3bcbc9f2..acabd8e7b 100644 --- a/xorg-server/xkb/xkbInit.c +++ b/xorg-server/xkb/xkbInit.c @@ -129,11 +129,11 @@ XkbFreeRMLVOSet(XkbRMLVOSet * rmlvo, Bool freeRMLVO) if (!rmlvo) return; - free((void *) rmlvo->rules); - free((void *) rmlvo->model); - free((void *) rmlvo->layout); - free((void *) rmlvo->variant); - free((void *) rmlvo->options); + free(rmlvo->rules); + free(rmlvo->model); + free(rmlvo->layout); + free(rmlvo->variant); + free(rmlvo->options); if (freeRMLVO) free(rmlvo); @@ -206,6 +206,21 @@ XkbWriteRulesProp(ClientPtr client, void *closure) return TRUE; } +void +XkbInitRules(XkbRMLVOSet *rmlvo, + const char *rules, + const char *model, + const char *layout, + const char *variant, + const char *options) +{ + rmlvo->rules = rules ? xnfstrdup(rules) : NULL; + rmlvo->model = model ? xnfstrdup(model) : NULL; + rmlvo->layout = layout ? xnfstrdup(layout) : NULL; + rmlvo->variant = variant ? xnfstrdup(variant) : NULL; + rmlvo->options = options ? xnfstrdup(options) : NULL; +} + static void XkbSetRulesUsed(XkbRMLVOSet * rmlvo) { diff --git a/xorg-server/xkeyboard-config/rules/base.xml.in b/xorg-server/xkeyboard-config/rules/base.xml.in index 198b3a7be..c924edf6d 100644 --- a/xorg-server/xkeyboard-config/rules/base.xml.in +++ b/xorg-server/xkeyboard-config/rules/base.xml.in @@ -4412,7 +4412,7 @@ <variant> <configItem> <name>yz</name> - <_description>Serbian (Cyrillic, Z and ZHE swapped)</_description> + <_description>Serbian (Cyrillic, ZE and ZHE swapped)</_description> </configItem> </variant> <variant> diff --git a/xorg-server/xkeyboard-config/symbols/ara b/xorg-server/xkeyboard-config/symbols/ara index e677aaab1..d048b0090 100644 --- a/xorg-server/xkeyboard-config/symbols/ara +++ b/xorg-server/xkeyboard-config/symbols/ara @@ -94,7 +94,7 @@ xkb_symbols "azerty" { key <AE11> { [ parenright, degree ] }; }; -partial alphanumeric_keys +partial hidden alphanumeric_keys xkb_symbols "digits_KP" { name[Group1]= "Arabic (digits_KP)"; diff --git a/xorg-server/xkeyboard-config/symbols/cz b/xorg-server/xkeyboard-config/symbols/cz index 083cc7674..97ab3cf68 100644 --- a/xorg-server/xkeyboard-config/symbols/cz +++ b/xorg-server/xkeyboard-config/symbols/cz @@ -1,117 +1,118 @@ default partial alphanumeric_keys xkb_symbols "basic" { - // This layout conforms to a new cz compromise standard designed - // to satisfy most unix, windows and mac users. - // 2001 by Kamil Toman <ktoman@email.cz> + // This layout conforms to a new Czech compromise standard + // designed to satisfy most Unix, Windows and Mac users. + // 2001 by Kamil Toman <ktoman@email.cz> include "latin" - name[Group1]= "Czech"; - key <TLDE> { [ semicolon, dead_abovering, grave, asciitilde ] }; - key <AE01> { [ plus, 1, exclam, dead_tilde ] }; - key <AE02> { [ ecaron, 2, at, dead_caron ] }; - key <AE03> { [ scaron, 3, numbersign, dead_circumflex ] }; - key <AE04> { [ ccaron, 4, dollar, dead_breve ] }; - key <AE05> { [ rcaron, 5, percent, dead_abovering ] }; - key <AE06> { [ zcaron, 6, asciicircum, dead_ogonek ] }; - key <AE07> { [ yacute, 7, ampersand, dead_grave ] }; - key <AE08> { [ aacute, 8, asterisk, dead_abovedot] }; - key <AE09> { [ iacute, 9, braceleft, dead_acute ] }; - key <AE10> { [ eacute, 0, braceright, dead_doubleacute ] }; - key <AE11> { [ equal, percent, NoSymbol, dead_diaeresis ] }; - key <AE12> { [dead_acute, dead_caron, dead_macron, dead_cedilla ] }; - - key <AD01> { [ q, Q, backslash, NoSymbol ] }; - key <AD02> { [ w, W, bar, Nosymbol ] }; - key <AD03> { [ e, E, EuroSign, NoSymbol ] }; - key <AD04> { [ r, R, NoSymbol, NoSymbol ] }; - key <AD05> { [ t, T, NoSymbol, NoSymbol ] }; - key <AD06> { [ z, Z, NoSymbol, NoSymbol ] }; - key <AD07> { [ u, U, NoSymbol, NoSymbol ] }; - key <AD08> { [ i, I, NoSymbol, NoSymbol ] }; - key <AD09> { [ o, O, NoSymbol, NoSymbol ] }; - key <AD10> { [ p, P, NoSymbol, NoSymbol ] }; - - key <AD11> { [ uacute, slash, bracketleft, division ] }; - key <AD12> { [parenright, parenleft, bracketright, multiply ] }; - - key <AC01> { [ a, A, asciitilde, NoSymbol ] }; - key <AC02> { [ s, S, dstroke, NoSymbol ] }; - key <AC03> { [ d, D, Dstroke, NoSymbol ] }; - key <AC04> { [ f, F, bracketleft, NoSymbol ] }; - key <AC05> { [ g, G, bracketright, NoSymbol ] }; - key <AC06> { [ h, H, grave, NoSymbol ] }; - key <AC07> { [ j, J, apostrophe, NoSymbol ] }; - key <AC08> { [ k, K, lstroke, NoSymbol ] }; - key <AC09> { [ l, L, Lstroke, NoSymbol ] }; - - key <AC10> { [ uring, quotedbl, dollar, NoSymbol ] }; - key <AC11> { [ section, exclam, apostrophe, ssharp ] }; - key <AC12> { [ EuroSign, dead_diaeresis, NoSymbol, NoSymbol ] }; - key <BKSL> { [dead_diaeresis, apostrophe, backslash, bar ] }; - - key <LSGT> { [ backslash, bar, slash, NoSymbol ] }; - key <AB01> { [ y, Y, degree, NoSymbol ] }; - key <AB02> { [ x, X, numbersign, Nosymbol ] }; - key <AB03> { [ c, C, ampersand, NoSymbol ] }; - key <AB04> { [ v, V, at, NoSymbol ] }; - key <AB05> { [ b, B, braceleft, NoSymbol ] }; - key <AB06> { [ n, N, braceright, NoSymbol ] }; - key <AB07> { [ m, M, asciicircum, NoSymbol ] }; - key <AB08> { [ comma, question, less, NoSymbol ] }; - key <AB09> { [ period, colon, greater, NoSymbol ] }; - key <AB10> { [ minus, underscore, asterisk, NoSymbol ] }; - - key <SPCE> { [ space, space, space, space ] }; + key <TLDE> { [ semicolon, dead_abovering, grave, asciitilde ] }; + key <AE01> { [ plus, 1, exclam, dead_tilde ] }; + key <AE02> { [ ecaron, 2, at, dead_caron ] }; + key <AE03> { [ scaron, 3, numbersign, dead_circumflex ] }; + key <AE04> { [ ccaron, 4, dollar, dead_breve ] }; + key <AE05> { [ rcaron, 5, percent, dead_abovering]}; + key <AE06> { [ zcaron, 6, asciicircum, dead_ogonek ] }; + key <AE07> { [ yacute, 7, ampersand, dead_grave ] }; + key <AE08> { [ aacute, 8, asterisk, dead_abovedot] }; + key <AE09> { [ iacute, 9, braceleft, dead_acute ] }; + key <AE10> { [ eacute, 0, braceright, dead_doubleacute ] }; + key <AE11> { [ equal, percent, NoSymbol, dead_diaeresis]}; + key <AE12> { [dead_acute, dead_caron, dead_macron, dead_cedilla ] }; + + key <AD01> { [ q, Q, backslash, NoSymbol ] }; + key <AD02> { [ w, W, bar, Nosymbol ] }; + key <AD03> { [ e, E, EuroSign, NoSymbol ] }; + key <AD04> { [ r, R, NoSymbol, NoSymbol ] }; + key <AD05> { [ t, T, NoSymbol, NoSymbol ] }; + key <AD06> { [ z, Z, NoSymbol, NoSymbol ] }; + key <AD07> { [ u, U, NoSymbol, NoSymbol ] }; + key <AD08> { [ i, I, NoSymbol, NoSymbol ] }; + key <AD09> { [ o, O, NoSymbol, NoSymbol ] }; + key <AD10> { [ p, P, NoSymbol, NoSymbol ] }; + + key <AD11> { [ uacute, slash, bracketleft, division ] }; + key <AD12> { [parenright, parenleft, bracketright, multiply ] }; + + key <AC01> { [ a, A, asciitilde, NoSymbol ] }; + key <AC02> { [ s, S, dstroke, NoSymbol ] }; + key <AC03> { [ d, D, Dstroke, NoSymbol ] }; + key <AC04> { [ f, F, bracketleft, NoSymbol ] }; + key <AC05> { [ g, G, bracketright, NoSymbol ] }; + key <AC06> { [ h, H, grave, NoSymbol ] }; + key <AC07> { [ j, J, apostrophe, NoSymbol ] }; + key <AC08> { [ k, K, lstroke, NoSymbol ] }; + key <AC09> { [ l, L, Lstroke, NoSymbol ] }; + + key <AC10> { [ uring, quotedbl, dollar, NoSymbol ] }; + key <AC11> { [ section, exclam, apostrophe, ssharp ] }; + key <AC12> { [ EuroSign, dead_diaeresis, NoSymbol, NoSymbol ] }; + key <BKSL> { [dead_diaeresis, apostrophe, backslash, bar ] }; + + key <LSGT> { [ backslash, bar, slash, NoSymbol ] }; + key <AB01> { [ y, Y, degree, NoSymbol ] }; + key <AB02> { [ x, X, numbersign, Nosymbol ] }; + key <AB03> { [ c, C, ampersand, NoSymbol ] }; + key <AB04> { [ v, V, at, NoSymbol ] }; + key <AB05> { [ b, B, braceleft, NoSymbol ] }; + key <AB06> { [ n, N, braceright, NoSymbol ] }; + key <AB07> { [ m, M, asciicircum, NoSymbol ] }; + key <AB08> { [ comma, question, less, NoSymbol ] }; + key <AB09> { [ period, colon, greater, NoSymbol ] }; + key <AB10> { [ minus, underscore, asterisk, NoSymbol ] }; + + key <SPCE> { [ space, space, space, space ] }; include "level3(ralt_switch)" }; -// Use <BKSL> instead of <LSGT> (useful for keyboard without <LSGT> key) xkb_symbols "bksl" { + + // Use <BKSL> instead of <LSGT> (useful for keyboards without <LSGT> key). + include "cz(basic)" name[Group1]= "Czech (with <\|> key)"; - key <BKSL> { [ backslash, bar, slash, NoSymbol ] }; + key <BKSL> { [ backslash, bar, slash, NoSymbol ] }; }; partial alphanumeric_keys xkb_symbols "qwerty" { - // This layout represent actual keyboard layout. It complies with symbols - // printed on keys. - // ----------------------------------------------------------------------- - // This layout was created in 2011 by Lukáš Mojžíš <lmojzis@grenames.cz> + // This layout represents the actual Czech keyboards; + // it complies with the symbols printed on the keys. + // 2011 by Lukáš Mojžíš <lmojzis@grenames.cz> include "cz(basic)" name[Group1]= "Czech (qwerty)"; - key <AB01> { [ z, Z, degree, NoSymbol ] }; - key <AC10> { [ uring, quotedbl, semicolon, colon ] }; - key <AC11> { [ section, exclam, apostrophe, ssharp ] }; - key <AD06> { [ y, Y, NoSymbol, NoSymbol ] }; - key <AD11> { [ uacute, slash, bracketleft, braceleft ] }; - key <AD12> { [parenright, parenleft, bracketright, braceright ] }; - key <AE09> { [ iacute, 9, parenleft, dead_acute ] }; - key <AE10> { [ eacute, 0, parenright, dead_doubleacute ] }; + key <AB01> { [ z, Z, degree, NoSymbol ] }; + key <AC10> { [ uring, quotedbl, semicolon, colon ] }; + key <AC11> { [ section, exclam, apostrophe, ssharp ] }; + key <AD06> { [ y, Y, NoSymbol, NoSymbol ] }; + key <AD11> { [ uacute, slash, bracketleft, braceleft ] }; + key <AD12> { [parenright, parenleft, bracketright, braceright ] }; + key <AE09> { [ iacute, 9, parenleft, dead_acute ] }; + key <AE10> { [ eacute, 0, parenright, dead_doubleacute ] }; }; -// Use <BKSL> instead of <LSGT> (useful for keyboard without <LSGT> key) xkb_symbols "qwerty_bksl" { - include "cz(qwerty)" + // Use <BKSL> instead of <LSGT> (useful for keyboards without <LSGT> key). + + include "cz(qwerty)" name[Group1]= "Czech (qwerty, extended Backslash)"; - key <BKSL> { [ backslash, bar, slash, NoSymbol ] }; + key <BKSL> { [ backslash, bar, slash, NoSymbol ] }; }; partial alphanumeric_keys alternate_group xkb_symbols "ucw" { - // This layout is usually used as the second group, it contains - // accented characters only, no 'latin' set. + // This layout is usually used as the second group, + // it contains accented characters only, no 'latin' set. // 2008 by Milan Vancura <mvancura@suse.cz> name[Group1]= "Czech (UCW layout, accented letters only)"; @@ -149,10 +150,10 @@ xkb_symbols "ucw" { partial alphanumeric_keys xkb_symbols "dvorak-ucw" { - // US Dvorak layout extend with UCW - AltGr produces accented characters + // US Dvorak layout extended with UCW, + // AltGr produces accented characters. include "us(dvorak)" - name[Group1]= "Czech (US Dvorak with CZ UCW support)"; key <AB03> { [ j, J, eacute, Eacute ] }; diff --git a/xorg-server/xkeyboard-config/symbols/es b/xorg-server/xkeyboard-config/symbols/es index 749a86d71..ab29a05df 100644 --- a/xorg-server/xkeyboard-config/symbols/es +++ b/xorg-server/xkeyboard-config/symbols/es @@ -26,7 +26,7 @@ xkb_symbols "basic" { include "level3(ralt_switch)" }; -partial alphanumeric +partial alphanumeric_keys xkb_symbols "winkeys" { include "es(basic)" diff --git a/xorg-server/xkeyboard-config/symbols/il b/xorg-server/xkeyboard-config/symbols/il index 24028a867..48452d620 100644 --- a/xorg-server/xkeyboard-config/symbols/il +++ b/xorg-server/xkeyboard-config/symbols/il @@ -299,7 +299,7 @@ xkb_symbols "biblicalSIL" { key <AC01> { [ U05B7, U05B8, U05C7, U05B2 ] }; //patah Qamats Qam. Qatan hat. patah key <AC02> { [ hebrew_samech, U05E9 ] }; //Samech, shin no dot - - key <AC03> { [ hebrew_dalet ] }; //dalet - - - - key <AC04> { [ UFB2B, hebrew_sin, U05C2 ] }; //UCSv6 Sin sin (nodot) sindot - + key <AC04> { [ UFB2B, hebrew_shin, U05C2 ] }; //UCSv6 Sin shin (nodot) sindot - key <AC05> { [ hebrew_gimel, VoidSymbol, U25E6, U2022 ] }; //gimel - bullet(DSS) bulletfill (DSS) key <AC06> { [ hebrew_he, VoidSymbol, U0336, U030A ] };//he - strikeout(DSS) Ring Above(DSS) key <AC07> { [ UFB2A, hebrew_shin, U05C1] }; //UCSv6 Shin shin (nodot) shindot - diff --git a/xorg-server/xkeyboard-config/symbols/in b/xorg-server/xkeyboard-config/symbols/in index 054671513..04c35a200 100644 --- a/xorg-server/xkeyboard-config/symbols/in +++ b/xorg-server/xkeyboard-config/symbols/in @@ -1230,7 +1230,7 @@ xkb_symbols "tam_TSCII" { key <AB06> { [ 0x10000b6, 0x10000aa ] }; // au key <AB07> { [ 0x10000ab, 0x10000ac ] }; // a, A key <AB08> { [ 0x10000fe, 0x10000ae ] }; // i, I - +}; partial alphanumeric_keys xkb_symbols "tam_TAB" { @@ -1392,7 +1392,7 @@ xkb_symbols "guru" { key <AE08> { [ U0A6e ] }; key <AE09> { [ U0A6F, parenleft ] }; key <AE10> { [ U0A66, parenright ] }; - key <AE11> { [ gur_visarga ] }; + key <AE11> { [ U0A03 ] }; key <AE12> { [ equal, plus ] }; // Mainly long vowels @@ -1638,7 +1638,7 @@ xkb_symbols "hin-wx" { key <AB01> { [ 0x1000901, 0x100093C, 0x100093D, 0x1000950] }; key <AB02> { [ 0x1000926, 0x1000927 ] }; key <AB03> { [ 0x100091A, 0x100091B ] }; - key <AB04> { [ 0x1000935, dead_V ] }; + key <AB04> { [ 0x1000935 ] }; key <AB05> { [ 0x100092C, 0x100092D ] }; key <AB06> { [ 0x1000928, 0x1000923 ] }; key <AB07> { [ 0x100092E, 0x1000902 ] }; diff --git a/xorg-server/xkeyboard-config/symbols/it b/xorg-server/xkeyboard-config/symbols/it index 8dd4365de..e9d0f306b 100644 --- a/xorg-server/xkeyboard-config/symbols/it +++ b/xorg-server/xkeyboard-config/symbols/it @@ -61,7 +61,7 @@ xkb_symbols "nodeadkeys" { key <BKSL> { [ ugrave, section, grave, breve ] }; }; -partial alphanueric_keys +partial alphanumeric_keys xkb_symbols "winkeys" { include "it(basic)" diff --git a/xorg-server/xkeyboard-config/symbols/kz b/xorg-server/xkeyboard-config/symbols/kz index 9f6260238..4f807d182 100644 --- a/xorg-server/xkeyboard-config/symbols/kz +++ b/xorg-server/xkeyboard-config/symbols/kz @@ -69,8 +69,6 @@ key.type[group1] = "ALPHABETIC"; key <AB07> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; key <AB08> { [ Cyrillic_be, Cyrillic_BE ] }; key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] }; - -key.type[group1]="TWO_LEVEL"; }; // Kikkarin KZ1 diff --git a/xorg-server/xkeyboard-config/symbols/lv b/xorg-server/xkeyboard-config/symbols/lv index 8b0e9d719..f1b831605 100644 --- a/xorg-server/xkeyboard-config/symbols/lv +++ b/xorg-server/xkeyboard-config/symbols/lv @@ -408,7 +408,7 @@ xkb_symbols "minuskeydvorak" { name[Group1]= "Latvian (US Dvorak, minus variant)"; - key <AC11> {[ISO_Level3_Latch, ISO_Level3_Latch, mimus, underscore]}; + key <AC11> {[ISO_Level3_Latch, ISO_Level3_Latch, minus, underscore]}; key <SPCE> {[space, space, minus, underscore]}; modifier_map Mod5 { <AR11> }; @@ -467,7 +467,7 @@ xkb_symbols "minuskeydvorakprogr" { name[Group1]= "Latvian (programmer US Dvorak, minus variant)"; - key <AC11> {[ISO_Level3_Latch, ISO_Level3_Latch, mimus, underscore]}; + key <AC11> {[ISO_Level3_Latch, ISO_Level3_Latch, minus, underscore]}; key <SPCE> {[space, space, minus, underscore]}; modifier_map Mod5 { <AC11> }; diff --git a/xorg-server/xkeyboard-config/symbols/ru b/xorg-server/xkeyboard-config/symbols/ru index 782a3d75a..2b34a4d52 100644 --- a/xorg-server/xkeyboard-config/symbols/ru +++ b/xorg-server/xkeyboard-config/symbols/ru @@ -1,5 +1,4 @@ -// based on -// russian standard keyboard +// Keyboard layouts for Russia. // AEN <aen@logic.ru> // 2001/12/23 by Leon Kanter <leon@blackcatlinux.com> // 2005/12/09 Valery Inozemtsev <shrek@altlinux.ru> @@ -7,83 +6,84 @@ // Windows layout default partial alphanumeric_keys xkb_symbols "winkeys" { - include "ru(common)" + include "ru(common)" name[Group1]= "Russian"; - key <AE03> { [ 3, numerosign ] }; - key <AE04> { [ 4, semicolon ] }; - key <AE05> { [ 5, percent ] }; - key <AE06> { [ 6, colon ] }; - key <AE07> { [ 7, question ] }; - key <AE08> { [ 8, asterisk ] }; + key <AE03> { [ 3, numerosign ] }; + key <AE04> { [ 4, semicolon ] }; + key <AE05> { [ 5, percent ] }; + key <AE06> { [ 6, colon ] }; + key <AE07> { [ 7, question ] }; + key <AE08> { [ 8, asterisk ] }; - key <AB10> { [ period, comma ] }; - key <BKSL> { [ backslash, slash ] }; + key <AB10> { [ period, comma ] }; + key <BKSL> { [ backslash, slash ] }; }; partial hidden alphanumeric_keys xkb_symbols "common" { - key <AE01> { [ 1, exclam ] }; - key <AE02> { [ 2, quotedbl ] }; - key <AE03> { [ 3, numbersign ] }; - key <AE04> { [ 4, asterisk ] }; - key <AE05> { [ 5, colon ] }; - key <AE06> { [ 6, comma ] }; - key <AE07> { [ 7, period ] }; - key <AE08> { [ 8, semicolon ] }; - key <AE09> { [ 9, parenleft ] }; - key <AE10> { [ 0, parenright ] }; - key <AE11> { [ minus, underscore ] }; - key <AE12> { [ equal, plus ] }; - key <BKSL> { [ backslash, bar ] }; - key <AB10> { [ slash, question ] }; - key <LSGT> { [ slash, bar ] }; - - key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] }; - key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; - key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] }; - key <AD03> { [ Cyrillic_u, Cyrillic_U ] }; - key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] }; - key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] }; - key <AD06> { [ Cyrillic_en, Cyrillic_EN ] }; - key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] }; - key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] }; - key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; - key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] }; - key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] }; - key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN ] }; - key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] }; - key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] }; - key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] }; - key <AC04> { [ Cyrillic_a, Cyrillic_A ] }; - key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] }; - key <AC06> { [ Cyrillic_er, Cyrillic_ER ] }; - key <AC07> { [ Cyrillic_o, Cyrillic_O ] }; - key <AC08> { [ Cyrillic_el, Cyrillic_EL ] }; - key <AC09> { [ Cyrillic_de, Cyrillic_DE ] }; - key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] }; - key <AC11> { [ Cyrillic_e, Cyrillic_E ] }; - key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] }; - key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] }; - key <AB03> { [ Cyrillic_es, Cyrillic_ES ] }; - key <AB04> { [ Cyrillic_em, Cyrillic_EM ] }; - key <AB05> { [ Cyrillic_i, Cyrillic_I ] }; - key <AB06> { [ Cyrillic_te, Cyrillic_TE ] }; - key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] }; - key <AB08> { [ Cyrillic_be, Cyrillic_BE ] }; - key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] }; - - key.type[group1]="TWO_LEVEL"; + key <AE01> { [ 1, exclam ] }; + key <AE02> { [ 2, quotedbl ] }; + key <AE03> { [ 3, numbersign ] }; + key <AE04> { [ 4, asterisk ] }; + key <AE05> { [ 5, colon ] }; + key <AE06> { [ 6, comma ] }; + key <AE07> { [ 7, period ] }; + key <AE08> { [ 8, semicolon ] }; + key <AE09> { [ 9, parenleft ] }; + key <AE10> { [ 0, parenright ] }; + key <AE11> { [ minus, underscore ] }; + key <AE12> { [ equal, plus ] }; + key <BKSL> { [ backslash, bar ] }; + + key <AB10> { [ slash, question ] }; + key <LSGT> { [ slash, bar ] }; + + key <TLDE> { [ Cyrillic_io, Cyrillic_IO ] }; + key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; + key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] }; + key <AD03> { [ Cyrillic_u, Cyrillic_U ] }; + key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] }; + key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] }; + key <AD06> { [ Cyrillic_en, Cyrillic_EN ] }; + key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] }; + key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] }; + key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; + key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] }; + key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] }; + key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; + + key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] }; + key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] }; + key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] }; + key <AC04> { [ Cyrillic_a, Cyrillic_A ] }; + key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] }; + key <AC06> { [ Cyrillic_er, Cyrillic_ER ] }; + key <AC07> { [ Cyrillic_o, Cyrillic_O ] }; + key <AC08> { [ Cyrillic_el, Cyrillic_EL ] }; + key <AC09> { [ Cyrillic_de, Cyrillic_DE ] }; + key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key <AC11> { [ Cyrillic_e, Cyrillic_E ] }; + + key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] }; + key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] }; + key <AB03> { [ Cyrillic_es, Cyrillic_ES ] }; + key <AB04> { [ Cyrillic_em, Cyrillic_EM ] }; + key <AB05> { [ Cyrillic_i, Cyrillic_I ] }; + key <AB06> { [ Cyrillic_te, Cyrillic_TE ] }; + key <AB07> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + key <AB08> { [ Cyrillic_be, Cyrillic_BE ] }; + key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] }; include "kpdl(comma)" }; partial alphanumeric_keys xkb_symbols "legacy" { - include "ru(common)" + include "ru(common)" name[Group1]= "Russian (legacy)"; }; @@ -92,118 +92,121 @@ xkb_symbols "olpc" { include "ru(common)" - key <TLDE> { [ 0x01000451, 0x01000401, grave ] }; // Ñ‘, Ð - key <AE03> { [ 3, numbersign, 0x01002116 ] }; // â„– - key <AE04> { [ 4, dollar, semicolon ] }; - key <AE06> { [ 6, asciicircum, colon ] }; - key <AE07> { [ 7, ampersand ] }; - key <AE09> { [ 9, parenleft, acute ] }; - key <AC12> { [ backslash, bar, slash ] }; + key <TLDE> { [ 0x01000451, 0x01000401, grave ] }; // Ñ‘, Ð + key <AE03> { [ 3, numbersign, 0x01002116 ] }; // â„– + key <AE04> { [ 4, dollar, semicolon ] }; + key <AE06> { [ 6, asciicircum, colon ] }; + key <AE07> { [ 7, ampersand ] }; + key <AE09> { [ 9, parenleft, acute ] }; + key <AC12> { [ backslash, bar, slash ] }; include "group(olpc)" }; partial alphanumeric_keys xkb_symbols "typewriter" { + include "ru(common)" name[Group1]= "Russian (typewriter)"; - key <TLDE> { [ bar, plus ] }; - key <AE01> { [ numerosign, 1 ] }; - key <AE02> { [ minus, 2 ] }; - key <AE03> { [ slash, 3 ] }; - key <AE04> { [ quotedbl, 4 ] }; - key <AE05> { [ colon, 5 ] }; - key <AE06> { [ comma, 6 ] }; - key <AE07> { [ period, 7 ] }; - key <AE08> { [ underscore, 8 ] }; - key <AE09> { [ question, 9 ] }; - key <AE10> { [ percent, 0 ] }; - key <AE11> { [ exclam, equal ] }; - key <AE12> { [ semicolon, backslash ] }; - - key <BKSL> { [ parenright, parenleft ] }; - - key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN ] }; - key <AB10> { [ Cyrillic_io, Cyrillic_IO ] }; + + key <TLDE> { [ bar, plus ] }; + key <AE01> { [ numerosign, 1 ] }; + key <AE02> { [ minus, 2 ] }; + key <AE03> { [ slash, 3 ] }; + key <AE04> { [ quotedbl, 4 ] }; + key <AE05> { [ colon, 5 ] }; + key <AE06> { [ comma, 6 ] }; + key <AE07> { [ period, 7 ] }; + key <AE08> { [ underscore, 8 ] }; + key <AE09> { [ question, 9 ] }; + key <AE10> { [ percent, 0 ] }; + key <AE11> { [ exclam, equal ] }; + key <AE12> { [ semicolon, backslash ] }; + + key <BKSL> { [ parenright, parenleft ] }; + + key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; + key <AB10> { [ Cyrillic_io, Cyrillic_IO ] }; }; partial alphanumeric_keys xkb_symbols "typewriter-legacy" { + include "ru(common)" name[Group1]= "Russian (typewriter, legacy)"; - key <TLDE> { [ apostrophe, quotedbl ] }; - key <AE01> { [ exclam, 1 ] }; - key <AE02> { [ numerosign, 2 ] }; - key <AE03> { [ slash, 3 ] }; - key <AE04> { [ semicolon, 4 ] }; - key <AE05> { [ colon, 5 ] }; - key <AE06> { [ comma, 6 ] }; - key <AE07> { [ period, 7 ] }; - key <AE08> { [ underscore, 8 ] }; - key <AE09> { [ question, 9 ] }; - key <AE10> { [ percent, 0 ] }; - key <BKSL> { [ parenleft, parenright ] }; - - key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN ] }; - key <AB10> { [ Cyrillic_io, Cyrillic_IO ] }; + + key <TLDE> { [ apostrophe, quotedbl ] }; + key <AE01> { [ exclam, 1 ] }; + key <AE02> { [ numerosign, 2 ] }; + key <AE03> { [ slash, 3 ] }; + key <AE04> { [ semicolon, 4 ] }; + key <AE05> { [ colon, 5 ] }; + key <AE06> { [ comma, 6 ] }; + key <AE07> { [ period, 7 ] }; + key <AE08> { [ underscore, 8 ] }; + key <AE09> { [ question, 9 ] }; + key <AE10> { [ percent, 0 ] }; + + key <BKSL> { [ parenleft, parenright ] }; + + key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; + key <AB10> { [ Cyrillic_io, Cyrillic_IO ] }; }; partial alphanumeric_keys xkb_symbols "phonetic" { - name[Group1]= "Russian (phonetic)"; - - key <AE01> { [ 1, exclam ] }; - key <AE02> { [ 2, at ] }; - key <AE03> { [ 3, Cyrillic_io ] }; - key <AE04> { [ 4, Cyrillic_IO ] }; - key <AE05> { [ 5, Cyrillic_hardsign ] }; - key <AE06> { [ 6, Cyrillic_HARDSIGN ] }; - key <AE07> { [ 7, ampersand ] }; - key <AE08> { [ 8, asterisk ] }; - key <AE09> { [ 9, parenleft ] }; - key <AE10> { [ 0, parenright ] }; - key <AE11> { [ minus, underscore ] }; - - key <AB09> { [ period, greater ] }; - key <AB10> { [ slash, question ] }; - key <AB08> { [ comma, less ] }; - key <AC10> { [ semicolon, colon ] }; - key <AC11> { [ apostrophe, quotedbl ] }; - key <LSGT> { [ bar, brokenbar ] }; - - key <TLDE> { [ Cyrillic_yu, Cyrillic_YU ] }; - key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] }; - key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] }; - key <LatS> { [ Cyrillic_es, Cyrillic_ES ] }; - key <LatA> { [ Cyrillic_a, Cyrillic_A ] }; - key <LatW> { [ Cyrillic_ve, Cyrillic_VE ] }; - key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] }; - key <LatX> { [ Cyrillic_ha, Cyrillic_HA ] }; - key <LatD> { [ Cyrillic_de, Cyrillic_DE ] }; - key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] }; - key <LatV> { [ Cyrillic_zhe, Cyrillic_ZHE ] }; - key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] }; - key <LatT> { [ Cyrillic_te, Cyrillic_TE ] }; - key <LatR> { [ Cyrillic_er, Cyrillic_ER ] }; - key <LatN> { [ Cyrillic_en, Cyrillic_EN ] }; - key <LatB> { [ Cyrillic_be, Cyrillic_BE ] }; - key <LatH> { [ Cyrillic_che, Cyrillic_CHE ] }; - key <LatG> { [ Cyrillic_ghe, Cyrillic_GHE ] }; - key <LatY> { [ Cyrillic_yeru, Cyrillic_YERU ] }; - key <LatM> { [ Cyrillic_em, Cyrillic_EM ] }; - key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; - key <LatU> { [ Cyrillic_u, Cyrillic_U ] }; - key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] }; - key <LatI> { [ Cyrillic_i, Cyrillic_I ] }; - key <LatO> { [ Cyrillic_o, Cyrillic_O ] }; - key <LatL> { [ Cyrillic_el, Cyrillic_EL ] }; - key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] }; - - key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] }; - key <AE12> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; - key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; - key <BKSL> { [ Cyrillic_e, Cyrillic_E ] }; + key <AE01> { [ 1, exclam ] }; + key <AE02> { [ 2, at ] }; + key <AE03> { [ 3, Cyrillic_io ] }; + key <AE04> { [ 4, Cyrillic_IO ] }; + key <AE05> { [ 5, Cyrillic_hardsign ] }; + key <AE06> { [ 6, Cyrillic_HARDSIGN ] }; + key <AE07> { [ 7, ampersand ] }; + key <AE08> { [ 8, asterisk ] }; + key <AE09> { [ 9, parenleft ] }; + key <AE10> { [ 0, parenright ] }; + key <AE11> { [ minus, underscore ] }; + + key <AB09> { [ period, greater ] }; + key <AB10> { [ slash, question ] }; + key <AB08> { [ comma, less ] }; + key <AC10> { [ semicolon, colon ] }; + key <AC11> { [ apostrophe, quotedbl ] }; + key <LSGT> { [ bar, brokenbar ] }; + + key <TLDE> { [ Cyrillic_yu, Cyrillic_YU ] }; + key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] }; + key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] }; + key <LatS> { [ Cyrillic_es, Cyrillic_ES ] }; + key <LatA> { [ Cyrillic_a, Cyrillic_A ] }; + key <LatW> { [ Cyrillic_ve, Cyrillic_VE ] }; + key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] }; + key <LatX> { [ Cyrillic_ha, Cyrillic_HA ] }; + key <LatD> { [ Cyrillic_de, Cyrillic_DE ] }; + key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] }; + key <LatV> { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] }; + key <LatT> { [ Cyrillic_te, Cyrillic_TE ] }; + key <LatR> { [ Cyrillic_er, Cyrillic_ER ] }; + key <LatN> { [ Cyrillic_en, Cyrillic_EN ] }; + key <LatB> { [ Cyrillic_be, Cyrillic_BE ] }; + key <LatH> { [ Cyrillic_che, Cyrillic_CHE ] }; + key <LatG> { [ Cyrillic_ghe, Cyrillic_GHE ] }; + key <LatY> { [ Cyrillic_yeru, Cyrillic_YERU ] }; + key <LatM> { [ Cyrillic_em, Cyrillic_EM ] }; + key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; + key <LatU> { [ Cyrillic_u, Cyrillic_U ] }; + key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] }; + key <LatI> { [ Cyrillic_i, Cyrillic_I ] }; + key <LatO> { [ Cyrillic_o, Cyrillic_O ] }; + key <LatL> { [ Cyrillic_el, Cyrillic_EL ] }; + key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] }; + + key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] }; + key <AE12> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; + key <BKSL> { [ Cyrillic_e, Cyrillic_E ] }; }; partial alphanumeric_keys @@ -212,146 +215,128 @@ xkb_symbols "phonetic_winkeys" { include "ru(phonetic)" name[Group1]= "Russian (phonetic WinKeys)"; - key <LatX> { [ Cyrillic_ha, Cyrillic_HA ] }; - key <LatH> { [ Cyrillic_che, Cyrillic_CHE ] }; - key <AE12> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; - + key <LatX> { [ Cyrillic_ha, Cyrillic_HA ] }; + key <LatH> { [ Cyrillic_che, Cyrillic_CHE ] }; + key <AE12> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; }; partial alphanumeric_keys xkb_symbols "tt" { + include "ru(winkeys)" name[Group1]= "Tatar"; key.type[group1]="FOUR_LEVEL"; - key <TLDE> { [ 0x010004bb, 0x010004ba, - Cyrillic_io, Cyrillic_IO ] }; - key <AD02> { [ 0x010004e9, 0x010004e8, - Cyrillic_tse, Cyrillic_TSE ] }; - key <AD09> { [ 0x010004d9, 0x010004d8, - Cyrillic_shcha, Cyrillic_SHCHA ] }; - key <AD12> { [ 0x010004af, 0x010004ae, - Cyrillic_hardsign,Cyrillic_HARDSIGN ] }; - key <AC10> { [ 0x010004a3, 0x010004a2, - Cyrillic_zhe, Cyrillic_ZHE ] }; - key <AB07> { [ 0x01000497, 0x01000496, - Cyrillic_softsign,Cyrillic_SOFTSIGN ] }; + key <TLDE> { [ 0x010004bb, 0x010004ba, Cyrillic_io, Cyrillic_IO ] }; + key <AD02> { [ 0x010004e9, 0x010004e8, Cyrillic_tse, Cyrillic_TSE ] }; + key <AD09> { [ 0x010004d9, 0x010004d8, Cyrillic_shcha, Cyrillic_SHCHA ] }; + key <AD12> { [ 0x010004af, 0x010004ae, Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; + key <AC10> { [ 0x010004a3, 0x010004a2, Cyrillic_zhe, Cyrillic_ZHE ] }; + key <AB07> { [ 0x01000497, 0x01000496, Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; include "level3(ralt_switch)" - }; partial alphanumeric_keys xkb_symbols "os_legacy" { - include "ru(common)" + include "ru(common)" name[Group1]= "Ossetian (legacy)"; - key <TLDE> { [ Cyrillic_e, Cyrillic_E ] }; - key <AC07> { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] }; - key <AC11> { [ 0x010004D5, 0x010004D4 ] }; + key <TLDE> { [ Cyrillic_e, Cyrillic_E ] }; + key <AC07> { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] }; + key <AC11> { [ 0x010004D5, 0x010004D4 ] }; }; partial alphanumeric_keys xkb_symbols "os_winkeys" { - include "ru(winkeys)" + include "ru(winkeys)" name[Group1]= "Ossetian (WinKeys)"; - key <TLDE> { [ Cyrillic_e, Cyrillic_E ] }; - key <AC07> { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] }; - key <AC11> { [ 0x010004D5, 0x010004D4 ] }; + key <TLDE> { [ Cyrillic_e, Cyrillic_E ] }; + key <AC07> { [ Cyrillic_o, Cyrillic_O, Cyrillic_io, Cyrillic_IO ] }; + key <AC11> { [ 0x010004D5, 0x010004D4 ] }; }; partial alphanumeric_keys xkb_symbols "cv" { - include "ru(winkeys)" + include "ru(winkeys)" name[Group1]= "Chuvash"; key.type[group1]="FOUR_LEVEL"; - key <AD03> { [ Cyrillic_u, Cyrillic_U, - U04F3, U04F2 ] }; - key <AD05> { [ Cyrillic_ie, Cyrillic_IE, - U04D7, U04D6 ] }; - key <AC04> { [ Cyrillic_a, Cyrillic_A, - U04D1, U04D0 ] }; - key <AB03> { [ Cyrillic_es, Cyrillic_ES, - U04AB, U04AA ] }; + key <AD03> { [ Cyrillic_u, Cyrillic_U, U04F3, U04F2 ] }; + key <AD05> { [ Cyrillic_ie, Cyrillic_IE, U04D7, U04D6 ] }; + key <AC04> { [ Cyrillic_a, Cyrillic_A, U04D1, U04D0 ] }; + key <AB03> { [ Cyrillic_es, Cyrillic_ES, U04AB, U04AA ] }; include "level3(ralt_switch)" }; partial alphanumeric_keys xkb_symbols "udm" { - include "ru(winkeys)" + include "ru(winkeys)" name[Group1]= "Udmurt"; key.type[group1]="FOUR_LEVEL"; - key <AE01> { [ question, exclam, 1, 1 ] }; - key <AE02> { [ parenleft, quotedbl, 2, 2 ] }; - key <AE03> { [ parenright, numerosign, 3, 3 ] }; - key <AE04> { [ colon, semicolon, 4, 4 ] }; - key <AE05> { [ asterisk, percent, 5, 5 ] }; - key <AE06> { [ 0x010004dd, 0x010004dc, 6, 6 ] }; - key <AE07> { [ 0x010004e7, 0x010004e6, 7, 7 ] }; - key <AE08> { [ 0x010004f5, 0x010004f4, 8, 8 ] }; - key <AE09> { [ 0x010004e5, 0x010004e4, 9, 9 ] }; - key <AE10> { [ 0x010004df, 0x010004de, 0, 0 ] }; + key <AE01> { [ question, exclam, 1, 1 ] }; + key <AE02> { [ parenleft, quotedbl, 2, 2 ] }; + key <AE03> { [ parenright, numerosign, 3, 3 ] }; + key <AE04> { [ colon, semicolon, 4, 4 ] }; + key <AE05> { [ asterisk, percent, 5, 5 ] }; + key <AE06> { [ 0x010004dd, 0x010004dc, 6, 6 ] }; + key <AE07> { [ 0x010004e7, 0x010004e6, 7, 7 ] }; + key <AE08> { [ 0x010004f5, 0x010004f4, 8, 8 ] }; + key <AE09> { [ 0x010004e5, 0x010004e4, 9, 9 ] }; + key <AE10> { [ 0x010004df, 0x010004de, 0, 0 ] }; include "level3(ralt_switch)" }; partial alphanumeric_keys xkb_symbols "cv_latin" { - include "us(alt-intl)" + include "us(alt-intl)" name[Group1]= "Chuvash (Latin)"; key.type[group1]="FOUR_LEVEL"; - key <AD01> { [ q, Q, 0x01000161, 0x01000160 ] }; - key <AD02> { [ w, W, udiaeresis, Udiaeresis ] }; - key <AD03> { [ e, E, 0x01000115, 0x01000114 ] }; - key <AD07> { [ u, U, udiaeresis, Udiaeresis ] }; - key <AD08> { [ i, I, 0x0100012d, 0x0100012c ] }; - key <AD09> { [ o, O, odiaeresis, Odiaeresis ] }; - key <AC01> { [ a, A, abreve, Abreve ] }; - key <AC02> { [ s, S, scedilla, Scedilla ] }; - key <AC05> { [ g, G, gbreve, Gbreve ] }; - key <AC07> { [ j, J, 0x01000131, 0x01000130 ] }; - key <AB03> { [ c, C, ccedilla, Ccedilla ] }; + key <AD01> { [ q, Q, 0x01000161, 0x01000160 ] }; + key <AD02> { [ w, W, udiaeresis, Udiaeresis ] }; + key <AD03> { [ e, E, 0x01000115, 0x01000114 ] }; + key <AD07> { [ u, U, udiaeresis, Udiaeresis ] }; + key <AD08> { [ i, I, 0x0100012d, 0x0100012c ] }; + key <AD09> { [ o, O, odiaeresis, Odiaeresis ] }; + key <AC01> { [ a, A, abreve, Abreve ] }; + key <AC02> { [ s, S, scedilla, Scedilla ] }; + key <AC05> { [ g, G, gbreve, Gbreve ] }; + key <AC07> { [ j, J, 0x01000131, 0x01000130 ] }; + key <AB03> { [ c, C, ccedilla, Ccedilla ] }; include "level3(ralt_switch)" - }; // Komi language layout -// based on -// russian standard keyboard // Vlad Shakhov <lumpen.intellectual@gmail.com> -// Last Changes 2007/10/23 by Vlad Shakhov <lumpen.intellectual@gmail.com> - +// last changes 2007/10/23 partial alphanumeric_keys xkb_symbols "kom" { include "ru(winkeys)" - name[Group1]= "Komi"; key.type[group1]="FOUR_LEVEL_ALPHABETIC"; -// cyrilllic o with diaeresis - key <AC07> { [ Cyrillic_o, Cyrillic_O, - U04E7, U04E6 ] }; + // cyrilllic o with diaeresis + key <AC07> { [ Cyrillic_o, Cyrillic_O, U04E7, U04E6 ] }; -// hard I as additional key for soft Cyrillic_I - key <AB05> { [ Cyrillic_i, Cyrillic_I, - Ukrainian_i, Ukrainian_I ] }; + // hard I as additional key for soft Cyrillic_I + key <AB05> { [ Cyrillic_i, Cyrillic_I, Ukrainian_i, Ukrainian_I ] }; include "level3(ralt_switch)" }; @@ -364,37 +349,23 @@ partial alphanumeric_keys xkb_symbols "sah" { include "ru(winkeys)" - name[Group1]= "Yakut"; key.type[group1]="FOUR_LEVEL_ALPHABETIC"; - key <TLDE> { [ Cyrillic_io, Cyrillic_IO, - U04EB, U04EA ] }; - key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, - U048B, U048A ] }; - key <AD03> { [ Cyrillic_u, Cyrillic_U, - Cyrillic_u_straight, Cyrillic_U_straight ] }; - key <AD04> { [ Cyrillic_ka, Cyrillic_KA, - U04C4, U04C3 ] }; - key <AD06> { [ Cyrillic_en, Cyrillic_EN, - U04A5, U04A4 ] }; - key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, - U0495, U0494 ] }; - key <AD10> { [ Cyrillic_ze, Cyrillic_ZE, - U04E1, U04E0 ] }; - key <AD11> { [ Cyrillic_ha, Cyrillic_HA, - Cyrillic_shha, Cyrillic_SHHA ] }; - key <AC07> { [ Cyrillic_o, Cyrillic_O, - Cyrillic_o_bar, Cyrillic_O_bar ] }; - key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE, - U0461, U0460 ] }; - key <AB02> { [ Cyrillic_che, Cyrillic_CHE, - Cyrillic_u_macron, Cyrillic_U_macron ] }; - key <AB04> { [ Cyrillic_em, Cyrillic_EM, - U04C8, U04C7 ] }; - key <AB05> { [ Cyrillic_i, Cyrillic_I, - Cyrillic_i_macron, Cyrillic_I_macron ] }; + key <TLDE> { [ Cyrillic_io, Cyrillic_IO, U04EB, U04EA ] }; + key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, U048B, U048A ] }; + key <AD03> { [ Cyrillic_u, Cyrillic_U, Cyrillic_u_straight, Cyrillic_U_straight ] }; + key <AD04> { [ Cyrillic_ka, Cyrillic_KA, U04C4, U04C3 ] }; + key <AD06> { [ Cyrillic_en, Cyrillic_EN, U04A5, U04A4 ] }; + key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, U0495, U0494 ] }; + key <AD10> { [ Cyrillic_ze, Cyrillic_ZE, U04E1, U04E0 ] }; + key <AD11> { [ Cyrillic_ha, Cyrillic_HA, Cyrillic_shha, Cyrillic_SHHA ] }; + key <AC07> { [ Cyrillic_o, Cyrillic_O, Cyrillic_o_bar, Cyrillic_O_bar ] }; + key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE, U0461, U0460 ] }; + key <AB02> { [ Cyrillic_che, Cyrillic_CHE, Cyrillic_u_macron, Cyrillic_U_macron ] }; + key <AB04> { [ Cyrillic_em, Cyrillic_EM, U04C8, U04C7 ] }; + key <AB05> { [ Cyrillic_i, Cyrillic_I, Cyrillic_i_macron, Cyrillic_I_macron ] }; include "level3(ralt_switch)" }; @@ -404,38 +375,37 @@ xkb_symbols "sah" { //based on the Kalmyk language layout: http://soft.oyrat.org/ //Nikolay Korneev <halmg@oyrat.org> //Toli Miron <mirontoli@gmail.com> - partial alphanumeric_keys xkb_symbols "xal" { - include "ru(winkeys)" + include "ru(winkeys)" name[Group1]= "Kalmyk"; key.type[group1]="FOUR_LEVEL"; - key <AE01> { [ question, exclam, 1 ] }; - key <AE02> { [ numerosign, quotedbl, 2 ] }; - key <AE03> { [ Cyrillic_u_straight, Cyrillic_U_straight, 3 ] }; - key <AE04> { [ Cyrillic_schwa, Cyrillic_SCHWA, 4 ] }; - key <AE05> { [ asterisk, percent, 5 ] }; - key <AE06> { [ Cyrillic_en_descender, Cyrillic_EN_descender, 6 ] }; - key <AE07> { [ Cyrillic_o_bar, Cyrillic_O_bar, 7 ] }; - key <AE08> { [ Cyrillic_shha, Cyrillic_SHHA, 8 ] }; - key <AE09> { [ Cyrillic_zhe_descender, Cyrillic_ZHE_descender, 9 ] }; - key <AE10> { [ semicolon, colon, 0 ] }; - - key <TLDE> { [ parenleft, parenright, Cyrillic_io, Cyrillic_IO ] }; - - key <AD02> { [ Cyrillic_tse, Cyrillic_TSE, dollar ] }; - key <AD03> { [ Cyrillic_u, Cyrillic_U, EuroSign ] }; - key <AD04> { [ Cyrillic_ka, Cyrillic_KA, registered ] }; - key <AD05> { [ Cyrillic_ie, Cyrillic_IE, trademark ] }; - key <AD11> { [ Cyrillic_ha, Cyrillic_HA, bracketleft ] }; - key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, bracketright ] }; - key <AC11> { [ Cyrillic_e, Cyrillic_E, apostrophe ] }; - key <AB03> { [ Cyrillic_es, Cyrillic_ES, copyright ] }; - key <AB08> { [ Cyrillic_be, Cyrillic_BE, less ] }; - key <AB09> { [ Cyrillic_yu, Cyrillic_YU, greater ] }; + key <AE01> { [ question, exclam, 1 ] }; + key <AE02> { [ numerosign, quotedbl, 2 ] }; + key <AE03> { [ Cyrillic_u_straight, Cyrillic_U_straight, 3 ] }; + key <AE04> { [ Cyrillic_schwa, Cyrillic_SCHWA, 4 ] }; + key <AE05> { [ asterisk, percent, 5 ] }; + key <AE06> { [ Cyrillic_en_descender, Cyrillic_EN_descender, 6 ] }; + key <AE07> { [ Cyrillic_o_bar, Cyrillic_O_bar, 7 ] }; + key <AE08> { [ Cyrillic_shha, Cyrillic_SHHA, 8 ] }; + key <AE09> { [ Cyrillic_zhe_descender, Cyrillic_ZHE_descender, 9 ] }; + key <AE10> { [ semicolon, colon, 0 ] }; + + key <TLDE> { [ parenleft, parenright, Cyrillic_io, Cyrillic_IO ] }; + + key <AD02> { [ Cyrillic_tse, Cyrillic_TSE, dollar ] }; + key <AD03> { [ Cyrillic_u, Cyrillic_U, EuroSign ] }; + key <AD04> { [ Cyrillic_ka, Cyrillic_KA, registered ] }; + key <AD05> { [ Cyrillic_ie, Cyrillic_IE, trademark ] }; + key <AD11> { [ Cyrillic_ha, Cyrillic_HA, bracketleft ] }; + key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, bracketright ] }; + key <AC11> { [ Cyrillic_e, Cyrillic_E, apostrophe ] }; + key <AB03> { [ Cyrillic_es, Cyrillic_ES, copyright ] }; + key <AB08> { [ Cyrillic_be, Cyrillic_BE, less ] }; + key <AB09> { [ Cyrillic_yu, Cyrillic_YU, greater ] }; include "level3(ralt_switch)" }; @@ -444,84 +414,84 @@ partial alphanumeric_keys xkb_symbols "dos" { include "ru(common)" - name[Group1]= "Russian (DOS)"; - key <TLDE> { [ parenright, parenleft ] }; - key <AE04> { [ 4, currency ] }; - key <AE09> { [ 9, question ] }; - key <AE10> { [ 0, percent ] }; + key <TLDE> { [ parenright, parenleft ] }; + key <AE04> { [ 4, currency ] }; + key <AE09> { [ 9, question ] }; + key <AE10> { [ 0, percent ] }; - key <AB10> { [ Cyrillic_io, Cyrillic_IO ] }; + key <AB10> { [ Cyrillic_io, Cyrillic_IO ] }; }; partial alphanumeric_keys xkb_symbols "bak" { - include "ru(winkeys)" + include "ru(winkeys)" name[Group1]= "Bashkirian"; + key.type[group1]="FOUR_LEVEL"; - key <TLDE> { [ 0x010004d9, 0x010004d8, Cyrillic_io, Cyrillic_IO ] }; - key <AE01> { [ exclam, quotedbl, 1, 1 ] }; - key <AE02> { [ 0x010004e9, 0x010004e8, 2, 2 ] }; - key <AE03> { [ 0x010004a1, 0x010004a0, 3, 3 ] }; - key <AE04> { [ 0x01000493, 0x01000492, 4, 4 ] }; - key <AE05> { [ 0x010004ab, 0x010004aa, 5, 5 ] }; - key <AE06> { [ colon, semicolon, 6, 6 ] }; - key <AE07> { [ 0x01000499, 0x01000498, 7, 7 ] }; - key <AE08> { [ 0x010004bb, 0x010004ba, 8, 8 ] }; - key <AE09> { [ question, parenleft, 9, 9 ] }; - key <AE10> { [ numerosign, parenright, 0, 0 ] }; - key <AE11> { [ minus, percent, minus, underscore ]}; - key <AE12> { [ 0x010004af, 0x010004ae, equal, plus ]}; - key <BKSL> { [ 0x010004a3, 0x010004a2, backslash, slash ]}; + key <TLDE> { [ 0x010004d9, 0x010004d8, Cyrillic_io, Cyrillic_IO ] }; + key <AE01> { [ exclam, quotedbl, 1, 1 ] }; + key <AE02> { [ 0x010004e9, 0x010004e8, 2, 2 ] }; + key <AE03> { [ 0x010004a1, 0x010004a0, 3, 3 ] }; + key <AE04> { [ 0x01000493, 0x01000492, 4, 4 ] }; + key <AE05> { [ 0x010004ab, 0x010004aa, 5, 5 ] }; + key <AE06> { [ colon, semicolon, 6, 6 ] }; + key <AE07> { [ 0x01000499, 0x01000498, 7, 7 ] }; + key <AE08> { [ 0x010004bb, 0x010004ba, 8, 8 ] }; + key <AE09> { [ question, parenleft, 9, 9 ] }; + key <AE10> { [ numerosign, parenright, 0, 0 ] }; + key <AE11> { [ minus, percent, minus, underscore ] }; + key <AE12> { [ 0x010004af, 0x010004ae, equal, plus ] }; + key <BKSL> { [ 0x010004a3, 0x010004a2, backslash, slash ] }; include "level3(ralt_switch)" }; -// Serbian charecters added as third level symbols to Russian keyboard layout. - +// Serbian characters are added as third-level symbols to Russian keyboard layout. partial alphanumeric_keys xkb_symbols "srp" { - include "ru(common)" - include "level3(ralt_switch)" + include "ru(common)" name[Group1]= "Serbian (Russia)"; - key <AE03> { [ 3, numerosign ] }; - key <AE04> { [ 4, semicolon ] }; - key <AE05> { [ 5, percent ] }; - key <AE06> { [ 6, colon ] }; - key <AE07> { [ 7, question ] }; - key <AE08> { [ 8, asterisk ] }; - key <AB10> { [ period, comma ] }; - key <BKSL> { [ backslash, slash ] }; - key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, U458, U408 ] }; - key <AD06> { [ Cyrillic_en, Cyrillic_EN, U45A, U40A ] }; - key <AC08> { [ Cyrillic_el, Cyrillic_EL, U459, U409 ] }; - key <AC09> { [ Cyrillic_de, Cyrillic_DE, U45F, U40F ] }; - key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE, U452, U402 ] }; - key <AB02> { [ Cyrillic_che, Cyrillic_CHE, U45B, U40B ] }; + key <AE03> { [ 3, numerosign ] }; + key <AE04> { [ 4, semicolon ] }; + key <AE05> { [ 5, percent ] }; + key <AE06> { [ 6, colon ] }; + key <AE07> { [ 7, question ] }; + key <AE08> { [ 8, asterisk ] }; + key <AB10> { [ period, comma ] }; + key <BKSL> { [ backslash, slash ] }; + key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, U458, U408 ] }; + key <AD06> { [ Cyrillic_en, Cyrillic_EN, U45A, U40A ] }; + key <AC08> { [ Cyrillic_el, Cyrillic_EL, U459, U409 ] }; + key <AC09> { [ Cyrillic_de, Cyrillic_DE, U45F, U40F ] }; + key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE, U452, U402 ] }; + key <AB02> { [ Cyrillic_che, Cyrillic_CHE, U45B, U40B ] }; + + include "level3(ralt_switch)" }; // Mari language layout -// based on Russian standard keyboard // http://www.marlamuter.ru/ partial alphanumeric_keys xkb_symbols "chm" { - include "ru(common)" + include "ru(common)" name[Group1]= "Mari"; key.type[group1]="FOUR_LEVEL_ALPHABETIC"; - key <AC04> { [ Cyrillic_a, Cyrillic_A, U04D3, U04D2 ] }; - key <AD03> { [ Cyrillic_u, Cyrillic_U, U04F1, U04F0 ] }; - key <AC02> { [ Cyrillic_ui, Cyrillic_UI, U04F9, U04F8 ] }; - key <AD06> { [ Cyrillic_n, Cyrillic_N, U04A5, U04A4 ] }; - key <AC11> { [ Cyrillic_e, Cyrillic_E, U04E9, U04E8 ] }; - key <AC10> { [ Cyrillic_zh, Cyrillic_ZH, U04EB, U04EA ] }; - key <AC01> { [ Cyrillic_f, Cyrillic_F, UF537, UF536 ] }; + + key <AC04> { [ Cyrillic_a, Cyrillic_A, U04D3, U04D2 ] }; + key <AD03> { [ Cyrillic_u, Cyrillic_U, U04F1, U04F0 ] }; + key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU, U04F9, U04F8 ] }; + key <AD06> { [ Cyrillic_en, Cyrillic_EN, U04A5, U04A4 ] }; + key <AC11> { [ Cyrillic_e, Cyrillic_E, U04E9, U04E8 ] }; + key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE, U04EB, U04EA ] }; + key <AC01> { [ Cyrillic_ef, Cyrillic_EF, UF537, UF536 ] }; include "level3(ralt_switch)" }; @@ -529,71 +499,73 @@ xkb_symbols "chm" { // EXTRAS: // Church Slavonic language layout -// based on -// russian standard keyboard -// Aleksandr Andreev and Yuri Shardt -// Last Changes 2010/08/01. Contact <aleksandr.andreev@gmail.com> - +// based on the Russian standard keyboard +// by Aleksandr Andreev and Yuri Shardt +// last changes 2010/08/01; contact <aleksandr.andreev@gmail.com> partial alphanumeric_keys -xkb_symbols "chu" -{ - name[Group1]= "Church Slavonic"; - key <TLDE> { [ U0457, U0407, U0482, U20DD ] }; // ї Ї ҂ e.g: а⃝ where the last is a combining ten thousands sign - key <AE01> { [ U0461, U0460, U047D, U047C] }; // ѡ Ѡ ѽ Ѽ - key <AE02> { [ U0454, U0404, U0465, U0464] }; // є Є ѥ Ѥ - key <AE03> { [ U046F, U046E, U0469, U0468] }; // ѯ Ѯ ѩ Ѩ - key <AE04> { [ U0471, U0470, U046D, U046C] }; // ѱ Ѱ ѭ Ѭ - key <AE05> { [ U0473, U0472, UA657, UA656] }; // ѳ Ѳ iotified A - key <AE06> { [ U0475, U0474, U0477, U0476] }; // ѵ Ѵ ѷ Ѷ - key <AE07> { [ U047B, U047A, UA64D, UA64C] }; // ѻ Ѻ ꙍ Ꙍ - key <AE08> { [ U047F, U047E, U046B, U046A] }; // ѿ Ѿ ѫ Ѫ - key <AE09> { [ U0455, U0405, parenleft, U002A ] }; // ѕ Ѕ ( * - key <AE10> { [ Cyrillic_u, Cyrillic_U, parenright, U0488 ] }; // у У ) NB: for diagraph Ouk, use Cyrillic_o + Cyrillic_u - key <AE11> { [ U0483, U0486, U0487, U005F] }; // а҃ а҆ а҇, _ (titlo, psili, pokrytie, underscore) - key <AE12> { [ U0301, U0300, U0484, UA67E] }; // а̀ а́ а҄ ꙾ (oxia, varia, kamora, kavyka) - key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, U0456 ] }; - key <AD02> { [ Cyrillic_tse, Cyrillic_TSE, U2DF0 ] }; - key <AD03> { [ UA64B, UA64A, U2DF9 ] }; // Cyrillic monograph Uk (not U)! - key <AD04> { [ Cyrillic_ka, Cyrillic_KA, U2DE6 ] }; - key <AD05> { [ Cyrillic_ie, Cyrillic_IE, U2DF7 ] }; - key <AD06> { [ Cyrillic_en, Cyrillic_EN, U2DE9 ] }; - key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, U2DE2 ] }; - key <AD08> { [ Cyrillic_sha, Cyrillic_SHA, U2DF2 ] }; - key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA, U2DF3 ] }; - key <AD10> { [ Cyrillic_ze, Cyrillic_ZE, U2DE5 ] }; - key <AD11> { [ Cyrillic_ha, Cyrillic_HA, U2DEF ] }; - key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN, UA67D ] }; // Payerok - key <BKSL> { [backslash, slash, colon, question] }; // \ / : ? (note, for Slavonic question use semicolon - key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] }; - key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] }; - key <AC03> { [ Cyrillic_ve, Cyrillic_VE, U2DE1 ] }; - key <AC04> { [ Cyrillic_a, Cyrillic_A, U2DF6 ] }; - key <AC05> { [ Cyrillic_pe, Cyrillic_PE, U2DEB ] }; - key <AC06> { [ Cyrillic_er, Cyrillic_ER, U2DEC ] }; - key <AC07> { [ Cyrillic_o, Cyrillic_O, U2DEA ] }; - key <AC08> { [ Cyrillic_el, Cyrillic_EL, U2DE7 ] }; - key <AC09> { [ Cyrillic_de, Cyrillic_DE, U2DE3 ] }; - key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE, U2DE4 ] }; - key <AC11> { [ U0463, U0462, U2DFA ] }; // Yat - key <AB01> { [ U0467, U0466, U2DFD ] }; // Small Yus - key <AB02> { [ Cyrillic_che, Cyrillic_CHE, U2DF1 ] }; - key <AB03> { [ Cyrillic_es, Cyrillic_ES, U2DED ] }; - key <AB04> { [ Cyrillic_em, Cyrillic_EM, U2DE8 ] }; - key <AB05> { [ Cyrillic_i, Cyrillic_I ] }; - key <AB06> { [ Cyrillic_te, Cyrillic_TE, U2DEE ] }; - key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] }; - key <AB08> { [ Cyrillic_be, Cyrillic_BE, U2DE0 ] }; - key <AB09> { [ Cyrillic_yu, Cyrillic_YU, U2DFB ] }; - key <AB10> { [ period, comma, semicolon, exclam ] }; +xkb_symbols "chu" { + + name[Group1]= "Church Slavonic"; + + key <TLDE> { [ U0457, U0407, U0482, U20DD ] }; // ї Ї ҂ e.g: а⃝ where the last is a combining ten thousands sign + key <AE01> { [ U0461, U0460, U047D, U047C ] }; // ѡ Ѡ ѽ Ѽ + key <AE02> { [ U0454, U0404, U0465, U0464 ] }; // є Є ѥ Ѥ + key <AE03> { [ U046F, U046E, U0469, U0468 ] }; // ѯ Ѯ ѩ Ѩ + key <AE04> { [ U0471, U0470, U046D, U046C ] }; // ѱ Ѱ ѭ Ѭ + key <AE05> { [ U0473, U0472, UA657, UA656 ] }; // ѳ Ѳ iotified A + key <AE06> { [ U0475, U0474, U0477, U0476 ] }; // ѵ Ѵ ѷ Ѷ + key <AE07> { [ U047B, U047A, UA64D, UA64C ] }; // ѻ Ѻ ꙍ Ꙍ + key <AE08> { [ U047F, U047E, U046B, U046A ] }; // ѿ Ѿ ѫ Ѫ + key <AE09> { [ U0455, U0405,parenleft,U002A ] }; // ѕ Ѕ ( * + key <AE10> { [Cyrillic_u,Cyrillic_U,parenright,U0488]}; // у У ) NB: for digraph Ouk, use Cyrillic_o + Cyrillic_u + key <AE11> { [ U0483, U0486, U0487, U005F ] }; // а҃ а҆ а҇, _ (titlo, psili, pokrytie, underscore) + key <AE12> { [ U0301, U0300, U0484, UA67E ] }; // а̀ а́ а҄ ꙾ (oxia, varia, kamora, kavyka) + + key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI, U0456 ] }; + key <AD02> { [ Cyrillic_tse, Cyrillic_TSE, U2DF0 ] }; + key <AD03> { [ UA64B, UA64A, U2DF9 ] }; // Cyrillic monograph Uk (not U)! + key <AD04> { [ Cyrillic_ka, Cyrillic_KA, U2DE6 ] }; + key <AD05> { [ Cyrillic_ie, Cyrillic_IE, U2DF7 ] }; + key <AD06> { [ Cyrillic_en, Cyrillic_EN, U2DE9 ] }; + key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, U2DE2 ] }; + key <AD08> { [ Cyrillic_sha, Cyrillic_SHA, U2DF2 ] }; + key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA, U2DF3 ] }; + key <AD10> { [ Cyrillic_ze, Cyrillic_ZE, U2DE5 ] }; + key <AD11> { [ Cyrillic_ha, Cyrillic_HA, U2DEF ] }; + key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN, UA67D ] }; // Payerok + key <BKSL> { [ backslash, slash, colon, question ] }; // \ / : ? NB: for Slavonic question, use semicolon + + key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] }; + key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU ] }; + key <AC03> { [ Cyrillic_ve, Cyrillic_VE, U2DE1 ] }; + key <AC04> { [ Cyrillic_a, Cyrillic_A, U2DF6 ] }; + key <AC05> { [ Cyrillic_pe, Cyrillic_PE, U2DEB ] }; + key <AC06> { [ Cyrillic_er, Cyrillic_ER, U2DEC ] }; + key <AC07> { [ Cyrillic_o, Cyrillic_O, U2DEA ] }; + key <AC08> { [ Cyrillic_el, Cyrillic_EL, U2DE7 ] }; + key <AC09> { [ Cyrillic_de, Cyrillic_DE, U2DE3 ] }; + key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE, U2DE4 ] }; + key <AC11> { [ U0463, U0462, U2DFA ] }; // Yat + + key <AB01> { [ U0467, U0466, U2DFD ] }; // Small Yus + key <AB02> { [ Cyrillic_che, Cyrillic_CHE, U2DF1 ] }; + key <AB03> { [ Cyrillic_es, Cyrillic_ES, U2DED ] }; + key <AB04> { [ Cyrillic_em, Cyrillic_EM, U2DE8 ] }; + key <AB05> { [ Cyrillic_i, Cyrillic_I ] }; + key <AB06> { [ Cyrillic_te, Cyrillic_TE, U2DEE ] }; + key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] }; + key <AB08> { [ Cyrillic_be, Cyrillic_BE, U2DE0 ] }; + key <AB09> { [ Cyrillic_yu, Cyrillic_YU, U2DFB ] }; + key <AB10> { [ period, comma, semicolon, exclam ] }; }; // RUU (Russian-Ukrainian United keyboard layout). -// Modified Russian standart keyboard with third level contains Ukrainian -// and Belorusian alphabetic letters and commonly used Unicode symbols. -// Description http://wiki.opennet.ru/RUU [russian] +// This is a modified Russian standard keyboard, with the third level containing +// Ukrainian and Belorusian alphabetic letters and commonly used Unicode symbols. +// For a description see http://wiki.opennet.ru/RUU [in Russian]. // Vasyĺ V. Vercynśkyj <fuckel@ukr.net> -// Last Changes 2011/05/11 +// last changes 2011/05/11 // // ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓ // │ ' ~ │ ! ≈ │ " ∞ │ № ₴ │ ; € │ % ‰ │ : ≤ │ ? ≥ │ * × │ ( { │ ) } │ _ – │ + ± ┃ ⌫ ┃ @@ -611,43 +583,43 @@ xkb_symbols "chu" // ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ // ┃ Ctrl ┃ Meta ┃ Alt ┃ Space ┃AltGr ⇮┃ Menu ┃ Ctrl ┃ // ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛ - - - partial alphanumeric_keys xkb_symbols "ruu" { - include "ru(common)" + include "ru(common)" name[Group1]= "Russian (with Ukrainian-Belorussian layout)"; - key <TLDE> { [ U2019, apostrophe, U0301, asciitilde ] }; // Apostrophe and Stress symbol - key <AE01> { [ 1, exclam, U00F7, U2248 ] }; // Division Sign and Almost Equal To - key <AE02> { [ 2, quotedbl, currency, infinity ] }; - key <AE03> { [ 3, numerosign, U00A7, U20B4 ] }; // Paragraph and Hryvnia sign - key <AE04> { [ 4, semicolon, dollar, EuroSign ] }; - key <AE05> { [ 5, percent, degree, U2030 ] }; // Per Mille Sign - key <AE06> { [ 6, colon, less, U2264 ] }; // Less-Than Or Equal To - key <AE07> { [ 7, question, greater, U2265 ] }; // Greater-Than Or Equal To - key <AE08> { [ 8, asterisk, enfilledcircbullet, U00D7 ] }; // Multiplication Sign - key <AE09> { [ 9, parenleft, bracketleft, braceleft ] }; - key <AE10> { [ 0, parenright, bracketright, braceright ] }; - key <AE11> { [ minus, underscore, emdash, endash ] }; - key <AE12> { [ equal, plus, notequal, plusminus ] }; - key <AD03> { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ] }; - key <AD04> { [ Cyrillic_ka, Cyrillic_KA, registered ] }; // Registered tm - key <AD05> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] }; - key <AD07> { [Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; - key <AD10> { [ Cyrillic_ze, Cyrillic_ZE, U00B6 ] }; // Pilcrow Sign - key <AD12> { [Cyrillic_hardsign, Cyrillic_HARDSIGN, Ukrainian_yi, Ukrainian_YI ] }; - key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU, Ukrainian_i, Ukrainian_I ] }; - key <AC11> { [ Cyrillic_e, Cyrillic_E, Ukrainian_ie,Ukrainian_IE ] }; - key <BKSL> { [ slash, bar, backslash, U00A6 ] }; // Broken Bar - key <AB03> { [ Cyrillic_es, Cyrillic_ES, copyright ] }; - key <AB06> { [ Cyrillic_te, Cyrillic_TE, trademark ] }; - key <AB07> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, U00B5 ] }; // Micro Sign - key <AB08> { [ Cyrillic_be, Cyrillic_BE, guillemotleft, doublelowquotemark ] }; - key <AB09> { [ Cyrillic_yu, Cyrillic_YU, guillemotright, leftdoublequotemark ] }; - key <AB10> { [ period, comma, slash, ellipsis ] }; + key <TLDE> { [ U2019, apostrophe, U0301, asciitilde ] }; // Apostrophe and Stress symbol + key <AE01> { [ 1, exclam, U00F7, U2248 ] }; // Division Sign and Almost Equal To + key <AE02> { [ 2, quotedbl, currency, infinity ] }; + key <AE03> { [ 3, numerosign, U00A7, U20B4 ] }; // Paragraph and Hryvnia sign + key <AE04> { [ 4, semicolon, dollar, EuroSign ] }; + key <AE05> { [ 5, percent, degree, U2030 ] }; // Per Mille Sign + key <AE06> { [ 6, colon, less, U2264 ] }; // Less-Than Or Equal To + key <AE07> { [ 7, question, greater, U2265 ] }; // Greater-Than Or Equal To + key <AE08> { [ 8, asterisk, enfilledcircbullet, U00D7 ] }; // Multiplication Sign + key <AE09> { [ 9, parenleft, bracketleft, braceleft ] }; + key <AE10> { [ 0, parenright, bracketright, braceright ] }; + key <AE11> { [ minus, underscore, emdash, endash ] }; + key <AE12> { [ equal, plus, notequal, plusminus ] }; + + key <AD03> { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ] }; + key <AD04> { [ Cyrillic_ka, Cyrillic_KA, registered ] }; // Registered tm + key <AD05> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] }; + key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; + key <AD10> { [ Cyrillic_ze, Cyrillic_ZE, U00B6 ] }; // Pilcrow Sign + key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, Ukrainian_yi, Ukrainian_YI ] }; + + key <AC02> { [ Cyrillic_yeru, Cyrillic_YERU, Ukrainian_i, Ukrainian_I ] }; + key <AC11> { [ Cyrillic_e, Cyrillic_E, Ukrainian_ie, Ukrainian_IE ] }; + key <BKSL> { [ slash, bar, backslash, U00A6 ] }; // Broken Bar + + key <AB03> { [ Cyrillic_es, Cyrillic_ES, copyright ] }; + key <AB06> { [ Cyrillic_te, Cyrillic_TE, trademark ] }; + key <AB07> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, U00B5 ] }; // Micro Sign + key <AB08> { [ Cyrillic_be, Cyrillic_BE, guillemotleft, doublelowquotemark ] }; + key <AB09> { [ Cyrillic_yu, Cyrillic_YU, guillemotright, leftdoublequotemark ] }; + key <AB10> { [ period, comma, slash, ellipsis ] }; include "level3(ralt_switch)" }; @@ -660,18 +632,18 @@ partial alphanumeric_keys // Apple layout partial alphanumeric_keys xkb_symbols "mac" { -include "ru(common)" + include "ru(common)" name[Group1]= "Russian (Macintosh)"; - key <LSGT> { [ less, greater ] }; - key <AE02> { [ 2, quotedbl ] }; - key <AE03> { [ 3, numerosign ] }; - key <AE04> { [ 4, percent ] }; - key <AE05> { [ 5, colon ] }; - key <AE06> { [ 6, comma ] }; - key <AE07> { [ 7, period ] }; - key <AE08> { [ 8, semicolon ] }; - key <TLDE> { [ bracketright, bracketleft ] }; - key <BKSL> { [ Cyrillic_io, Cyrillic_IO ] }; + key <LSGT> { [ less, greater ] }; + key <AE02> { [ 2, quotedbl ] }; + key <AE03> { [ 3, numerosign ] }; + key <AE04> { [ 4, percent ] }; + key <AE05> { [ 5, colon ] }; + key <AE06> { [ 6, comma ] }; + key <AE07> { [ 7, period ] }; + key <AE08> { [ 8, semicolon ] }; + key <TLDE> { [ bracketright, bracketleft ] }; + key <BKSL> { [ Cyrillic_io, Cyrillic_IO ] }; }; diff --git a/xorg-server/xkeyboard-config/symbols/se b/xorg-server/xkeyboard-config/symbols/se index 320a1861d..be07cadf9 100644 --- a/xorg-server/xkeyboard-config/symbols/se +++ b/xorg-server/xkeyboard-config/symbols/se @@ -309,3 +309,54 @@ partial alphanumeric_keys xkb_symbols "sun_type6" { include "sun_vndr/se(sun_type6)" }; + +partial alphanumeric_keys +xkb_symbols "dvorak_a5" { + + include "se(basic)" + + name[Group1]="Swedish (Dvorak A5)"; + + key <AE12> { [ dead_acute, dead_grave, plusminus, none ] }; + + key <AD01> { [ aring, Aring, braceleft, none ] }; + key <AD02> { [ adiaeresis, Adiaeresis, braceright, none ] }; + key <AD03> { [ odiaeresis, Odiaeresis, bracketleft, none ] }; + key <AD04> { [ p, P, bracketright, none ] }; + key <AD05> { [ y, Y, dollar, none ] }; + key <AD06> { [ f, F, quotedbl, none ] }; + key <AD07> { [ g, G, question, none ] }; + key <AD08> { [ c, C, ampersand, none ] }; + key <AD09> { [ r, R, less, none ] }; + key <AD10> { [ l, L, greater, none ] }; + key <AD11> { [ comma, semicolon, dead_cedilla, none ] }; + key <AD12> { [ dead_diaeresis, dead_circumflex, dead_tilde, asciicircum ] }; + + key <AC01> { [ a, A, semicolon, none ] }; + key <AC02> { [ o, O, slash, none ] }; + key <AC03> { [ e, E, parenleft, none ] }; + key <AC04> { [ u, U, parenright, none ] }; + key <AC05> { [ i, I, bar, none ] }; + key <AC06> { [ d, D, numbersign, none ] }; + key <AC07> { [ h, H, asciicircum, none ] }; + key <AC08> { [ t, T, numbersign, none ] }; + key <AC09> { [ n, N, quotedbl, none ] }; + key <AC10> { [ s, S, asciitilde, none ] }; + key <AC11> { [ minus, underscore, grave, none ] }; + + key <AB01> { [ period, colon, colon, none ] }; + key <AB02> { [ q, Q, equal, none ] }; + key <AB03> { [ j, J, at, none ] }; + key <AB04> { [ k, K, exclam, none ] }; + key <AB05> { [ x, X, backslash, none ] }; + key <AB06> { [ b, B, percent, none ] }; + key <AB07> { [ m, M, grave, none ] }; + key <AB08> { [ w, W, lstroke, none ] }; + key <AB09> { [ v, V, leftdoublequotemark, none ] }; + key <AB10> { [ z, Z, guillemotleft, none ] }; + + key <BKSL> { [ apostrophe, asterisk, asterisk, none ] }; + +}; + + diff --git a/xorg-server/xkeyboard-config/symbols/sk b/xorg-server/xkeyboard-config/symbols/sk index 2162d533d..3be0b92e8 100644 --- a/xorg-server/xkeyboard-config/symbols/sk +++ b/xorg-server/xkeyboard-config/symbols/sk @@ -1,105 +1,105 @@ default partial alphanumeric_keys xkb_symbols "basic" { - // This layout conforms to a new sk compromise standard designed - // to satisfy most unix, windows and mac users. - // 2001 by Kamil Toman <ktoman@email.cz> + // This layout conforms to a new Slovak compromise standard + // designed to satisfy most Unix, Windows and Mac users. + // 2001 by Kamil Toman <ktoman@email.cz> include "latin" - name[Group1] = "Slovak"; - key <TLDE> { [ semicolon, dead_abovering, grave, asciitilde ] }; - key <AE01> { [ plus, 1, exclam, dead_tilde ] }; - key <AE02> { [ lcaron, 2, at, dead_caron ] }; - key <AE03> { [ scaron, 3, numbersign, dead_circumflex ] }; - key <AE04> { [ ccaron, 4, dollar, dead_breve ] }; - key <AE05> { [ tcaron, 5, percent, dead_abovering ] }; - key <AE06> { [ zcaron, 6, asciicircum, dead_ogonek ] }; - key <AE07> { [ yacute, 7, ampersand, dead_grave ] }; - key <AE08> { [ aacute, 8, asterisk, dead_abovedot ] }; - key <AE09> { [ iacute, 9, braceleft, dead_acute ] }; - key <AE10> { [ eacute, 0, braceright, dead_doubleacute ] }; - key <AE11> { [ equal, percent, NoSymbol, dead_diaeresis ] }; - key <AE12> { [dead_acute, dead_caron, dead_macron, dead_cedilla ] }; - - key <AD01> { [ q, Q, backslash, NoSymbol ] }; - key <AD02> { [ w, W, bar, Nosymbol ] }; - key <AD03> { [ e, E, EuroSign, NoSymbol ] }; - key <AD04> { [ r, R, NoSymbol, NoSymbol ] }; - key <AD05> { [ t, T, NoSymbol, NoSymbol ] }; - key <AD06> { [ z, Z, NoSymbol, NoSymbol ] }; - key <AD07> { [ u, U, NoSymbol, NoSymbol ] }; - key <AD08> { [ i, I, NoSymbol, NoSymbol ] }; - key <AD09> { [ o, O, NoSymbol, NoSymbol ] }; - key <AD10> { [ p, P, NoSymbol, NoSymbol ] }; - - key <AD11> { [ uacute, slash, bracketleft, division ] }; - key <AD12> { [adiaeresis, parenleft, bracketright, multiply ] }; - - key <AC01> { [ a, A, asciitilde, NoSymbol ] }; - key <AC02> { [ s, S, dstroke, NoSymbol ] }; - key <AC03> { [ d, D, Dstroke, NoSymbol ] }; - key <AC04> { [ f, F, bracketleft, NoSymbol ] }; - key <AC05> { [ g, G, bracketright, NoSymbol ] }; - key <AC06> { [ h, H, grave, NoSymbol ] }; - key <AC07> { [ j, J, apostrophe, NoSymbol ] }; - key <AC08> { [ k, K, lstroke, NoSymbol ] }; - key <AC09> { [ l, L, Lstroke, NoSymbol ] }; - - key <AC10> { [ocircumflex, quotedbl, dollar, NoSymbol ] }; - key <AC11> { [ section, exclam, apostrophe, ssharp ] }; - key <AC12> { [ EuroSign, dead_diaeresis, NoSymbol, NoSymbol ] }; - key <BKSL> { [ ncaron, parenright, backslash, bar ] }; - - key <LSGT> { [ backslash, bar, slash, NoSymbol ] }; - key <AB01> { [ y, Y, degree, NoSymbol ] }; - key <AB02> { [ x, X, numbersign, Nosymbol ] }; - key <AB03> { [ c, C, ampersand, NoSymbol ] }; - key <AB04> { [ v, V, at, NoSymbol ] }; - key <AB05> { [ b, B, braceleft, NoSymbol ] }; - key <AB06> { [ n, N, braceright, NoSymbol ] }; - key <AB07> { [ m, M, asciicircum, NoSymbol ] }; - key <AB08> { [ comma, question, less, NoSymbol ] }; - key <AB09> { [ period, colon, greater, NoSymbol ] }; - key <AB10> { [ minus, underscore, asterisk, NoSymbol ] }; + key <TLDE> { [ semicolon, dead_abovering, grave, asciitilde ] }; + key <AE01> { [ plus, 1, exclam, dead_tilde ] }; + key <AE02> { [ lcaron, 2, at, dead_caron ] }; + key <AE03> { [ scaron, 3, numbersign, dead_circumflex ] }; + key <AE04> { [ ccaron, 4, dollar, dead_breve ] }; + key <AE05> { [ tcaron, 5, percent, dead_abovering]}; + key <AE06> { [ zcaron, 6, asciicircum, dead_ogonek ] }; + key <AE07> { [ yacute, 7, ampersand, dead_grave ] }; + key <AE08> { [ aacute, 8, asterisk, dead_abovedot] }; + key <AE09> { [ iacute, 9, braceleft, dead_acute ] }; + key <AE10> { [ eacute, 0, braceright, dead_doubleacute ] }; + key <AE11> { [ equal, percent, NoSymbol, dead_diaeresis]}; + key <AE12> { [dead_acute, dead_caron, dead_macron, dead_cedilla ] }; + + key <AD01> { [ q, Q, backslash, NoSymbol ] }; + key <AD02> { [ w, W, bar, Nosymbol ] }; + key <AD03> { [ e, E, EuroSign, NoSymbol ] }; + key <AD04> { [ r, R, NoSymbol, NoSymbol ] }; + key <AD05> { [ t, T, NoSymbol, NoSymbol ] }; + key <AD06> { [ z, Z, NoSymbol, NoSymbol ] }; + key <AD07> { [ u, U, NoSymbol, NoSymbol ] }; + key <AD08> { [ i, I, NoSymbol, NoSymbol ] }; + key <AD09> { [ o, O, NoSymbol, NoSymbol ] }; + key <AD10> { [ p, P, NoSymbol, NoSymbol ] }; + + key <AD11> { [ uacute, slash, bracketleft, division ] }; + key <AD12> { [adiaeresis, parenleft, bracketright, multiply ] }; + + key <AC01> { [ a, A, asciitilde, NoSymbol ] }; + key <AC02> { [ s, S, dstroke, NoSymbol ] }; + key <AC03> { [ d, D, Dstroke, NoSymbol ] }; + key <AC04> { [ f, F, bracketleft, NoSymbol ] }; + key <AC05> { [ g, G, bracketright, NoSymbol ] }; + key <AC06> { [ h, H, grave, NoSymbol ] }; + key <AC07> { [ j, J, apostrophe, NoSymbol ] }; + key <AC08> { [ k, K, lstroke, NoSymbol ] }; + key <AC09> { [ l, L, Lstroke, NoSymbol ] }; + + key <AC10> { [ocircumflex, quotedbl, dollar, NoSymbol ] }; + key <AC11> { [ section, exclam, apostrophe, ssharp ] }; + key <AC12> { [ EuroSign, dead_diaeresis, NoSymbol, NoSymbol ] }; + key <BKSL> { [ ncaron, parenright, backslash, bar ] }; + + key <LSGT> { [ backslash, bar, slash, NoSymbol ] }; + key <AB01> { [ y, Y, degree, NoSymbol ] }; + key <AB02> { [ x, X, numbersign, Nosymbol ] }; + key <AB03> { [ c, C, ampersand, NoSymbol ] }; + key <AB04> { [ v, V, at, NoSymbol ] }; + key <AB05> { [ b, B, braceleft, NoSymbol ] }; + key <AB06> { [ n, N, braceright, NoSymbol ] }; + key <AB07> { [ m, M, asciicircum, NoSymbol ] }; + key <AB08> { [ comma, question, less, NoSymbol ] }; + key <AB09> { [ period, colon, greater, NoSymbol ] }; + key <AB10> { [ minus, underscore, asterisk, NoSymbol ] }; key <SPCE> { [ space, space, nobreakspace, nobreakspace ] }; include "level3(ralt_switch)" }; -// Use <BKSL> instead of <LSGT> (useful for keyboard without <LSGT> key) xkb_symbols "bksl" { - include "sk(basic)" + // Use <BKSL> instead of <LSGT> (useful for keyboards without <LSGT> key). + + include "sk(basic)" name[Group1] = "Slovak (extended Backslash)"; - key <BKSL> { [ backslash, bar, slash, NoSymbol ] }; + key <BKSL> { [ backslash, bar, slash, NoSymbol ] }; }; partial alphanumeric_keys xkb_symbols "qwerty" { - // This layout should work exactly as a sk with the exception - // of 'Z' and 'Y' keys, which are in the qwerty style (ie. swapped). + // This layout works exactly as the basic Slovak one with the exception + // of the 'Z' and 'Y' keys, which are in Qwerty style (i.e. swapped). // 2001 by Kamil Toman <ktoman@email.cz> include "sk(basic)" - name[Group1] = "Slovak (qwerty)"; - key <AB01> { [ z, Z, degree, NoSymbol ] }; - key <AD06> { [ y, Y, NoSymbol, NoSymbol ] }; + key <AB01> { [ z, Z, degree, NoSymbol ] }; + key <AD06> { [ y, Y, NoSymbol, NoSymbol ] }; }; -// Use <BKSL> instead of <LSGT> (useful for keyboard without <LSGT> key) xkb_symbols "qwerty_bksl" { - include "sk(qwerty)" + // Use <BKSL> instead of <LSGT> (useful for keyboards without <LSGT> key). + + include "sk(qwerty)" name[Group1] = "Slovak (qwerty, extended Backslash)"; - key <BKSL> { [ backslash, bar, slash, NoSymbol ] }; + key <BKSL> { [ backslash, bar, slash, NoSymbol ] }; }; // EXTRAS: diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/pl b/xorg-server/xkeyboard-config/symbols/sun_vndr/pl index d5a7f5b04..15e96ef15 100644 --- a/xorg-server/xkeyboard-config/symbols/sun_vndr/pl +++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/pl @@ -40,7 +40,7 @@ xkb_symbols "sun_type6" { key <AE03> { [ 3, numbersign ] }; key <AE04> { [ 4, dollar ] }; key <AE05> { [ 5, percent ] }; - key <AE06> { [ 6, asciicirum ] }; + key <AE06> { [ 6, asciicircum ] }; key <AE07> { [ 7, ampersand ] }; key <AE08> { [ 8, asterisk ] }; key <AE09> { [ 9, parenleft ] }; diff --git a/xorg-server/xkeyboard-config/symbols/sun_vndr/sk b/xorg-server/xkeyboard-config/symbols/sun_vndr/sk index 18696bb3f..0d161a7f0 100644 --- a/xorg-server/xkeyboard-config/symbols/sun_vndr/sk +++ b/xorg-server/xkeyboard-config/symbols/sun_vndr/sk @@ -34,7 +34,7 @@ xkb_symbols "sun_type6" { include "sun_vndr/us(sun_type6)" - key <TLDE> { [ semicolon, dead_abovering, grave asciitilde ] }; + key <TLDE> { [ semicolon, dead_abovering, grave, asciitilde ] }; key <AE01> { [ plus, 1, exclam, asciitilde ] }; key <AE02> { [ lcaron, 2, at, dead_caron ] }; key <AE03> { [ scaron, 3, numbersign, dead_circumflex ] }; diff --git a/xorg-server/xkeyboard-config/symbols/tr b/xorg-server/xkeyboard-config/symbols/tr index 1c288524b..15dd59ca6 100644 --- a/xorg-server/xkeyboard-config/symbols/tr +++ b/xorg-server/xkeyboard-config/symbols/tr @@ -1,9 +1,8 @@ -// based on -// Turkish keyboard symbols for PC and xkb -// This file distributed without any expressed or implied warranty +// Keyboard layouts for Turkey. +// This file distributed without any expressed or implied warranty. // Nilgün Belma Bugüner <nilgun@belgeler.org>, 2005 -//Default Layout (Turkish Q) +// Turkish Q layout default partial xkb_symbols "basic" { @@ -11,54 +10,54 @@ xkb_symbols "basic" { name[Group1]="Turkish"; - key <AE01> { [ 1, exclam, greater, exclamdown ] }; - key <AE02> { [ 2, apostrophe, sterling, twosuperior ] }; - key <AE03> { [ 3, asciicircum, numbersign, threesuperior ] }; - key <AE04> { [ 4, plus, dollar, onequarter ] }; - key <AE06> { [ 6, ampersand, threequarters, VoidSymbol ] }; - key <AE07> { [ 7, slash, braceleft, VoidSymbol ] }; - key <AE08> { [ 8, parenleft, bracketleft, VoidSymbol ] }; - key <AE09> { [ 9, parenright, bracketright, plusminus ] }; - key <AE10> { [ 0, equal, braceright, degree ] }; - key <AE11> { [ asterisk, question, backslash, questiondown ] }; - key <AE12> { [ minus, underscore, bar, VoidSymbol ] }; - - key <AD02> { [ w, W, VoidSymbol, VoidSymbol ] }; - key <AD03> { [ e, E, EuroSign, VoidSymbol ] }; - key <AD05> { [ t, T, trademark, VoidSymbol ] }; - key <AD07> { [ u, U, ucircumflex, Ucircumflex ] }; - key <AD08> { type[group1] = "FOUR_LEVEL_ALPHABETIC", - [ idotless, I, icircumflex, Icircumflex ] }; - key <AD09> { [ o, O, ocircumflex, Ocircumflex ] }; - key <AD10> { [ p, P, VoidSymbol, VoidSymbol ] }; - key <AD11> { [ gbreve, Gbreve ] }; - key <AD12> { [udiaeresis, Udiaeresis, asciitilde, dead_macron ] }; - - key <AC01> { [ a, A, acircumflex, Acircumflex ] }; - key <AC02> { [ s, S, section, VoidSymbol ] }; - key <AC03> { [ d, D, VoidSymbol, VoidSymbol ] }; - key <AC04> { [ f, F, ordfeminine, VoidSymbol ] }; - key <AC05> { [ g, G, VoidSymbol, VoidSymbol ] }; - key <AC06> { [ h, H, VoidSymbol, VoidSymbol ] }; - key <AC08> { [ k, K, VoidSymbol, VoidSymbol ] }; - key <AC09> { [ l, L, VoidSymbol, VoidSymbol ] }; - key <AC10> { [ scedilla, Scedilla, acute, dead_acute ] }; - key <AC11> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", - [ i, Iabovedot, apostrophe, dead_caron ] }; - key <TLDE> { [ quotedbl, eacute, less, degree ] }; - - key <BKSL> { [ comma, semicolon, grave, dead_grave ] }; - key <LSGT> { [ less, greater, bar, brokenbar ] }; - key <AB08> { [odiaeresis, Odiaeresis, multiply, VoidSymbol ] }; - key <AB09> { [ ccedilla, Ccedilla, periodcentered, division ] }; - key <AB10> { [ period, colon, dead_abovedot, dead_abovedot ] }; + key <AE01> { [ 1, exclam, greater, exclamdown ] }; + key <AE02> { [ 2, apostrophe, sterling, twosuperior ] }; + key <AE03> { [ 3,asciicircum, numbersign, threesuperior ] }; + key <AE04> { [ 4, plus, dollar, onequarter ] }; + key <AE06> { [ 6, ampersand, threequarters, VoidSymbol ] }; + key <AE07> { [ 7, slash, braceleft, VoidSymbol ] }; + key <AE08> { [ 8, parenleft, bracketleft, VoidSymbol ] }; + key <AE09> { [ 9, parenright, bracketright, plusminus ] }; + key <AE10> { [ 0, equal, braceright, degree ] }; + key <AE11> { [ asterisk, question, backslash, questiondown ] }; + key <AE12> { [ minus, underscore, bar, VoidSymbol ] }; + + key <AD02> { [ w, W, VoidSymbol, VoidSymbol ] }; + key <AD03> { [ e, E, EuroSign, VoidSymbol ] }; + key <AD05> { [ t, T, trademark, VoidSymbol ] }; + key <AD07> { [ u, U, ucircumflex, Ucircumflex ] }; + key <AD08> { type[group1] = "FOUR_LEVEL_ALPHABETIC", + [ idotless, I, icircumflex, Icircumflex ] }; + key <AD09> { [ o, O, ocircumflex, Ocircumflex ] }; + key <AD10> { [ p, P, VoidSymbol, VoidSymbol ] }; + key <AD11> { [ gbreve, Gbreve ] }; + key <AD12> { [udiaeresis, Udiaeresis, asciitilde, dead_macron ] }; + + key <AC01> { [ a, A, acircumflex, Acircumflex ] }; + key <AC02> { [ s, S, section, VoidSymbol ] }; + key <AC03> { [ d, D, VoidSymbol, VoidSymbol ] }; + key <AC04> { [ f, F, ordfeminine, VoidSymbol ] }; + key <AC05> { [ g, G, VoidSymbol, VoidSymbol ] }; + key <AC06> { [ h, H, VoidSymbol, VoidSymbol ] }; + key <AC08> { [ k, K, VoidSymbol, VoidSymbol ] }; + key <AC09> { [ l, L, VoidSymbol, VoidSymbol ] }; + key <AC10> { [ scedilla, Scedilla, acute, dead_acute ] }; + key <AC11> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", + [ i, Iabovedot, apostrophe, dead_caron ] }; + key <TLDE> { [ quotedbl, eacute, less, degree ] }; + + key <BKSL> { [ comma, semicolon, grave, dead_grave ] }; + key <LSGT> { [ less, greater, bar, brokenbar ] }; + key <AB08> { [odiaeresis, Odiaeresis, multiply, VoidSymbol ] }; + key <AB09> { [ ccedilla, Ccedilla,periodcentered, division ] }; + key <AB10> { [ period, colon, dead_abovedot, dead_abovedot ] }; include "kpdl(comma)" include "level3(ralt_switch)" }; -// Turkish F Layout +// Turkish F layout partial xkb_symbols "f" { @@ -66,64 +65,64 @@ xkb_symbols "f" { name[Group1]="Turkish (F)"; - key <AE01> { [ 1, exclam, onesuperior, exclamdown ] }; - key <AE02> { [ 2, quotedbl, twosuperior, VoidSymbol ] }; - key <AE03> { [ 3, asciicircum, numbersign, threesuperior ] }; - key <AE04> { [ 4, dollar, onequarter, VoidSymbol ] }; - key <AE06> { [ 6, ampersand, threequarters, VoidSymbol ] }; - key <AE07> { [ 7, apostrophe, braceleft, VoidSymbol ] }; - key <AE08> { [ 8, parenleft, bracketleft, VoidSymbol ] }; - key <AE09> { [ 9, parenright, bracketright, plusminus ] }; - key <AE10> { [ 0, equal, braceright, degree ] }; - key <AE11> { [ slash, question, backslash, questiondown ] }; - key <AE12> { [ minus, underscore, bar, VoidSymbol ] }; - - key <AD01> { [ f, F, at, VoidSymbol ] }; - key <AD02> { [ g, G, VoidSymbol, VoidSymbol ] }; - key <AD03> { [ gbreve, Gbreve, VoidSymbol, VoidSymbol ] }; - key <AD04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", - [ idotless, I, paragraph, VoidSymbol ] }; - key <AD05> { [ o, O, ocircumflex, Ocircumflex ] }; - key <AD06> { [ d, D, yen, VoidSymbol ] }; - key <AD07> { [ r, R, registered, VoidSymbol ] }; - key <AD08> { [ n, N, VoidSymbol, VoidSymbol ] }; - key <AD09> { [ h, H, degree, VoidSymbol ] }; - key <AD10> { [ p, P, sterling, VoidSymbol ] }; - key <AD11> { [ q, Q, dead_diaeresis, dead_abovering ] }; - key <AD12> { [ w, W, asciitilde, dead_breve ] }; - - key <AC01> { [ u, U, ucircumflex, Ucircumflex ] }; - key <AC02> { type[group1] = "FOUR_LEVEL_ALPHABETIC", - [ i, Iabovedot, icircumflex, Icircumflex ] }; - key <AC03> { [ e, E, EuroSign, VoidSymbol ] }; - key <AC04> { [ a, A, acircumflex, Acircumflex ] }; - key <AC05> { [udiaeresis, Udiaeresis, ucircumflex, Ucircumflex ] }; - key <AC06> { [ t, T, trademark, VoidSymbol ] }; - key <AC07> { [ k, K, VoidSymbol, VoidSymbol ] }; - key <AC08> { [ m, M, mu, VoidSymbol ] }; - key <AC09> { [ l, L, VoidSymbol, VoidSymbol ] }; - key <AC10> { [ y, Y, acute, dead_acute ] }; - key <AC11> { [ scedilla, Scedilla, numbersign, dead_caron ] }; - key <TLDE> { [ plus, asterisk, notsign, plusminus ] }; - - key <BKSL> { [ x, X, grave, dead_grave ] }; - key <AB01> { [ j, J, guillemotleft, VoidSymbol ] }; - key <AB02> { [odiaeresis, Odiaeresis, guillemotright, VoidSymbol ] }; - key <AB03> { [ v, V, leftdoublequotemark, VoidSymbol ] }; - key <AB04> { [ c, C, cent, copyright ] }; - key <AB05> { [ ccedilla, Ccedilla, rightdoublequotemark, VoidSymbol] }; - key <AB06> { [ z, Z, VoidSymbol, VoidSymbol ] }; - key <AB07> { [ s, S, section, VoidSymbol ] }; - key <AB08> { [ b, B, multiply, nobreakspace ] }; - key <AB09> { [ period, colon, division, dead_abovedot] }; - key <AB10> { [ comma, semicolon, periodcentered, VoidSymbol ] }; - key <LSGT> { [ less, greater, bar, brokenbar ] }; + key <AE01> { [ 1, exclam, onesuperior, exclamdown ] }; + key <AE02> { [ 2, quotedbl, twosuperior, VoidSymbol ] }; + key <AE03> { [ 3,asciicircum, numbersign, threesuperior ] }; + key <AE04> { [ 4, dollar, onequarter, VoidSymbol ] }; + key <AE06> { [ 6, ampersand, threequarters, VoidSymbol ] }; + key <AE07> { [ 7, apostrophe, braceleft, VoidSymbol ] }; + key <AE08> { [ 8, parenleft, bracketleft, VoidSymbol ] }; + key <AE09> { [ 9, parenright, bracketright, plusminus ] }; + key <AE10> { [ 0, equal, braceright, degree ] }; + key <AE11> { [ slash, question, backslash, questiondown ] }; + key <AE12> { [ minus, underscore, bar, VoidSymbol ] }; + + key <AD01> { [ f, F, at, VoidSymbol ] }; + key <AD02> { [ g, G, VoidSymbol, VoidSymbol ] }; + key <AD03> { [ gbreve, Gbreve, VoidSymbol, VoidSymbol ] }; + key <AD04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", + [ idotless, I, paragraph, VoidSymbol ] }; + key <AD05> { [ o, O, ocircumflex, Ocircumflex ] }; + key <AD06> { [ d, D, yen, VoidSymbol ] }; + key <AD07> { [ r, R, registered, VoidSymbol ] }; + key <AD08> { [ n, N, VoidSymbol, VoidSymbol ] }; + key <AD09> { [ h, H, degree, VoidSymbol ] }; + key <AD10> { [ p, P, sterling, VoidSymbol ] }; + key <AD11> { [ q, Q,dead_diaeresis,dead_abovering ] }; + key <AD12> { [ w, W, asciitilde, dead_breve ] }; + + key <AC01> { [ u, U, ucircumflex, Ucircumflex ] }; + key <AC02> { type[group1] = "FOUR_LEVEL_ALPHABETIC", + [ i, Iabovedot, icircumflex, Icircumflex ] }; + key <AC03> { [ e, E, EuroSign, VoidSymbol ] }; + key <AC04> { [ a, A, acircumflex, Acircumflex ] }; + key <AC05> { [udiaeresis, Udiaeresis, ucircumflex, Ucircumflex ] }; + key <AC06> { [ t, T, trademark, VoidSymbol ] }; + key <AC07> { [ k, K, VoidSymbol, VoidSymbol ] }; + key <AC08> { [ m, M, mu, VoidSymbol ] }; + key <AC09> { [ l, L, VoidSymbol, VoidSymbol ] }; + key <AC10> { [ y, Y, acute, dead_acute ] }; + key <AC11> { [ scedilla, Scedilla, numbersign, dead_caron ] }; + key <TLDE> { [ plus, asterisk, notsign, plusminus ] }; + + key <BKSL> { [ x, X, grave, dead_grave ] }; + key <AB01> { [ j, J, guillemotleft, VoidSymbol ] }; + key <AB02> { [odiaeresis, Odiaeresis,guillemotright, VoidSymbol ] }; + key <AB03> { [ v, V, leftdoublequotemark, VoidSymbol ] }; + key <AB04> { [ c, C, cent, copyright ] }; + key <AB05> { [ ccedilla, Ccedilla,rightdoublequotemark, VoidSymbol ] }; + key <AB06> { [ z, Z, VoidSymbol, VoidSymbol ] }; + key <AB07> { [ s, S, section, VoidSymbol ] }; + key <AB08> { [ b, B, multiply, nobreakspace ] }; + key <AB09> { [ period, colon, division, dead_abovedot ] }; + key <AB10> { [ comma, semicolon,periodcentered, VoidSymbol ] }; + key <LSGT> { [ less, greater, bar, brokenbar ] }; include "kpdl(comma)" include "level3(ralt_switch)" }; -// Turkish Alt-Q Layout +// Turkish Alt-Q layout partial xkb_symbols "alt" { @@ -135,19 +134,19 @@ xkb_symbols "alt" { key <AE08> { [ 8, asterisk, leftt, topt ] }; key <AE09> { [ 9, parenleft, rightt, bott ] }; key <AE10> { [ 0, parenright, lowrightcorner, uprightcorner ] }; - key <AE11> { [ minus, underscore, horizlinescan5, vertbar ] }; - key <AE12> { [ equal, plus, crossinglines ] }; + key <AE11> { [ minus, underscore, horizlinescan5, vertbar ] }; + key <AE12> { [ equal, plus, crossinglines ] }; - key <AD03> { [ e, E, EuroSign, VoidSymbol ] }; -// key <AD05> { [ t, T, trademark, VoidSymbol > - key <AD07> { [ u, U, udiaeresis, Udiaeresis ] }; - key <AD08> { [ i, I, idotless, Iabovedot ] }; - key <AD09> { [ o, O, odiaeresis, Odiaeresis ] }; - key <AC01> { [ a, A, acircumflex, Acircumflex ] }; - key <AC02> { [ s, S, scedilla, Scedilla ] }; - key <AC05> { [ g, G, gbreve, Gbreve ] }; + key <AD03> { [ e, E, EuroSign, VoidSymbol ] }; +// key <AD05> { [ t, T, trademark, VoidSymbol > + key <AD07> { [ u, U, udiaeresis, Udiaeresis ] }; + key <AD08> { [ i, I, idotless, Iabovedot ] }; + key <AD09> { [ o, O, odiaeresis, Odiaeresis ] }; + key <AC01> { [ a, A, acircumflex, Acircumflex ] }; + key <AC02> { [ s, S, scedilla, Scedilla ] }; + key <AC05> { [ g, G, gbreve, Gbreve ] }; - key <AB03> { [ c, C, ccedilla, Ccedilla ] }; + key <AB03> { [ c, C, ccedilla, Ccedilla ] }; include "level3(ralt_switch)" }; @@ -155,26 +154,18 @@ xkb_symbols "alt" { partial alphanumeric_keys xkb_symbols "Sundeadkeys" { - - // For naming consistency include "tr(basic)" - }; partial alphanumeric_keys xkb_symbols "sundeadkeys" { - - // For naming consistency include "tr(Sundeadkeys)" - name[Group1]="Turkish (Sun dead keys)"; }; -// Kurdish Q Layout +// Kurdish Q layout // Erdal Ronahi <erdal.ronahi@gmail.com>, 2006 // http://ferheng.org -// http://www.pckurd.net - partial xkb_symbols "ku" { @@ -182,14 +173,14 @@ xkb_symbols "ku" { name[Group1]="Kurdish (Turkey, Latin Q)"; - key <AD08> { [ i, I, idotless, I ] }; - key <AD11> { [ x, X, gbreve, Gbreve ] }; - key <AD12> { [ucircumflex, Ucircumflex, asciitilde, dead_macron] }; - key <AC11> { [icircumflex, Icircumflex, apostrophe, dead_caron ] }; - key <AB08> { [ecircumflex, Ecircumflex, odiaeresis, Odiaeresis ] }; + key <AD08> { [ i, I, idotless, I ] }; + key <AD11> { [ x, X, gbreve, Gbreve ] }; + key <AD12> { [ucircumflex, Ucircumflex, asciitilde, dead_macron ] }; + key <AC11> { [icircumflex, Icircumflex, apostrophe, dead_caron ] }; + key <AB08> { [ecircumflex, Ecircumflex, odiaeresis, Odiaeresis ] }; }; -// Kurdish F Layout +// Kurdish F layout partial xkb_symbols "ku_f" { @@ -197,18 +188,17 @@ xkb_symbols "ku_f" { name[Group1]="Kurdish (Turkey, F)"; - key <AD03> { [ x, X, gbreve, Gbreve] }; - key <AD04> { [ i, I, paragraph, VoidSymbol ] }; - key <AD05> { [ o, O, ocircumflex, Ocircumflex ] }; - - key <AC01> { [ ucircumflex, Ucircumflex, udiaeresis, Udiaeresis ] }; - key <AC02> { [ icircumflex, Icircumflex, i, Iabovedot ] }; - key <AC05> { [ u, U, udiaeresis, Udiaeresis ] }; - key <AB02> { [ecircumflex, Ecircumflex, odiaeresis, Odiaeresis ] }; + key <AD03> { [ x, X, gbreve, Gbreve ] }; + key <AD04> { [ i, I, paragraph, VoidSymbol ] }; + key <AD05> { [ o, O, ocircumflex, Ocircumflex ] }; + key <AC01> { [ucircumflex, Ucircumflex, udiaeresis, Udiaeresis ] }; + key <AC02> { [icircumflex, Icircumflex, i, Iabovedot ] }; + key <AC05> { [ u, U, udiaeresis, Udiaeresis ] }; + key <AB02> { [ecircumflex, Ecircumflex, odiaeresis, Odiaeresis ] }; }; -// Kurdish Alt-Q Layout +// Kurdish Alt-Q layout partial xkb_symbols "ku_alt" { @@ -216,56 +206,61 @@ xkb_symbols "ku_alt" { name[Group1]="Kurdish (Turkey, Latin Alt-Q)"; - key <AD03> { [ e, E, ecircumflex, Ecircumflex ] }; - key <AD07> { [ u, U, ucircumflex, Ucircumflex ] }; - key <AD08> { [ i, I, icircumflex, Icircumflex ] }; - key <AD09> { [ o, O, odiaeresis, Odiaeresis ] }; + key <AD03> { [ e, E, ecircumflex, Ecircumflex ] }; + key <AD07> { [ u, U, ucircumflex, Ucircumflex ] }; + key <AD08> { [ i, I, icircumflex, Icircumflex ] }; + key <AD09> { [ o, O, odiaeresis, Odiaeresis ] }; }; -// Turkish international Q Layout +// Turkish international Q layout // Alexis Pellicier <alexis.pellicier@nds.k12.tr>, 2007 partial xkb_symbols "intl" { + include "latin" name[Group1]="Turkish (international with dead keys)"; - key <AE01> { type[group1] = "FOUR_LEVEL", [ 1, exclam, onesuperior, exclamdown ] }; - key <AE02> { type[group1] = "FOUR_LEVEL", [ 2, apostrophe, sterling, twosuperior ] }; - key <AE03> { type[group1] = "FOUR_LEVEL", [ 3, dead_circumflex, numbersign, threesuperior ] }; - key <AE04> { type[group1] = "FOUR_LEVEL", [ 4, plus, dollar, onequarter ] }; - key <AE06> { type[group1] = "FOUR_LEVEL", [ 6, ampersand, threequarters, VoidSymbol ] }; - key <AE07> { type[group1] = "FOUR_LEVEL", [ 7, slash, braceleft, VoidSymbol ] }; - key <AE08> { type[group1] = "FOUR_LEVEL", [ 8, parenleft, bracketleft, VoidSymbol ] }; - key <AE09> { type[group1] = "FOUR_LEVEL", [ 9, parenright, bracketright, plusminus ] }; - key <AE10> { type[group1] = "FOUR_LEVEL", [ 0, equal, braceright, degree ] }; - key <AE11> { type[group1] = "FOUR_LEVEL", [ asterisk, question, backslash, questiondown ] }; - key <AE12> { type[group1] = "FOUR_LEVEL", [ minus, underscore, division, VoidSymbol ] }; - key <AD02> { [ w, W, VoidSymbol, VoidSymbol ] }; - key <AD03> { [ e, E, EuroSign, cent ] }; - key <AD05> { [ t, T, trademark, VoidSymbol ] }; - key <AD07> { [ u, U, ucircumflex, Ucircumflex ] }; - key <AD08> { [ idotless, I, icircumflex, Icircumflex ] }; - key <AD09> { [ o, O, ocircumflex, Ocircumflex ] }; - key <AD10> { [ p, P, VoidSymbol, VoidSymbol ] }; - key <AD11> { [ gbreve, Gbreve, dead_diaeresis ] }; - key <AD12> { [udiaeresis, Udiaeresis, dead_tilde, dead_macron ] }; - key <AC01> { [ a, A, acircumflex, Acircumflex ] }; - key <AC02> { [ s, S, section, VoidSymbol ] }; - key <AC03> { [ d, D, VoidSymbol, VoidSymbol ] }; - key <AC04> { [ f, F, ordfeminine, VoidSymbol ] }; - key <AC05> { [ g, G, VoidSymbol, VoidSymbol ] }; - key <AC06> { [ h, H, VoidSymbol, VoidSymbol ] }; - key <AC08> { [ k, K, VoidSymbol, VoidSymbol ] }; - key <AC09> { [ l, L, VoidSymbol, VoidSymbol ] }; - key <AC10> { [ scedilla, Scedilla, dead_acute, dead_acute ] }; - key <AC11> { [ i, Iabovedot, apostrophe, dead_caron ] }; - key <TLDE> { type[group1] = "FOUR_LEVEL",[ quotedbl, eacute, plusminus, degree ] }; - key <BKSL> { type[group1] = "FOUR_LEVEL",[ comma, semicolon, dead_grave, dead_grave ] }; - key <LSGT> { type[group1] = "FOUR_LEVEL",[ less, greater, bar, brokenbar ] }; - key <AB08> { [odiaeresis, Odiaeresis, multiply, VoidSymbol ] }; - key <AB09> { [ ccedilla, Ccedilla, periodcentered, division ] }; - key <AB10> { type[group1] = "FOUR_LEVEL",[ period, colon, dead_abovedot, dead_abovedot ] }; + key <AE01> { type[group1] = "FOUR_LEVEL", [ 1, exclam, onesuperior, exclamdown ] }; + key <AE02> { type[group1] = "FOUR_LEVEL", [ 2, apostrophe, sterling, twosuperior ] }; + key <AE03> { type[group1] = "FOUR_LEVEL", [ 3, dead_circumflex, numbersign, threesuperior ] }; + key <AE04> { type[group1] = "FOUR_LEVEL", [ 4, plus, dollar, onequarter ] }; + key <AE06> { type[group1] = "FOUR_LEVEL", [ 6, ampersand, threequarters, VoidSymbol ] }; + key <AE07> { type[group1] = "FOUR_LEVEL", [ 7, slash, braceleft, VoidSymbol ] }; + key <AE08> { type[group1] = "FOUR_LEVEL", [ 8, parenleft, bracketleft, VoidSymbol ] }; + key <AE09> { type[group1] = "FOUR_LEVEL", [ 9, parenright, bracketright, plusminus ] }; + key <AE10> { type[group1] = "FOUR_LEVEL", [ 0, equal, braceright, degree ] }; + key <AE11> { type[group1] = "FOUR_LEVEL", [ asterisk, question, backslash, questiondown ] }; + key <AE12> { type[group1] = "FOUR_LEVEL", [ minus, underscore, division, VoidSymbol ] }; + + key <AD02> { [ w, W, VoidSymbol, VoidSymbol ] }; + key <AD03> { [ e, E, EuroSign, cent ] }; + key <AD05> { [ t, T, trademark, VoidSymbol ] }; + key <AD07> { [ u, U, ucircumflex, Ucircumflex ] }; + key <AD08> { [ idotless, I, icircumflex, Icircumflex ] }; + key <AD09> { [ o, O, ocircumflex, Ocircumflex ] }; + key <AD10> { [ p, P, VoidSymbol, VoidSymbol ] }; + key <AD11> { [ gbreve, Gbreve, dead_diaeresis ] }; + key <AD12> { [udiaeresis, Udiaeresis, dead_tilde, dead_macron ] }; + + key <AC01> { [ a, A, acircumflex, Acircumflex ] }; + key <AC02> { [ s, S, section, VoidSymbol ] }; + key <AC03> { [ d, D, VoidSymbol, VoidSymbol ] }; + key <AC04> { [ f, F, ordfeminine, VoidSymbol ] }; + key <AC05> { [ g, G, VoidSymbol, VoidSymbol ] }; + key <AC06> { [ h, H, VoidSymbol, VoidSymbol ] }; + key <AC08> { [ k, K, VoidSymbol, VoidSymbol ] }; + key <AC09> { [ l, L, VoidSymbol, VoidSymbol ] }; + key <AC10> { [ scedilla, Scedilla, dead_acute, dead_acute ] }; + key <AC11> { [ i, Iabovedot, apostrophe, dead_caron ] }; + + key <TLDE> { type[group1] = "FOUR_LEVEL", [ quotedbl, eacute, plusminus, degree ] }; + key <BKSL> { type[group1] = "FOUR_LEVEL", [ comma, semicolon, dead_grave, dead_grave ] }; + key <LSGT> { type[group1] = "FOUR_LEVEL", [ less, greater, bar, brokenbar ] }; + + key <AB08> { [odiaeresis, Odiaeresis, multiply, VoidSymbol ] }; + key <AB09> { [ ccedilla, Ccedilla, periodcentered, division ] }; + key <AB10> { type[group1] = "FOUR_LEVEL", [ period, colon, dead_abovedot, dead_abovedot ] }; include "nbsp(level3)" include "level3(ralt_switch)" @@ -274,36 +269,36 @@ xkb_symbols "intl" { partial alphanumeric_keys xkb_symbols "olpc" { - name[Group1]= "Turkish"; - include "tr(intl)" - - key <AE01> { [ 1, exclam, VoidSymbol, VoidSymbol ] }; - key <AE06> { [ 6, ampersand, VoidSymbol, VoidSymbol ] }; - key <AE12> { type[group1] = "FOUR_LEVEL", [ minus, underscore, bar, VoidSymbol ] }; + include "tr(intl)" - key <AB03> { [ c, C, leftdoublequotemark, VoidSymbol ] }; - key <AB04> { [ v, V, rightdoublequotemark, VoidSymbol ] }; - key <AB05> { [ b, B, VoidSymbol, VoidSymbol ] }; - key <AB08> { [odiaeresis, Odiaeresis, VoidSymbol, VoidSymbol ] }; + name[Group1]= "Turkish"; - key <AB09> { [ ccedilla, Ccedilla, multiply, VoidSymbol ] }; - key <AB10> { [ period, colon, division, dead_abovedot ] }; + key <AE01> { [ 1, exclam, VoidSymbol, VoidSymbol ] }; + key <AE06> { [ 6, ampersand, VoidSymbol, VoidSymbol ] }; + key <AE12> { type[group1] = "FOUR_LEVEL", + [ minus, underscore, bar, VoidSymbol ] }; - key <I219> { [ less, greater, VoidSymbol, VoidSymbol ] }; + key <AB03> { [ c, C, leftdoublequotemark, VoidSymbol ] }; + key <AB04> { [ v, V, rightdoublequotemark, VoidSymbol ] }; + key <AB05> { [ b, B, VoidSymbol, VoidSymbol ] }; + key <AB08> { [odiaeresis, Odiaeresis, VoidSymbol, VoidSymbol ] }; + key <AB09> { [ ccedilla, Ccedilla, multiply, VoidSymbol ] }; + key <AB10> { [ period, colon, division, dead_abovedot ] }; + key <I219> { [ less, greater, VoidSymbol, VoidSymbol ] }; }; // Crimean Tatar (Crimean Turkish) layouts. // First released (by Ubuntu): 2009-02-24. -// These layouts are not yet standard. In particular, the mapping of -// letter 'x' might change in the future. This letter is not used in the -// current official alphabet, but is included in the layouts for foreign words -// and shortcuts. +// These layouts are not yet standard. In particular, the mapping of +// the letter 'x' might change in the future. This letter is not used +// in the current official alphabet, but is included in the layouts for +// foreign words and for shortcuts. // Reşat SABIQ <tilde.birlik @ gmail . com>, 2009 // Özgür Qarahan <qarahan @ gmail . com>, 2009 -// Crimean Tatar (Crimean Turkish) Q Layout +// Crimean Tatar (Crimean Turkish) Q layout partial xkb_symbols "crh" { @@ -311,16 +306,16 @@ xkb_symbols "crh" { name[Group1]="Crimean Tatar (Turkish Q)"; - key <AE11> { [ x, X, asterisk, question ] }; + key <AE11> { [ x, X, asterisk, question ] }; - key <AC04> { [ f, F, iacute, Iacute ] }; - key <AC07> { [ j, J, ibreve, Ibreve ] }; - key <TLDE> { [ quotedbl, backslash, less, degree ] }; + key <AC04> { [ f, F, iacute, Iacute ] }; + key <AC07> { [ j, J, ibreve, Ibreve ] }; + key <TLDE> { [ quotedbl, backslash, less, degree ] }; - key <AB02> { [ ntilde, Ntilde, guillemotright, greater ] }; + key <AB02> { [ ntilde, Ntilde, guillemotright, greater ] }; }; -// Crimean Tatar (Crimean Turkish) F Layout +// Crimean Tatar (Crimean Turkish) F layout partial xkb_symbols "crh_f" { @@ -328,18 +323,18 @@ xkb_symbols "crh_f" { name[Group1]="Crimean Tatar (Turkish F)"; - key <AE11> { [ x, X, slash, question ] }; + key <AE11> { [ x, X, slash, question ] }; - key <AD04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", - [ idotless, I, iacute, Iacute ] }; + key <AD04> { type[group1] = "FOUR_LEVEL_SEMIALPHABETIC", + [ idotless, I, iacute, Iacute ] }; - key <AC07> { [ k, K, ibreve, Ibreve ] }; - key <TLDE> { [ plus, asterisk, backslash, plusminus ] }; + key <AC07> { [ k, K, ibreve, Ibreve ] }; + key <TLDE> { [ plus, asterisk, backslash, plusminus ] }; - key <BKSL> { [ ntilde, Ntilde, grave, dead_grave ] }; + key <BKSL> { [ ntilde, Ntilde, grave, dead_grave ] }; }; -// Crimean Tatar (Crimean Turkish) Alt-Q Layout +// Crimean Tatar (Crimean Turkish) Alt-Q layout partial xkb_symbols "crh_alt" { @@ -347,10 +342,10 @@ xkb_symbols "crh_alt" { name[Group1]="Crimean Tatar (Turkish Alt-Q)"; - key <AC04> { [ f, F, iacute, Iacute ] }; - key <AC07> { [ j, J, ibreve, Ibreve ] }; + key <AC04> { [ f, F, iacute, Iacute ] }; + key <AC07> { [ j, J, ibreve, Ibreve ] }; - key <AB06> { [ n, N, ntilde, Ntilde ] }; + key <AB06> { [ n, N, ntilde, Ntilde ] }; }; // EXTRAS: diff --git a/xorg-server/xkeyboard-config/symbols/ua b/xorg-server/xkeyboard-config/symbols/ua index 81d696ec4..8852b9243 100644 --- a/xorg-server/xkeyboard-config/symbols/ua +++ b/xorg-server/xkeyboard-config/symbols/ua @@ -1,44 +1,45 @@ -// based on -// ukrainian standard keyboard +// Keyboard layouts for the Ukraine. // AEN <aen@logic.ru> & Leon Kanter <leon@geon.donetsk.ua> -// Last Changes 2007/10/03 by Andriy Rysin <arysin@yahoo.com> +// last changes 2007/10/03 by Andriy Rysin <arysin@yahoo.com> -// Unicode - 3d level added with some Unicode symbols (typographic quotes, m-dash, n-dash etc), -// some often used cyrillics from other slavic languages and some ASCII symbols used often (slash, brackets...) +// The legacy WinKeys layout extended on the third and fourth level with +// some Unicode symbols (typographic quotes, m-dash, n-dash, ...), some +// often-used Cyrillics from other Slavic languages, and some often-used +// ASCII symbols (slash, brackets, ...). default partial alphanumeric_keys xkb_symbols "unicode" { - include "ua(winkeys)" + include "ua(winkeys)" name[Group1]= "Ukrainian"; - key <TLDE> { [ U2019, apostrophe, U0301, asciitilde ] }; // Apostrophe and Stress symbol - key <AE01> { [ 1, exclam, onesuperior ] }; - key <AE02> { [ 2, quotedbl, twosuperior ] }; - key <AE03> { [ 3, numerosign, U00A7, U20B4 ] }; // Paragraph and Hryvnia sign - key <AE04> { [ 4, semicolon, dollar, EuroSign ] }; - key <AE05> { [ 5, percent, degree ] }; - key <AE06> { [ 6, colon, less ] }; - key <AE07> { [ 7, question, greater ] }; - key <AE08> { [ 8, asterisk, enfilledcircbullet ] }; - key <AE09> { [ 9, parenleft, bracketleft, braceleft ] }; - key <AE10> { [ 0, parenright, bracketright, braceright] }; - key <AE11> { [ minus, underscore, emdash, endash ] }; - key <AE12> { [ equal, plus, notequal, plusminus ] }; - - key <AD03> { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ]}; - key <AD04> { [ Cyrillic_ka, Cyrillic_KA, registered ] }; // Registered tm - key <AD05> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] }; - key <AD12> { [ Ukrainian_yi,Ukrainian_YI, Cyrillic_hardsign, Cyrillic_HARDSIGN ] }; - key <AC02> { [ Ukrainian_i, Ukrainian_I, Cyrillic_yeru, Cyrillic_YERU ] }; - key <AC11> { [ Ukrainian_ie,Ukrainian_IE, Cyrillic_e, Cyrillic_E ] }; - - key <BKSL> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN, backslash, bar ] }; - - key <AB03> { [ Cyrillic_es, Cyrillic_ES, copyright ] }; - key <AB06> { [ Cyrillic_te, Cyrillic_TE, trademark ] }; - key <AB08> { [ Cyrillic_be, Cyrillic_BE, guillemotleft, doublelowquotemark ] }; - key <AB09> { [ Cyrillic_yu, Cyrillic_YU, guillemotright, leftdoublequotemark ] }; - key <AB10> { [ period, comma, slash, ellipsis ] }; + key <TLDE> { [ U2019, apostrophe, U0301, asciitilde ] }; // Apostrophe and Stress symbol + key <AE01> { [ 1, exclam, onesuperior ] }; + key <AE02> { [ 2, quotedbl, twosuperior ] }; + key <AE03> { [ 3, numerosign, U00A7, U20B4 ] }; // Paragraph and Hryvnia sign + key <AE04> { [ 4, semicolon, dollar, EuroSign ] }; + key <AE05> { [ 5, percent, degree ] }; + key <AE06> { [ 6, colon, less ] }; + key <AE07> { [ 7, question, greater ] }; + key <AE08> { [ 8, asterisk, enfilledcircbullet ] }; + key <AE09> { [ 9, parenleft, bracketleft, braceleft ] }; + key <AE10> { [ 0, parenright, bracketright, braceright ] }; + key <AE11> { [ minus, underscore, emdash, endash ] }; + key <AE12> { [ equal, plus, notequal, plusminus ] }; + + key <AD03> { [ Cyrillic_u, Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ] }; + key <AD04> { [ Cyrillic_ka, Cyrillic_KA, registered ] }; // Registered tm + key <AD05> { [ Cyrillic_ie, Cyrillic_IE, Cyrillic_io, Cyrillic_IO ] }; + key <AD12> { [ Ukrainian_yi, Ukrainian_YI, Cyrillic_hardsign,Cyrillic_HARDSIGN ] }; + key <AC02> { [ Ukrainian_i, Ukrainian_I, Cyrillic_yeru, Cyrillic_YERU ] }; + key <AC11> { [ Ukrainian_ie, Ukrainian_IE, Cyrillic_e, Cyrillic_E ] }; + + key <BKSL> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN, backslash, bar ] }; + + key <AB03> { [ Cyrillic_es, Cyrillic_ES, copyright ] }; + key <AB06> { [ Cyrillic_te, Cyrillic_TE, trademark ] }; + key <AB08> { [ Cyrillic_be, Cyrillic_BE, guillemotleft, doublelowquotemark ] }; + key <AB09> { [ Cyrillic_yu, Cyrillic_YU, guillemotright, leftdoublequotemark ] }; + key <AB10> { [ period, comma, slash, ellipsis ] }; include "level3(ralt_switch)" }; @@ -48,262 +49,262 @@ xkb_symbols "legacy" { name[Group1]= "Ukrainian (legacy)"; - key <TLDE> { [ apostrophe, asciitilde ] }; - key <AE01> { [ 1, exclam ] }; - key <AE02> { [ 2, quotedbl ] }; - key <AE03> { [ 3, numbersign ] }; - key <AE04> { [ 4, asterisk ] }; - key <AE05> { [ 5, colon ] }; - key <AE06> { [ 6, comma ] }; - key <AE07> { [ 7, period ] }; - key <AE08> { [ 8, semicolon ] }; - key <AE09> { [ 9, parenleft ] }; - key <AE10> { [ 0, parenright ] }; - key <AE11> { [ minus, underscore ] }; - key <AE12> { [ equal, plus ] }; - - key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; - key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] }; - key <AD03> { [ Cyrillic_u, Cyrillic_U ] }; - key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] }; - key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] }; - key <AD06> { [ Cyrillic_en, Cyrillic_EN ] }; - key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] }; - key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] }; - key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; - key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] }; - key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] }; - key <AD12> { [ Ukrainian_yi, Ukrainian_YI ] }; - key <BKSL> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; - - key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] }; - key <AC02> { [ Ukrainian_i, Ukrainian_I ] }; - key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] }; - key <AC04> { [ Cyrillic_a, Cyrillic_A ] }; - key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] }; - key <AC06> { [ Cyrillic_er, Cyrillic_ER ] }; - key <AC07> { [ Cyrillic_o, Cyrillic_O ] }; - key <AC08> { [ Cyrillic_el, Cyrillic_EL ] }; - key <AC09> { [ Cyrillic_de, Cyrillic_DE ] }; - key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] }; - key <AC11> { [ Ukrainian_ie, Ukrainian_IE ] }; - - key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] }; - key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] }; - key <AB03> { [ Cyrillic_es, Cyrillic_ES ] }; - key <AB04> { [ Cyrillic_em, Cyrillic_EM ] }; - key <AB06> { [ Cyrillic_te, Cyrillic_TE ] }; - key <AB05> { [ Cyrillic_i, Cyrillic_I ] }; - key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN ] }; - key <AB08> { [ Cyrillic_be, Cyrillic_BE ] }; - key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] }; - key <AB10> { [ slash, question ] }; - - key <LSGT> { [ slash, bar ] }; + key <TLDE> { [ apostrophe, asciitilde ] }; + key <AE01> { [ 1, exclam ] }; + key <AE02> { [ 2, quotedbl ] }; + key <AE03> { [ 3, numbersign ] }; + key <AE04> { [ 4, asterisk ] }; + key <AE05> { [ 5, colon ] }; + key <AE06> { [ 6, comma ] }; + key <AE07> { [ 7, period ] }; + key <AE08> { [ 8, semicolon ] }; + key <AE09> { [ 9, parenleft ] }; + key <AE10> { [ 0, parenright ] }; + key <AE11> { [ minus, underscore ] }; + key <AE12> { [ equal, plus ] }; + + key <AD01> { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; + key <AD02> { [ Cyrillic_tse, Cyrillic_TSE ] }; + key <AD03> { [ Cyrillic_u, Cyrillic_U ] }; + key <AD04> { [ Cyrillic_ka, Cyrillic_KA ] }; + key <AD05> { [ Cyrillic_ie, Cyrillic_IE ] }; + key <AD06> { [ Cyrillic_en, Cyrillic_EN ] }; + key <AD07> { [ Cyrillic_ghe, Cyrillic_GHE ] }; + key <AD08> { [ Cyrillic_sha, Cyrillic_SHA ] }; + key <AD09> { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; + key <AD10> { [ Cyrillic_ze, Cyrillic_ZE ] }; + key <AD11> { [ Cyrillic_ha, Cyrillic_HA ] }; + key <AD12> { [ Ukrainian_yi, Ukrainian_YI ] }; + key <BKSL> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; + + key <AC01> { [ Cyrillic_ef, Cyrillic_EF ] }; + key <AC02> { [ Ukrainian_i, Ukrainian_I ] }; + key <AC03> { [ Cyrillic_ve, Cyrillic_VE ] }; + key <AC04> { [ Cyrillic_a, Cyrillic_A ] }; + key <AC05> { [ Cyrillic_pe, Cyrillic_PE ] }; + key <AC06> { [ Cyrillic_er, Cyrillic_ER ] }; + key <AC07> { [ Cyrillic_o, Cyrillic_O ] }; + key <AC08> { [ Cyrillic_el, Cyrillic_EL ] }; + key <AC09> { [ Cyrillic_de, Cyrillic_DE ] }; + key <AC10> { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key <AC11> { [ Ukrainian_ie, Ukrainian_IE ] }; + + key <AB01> { [ Cyrillic_ya, Cyrillic_YA ] }; + key <AB02> { [ Cyrillic_che, Cyrillic_CHE ] }; + key <AB03> { [ Cyrillic_es, Cyrillic_ES ] }; + key <AB04> { [ Cyrillic_em, Cyrillic_EM ] }; + key <AB06> { [ Cyrillic_te, Cyrillic_TE ] }; + key <AB05> { [ Cyrillic_i, Cyrillic_I ] }; + key <AB07> {[Cyrillic_softsign,Cyrillic_SOFTSIGN ] }; + key <AB08> { [ Cyrillic_be, Cyrillic_BE ] }; + key <AB09> { [ Cyrillic_yu, Cyrillic_YU ] }; + key <AB10> { [ slash, question ] }; + + key <LSGT> { [ slash, bar ] }; }; partial alphanumeric_keys xkb_symbols "winkeys" { - include "ua(legacy)" + include "ua(legacy)" name[Group1]= "Ukrainian (WinKeys)"; - key <AE03> { [ 3, numerosign ] }; - key <AE04> { [ 4, semicolon ] }; - key <AE05> { [ 5, percent ] }; - key <AE06> { [ 6, colon ] }; - key <AE07> { [ 7, question ] }; - key <AE08> { [ 8, asterisk ] }; - key <AB10> { [ period, comma ] }; + key <AE03> { [ 3, numerosign ] }; + key <AE04> { [ 4, semicolon ] }; + key <AE05> { [ 5, percent ] }; + key <AE06> { [ 6, colon ] }; + key <AE07> { [ 7, question ] }; + key <AE08> { [ 8, asterisk ] }; + key <AB10> { [ period, comma ] }; }; partial alphanumeric_keys xkb_symbols "typewriter" { - include "ua(legacy)" + include "ua(legacy)" name[Group1]= "Ukrainian (typewriter)"; - key <TLDE> { [ apostrophe, quotedbl ] }; - key <AE01> { [ exclam, 1 ] }; - key <AE02> { [ numerosign, 2 ] }; - key <AE03> { [ slash, 3 ] }; - key <AE04> { [ semicolon, 4 ] }; - key <AE05> { [ colon, 5 ] }; - key <AE06> { [ comma, 6 ] }; - key <AE07> { [ period, 7 ] }; - key <AE08> { [ underscore, 8 ] }; - key <AE09> { [ question, 9 ] }; - key <AE10> { [ percent, 0 ] }; - - key <AD12> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; + key <TLDE> { [ apostrophe, quotedbl ] }; + key <AE01> { [ exclam, 1 ] }; + key <AE02> { [ numerosign, 2 ] }; + key <AE03> { [ slash, 3 ] }; + key <AE04> { [ semicolon, 4 ] }; + key <AE05> { [ colon, 5 ] }; + key <AE06> { [ comma, 6 ] }; + key <AE07> { [ period, 7 ] }; + key <AE08> { [ underscore, 8 ] }; + key <AE09> { [ question, 9 ] }; + key <AE10> { [ percent, 0 ] }; - key <AC02> { [ Cyrillic_i, Cyrillic_I ] }; + key <AD12> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; - key <AB05> { [ Ukrainian_i, Ukrainian_I ] }; + key <AC02> { [ Cyrillic_i, Cyrillic_I ] }; - key <AB10> { [ Ukrainian_yi, Ukrainian_YI ] }; + key <AB05> { [ Ukrainian_i, Ukrainian_I ] }; + key <AB10> { [ Ukrainian_yi, Ukrainian_YI ] }; - key <BKSL> { [ parenleft, parenright ] }; + key <BKSL> { [ parenleft, parenright ] }; }; partial alphanumeric_keys xkb_symbols "phonetic" { - include "ua(legacy)" + include "ua(legacy)" name[Group1]= "Ukrainian (phonetic)"; - key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] }; - key <LatW> { [ Cyrillic_ve, Cyrillic_VE ] }; - key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] }; - key <LatR> { [ Cyrillic_er, Cyrillic_ER ] }; - key <LatT> { [ Cyrillic_te, Cyrillic_TE ] }; - key <LatY> { [ Cyrillic_i, Cyrillic_I ] }; - key <LatU> { [ Cyrillic_u, Cyrillic_U ] }; - key <LatI> { [ Ukrainian_i, Ukrainian_I ] }; - key <LatO> { [ Cyrillic_o, Cyrillic_O ] }; - key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] }; - key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] }; - key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; - - key <LatA> { [ Cyrillic_a, Cyrillic_A ] }; - key <LatS> { [ Cyrillic_es, Cyrillic_ES ] }; - key <LatD> { [ Cyrillic_de, Cyrillic_DE ] }; - key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] }; - key <LatG> { [ Cyrillic_ghe, Cyrillic_GHE ] }; - key <LatH> { [ Cyrillic_ha, Cyrillic_HA ] }; - key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; - key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] }; - key <LatL> { [ Cyrillic_el, Cyrillic_EL ] }; - key <AC10> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; - key <AC11> { [ Cyrillic_che, Cyrillic_CHE ] }; - key <BKSL> { [ Cyrillic_yu, Cyrillic_YU ] }; - - key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] }; - key <LatX> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; - key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] }; - key <LatV> { [ Cyrillic_zhe, Cyrillic_ZHE ] }; - key <LatB> { [ Cyrillic_be, Cyrillic_BE ] }; - key <LatN> { [ Cyrillic_en, Cyrillic_EN ] }; - key <LatM> { [ Cyrillic_em, Cyrillic_EM ] }; - key <AB08> { [ Ukrainian_yi, Ukrainian_YI ] }; - key <AB09> { [ Ukrainian_ie, Ukrainian_IE ] }; - key <AB10> { [ slash, question ] }; + key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] }; + key <LatW> { [ Cyrillic_ve, Cyrillic_VE ] }; + key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] }; + key <LatR> { [ Cyrillic_er, Cyrillic_ER ] }; + key <LatT> { [ Cyrillic_te, Cyrillic_TE ] }; + key <LatY> { [ Cyrillic_i, Cyrillic_I ] }; + key <LatU> { [ Cyrillic_u, Cyrillic_U ] }; + key <LatI> { [ Ukrainian_i, Ukrainian_I ] }; + key <LatO> { [ Cyrillic_o, Cyrillic_O ] }; + key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] }; + key <AD11> { [ Cyrillic_sha, Cyrillic_SHA ] }; + key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; + + key <LatA> { [ Cyrillic_a, Cyrillic_A ] }; + key <LatS> { [ Cyrillic_es, Cyrillic_ES ] }; + key <LatD> { [ Cyrillic_de, Cyrillic_DE ] }; + key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] }; + key <LatG> { [ Cyrillic_ghe, Cyrillic_GHE ] }; + key <LatH> { [ Cyrillic_ha, Cyrillic_HA ] }; + key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; + key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] }; + key <LatL> { [ Cyrillic_el, Cyrillic_EL ] }; + key <AC10> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; + key <AC11> { [ Cyrillic_che, Cyrillic_CHE ] }; + key <BKSL> { [ Cyrillic_yu, Cyrillic_YU ] }; + + key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] }; + key <LatX> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] }; + key <LatV> { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key <LatB> { [ Cyrillic_be, Cyrillic_BE ] }; + key <LatN> { [ Cyrillic_en, Cyrillic_EN ] }; + key <LatM> { [ Cyrillic_em, Cyrillic_EM ] }; + key <AB08> { [ Ukrainian_yi, Ukrainian_YI ] }; + key <AB09> { [ Ukrainian_ie, Ukrainian_IE ] }; + key <AB10> { [ slash, question ] }; }; -// ukrainian keyboard layout RSTU 2019-91 (Respublikanskij STandart Ukrajiny) +// Ukrainian RSTU 2019-91 keyboard layout (Respublikanskij STandart Ukrajiny). // Andrew Porokhnyak <aop@porokhnyak.org> partial alphanumeric_keys xkb_symbols "rstu" { - include "ua(legacy)" + include "ua(legacy)" name[Group1]= "Ukrainian (standard RSTU)"; - key <TLDE> { [ apostrophe, question ] }; - key <AE01> { [ exclam, 1 ] }; - key <AE02> { [ quotedbl, 2 ] }; - key <AE03> { [ numbersign, 3 ] }; - key <AE04> { [ semicolon, 4 ] }; - key <AE05> { [ colon, 5 ] }; - key <AE06> { [ comma, 6 ] }; - key <AE07> { [ period, 7 ] }; - key <AE08> { [ asterisk, 8 ] }; - key <AE09> { [ parenleft, 9 ] }; - key <AE10> { [ parenright, 0 ] }; + key <TLDE> { [ apostrophe, question ] }; + key <AE01> { [ exclam, 1 ] }; + key <AE02> { [ quotedbl, 2 ] }; + key <AE03> { [ numbersign, 3 ] }; + key <AE04> { [ semicolon, 4 ] }; + key <AE05> { [ colon, 5 ] }; + key <AE06> { [ comma, 6 ] }; + key <AE07> { [ period, 7 ] }; + key <AE08> { [ asterisk, 8 ] }; + key <AE09> { [ parenleft, 9 ] }; + key <AE10> { [ parenright, 0 ] }; - key <AD12> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; + key <AD12> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; - key <AC02> { [ Cyrillic_i, Cyrillic_I ] }; + key <AC02> { [ Cyrillic_i, Cyrillic_I ] }; - key <AB05> { [ Ukrainian_i, Ukrainian_I ] }; + key <AB05> { [ Ukrainian_i, Ukrainian_I ] }; + key <AB10> { [ Ukrainian_yi, Ukrainian_YI ] }; - key <AB10> { [ Ukrainian_yi, Ukrainian_YI ] }; - - key <BKSL> { [ slash, percent ] }; + key <BKSL> { [ slash, percent ] }; }; -// russian keyboard layout RSTU 2019-91 (Respublikanskij STandart Ukrajiny) +// Russian RSTU 2019-91 keyboard layout (Respublikanskij STandart Ukrajiny). // Andrew Porokhnyak <aop@porokhnyak.org> partial alphanumeric_keys xkb_symbols "rstu_ru" { + include "ru(common)" name[Group1]= "Russian (Ukraine, standard RSTU)"; - key <TLDE> { [ apostrophe, question ] }; - key <AE01> { [ exclam, 1 ] }; - key <AE02> { [ quotedbl, 2 ] }; - key <AE03> { [ numbersign, 3 ] }; - key <AE04> { [ semicolon, 4 ] }; - key <AE05> { [ colon, 5 ] }; - key <AE06> { [ comma, 6 ] }; - key <AE07> { [ period, 7 ] }; - key <AE08> { [ asterisk, 8 ] }; - key <AE09> { [ parenleft, 9 ] }; - key <AE10> { [ parenright, 0 ] }; - key <BKSL> { [ slash, percent ] }; - -key.type[group1]="ALPHABETIC"; - - key <AB10> { [ Cyrillic_io, Cyrillic_IO ] }; + key <TLDE> { [ apostrophe, question ] }; + key <AE01> { [ exclam, 1 ] }; + key <AE02> { [ quotedbl, 2 ] }; + key <AE03> { [ numbersign, 3 ] }; + key <AE04> { [ semicolon, 4 ] }; + key <AE05> { [ colon, 5 ] }; + key <AE06> { [ comma, 6 ] }; + key <AE07> { [ period, 7 ] }; + key <AE08> { [ asterisk, 8 ] }; + key <AE09> { [ parenleft, 9 ] }; + key <AE10> { [ parenright, 0 ] }; + key <BKSL> { [ slash, percent ] }; + + key.type[group1]="ALPHABETIC"; + + key <AB10> { [ Cyrillic_io, Cyrillic_IO ] }; }; -//Homophonic keyboard layout (Tomas Marko Miljenović) -//Based on Ukrainian National Transliteration, commonly used phonetic layouts for Mac and Win. -//Existing layout "phonetic" used as template. +// Homophonic keyboard layout (by Tomas Marko Miljenović), +// based on the Ukrainian National Transliteration, +// commonly used phonetic layouts for Mac and Win. partial alphanumeric_keys xkb_symbols "homophonic" { + include "ua(legacy)" name[Group1]= "Ukrainian (homophonic)"; - key <TLDE> { [ grave, underscore ] }; - key <AE01> { [ 1, exclam ] }; - key <AE02> { [ 2, at ] }; - key <AE03> { [ 3, semicolon ] }; - key <AE04> { [ 4, colon ] }; - key <AE05> { [ 5, percent ] }; - key <AE06> { [ 6, apostrophe ] }; - key <AE07> { [ 7, quotedbl ] }; - key <AE08> { [ 8, asterisk ] }; - key <AE09> { [ 9, parenleft ] }; - key <AE10> { [ 0, parenright ] }; - key <AE11> { [ Ukrainian_ie, Ukrainian_IE ] }; - key <AE12> { [ Ukrainian_yi, Ukrainian_YI ] }; - - key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] }; - key <LatW> { [ Cyrillic_sha, Cyrillic_SHA ] }; - key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] }; - key <LatR> { [ Cyrillic_er, Cyrillic_ER ] }; - key <LatT> { [ Cyrillic_te, Cyrillic_TE ] }; - key <LatY> { [ Cyrillic_i, Cyrillic_I ] }; - key <LatU> { [ Cyrillic_u, Cyrillic_U ] }; - key <LatI> { [ Ukrainian_i, Ukrainian_I ] }; - key <LatO> { [ Cyrillic_o, Cyrillic_O ] }; - key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] }; - key <AD11> { [ Cyrillic_yu, Cyrillic_YU ] }; - key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; - - key <LatA> { [ Cyrillic_a, Cyrillic_A ] }; - key <LatS> { [ Cyrillic_es, Cyrillic_ES ] }; - key <LatD> { [ Cyrillic_de, Cyrillic_DE ] }; - key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] }; - key <LatG> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; - key <LatH> { [ Cyrillic_ghe, Cyrillic_GHE ] }; - key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; - key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] }; - key <LatL> { [ Cyrillic_el, Cyrillic_EL ] }; - key <AC10> { [ Cyrillic_che, Cyrillic_CHE ] }; - key <AC11> { [ Cyrillic_zhe, Cyrillic_ZHE ] }; - key <BKSL> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; - - key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] }; - key <LatX> { [ Cyrillic_ha, Cyrillic_HA ] }; - key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] }; - key <LatV> { [ Cyrillic_ve, Cyrillic_VE ] }; - key <LatB> { [ Cyrillic_be, Cyrillic_BE ] }; - key <LatN> { [ Cyrillic_en, Cyrillic_EN ] }; - key <LatM> { [ Cyrillic_em, Cyrillic_EM ] }; - key <AB08> { [ comma, less ] }; - key <AB09> { [ period, greater ] }; - key <AB10> { [ slash, question ] }; + key <TLDE> { [ grave, underscore ] }; + key <AE01> { [ 1, exclam ] }; + key <AE02> { [ 2, at ] }; + key <AE03> { [ 3, semicolon ] }; + key <AE04> { [ 4, colon ] }; + key <AE05> { [ 5, percent ] }; + key <AE06> { [ 6, apostrophe ] }; + key <AE07> { [ 7, quotedbl ] }; + key <AE08> { [ 8, asterisk ] }; + key <AE09> { [ 9, parenleft ] }; + key <AE10> { [ 0, parenright ] }; + key <AE11> { [ Ukrainian_ie, Ukrainian_IE ] }; + key <AE12> { [ Ukrainian_yi, Ukrainian_YI ] }; + + key <LatQ> { [ Cyrillic_ya, Cyrillic_YA ] }; + key <LatW> { [ Cyrillic_sha, Cyrillic_SHA ] }; + key <LatE> { [ Cyrillic_ie, Cyrillic_IE ] }; + key <LatR> { [ Cyrillic_er, Cyrillic_ER ] }; + key <LatT> { [ Cyrillic_te, Cyrillic_TE ] }; + key <LatY> { [ Cyrillic_i, Cyrillic_I ] }; + key <LatU> { [ Cyrillic_u, Cyrillic_U ] }; + key <LatI> { [ Ukrainian_i, Ukrainian_I ] }; + key <LatO> { [ Cyrillic_o, Cyrillic_O ] }; + key <LatP> { [ Cyrillic_pe, Cyrillic_PE ] }; + key <AD11> { [ Cyrillic_yu, Cyrillic_YU ] }; + key <AD12> { [ Cyrillic_shcha, Cyrillic_SHCHA ] }; + + key <LatA> { [ Cyrillic_a, Cyrillic_A ] }; + key <LatS> { [ Cyrillic_es, Cyrillic_ES ] }; + key <LatD> { [ Cyrillic_de, Cyrillic_DE ] }; + key <LatF> { [ Cyrillic_ef, Cyrillic_EF ] }; + key <LatG> { [ Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] }; + key <LatH> { [ Cyrillic_ghe, Cyrillic_GHE ] }; + key <LatJ> { [ Cyrillic_shorti, Cyrillic_SHORTI ] }; + key <LatK> { [ Cyrillic_ka, Cyrillic_KA ] }; + key <LatL> { [ Cyrillic_el, Cyrillic_EL ] }; + key <AC10> { [ Cyrillic_che, Cyrillic_CHE ] }; + key <AC11> { [ Cyrillic_zhe, Cyrillic_ZHE ] }; + key <BKSL> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN ] }; + + key <LatZ> { [ Cyrillic_ze, Cyrillic_ZE ] }; + key <LatX> { [ Cyrillic_ha, Cyrillic_HA ] }; + key <LatC> { [ Cyrillic_tse, Cyrillic_TSE ] }; + key <LatV> { [ Cyrillic_ve, Cyrillic_VE ] }; + key <LatB> { [ Cyrillic_be, Cyrillic_BE ] }; + key <LatN> { [ Cyrillic_en, Cyrillic_EN ] }; + key <LatM> { [ Cyrillic_em, Cyrillic_EM ] }; + key <AB08> { [ comma, less ] }; + key <AB09> { [ period, greater ] }; + key <AB10> { [ slash, question ] }; }; // EXTRAS: |