From c754f28f171c5cf90fecf20d9d536f476316f1c2 Mon Sep 17 00:00:00 2001 From: Roderick Colenbrander Date: Sun, 24 Jun 2012 22:42:10 -0700 Subject: [PATCH] winex11.drv: Remove GLX_ATI_render_texture support. --- dlls/winex11.drv/opengl.c | 423 ++++++++++++-------------------------- include/wine/wgl.h | 36 ---- 2 files changed, 129 insertions(+), 330 deletions(-) diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c index 3bdf7718d97..698ebd46c13 100644 --- a/dlls/winex11.drv/opengl.c +++ b/dlls/winex11.drv/opengl.c @@ -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); diff --git a/include/wine/wgl.h b/include/wine/wgl.h index 7a99de27598..1ac9e6af5cd 100644 --- a/include/wine/wgl.h +++ b/include/wine/wgl.h @@ -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