winex11.drv: Remove GLX_ATI_render_texture support.

This commit is contained in:
Roderick Colenbrander 2012-06-24 22:42:10 -07:00 committed by Alexandre Julliard
parent 567e44161c
commit c754f28f17
2 changed files with 129 additions and 330 deletions

View File

@ -168,7 +168,6 @@ static inline struct glx_physdev *get_glxdrv_dev( PHYSDEV dev )
static struct list context_list = LIST_INIT( context_list );
static struct WineGLInfo WineGLInfo = { 0 };
static int use_render_texture_emulation = 1;
static int use_render_texture_ati = 0;
static BOOL has_swap_control;
static int swap_interval = 1;
@ -275,11 +274,6 @@ static GLXContext (*pglXCreateContextAttribsARB)(Display *dpy, GLXFBConfig confi
static void* (*pglXGetProcAddressARB)(const GLubyte *);
static int (*pglXSwapIntervalSGI)(int);
/* ATI GLX Extensions */
static BOOL (*pglXBindTexImageATI)(Display *dpy, GLXPbuffer pbuffer, int buffer);
static BOOL (*pglXReleaseTexImageATI)(Display *dpy, GLXPbuffer pbuffer, int buffer);
static BOOL (*pglXDrawableAttribATI)(Display *dpy, GLXDrawable draw, const int *attribList);
/* NV GLX Extension */
static void* (*pglXAllocateMemoryNV)(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
static void (*pglXFreeMemoryNV)(GLvoid *pointer);
@ -602,13 +596,6 @@ static BOOL has_opengl(void)
ERR(" glx_version is %s and GLX_SGIX_fbconfig extension is unsupported. Expect problems.\n", WineGLInfo.glxServerVersion);
}
if(glxRequireExtension("GLX_ATI_render_texture")) {
use_render_texture_ati = 1;
pglXBindTexImageATI = pglXGetProcAddressARB((const GLubyte *) "glXBindTexImageATI");
pglXReleaseTexImageATI = pglXGetProcAddressARB((const GLubyte *) "glXReleaseTexImageATI");
pglXDrawableAttribATI = pglXGetProcAddressARB((const GLubyte *) "glXDrawableAttribATI");
}
if(glxRequireExtension("GLX_MESA_copy_sub_buffer")) {
pglXCopySubBufferMESA = pglXGetProcAddressARB((const GLubyte *) "glXCopySubBufferMESA");
}
@ -818,10 +805,7 @@ static int ConvertAttribWGLtoGLX(const int* iWGLAttr, int* oGLXAttr, Wine_GLPBuf
if (NULL == pbuf) {
ERR("trying to use GLX_Pbuffer Attributes without Pbuffer (was %x)\n", iWGLAttr[cur]);
}
if (use_render_texture_ati) {
/** nothing to do here */
}
else if (!use_render_texture_emulation) {
if (!use_render_texture_emulation) {
if (WGL_NO_TEXTURE_ARB != pop) {
ERR("trying to use WGL_render_texture Attributes without support (was %x)\n", iWGLAttr[cur]);
return -1; /** error: don't support it */
@ -2431,70 +2415,56 @@ static HPBUFFERARB WINAPI X11DRV_wglCreatePbufferARB(HDC hdc, int iPixelFormat,
++piAttribList;
attr_v = *piAttribList;
TRACE("WGL_render_texture Attribute: WGL_TEXTURE_FORMAT_ARB as %x\n", attr_v);
if (use_render_texture_ati) {
int type = 0;
switch (attr_v) {
case WGL_NO_TEXTURE_ARB: type = GLX_NO_TEXTURE_ATI; break ;
case WGL_TEXTURE_RGB_ARB: type = GLX_TEXTURE_RGB_ATI; break ;
case WGL_TEXTURE_RGBA_ARB: type = GLX_TEXTURE_RGBA_ATI; break ;
default:
SetLastError(ERROR_INVALID_DATA);
goto create_failed;
}
object->use_render_texture = 1;
PUSH2(attribs, GLX_TEXTURE_FORMAT_ATI, type);
if (WGL_NO_TEXTURE_ARB == attr_v) {
object->use_render_texture = 0;
} else {
if (WGL_NO_TEXTURE_ARB == attr_v) {
object->use_render_texture = 0;
} else {
if (!use_render_texture_emulation) {
if (!use_render_texture_emulation) {
SetLastError(ERROR_INVALID_DATA);
goto create_failed;
}
switch (attr_v) {
case WGL_TEXTURE_RGB_ARB:
object->use_render_texture = GL_RGB;
object->texture_bpp = 3;
object->texture_format = GL_RGB;
object->texture_type = GL_UNSIGNED_BYTE;
break;
case WGL_TEXTURE_RGBA_ARB:
object->use_render_texture = GL_RGBA;
object->texture_bpp = 4;
object->texture_format = GL_RGBA;
object->texture_type = GL_UNSIGNED_BYTE;
break;
/* WGL_FLOAT_COMPONENTS_NV */
case WGL_TEXTURE_FLOAT_R_NV:
object->use_render_texture = GL_FLOAT_R_NV;
object->texture_bpp = 4;
object->texture_format = GL_RED;
object->texture_type = GL_FLOAT;
break;
case WGL_TEXTURE_FLOAT_RG_NV:
object->use_render_texture = GL_FLOAT_RG_NV;
object->texture_bpp = 8;
object->texture_format = GL_LUMINANCE_ALPHA;
object->texture_type = GL_FLOAT;
break;
case WGL_TEXTURE_FLOAT_RGB_NV:
object->use_render_texture = GL_FLOAT_RGB_NV;
object->texture_bpp = 12;
object->texture_format = GL_RGB;
object->texture_type = GL_FLOAT;
break;
case WGL_TEXTURE_FLOAT_RGBA_NV:
object->use_render_texture = GL_FLOAT_RGBA_NV;
object->texture_bpp = 16;
object->texture_format = GL_RGBA;
object->texture_type = GL_FLOAT;
break;
default:
ERR("Unknown texture format: %x\n", attr_v);
SetLastError(ERROR_INVALID_DATA);
goto create_failed;
}
switch (attr_v) {
case WGL_TEXTURE_RGB_ARB:
object->use_render_texture = GL_RGB;
object->texture_bpp = 3;
object->texture_format = GL_RGB;
object->texture_type = GL_UNSIGNED_BYTE;
break;
case WGL_TEXTURE_RGBA_ARB:
object->use_render_texture = GL_RGBA;
object->texture_bpp = 4;
object->texture_format = GL_RGBA;
object->texture_type = GL_UNSIGNED_BYTE;
break;
/* WGL_FLOAT_COMPONENTS_NV */
case WGL_TEXTURE_FLOAT_R_NV:
object->use_render_texture = GL_FLOAT_R_NV;
object->texture_bpp = 4;
object->texture_format = GL_RED;
object->texture_type = GL_FLOAT;
break;
case WGL_TEXTURE_FLOAT_RG_NV:
object->use_render_texture = GL_FLOAT_RG_NV;
object->texture_bpp = 8;
object->texture_format = GL_LUMINANCE_ALPHA;
object->texture_type = GL_FLOAT;
break;
case WGL_TEXTURE_FLOAT_RGB_NV:
object->use_render_texture = GL_FLOAT_RGB_NV;
object->texture_bpp = 12;
object->texture_format = GL_RGB;
object->texture_type = GL_FLOAT;
break;
case WGL_TEXTURE_FLOAT_RGBA_NV:
object->use_render_texture = GL_FLOAT_RGBA_NV;
object->texture_bpp = 16;
object->texture_format = GL_RGBA;
object->texture_type = GL_FLOAT;
break;
default:
ERR("Unknown texture format: %x\n", attr_v);
SetLastError(ERROR_INVALID_DATA);
goto create_failed;
}
}
}
break;
@ -2504,60 +2474,46 @@ static HPBUFFERARB WINAPI X11DRV_wglCreatePbufferARB(HDC hdc, int iPixelFormat,
++piAttribList;
attr_v = *piAttribList;
TRACE("WGL_render_texture Attribute: WGL_TEXTURE_TARGET_ARB as %x\n", attr_v);
if (use_render_texture_ati) {
int type = 0;
switch (attr_v) {
case WGL_NO_TEXTURE_ARB: type = GLX_NO_TEXTURE_ATI; break ;
case WGL_TEXTURE_CUBE_MAP_ARB: type = GLX_TEXTURE_CUBE_MAP_ATI; break ;
case WGL_TEXTURE_1D_ARB: type = GLX_TEXTURE_1D_ATI; break ;
case WGL_TEXTURE_2D_ARB: type = GLX_TEXTURE_2D_ATI; break ;
default:
SetLastError(ERROR_INVALID_DATA);
goto create_failed;
}
PUSH2(attribs, GLX_TEXTURE_TARGET_ATI, type);
if (WGL_NO_TEXTURE_ARB == attr_v) {
object->texture_target = 0;
} else {
if (WGL_NO_TEXTURE_ARB == attr_v) {
object->texture_target = 0;
} else {
if (!use_render_texture_emulation) {
SetLastError(ERROR_INVALID_DATA);
goto create_failed;
}
switch (attr_v) {
case WGL_TEXTURE_CUBE_MAP_ARB: {
if (iWidth != iHeight) {
SetLastError(ERROR_INVALID_DATA);
goto create_failed;
}
object->texture_target = GL_TEXTURE_CUBE_MAP;
object->texture_bind_target = GL_TEXTURE_BINDING_CUBE_MAP;
break;
}
case WGL_TEXTURE_1D_ARB: {
if (1 != iHeight) {
SetLastError(ERROR_INVALID_DATA);
goto create_failed;
}
object->texture_target = GL_TEXTURE_1D;
object->texture_bind_target = GL_TEXTURE_BINDING_1D;
break;
}
case WGL_TEXTURE_2D_ARB: {
object->texture_target = GL_TEXTURE_2D;
object->texture_bind_target = GL_TEXTURE_BINDING_2D;
break;
}
case WGL_TEXTURE_RECTANGLE_NV: {
object->texture_target = GL_TEXTURE_RECTANGLE_NV;
object->texture_bind_target = GL_TEXTURE_BINDING_RECTANGLE_NV;
break;
}
default:
ERR("Unknown texture target: %x\n", attr_v);
if (!use_render_texture_emulation) {
SetLastError(ERROR_INVALID_DATA);
goto create_failed;
}
switch (attr_v) {
case WGL_TEXTURE_CUBE_MAP_ARB: {
if (iWidth != iHeight) {
SetLastError(ERROR_INVALID_DATA);
goto create_failed;
}
object->texture_target = GL_TEXTURE_CUBE_MAP;
object->texture_bind_target = GL_TEXTURE_BINDING_CUBE_MAP;
break;
}
case WGL_TEXTURE_1D_ARB: {
if (1 != iHeight) {
SetLastError(ERROR_INVALID_DATA);
goto create_failed;
}
object->texture_target = GL_TEXTURE_1D;
object->texture_bind_target = GL_TEXTURE_BINDING_1D;
break;
}
case WGL_TEXTURE_2D_ARB: {
object->texture_target = GL_TEXTURE_2D;
object->texture_bind_target = GL_TEXTURE_BINDING_2D;
break;
}
case WGL_TEXTURE_RECTANGLE_NV: {
object->texture_target = GL_TEXTURE_RECTANGLE_NV;
object->texture_bind_target = GL_TEXTURE_BINDING_RECTANGLE_NV;
break;
}
default:
ERR("Unknown texture target: %x\n", attr_v);
SetLastError(ERROR_INVALID_DATA);
goto create_failed;
}
}
break;
@ -2567,13 +2523,9 @@ static HPBUFFERARB WINAPI X11DRV_wglCreatePbufferARB(HDC hdc, int iPixelFormat,
++piAttribList;
attr_v = *piAttribList;
TRACE("WGL_render_texture Attribute: WGL_MIPMAP_TEXTURE_ARB as %x\n", attr_v);
if (use_render_texture_ati) {
PUSH2(attribs, GLX_MIPMAP_TEXTURE_ATI, attr_v);
} else {
if (!use_render_texture_emulation) {
SetLastError(ERROR_INVALID_DATA);
goto create_failed;
}
if (!use_render_texture_emulation) {
SetLastError(ERROR_INVALID_DATA);
goto create_failed;
}
break;
}
@ -2687,73 +2639,45 @@ static GLboolean WINAPI X11DRV_wglQueryPbufferARB(HPBUFFERARB hPbuffer, int iAtt
break;
case WGL_TEXTURE_FORMAT_ARB:
if (use_render_texture_ati) {
unsigned int tmp;
int type = WGL_NO_TEXTURE_ARB;
wine_tsx11_lock();
pglXQueryDrawable(object->display, object->drawable, GLX_TEXTURE_FORMAT_ATI, &tmp);
wine_tsx11_unlock();
switch (tmp) {
case GLX_NO_TEXTURE_ATI: type = WGL_NO_TEXTURE_ARB; break ;
case GLX_TEXTURE_RGB_ATI: type = WGL_TEXTURE_RGB_ARB; break ;
case GLX_TEXTURE_RGBA_ATI: type = WGL_TEXTURE_RGBA_ARB; break ;
}
*piValue = type;
if (!object->use_render_texture) {
*piValue = WGL_NO_TEXTURE_ARB;
} else {
if (!object->use_render_texture) {
*piValue = WGL_NO_TEXTURE_ARB;
} else {
if (!use_render_texture_emulation) {
SetLastError(ERROR_INVALID_HANDLE);
return GL_FALSE;
}
switch(object->use_render_texture) {
case GL_RGB:
*piValue = WGL_TEXTURE_RGB_ARB;
break;
case GL_RGBA:
*piValue = WGL_TEXTURE_RGBA_ARB;
break;
/* WGL_FLOAT_COMPONENTS_NV */
case GL_FLOAT_R_NV:
*piValue = WGL_TEXTURE_FLOAT_R_NV;
break;
case GL_FLOAT_RG_NV:
*piValue = WGL_TEXTURE_FLOAT_RG_NV;
break;
case GL_FLOAT_RGB_NV:
*piValue = WGL_TEXTURE_FLOAT_RGB_NV;
break;
case GL_FLOAT_RGBA_NV:
*piValue = WGL_TEXTURE_FLOAT_RGBA_NV;
break;
default:
ERR("Unknown texture format: %x\n", object->use_render_texture);
}
if (!use_render_texture_emulation) {
SetLastError(ERROR_INVALID_HANDLE);
return GL_FALSE;
}
switch(object->use_render_texture) {
case GL_RGB:
*piValue = WGL_TEXTURE_RGB_ARB;
break;
case GL_RGBA:
*piValue = WGL_TEXTURE_RGBA_ARB;
break;
/* WGL_FLOAT_COMPONENTS_NV */
case GL_FLOAT_R_NV:
*piValue = WGL_TEXTURE_FLOAT_R_NV;
break;
case GL_FLOAT_RG_NV:
*piValue = WGL_TEXTURE_FLOAT_RG_NV;
break;
case GL_FLOAT_RGB_NV:
*piValue = WGL_TEXTURE_FLOAT_RGB_NV;
break;
case GL_FLOAT_RGBA_NV:
*piValue = WGL_TEXTURE_FLOAT_RGBA_NV;
break;
default:
ERR("Unknown texture format: %x\n", object->use_render_texture);
}
}
break;
case WGL_TEXTURE_TARGET_ARB:
if (use_render_texture_ati) {
unsigned int tmp;
int type = WGL_NO_TEXTURE_ARB;
wine_tsx11_lock();
pglXQueryDrawable(object->display, object->drawable, GLX_TEXTURE_TARGET_ATI, &tmp);
wine_tsx11_unlock();
switch (tmp) {
case GLX_NO_TEXTURE_ATI: type = WGL_NO_TEXTURE_ARB; break ;
case GLX_TEXTURE_CUBE_MAP_ATI: type = WGL_TEXTURE_CUBE_MAP_ARB; break ;
case GLX_TEXTURE_1D_ATI: type = WGL_TEXTURE_1D_ARB; break ;
case GLX_TEXTURE_2D_ATI: type = WGL_TEXTURE_2D_ARB; break ;
}
*piValue = type;
} else {
if (!object->texture_target) {
if (!object->texture_target){
*piValue = WGL_NO_TEXTURE_ARB;
} else {
if (!use_render_texture_emulation) {
SetLastError(ERROR_INVALID_DATA);
SetLastError(ERROR_INVALID_DATA);
return GL_FALSE;
}
switch (object->texture_target) {
@ -2763,23 +2687,16 @@ static GLboolean WINAPI X11DRV_wglQueryPbufferARB(HPBUFFERARB hPbuffer, int iAtt
case GL_TEXTURE_RECTANGLE_NV: *piValue = WGL_TEXTURE_RECTANGLE_NV; break;
}
}
}
break;
break;
case WGL_MIPMAP_TEXTURE_ARB:
if (use_render_texture_ati) {
wine_tsx11_lock();
pglXQueryDrawable(object->display, object->drawable, GLX_MIPMAP_TEXTURE_ATI, (unsigned int*) piValue);
wine_tsx11_unlock();
} else {
case WGL_MIPMAP_TEXTURE_ARB:
*piValue = GL_FALSE; /** don't support that */
FIXME("unsupported WGL_ARB_render_texture attribute query for 0x%x\n", iAttribute);
}
break;
break;
default:
FIXME("unexpected attribute %x\n", iAttribute);
break;
default:
FIXME("unexpected attribute %x\n", iAttribute);
break;
}
return GL_TRUE;
@ -2815,17 +2732,9 @@ static GLboolean WINAPI X11DRV_wglSetPbufferAttribARB(HPBUFFERARB hPbuffer, cons
SetLastError(ERROR_INVALID_HANDLE);
return GL_FALSE;
}
if (!use_render_texture_ati && 1 == use_render_texture_emulation) {
if (1 == use_render_texture_emulation) {
return GL_TRUE;
}
if (NULL != pglXDrawableAttribATI) {
if (use_render_texture_ati) {
FIXME("Need conversion for GLX_ATI_render_texture\n");
}
wine_tsx11_lock();
ret = pglXDrawableAttribATI(object->display, object->drawable, piAttribList);
wine_tsx11_unlock();
}
return ret;
}
@ -3021,15 +2930,7 @@ static GLboolean WINAPI X11DRV_wglGetPixelFormatAttribivARB(HDC hdc, int iPixelF
break;
case WGL_BIND_TO_TEXTURE_RGB_ARB:
if (use_render_texture_ati) {
curGLXAttr = GLX_BIND_TO_TEXTURE_RGB_ATI;
break;
}
case WGL_BIND_TO_TEXTURE_RGBA_ARB:
if (use_render_texture_ati) {
curGLXAttr = GLX_BIND_TO_TEXTURE_RGBA_ATI;
break;
}
if (!use_render_texture_emulation) {
piValues[i] = GL_FALSE;
continue;
@ -3247,7 +3148,7 @@ static GLboolean WINAPI X11DRV_wglBindTexImageARB(HPBUFFERARB hPbuffer, int iBuf
return GL_FALSE;
}
if (!use_render_texture_ati && 1 == use_render_texture_emulation) {
if (1 == use_render_texture_emulation) {
static int init = 0;
int prev_binded_texture = 0;
GLXContext prev_context;
@ -3287,38 +3188,6 @@ static GLboolean WINAPI X11DRV_wglBindTexImageARB(HPBUFFERARB hPbuffer, int iBuf
return GL_TRUE;
}
if (NULL != pglXBindTexImageATI) {
int buffer;
switch(iBuffer)
{
case WGL_FRONT_LEFT_ARB:
buffer = GLX_FRONT_LEFT_ATI;
break;
case WGL_FRONT_RIGHT_ARB:
buffer = GLX_FRONT_RIGHT_ATI;
break;
case WGL_BACK_LEFT_ARB:
buffer = GLX_BACK_LEFT_ATI;
break;
case WGL_BACK_RIGHT_ARB:
buffer = GLX_BACK_RIGHT_ATI;
break;
default:
ERR("Unknown iBuffer=%#x\n", iBuffer);
return FALSE;
}
/* In the sample 'ogl_offscreen_rendering_3' from codesampler.net I get garbage on the screen.
* I'm not sure if that's a bug in the ATI extension or in the program. I think that the program
* expected a single buffering format since it didn't ask for double buffering. A buffer swap
* fixed the program. I don't know what the correct behavior is. On the other hand that demo
* works fine using our pbuffer emulation path.
*/
wine_tsx11_lock();
ret = pglXBindTexImageATI(object->display, object->drawable, buffer);
wine_tsx11_unlock();
}
return ret;
}
@ -3341,34 +3210,9 @@ static GLboolean WINAPI X11DRV_wglReleaseTexImageARB(HPBUFFERARB hPbuffer, int i
SetLastError(ERROR_INVALID_HANDLE);
return GL_FALSE;
}
if (!use_render_texture_ati && 1 == use_render_texture_emulation) {
if (1 == use_render_texture_emulation) {
return GL_TRUE;
}
if (NULL != pglXReleaseTexImageATI) {
int buffer;
switch(iBuffer)
{
case WGL_FRONT_LEFT_ARB:
buffer = GLX_FRONT_LEFT_ATI;
break;
case WGL_FRONT_RIGHT_ARB:
buffer = GLX_FRONT_RIGHT_ATI;
break;
case WGL_BACK_LEFT_ARB:
buffer = GLX_BACK_LEFT_ATI;
break;
case WGL_BACK_RIGHT_ARB:
buffer = GLX_BACK_RIGHT_ATI;
break;
default:
ERR("Unknown iBuffer=%#x\n", iBuffer);
return FALSE;
}
wine_tsx11_lock();
ret = pglXReleaseTexImageATI(object->display, object->drawable, buffer);
wine_tsx11_unlock();
}
return ret;
}
@ -3681,23 +3525,14 @@ static void X11DRV_WineGL_LoadExtensions(void)
/* In general pbuffer functionality requires support in the X-server. The functionality is
* available either when the GLX_SGIX_pbuffer is present or when the GLX server version is 1.3.
* All display drivers except for Nvidia's use the GLX module from Xfree86/Xorg which only
* supports GLX 1.2. The endresult is that only Nvidia's drivers support pbuffers.
*
* The only other drive which has pbuffer support is Ati's FGLRX driver. They provide clientside GLX 1.3 support
* without support in the X-server (which other Mesa based drivers require).
*
* Support pbuffers when the GLX version is 1.3 and GLX_SGIX_pbuffer is available. Further pbuffers can
* also be supported when GLX_ATI_render_texture is available. This extension depends on pbuffers, so when it
* is available pbuffers must be available too. */
if ( (glxRequireVersion(3) && glxRequireExtension("GLX_SGIX_pbuffer")) || glxRequireExtension("GLX_ATI_render_texture"))
*/
if ( glxRequireVersion(3) && glxRequireExtension("GLX_SGIX_pbuffer") )
register_extension(&WGL_ARB_pbuffer);
register_extension(&WGL_ARB_pixel_format);
/* Support WGL_ARB_render_texture when there's support or pbuffer based emulation */
if (glxRequireExtension("GLX_ATI_render_texture") ||
glxRequireExtension("GLX_ARB_render_texture") ||
if (glxRequireExtension("GLX_ARB_render_texture") ||
(glxRequireVersion(3) && glxRequireExtension("GLX_SGIX_pbuffer") && use_render_texture_emulation))
{
register_extension(&WGL_ARB_render_texture);

View File

@ -232,41 +232,5 @@
/** GLX_ARB_pixel_format_float */
#define GLX_RGBA_FLOAT_BIT 0x00000004
#define GLX_RGBA_FLOAT_TYPE 0x20B9
/** GLX_ATI_render_texture */
#define GLX_BIND_TO_TEXTURE_RGB_ATI 0x9800
#define GLX_BIND_TO_TEXTURE_RGBA_ATI 0x9801
#define GLX_TEXTURE_FORMAT_ATI 0x9802
#define GLX_TEXTURE_TARGET_ATI 0x9803
#define GLX_MIPMAP_TEXTURE_ATI 0x9804
#define GLX_TEXTURE_RGB_ATI 0x9805
#define GLX_TEXTURE_RGBA_ATI 0x9806
#define GLX_NO_TEXTURE_ATI 0x9807
#define GLX_TEXTURE_CUBE_MAP_ATI 0x9808
#define GLX_TEXTURE_1D_ATI 0x9809
#define GLX_TEXTURE_2D_ATI 0x980A
#define GLX_MIPMAP_LEVEL_ATI 0x980B
#define GLX_CUBE_MAP_FACE_ATI 0x980C
#define GLX_TEXTURE_CUBE_MAP_POSITIVE_X_ATI 0x980D
#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_X_ATI 0x980E
#define GLX_TEXTURE_CUBE_MAP_POSITIVE_Y_ATI 0x980F
#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_Y_ATI 0x9810
#define GLX_TEXTURE_CUBE_MAP_POSITIVE_Z_ATI 0x9811
#define GLX_TEXTURE_CUBE_MAP_NEGATIVE_Z_ATI 0x9812
#define GLX_FRONT_LEFT_ATI 0x9813
#define GLX_FRONT_RIGHT_ATI 0x9814
#define GLX_BACK_LEFT_ATI 0x9815
#define GLX_BACK_RIGHT_ATI 0x9816
#define GLX_AUX0_ATI 0x9817
#define GLX_AUX1_ATI 0x9818
#define GLX_AUX2_ATI 0x9819
#define GLX_AUX3_ATI 0x981A
#define GLX_AUX4_ATI 0x981B
#define GLX_AUX5_ATI 0x981C
#define GLX_AUX6_ATI 0x981D
#define GLX_AUX7_ATI 0x981E
#define GLX_AUX8_ATI 0x981F
#define GLX_AUX9_ATI 0x9820
#define GLX_BIND_TO_TEXTURE_LUMINANCE_ATI 0x9821
#define GLX_BIND_TO_TEXTURE_INTENSITY_ATI 0x9822
/** GLX_NV_float_buffer */
#define GLX_FLOAT_COMPONENTS_NV 0x20B0