diff --git a/code/CMakeModules/nel.cmake b/code/CMakeModules/nel.cmake index c7184d57e..b194b5ff9 100644 --- a/code/CMakeModules/nel.cmake +++ b/code/CMakeModules/nel.cmake @@ -236,8 +236,6 @@ MACRO(NL_SETUP_DEFAULT_OPTIONS) OPTION(WITH_COVERAGE "With Code Coverage Support" OFF) OPTION(WITH_PCH "With Precompiled Headers" ON ) OPTION(FINAL_VERSION "Build in Final Version mode" ON ) - OPTION(WITH_PERFHUD "Build with NVIDIA PerfHUD support" OFF ) - OPTION(WITH_PATCH_SUPPORT "Build with in-game Patch Support" OFF ) # Default to static building on Windows. IF(WIN32) @@ -325,6 +323,7 @@ MACRO(NL_SETUP_NEL_DEFAULT_OPTIONS) OPTION(WITH_LIBOVR "With LibOVR support" OFF) OPTION(WITH_LIBVR "With LibVR support" OFF) + OPTION(WITH_PERFHUD "With NVIDIA PerfHUD support" OFF) ENDMACRO(NL_SETUP_NEL_DEFAULT_OPTIONS) MACRO(NL_SETUP_NELNS_DEFAULT_OPTIONS) @@ -343,6 +342,7 @@ MACRO(NL_SETUP_RYZOM_DEFAULT_OPTIONS) OPTION(WITH_RYZOM_TOOLS "Build Ryzom Core Tools" ON ) OPTION(WITH_RYZOM_SERVER "Build Ryzom Core Services" ON ) OPTION(WITH_RYZOM_SOUND "Enable Ryzom Core Sound" ON ) + OPTION(WITH_RYZOM_PATCH "Enable Ryzom in-game patch support" OFF) ### # Optional support @@ -889,7 +889,7 @@ MACRO(NL_SETUP_BUILD) SET(NL_RELEASE_CFLAGS "${NL_RELEASE_CFLAGS} -g") ELSE(WITH_SYMBOLS) IF(APPLE) - SET(NL_RELEASE_LINKFLAGS "-Wl,-dead_strip -Wl,-x ${NL_RELEASE_LINKFLAGS}") + SET(NL_RELEASE_LINKFLAGS "-Wl,-dead_strip ${NL_RELEASE_LINKFLAGS}") ELSE(APPLE) SET(NL_RELEASE_LINKFLAGS "-Wl,-s ${NL_RELEASE_LINKFLAGS}") ENDIF(APPLE) diff --git a/code/nel/include/nel/3d/skeleton_shape.h b/code/nel/include/nel/3d/skeleton_shape.h index 52a7c9e62..a47be7f17 100644 --- a/code/nel/include/nel/3d/skeleton_shape.h +++ b/code/nel/include/nel/3d/skeleton_shape.h @@ -88,7 +88,7 @@ public: /** return the bounding box of the shape. Default is to return Null bbox. */ - virtual void getAABBox(NLMISC::CAABBox &bbox) const; + virtual void getAABBox(NLMISC::CAABBox &bbox) const; /// get an approximation of the number of triangles this instance will render for a fixed distance. virtual float getNumTriangles (float distance); @@ -98,7 +98,7 @@ public: NLMISC_DECLARE_CLASS(CSkeletonShape); /// flush textures used by this shape. - virtual void flushTextures (IDriver &/* driver */, uint /* selectedTexture */) {} + virtual void flushTextures (IDriver &/* driver */, uint /* selectedTexture */) {} // @} diff --git a/code/nel/src/3d/driver/opengl/GL/glext.h b/code/nel/src/3d/driver/opengl/GL/glext.h index e70266447..0ecf2b867 100644 --- a/code/nel/src/3d/driver/opengl/GL/glext.h +++ b/code/nel/src/3d/driver/opengl/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: 23855 $ on $Date: 2013-11-02 22:54:48 -0700 (Sat, 02 Nov 2013) $ +** Khronos $Revision: 26007 $ on $Date: 2014-03-19 01:28:09 -0700 (Wed, 19 Mar 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 20131102 +#define GL_GLEXT_VERSION 20140319 /* 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 */ @@ -2144,6 +2144,10 @@ GLAPI void APIENTRY glGetDoublei_v (GLenum target, GLuint index, GLdouble *data) #define GL_MAX_GEOMETRY_IMAGE_UNIFORMS 0x90CD #define GL_MAX_FRAGMENT_IMAGE_UNIFORMS 0x90CE #define GL_MAX_COMBINED_IMAGE_UNIFORMS 0x90CF +#define GL_COMPRESSED_RGBA_BPTC_UNORM 0x8E8C +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM 0x8E8D +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT 0x8E8F #define GL_TEXTURE_IMMUTABLE_FORMAT 0x912F typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); @@ -2432,6 +2436,7 @@ typedef void (APIENTRY *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum #define GL_VERTEX_BINDING_STRIDE 0x82D8 #define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9 #define GL_MAX_VERTEX_ATTRIB_BINDINGS 0x82DA +#define GL_VERTEX_BINDING_BUFFER 0x8F4F #define GL_DISPLAY_LIST 0x82E7 typedef void (APIENTRYP PFNGLCLEARBUFFERDATAPROC) (GLenum target, GLenum internalformat, GLenum format, GLenum type, const void *data); typedef void (APIENTRYP PFNGLCLEARBUFFERSUBDATAPROC) (GLenum target, GLenum internalformat, GLintptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); @@ -4836,6 +4841,20 @@ GLAPI GLboolean APIENTRY glIsNameAMD (GLenum identifier, GLuint name); #endif #endif /* GL_AMD_name_gen_delete */ +#ifndef GL_AMD_occlusion_query_event +#define GL_AMD_occlusion_query_event 1 +#define GL_OCCLUSION_QUERY_EVENT_MASK_AMD 0x874F +#define GL_QUERY_DEPTH_PASS_EVENT_BIT_AMD 0x00000001 +#define GL_QUERY_DEPTH_FAIL_EVENT_BIT_AMD 0x00000002 +#define GL_QUERY_STENCIL_FAIL_EVENT_BIT_AMD 0x00000004 +#define GL_QUERY_DEPTH_BOUNDS_FAIL_EVENT_BIT_AMD 0x00000008 +#define GL_QUERY_ALL_EVENT_BITS_AMD 0xFFFFFFFF +typedef void (APIENTRYP PFNGLQUERYOBJECTPARAMETERUIAMDPROC) (GLenum target, GLuint id, GLenum pname, GLuint param); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glQueryObjectParameteruiAMD (GLenum target, GLuint id, GLenum pname, GLuint param); +#endif +#endif /* GL_AMD_occlusion_query_event */ + #ifndef GL_AMD_performance_monitor #define GL_AMD_performance_monitor 1 #define GL_COUNTER_TYPE_AMD 0x8BC0 @@ -6163,7 +6182,7 @@ typedef void *(APIENTRYP PFNGLMAPNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintp typedef void (APIENTRYP PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length); typedef void (APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTPROC) (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); -typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLsizeiptr offset, GLsizeiptr size, const void *data); +typedef void (APIENTRYP PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); typedef void (APIENTRYP PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) (GLuint framebuffer, GLenum pname, GLint param); typedef void (APIENTRYP PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) (GLuint framebuffer, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x); @@ -6419,7 +6438,7 @@ GLAPI void *APIENTRY glMapNamedBufferRangeEXT (GLuint buffer, GLintptr offset, G GLAPI void APIENTRY glFlushMappedNamedBufferRangeEXT (GLuint buffer, GLintptr offset, GLsizeiptr length); GLAPI void APIENTRY glNamedBufferStorageEXT (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags); GLAPI void APIENTRY glClearNamedBufferDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, const void *data); -GLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLenum format, GLenum type, GLsizeiptr offset, GLsizeiptr size, const void *data); +GLAPI void APIENTRY glClearNamedBufferSubDataEXT (GLuint buffer, GLenum internalformat, GLsizeiptr offset, GLsizeiptr size, GLenum format, GLenum type, const void *data); GLAPI void APIENTRY glNamedFramebufferParameteriEXT (GLuint framebuffer, GLenum pname, GLint param); GLAPI void APIENTRY glGetNamedFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params); GLAPI void APIENTRY glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x); @@ -7062,6 +7081,10 @@ GLAPI GLuint APIENTRY glCreateShaderProgramEXT (GLenum type, const GLchar *strin #define GL_SEPARATE_SPECULAR_COLOR_EXT 0x81FA #endif /* GL_EXT_separate_specular_color */ +#ifndef GL_EXT_shader_image_load_formatted +#define GL_EXT_shader_image_load_formatted 1 +#endif /* GL_EXT_shader_image_load_formatted */ + #ifndef GL_EXT_shader_image_load_store #define GL_EXT_shader_image_load_store 1 #define GL_MAX_IMAGE_UNITS_EXT 0x8F38 @@ -8108,6 +8131,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 @@ -8202,6 +8271,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); @@ -8248,6 +8326,7 @@ GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle); #define GL_NV_blend_equation_advanced 1 #define GL_BLEND_OVERLAP_NV 0x9281 #define GL_BLEND_PREMULTIPLIED_SRC_NV 0x9280 +#define GL_BLUE_NV 0x1905 #define GL_COLORBURN_NV 0x929A #define GL_COLORDODGE_NV 0x9299 #define GL_CONJOINT_NV 0x9284 @@ -8261,6 +8340,7 @@ GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle); #define GL_DST_OUT_NV 0x928D #define GL_DST_OVER_NV 0x9289 #define GL_EXCLUSION_NV 0x92A0 +#define GL_GREEN_NV 0x1904 #define GL_HARDLIGHT_NV 0x929B #define GL_HARDMIX_NV 0x92A9 #define GL_HSL_COLOR_NV 0x92AF @@ -8282,6 +8362,7 @@ GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle); #define GL_PLUS_CLAMPED_NV 0x92B1 #define GL_PLUS_DARKER_NV 0x9292 #define GL_PLUS_NV 0x9291 +#define GL_RED_NV 0x1903 #define GL_SCREEN_NV 0x9295 #define GL_SOFTLIGHT_NV 0x929C #define GL_SRC_ATOP_NV 0x928E @@ -8291,6 +8372,7 @@ GLAPI GLboolean APIENTRY glIsImageHandleResidentNV (GLuint64 handle); #define GL_SRC_OVER_NV 0x9288 #define GL_UNCORRELATED_NV 0x9282 #define GL_VIVIDLIGHT_NV 0x92A6 +#define GL_XOR_NV 0x1506 typedef void (APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value); typedef void (APIENTRYP PFNGLBLENDBARRIERNVPROC) (void); #ifdef GL_GLEXT_PROTOTYPES @@ -9350,6 +9432,17 @@ GLAPI void APIENTRY glProgramUniformui64vNV (GLuint program, GLint location, GLs #define GL_NV_shader_storage_buffer_object 1 #endif /* GL_NV_shader_storage_buffer_object */ +#ifndef GL_NV_shader_thread_group +#define GL_NV_shader_thread_group 1 +#define GL_WARP_SIZE_NV 0x9339 +#define GL_WARPS_PER_SM_NV 0x933A +#define GL_SM_COUNT_NV 0x933B +#endif /* GL_NV_shader_thread_group */ + +#ifndef GL_NV_shader_thread_shuffle +#define GL_NV_shader_thread_shuffle 1 +#endif /* GL_NV_shader_thread_shuffle */ + #ifndef GL_NV_tessellation_program5 #define GL_NV_tessellation_program5 1 #define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8 @@ -9625,7 +9718,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); @@ -9636,7 +9729,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/code/nel/src/3d/driver/opengl/GL/glxext.h b/code/nel/src/3d/driver/opengl/GL/glxext.h index c81ab4d5c..6236d9244 100644 --- a/code/nel/src/3d/driver/opengl/GL/glxext.h +++ b/code/nel/src/3d/driver/opengl/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: 23730 $ on $Date: 2013-10-28 15:16:34 -0700 (Mon, 28 Oct 2013) $ +** Khronos $Revision: 25923 $ on $Date: 2014-03-17 03:54:56 -0700 (Mon, 17 Mar 2014) $ */ -#define GLX_GLXEXT_VERSION 20131028 +#define GLX_GLXEXT_VERSION 20140317 /* Generated C header for: * API: glx @@ -49,6 +49,7 @@ extern "C" { #ifndef GLX_VERSION_1_3 #define GLX_VERSION_1_3 1 +typedef XID GLXContextID; typedef struct __GLXFBConfigRec *GLXFBConfig; typedef XID GLXWindow; typedef XID GLXPbuffer; @@ -272,7 +273,6 @@ __GLXextFuncPtr glXGetProcAddressARB (const GLubyte *procName); #ifndef GLX_EXT_import_context #define GLX_EXT_import_context 1 -typedef XID GLXContextID; #define GLX_SHARE_CONTEXT_EXT 0x800A #define GLX_VISUAL_ID_EXT 0x800B #define GLX_SCREEN_EXT 0x800C @@ -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); @@ -433,6 +459,14 @@ void glXCopyImageSubDataNV (Display *dpy, GLXContext srcCtx, GLuint srcName, GLe #endif #endif /* GLX_NV_copy_image */ +#ifndef GLX_NV_delay_before_swap +#define GLX_NV_delay_before_swap 1 +typedef Bool ( *PFNGLXDELAYBEFORESWAPNVPROC) (Display *dpy, GLXDrawable drawable, GLfloat seconds); +#ifdef GLX_GLXEXT_PROTOTYPES +Bool glXDelayBeforeSwapNV (Display *dpy, GLXDrawable drawable, GLfloat seconds); +#endif +#endif /* GLX_NV_delay_before_swap */ + #ifndef GLX_NV_float_buffer #define GLX_NV_float_buffer 1 #define GLX_FLOAT_COMPONENTS_NV 0x20B0 diff --git a/code/nel/src/3d/driver/opengl/GL/wglext.h b/code/nel/src/3d/driver/opengl/GL/wglext.h index 783e53d84..e33232fa5 100644 --- a/code/nel/src/3d/driver/opengl/GL/wglext.h +++ b/code/nel/src/3d/driver/opengl/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: 23730 $ on $Date: 2013-10-28 15:16:34 -0700 (Mon, 28 Oct 2013) $ +** Khronos $Revision: 25923 $ on $Date: 2014-03-17 03:54:56 -0700 (Mon, 17 Mar 2014) $ */ #if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) @@ -41,7 +41,7 @@ extern "C" { #include #endif -#define WGL_WGLEXT_VERSION 20131028 +#define WGL_WGLEXT_VERSION 20140317 /* Generated C header for: * API: wgl diff --git a/code/nel/src/3d/driver/opengl/driver_opengl_extension.cpp b/code/nel/src/3d/driver/opengl/driver_opengl_extension.cpp index 3b771e1c1..3ded67d62 100644 --- a/code/nel/src/3d/driver/opengl/driver_opengl_extension.cpp +++ b/code/nel/src/3d/driver/opengl/driver_opengl_extension.cpp @@ -68,254 +68,252 @@ void (*nglGetProcAddress(const char *procName))() #ifdef USE_OPENGLES // GL_OES_mapbuffer -NEL_PFNGLMAPBUFFEROESPROC nglMapBufferOES; -NEL_PFNGLUNMAPBUFFEROESPROC nglUnmapBufferOES; -NEL_PFNGLGETBUFFERPOINTERVOESPROC nglGetBufferPointervOES; +PFNGLMAPBUFFEROESPROC nglMapBufferOES; +PFNGLUNMAPBUFFEROESPROC nglUnmapBufferOES; +PFNGLGETBUFFERPOINTERVOESPROC nglGetBufferPointervOES; -NEL_PFNGLBUFFERSUBDATAPROC nglBufferSubData; - -PFNGLDRAWTEXFOESPROC nglDrawTexfOES; +PFNGLDRAWTEXFOESPROC nglDrawTexfOES; // GL_OES_framebuffer_object -NEL_PFNGLISRENDERBUFFEROESPROC nglIsRenderbufferOES; -NEL_PFNGLBINDRENDERBUFFEROESPROC nglBindRenderbufferOES; -NEL_PFNGLDELETERENDERBUFFERSOESPROC nglDeleteRenderbuffersOES; -NEL_PFNGLGENRENDERBUFFERSOESPROC nglGenRenderbuffersOES; -NEL_PFNGLRENDERBUFFERSTORAGEOESPROC nglRenderbufferStorageOES; -NEL_PFNGLGETRENDERBUFFERPARAMETERIVOESPROC nglGetRenderbufferParameterivOES; -NEL_PFNGLISFRAMEBUFFEROESPROC nglIsFramebufferOES; -NEL_PFNGLBINDFRAMEBUFFEROESPROC nglBindFramebufferOES; -NEL_PFNGLDELETEFRAMEBUFFERSOESPROC nglDeleteFramebuffersOES; -NEL_PFNGLGENFRAMEBUFFERSOESPROC nglGenFramebuffersOES; -NEL_PFNGLCHECKFRAMEBUFFERSTATUSOESPROC nglCheckFramebufferStatusOES; -NEL_PFNGLFRAMEBUFFERRENDERBUFFEROESPROC nglFramebufferRenderbufferOES; -NEL_PFNGLFRAMEBUFFERTEXTURE2DOESPROC nglFramebufferTexture2DOES; -NEL_PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC nglGetFramebufferAttachmentParameterivOES; -NEL_PFNGLGENERATEMIPMAPOESPROC nglGenerateMipmapOES; +PFNGLISRENDERBUFFEROESPROC nglIsRenderbufferOES; +PFNGLBINDRENDERBUFFEROESPROC nglBindRenderbufferOES; +PFNGLDELETERENDERBUFFERSOESPROC nglDeleteRenderbuffersOES; +PFNGLGENRENDERBUFFERSOESPROC nglGenRenderbuffersOES; +PFNGLRENDERBUFFERSTORAGEOESPROC nglRenderbufferStorageOES; +PFNGLGETRENDERBUFFERPARAMETERIVOESPROC nglGetRenderbufferParameterivOES; +PFNGLISFRAMEBUFFEROESPROC nglIsFramebufferOES; +PFNGLBINDFRAMEBUFFEROESPROC nglBindFramebufferOES; +PFNGLDELETEFRAMEBUFFERSOESPROC nglDeleteFramebuffersOES; +PFNGLGENFRAMEBUFFERSOESPROC nglGenFramebuffersOES; +PFNGLCHECKFRAMEBUFFERSTATUSOESPROC nglCheckFramebufferStatusOES; +PFNGLFRAMEBUFFERRENDERBUFFEROESPROC nglFramebufferRenderbufferOES; +PFNGLFRAMEBUFFERTEXTURE2DOESPROC nglFramebufferTexture2DOES; +PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC nglGetFramebufferAttachmentParameterivOES; +PFNGLGENERATEMIPMAPOESPROC nglGenerateMipmapOES; // GL_OES_texture_cube_map -NEL_PFNGLTEXGENFOESPROC nglTexGenfOES; -NEL_PFNGLTEXGENFVOESPROC nglTexGenfvOES; -NEL_PFNGLTEXGENIOESPROC nglTexGeniOES; -NEL_PFNGLTEXGENIVOESPROC nglTexGenivOES; -NEL_PFNGLTEXGENXOESPROC nglTexGenxOES; -NEL_PFNGLTEXGENXVOESPROC nglTexGenxvOES; -NEL_PFNGLGETTEXGENFVOESPROC nglGetTexGenfvOES; -NEL_PFNGLGETTEXGENIVOESPROC nglGetTexGenivOES; -NEL_PFNGLGETTEXGENXVOESPROC nglGetTexGenxvOES; +PFNGLTEXGENFOESPROC nglTexGenfOES; +PFNGLTEXGENFVOESPROC nglTexGenfvOES; +PFNGLTEXGENIOESPROC nglTexGeniOES; +PFNGLTEXGENIVOESPROC nglTexGenivOES; +PFNGLTEXGENXOESPROC nglTexGenxOES; +PFNGLTEXGENXVOESPROC nglTexGenxvOES; +PFNGLGETTEXGENFVOESPROC nglGetTexGenfvOES; +PFNGLGETTEXGENIVOESPROC nglGetTexGenivOES; +PFNGLGETTEXGENXVOESPROC nglGetTexGenxvOES; #else // ARB_multitexture -NEL_PFNGLACTIVETEXTUREARBPROC nglActiveTextureARB; -NEL_PFNGLCLIENTACTIVETEXTUREARBPROC nglClientActiveTextureARB; +PFNGLACTIVETEXTUREARBPROC nglActiveTextureARB; +PFNGLCLIENTACTIVETEXTUREARBPROC nglClientActiveTextureARB; -NEL_PFNGLMULTITEXCOORD1SARBPROC nglMultiTexCoord1sARB; -NEL_PFNGLMULTITEXCOORD1IARBPROC nglMultiTexCoord1iARB; -NEL_PFNGLMULTITEXCOORD1FARBPROC nglMultiTexCoord1fARB; -NEL_PFNGLMULTITEXCOORD1DARBPROC nglMultiTexCoord1dARB; -NEL_PFNGLMULTITEXCOORD2SARBPROC nglMultiTexCoord2sARB; -NEL_PFNGLMULTITEXCOORD2IARBPROC nglMultiTexCoord2iARB; -NEL_PFNGLMULTITEXCOORD2FARBPROC nglMultiTexCoord2fARB; -NEL_PFNGLMULTITEXCOORD2DARBPROC nglMultiTexCoord2dARB; -NEL_PFNGLMULTITEXCOORD3SARBPROC nglMultiTexCoord3sARB; -NEL_PFNGLMULTITEXCOORD3IARBPROC nglMultiTexCoord3iARB; -NEL_PFNGLMULTITEXCOORD3FARBPROC nglMultiTexCoord3fARB; -NEL_PFNGLMULTITEXCOORD3DARBPROC nglMultiTexCoord3dARB; -NEL_PFNGLMULTITEXCOORD4SARBPROC nglMultiTexCoord4sARB; -NEL_PFNGLMULTITEXCOORD4IARBPROC nglMultiTexCoord4iARB; -NEL_PFNGLMULTITEXCOORD4FARBPROC nglMultiTexCoord4fARB; -NEL_PFNGLMULTITEXCOORD4DARBPROC nglMultiTexCoord4dARB; +PFNGLMULTITEXCOORD1SARBPROC nglMultiTexCoord1sARB; +PFNGLMULTITEXCOORD1IARBPROC nglMultiTexCoord1iARB; +PFNGLMULTITEXCOORD1FARBPROC nglMultiTexCoord1fARB; +PFNGLMULTITEXCOORD1DARBPROC nglMultiTexCoord1dARB; +PFNGLMULTITEXCOORD2SARBPROC nglMultiTexCoord2sARB; +PFNGLMULTITEXCOORD2IARBPROC nglMultiTexCoord2iARB; +PFNGLMULTITEXCOORD2FARBPROC nglMultiTexCoord2fARB; +PFNGLMULTITEXCOORD2DARBPROC nglMultiTexCoord2dARB; +PFNGLMULTITEXCOORD3SARBPROC nglMultiTexCoord3sARB; +PFNGLMULTITEXCOORD3IARBPROC nglMultiTexCoord3iARB; +PFNGLMULTITEXCOORD3FARBPROC nglMultiTexCoord3fARB; +PFNGLMULTITEXCOORD3DARBPROC nglMultiTexCoord3dARB; +PFNGLMULTITEXCOORD4SARBPROC nglMultiTexCoord4sARB; +PFNGLMULTITEXCOORD4IARBPROC nglMultiTexCoord4iARB; +PFNGLMULTITEXCOORD4FARBPROC nglMultiTexCoord4fARB; +PFNGLMULTITEXCOORD4DARBPROC nglMultiTexCoord4dARB; -NEL_PFNGLMULTITEXCOORD1SVARBPROC nglMultiTexCoord1svARB; -NEL_PFNGLMULTITEXCOORD1IVARBPROC nglMultiTexCoord1ivARB; -NEL_PFNGLMULTITEXCOORD1FVARBPROC nglMultiTexCoord1fvARB; -NEL_PFNGLMULTITEXCOORD1DVARBPROC nglMultiTexCoord1dvARB; -NEL_PFNGLMULTITEXCOORD2SVARBPROC nglMultiTexCoord2svARB; -NEL_PFNGLMULTITEXCOORD2IVARBPROC nglMultiTexCoord2ivARB; -NEL_PFNGLMULTITEXCOORD2FVARBPROC nglMultiTexCoord2fvARB; -NEL_PFNGLMULTITEXCOORD2DVARBPROC nglMultiTexCoord2dvARB; -NEL_PFNGLMULTITEXCOORD3SVARBPROC nglMultiTexCoord3svARB; -NEL_PFNGLMULTITEXCOORD3IVARBPROC nglMultiTexCoord3ivARB; -NEL_PFNGLMULTITEXCOORD3FVARBPROC nglMultiTexCoord3fvARB; -NEL_PFNGLMULTITEXCOORD3DVARBPROC nglMultiTexCoord3dvARB; -NEL_PFNGLMULTITEXCOORD4SVARBPROC nglMultiTexCoord4svARB; -NEL_PFNGLMULTITEXCOORD4IVARBPROC nglMultiTexCoord4ivARB; -NEL_PFNGLMULTITEXCOORD4FVARBPROC nglMultiTexCoord4fvARB; -NEL_PFNGLMULTITEXCOORD4DVARBPROC nglMultiTexCoord4dvARB; +PFNGLMULTITEXCOORD1SVARBPROC nglMultiTexCoord1svARB; +PFNGLMULTITEXCOORD1IVARBPROC nglMultiTexCoord1ivARB; +PFNGLMULTITEXCOORD1FVARBPROC nglMultiTexCoord1fvARB; +PFNGLMULTITEXCOORD1DVARBPROC nglMultiTexCoord1dvARB; +PFNGLMULTITEXCOORD2SVARBPROC nglMultiTexCoord2svARB; +PFNGLMULTITEXCOORD2IVARBPROC nglMultiTexCoord2ivARB; +PFNGLMULTITEXCOORD2FVARBPROC nglMultiTexCoord2fvARB; +PFNGLMULTITEXCOORD2DVARBPROC nglMultiTexCoord2dvARB; +PFNGLMULTITEXCOORD3SVARBPROC nglMultiTexCoord3svARB; +PFNGLMULTITEXCOORD3IVARBPROC nglMultiTexCoord3ivARB; +PFNGLMULTITEXCOORD3FVARBPROC nglMultiTexCoord3fvARB; +PFNGLMULTITEXCOORD3DVARBPROC nglMultiTexCoord3dvARB; +PFNGLMULTITEXCOORD4SVARBPROC nglMultiTexCoord4svARB; +PFNGLMULTITEXCOORD4IVARBPROC nglMultiTexCoord4ivARB; +PFNGLMULTITEXCOORD4FVARBPROC nglMultiTexCoord4fvARB; +PFNGLMULTITEXCOORD4DVARBPROC nglMultiTexCoord4dvARB; // ARB_TextureCompression. -NEL_PFNGLCOMPRESSEDTEXIMAGE3DARBPROC nglCompressedTexImage3DARB; -NEL_PFNGLCOMPRESSEDTEXIMAGE2DARBPROC nglCompressedTexImage2DARB; -NEL_PFNGLCOMPRESSEDTEXIMAGE1DARBPROC nglCompressedTexImage1DARB; -NEL_PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC nglCompressedTexSubImage3DARB; -NEL_PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC nglCompressedTexSubImage2DARB; -NEL_PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC nglCompressedTexSubImage1DARB; -NEL_PFNGLGETCOMPRESSEDTEXIMAGEARBPROC nglGetCompressedTexImageARB; +PFNGLCOMPRESSEDTEXIMAGE3DARBPROC nglCompressedTexImage3DARB; +PFNGLCOMPRESSEDTEXIMAGE2DARBPROC nglCompressedTexImage2DARB; +PFNGLCOMPRESSEDTEXIMAGE1DARBPROC nglCompressedTexImage1DARB; +PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC nglCompressedTexSubImage3DARB; +PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC nglCompressedTexSubImage2DARB; +PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC nglCompressedTexSubImage1DARB; +PFNGLGETCOMPRESSEDTEXIMAGEARBPROC nglGetCompressedTexImageARB; // VertexArrayRangeNV. -NEL_PFNGLFLUSHVERTEXARRAYRANGENVPROC nglFlushVertexArrayRangeNV; -NEL_PFNGLVERTEXARRAYRANGENVPROC nglVertexArrayRangeNV; +PFNGLFLUSHVERTEXARRAYRANGENVPROC nglFlushVertexArrayRangeNV; +PFNGLVERTEXARRAYRANGENVPROC nglVertexArrayRangeNV; // FenceNV. -NEL_PFNGLDELETEFENCESNVPROC nglDeleteFencesNV; -NEL_PFNGLGENFENCESNVPROC nglGenFencesNV; -NEL_PFNGLISFENCENVPROC nglIsFenceNV; -NEL_PFNGLTESTFENCENVPROC nglTestFenceNV; -NEL_PFNGLGETFENCEIVNVPROC nglGetFenceivNV; -NEL_PFNGLFINISHFENCENVPROC nglFinishFenceNV; -NEL_PFNGLSETFENCENVPROC nglSetFenceNV; +PFNGLDELETEFENCESNVPROC nglDeleteFencesNV; +PFNGLGENFENCESNVPROC nglGenFencesNV; +PFNGLISFENCENVPROC nglIsFenceNV; +PFNGLTESTFENCENVPROC nglTestFenceNV; +PFNGLGETFENCEIVNVPROC nglGetFenceivNV; +PFNGLFINISHFENCENVPROC nglFinishFenceNV; +PFNGLSETFENCENVPROC nglSetFenceNV; // VertexWeighting. -NEL_PFNGLVERTEXWEIGHTFEXTPROC nglVertexWeightfEXT; -NEL_PFNGLVERTEXWEIGHTFVEXTPROC nglVertexWeightfvEXT; -NEL_PFNGLVERTEXWEIGHTPOINTEREXTPROC nglVertexWeightPointerEXT; +PFNGLVERTEXWEIGHTFEXTPROC nglVertexWeightfEXT; +PFNGLVERTEXWEIGHTFVEXTPROC nglVertexWeightfvEXT; +PFNGLVERTEXWEIGHTPOINTEREXTPROC nglVertexWeightPointerEXT; // VertexProgramExtension. -NEL_PFNGLAREPROGRAMSRESIDENTNVPROC nglAreProgramsResidentNV; -NEL_PFNGLBINDPROGRAMNVPROC nglBindProgramNV; -NEL_PFNGLDELETEPROGRAMSNVPROC nglDeleteProgramsNV; -NEL_PFNGLEXECUTEPROGRAMNVPROC nglExecuteProgramNV; -NEL_PFNGLGENPROGRAMSNVPROC nglGenProgramsNV; -NEL_PFNGLGETPROGRAMPARAMETERDVNVPROC nglGetProgramParameterdvNV; -NEL_PFNGLGETPROGRAMPARAMETERFVNVPROC nglGetProgramParameterfvNV; -NEL_PFNGLGETPROGRAMIVNVPROC nglGetProgramivNV; -NEL_PFNGLGETPROGRAMSTRINGNVPROC nglGetProgramStringNV; -NEL_PFNGLGETTRACKMATRIXIVNVPROC nglGetTrackMatrixivNV; -NEL_PFNGLGETVERTEXATTRIBDVNVPROC nglGetVertexAttribdvNV; -NEL_PFNGLGETVERTEXATTRIBFVNVPROC nglGetVertexAttribfvNV; -NEL_PFNGLGETVERTEXATTRIBIVNVPROC nglGetVertexAttribivNV; -NEL_PFNGLGETVERTEXATTRIBPOINTERVNVPROC nglGetVertexAttribPointervNV; -NEL_PFNGLISPROGRAMNVPROC nglIsProgramNV; -NEL_PFNGLLOADPROGRAMNVPROC nglLoadProgramNV; -NEL_PFNGLPROGRAMPARAMETER4DNVPROC nglProgramParameter4dNV; -NEL_PFNGLPROGRAMPARAMETER4DVNVPROC nglProgramParameter4dvNV; -NEL_PFNGLPROGRAMPARAMETER4FNVPROC nglProgramParameter4fNV; -NEL_PFNGLPROGRAMPARAMETER4FVNVPROC nglProgramParameter4fvNV; -NEL_PFNGLPROGRAMPARAMETERS4DVNVPROC nglProgramParameters4dvNV; -NEL_PFNGLPROGRAMPARAMETERS4FVNVPROC nglProgramParameters4fvNV; -NEL_PFNGLREQUESTRESIDENTPROGRAMSNVPROC nglRequestResidentProgramsNV; -NEL_PFNGLTRACKMATRIXNVPROC nglTrackMatrixNV; -NEL_PFNGLVERTEXATTRIBPOINTERNVPROC nglVertexAttribPointerNV; -NEL_PFNGLVERTEXATTRIB1DNVPROC nglVertexAttrib1dNV; -NEL_PFNGLVERTEXATTRIB1DVNVPROC nglVertexAttrib1dvNV; -NEL_PFNGLVERTEXATTRIB1FNVPROC nglVertexAttrib1fNV; -NEL_PFNGLVERTEXATTRIB1FVNVPROC nglVertexAttrib1fvNV; -NEL_PFNGLVERTEXATTRIB1SNVPROC nglVertexAttrib1sNV; -NEL_PFNGLVERTEXATTRIB1SVNVPROC nglVertexAttrib1svNV; -NEL_PFNGLVERTEXATTRIB2DNVPROC nglVertexAttrib2dNV; -NEL_PFNGLVERTEXATTRIB2DVNVPROC nglVertexAttrib2dvNV; -NEL_PFNGLVERTEXATTRIB2FNVPROC nglVertexAttrib2fNV; -NEL_PFNGLVERTEXATTRIB2FVNVPROC nglVertexAttrib2fvNV; -NEL_PFNGLVERTEXATTRIB2SNVPROC nglVertexAttrib2sNV; -NEL_PFNGLVERTEXATTRIB2SVNVPROC nglVertexAttrib2svNV; -NEL_PFNGLVERTEXATTRIB3DNVPROC nglVertexAttrib3dNV; -NEL_PFNGLVERTEXATTRIB3DVNVPROC nglVertexAttrib3dvNV; -NEL_PFNGLVERTEXATTRIB3FNVPROC nglVertexAttrib3fNV; -NEL_PFNGLVERTEXATTRIB3FVNVPROC nglVertexAttrib3fvNV; -NEL_PFNGLVERTEXATTRIB3SNVPROC nglVertexAttrib3sNV; -NEL_PFNGLVERTEXATTRIB3SVNVPROC nglVertexAttrib3svNV; -NEL_PFNGLVERTEXATTRIB4DNVPROC nglVertexAttrib4dNV; -NEL_PFNGLVERTEXATTRIB4DVNVPROC nglVertexAttrib4dvNV; -NEL_PFNGLVERTEXATTRIB4FNVPROC nglVertexAttrib4fNV; -NEL_PFNGLVERTEXATTRIB4FVNVPROC nglVertexAttrib4fvNV; -NEL_PFNGLVERTEXATTRIB4SNVPROC nglVertexAttrib4sNV; -NEL_PFNGLVERTEXATTRIB4SVNVPROC nglVertexAttrib4svNV; -NEL_PFNGLVERTEXATTRIB4UBVNVPROC nglVertexAttrib4ubvNV; -NEL_PFNGLVERTEXATTRIBS1DVNVPROC nglVertexAttribs1dvNV; -NEL_PFNGLVERTEXATTRIBS1FVNVPROC nglVertexAttribs1fvNV; -NEL_PFNGLVERTEXATTRIBS1SVNVPROC nglVertexAttribs1svNV; -NEL_PFNGLVERTEXATTRIBS2DVNVPROC nglVertexAttribs2dvNV; -NEL_PFNGLVERTEXATTRIBS2FVNVPROC nglVertexAttribs2fvNV; -NEL_PFNGLVERTEXATTRIBS2SVNVPROC nglVertexAttribs2svNV; -NEL_PFNGLVERTEXATTRIBS3DVNVPROC nglVertexAttribs3dvNV; -NEL_PFNGLVERTEXATTRIBS3FVNVPROC nglVertexAttribs3fvNV; -NEL_PFNGLVERTEXATTRIBS3SVNVPROC nglVertexAttribs3svNV; -NEL_PFNGLVERTEXATTRIBS4DVNVPROC nglVertexAttribs4dvNV; -NEL_PFNGLVERTEXATTRIBS4FVNVPROC nglVertexAttribs4fvNV; -NEL_PFNGLVERTEXATTRIBS4SVNVPROC nglVertexAttribs4svNV; -NEL_PFNGLVERTEXATTRIBS4UBVNVPROC nglVertexAttribs4ubvNV; +PFNGLAREPROGRAMSRESIDENTNVPROC nglAreProgramsResidentNV; +PFNGLBINDPROGRAMNVPROC nglBindProgramNV; +PFNGLDELETEPROGRAMSNVPROC nglDeleteProgramsNV; +PFNGLEXECUTEPROGRAMNVPROC nglExecuteProgramNV; +PFNGLGENPROGRAMSNVPROC nglGenProgramsNV; +PFNGLGETPROGRAMPARAMETERDVNVPROC nglGetProgramParameterdvNV; +PFNGLGETPROGRAMPARAMETERFVNVPROC nglGetProgramParameterfvNV; +PFNGLGETPROGRAMIVNVPROC nglGetProgramivNV; +PFNGLGETPROGRAMSTRINGNVPROC nglGetProgramStringNV; +PFNGLGETTRACKMATRIXIVNVPROC nglGetTrackMatrixivNV; +PFNGLGETVERTEXATTRIBDVNVPROC nglGetVertexAttribdvNV; +PFNGLGETVERTEXATTRIBFVNVPROC nglGetVertexAttribfvNV; +PFNGLGETVERTEXATTRIBIVNVPROC nglGetVertexAttribivNV; +PFNGLGETVERTEXATTRIBPOINTERVNVPROC nglGetVertexAttribPointervNV; +PFNGLISPROGRAMNVPROC nglIsProgramNV; +PFNGLLOADPROGRAMNVPROC nglLoadProgramNV; +PFNGLPROGRAMPARAMETER4DNVPROC nglProgramParameter4dNV; +PFNGLPROGRAMPARAMETER4DVNVPROC nglProgramParameter4dvNV; +PFNGLPROGRAMPARAMETER4FNVPROC nglProgramParameter4fNV; +PFNGLPROGRAMPARAMETER4FVNVPROC nglProgramParameter4fvNV; +PFNGLPROGRAMPARAMETERS4DVNVPROC nglProgramParameters4dvNV; +PFNGLPROGRAMPARAMETERS4FVNVPROC nglProgramParameters4fvNV; +PFNGLREQUESTRESIDENTPROGRAMSNVPROC nglRequestResidentProgramsNV; +PFNGLTRACKMATRIXNVPROC nglTrackMatrixNV; +PFNGLVERTEXATTRIBPOINTERNVPROC nglVertexAttribPointerNV; +PFNGLVERTEXATTRIB1DNVPROC nglVertexAttrib1dNV; +PFNGLVERTEXATTRIB1DVNVPROC nglVertexAttrib1dvNV; +PFNGLVERTEXATTRIB1FNVPROC nglVertexAttrib1fNV; +PFNGLVERTEXATTRIB1FVNVPROC nglVertexAttrib1fvNV; +PFNGLVERTEXATTRIB1SNVPROC nglVertexAttrib1sNV; +PFNGLVERTEXATTRIB1SVNVPROC nglVertexAttrib1svNV; +PFNGLVERTEXATTRIB2DNVPROC nglVertexAttrib2dNV; +PFNGLVERTEXATTRIB2DVNVPROC nglVertexAttrib2dvNV; +PFNGLVERTEXATTRIB2FNVPROC nglVertexAttrib2fNV; +PFNGLVERTEXATTRIB2FVNVPROC nglVertexAttrib2fvNV; +PFNGLVERTEXATTRIB2SNVPROC nglVertexAttrib2sNV; +PFNGLVERTEXATTRIB2SVNVPROC nglVertexAttrib2svNV; +PFNGLVERTEXATTRIB3DNVPROC nglVertexAttrib3dNV; +PFNGLVERTEXATTRIB3DVNVPROC nglVertexAttrib3dvNV; +PFNGLVERTEXATTRIB3FNVPROC nglVertexAttrib3fNV; +PFNGLVERTEXATTRIB3FVNVPROC nglVertexAttrib3fvNV; +PFNGLVERTEXATTRIB3SNVPROC nglVertexAttrib3sNV; +PFNGLVERTEXATTRIB3SVNVPROC nglVertexAttrib3svNV; +PFNGLVERTEXATTRIB4DNVPROC nglVertexAttrib4dNV; +PFNGLVERTEXATTRIB4DVNVPROC nglVertexAttrib4dvNV; +PFNGLVERTEXATTRIB4FNVPROC nglVertexAttrib4fNV; +PFNGLVERTEXATTRIB4FVNVPROC nglVertexAttrib4fvNV; +PFNGLVERTEXATTRIB4SNVPROC nglVertexAttrib4sNV; +PFNGLVERTEXATTRIB4SVNVPROC nglVertexAttrib4svNV; +PFNGLVERTEXATTRIB4UBVNVPROC nglVertexAttrib4ubvNV; +PFNGLVERTEXATTRIBS1DVNVPROC nglVertexAttribs1dvNV; +PFNGLVERTEXATTRIBS1FVNVPROC nglVertexAttribs1fvNV; +PFNGLVERTEXATTRIBS1SVNVPROC nglVertexAttribs1svNV; +PFNGLVERTEXATTRIBS2DVNVPROC nglVertexAttribs2dvNV; +PFNGLVERTEXATTRIBS2FVNVPROC nglVertexAttribs2fvNV; +PFNGLVERTEXATTRIBS2SVNVPROC nglVertexAttribs2svNV; +PFNGLVERTEXATTRIBS3DVNVPROC nglVertexAttribs3dvNV; +PFNGLVERTEXATTRIBS3FVNVPROC nglVertexAttribs3fvNV; +PFNGLVERTEXATTRIBS3SVNVPROC nglVertexAttribs3svNV; +PFNGLVERTEXATTRIBS4DVNVPROC nglVertexAttribs4dvNV; +PFNGLVERTEXATTRIBS4FVNVPROC nglVertexAttribs4fvNV; +PFNGLVERTEXATTRIBS4SVNVPROC nglVertexAttribs4svNV; +PFNGLVERTEXATTRIBS4UBVNVPROC nglVertexAttribs4ubvNV; // VertexShaderExt extension -NEL_PFNGLBEGINVERTEXSHADEREXTPROC nglBeginVertexShaderEXT; -NEL_PFNGLENDVERTEXSHADEREXTPROC nglEndVertexShaderEXT; -NEL_PFNGLBINDVERTEXSHADEREXTPROC nglBindVertexShaderEXT; -NEL_PFNGLGENVERTEXSHADERSEXTPROC nglGenVertexShadersEXT; -NEL_PFNGLDELETEVERTEXSHADEREXTPROC nglDeleteVertexShaderEXT; -NEL_PFNGLSHADEROP1EXTPROC nglShaderOp1EXT; -NEL_PFNGLSHADEROP2EXTPROC nglShaderOp2EXT; -NEL_PFNGLSHADEROP3EXTPROC nglShaderOp3EXT; -NEL_PFNGLSWIZZLEEXTPROC nglSwizzleEXT; -NEL_PFNGLWRITEMASKEXTPROC nglWriteMaskEXT; -NEL_PFNGLINSERTCOMPONENTEXTPROC nglInsertComponentEXT; -NEL_PFNGLEXTRACTCOMPONENTEXTPROC nglExtractComponentEXT; -NEL_PFNGLGENSYMBOLSEXTPROC nglGenSymbolsEXT; -NEL_PFNGLSETINVARIANTEXTPROC nglSetInvariantEXT; -NEL_PFNGLSETLOCALCONSTANTEXTPROC nglSetLocalConstantEXT; -NEL_PFNGLVARIANTPOINTEREXTPROC nglVariantPointerEXT; -NEL_PFNGLENABLEVARIANTCLIENTSTATEEXTPROC nglEnableVariantClientStateEXT; -NEL_PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC nglDisableVariantClientStateEXT; -NEL_PFNGLBINDLIGHTPARAMETEREXTPROC nglBindLightParameterEXT; -NEL_PFNGLBINDMATERIALPARAMETEREXTPROC nglBindMaterialParameterEXT; -NEL_PFNGLBINDTEXGENPARAMETEREXTPROC nglBindTexGenParameterEXT; -NEL_PFNGLBINDTEXTUREUNITPARAMETEREXTPROC nglBindTextureUnitParameterEXT; -NEL_PFNGLBINDPARAMETEREXTPROC nglBindParameterEXT; -NEL_PFNGLISVARIANTENABLEDEXTPROC nglIsVariantEnabledEXT; -NEL_PFNGLGETVARIANTBOOLEANVEXTPROC nglGetVariantBooleanvEXT; -NEL_PFNGLGETVARIANTINTEGERVEXTPROC nglGetVariantIntegervEXT; -NEL_PFNGLGETVARIANTFLOATVEXTPROC nglGetVariantFloatvEXT; -NEL_PFNGLGETVARIANTPOINTERVEXTPROC nglGetVariantPointervEXT; -NEL_PFNGLGETINVARIANTBOOLEANVEXTPROC nglGetInvariantBooleanvEXT; -NEL_PFNGLGETINVARIANTINTEGERVEXTPROC nglGetInvariantIntegervEXT; -NEL_PFNGLGETINVARIANTFLOATVEXTPROC nglGetInvariantFloatvEXT; -NEL_PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC nglGetLocalConstantBooleanvEXT; -NEL_PFNGLGETLOCALCONSTANTINTEGERVEXTPROC nglGetLocalConstantIntegervEXT; -NEL_PFNGLGETLOCALCONSTANTFLOATVEXTPROC nglGetLocalConstantFloatvEXT; +PFNGLBEGINVERTEXSHADEREXTPROC nglBeginVertexShaderEXT; +PFNGLENDVERTEXSHADEREXTPROC nglEndVertexShaderEXT; +PFNGLBINDVERTEXSHADEREXTPROC nglBindVertexShaderEXT; +PFNGLGENVERTEXSHADERSEXTPROC nglGenVertexShadersEXT; +PFNGLDELETEVERTEXSHADEREXTPROC nglDeleteVertexShaderEXT; +PFNGLSHADEROP1EXTPROC nglShaderOp1EXT; +PFNGLSHADEROP2EXTPROC nglShaderOp2EXT; +PFNGLSHADEROP3EXTPROC nglShaderOp3EXT; +PFNGLSWIZZLEEXTPROC nglSwizzleEXT; +PFNGLWRITEMASKEXTPROC nglWriteMaskEXT; +PFNGLINSERTCOMPONENTEXTPROC nglInsertComponentEXT; +PFNGLEXTRACTCOMPONENTEXTPROC nglExtractComponentEXT; +PFNGLGENSYMBOLSEXTPROC nglGenSymbolsEXT; +PFNGLSETINVARIANTEXTPROC nglSetInvariantEXT; +PFNGLSETLOCALCONSTANTEXTPROC nglSetLocalConstantEXT; +PFNGLVARIANTPOINTEREXTPROC nglVariantPointerEXT; +PFNGLENABLEVARIANTCLIENTSTATEEXTPROC nglEnableVariantClientStateEXT; +PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC nglDisableVariantClientStateEXT; +PFNGLBINDLIGHTPARAMETEREXTPROC nglBindLightParameterEXT; +PFNGLBINDMATERIALPARAMETEREXTPROC nglBindMaterialParameterEXT; +PFNGLBINDTEXGENPARAMETEREXTPROC nglBindTexGenParameterEXT; +PFNGLBINDTEXTUREUNITPARAMETEREXTPROC nglBindTextureUnitParameterEXT; +PFNGLBINDPARAMETEREXTPROC nglBindParameterEXT; +PFNGLISVARIANTENABLEDEXTPROC nglIsVariantEnabledEXT; +PFNGLGETVARIANTBOOLEANVEXTPROC nglGetVariantBooleanvEXT; +PFNGLGETVARIANTINTEGERVEXTPROC nglGetVariantIntegervEXT; +PFNGLGETVARIANTFLOATVEXTPROC nglGetVariantFloatvEXT; +PFNGLGETVARIANTPOINTERVEXTPROC nglGetVariantPointervEXT; +PFNGLGETINVARIANTBOOLEANVEXTPROC nglGetInvariantBooleanvEXT; +PFNGLGETINVARIANTINTEGERVEXTPROC nglGetInvariantIntegervEXT; +PFNGLGETINVARIANTFLOATVEXTPROC nglGetInvariantFloatvEXT; +PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC nglGetLocalConstantBooleanvEXT; +PFNGLGETLOCALCONSTANTINTEGERVEXTPROC nglGetLocalConstantIntegervEXT; +PFNGLGETLOCALCONSTANTFLOATVEXTPROC nglGetLocalConstantFloatvEXT; // SecondaryColor extension -NEL_PFNGLSECONDARYCOLOR3BEXTPROC nglSecondaryColor3bEXT; -NEL_PFNGLSECONDARYCOLOR3BVEXTPROC nglSecondaryColor3bvEXT; -NEL_PFNGLSECONDARYCOLOR3DEXTPROC nglSecondaryColor3dEXT; -NEL_PFNGLSECONDARYCOLOR3DVEXTPROC nglSecondaryColor3dvEXT; -NEL_PFNGLSECONDARYCOLOR3FEXTPROC nglSecondaryColor3fEXT; -NEL_PFNGLSECONDARYCOLOR3FVEXTPROC nglSecondaryColor3fvEXT; -NEL_PFNGLSECONDARYCOLOR3IEXTPROC nglSecondaryColor3iEXT; -NEL_PFNGLSECONDARYCOLOR3IVEXTPROC nglSecondaryColor3ivEXT; -NEL_PFNGLSECONDARYCOLOR3SEXTPROC nglSecondaryColor3sEXT; -NEL_PFNGLSECONDARYCOLOR3SVEXTPROC nglSecondaryColor3svEXT; -NEL_PFNGLSECONDARYCOLOR3UBEXTPROC nglSecondaryColor3ubEXT; -NEL_PFNGLSECONDARYCOLOR3UBVEXTPROC nglSecondaryColor3ubvEXT; -NEL_PFNGLSECONDARYCOLOR3UIEXTPROC nglSecondaryColor3uiEXT; -NEL_PFNGLSECONDARYCOLOR3UIVEXTPROC nglSecondaryColor3uivEXT; -NEL_PFNGLSECONDARYCOLOR3USEXTPROC nglSecondaryColor3usEXT; -NEL_PFNGLSECONDARYCOLOR3USVEXTPROC nglSecondaryColor3usvEXT; -NEL_PFNGLSECONDARYCOLORPOINTEREXTPROC nglSecondaryColorPointerEXT; +PFNGLSECONDARYCOLOR3BEXTPROC nglSecondaryColor3bEXT; +PFNGLSECONDARYCOLOR3BVEXTPROC nglSecondaryColor3bvEXT; +PFNGLSECONDARYCOLOR3DEXTPROC nglSecondaryColor3dEXT; +PFNGLSECONDARYCOLOR3DVEXTPROC nglSecondaryColor3dvEXT; +PFNGLSECONDARYCOLOR3FEXTPROC nglSecondaryColor3fEXT; +PFNGLSECONDARYCOLOR3FVEXTPROC nglSecondaryColor3fvEXT; +PFNGLSECONDARYCOLOR3IEXTPROC nglSecondaryColor3iEXT; +PFNGLSECONDARYCOLOR3IVEXTPROC nglSecondaryColor3ivEXT; +PFNGLSECONDARYCOLOR3SEXTPROC nglSecondaryColor3sEXT; +PFNGLSECONDARYCOLOR3SVEXTPROC nglSecondaryColor3svEXT; +PFNGLSECONDARYCOLOR3UBEXTPROC nglSecondaryColor3ubEXT; +PFNGLSECONDARYCOLOR3UBVEXTPROC nglSecondaryColor3ubvEXT; +PFNGLSECONDARYCOLOR3UIEXTPROC nglSecondaryColor3uiEXT; +PFNGLSECONDARYCOLOR3UIVEXTPROC nglSecondaryColor3uivEXT; +PFNGLSECONDARYCOLOR3USEXTPROC nglSecondaryColor3usEXT; +PFNGLSECONDARYCOLOR3USVEXTPROC nglSecondaryColor3usvEXT; +PFNGLSECONDARYCOLORPOINTEREXTPROC nglSecondaryColorPointerEXT; // BlendColor extension -NEL_PFNGLBLENDCOLOREXTPROC nglBlendColorEXT; +PFNGLBLENDCOLOREXTPROC nglBlendColorEXT; //======================== -NEL_PFNGLNEWOBJECTBUFFERATIPROC nglNewObjectBufferATI; -NEL_PFNGLISOBJECTBUFFERATIPROC nglIsObjectBufferATI; -NEL_PFNGLUPDATEOBJECTBUFFERATIPROC nglUpdateObjectBufferATI; -NEL_PFNGLGETOBJECTBUFFERFVATIPROC nglGetObjectBufferfvATI; -NEL_PFNGLGETOBJECTBUFFERIVATIPROC nglGetObjectBufferivATI; -NEL_PFNGLDELETEOBJECTBUFFERATIPROC nglDeleteObjectBufferATI; -NEL_PFNGLARRAYOBJECTATIPROC nglArrayObjectATI; -NEL_PFNGLGETARRAYOBJECTFVATIPROC nglGetArrayObjectfvATI; -NEL_PFNGLGETARRAYOBJECTIVATIPROC nglGetArrayObjectivATI; -NEL_PFNGLVARIANTARRAYOBJECTATIPROC nglVariantArrayObjectATI; -NEL_PFNGLGETVARIANTARRAYOBJECTFVATIPROC nglGetVariantArrayObjectfvATI; -NEL_PFNGLGETVARIANTARRAYOBJECTIVATIPROC nglGetVariantArrayObjectivATI; +PFNGLNEWOBJECTBUFFERATIPROC nglNewObjectBufferATI; +PFNGLISOBJECTBUFFERATIPROC nglIsObjectBufferATI; +PFNGLUPDATEOBJECTBUFFERATIPROC nglUpdateObjectBufferATI; +PFNGLGETOBJECTBUFFERFVATIPROC nglGetObjectBufferfvATI; +PFNGLGETOBJECTBUFFERIVATIPROC nglGetObjectBufferivATI; +PFNGLFREEOBJECTBUFFERATIPROC nglFreeObjectBufferATI; +PFNGLARRAYOBJECTATIPROC nglArrayObjectATI; +PFNGLGETARRAYOBJECTFVATIPROC nglGetArrayObjectfvATI; +PFNGLGETARRAYOBJECTIVATIPROC nglGetArrayObjectivATI; +PFNGLVARIANTARRAYOBJECTATIPROC nglVariantArrayObjectATI; +PFNGLGETVARIANTARRAYOBJECTFVATIPROC nglGetVariantArrayObjectfvATI; +PFNGLGETVARIANTARRAYOBJECTIVATIPROC nglGetVariantArrayObjectivATI; // GL_ATI_map_object_buffer -NEL_PFNGLMAPOBJECTBUFFERATIPROC nglMapObjectBufferATI; -NEL_PFNGLUNMAPOBJECTBUFFERATIPROC nglUnmapObjectBufferATI; +PFNGLMAPOBJECTBUFFERATIPROC nglMapObjectBufferATI; +PFNGLUNMAPOBJECTBUFFERATIPROC nglUnmapObjectBufferATI; // GL_ATI_vertex_attrib_array_object -NEL_PFNGLVERTEXATTRIBARRAYOBJECTATIPROC nglVertexAttribArrayObjectATI; -NEL_PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC nglGetVertexAttribArrayObjectfvATI; -NEL_PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC nglGetVertexAttribArrayObjectivATI; +PFNGLVERTEXATTRIBARRAYOBJECTATIPROC nglVertexAttribArrayObjectATI; +PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC nglGetVertexAttribArrayObjectfvATI; +PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC nglGetVertexAttribArrayObjectivATI; // GL_ATI_envmap_bumpmap extension PFNGLTEXBUMPPARAMETERIVATIPROC nglTexBumpParameterivATI; @@ -324,42 +322,42 @@ PFNGLGETTEXBUMPPARAMETERIVATIPROC nglGetTexBumpParameterivATI; PFNGLGETTEXBUMPPARAMETERFVATIPROC nglGetTexBumpParameterfvATI; // GL_ATI_fragment_shader extension -NEL_PFNGLGENFRAGMENTSHADERSATIPROC nglGenFragmentShadersATI; -NEL_PFNGLBINDFRAGMENTSHADERATIPROC nglBindFragmentShaderATI; -NEL_PFNGLDELETEFRAGMENTSHADERATIPROC nglDeleteFragmentShaderATI; -NEL_PFNGLBEGINFRAGMENTSHADERATIPROC nglBeginFragmentShaderATI; -NEL_PFNGLENDFRAGMENTSHADERATIPROC nglEndFragmentShaderATI; -NEL_PFNGLPASSTEXCOORDATIPROC nglPassTexCoordATI; -NEL_PFNGLSAMPLEMAPATIPROC nglSampleMapATI; -NEL_PFNGLCOLORFRAGMENTOP1ATIPROC nglColorFragmentOp1ATI; -NEL_PFNGLCOLORFRAGMENTOP2ATIPROC nglColorFragmentOp2ATI; -NEL_PFNGLCOLORFRAGMENTOP3ATIPROC nglColorFragmentOp3ATI; -NEL_PFNGLALPHAFRAGMENTOP1ATIPROC nglAlphaFragmentOp1ATI; -NEL_PFNGLALPHAFRAGMENTOP2ATIPROC nglAlphaFragmentOp2ATI; -NEL_PFNGLALPHAFRAGMENTOP3ATIPROC nglAlphaFragmentOp3ATI; -NEL_PFNGLSETFRAGMENTSHADERCONSTANTATIPROC nglSetFragmentShaderConstantATI; +PFNGLGENFRAGMENTSHADERSATIPROC nglGenFragmentShadersATI; +PFNGLBINDFRAGMENTSHADERATIPROC nglBindFragmentShaderATI; +PFNGLDELETEFRAGMENTSHADERATIPROC nglDeleteFragmentShaderATI; +PFNGLBEGINFRAGMENTSHADERATIPROC nglBeginFragmentShaderATI; +PFNGLENDFRAGMENTSHADERATIPROC nglEndFragmentShaderATI; +PFNGLPASSTEXCOORDATIPROC nglPassTexCoordATI; +PFNGLSAMPLEMAPATIPROC nglSampleMapATI; +PFNGLCOLORFRAGMENTOP1ATIPROC nglColorFragmentOp1ATI; +PFNGLCOLORFRAGMENTOP2ATIPROC nglColorFragmentOp2ATI; +PFNGLCOLORFRAGMENTOP3ATIPROC nglColorFragmentOp3ATI; +PFNGLALPHAFRAGMENTOP1ATIPROC nglAlphaFragmentOp1ATI; +PFNGLALPHAFRAGMENTOP2ATIPROC nglAlphaFragmentOp2ATI; +PFNGLALPHAFRAGMENTOP3ATIPROC nglAlphaFragmentOp3ATI; +PFNGLSETFRAGMENTSHADERCONSTANTATIPROC nglSetFragmentShaderConstantATI; // GL_ARB_fragment_program // the following functions are the sames than with GL_ARB_vertex_program -//NEL_PFNGLPROGRAMSTRINGARBPROC nglProgramStringARB; -//NEL_PFNGLBINDPROGRAMARBPROC nglBindProgramARB; -//NEL_PFNGLDELETEPROGRAMSARBPROC nglDeleteProgramsARB; -//NEL_PFNGLGENPROGRAMSARBPROC nglGenProgramsARB; -//NEL_PFNGLPROGRAMENVPARAMETER4DARBPROC nglProgramEnvParameter4dARB; -//NEL_PFNGLPROGRAMENVPARAMETER4DVARBPROC nglProgramEnvParameter4dvARB; -//NEL_PFNGLPROGRAMENVPARAMETER4FARBPROC nglProgramEnvParameter4fARB; -//NEL_PFNGLPROGRAMENVPARAMETER4FVARBPROC nglProgramEnvParameter4fvARB; -NEL_PFNGLPROGRAMLOCALPARAMETER4DARBPROC nglGetProgramLocalParameter4dARB; -NEL_PFNGLPROGRAMLOCALPARAMETER4DVARBPROC nglGetProgramLocalParameter4dvARB; -NEL_PFNGLPROGRAMLOCALPARAMETER4FARBPROC nglGetProgramLocalParameter4fARB; -NEL_PFNGLPROGRAMLOCALPARAMETER4FVARBPROC nglGetProgramLocalParameter4fvARB; -//NEL_PFNGLGETPROGRAMENVPARAMETERDVARBPROC nglGetProgramEnvParameterdvARB; -//NEL_PFNGLGETPROGRAMENVPARAMETERFVARBPROC nglGetProgramEnvParameterfvARB; -//NEL_PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC nglGetProgramLocalParameterdvARB; -//NEL_PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC nglGetProgramLocalParameterfvARB; -//NEL_PFNGLGETPROGRAMIVARBPROC nglGetProgramivARB; -//NEL_PFNGLGETPROGRAMSTRINGARBPROC nglGetProgramStringARB; -//NEL_PFNGLISPROGRAMARBPROC nglIsProgramARB; +//PFNGLPROGRAMSTRINGARBPROC nglProgramStringARB; +//PFNGLBINDPROGRAMARBPROC nglBindProgramARB; +//PFNGLDELETEPROGRAMSARBPROC nglDeleteProgramsARB; +//PFNGLGENPROGRAMSARBPROC nglGenProgramsARB; +//PFNGLPROGRAMENVPARAMETER4DARBPROC nglProgramEnvParameter4dARB; +//PFNGLPROGRAMENVPARAMETER4DVARBPROC nglProgramEnvParameter4dvARB; +//PFNGLPROGRAMENVPARAMETER4FARBPROC nglProgramEnvParameter4fARB; +//PFNGLPROGRAMENVPARAMETER4FVARBPROC nglProgramEnvParameter4fvARB; +PFNGLPROGRAMLOCALPARAMETER4DARBPROC nglGetProgramLocalParameter4dARB; +PFNGLPROGRAMLOCALPARAMETER4DVARBPROC nglGetProgramLocalParameter4dvARB; +PFNGLPROGRAMLOCALPARAMETER4FARBPROC nglGetProgramLocalParameter4fARB; +PFNGLPROGRAMLOCALPARAMETER4FVARBPROC nglGetProgramLocalParameter4fvARB; +//PFNGLGETPROGRAMENVPARAMETERDVARBPROC nglGetProgramEnvParameterdvARB; +//PFNGLGETPROGRAMENVPARAMETERFVARBPROC nglGetProgramEnvParameterfvARB; +//PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC nglGetProgramLocalParameterdvARB; +//PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC nglGetProgramLocalParameterfvARB; +//PFNGLGETPROGRAMIVARBPROC nglGetProgramivARB; +//PFNGLGETPROGRAMSTRINGARBPROC nglGetProgramStringARB; +//PFNGLISPROGRAMARBPROC nglIsProgramARB; // GL_ARB_vertex_buffer_object PFNGLBINDBUFFERARBPROC nglBindBufferARB; @@ -439,38 +437,38 @@ PFNGLGETVERTEXATTRIBPOINTERVARBPROC nglGetVertexAttribPointervARB; PFNGLISPROGRAMARBPROC nglIsProgramARB; // NV_occlusion_query -NEL_PFNGLGENOCCLUSIONQUERIESNVPROC nglGenOcclusionQueriesNV; -NEL_PFNGLDELETEOCCLUSIONQUERIESNVPROC nglDeleteOcclusionQueriesNV; -NEL_PFNGLISOCCLUSIONQUERYNVPROC nglIsOcclusionQueryNV; -NEL_PFNGLBEGINOCCLUSIONQUERYNVPROC nglBeginOcclusionQueryNV; -NEL_PFNGLENDOCCLUSIONQUERYNVPROC nglEndOcclusionQueryNV; -NEL_PFNGLGETOCCLUSIONQUERYIVNVPROC nglGetOcclusionQueryivNV; -NEL_PFNGLGETOCCLUSIONQUERYUIVNVPROC nglGetOcclusionQueryuivNV; +PFNGLGENOCCLUSIONQUERIESNVPROC nglGenOcclusionQueriesNV; +PFNGLDELETEOCCLUSIONQUERIESNVPROC nglDeleteOcclusionQueriesNV; +PFNGLISOCCLUSIONQUERYNVPROC nglIsOcclusionQueryNV; +PFNGLBEGINOCCLUSIONQUERYNVPROC nglBeginOcclusionQueryNV; +PFNGLENDOCCLUSIONQUERYNVPROC nglEndOcclusionQueryNV; +PFNGLGETOCCLUSIONQUERYIVNVPROC nglGetOcclusionQueryivNV; +PFNGLGETOCCLUSIONQUERYUIVNVPROC nglGetOcclusionQueryuivNV; // GL_EXT_framebuffer_object -NEL_PFNGLISRENDERBUFFEREXTPROC nglIsRenderbufferEXT; -NEL_PFNGLISFRAMEBUFFEREXTPROC nglIsFramebufferEXT; -NEL_PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC nglCheckFramebufferStatusEXT; -NEL_PFNGLGENFRAMEBUFFERSEXTPROC nglGenFramebuffersEXT; -NEL_PFNGLBINDFRAMEBUFFEREXTPROC nglBindFramebufferEXT; -NEL_PFNGLFRAMEBUFFERTEXTURE2DEXTPROC nglFramebufferTexture2DEXT; -NEL_PFNGLGENRENDERBUFFERSEXTPROC nglGenRenderbuffersEXT; -NEL_PFNGLBINDRENDERBUFFEREXTPROC nglBindRenderbufferEXT; -NEL_PFNGLRENDERBUFFERSTORAGEEXTPROC nglRenderbufferStorageEXT; -NEL_PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC nglFramebufferRenderbufferEXT; -NEL_PFNGLDELETERENDERBUFFERSEXTPROC nglDeleteRenderbuffersEXT; -NEL_PFNGLDELETEFRAMEBUFFERSEXTPROC nglDeleteFramebuffersEXT; -NEL_PFNGETRENDERBUFFERPARAMETERIVEXTPROC nglGetRenderbufferParameterivEXT; -NEL_PFNGENERATEMIPMAPEXTPROC nglGenerateMipmapEXT; +PFNGLISRENDERBUFFEREXTPROC nglIsRenderbufferEXT; +PFNGLISFRAMEBUFFEREXTPROC nglIsFramebufferEXT; +PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC nglCheckFramebufferStatusEXT; +PFNGLGENFRAMEBUFFERSEXTPROC nglGenFramebuffersEXT; +PFNGLBINDFRAMEBUFFEREXTPROC nglBindFramebufferEXT; +PFNGLFRAMEBUFFERTEXTURE2DEXTPROC nglFramebufferTexture2DEXT; +PFNGLGENRENDERBUFFERSEXTPROC nglGenRenderbuffersEXT; +PFNGLBINDRENDERBUFFEREXTPROC nglBindRenderbufferEXT; +PFNGLRENDERBUFFERSTORAGEEXTPROC nglRenderbufferStorageEXT; +PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC nglFramebufferRenderbufferEXT; +PFNGLDELETERENDERBUFFERSEXTPROC nglDeleteRenderbuffersEXT; +PFNGLDELETEFRAMEBUFFERSEXTPROC nglDeleteFramebuffersEXT; +PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC nglGetRenderbufferParameterivEXT; +PFNGLGENERATEMIPMAPEXTPROC nglGenerateMipmapEXT; // GL_EXT_framebuffer_blit -NEL_PFNGLBLITFRAMEBUFFEREXTPROC nglBlitFramebufferEXT; +PFNGLBLITFRAMEBUFFEREXTPROC nglBlitFramebufferEXT; // GL_EXT_framebuffer_multisample -NEL_PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC nglRenderbufferStorageMultisampleEXT; +PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC nglRenderbufferStorageMultisampleEXT; // GL_ARB_multisample -NEL_PFNGLSAMPLECOVERAGEARBPROC nglSampleCoverageARB; +PFNGLSAMPLECOVERAGEARBPROC nglSampleCoverageARB; #ifdef NL_OS_WINDOWS PFNWGLALLOCATEMEMORYNVPROC nwglAllocateMemoryNV; @@ -495,19 +493,31 @@ PFNWGLGETSWAPINTERVALEXTPROC nwglGetSwapIntervalEXT; // WGL_ARB_extensions_string PFNWGLGETEXTENSIONSSTRINGARBPROC nwglGetExtensionsStringARB; +// WGL_AMD_gpu_association +//======================== +PFNWGLGETGPUIDSAMDPROC nwglGetGPUIDsAMD; +PFNWGLGETGPUINFOAMDPROC nwglGetGPUInfoAMD; +PFNWGLGETCONTEXTGPUIDAMDPROC nwglGetContextGPUIDAMD; +PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC nwglCreateAssociatedContextAMD; +PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC nwglCreateAssociatedContextAttribsAMD; +PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC nwglDeleteAssociatedContextAMD; +PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC nwglMakeAssociatedContextCurrentAMD; +PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC nwglGetCurrentAssociatedContextAMD; +PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC nwglBlitContextFramebufferAMD; + #elif defined(NL_OS_MAC) #elif defined(NL_OS_UNIX) -NEL_PFNGLXALLOCATEMEMORYNVPROC nglXAllocateMemoryNV; -NEL_PFNGLXFREEMEMORYNVPROC nglXFreeMemoryNV; +PFNGLXALLOCATEMEMORYNVPROC nglXAllocateMemoryNV; +PFNGLXFREEMEMORYNVPROC nglXFreeMemoryNV; // Swap control extensions -NEL_PFNGLXSWAPINTERVALEXTPROC nglXSwapIntervalEXT; +PFNGLXSWAPINTERVALEXTPROC nglXSwapIntervalEXT; PFNGLXSWAPINTERVALSGIPROC nglXSwapIntervalSGI; -NEL_PFNGLXSWAPINTERVALMESAPROC nglXSwapIntervalMESA; -NEL_PFNGLXGETSWAPINTERVALMESAPROC nglXGetSwapIntervalMESA; +PFNGLXSWAPINTERVALMESAPROC nglXSwapIntervalMESA; +PFNGLXGETSWAPINTERVALMESAPROC nglXGetSwapIntervalMESA; #endif @@ -549,42 +559,42 @@ static bool setupARBMultiTexture(const char *glext) #ifndef USE_OPENGLES CHECK_EXT("GL_ARB_multitexture"); - CHECK_ADDRESS(NEL_PFNGLACTIVETEXTUREARBPROC, glActiveTextureARB); - CHECK_ADDRESS(NEL_PFNGLCLIENTACTIVETEXTUREARBPROC, glClientActiveTextureARB); + CHECK_ADDRESS(PFNGLACTIVETEXTUREARBPROC, glActiveTextureARB); + CHECK_ADDRESS(PFNGLCLIENTACTIVETEXTUREARBPROC, glClientActiveTextureARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD1SARBPROC, glMultiTexCoord1sARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD1IARBPROC, glMultiTexCoord1iARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD1FARBPROC, glMultiTexCoord1fARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD1DARBPROC, glMultiTexCoord1dARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD2SARBPROC, glMultiTexCoord2sARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD2IARBPROC, glMultiTexCoord2iARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD2FARBPROC, glMultiTexCoord2fARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD2DARBPROC, glMultiTexCoord2dARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD3SARBPROC, glMultiTexCoord3sARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD3IARBPROC, glMultiTexCoord3iARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD3FARBPROC, glMultiTexCoord3fARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD3DARBPROC, glMultiTexCoord3dARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD4SARBPROC, glMultiTexCoord4sARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD4IARBPROC, glMultiTexCoord4iARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD4FARBPROC, glMultiTexCoord4fARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD4DARBPROC, glMultiTexCoord4dARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD1SARBPROC, glMultiTexCoord1sARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD1IARBPROC, glMultiTexCoord1iARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD1FARBPROC, glMultiTexCoord1fARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD1DARBPROC, glMultiTexCoord1dARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD2SARBPROC, glMultiTexCoord2sARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD2IARBPROC, glMultiTexCoord2iARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD2FARBPROC, glMultiTexCoord2fARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD2DARBPROC, glMultiTexCoord2dARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD3SARBPROC, glMultiTexCoord3sARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD3IARBPROC, glMultiTexCoord3iARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD3FARBPROC, glMultiTexCoord3fARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD3DARBPROC, glMultiTexCoord3dARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD4SARBPROC, glMultiTexCoord4sARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD4IARBPROC, glMultiTexCoord4iARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD4FARBPROC, glMultiTexCoord4fARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD4DARBPROC, glMultiTexCoord4dARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD1SVARBPROC, glMultiTexCoord1svARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD1IVARBPROC, glMultiTexCoord1ivARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD1FVARBPROC, glMultiTexCoord1fvARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD1DVARBPROC, glMultiTexCoord1dvARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD2SVARBPROC, glMultiTexCoord2svARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD2IVARBPROC, glMultiTexCoord2ivARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD2FVARBPROC, glMultiTexCoord2fvARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD2DVARBPROC, glMultiTexCoord2dvARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD3SVARBPROC, glMultiTexCoord3svARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD3IVARBPROC, glMultiTexCoord3ivARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD3FVARBPROC, glMultiTexCoord3fvARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD3DVARBPROC, glMultiTexCoord3dvARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD4SVARBPROC, glMultiTexCoord4svARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD4IVARBPROC, glMultiTexCoord4ivARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD4FVARBPROC, glMultiTexCoord4fvARB); - CHECK_ADDRESS(NEL_PFNGLMULTITEXCOORD4DVARBPROC, glMultiTexCoord4dvARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD1SVARBPROC, glMultiTexCoord1svARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD1IVARBPROC, glMultiTexCoord1ivARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD1FVARBPROC, glMultiTexCoord1fvARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD1DVARBPROC, glMultiTexCoord1dvARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD2SVARBPROC, glMultiTexCoord2svARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD2IVARBPROC, glMultiTexCoord2ivARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD2FVARBPROC, glMultiTexCoord2fvARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD2DVARBPROC, glMultiTexCoord2dvARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD3SVARBPROC, glMultiTexCoord3svARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD3IVARBPROC, glMultiTexCoord3ivARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD3FVARBPROC, glMultiTexCoord3fvARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD3DVARBPROC, glMultiTexCoord3dvARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD4SVARBPROC, glMultiTexCoord4svARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD4IVARBPROC, glMultiTexCoord4ivARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD4FVARBPROC, glMultiTexCoord4fvARB); + CHECK_ADDRESS(PFNGLMULTITEXCOORD4DVARBPROC, glMultiTexCoord4dvARB); #endif return true; @@ -611,13 +621,13 @@ static bool setupARBTextureCompression(const char *glext) #ifndef USE_OPENGLES CHECK_EXT("GL_ARB_texture_compression"); - CHECK_ADDRESS(NEL_PFNGLCOMPRESSEDTEXIMAGE3DARBPROC, glCompressedTexImage3DARB); - CHECK_ADDRESS(NEL_PFNGLCOMPRESSEDTEXIMAGE2DARBPROC, glCompressedTexImage2DARB); - CHECK_ADDRESS(NEL_PFNGLCOMPRESSEDTEXIMAGE1DARBPROC, glCompressedTexImage1DARB); - CHECK_ADDRESS(NEL_PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC, glCompressedTexSubImage3DARB); - CHECK_ADDRESS(NEL_PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC, glCompressedTexSubImage2DARB); - CHECK_ADDRESS(NEL_PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC, glCompressedTexSubImage1DARB); - CHECK_ADDRESS(NEL_PFNGLGETCOMPRESSEDTEXIMAGEARBPROC, glGetCompressedTexImageARB); + CHECK_ADDRESS(PFNGLCOMPRESSEDTEXIMAGE3DARBPROC, glCompressedTexImage3DARB); + CHECK_ADDRESS(PFNGLCOMPRESSEDTEXIMAGE2DARBPROC, glCompressedTexImage2DARB); + CHECK_ADDRESS(PFNGLCOMPRESSEDTEXIMAGE1DARBPROC, glCompressedTexImage1DARB); + CHECK_ADDRESS(PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC, glCompressedTexSubImage3DARB); + CHECK_ADDRESS(PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC, glCompressedTexSubImage2DARB); + CHECK_ADDRESS(PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC, glCompressedTexSubImage1DARB); + CHECK_ADDRESS(PFNGLGETCOMPRESSEDTEXIMAGEARBPROC, glGetCompressedTexImageARB); #endif return true; @@ -643,9 +653,9 @@ static bool setupOESMapBuffer(const char *glext) CHECK_EXT("OES_mapbuffer"); #ifdef USE_OPENGLES - CHECK_ADDRESS(NEL_PFNGLMAPBUFFEROESPROC, glMapBufferOES); - CHECK_ADDRESS(NEL_PFNGLUNMAPBUFFEROESPROC, glUnmapBufferOES); - CHECK_ADDRESS(NEL_PFNGLGETBUFFERPOINTERVOESPROC, glGetBufferPointervOES); + CHECK_ADDRESS(PFNGLMAPBUFFEROESPROC, glMapBufferOES); + CHECK_ADDRESS(PFNGLUNMAPBUFFEROESPROC, glUnmapBufferOES); + CHECK_ADDRESS(PFNGLGETBUFFERPOINTERVOESPROC, glGetBufferPointervOES); #endif return true; @@ -678,25 +688,25 @@ static bool setupNVVertexArrayRange(const char *glext) #ifndef USE_OPENGLES // Get VAR address. - CHECK_ADDRESS(NEL_PFNGLFLUSHVERTEXARRAYRANGENVPROC, glFlushVertexArrayRangeNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXARRAYRANGENVPROC, glVertexArrayRangeNV); + CHECK_ADDRESS(PFNGLFLUSHVERTEXARRAYRANGENVPROC, glFlushVertexArrayRangeNV); + CHECK_ADDRESS(PFNGLVERTEXARRAYRANGENVPROC, glVertexArrayRangeNV); #ifdef NL_OS_WINDOWS CHECK_ADDRESS(PFNWGLALLOCATEMEMORYNVPROC, wglAllocateMemoryNV); CHECK_ADDRESS(PFNWGLFREEMEMORYNVPROC, wglFreeMemoryNV); #elif defined(NL_OS_UNIX) && !defined(NL_OS_MAC) - CHECK_ADDRESS(NEL_PFNGLXALLOCATEMEMORYNVPROC, glXAllocateMemoryNV); - CHECK_ADDRESS(NEL_PFNGLXFREEMEMORYNVPROC, glXFreeMemoryNV); + CHECK_ADDRESS(PFNGLXALLOCATEMEMORYNVPROC, glXAllocateMemoryNV); + CHECK_ADDRESS(PFNGLXFREEMEMORYNVPROC, glXFreeMemoryNV); #endif // Get fence address. - CHECK_ADDRESS(NEL_PFNGLDELETEFENCESNVPROC, glDeleteFencesNV); - CHECK_ADDRESS(NEL_PFNGLGENFENCESNVPROC, glGenFencesNV); - CHECK_ADDRESS(NEL_PFNGLISFENCENVPROC, glIsFenceNV); - CHECK_ADDRESS(NEL_PFNGLTESTFENCENVPROC, glTestFenceNV); - CHECK_ADDRESS(NEL_PFNGLGETFENCEIVNVPROC, glGetFenceivNV); - CHECK_ADDRESS(NEL_PFNGLFINISHFENCENVPROC, glFinishFenceNV); - CHECK_ADDRESS(NEL_PFNGLSETFENCENVPROC, glSetFenceNV); + CHECK_ADDRESS(PFNGLDELETEFENCESNVPROC, glDeleteFencesNV); + CHECK_ADDRESS(PFNGLGENFENCESNVPROC, glGenFencesNV); + CHECK_ADDRESS(PFNGLISFENCENVPROC, glIsFenceNV); + CHECK_ADDRESS(PFNGLTESTFENCENVPROC, glTestFenceNV); + CHECK_ADDRESS(PFNGLGETFENCEIVNVPROC, glGetFenceivNV); + CHECK_ADDRESS(PFNGLFINISHFENCENVPROC, glFinishFenceNV); + CHECK_ADDRESS(PFNGLSETFENCENVPROC, glSetFenceNV); #endif return true; @@ -725,9 +735,9 @@ static bool setupEXTVertexWeighting(const char *glext) CHECK_EXT("GL_EXT_vertex_weighting"); #ifndef USE_OPENGLES - CHECK_ADDRESS(NEL_PFNGLVERTEXWEIGHTFEXTPROC, glVertexWeightfEXT); - CHECK_ADDRESS(NEL_PFNGLVERTEXWEIGHTFVEXTPROC, glVertexWeightfvEXT); - CHECK_ADDRESS(NEL_PFNGLVERTEXWEIGHTPOINTEREXTPROC, glVertexWeightPointerEXT); + CHECK_ADDRESS(PFNGLVERTEXWEIGHTFEXTPROC, glVertexWeightfEXT); + CHECK_ADDRESS(PFNGLVERTEXWEIGHTFVEXTPROC, glVertexWeightfvEXT); + CHECK_ADDRESS(PFNGLVERTEXWEIGHTPOINTEREXTPROC, glVertexWeightPointerEXT); #endif return true; @@ -806,15 +816,15 @@ static bool setupARBTextureCubeMap(const char *glext) #ifdef USE_OPENGLES CHECK_EXT("OES_texture_cube_map"); - CHECK_ADDRESS(NEL_PFNGLTEXGENFOESPROC, glTexGenfOES); - CHECK_ADDRESS(NEL_PFNGLTEXGENFVOESPROC, glTexGenfvOES); - CHECK_ADDRESS(NEL_PFNGLTEXGENIOESPROC, glTexGeniOES); - CHECK_ADDRESS(NEL_PFNGLTEXGENIVOESPROC, glTexGenivOES); - CHECK_ADDRESS(NEL_PFNGLTEXGENXOESPROC, glTexGenxOES); - CHECK_ADDRESS(NEL_PFNGLTEXGENXVOESPROC, glTexGenxvOES); - CHECK_ADDRESS(NEL_PFNGLGETTEXGENFVOESPROC, glGetTexGenfvOES); - CHECK_ADDRESS(NEL_PFNGLGETTEXGENIVOESPROC, glGetTexGenivOES); - CHECK_ADDRESS(NEL_PFNGLGETTEXGENXVOESPROC, glGetTexGenxvOES); + CHECK_ADDRESS(PFNGLTEXGENFOESPROC, glTexGenfOES); + CHECK_ADDRESS(PFNGLTEXGENFVOESPROC, glTexGenfvOES); + CHECK_ADDRESS(PFNGLTEXGENIOESPROC, glTexGeniOES); + CHECK_ADDRESS(PFNGLTEXGENIVOESPROC, glTexGenivOES); + CHECK_ADDRESS(PFNGLTEXGENXOESPROC, glTexGenxOES); + CHECK_ADDRESS(PFNGLTEXGENXVOESPROC, glTexGenxvOES); + CHECK_ADDRESS(PFNGLGETTEXGENFVOESPROC, glGetTexGenfvOES); + CHECK_ADDRESS(PFNGLGETTEXGENIVOESPROC, glGetTexGenivOES); + CHECK_ADDRESS(PFNGLGETTEXGENXVOESPROC, glGetTexGenxvOES); #else CHECK_EXT("GL_ARB_texture_cube_map"); #endif @@ -838,69 +848,69 @@ static bool setupNVVertexProgram(const char *glext) CHECK_EXT("GL_NV_vertex_program"); #ifndef USE_OPENGLES - CHECK_ADDRESS(NEL_PFNGLAREPROGRAMSRESIDENTNVPROC, glAreProgramsResidentNV); - CHECK_ADDRESS(NEL_PFNGLBINDPROGRAMNVPROC, glBindProgramNV); - CHECK_ADDRESS(NEL_PFNGLDELETEPROGRAMSNVPROC, glDeleteProgramsNV); - CHECK_ADDRESS(NEL_PFNGLEXECUTEPROGRAMNVPROC, glExecuteProgramNV); - CHECK_ADDRESS(NEL_PFNGLGENPROGRAMSNVPROC, glGenProgramsNV); - CHECK_ADDRESS(NEL_PFNGLGETPROGRAMPARAMETERDVNVPROC, glGetProgramParameterdvNV); - CHECK_ADDRESS(NEL_PFNGLGETPROGRAMPARAMETERFVNVPROC, glGetProgramParameterfvNV); - CHECK_ADDRESS(NEL_PFNGLGETPROGRAMIVNVPROC, glGetProgramivNV); - CHECK_ADDRESS(NEL_PFNGLGETPROGRAMSTRINGNVPROC, glGetProgramStringNV); - CHECK_ADDRESS(NEL_PFNGLGETTRACKMATRIXIVNVPROC, glGetTrackMatrixivNV); - CHECK_ADDRESS(NEL_PFNGLGETVERTEXATTRIBDVNVPROC, glGetVertexAttribdvNV); - CHECK_ADDRESS(NEL_PFNGLGETVERTEXATTRIBFVNVPROC, glGetVertexAttribfvNV); - CHECK_ADDRESS(NEL_PFNGLGETVERTEXATTRIBIVNVPROC, glGetVertexAttribivNV); - CHECK_ADDRESS(NEL_PFNGLGETVERTEXATTRIBPOINTERVNVPROC, glGetVertexAttribPointervNV); - CHECK_ADDRESS(NEL_PFNGLISPROGRAMNVPROC, glIsProgramNV); - CHECK_ADDRESS(NEL_PFNGLLOADPROGRAMNVPROC, glLoadProgramNV); - CHECK_ADDRESS(NEL_PFNGLPROGRAMPARAMETER4DNVPROC, glProgramParameter4dNV); - CHECK_ADDRESS(NEL_PFNGLPROGRAMPARAMETER4DVNVPROC, glProgramParameter4dvNV); - CHECK_ADDRESS(NEL_PFNGLPROGRAMPARAMETER4FNVPROC, glProgramParameter4fNV); - CHECK_ADDRESS(NEL_PFNGLPROGRAMPARAMETER4FVNVPROC, glProgramParameter4fvNV); - CHECK_ADDRESS(NEL_PFNGLPROGRAMPARAMETERS4DVNVPROC, glProgramParameters4dvNV); - CHECK_ADDRESS(NEL_PFNGLPROGRAMPARAMETERS4FVNVPROC, glProgramParameters4fvNV); - CHECK_ADDRESS(NEL_PFNGLREQUESTRESIDENTPROGRAMSNVPROC, glRequestResidentProgramsNV); - CHECK_ADDRESS(NEL_PFNGLTRACKMATRIXNVPROC, glTrackMatrixNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIBPOINTERNVPROC, glVertexAttribPointerNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB1DNVPROC, glVertexAttrib1dNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB1DVNVPROC, glVertexAttrib1dvNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB1FNVPROC, glVertexAttrib1fNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB1FVNVPROC, glVertexAttrib1fvNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB1SNVPROC, glVertexAttrib1sNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB1SVNVPROC, glVertexAttrib1svNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB2DNVPROC, glVertexAttrib2dNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB2DVNVPROC, glVertexAttrib2dvNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB2FNVPROC, glVertexAttrib2fNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB2FVNVPROC, glVertexAttrib2fvNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB2SNVPROC, glVertexAttrib2sNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB2SVNVPROC, glVertexAttrib2svNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB3DNVPROC, glVertexAttrib3dNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB3DVNVPROC, glVertexAttrib3dvNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB3FNVPROC, glVertexAttrib3fNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB3FVNVPROC, glVertexAttrib3fvNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB3SNVPROC, glVertexAttrib3sNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB3SVNVPROC, glVertexAttrib3svNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB4DNVPROC, glVertexAttrib4dNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB4DVNVPROC, glVertexAttrib4dvNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB4FNVPROC, glVertexAttrib4fNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB4FVNVPROC, glVertexAttrib4fvNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB4SNVPROC, glVertexAttrib4sNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB4SVNVPROC, glVertexAttrib4svNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIB4UBVNVPROC, glVertexAttrib4ubvNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIBS1DVNVPROC, glVertexAttribs1dvNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIBS1FVNVPROC, glVertexAttribs1fvNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIBS1SVNVPROC, glVertexAttribs1svNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIBS2DVNVPROC, glVertexAttribs2dvNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIBS2FVNVPROC, glVertexAttribs2fvNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIBS2SVNVPROC, glVertexAttribs2svNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIBS3DVNVPROC, glVertexAttribs3dvNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIBS3FVNVPROC, glVertexAttribs3fvNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIBS3SVNVPROC, glVertexAttribs3svNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIBS4DVNVPROC, glVertexAttribs4dvNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIBS4FVNVPROC, glVertexAttribs4fvNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIBS4SVNVPROC, glVertexAttribs4svNV); - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIBS4UBVNVPROC, glVertexAttribs4ubvNV); + CHECK_ADDRESS(PFNGLAREPROGRAMSRESIDENTNVPROC, glAreProgramsResidentNV); + CHECK_ADDRESS(PFNGLBINDPROGRAMNVPROC, glBindProgramNV); + CHECK_ADDRESS(PFNGLDELETEPROGRAMSNVPROC, glDeleteProgramsNV); + CHECK_ADDRESS(PFNGLEXECUTEPROGRAMNVPROC, glExecuteProgramNV); + CHECK_ADDRESS(PFNGLGENPROGRAMSNVPROC, glGenProgramsNV); + CHECK_ADDRESS(PFNGLGETPROGRAMPARAMETERDVNVPROC, glGetProgramParameterdvNV); + CHECK_ADDRESS(PFNGLGETPROGRAMPARAMETERFVNVPROC, glGetProgramParameterfvNV); + CHECK_ADDRESS(PFNGLGETPROGRAMIVNVPROC, glGetProgramivNV); + CHECK_ADDRESS(PFNGLGETPROGRAMSTRINGNVPROC, glGetProgramStringNV); + CHECK_ADDRESS(PFNGLGETTRACKMATRIXIVNVPROC, glGetTrackMatrixivNV); + CHECK_ADDRESS(PFNGLGETVERTEXATTRIBDVNVPROC, glGetVertexAttribdvNV); + CHECK_ADDRESS(PFNGLGETVERTEXATTRIBFVNVPROC, glGetVertexAttribfvNV); + CHECK_ADDRESS(PFNGLGETVERTEXATTRIBIVNVPROC, glGetVertexAttribivNV); + CHECK_ADDRESS(PFNGLGETVERTEXATTRIBPOINTERVNVPROC, glGetVertexAttribPointervNV); + CHECK_ADDRESS(PFNGLISPROGRAMNVPROC, glIsProgramNV); + CHECK_ADDRESS(PFNGLLOADPROGRAMNVPROC, glLoadProgramNV); + CHECK_ADDRESS(PFNGLPROGRAMPARAMETER4DNVPROC, glProgramParameter4dNV); + CHECK_ADDRESS(PFNGLPROGRAMPARAMETER4DVNVPROC, glProgramParameter4dvNV); + CHECK_ADDRESS(PFNGLPROGRAMPARAMETER4FNVPROC, glProgramParameter4fNV); + CHECK_ADDRESS(PFNGLPROGRAMPARAMETER4FVNVPROC, glProgramParameter4fvNV); + CHECK_ADDRESS(PFNGLPROGRAMPARAMETERS4DVNVPROC, glProgramParameters4dvNV); + CHECK_ADDRESS(PFNGLPROGRAMPARAMETERS4FVNVPROC, glProgramParameters4fvNV); + CHECK_ADDRESS(PFNGLREQUESTRESIDENTPROGRAMSNVPROC, glRequestResidentProgramsNV); + CHECK_ADDRESS(PFNGLTRACKMATRIXNVPROC, glTrackMatrixNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIBPOINTERNVPROC, glVertexAttribPointerNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB1DNVPROC, glVertexAttrib1dNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB1DVNVPROC, glVertexAttrib1dvNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB1FNVPROC, glVertexAttrib1fNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB1FVNVPROC, glVertexAttrib1fvNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB1SNVPROC, glVertexAttrib1sNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB1SVNVPROC, glVertexAttrib1svNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB2DNVPROC, glVertexAttrib2dNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB2DVNVPROC, glVertexAttrib2dvNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB2FNVPROC, glVertexAttrib2fNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB2FVNVPROC, glVertexAttrib2fvNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB2SNVPROC, glVertexAttrib2sNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB2SVNVPROC, glVertexAttrib2svNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB3DNVPROC, glVertexAttrib3dNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB3DVNVPROC, glVertexAttrib3dvNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB3FNVPROC, glVertexAttrib3fNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB3FVNVPROC, glVertexAttrib3fvNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB3SNVPROC, glVertexAttrib3sNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB3SVNVPROC, glVertexAttrib3svNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB4DNVPROC, glVertexAttrib4dNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB4DVNVPROC, glVertexAttrib4dvNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB4FNVPROC, glVertexAttrib4fNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB4FVNVPROC, glVertexAttrib4fvNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB4SNVPROC, glVertexAttrib4sNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB4SVNVPROC, glVertexAttrib4svNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIB4UBVNVPROC, glVertexAttrib4ubvNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIBS1DVNVPROC, glVertexAttribs1dvNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIBS1FVNVPROC, glVertexAttribs1fvNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIBS1SVNVPROC, glVertexAttribs1svNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIBS2DVNVPROC, glVertexAttribs2dvNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIBS2FVNVPROC, glVertexAttribs2fvNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIBS2SVNVPROC, glVertexAttribs2svNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIBS3DVNVPROC, glVertexAttribs3dvNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIBS3FVNVPROC, glVertexAttribs3fvNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIBS3SVNVPROC, glVertexAttribs3svNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIBS4DVNVPROC, glVertexAttribs4dvNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIBS4FVNVPROC, glVertexAttribs4fvNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIBS4SVNVPROC, glVertexAttribs4svNV); + CHECK_ADDRESS(PFNGLVERTEXATTRIBS4UBVNVPROC, glVertexAttribs4ubvNV); #endif return true; @@ -913,40 +923,40 @@ static bool setupEXTVertexShader(const char *glext) CHECK_EXT("GL_EXT_vertex_shader"); #ifndef USE_OPENGLES - CHECK_ADDRESS(NEL_PFNGLBEGINVERTEXSHADEREXTPROC, glBeginVertexShaderEXT); - CHECK_ADDRESS(NEL_PFNGLENDVERTEXSHADEREXTPROC, glEndVertexShaderEXT); - CHECK_ADDRESS(NEL_PFNGLBINDVERTEXSHADEREXTPROC, glBindVertexShaderEXT); - CHECK_ADDRESS(NEL_PFNGLGENVERTEXSHADERSEXTPROC, glGenVertexShadersEXT); - CHECK_ADDRESS(NEL_PFNGLDELETEVERTEXSHADEREXTPROC, glDeleteVertexShaderEXT); - CHECK_ADDRESS(NEL_PFNGLSHADEROP1EXTPROC, glShaderOp1EXT); - CHECK_ADDRESS(NEL_PFNGLSHADEROP2EXTPROC, glShaderOp2EXT); - CHECK_ADDRESS(NEL_PFNGLSHADEROP3EXTPROC, glShaderOp3EXT); - CHECK_ADDRESS(NEL_PFNGLSWIZZLEEXTPROC, glSwizzleEXT); - CHECK_ADDRESS(NEL_PFNGLWRITEMASKEXTPROC, glWriteMaskEXT); - CHECK_ADDRESS(NEL_PFNGLINSERTCOMPONENTEXTPROC, glInsertComponentEXT); - CHECK_ADDRESS(NEL_PFNGLEXTRACTCOMPONENTEXTPROC, glExtractComponentEXT); - CHECK_ADDRESS(NEL_PFNGLGENSYMBOLSEXTPROC, glGenSymbolsEXT); - CHECK_ADDRESS(NEL_PFNGLSETINVARIANTEXTPROC, glSetInvariantEXT); - CHECK_ADDRESS(NEL_PFNGLSETLOCALCONSTANTEXTPROC, glSetLocalConstantEXT); - CHECK_ADDRESS(NEL_PFNGLVARIANTPOINTEREXTPROC, glVariantPointerEXT); - CHECK_ADDRESS(NEL_PFNGLENABLEVARIANTCLIENTSTATEEXTPROC, glEnableVariantClientStateEXT); - CHECK_ADDRESS(NEL_PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC, glDisableVariantClientStateEXT); - CHECK_ADDRESS(NEL_PFNGLBINDLIGHTPARAMETEREXTPROC, glBindLightParameterEXT); - CHECK_ADDRESS(NEL_PFNGLBINDMATERIALPARAMETEREXTPROC, glBindMaterialParameterEXT); - CHECK_ADDRESS(NEL_PFNGLBINDTEXGENPARAMETEREXTPROC, glBindTexGenParameterEXT); - CHECK_ADDRESS(NEL_PFNGLBINDTEXTUREUNITPARAMETEREXTPROC, glBindTextureUnitParameterEXT); - CHECK_ADDRESS(NEL_PFNGLBINDPARAMETEREXTPROC, glBindParameterEXT); - CHECK_ADDRESS(NEL_PFNGLISVARIANTENABLEDEXTPROC, glIsVariantEnabledEXT); - CHECK_ADDRESS(NEL_PFNGLGETVARIANTBOOLEANVEXTPROC, glGetVariantBooleanvEXT); - CHECK_ADDRESS(NEL_PFNGLGETVARIANTINTEGERVEXTPROC, glGetVariantIntegervEXT); - CHECK_ADDRESS(NEL_PFNGLGETVARIANTFLOATVEXTPROC, glGetVariantFloatvEXT); - CHECK_ADDRESS(NEL_PFNGLGETVARIANTPOINTERVEXTPROC, glGetVariantPointervEXT); - CHECK_ADDRESS(NEL_PFNGLGETINVARIANTBOOLEANVEXTPROC, glGetInvariantBooleanvEXT); - CHECK_ADDRESS(NEL_PFNGLGETINVARIANTINTEGERVEXTPROC, glGetInvariantIntegervEXT); - CHECK_ADDRESS(NEL_PFNGLGETINVARIANTFLOATVEXTPROC, glGetInvariantFloatvEXT); - CHECK_ADDRESS(NEL_PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC, glGetLocalConstantBooleanvEXT); - CHECK_ADDRESS(NEL_PFNGLGETLOCALCONSTANTINTEGERVEXTPROC, glGetLocalConstantIntegervEXT); - CHECK_ADDRESS(NEL_PFNGLGETLOCALCONSTANTFLOATVEXTPROC, glGetLocalConstantFloatvEXT); + CHECK_ADDRESS(PFNGLBEGINVERTEXSHADEREXTPROC, glBeginVertexShaderEXT); + CHECK_ADDRESS(PFNGLENDVERTEXSHADEREXTPROC, glEndVertexShaderEXT); + CHECK_ADDRESS(PFNGLBINDVERTEXSHADEREXTPROC, glBindVertexShaderEXT); + CHECK_ADDRESS(PFNGLGENVERTEXSHADERSEXTPROC, glGenVertexShadersEXT); + CHECK_ADDRESS(PFNGLDELETEVERTEXSHADEREXTPROC, glDeleteVertexShaderEXT); + CHECK_ADDRESS(PFNGLSHADEROP1EXTPROC, glShaderOp1EXT); + CHECK_ADDRESS(PFNGLSHADEROP2EXTPROC, glShaderOp2EXT); + CHECK_ADDRESS(PFNGLSHADEROP3EXTPROC, glShaderOp3EXT); + CHECK_ADDRESS(PFNGLSWIZZLEEXTPROC, glSwizzleEXT); + CHECK_ADDRESS(PFNGLWRITEMASKEXTPROC, glWriteMaskEXT); + CHECK_ADDRESS(PFNGLINSERTCOMPONENTEXTPROC, glInsertComponentEXT); + CHECK_ADDRESS(PFNGLEXTRACTCOMPONENTEXTPROC, glExtractComponentEXT); + CHECK_ADDRESS(PFNGLGENSYMBOLSEXTPROC, glGenSymbolsEXT); + CHECK_ADDRESS(PFNGLSETINVARIANTEXTPROC, glSetInvariantEXT); + CHECK_ADDRESS(PFNGLSETLOCALCONSTANTEXTPROC, glSetLocalConstantEXT); + CHECK_ADDRESS(PFNGLVARIANTPOINTEREXTPROC, glVariantPointerEXT); + CHECK_ADDRESS(PFNGLENABLEVARIANTCLIENTSTATEEXTPROC, glEnableVariantClientStateEXT); + CHECK_ADDRESS(PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC, glDisableVariantClientStateEXT); + CHECK_ADDRESS(PFNGLBINDLIGHTPARAMETEREXTPROC, glBindLightParameterEXT); + CHECK_ADDRESS(PFNGLBINDMATERIALPARAMETEREXTPROC, glBindMaterialParameterEXT); + CHECK_ADDRESS(PFNGLBINDTEXGENPARAMETEREXTPROC, glBindTexGenParameterEXT); + CHECK_ADDRESS(PFNGLBINDTEXTUREUNITPARAMETEREXTPROC, glBindTextureUnitParameterEXT); + CHECK_ADDRESS(PFNGLBINDPARAMETEREXTPROC, glBindParameterEXT); + CHECK_ADDRESS(PFNGLISVARIANTENABLEDEXTPROC, glIsVariantEnabledEXT); + CHECK_ADDRESS(PFNGLGETVARIANTBOOLEANVEXTPROC, glGetVariantBooleanvEXT); + CHECK_ADDRESS(PFNGLGETVARIANTINTEGERVEXTPROC, glGetVariantIntegervEXT); + CHECK_ADDRESS(PFNGLGETVARIANTFLOATVEXTPROC, glGetVariantFloatvEXT); + CHECK_ADDRESS(PFNGLGETVARIANTPOINTERVEXTPROC, glGetVariantPointervEXT); + CHECK_ADDRESS(PFNGLGETINVARIANTBOOLEANVEXTPROC, glGetInvariantBooleanvEXT); + CHECK_ADDRESS(PFNGLGETINVARIANTINTEGERVEXTPROC, glGetInvariantIntegervEXT); + CHECK_ADDRESS(PFNGLGETINVARIANTFLOATVEXTPROC, glGetInvariantFloatvEXT); + CHECK_ADDRESS(PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC, glGetLocalConstantBooleanvEXT); + CHECK_ADDRESS(PFNGLGETLOCALCONSTANTINTEGERVEXTPROC, glGetLocalConstantIntegervEXT); + CHECK_ADDRESS(PFNGLGETLOCALCONSTANTFLOATVEXTPROC, glGetLocalConstantFloatvEXT); // we require at least 128 instructions, 15 local register (r0, r1,..,r11) + 3 temporary vector for swizzle emulation + 1 vector for indexing temp + 3 temporary scalar for LOGG, EXPP and LIT emulation, 1 address register // we require 11 variants (4 textures + position + normal + primary color + secondary color + weight + palette skin + fog) @@ -989,23 +999,23 @@ static bool setupEXTSecondaryColor(const char *glext) CHECK_EXT("GL_EXT_secondary_color"); #ifndef USE_OPENGLES - CHECK_ADDRESS(NEL_PFNGLSECONDARYCOLOR3BEXTPROC, glSecondaryColor3bEXT); - CHECK_ADDRESS(NEL_PFNGLSECONDARYCOLOR3BVEXTPROC, glSecondaryColor3bvEXT); - CHECK_ADDRESS(NEL_PFNGLSECONDARYCOLOR3DEXTPROC, glSecondaryColor3dEXT); - CHECK_ADDRESS(NEL_PFNGLSECONDARYCOLOR3DVEXTPROC, glSecondaryColor3dvEXT); - CHECK_ADDRESS(NEL_PFNGLSECONDARYCOLOR3FEXTPROC, glSecondaryColor3fEXT); - CHECK_ADDRESS(NEL_PFNGLSECONDARYCOLOR3FVEXTPROC, glSecondaryColor3fvEXT); - CHECK_ADDRESS(NEL_PFNGLSECONDARYCOLOR3IEXTPROC, glSecondaryColor3iEXT); - CHECK_ADDRESS(NEL_PFNGLSECONDARYCOLOR3IVEXTPROC, glSecondaryColor3ivEXT); - CHECK_ADDRESS(NEL_PFNGLSECONDARYCOLOR3SEXTPROC, glSecondaryColor3sEXT); - CHECK_ADDRESS(NEL_PFNGLSECONDARYCOLOR3SVEXTPROC, glSecondaryColor3svEXT); - CHECK_ADDRESS(NEL_PFNGLSECONDARYCOLOR3UBEXTPROC, glSecondaryColor3ubEXT); - CHECK_ADDRESS(NEL_PFNGLSECONDARYCOLOR3UBVEXTPROC, glSecondaryColor3ubvEXT); - CHECK_ADDRESS(NEL_PFNGLSECONDARYCOLOR3UIEXTPROC, glSecondaryColor3uiEXT); - CHECK_ADDRESS(NEL_PFNGLSECONDARYCOLOR3UIVEXTPROC, glSecondaryColor3uivEXT); - CHECK_ADDRESS(NEL_PFNGLSECONDARYCOLOR3USEXTPROC, glSecondaryColor3usEXT); - CHECK_ADDRESS(NEL_PFNGLSECONDARYCOLOR3USVEXTPROC, glSecondaryColor3usvEXT); - CHECK_ADDRESS(NEL_PFNGLSECONDARYCOLORPOINTEREXTPROC, glSecondaryColorPointerEXT); + CHECK_ADDRESS(PFNGLSECONDARYCOLOR3BEXTPROC, glSecondaryColor3bEXT); + CHECK_ADDRESS(PFNGLSECONDARYCOLOR3BVEXTPROC, glSecondaryColor3bvEXT); + CHECK_ADDRESS(PFNGLSECONDARYCOLOR3DEXTPROC, glSecondaryColor3dEXT); + CHECK_ADDRESS(PFNGLSECONDARYCOLOR3DVEXTPROC, glSecondaryColor3dvEXT); + CHECK_ADDRESS(PFNGLSECONDARYCOLOR3FEXTPROC, glSecondaryColor3fEXT); + CHECK_ADDRESS(PFNGLSECONDARYCOLOR3FVEXTPROC, glSecondaryColor3fvEXT); + CHECK_ADDRESS(PFNGLSECONDARYCOLOR3IEXTPROC, glSecondaryColor3iEXT); + CHECK_ADDRESS(PFNGLSECONDARYCOLOR3IVEXTPROC, glSecondaryColor3ivEXT); + CHECK_ADDRESS(PFNGLSECONDARYCOLOR3SEXTPROC, glSecondaryColor3sEXT); + CHECK_ADDRESS(PFNGLSECONDARYCOLOR3SVEXTPROC, glSecondaryColor3svEXT); + CHECK_ADDRESS(PFNGLSECONDARYCOLOR3UBEXTPROC, glSecondaryColor3ubEXT); + CHECK_ADDRESS(PFNGLSECONDARYCOLOR3UBVEXTPROC, glSecondaryColor3ubvEXT); + CHECK_ADDRESS(PFNGLSECONDARYCOLOR3UIEXTPROC, glSecondaryColor3uiEXT); + CHECK_ADDRESS(PFNGLSECONDARYCOLOR3UIVEXTPROC, glSecondaryColor3uivEXT); + CHECK_ADDRESS(PFNGLSECONDARYCOLOR3USEXTPROC, glSecondaryColor3usEXT); + CHECK_ADDRESS(PFNGLSECONDARYCOLOR3USVEXTPROC, glSecondaryColor3usvEXT); + CHECK_ADDRESS(PFNGLSECONDARYCOLORPOINTEREXTPROC, glSecondaryColorPointerEXT); #endif return true; @@ -1037,7 +1047,7 @@ static bool setupARBMultisample(const char *glext) CHECK_EXT("GL_ARB_multisample"); #ifndef USE_OPENGLES - CHECK_ADDRESS(NEL_PFNGLSAMPLECOVERAGEARBPROC, glSampleCoverageARB); + CHECK_ADDRESS(PFNGLSAMPLECOVERAGEARBPROC, glSampleCoverageARB); #endif return true; @@ -1084,7 +1094,7 @@ static bool setupEXTBlendColor(const char *glext) CHECK_EXT("GL_EXT_blend_color"); #ifndef USE_OPENGLES - CHECK_ADDRESS(NEL_PFNGLBLENDCOLOREXTPROC, glBlendColorEXT); + CHECK_ADDRESS(PFNGLBLENDCOLOREXTPROC, glBlendColorEXT); #endif return true; @@ -1106,31 +1116,22 @@ static bool setupATIVertexArrayObject(const char *glext) CHECK_EXT("GL_ATI_vertex_array_object"); #ifndef USE_OPENGLES - CHECK_ADDRESS(NEL_PFNGLNEWOBJECTBUFFERATIPROC, glNewObjectBufferATI); - CHECK_ADDRESS(NEL_PFNGLISOBJECTBUFFERATIPROC, glIsObjectBufferATI); - CHECK_ADDRESS(NEL_PFNGLUPDATEOBJECTBUFFERATIPROC, glUpdateObjectBufferATI); - CHECK_ADDRESS(NEL_PFNGLGETOBJECTBUFFERFVATIPROC, glGetObjectBufferfvATI); - CHECK_ADDRESS(NEL_PFNGLGETOBJECTBUFFERIVATIPROC, glGetObjectBufferivATI); - - nglDeleteObjectBufferATI = (NEL_PFNGLDELETEOBJECTBUFFERATIPROC)nglGetProcAddress("nglDeleteObjectBufferATI"); - - if(!nglDeleteObjectBufferATI) - { - // seems that on matrox parhelia driver, this procedure is named nglFreeObjectBufferATI !! - nglDeleteObjectBufferATI = (NEL_PFNGLDELETEOBJECTBUFFERATIPROC)nglGetProcAddress("nglFreeObjectBufferATI"); - if(!nglDeleteObjectBufferATI) return false; - } - - CHECK_ADDRESS(NEL_PFNGLARRAYOBJECTATIPROC, glArrayObjectATI); - CHECK_ADDRESS(NEL_PFNGLGETARRAYOBJECTFVATIPROC, glGetArrayObjectfvATI); - CHECK_ADDRESS(NEL_PFNGLGETARRAYOBJECTIVATIPROC, glGetArrayObjectivATI); + CHECK_ADDRESS(PFNGLNEWOBJECTBUFFERATIPROC, glNewObjectBufferATI); + CHECK_ADDRESS(PFNGLISOBJECTBUFFERATIPROC, glIsObjectBufferATI); + CHECK_ADDRESS(PFNGLUPDATEOBJECTBUFFERATIPROC, glUpdateObjectBufferATI); + CHECK_ADDRESS(PFNGLGETOBJECTBUFFERFVATIPROC, glGetObjectBufferfvATI); + CHECK_ADDRESS(PFNGLGETOBJECTBUFFERIVATIPROC, glGetObjectBufferivATI); + CHECK_ADDRESS(PFNGLFREEOBJECTBUFFERATIPROC, glFreeObjectBufferATI); + CHECK_ADDRESS(PFNGLARRAYOBJECTATIPROC, glArrayObjectATI); + CHECK_ADDRESS(PFNGLGETARRAYOBJECTFVATIPROC, glGetArrayObjectfvATI); + CHECK_ADDRESS(PFNGLGETARRAYOBJECTIVATIPROC, glGetArrayObjectivATI); if(strstr(glext, "GL_EXT_vertex_shader") != NULL) { // the following exist only if ext vertex shader is present - CHECK_ADDRESS(NEL_PFNGLVARIANTARRAYOBJECTATIPROC, glVariantArrayObjectATI); - CHECK_ADDRESS(NEL_PFNGLGETVARIANTARRAYOBJECTFVATIPROC, glGetVariantArrayObjectfvATI); - CHECK_ADDRESS(NEL_PFNGLGETVARIANTARRAYOBJECTIVATIPROC, glGetVariantArrayObjectivATI); + CHECK_ADDRESS(PFNGLVARIANTARRAYOBJECTATIPROC, glVariantArrayObjectATI); + CHECK_ADDRESS(PFNGLGETVARIANTARRAYOBJECTFVATIPROC, glGetVariantArrayObjectfvATI); + CHECK_ADDRESS(PFNGLGETVARIANTARRAYOBJECTIVATIPROC, glGetVariantArrayObjectivATI); } #endif @@ -1144,8 +1145,8 @@ static bool setupATIMapObjectBuffer(const char *glext) CHECK_EXT("GL_ATI_map_object_buffer"); #ifndef USE_OPENGLES - CHECK_ADDRESS(NEL_PFNGLMAPOBJECTBUFFERATIPROC, glMapObjectBufferATI); - CHECK_ADDRESS(NEL_PFNGLUNMAPOBJECTBUFFERATIPROC, glUnmapObjectBufferATI); + CHECK_ADDRESS(PFNGLMAPOBJECTBUFFERATIPROC, glMapObjectBufferATI); + CHECK_ADDRESS(PFNGLUNMAPOBJECTBUFFERATIPROC, glUnmapObjectBufferATI); #endif return true; @@ -1160,20 +1161,20 @@ static bool setupATIFragmentShader(const char *glext) CHECK_EXT("GL_ATI_fragment_shader"); #ifndef USE_OPENGLES - CHECK_ADDRESS(NEL_PFNGLGENFRAGMENTSHADERSATIPROC, glGenFragmentShadersATI); - CHECK_ADDRESS(NEL_PFNGLBINDFRAGMENTSHADERATIPROC, glBindFragmentShaderATI); - CHECK_ADDRESS(NEL_PFNGLDELETEFRAGMENTSHADERATIPROC, glDeleteFragmentShaderATI); - CHECK_ADDRESS(NEL_PFNGLBEGINFRAGMENTSHADERATIPROC, glBeginFragmentShaderATI); - CHECK_ADDRESS(NEL_PFNGLENDFRAGMENTSHADERATIPROC, glEndFragmentShaderATI); - CHECK_ADDRESS(NEL_PFNGLPASSTEXCOORDATIPROC, glPassTexCoordATI); - CHECK_ADDRESS(NEL_PFNGLSAMPLEMAPATIPROC, glSampleMapATI); - CHECK_ADDRESS(NEL_PFNGLCOLORFRAGMENTOP1ATIPROC, glColorFragmentOp1ATI); - CHECK_ADDRESS(NEL_PFNGLCOLORFRAGMENTOP2ATIPROC, glColorFragmentOp2ATI); - CHECK_ADDRESS(NEL_PFNGLCOLORFRAGMENTOP3ATIPROC, glColorFragmentOp3ATI); - CHECK_ADDRESS(NEL_PFNGLALPHAFRAGMENTOP1ATIPROC, glAlphaFragmentOp1ATI); - CHECK_ADDRESS(NEL_PFNGLALPHAFRAGMENTOP2ATIPROC, glAlphaFragmentOp2ATI); - CHECK_ADDRESS(NEL_PFNGLALPHAFRAGMENTOP3ATIPROC, glAlphaFragmentOp3ATI); - CHECK_ADDRESS(NEL_PFNGLSETFRAGMENTSHADERCONSTANTATIPROC, glSetFragmentShaderConstantATI); + CHECK_ADDRESS(PFNGLGENFRAGMENTSHADERSATIPROC, glGenFragmentShadersATI); + CHECK_ADDRESS(PFNGLBINDFRAGMENTSHADERATIPROC, glBindFragmentShaderATI); + CHECK_ADDRESS(PFNGLDELETEFRAGMENTSHADERATIPROC, glDeleteFragmentShaderATI); + CHECK_ADDRESS(PFNGLBEGINFRAGMENTSHADERATIPROC, glBeginFragmentShaderATI); + CHECK_ADDRESS(PFNGLENDFRAGMENTSHADERATIPROC, glEndFragmentShaderATI); + CHECK_ADDRESS(PFNGLPASSTEXCOORDATIPROC, glPassTexCoordATI); + CHECK_ADDRESS(PFNGLSAMPLEMAPATIPROC, glSampleMapATI); + CHECK_ADDRESS(PFNGLCOLORFRAGMENTOP1ATIPROC, glColorFragmentOp1ATI); + CHECK_ADDRESS(PFNGLCOLORFRAGMENTOP2ATIPROC, glColorFragmentOp2ATI); + CHECK_ADDRESS(PFNGLCOLORFRAGMENTOP3ATIPROC, glColorFragmentOp3ATI); + CHECK_ADDRESS(PFNGLALPHAFRAGMENTOP1ATIPROC, glAlphaFragmentOp1ATI); + CHECK_ADDRESS(PFNGLALPHAFRAGMENTOP2ATIPROC, glAlphaFragmentOp2ATI); + CHECK_ADDRESS(PFNGLALPHAFRAGMENTOP3ATIPROC, glAlphaFragmentOp3ATI); + CHECK_ADDRESS(PFNGLSETFRAGMENTSHADERCONSTANTATIPROC, glSetFragmentShaderConstantATI); #endif return true; @@ -1186,9 +1187,9 @@ static bool setupATIVertexAttribArrayObject(const char *glext) CHECK_EXT("GL_ATI_vertex_attrib_array_object"); #ifndef USE_OPENGLES - CHECK_ADDRESS(NEL_PFNGLVERTEXATTRIBARRAYOBJECTATIPROC, glVertexAttribArrayObjectATI); - CHECK_ADDRESS(NEL_PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC, glGetVertexAttribArrayObjectfvATI); - CHECK_ADDRESS(NEL_PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC, glGetVertexAttribArrayObjectivATI); + CHECK_ADDRESS(PFNGLVERTEXATTRIBARRAYOBJECTATIPROC, glVertexAttribArrayObjectATI); + CHECK_ADDRESS(PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC, glGetVertexAttribArrayObjectfvATI); + CHECK_ADDRESS(PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC, glGetVertexAttribArrayObjectivATI); #endif return true; @@ -1201,25 +1202,25 @@ static bool setupARBFragmentProgram(const char *glext) CHECK_EXT("GL_ARB_fragment_program"); #ifndef USE_OPENGLES - CHECK_ADDRESS(NEL_PFNGLPROGRAMSTRINGARBPROC, glProgramStringARB); - CHECK_ADDRESS(NEL_PFNGLBINDPROGRAMARBPROC, glBindProgramARB); - CHECK_ADDRESS(NEL_PFNGLDELETEPROGRAMSARBPROC, glDeleteProgramsARB); - CHECK_ADDRESS(NEL_PFNGLGENPROGRAMSARBPROC, glGenProgramsARB); - CHECK_ADDRESS(NEL_PFNGLPROGRAMENVPARAMETER4DARBPROC, glProgramEnvParameter4dARB); - CHECK_ADDRESS(NEL_PFNGLPROGRAMENVPARAMETER4DVARBPROC, glProgramEnvParameter4dvARB); - CHECK_ADDRESS(NEL_PFNGLPROGRAMENVPARAMETER4FARBPROC, glProgramEnvParameter4fARB); - CHECK_ADDRESS(NEL_PFNGLPROGRAMENVPARAMETER4FVARBPROC, glProgramEnvParameter4fvARB); - CHECK_ADDRESS(NEL_PFNGLPROGRAMLOCALPARAMETER4DARBPROC, glProgramLocalParameter4dARB); - CHECK_ADDRESS(NEL_PFNGLPROGRAMLOCALPARAMETER4DVARBPROC, glProgramLocalParameter4dvARB); - CHECK_ADDRESS(NEL_PFNGLPROGRAMLOCALPARAMETER4FARBPROC, glProgramLocalParameter4fARB); - CHECK_ADDRESS(NEL_PFNGLPROGRAMLOCALPARAMETER4FVARBPROC, glProgramLocalParameter4fvARB); - CHECK_ADDRESS(NEL_PFNGLGETPROGRAMENVPARAMETERDVARBPROC, glGetProgramEnvParameterdvARB); - CHECK_ADDRESS(NEL_PFNGLGETPROGRAMENVPARAMETERFVARBPROC, glGetProgramEnvParameterfvARB); - CHECK_ADDRESS(NEL_PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC, glGetProgramLocalParameterdvARB); - CHECK_ADDRESS(NEL_PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC, glGetProgramLocalParameterfvARB); - CHECK_ADDRESS(NEL_PFNGLGETPROGRAMIVARBPROC, glGetProgramivARB); - CHECK_ADDRESS(NEL_PFNGLGETPROGRAMSTRINGARBPROC, glGetProgramStringARB); - CHECK_ADDRESS(NEL_PFNGLISPROGRAMARBPROC, glIsProgramARB); + CHECK_ADDRESS(PFNGLPROGRAMSTRINGARBPROC, glProgramStringARB); + CHECK_ADDRESS(PFNGLBINDPROGRAMARBPROC, glBindProgramARB); + CHECK_ADDRESS(PFNGLDELETEPROGRAMSARBPROC, glDeleteProgramsARB); + CHECK_ADDRESS(PFNGLGENPROGRAMSARBPROC, glGenProgramsARB); + CHECK_ADDRESS(PFNGLPROGRAMENVPARAMETER4DARBPROC, glProgramEnvParameter4dARB); + CHECK_ADDRESS(PFNGLPROGRAMENVPARAMETER4DVARBPROC, glProgramEnvParameter4dvARB); + CHECK_ADDRESS(PFNGLPROGRAMENVPARAMETER4FARBPROC, glProgramEnvParameter4fARB); + CHECK_ADDRESS(PFNGLPROGRAMENVPARAMETER4FVARBPROC, glProgramEnvParameter4fvARB); + CHECK_ADDRESS(PFNGLPROGRAMLOCALPARAMETER4DARBPROC, glProgramLocalParameter4dARB); + CHECK_ADDRESS(PFNGLPROGRAMLOCALPARAMETER4DVARBPROC, glProgramLocalParameter4dvARB); + CHECK_ADDRESS(PFNGLPROGRAMLOCALPARAMETER4FARBPROC, glProgramLocalParameter4fARB); + CHECK_ADDRESS(PFNGLPROGRAMLOCALPARAMETER4FVARBPROC, glProgramLocalParameter4fvARB); + CHECK_ADDRESS(PFNGLGETPROGRAMENVPARAMETERDVARBPROC, glGetProgramEnvParameterdvARB); + CHECK_ADDRESS(PFNGLGETPROGRAMENVPARAMETERFVARBPROC, glGetProgramEnvParameterfvARB); + CHECK_ADDRESS(PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC, glGetProgramLocalParameterdvARB); + CHECK_ADDRESS(PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC, glGetProgramLocalParameterfvARB); + CHECK_ADDRESS(PFNGLGETPROGRAMIVARBPROC, glGetProgramivARB); + CHECK_ADDRESS(PFNGLGETPROGRAMSTRINGARBPROC, glGetProgramStringARB); + CHECK_ADDRESS(PFNGLISPROGRAMARBPROC, glIsProgramARB); #endif return true; @@ -1339,13 +1340,13 @@ static bool setupNVOcclusionQuery(const char *glext) CHECK_EXT("GL_NV_occlusion_query"); #ifndef USE_OPENGLES - CHECK_ADDRESS(NEL_PFNGLGENOCCLUSIONQUERIESNVPROC, glGenOcclusionQueriesNV); - CHECK_ADDRESS(NEL_PFNGLDELETEOCCLUSIONQUERIESNVPROC, glDeleteOcclusionQueriesNV); - CHECK_ADDRESS(NEL_PFNGLISOCCLUSIONQUERYNVPROC, glIsOcclusionQueryNV); - CHECK_ADDRESS(NEL_PFNGLBEGINOCCLUSIONQUERYNVPROC, glBeginOcclusionQueryNV); - CHECK_ADDRESS(NEL_PFNGLENDOCCLUSIONQUERYNVPROC, glEndOcclusionQueryNV); - CHECK_ADDRESS(NEL_PFNGLGETOCCLUSIONQUERYIVNVPROC, glGetOcclusionQueryivNV); - CHECK_ADDRESS(NEL_PFNGLGETOCCLUSIONQUERYUIVNVPROC, glGetOcclusionQueryuivNV); + CHECK_ADDRESS(PFNGLGENOCCLUSIONQUERIESNVPROC, glGenOcclusionQueriesNV); + CHECK_ADDRESS(PFNGLDELETEOCCLUSIONQUERIESNVPROC, glDeleteOcclusionQueriesNV); + CHECK_ADDRESS(PFNGLISOCCLUSIONQUERYNVPROC, glIsOcclusionQueryNV); + CHECK_ADDRESS(PFNGLBEGINOCCLUSIONQUERYNVPROC, glBeginOcclusionQueryNV); + CHECK_ADDRESS(PFNGLENDOCCLUSIONQUERYNVPROC, glEndOcclusionQueryNV); + CHECK_ADDRESS(PFNGLGETOCCLUSIONQUERYIVNVPROC, glGetOcclusionQueryivNV); + CHECK_ADDRESS(PFNGLGETOCCLUSIONQUERYUIVNVPROC, glGetOcclusionQueryuivNV); #endif return true; @@ -1396,38 +1397,38 @@ static bool setupFrameBufferObject(const char *glext) #ifdef USE_OPENGLES CHECK_EXT("GL_OES_framebuffer_object"); - CHECK_ADDRESS(NEL_PFNGLISRENDERBUFFEROESPROC, glIsRenderbufferOES); - CHECK_ADDRESS(NEL_PFNGLBINDRENDERBUFFEROESPROC, glBindRenderbufferOES); - CHECK_ADDRESS(NEL_PFNGLDELETERENDERBUFFERSOESPROC, glDeleteRenderbuffersOES); - CHECK_ADDRESS(NEL_PFNGLGENRENDERBUFFERSOESPROC, glGenRenderbuffersOES); - CHECK_ADDRESS(NEL_PFNGLRENDERBUFFERSTORAGEOESPROC, glRenderbufferStorageOES); - CHECK_ADDRESS(NEL_PFNGLGETRENDERBUFFERPARAMETERIVOESPROC, glGetRenderbufferParameterivOES); - CHECK_ADDRESS(NEL_PFNGLISFRAMEBUFFEROESPROC, glIsFramebufferOES); - CHECK_ADDRESS(NEL_PFNGLBINDFRAMEBUFFEROESPROC, glBindFramebufferOES); - CHECK_ADDRESS(NEL_PFNGLDELETEFRAMEBUFFERSOESPROC, glDeleteFramebuffersOES); - CHECK_ADDRESS(NEL_PFNGLGENFRAMEBUFFERSOESPROC, glGenFramebuffersOES); - CHECK_ADDRESS(NEL_PFNGLCHECKFRAMEBUFFERSTATUSOESPROC, glCheckFramebufferStatusOES); - CHECK_ADDRESS(NEL_PFNGLFRAMEBUFFERRENDERBUFFEROESPROC, glFramebufferRenderbufferOES); - CHECK_ADDRESS(NEL_PFNGLFRAMEBUFFERTEXTURE2DOESPROC, glFramebufferTexture2DOES); - CHECK_ADDRESS(NEL_PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC, glGetFramebufferAttachmentParameterivOES); - CHECK_ADDRESS(NEL_PFNGLGENERATEMIPMAPOESPROC, glGenerateMipmapOES); + CHECK_ADDRESS(PFNGLISRENDERBUFFEROESPROC, glIsRenderbufferOES); + CHECK_ADDRESS(PFNGLBINDRENDERBUFFEROESPROC, glBindRenderbufferOES); + CHECK_ADDRESS(PFNGLDELETERENDERBUFFERSOESPROC, glDeleteRenderbuffersOES); + CHECK_ADDRESS(PFNGLGENRENDERBUFFERSOESPROC, glGenRenderbuffersOES); + CHECK_ADDRESS(PFNGLRENDERBUFFERSTORAGEOESPROC, glRenderbufferStorageOES); + CHECK_ADDRESS(PFNGLGETRENDERBUFFERPARAMETERIVOESPROC, glGetRenderbufferParameterivOES); + CHECK_ADDRESS(PFNGLISFRAMEBUFFEROESPROC, glIsFramebufferOES); + CHECK_ADDRESS(PFNGLBINDFRAMEBUFFEROESPROC, glBindFramebufferOES); + CHECK_ADDRESS(PFNGLDELETEFRAMEBUFFERSOESPROC, glDeleteFramebuffersOES); + CHECK_ADDRESS(PFNGLGENFRAMEBUFFERSOESPROC, glGenFramebuffersOES); + CHECK_ADDRESS(PFNGLCHECKFRAMEBUFFERSTATUSOESPROC, glCheckFramebufferStatusOES); + CHECK_ADDRESS(PFNGLFRAMEBUFFERRENDERBUFFEROESPROC, glFramebufferRenderbufferOES); + CHECK_ADDRESS(PFNGLFRAMEBUFFERTEXTURE2DOESPROC, glFramebufferTexture2DOES); + CHECK_ADDRESS(PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC, glGetFramebufferAttachmentParameterivOES); + CHECK_ADDRESS(PFNGLGENERATEMIPMAPOESPROC, glGenerateMipmapOES); #else CHECK_EXT("GL_EXT_framebuffer_object"); - CHECK_ADDRESS(NEL_PFNGLISRENDERBUFFEREXTPROC, glIsRenderbufferEXT); - CHECK_ADDRESS(NEL_PFNGLISFRAMEBUFFEREXTPROC, glIsFramebufferEXT); - CHECK_ADDRESS(NEL_PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC, glCheckFramebufferStatusEXT); - CHECK_ADDRESS(NEL_PFNGLGENFRAMEBUFFERSEXTPROC, glGenFramebuffersEXT); - CHECK_ADDRESS(NEL_PFNGLBINDFRAMEBUFFEREXTPROC, glBindFramebufferEXT); - CHECK_ADDRESS(NEL_PFNGLFRAMEBUFFERTEXTURE2DEXTPROC, glFramebufferTexture2DEXT); - CHECK_ADDRESS(NEL_PFNGLGENRENDERBUFFERSEXTPROC, glGenRenderbuffersEXT); - CHECK_ADDRESS(NEL_PFNGLBINDRENDERBUFFEREXTPROC, glBindRenderbufferEXT); - CHECK_ADDRESS(NEL_PFNGLRENDERBUFFERSTORAGEEXTPROC, glRenderbufferStorageEXT); - CHECK_ADDRESS(NEL_PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC, glFramebufferRenderbufferEXT); - CHECK_ADDRESS(NEL_PFNGLDELETERENDERBUFFERSEXTPROC, glDeleteRenderbuffersEXT); - CHECK_ADDRESS(NEL_PFNGLDELETEFRAMEBUFFERSEXTPROC, glDeleteFramebuffersEXT); - CHECK_ADDRESS(NEL_PFNGETRENDERBUFFERPARAMETERIVEXTPROC, glGetRenderbufferParameterivEXT); - CHECK_ADDRESS(NEL_PFNGENERATEMIPMAPEXTPROC, glGenerateMipmapEXT); + CHECK_ADDRESS(PFNGLISRENDERBUFFEREXTPROC, glIsRenderbufferEXT); + CHECK_ADDRESS(PFNGLISFRAMEBUFFEREXTPROC, glIsFramebufferEXT); + CHECK_ADDRESS(PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC, glCheckFramebufferStatusEXT); + CHECK_ADDRESS(PFNGLGENFRAMEBUFFERSEXTPROC, glGenFramebuffersEXT); + CHECK_ADDRESS(PFNGLBINDFRAMEBUFFEREXTPROC, glBindFramebufferEXT); + CHECK_ADDRESS(PFNGLFRAMEBUFFERTEXTURE2DEXTPROC, glFramebufferTexture2DEXT); + CHECK_ADDRESS(PFNGLGENRENDERBUFFERSEXTPROC, glGenRenderbuffersEXT); + CHECK_ADDRESS(PFNGLBINDRENDERBUFFEREXTPROC, glBindRenderbufferEXT); + CHECK_ADDRESS(PFNGLRENDERBUFFERSTORAGEEXTPROC, glRenderbufferStorageEXT); + CHECK_ADDRESS(PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC, glFramebufferRenderbufferEXT); + CHECK_ADDRESS(PFNGLDELETERENDERBUFFERSEXTPROC, glDeleteRenderbuffersEXT); + CHECK_ADDRESS(PFNGLDELETEFRAMEBUFFERSEXTPROC, glDeleteFramebuffersEXT); + CHECK_ADDRESS(PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC, glGetRenderbufferParameterivEXT); + CHECK_ADDRESS(PFNGLGENERATEMIPMAPEXTPROC, glGenerateMipmapEXT); #endif return true; @@ -1440,7 +1441,7 @@ static bool setupFrameBufferBlit(const char *glext) CHECK_EXT("GL_EXT_framebuffer_blit"); #ifndef USE_OPENGLES - CHECK_ADDRESS(NEL_PFNGLBLITFRAMEBUFFEREXTPROC, glBlitFramebufferEXT); + CHECK_ADDRESS(PFNGLBLITFRAMEBUFFEREXTPROC, glBlitFramebufferEXT); #endif return true; @@ -1453,7 +1454,7 @@ static bool setupFrameBufferMultisample(const char *glext) CHECK_EXT("GL_EXT_framebuffer_multisample"); #ifndef USE_OPENGLES - CHECK_ADDRESS(NEL_PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC, glRenderbufferStorageMultisampleEXT); + CHECK_ADDRESS(PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC, glRenderbufferStorageMultisampleEXT); #endif return true; @@ -1473,6 +1474,22 @@ static bool setupPackedDepthStencil(const char *glext) return true; } +// *************************************************************************** +static bool setupNVXGPUMemoryInfo(const char *glext) +{ + H_AUTO_OGL(setupNVXGPUMemoryInfo); + CHECK_EXT("GL_NVX_gpu_memory_info"); + return true; +} + +// *************************************************************************** +static bool setupATIMeminfo(const char *glext) +{ + H_AUTO_OGL(setupATIMeminfo); + CHECK_EXT("GL_ATI_meminfo"); + return true; +} + // *************************************************************************** // Extension Check. void registerGlExtensions(CGlExtensions &ext) @@ -1688,6 +1705,35 @@ void registerGlExtensions(CGlExtensions &ext) ext.ATIMapObjectBuffer = false; ext.ATIVertexAttribArrayObject = false; } + +#ifndef USE_OPENGLES + ext.NVXGPUMemoryInfo = setupNVXGPUMemoryInfo(glext); + + if (ext.NVXGPUMemoryInfo) + { +// GPU_MEMORY_INFO_EVICTION_COUNT_NVX; +// GPU_MEMORY_INFO_EVICTED_MEMORY_NVX; + + GLint nDedicatedMemoryInKB = 0; + glGetIntegerv(GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX, &nDedicatedMemoryInKB); + + GLint nTotalMemoryInKB = 0; + glGetIntegerv(GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX, &nTotalMemoryInKB); + + GLint nCurAvailMemoryInKB = 0; + glGetIntegerv(GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX, &nCurAvailMemoryInKB); + + nlinfo("Memory: total: %d available: %d dedicated: %d", nTotalMemoryInKB, nCurAvailMemoryInKB, nDedicatedMemoryInKB); + } + + ext.ATIMeminfo = setupATIMeminfo(glext); + + if (ext.ATIMeminfo) + { + GLint nCurAvailMemoryInKB = 0; + glGetIntegerv(GL_TEXTURE_FREE_MEMORY_ATI, &nCurAvailMemoryInKB); + } +#endif } @@ -1707,6 +1753,27 @@ static bool setupWGLEXTSwapControl(const char *glext) return true; } +// *************************************************************************** +static bool setupWGLAMDGPUAssociation(const char *glext) +{ + H_AUTO_OGL(setupWGLAMDGPUAssociation); + CHECK_EXT("WGL_AMD_gpu_association"); + +#if !defined(USE_OPENGLES) && defined(NL_OS_WINDOWS) + CHECK_ADDRESS(PFNWGLGETGPUIDSAMDPROC, wglGetGPUIDsAMD); + CHECK_ADDRESS(PFNWGLGETGPUINFOAMDPROC, wglGetGPUInfoAMD); + CHECK_ADDRESS(PFNWGLGETCONTEXTGPUIDAMDPROC, wglGetContextGPUIDAMD); + CHECK_ADDRESS(PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC, wglCreateAssociatedContextAMD); + CHECK_ADDRESS(PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC, wglCreateAssociatedContextAttribsAMD); + CHECK_ADDRESS(PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC, wglDeleteAssociatedContextAMD); + CHECK_ADDRESS(PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC, wglMakeAssociatedContextCurrentAMD); + CHECK_ADDRESS(PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC, wglGetCurrentAssociatedContextAMD); + CHECK_ADDRESS(PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC, wglBlitContextFramebufferAMD); +#endif + + return true; +} + // ********************************* static bool setupGLXEXTSwapControl(const char *glext) { @@ -1714,7 +1781,7 @@ static bool setupGLXEXTSwapControl(const char *glext) CHECK_EXT("GLX_EXT_swap_control"); #if defined(NL_OS_UNIX) && !defined(NL_OS_MAC) - CHECK_ADDRESS(NEL_PFNGLXSWAPINTERVALEXTPROC, glXSwapIntervalEXT); + CHECK_ADDRESS(PFNGLXSWAPINTERVALEXTPROC, glXSwapIntervalEXT); #endif return true; @@ -1740,8 +1807,8 @@ static bool setupGLXMESASwapControl(const char *glext) CHECK_EXT("GLX_MESA_swap_control"); #if defined(NL_OS_UNIX) && !defined(NL_OS_MAC) - CHECK_ADDRESS(NEL_PFNGLXSWAPINTERVALMESAPROC, glXSwapIntervalMESA); - CHECK_ADDRESS(NEL_PFNGLXGETSWAPINTERVALMESAPROC, glXGetSwapIntervalMESA); + CHECK_ADDRESS(PFNGLXSWAPINTERVALMESAPROC, glXSwapIntervalMESA); + CHECK_ADDRESS(PFNGLXGETSWAPINTERVALMESAPROC, glXGetSwapIntervalMESA); #endif return true; @@ -1819,6 +1886,20 @@ bool registerWGlExtensions(CGlExtensions &ext, HDC hDC) // Check for swap control ext.WGLEXTSwapControl= setupWGLEXTSwapControl(glext); + ext.WGLAMDGPUAssociation = setupWGLAMDGPUAssociation(glext); + + if (ext.WGLAMDGPUAssociation) + { + GLuint uNoOfGPUs = nwglGetGPUIDsAMD(0, 0); + GLuint *uGPUIDs = new GLuint[uNoOfGPUs]; + nwglGetGPUIDsAMD(uNoOfGPUs, uGPUIDs); + + GLuint uTotalMemoryInMB = 0; + nwglGetGPUInfoAMD(uGPUIDs[0], WGL_GPU_RAM_AMD, GL_UNSIGNED_INT, sizeof(GLuint), &uTotalMemoryInMB); + + delete [] uGPUIDs; + } + return true; } #elif defined(NL_OS_MAC) diff --git a/code/nel/src/3d/driver/opengl/driver_opengl_extension.h b/code/nel/src/3d/driver/opengl/driver_opengl_extension.h index fe7738fd8..938473029 100644 --- a/code/nel/src/3d/driver/opengl/driver_opengl_extension.h +++ b/code/nel/src/3d/driver/opengl/driver_opengl_extension.h @@ -109,6 +109,17 @@ struct CGlExtensions bool OESDrawTexture; bool OESMapBuffer; + // extensions to get memory info + + // GL_NVX_gpu_memory_info + bool NVXGPUMemoryInfo; + + // GL_ATI_meminfo + bool ATIMeminfo; + + // WGL_AMD_gpu_association + bool WGLAMDGPUAssociation; + public: /// \name Disable Hardware feature. False by default. setuped by IDriver @@ -151,7 +162,6 @@ public: ATIVertexArrayObject= false; ATIEnvMapBumpMap = false; ATIFragmentShader = false; - ATIVertexArrayObject = false; ATIMapObjectBuffer = false; ATIVertexAttribArrayObject = false; EXTVertexShader= false; @@ -176,6 +186,10 @@ public: OESDrawTexture = false; OESMapBuffer = false; + NVXGPUMemoryInfo = false; + ATIMeminfo = false; + WGLAMDGPUAssociation = false; + /// \name Disable Hardware feature. False by default. setuped by IDriver DisableHardwareVertexProgram= false; DisableHardwarePixelProgram= false; @@ -225,12 +239,15 @@ public: result += NVOcclusionQuery ? "NVOcclusionQuery " : ""; result += NVStateVARWithoutFlush ? "NVStateVARWithoutFlush " : ""; result += ARBMultisample ? "ARBMultisample " : ""; + result += NVXGPUMemoryInfo ? "NVXGPUMemoryInfo " : ""; + result += ATIMeminfo ? "ATIMeminfo " : ""; #ifdef NL_OS_WINDOWS result += "\n WindowsGL: "; result += WGLARBPBuffer ? "WGLARBPBuffer " : ""; result += WGLARBPixelFormat ? "WGLARBPixelFormat " : ""; result += WGLEXTSwapControl ? "WGLEXTSwapControl " : ""; + result += WGLAMDGPUAssociation ? "WGLAMDGPUAssociation " : ""; #elif defined(NL_OS_MAC) #elif defined(NL_OS_UNIX) result += "\n GLX: "; @@ -294,230 +311,228 @@ void registerGlExtensions(CGlExtensions &ext); // OES_mapbuffer. //=============== -extern NEL_PFNGLMAPBUFFEROESPROC nglMapBufferOES; -extern NEL_PFNGLUNMAPBUFFEROESPROC nglUnmapBufferOES; -extern NEL_PFNGLGETBUFFERPOINTERVOESPROC nglGetBufferPointervOES; +extern PFNGLMAPBUFFEROESPROC nglMapBufferOES; +extern PFNGLUNMAPBUFFEROESPROC nglUnmapBufferOES; +extern PFNGLGETBUFFERPOINTERVOESPROC nglGetBufferPointervOES; -extern NEL_PFNGLBUFFERSUBDATAPROC nglBufferSubData; - -extern PFNGLDRAWTEXFOESPROC nglDrawTexfOES; +extern PFNGLDRAWTEXFOESPROC nglDrawTexfOES; // GL_OES_framebuffer_object -extern NEL_PFNGLISRENDERBUFFEROESPROC nglIsRenderbufferOES; -extern NEL_PFNGLBINDRENDERBUFFEROESPROC nglBindRenderbufferOES; -extern NEL_PFNGLDELETERENDERBUFFERSOESPROC nglDeleteRenderbuffersOES; -extern NEL_PFNGLGENRENDERBUFFERSOESPROC nglGenRenderbuffersOES; -extern NEL_PFNGLRENDERBUFFERSTORAGEOESPROC nglRenderbufferStorageOES; -extern NEL_PFNGLGETRENDERBUFFERPARAMETERIVOESPROC nglGetRenderbufferParameterivOES; -extern NEL_PFNGLISFRAMEBUFFEROESPROC nglIsFramebufferOES; -extern NEL_PFNGLBINDFRAMEBUFFEROESPROC nglBindFramebufferOES; -extern NEL_PFNGLDELETEFRAMEBUFFERSOESPROC nglDeleteFramebuffersOES; -extern NEL_PFNGLGENFRAMEBUFFERSOESPROC nglGenFramebuffersOES; -extern NEL_PFNGLCHECKFRAMEBUFFERSTATUSOESPROC nglCheckFramebufferStatusOES; -extern NEL_PFNGLFRAMEBUFFERRENDERBUFFEROESPROC nglFramebufferRenderbufferOES; -extern NEL_PFNGLFRAMEBUFFERTEXTURE2DOESPROC nglFramebufferTexture2DOES; -extern NEL_PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC nglGetFramebufferAttachmentParameterivOES; -extern NEL_PFNGLGENERATEMIPMAPOESPROC nglGenerateMipmapOES; +extern PFNGLISRENDERBUFFEROESPROC nglIsRenderbufferOES; +extern PFNGLBINDRENDERBUFFEROESPROC nglBindRenderbufferOES; +extern PFNGLDELETERENDERBUFFERSOESPROC nglDeleteRenderbuffersOES; +extern PFNGLGENRENDERBUFFERSOESPROC nglGenRenderbuffersOES; +extern PFNGLRENDERBUFFERSTORAGEOESPROC nglRenderbufferStorageOES; +extern PFNGLGETRENDERBUFFERPARAMETERIVOESPROC nglGetRenderbufferParameterivOES; +extern PFNGLISFRAMEBUFFEROESPROC nglIsFramebufferOES; +extern PFNGLBINDFRAMEBUFFEROESPROC nglBindFramebufferOES; +extern PFNGLDELETEFRAMEBUFFERSOESPROC nglDeleteFramebuffersOES; +extern PFNGLGENFRAMEBUFFERSOESPROC nglGenFramebuffersOES; +extern PFNGLCHECKFRAMEBUFFERSTATUSOESPROC nglCheckFramebufferStatusOES; +extern PFNGLFRAMEBUFFERRENDERBUFFEROESPROC nglFramebufferRenderbufferOES; +extern PFNGLFRAMEBUFFERTEXTURE2DOESPROC nglFramebufferTexture2DOES; +extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC nglGetFramebufferAttachmentParameterivOES; +extern PFNGLGENERATEMIPMAPOESPROC nglGenerateMipmapOES; // GL_OES_texture_cube_map -extern NEL_PFNGLTEXGENFOESPROC nglTexGenfOES; -extern NEL_PFNGLTEXGENFVOESPROC nglTexGenfvOES; -extern NEL_PFNGLTEXGENIOESPROC nglTexGeniOES; -extern NEL_PFNGLTEXGENIVOESPROC nglTexGenivOES; -extern NEL_PFNGLTEXGENXOESPROC nglTexGenxOES; -extern NEL_PFNGLTEXGENXVOESPROC nglTexGenxvOES; -extern NEL_PFNGLGETTEXGENFVOESPROC nglGetTexGenfvOES; -extern NEL_PFNGLGETTEXGENIVOESPROC nglGetTexGenivOES; -extern NEL_PFNGLGETTEXGENXVOESPROC nglGetTexGenxvOES; +extern PFNGLTEXGENFOESPROC nglTexGenfOES; +extern PFNGLTEXGENFVOESPROC nglTexGenfvOES; +extern PFNGLTEXGENIOESPROC nglTexGeniOES; +extern PFNGLTEXGENIVOESPROC nglTexGenivOES; +extern PFNGLTEXGENXOESPROC nglTexGenxOES; +extern PFNGLTEXGENXVOESPROC nglTexGenxvOES; +extern PFNGLGETTEXGENFVOESPROC nglGetTexGenfvOES; +extern PFNGLGETTEXGENIVOESPROC nglGetTexGenivOES; +extern PFNGLGETTEXGENXVOESPROC nglGetTexGenxvOES; #else // ARB_multitexture //================= -extern NEL_PFNGLACTIVETEXTUREARBPROC nglActiveTextureARB; -extern NEL_PFNGLCLIENTACTIVETEXTUREARBPROC nglClientActiveTextureARB; +extern PFNGLACTIVETEXTUREARBPROC nglActiveTextureARB; +extern PFNGLCLIENTACTIVETEXTUREARBPROC nglClientActiveTextureARB; -extern NEL_PFNGLMULTITEXCOORD1SARBPROC nglMultiTexCoord1sARB; -extern NEL_PFNGLMULTITEXCOORD1IARBPROC nglMultiTexCoord1iARB; -extern NEL_PFNGLMULTITEXCOORD1FARBPROC nglMultiTexCoord1fARB; -extern NEL_PFNGLMULTITEXCOORD1FARBPROC nglMultiTexCoord1fARB; -extern NEL_PFNGLMULTITEXCOORD1DARBPROC nglMultiTexCoord1dARB; -extern NEL_PFNGLMULTITEXCOORD2SARBPROC nglMultiTexCoord2sARB; -extern NEL_PFNGLMULTITEXCOORD2IARBPROC nglMultiTexCoord2iARB; -extern NEL_PFNGLMULTITEXCOORD2FARBPROC nglMultiTexCoord2fARB; -extern NEL_PFNGLMULTITEXCOORD2DARBPROC nglMultiTexCoord2dARB; -extern NEL_PFNGLMULTITEXCOORD3SARBPROC nglMultiTexCoord3sARB; -extern NEL_PFNGLMULTITEXCOORD3IARBPROC nglMultiTexCoord3iARB; -extern NEL_PFNGLMULTITEXCOORD3FARBPROC nglMultiTexCoord3fARB; -extern NEL_PFNGLMULTITEXCOORD3DARBPROC nglMultiTexCoord3dARB; -extern NEL_PFNGLMULTITEXCOORD4SARBPROC nglMultiTexCoord4sARB; -extern NEL_PFNGLMULTITEXCOORD4IARBPROC nglMultiTexCoord4iARB; -extern NEL_PFNGLMULTITEXCOORD4FARBPROC nglMultiTexCoord4fARB; -extern NEL_PFNGLMULTITEXCOORD4DARBPROC nglMultiTexCoord4dARB; +extern PFNGLMULTITEXCOORD1SARBPROC nglMultiTexCoord1sARB; +extern PFNGLMULTITEXCOORD1IARBPROC nglMultiTexCoord1iARB; +extern PFNGLMULTITEXCOORD1FARBPROC nglMultiTexCoord1fARB; +extern PFNGLMULTITEXCOORD1FARBPROC nglMultiTexCoord1fARB; +extern PFNGLMULTITEXCOORD1DARBPROC nglMultiTexCoord1dARB; +extern PFNGLMULTITEXCOORD2SARBPROC nglMultiTexCoord2sARB; +extern PFNGLMULTITEXCOORD2IARBPROC nglMultiTexCoord2iARB; +extern PFNGLMULTITEXCOORD2FARBPROC nglMultiTexCoord2fARB; +extern PFNGLMULTITEXCOORD2DARBPROC nglMultiTexCoord2dARB; +extern PFNGLMULTITEXCOORD3SARBPROC nglMultiTexCoord3sARB; +extern PFNGLMULTITEXCOORD3IARBPROC nglMultiTexCoord3iARB; +extern PFNGLMULTITEXCOORD3FARBPROC nglMultiTexCoord3fARB; +extern PFNGLMULTITEXCOORD3DARBPROC nglMultiTexCoord3dARB; +extern PFNGLMULTITEXCOORD4SARBPROC nglMultiTexCoord4sARB; +extern PFNGLMULTITEXCOORD4IARBPROC nglMultiTexCoord4iARB; +extern PFNGLMULTITEXCOORD4FARBPROC nglMultiTexCoord4fARB; +extern PFNGLMULTITEXCOORD4DARBPROC nglMultiTexCoord4dARB; -extern NEL_PFNGLMULTITEXCOORD1SVARBPROC nglMultiTexCoord1svARB; -extern NEL_PFNGLMULTITEXCOORD1IVARBPROC nglMultiTexCoord1ivARB; -extern NEL_PFNGLMULTITEXCOORD1FVARBPROC nglMultiTexCoord1fvARB; -extern NEL_PFNGLMULTITEXCOORD1DVARBPROC nglMultiTexCoord1dvARB; -extern NEL_PFNGLMULTITEXCOORD2SVARBPROC nglMultiTexCoord2svARB; -extern NEL_PFNGLMULTITEXCOORD2IVARBPROC nglMultiTexCoord2ivARB; -extern NEL_PFNGLMULTITEXCOORD2FVARBPROC nglMultiTexCoord2fvARB; -extern NEL_PFNGLMULTITEXCOORD2DVARBPROC nglMultiTexCoord2dvARB; -extern NEL_PFNGLMULTITEXCOORD3SVARBPROC nglMultiTexCoord3svARB; -extern NEL_PFNGLMULTITEXCOORD3IVARBPROC nglMultiTexCoord3ivARB; -extern NEL_PFNGLMULTITEXCOORD3FVARBPROC nglMultiTexCoord3fvARB; -extern NEL_PFNGLMULTITEXCOORD3DVARBPROC nglMultiTexCoord3dvARB; -extern NEL_PFNGLMULTITEXCOORD4SVARBPROC nglMultiTexCoord4svARB; -extern NEL_PFNGLMULTITEXCOORD4IVARBPROC nglMultiTexCoord4ivARB; -extern NEL_PFNGLMULTITEXCOORD4FVARBPROC nglMultiTexCoord4fvARB; -extern NEL_PFNGLMULTITEXCOORD4DVARBPROC nglMultiTexCoord4dvARB; +extern PFNGLMULTITEXCOORD1SVARBPROC nglMultiTexCoord1svARB; +extern PFNGLMULTITEXCOORD1IVARBPROC nglMultiTexCoord1ivARB; +extern PFNGLMULTITEXCOORD1FVARBPROC nglMultiTexCoord1fvARB; +extern PFNGLMULTITEXCOORD1DVARBPROC nglMultiTexCoord1dvARB; +extern PFNGLMULTITEXCOORD2SVARBPROC nglMultiTexCoord2svARB; +extern PFNGLMULTITEXCOORD2IVARBPROC nglMultiTexCoord2ivARB; +extern PFNGLMULTITEXCOORD2FVARBPROC nglMultiTexCoord2fvARB; +extern PFNGLMULTITEXCOORD2DVARBPROC nglMultiTexCoord2dvARB; +extern PFNGLMULTITEXCOORD3SVARBPROC nglMultiTexCoord3svARB; +extern PFNGLMULTITEXCOORD3IVARBPROC nglMultiTexCoord3ivARB; +extern PFNGLMULTITEXCOORD3FVARBPROC nglMultiTexCoord3fvARB; +extern PFNGLMULTITEXCOORD3DVARBPROC nglMultiTexCoord3dvARB; +extern PFNGLMULTITEXCOORD4SVARBPROC nglMultiTexCoord4svARB; +extern PFNGLMULTITEXCOORD4IVARBPROC nglMultiTexCoord4ivARB; +extern PFNGLMULTITEXCOORD4FVARBPROC nglMultiTexCoord4fvARB; +extern PFNGLMULTITEXCOORD4DVARBPROC nglMultiTexCoord4dvARB; // ARB_TextureCompression. //======================== -extern NEL_PFNGLCOMPRESSEDTEXIMAGE3DARBPROC nglCompressedTexImage3DARB; -extern NEL_PFNGLCOMPRESSEDTEXIMAGE2DARBPROC nglCompressedTexImage2DARB; -extern NEL_PFNGLCOMPRESSEDTEXIMAGE1DARBPROC nglCompressedTexImage1DARB; -extern NEL_PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC nglCompressedTexSubImage3DARB; -extern NEL_PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC nglCompressedTexSubImage2DARB; -extern NEL_PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC nglCompressedTexSubImage1DARB; -extern NEL_PFNGLGETCOMPRESSEDTEXIMAGEARBPROC nglGetCompressedTexImageARB; +extern PFNGLCOMPRESSEDTEXIMAGE3DARBPROC nglCompressedTexImage3DARB; +extern PFNGLCOMPRESSEDTEXIMAGE2DARBPROC nglCompressedTexImage2DARB; +extern PFNGLCOMPRESSEDTEXIMAGE1DARBPROC nglCompressedTexImage1DARB; +extern PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC nglCompressedTexSubImage3DARB; +extern PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC nglCompressedTexSubImage2DARB; +extern PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC nglCompressedTexSubImage1DARB; +extern PFNGLGETCOMPRESSEDTEXIMAGEARBPROC nglGetCompressedTexImageARB; // VertexArrayRangeNV. //==================== -extern NEL_PFNGLFLUSHVERTEXARRAYRANGENVPROC nglFlushVertexArrayRangeNV; -extern NEL_PFNGLVERTEXARRAYRANGENVPROC nglVertexArrayRangeNV; +extern PFNGLFLUSHVERTEXARRAYRANGENVPROC nglFlushVertexArrayRangeNV; +extern PFNGLVERTEXARRAYRANGENVPROC nglVertexArrayRangeNV; #ifdef NL_OS_WINDOWS extern PFNWGLALLOCATEMEMORYNVPROC nwglAllocateMemoryNV; extern PFNWGLFREEMEMORYNVPROC nwglFreeMemoryNV; #elif defined(NL_OS_UNIX) && !defined(NL_OS_MAC) -extern NEL_PFNGLXALLOCATEMEMORYNVPROC nglXAllocateMemoryNV; -extern NEL_PFNGLXFREEMEMORYNVPROC nglXFreeMemoryNV; +extern PFNGLXALLOCATEMEMORYNVPROC nglXAllocateMemoryNV; +extern PFNGLXFREEMEMORYNVPROC nglXFreeMemoryNV; #endif // FenceNV. //==================== -extern NEL_PFNGLDELETEFENCESNVPROC nglDeleteFencesNV; -extern NEL_PFNGLGENFENCESNVPROC nglGenFencesNV; -extern NEL_PFNGLISFENCENVPROC nglIsFenceNV; -extern NEL_PFNGLTESTFENCENVPROC nglTestFenceNV; -extern NEL_PFNGLGETFENCEIVNVPROC nglGetFenceivNV; -extern NEL_PFNGLFINISHFENCENVPROC nglFinishFenceNV; -extern NEL_PFNGLSETFENCENVPROC nglSetFenceNV; +extern PFNGLDELETEFENCESNVPROC nglDeleteFencesNV; +extern PFNGLGENFENCESNVPROC nglGenFencesNV; +extern PFNGLISFENCENVPROC nglIsFenceNV; +extern PFNGLTESTFENCENVPROC nglTestFenceNV; +extern PFNGLGETFENCEIVNVPROC nglGetFenceivNV; +extern PFNGLFINISHFENCENVPROC nglFinishFenceNV; +extern PFNGLSETFENCENVPROC nglSetFenceNV; // VertexWeighting. //================== -extern NEL_PFNGLVERTEXWEIGHTFEXTPROC nglVertexWeightfEXT; -extern NEL_PFNGLVERTEXWEIGHTFVEXTPROC nglVertexWeightfvEXT; -extern NEL_PFNGLVERTEXWEIGHTPOINTEREXTPROC nglVertexWeightPointerEXT; +extern PFNGLVERTEXWEIGHTFEXTPROC nglVertexWeightfEXT; +extern PFNGLVERTEXWEIGHTFVEXTPROC nglVertexWeightfvEXT; +extern PFNGLVERTEXWEIGHTPOINTEREXTPROC nglVertexWeightPointerEXT; // VertexProgramExtension. //======================== -extern NEL_PFNGLAREPROGRAMSRESIDENTNVPROC nglAreProgramsResidentNV; -extern NEL_PFNGLBINDPROGRAMNVPROC nglBindProgramNV; -extern NEL_PFNGLDELETEPROGRAMSNVPROC nglDeleteProgramsNV; -extern NEL_PFNGLEXECUTEPROGRAMNVPROC nglExecuteProgramNV; -extern NEL_PFNGLGENPROGRAMSNVPROC nglGenProgramsNV; -extern NEL_PFNGLGETPROGRAMPARAMETERDVNVPROC nglGetProgramParameterdvNV; -extern NEL_PFNGLGETPROGRAMPARAMETERFVNVPROC nglGetProgramParameterfvNV; -extern NEL_PFNGLGETPROGRAMIVNVPROC nglGetProgramivNV; -extern NEL_PFNGLGETPROGRAMSTRINGNVPROC nglGetProgramStringNV; -extern NEL_PFNGLGETTRACKMATRIXIVNVPROC nglGetTrackMatrixivNV; -extern NEL_PFNGLGETVERTEXATTRIBDVNVPROC nglGetVertexAttribdvNV; -extern NEL_PFNGLGETVERTEXATTRIBFVNVPROC nglGetVertexAttribfvNV; -extern NEL_PFNGLGETVERTEXATTRIBIVNVPROC nglGetVertexAttribivNV; -extern NEL_PFNGLGETVERTEXATTRIBPOINTERVNVPROC nglGetVertexAttribPointervNV; -extern NEL_PFNGLISPROGRAMNVPROC nglIsProgramNV; -extern NEL_PFNGLLOADPROGRAMNVPROC nglLoadProgramNV; -extern NEL_PFNGLPROGRAMPARAMETER4DNVPROC nglProgramParameter4dNV; -extern NEL_PFNGLPROGRAMPARAMETER4DVNVPROC nglProgramParameter4dvNV; -extern NEL_PFNGLPROGRAMPARAMETER4FNVPROC nglProgramParameter4fNV; -extern NEL_PFNGLPROGRAMPARAMETER4FVNVPROC nglProgramParameter4fvNV; -extern NEL_PFNGLPROGRAMPARAMETERS4DVNVPROC nglProgramParameters4dvNV; -extern NEL_PFNGLPROGRAMPARAMETERS4FVNVPROC nglProgramParameters4fvNV; -extern NEL_PFNGLREQUESTRESIDENTPROGRAMSNVPROC nglRequestResidentProgramsNV; -extern NEL_PFNGLTRACKMATRIXNVPROC nglTrackMatrixNV; -extern NEL_PFNGLVERTEXATTRIBPOINTERNVPROC nglVertexAttribPointerNV; -extern NEL_PFNGLVERTEXATTRIB1DNVPROC nglVertexAttrib1dNV; -extern NEL_PFNGLVERTEXATTRIB1DVNVPROC nglVertexAttrib1dvNV; -extern NEL_PFNGLVERTEXATTRIB1FNVPROC nglVertexAttrib1fNV; -extern NEL_PFNGLVERTEXATTRIB1FVNVPROC nglVertexAttrib1fvNV; -extern NEL_PFNGLVERTEXATTRIB1SNVPROC nglVertexAttrib1sNV; -extern NEL_PFNGLVERTEXATTRIB1SVNVPROC nglVertexAttrib1svNV; -extern NEL_PFNGLVERTEXATTRIB2DNVPROC nglVertexAttrib2dNV; -extern NEL_PFNGLVERTEXATTRIB2DVNVPROC nglVertexAttrib2dvNV; -extern NEL_PFNGLVERTEXATTRIB2FNVPROC nglVertexAttrib2fNV; -extern NEL_PFNGLVERTEXATTRIB2FVNVPROC nglVertexAttrib2fvNV; -extern NEL_PFNGLVERTEXATTRIB2SNVPROC nglVertexAttrib2sNV; -extern NEL_PFNGLVERTEXATTRIB2SVNVPROC nglVertexAttrib2svNV; -extern NEL_PFNGLVERTEXATTRIB3DNVPROC nglVertexAttrib3dNV; -extern NEL_PFNGLVERTEXATTRIB3DVNVPROC nglVertexAttrib3dvNV; -extern NEL_PFNGLVERTEXATTRIB3FNVPROC nglVertexAttrib3fNV; -extern NEL_PFNGLVERTEXATTRIB3FVNVPROC nglVertexAttrib3fvNV; -extern NEL_PFNGLVERTEXATTRIB3SNVPROC nglVertexAttrib3sNV; -extern NEL_PFNGLVERTEXATTRIB3SVNVPROC nglVertexAttrib3svNV; -extern NEL_PFNGLVERTEXATTRIB4DNVPROC nglVertexAttrib4dNV; -extern NEL_PFNGLVERTEXATTRIB4DVNVPROC nglVertexAttrib4dvNV; -extern NEL_PFNGLVERTEXATTRIB4FNVPROC nglVertexAttrib4fNV; -extern NEL_PFNGLVERTEXATTRIB4FVNVPROC nglVertexAttrib4fvNV; -extern NEL_PFNGLVERTEXATTRIB4SNVPROC nglVertexAttrib4sNV; -extern NEL_PFNGLVERTEXATTRIB4SVNVPROC nglVertexAttrib4svNV; -extern NEL_PFNGLVERTEXATTRIB4UBVNVPROC nglVertexAttrib4ubvNV; -extern NEL_PFNGLVERTEXATTRIBS1DVNVPROC nglVertexAttribs1dvNV; -extern NEL_PFNGLVERTEXATTRIBS1FVNVPROC nglVertexAttribs1fvNV; -extern NEL_PFNGLVERTEXATTRIBS1SVNVPROC nglVertexAttribs1svNV; -extern NEL_PFNGLVERTEXATTRIBS2DVNVPROC nglVertexAttribs2dvNV; -extern NEL_PFNGLVERTEXATTRIBS2FVNVPROC nglVertexAttribs2fvNV; -extern NEL_PFNGLVERTEXATTRIBS2SVNVPROC nglVertexAttribs2svNV; -extern NEL_PFNGLVERTEXATTRIBS3DVNVPROC nglVertexAttribs3dvNV; -extern NEL_PFNGLVERTEXATTRIBS3FVNVPROC nglVertexAttribs3fvNV; -extern NEL_PFNGLVERTEXATTRIBS3SVNVPROC nglVertexAttribs3svNV; -extern NEL_PFNGLVERTEXATTRIBS4DVNVPROC nglVertexAttribs4dvNV; -extern NEL_PFNGLVERTEXATTRIBS4FVNVPROC nglVertexAttribs4fvNV; -extern NEL_PFNGLVERTEXATTRIBS4SVNVPROC nglVertexAttribs4svNV; -extern NEL_PFNGLVERTEXATTRIBS4UBVNVPROC nglVertexAttribs4ubvNV; +extern PFNGLAREPROGRAMSRESIDENTNVPROC nglAreProgramsResidentNV; +extern PFNGLBINDPROGRAMNVPROC nglBindProgramNV; +extern PFNGLDELETEPROGRAMSNVPROC nglDeleteProgramsNV; +extern PFNGLEXECUTEPROGRAMNVPROC nglExecuteProgramNV; +extern PFNGLGENPROGRAMSNVPROC nglGenProgramsNV; +extern PFNGLGETPROGRAMPARAMETERDVNVPROC nglGetProgramParameterdvNV; +extern PFNGLGETPROGRAMPARAMETERFVNVPROC nglGetProgramParameterfvNV; +extern PFNGLGETPROGRAMIVNVPROC nglGetProgramivNV; +extern PFNGLGETPROGRAMSTRINGNVPROC nglGetProgramStringNV; +extern PFNGLGETTRACKMATRIXIVNVPROC nglGetTrackMatrixivNV; +extern PFNGLGETVERTEXATTRIBDVNVPROC nglGetVertexAttribdvNV; +extern PFNGLGETVERTEXATTRIBFVNVPROC nglGetVertexAttribfvNV; +extern PFNGLGETVERTEXATTRIBIVNVPROC nglGetVertexAttribivNV; +extern PFNGLGETVERTEXATTRIBPOINTERVNVPROC nglGetVertexAttribPointervNV; +extern PFNGLISPROGRAMNVPROC nglIsProgramNV; +extern PFNGLLOADPROGRAMNVPROC nglLoadProgramNV; +extern PFNGLPROGRAMPARAMETER4DNVPROC nglProgramParameter4dNV; +extern PFNGLPROGRAMPARAMETER4DVNVPROC nglProgramParameter4dvNV; +extern PFNGLPROGRAMPARAMETER4FNVPROC nglProgramParameter4fNV; +extern PFNGLPROGRAMPARAMETER4FVNVPROC nglProgramParameter4fvNV; +extern PFNGLPROGRAMPARAMETERS4DVNVPROC nglProgramParameters4dvNV; +extern PFNGLPROGRAMPARAMETERS4FVNVPROC nglProgramParameters4fvNV; +extern PFNGLREQUESTRESIDENTPROGRAMSNVPROC nglRequestResidentProgramsNV; +extern PFNGLTRACKMATRIXNVPROC nglTrackMatrixNV; +extern PFNGLVERTEXATTRIBPOINTERNVPROC nglVertexAttribPointerNV; +extern PFNGLVERTEXATTRIB1DNVPROC nglVertexAttrib1dNV; +extern PFNGLVERTEXATTRIB1DVNVPROC nglVertexAttrib1dvNV; +extern PFNGLVERTEXATTRIB1FNVPROC nglVertexAttrib1fNV; +extern PFNGLVERTEXATTRIB1FVNVPROC nglVertexAttrib1fvNV; +extern PFNGLVERTEXATTRIB1SNVPROC nglVertexAttrib1sNV; +extern PFNGLVERTEXATTRIB1SVNVPROC nglVertexAttrib1svNV; +extern PFNGLVERTEXATTRIB2DNVPROC nglVertexAttrib2dNV; +extern PFNGLVERTEXATTRIB2DVNVPROC nglVertexAttrib2dvNV; +extern PFNGLVERTEXATTRIB2FNVPROC nglVertexAttrib2fNV; +extern PFNGLVERTEXATTRIB2FVNVPROC nglVertexAttrib2fvNV; +extern PFNGLVERTEXATTRIB2SNVPROC nglVertexAttrib2sNV; +extern PFNGLVERTEXATTRIB2SVNVPROC nglVertexAttrib2svNV; +extern PFNGLVERTEXATTRIB3DNVPROC nglVertexAttrib3dNV; +extern PFNGLVERTEXATTRIB3DVNVPROC nglVertexAttrib3dvNV; +extern PFNGLVERTEXATTRIB3FNVPROC nglVertexAttrib3fNV; +extern PFNGLVERTEXATTRIB3FVNVPROC nglVertexAttrib3fvNV; +extern PFNGLVERTEXATTRIB3SNVPROC nglVertexAttrib3sNV; +extern PFNGLVERTEXATTRIB3SVNVPROC nglVertexAttrib3svNV; +extern PFNGLVERTEXATTRIB4DNVPROC nglVertexAttrib4dNV; +extern PFNGLVERTEXATTRIB4DVNVPROC nglVertexAttrib4dvNV; +extern PFNGLVERTEXATTRIB4FNVPROC nglVertexAttrib4fNV; +extern PFNGLVERTEXATTRIB4FVNVPROC nglVertexAttrib4fvNV; +extern PFNGLVERTEXATTRIB4SNVPROC nglVertexAttrib4sNV; +extern PFNGLVERTEXATTRIB4SVNVPROC nglVertexAttrib4svNV; +extern PFNGLVERTEXATTRIB4UBVNVPROC nglVertexAttrib4ubvNV; +extern PFNGLVERTEXATTRIBS1DVNVPROC nglVertexAttribs1dvNV; +extern PFNGLVERTEXATTRIBS1FVNVPROC nglVertexAttribs1fvNV; +extern PFNGLVERTEXATTRIBS1SVNVPROC nglVertexAttribs1svNV; +extern PFNGLVERTEXATTRIBS2DVNVPROC nglVertexAttribs2dvNV; +extern PFNGLVERTEXATTRIBS2FVNVPROC nglVertexAttribs2fvNV; +extern PFNGLVERTEXATTRIBS2SVNVPROC nglVertexAttribs2svNV; +extern PFNGLVERTEXATTRIBS3DVNVPROC nglVertexAttribs3dvNV; +extern PFNGLVERTEXATTRIBS3FVNVPROC nglVertexAttribs3fvNV; +extern PFNGLVERTEXATTRIBS3SVNVPROC nglVertexAttribs3svNV; +extern PFNGLVERTEXATTRIBS4DVNVPROC nglVertexAttribs4dvNV; +extern PFNGLVERTEXATTRIBS4FVNVPROC nglVertexAttribs4fvNV; +extern PFNGLVERTEXATTRIBS4SVNVPROC nglVertexAttribs4svNV; +extern PFNGLVERTEXATTRIBS4UBVNVPROC nglVertexAttribs4ubvNV; // VertexShaderExtension. //======================== -extern NEL_PFNGLBEGINVERTEXSHADEREXTPROC nglBeginVertexShaderEXT; -extern NEL_PFNGLENDVERTEXSHADEREXTPROC nglEndVertexShaderEXT; -extern NEL_PFNGLBINDVERTEXSHADEREXTPROC nglBindVertexShaderEXT; -extern NEL_PFNGLGENVERTEXSHADERSEXTPROC nglGenVertexShadersEXT; -extern NEL_PFNGLDELETEVERTEXSHADEREXTPROC nglDeleteVertexShaderEXT; -extern NEL_PFNGLSHADEROP1EXTPROC nglShaderOp1EXT; -extern NEL_PFNGLSHADEROP2EXTPROC nglShaderOp2EXT; -extern NEL_PFNGLSHADEROP3EXTPROC nglShaderOp3EXT; -extern NEL_PFNGLSWIZZLEEXTPROC nglSwizzleEXT; -extern NEL_PFNGLWRITEMASKEXTPROC nglWriteMaskEXT; -extern NEL_PFNGLINSERTCOMPONENTEXTPROC nglInsertComponentEXT; -extern NEL_PFNGLEXTRACTCOMPONENTEXTPROC nglExtractComponentEXT; -extern NEL_PFNGLGENSYMBOLSEXTPROC nglGenSymbolsEXT; -extern NEL_PFNGLSETINVARIANTEXTPROC nglSetInvariantEXT; -extern NEL_PFNGLSETLOCALCONSTANTEXTPROC nglSetLocalConstantEXT; -extern NEL_PFNGLVARIANTPOINTEREXTPROC nglVariantPointerEXT; -extern NEL_PFNGLENABLEVARIANTCLIENTSTATEEXTPROC nglEnableVariantClientStateEXT; -extern NEL_PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC nglDisableVariantClientStateEXT; -extern NEL_PFNGLBINDLIGHTPARAMETEREXTPROC nglBindLightParameterEXT; -extern NEL_PFNGLBINDMATERIALPARAMETEREXTPROC nglBindMaterialParameterEXT; -extern NEL_PFNGLBINDTEXGENPARAMETEREXTPROC nglBindTexGenParameterEXT; -extern NEL_PFNGLBINDTEXTUREUNITPARAMETEREXTPROC nglBindTextureUnitParameterEXT; -extern NEL_PFNGLBINDPARAMETEREXTPROC nglBindParameterEXT; -extern NEL_PFNGLISVARIANTENABLEDEXTPROC nglIsVariantEnabledEXT; -extern NEL_PFNGLGETVARIANTBOOLEANVEXTPROC nglGetVariantBooleanvEXT; -extern NEL_PFNGLGETVARIANTINTEGERVEXTPROC nglGetVariantIntegervEXT; -extern NEL_PFNGLGETVARIANTFLOATVEXTPROC nglGetVariantFloatvEXT; -extern NEL_PFNGLGETVARIANTPOINTERVEXTPROC nglGetVariantPointervEXT; -extern NEL_PFNGLGETINVARIANTBOOLEANVEXTPROC nglGetInvariantBooleanvEXT; -extern NEL_PFNGLGETINVARIANTINTEGERVEXTPROC nglGetInvariantIntegervEXT; -extern NEL_PFNGLGETINVARIANTFLOATVEXTPROC nglGetInvariantFloatvEXT; -extern NEL_PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC nglGetLocalConstantBooleanvEXT; -extern NEL_PFNGLGETLOCALCONSTANTINTEGERVEXTPROC nglGetLocalConstantIntegervEXT; -extern NEL_PFNGLGETLOCALCONSTANTFLOATVEXTPROC nglGetLocalConstantFloatvEXT; +extern PFNGLBEGINVERTEXSHADEREXTPROC nglBeginVertexShaderEXT; +extern PFNGLENDVERTEXSHADEREXTPROC nglEndVertexShaderEXT; +extern PFNGLBINDVERTEXSHADEREXTPROC nglBindVertexShaderEXT; +extern PFNGLGENVERTEXSHADERSEXTPROC nglGenVertexShadersEXT; +extern PFNGLDELETEVERTEXSHADEREXTPROC nglDeleteVertexShaderEXT; +extern PFNGLSHADEROP1EXTPROC nglShaderOp1EXT; +extern PFNGLSHADEROP2EXTPROC nglShaderOp2EXT; +extern PFNGLSHADEROP3EXTPROC nglShaderOp3EXT; +extern PFNGLSWIZZLEEXTPROC nglSwizzleEXT; +extern PFNGLWRITEMASKEXTPROC nglWriteMaskEXT; +extern PFNGLINSERTCOMPONENTEXTPROC nglInsertComponentEXT; +extern PFNGLEXTRACTCOMPONENTEXTPROC nglExtractComponentEXT; +extern PFNGLGENSYMBOLSEXTPROC nglGenSymbolsEXT; +extern PFNGLSETINVARIANTEXTPROC nglSetInvariantEXT; +extern PFNGLSETLOCALCONSTANTEXTPROC nglSetLocalConstantEXT; +extern PFNGLVARIANTPOINTEREXTPROC nglVariantPointerEXT; +extern PFNGLENABLEVARIANTCLIENTSTATEEXTPROC nglEnableVariantClientStateEXT; +extern PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC nglDisableVariantClientStateEXT; +extern PFNGLBINDLIGHTPARAMETEREXTPROC nglBindLightParameterEXT; +extern PFNGLBINDMATERIALPARAMETEREXTPROC nglBindMaterialParameterEXT; +extern PFNGLBINDTEXGENPARAMETEREXTPROC nglBindTexGenParameterEXT; +extern PFNGLBINDTEXTUREUNITPARAMETEREXTPROC nglBindTextureUnitParameterEXT; +extern PFNGLBINDPARAMETEREXTPROC nglBindParameterEXT; +extern PFNGLISVARIANTENABLEDEXTPROC nglIsVariantEnabledEXT; +extern PFNGLGETVARIANTBOOLEANVEXTPROC nglGetVariantBooleanvEXT; +extern PFNGLGETVARIANTINTEGERVEXTPROC nglGetVariantIntegervEXT; +extern PFNGLGETVARIANTFLOATVEXTPROC nglGetVariantFloatvEXT; +extern PFNGLGETVARIANTPOINTERVEXTPROC nglGetVariantPointervEXT; +extern PFNGLGETINVARIANTBOOLEANVEXTPROC nglGetInvariantBooleanvEXT; +extern PFNGLGETINVARIANTINTEGERVEXTPROC nglGetInvariantIntegervEXT; +extern PFNGLGETINVARIANTFLOATVEXTPROC nglGetInvariantFloatvEXT; +extern PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC nglGetLocalConstantBooleanvEXT; +extern PFNGLGETLOCALCONSTANTINTEGERVEXTPROC nglGetLocalConstantIntegervEXT; +extern PFNGLGETLOCALCONSTANTFLOATVEXTPROC nglGetLocalConstantFloatvEXT; // ATI_envmap_bumpmap extension @@ -530,100 +545,100 @@ extern PFNGLGETTEXBUMPPARAMETERFVATIPROC nglGetTexBumpParameterfvATI; // SecondaryColor extension //======================== -extern NEL_PFNGLSECONDARYCOLOR3BEXTPROC nglSecondaryColor3bEXT; -extern NEL_PFNGLSECONDARYCOLOR3BVEXTPROC nglSecondaryColor3bvEXT; -extern NEL_PFNGLSECONDARYCOLOR3DEXTPROC nglSecondaryColor3dEXT; -extern NEL_PFNGLSECONDARYCOLOR3DVEXTPROC nglSecondaryColor3dvEXT; -extern NEL_PFNGLSECONDARYCOLOR3FEXTPROC nglSecondaryColor3fEXT; -extern NEL_PFNGLSECONDARYCOLOR3FVEXTPROC nglSecondaryColor3fvEXT; -extern NEL_PFNGLSECONDARYCOLOR3IEXTPROC nglSecondaryColor3iEXT; -extern NEL_PFNGLSECONDARYCOLOR3IVEXTPROC nglSecondaryColor3ivEXT; -extern NEL_PFNGLSECONDARYCOLOR3SEXTPROC nglSecondaryColor3sEXT; -extern NEL_PFNGLSECONDARYCOLOR3SVEXTPROC nglSecondaryColor3svEXT; -extern NEL_PFNGLSECONDARYCOLOR3UBEXTPROC nglSecondaryColor3ubEXT; -extern NEL_PFNGLSECONDARYCOLOR3UBVEXTPROC nglSecondaryColor3ubvEXT; -extern NEL_PFNGLSECONDARYCOLOR3UIEXTPROC nglSecondaryColor3uiEXT; -extern NEL_PFNGLSECONDARYCOLOR3UIVEXTPROC nglSecondaryColor3uivEXT; -extern NEL_PFNGLSECONDARYCOLOR3USEXTPROC nglSecondaryColor3usEXT; -extern NEL_PFNGLSECONDARYCOLOR3USVEXTPROC nglSecondaryColor3usvEXT; -extern NEL_PFNGLSECONDARYCOLORPOINTEREXTPROC nglSecondaryColorPointerEXT; +extern PFNGLSECONDARYCOLOR3BEXTPROC nglSecondaryColor3bEXT; +extern PFNGLSECONDARYCOLOR3BVEXTPROC nglSecondaryColor3bvEXT; +extern PFNGLSECONDARYCOLOR3DEXTPROC nglSecondaryColor3dEXT; +extern PFNGLSECONDARYCOLOR3DVEXTPROC nglSecondaryColor3dvEXT; +extern PFNGLSECONDARYCOLOR3FEXTPROC nglSecondaryColor3fEXT; +extern PFNGLSECONDARYCOLOR3FVEXTPROC nglSecondaryColor3fvEXT; +extern PFNGLSECONDARYCOLOR3IEXTPROC nglSecondaryColor3iEXT; +extern PFNGLSECONDARYCOLOR3IVEXTPROC nglSecondaryColor3ivEXT; +extern PFNGLSECONDARYCOLOR3SEXTPROC nglSecondaryColor3sEXT; +extern PFNGLSECONDARYCOLOR3SVEXTPROC nglSecondaryColor3svEXT; +extern PFNGLSECONDARYCOLOR3UBEXTPROC nglSecondaryColor3ubEXT; +extern PFNGLSECONDARYCOLOR3UBVEXTPROC nglSecondaryColor3ubvEXT; +extern PFNGLSECONDARYCOLOR3UIEXTPROC nglSecondaryColor3uiEXT; +extern PFNGLSECONDARYCOLOR3UIVEXTPROC nglSecondaryColor3uivEXT; +extern PFNGLSECONDARYCOLOR3USEXTPROC nglSecondaryColor3usEXT; +extern PFNGLSECONDARYCOLOR3USVEXTPROC nglSecondaryColor3usvEXT; +extern PFNGLSECONDARYCOLORPOINTEREXTPROC nglSecondaryColorPointerEXT; // BlendColor extension //======================== -extern NEL_PFNGLBLENDCOLOREXTPROC nglBlendColorEXT; +extern PFNGLBLENDCOLOREXTPROC nglBlendColorEXT; // GL_ATI_vertex_array_object extension //======================== -extern NEL_PFNGLNEWOBJECTBUFFERATIPROC nglNewObjectBufferATI; -extern NEL_PFNGLISOBJECTBUFFERATIPROC nglIsObjectBufferATI; -extern NEL_PFNGLUPDATEOBJECTBUFFERATIPROC nglUpdateObjectBufferATI; -extern NEL_PFNGLGETOBJECTBUFFERFVATIPROC nglGetObjectBufferfvATI; -extern NEL_PFNGLGETOBJECTBUFFERIVATIPROC nglGetObjectBufferivATI; -extern NEL_PFNGLDELETEOBJECTBUFFERATIPROC nglDeleteObjectBufferATI; -extern NEL_PFNGLARRAYOBJECTATIPROC nglArrayObjectATI; -extern NEL_PFNGLGETARRAYOBJECTFVATIPROC nglGetArrayObjectfvATI; -extern NEL_PFNGLGETARRAYOBJECTIVATIPROC nglGetArrayObjectivATI; -extern NEL_PFNGLVARIANTARRAYOBJECTATIPROC nglVariantArrayObjectATI; -extern NEL_PFNGLGETVARIANTARRAYOBJECTFVATIPROC nglGetVariantArrayObjectfvATI; -extern NEL_PFNGLGETVARIANTARRAYOBJECTIVATIPROC nglGetVariantArrayObjectivATI; +extern PFNGLNEWOBJECTBUFFERATIPROC nglNewObjectBufferATI; +extern PFNGLISOBJECTBUFFERATIPROC nglIsObjectBufferATI; +extern PFNGLUPDATEOBJECTBUFFERATIPROC nglUpdateObjectBufferATI; +extern PFNGLGETOBJECTBUFFERFVATIPROC nglGetObjectBufferfvATI; +extern PFNGLGETOBJECTBUFFERIVATIPROC nglGetObjectBufferivATI; +extern PFNGLFREEOBJECTBUFFERATIPROC nglFreeObjectBufferATI; +extern PFNGLARRAYOBJECTATIPROC nglArrayObjectATI; +extern PFNGLGETARRAYOBJECTFVATIPROC nglGetArrayObjectfvATI; +extern PFNGLGETARRAYOBJECTIVATIPROC nglGetArrayObjectivATI; +extern PFNGLVARIANTARRAYOBJECTATIPROC nglVariantArrayObjectATI; +extern PFNGLGETVARIANTARRAYOBJECTFVATIPROC nglGetVariantArrayObjectfvATI; +extern PFNGLGETVARIANTARRAYOBJECTIVATIPROC nglGetVariantArrayObjectivATI; // GL_ATI_map_object_buffer //=================================== -extern NEL_PFNGLMAPOBJECTBUFFERATIPROC nglMapObjectBufferATI; -extern NEL_PFNGLUNMAPOBJECTBUFFERATIPROC nglUnmapObjectBufferATI; +extern PFNGLMAPOBJECTBUFFERATIPROC nglMapObjectBufferATI; +extern PFNGLUNMAPOBJECTBUFFERATIPROC nglUnmapObjectBufferATI; // GL_ATI_fragment_shader extension //=================================== -extern NEL_PFNGLGENFRAGMENTSHADERSATIPROC nglGenFragmentShadersATI; -extern NEL_PFNGLBINDFRAGMENTSHADERATIPROC nglBindFragmentShaderATI; -extern NEL_PFNGLDELETEFRAGMENTSHADERATIPROC nglDeleteFragmentShaderATI; -extern NEL_PFNGLBEGINFRAGMENTSHADERATIPROC nglBeginFragmentShaderATI; -extern NEL_PFNGLENDFRAGMENTSHADERATIPROC nglEndFragmentShaderATI; -extern NEL_PFNGLPASSTEXCOORDATIPROC nglPassTexCoordATI; -extern NEL_PFNGLSAMPLEMAPATIPROC nglSampleMapATI; -extern NEL_PFNGLCOLORFRAGMENTOP1ATIPROC nglColorFragmentOp1ATI; -extern NEL_PFNGLCOLORFRAGMENTOP2ATIPROC nglColorFragmentOp2ATI; -extern NEL_PFNGLCOLORFRAGMENTOP3ATIPROC nglColorFragmentOp3ATI; -extern NEL_PFNGLALPHAFRAGMENTOP1ATIPROC nglAlphaFragmentOp1ATI; -extern NEL_PFNGLALPHAFRAGMENTOP2ATIPROC nglAlphaFragmentOp2ATI; -extern NEL_PFNGLALPHAFRAGMENTOP3ATIPROC nglAlphaFragmentOp3ATI; -extern NEL_PFNGLSETFRAGMENTSHADERCONSTANTATIPROC nglSetFragmentShaderConstantATI; +extern PFNGLGENFRAGMENTSHADERSATIPROC nglGenFragmentShadersATI; +extern PFNGLBINDFRAGMENTSHADERATIPROC nglBindFragmentShaderATI; +extern PFNGLDELETEFRAGMENTSHADERATIPROC nglDeleteFragmentShaderATI; +extern PFNGLBEGINFRAGMENTSHADERATIPROC nglBeginFragmentShaderATI; +extern PFNGLENDFRAGMENTSHADERATIPROC nglEndFragmentShaderATI; +extern PFNGLPASSTEXCOORDATIPROC nglPassTexCoordATI; +extern PFNGLSAMPLEMAPATIPROC nglSampleMapATI; +extern PFNGLCOLORFRAGMENTOP1ATIPROC nglColorFragmentOp1ATI; +extern PFNGLCOLORFRAGMENTOP2ATIPROC nglColorFragmentOp2ATI; +extern PFNGLCOLORFRAGMENTOP3ATIPROC nglColorFragmentOp3ATI; +extern PFNGLALPHAFRAGMENTOP1ATIPROC nglAlphaFragmentOp1ATI; +extern PFNGLALPHAFRAGMENTOP2ATIPROC nglAlphaFragmentOp2ATI; +extern PFNGLALPHAFRAGMENTOP3ATIPROC nglAlphaFragmentOp3ATI; +extern PFNGLSETFRAGMENTSHADERCONSTANTATIPROC nglSetFragmentShaderConstantATI; // GL_ATI_vertex_attrib_array_object //================================== -extern NEL_PFNGLVERTEXATTRIBARRAYOBJECTATIPROC nglVertexAttribArrayObjectATI; -extern NEL_PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC nglGetVertexAttribArrayObjectfvATI; -extern NEL_PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC nglGetVertexAttribArrayObjectivATI; +extern PFNGLVERTEXATTRIBARRAYOBJECTATIPROC nglVertexAttribArrayObjectATI; +extern PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC nglGetVertexAttribArrayObjectfvATI; +extern PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC nglGetVertexAttribArrayObjectivATI; // GL_ARB_fragment_shader_extension //================================== -extern NEL_PFNGLPROGRAMSTRINGARBPROC nglProgramStringARB; -extern NEL_PFNGLBINDPROGRAMARBPROC nglBindProgramARB; -extern NEL_PFNGLDELETEPROGRAMSARBPROC nglDeleteProgramsARB; -extern NEL_PFNGLGENPROGRAMSARBPROC nglGenProgramsARB; -extern NEL_PFNGLPROGRAMENVPARAMETER4DARBPROC nglProgramEnvParameter4dARB; -extern NEL_PFNGLPROGRAMENVPARAMETER4DVARBPROC nglProgramEnvParameter4dvARB; -extern NEL_PFNGLPROGRAMENVPARAMETER4FARBPROC nglProgramEnvParameter4fARB; -extern NEL_PFNGLPROGRAMENVPARAMETER4FVARBPROC nglProgramEnvParameter4fvARB; -extern NEL_PFNGLPROGRAMLOCALPARAMETER4DARBPROC nglGetProgramLocalParameter4dARB; -extern NEL_PFNGLPROGRAMLOCALPARAMETER4DVARBPROC nglGetProgramLocalParameter4dvARB; -extern NEL_PFNGLPROGRAMLOCALPARAMETER4FARBPROC nglGetProgramLocalParameter4fARB; -extern NEL_PFNGLPROGRAMLOCALPARAMETER4FVARBPROC nglGetProgramLocalParameter4fvARB; -extern NEL_PFNGLGETPROGRAMENVPARAMETERDVARBPROC nglGetProgramEnvParameterdvARB; -extern NEL_PFNGLGETPROGRAMENVPARAMETERFVARBPROC nglGetProgramEnvParameterfvARB; -extern NEL_PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC nglGetProgramLocalParameterdvARB; -extern NEL_PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC nglGetProgramLocalParameterfvARB; -extern NEL_PFNGLGETPROGRAMIVARBPROC nglGetProgramivARB; -extern NEL_PFNGLGETPROGRAMSTRINGARBPROC nglGetProgramStringARB; -extern NEL_PFNGLISPROGRAMARBPROC nglIsProgramARB; +extern PFNGLPROGRAMSTRINGARBPROC nglProgramStringARB; +extern PFNGLBINDPROGRAMARBPROC nglBindProgramARB; +extern PFNGLDELETEPROGRAMSARBPROC nglDeleteProgramsARB; +extern PFNGLGENPROGRAMSARBPROC nglGenProgramsARB; +extern PFNGLPROGRAMENVPARAMETER4DARBPROC nglProgramEnvParameter4dARB; +extern PFNGLPROGRAMENVPARAMETER4DVARBPROC nglProgramEnvParameter4dvARB; +extern PFNGLPROGRAMENVPARAMETER4FARBPROC nglProgramEnvParameter4fARB; +extern PFNGLPROGRAMENVPARAMETER4FVARBPROC nglProgramEnvParameter4fvARB; +extern PFNGLPROGRAMLOCALPARAMETER4DARBPROC nglGetProgramLocalParameter4dARB; +extern PFNGLPROGRAMLOCALPARAMETER4DVARBPROC nglGetProgramLocalParameter4dvARB; +extern PFNGLPROGRAMLOCALPARAMETER4FARBPROC nglGetProgramLocalParameter4fARB; +extern PFNGLPROGRAMLOCALPARAMETER4FVARBPROC nglGetProgramLocalParameter4fvARB; +extern PFNGLGETPROGRAMENVPARAMETERDVARBPROC nglGetProgramEnvParameterdvARB; +extern PFNGLGETPROGRAMENVPARAMETERFVARBPROC nglGetProgramEnvParameterfvARB; +extern PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC nglGetProgramLocalParameterdvARB; +extern PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC nglGetProgramLocalParameterfvARB; +extern PFNGLGETPROGRAMIVARBPROC nglGetProgramivARB; +extern PFNGLGETPROGRAMSTRINGARBPROC nglGetProgramStringARB; +extern PFNGLISPROGRAMARBPROC nglIsProgramARB; // GL_ARB_vertex_buffer_object //================================== @@ -708,13 +723,13 @@ extern PFNGLISPROGRAMARBPROC nglIsProgramARB; // GL_NV_occlusion_query //================================== -extern NEL_PFNGLGENOCCLUSIONQUERIESNVPROC nglGenOcclusionQueriesNV; -extern NEL_PFNGLDELETEOCCLUSIONQUERIESNVPROC nglDeleteOcclusionQueriesNV; -extern NEL_PFNGLISOCCLUSIONQUERYNVPROC nglIsOcclusionQueryNV; -extern NEL_PFNGLBEGINOCCLUSIONQUERYNVPROC nglBeginOcclusionQueryNV; -extern NEL_PFNGLENDOCCLUSIONQUERYNVPROC nglEndOcclusionQueryNV; -extern NEL_PFNGLGETOCCLUSIONQUERYIVNVPROC nglGetOcclusionQueryivNV; -extern NEL_PFNGLGETOCCLUSIONQUERYUIVNVPROC nglGetOcclusionQueryuivNV; +extern PFNGLGENOCCLUSIONQUERIESNVPROC nglGenOcclusionQueriesNV; +extern PFNGLDELETEOCCLUSIONQUERIESNVPROC nglDeleteOcclusionQueriesNV; +extern PFNGLISOCCLUSIONQUERYNVPROC nglIsOcclusionQueryNV; +extern PFNGLBEGINOCCLUSIONQUERYNVPROC nglBeginOcclusionQueryNV; +extern PFNGLENDOCCLUSIONQUERYNVPROC nglEndOcclusionQueryNV; +extern PFNGLGETOCCLUSIONQUERYIVNVPROC nglGetOcclusionQueryivNV; +extern PFNGLGETOCCLUSIONQUERYUIVNVPROC nglGetOcclusionQueryuivNV; @@ -743,46 +758,60 @@ extern PFNWGLGETSWAPINTERVALEXTPROC nwglGetSwapIntervalEXT; // WGL_ARB_extensions_string -extern PFNWGLGETEXTENSIONSSTRINGARBPROC nwglGetExtensionsStringARB; +extern PFNWGLGETEXTENSIONSSTRINGARBPROC nwglGetExtensionsStringARB; + + +// WGL_AMD_gpu_association +//======================== +extern PFNWGLGETGPUIDSAMDPROC nwglGetGPUIDsAMD; +extern PFNWGLGETGPUINFOAMDPROC nwglGetGPUInfoAMD; +extern PFNWGLGETCONTEXTGPUIDAMDPROC nwglGetContextGPUIDAMD; +extern PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC nwglCreateAssociatedContextAMD; +extern PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC nwglCreateAssociatedContextAttribsAMD; +extern PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC nwglDeleteAssociatedContextAMD; +extern PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC nwglMakeAssociatedContextCurrentAMD; +extern PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC nwglGetCurrentAssociatedContextAMD; +extern PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC nwglBlitContextFramebufferAMD; + #elif defined(NL_OS_MAC) #elif defined(NL_OS_UNIX) // Swap control extensions //=========================== -extern NEL_PFNGLXSWAPINTERVALEXTPROC nglXSwapIntervalEXT; +extern PFNGLXSWAPINTERVALEXTPROC nglXSwapIntervalEXT; -extern PFNGLXSWAPINTERVALSGIPROC nglXSwapIntervalSGI; +extern PFNGLXSWAPINTERVALSGIPROC nglXSwapIntervalSGI; -extern NEL_PFNGLXSWAPINTERVALMESAPROC nglXSwapIntervalMESA; -extern NEL_PFNGLXGETSWAPINTERVALMESAPROC nglXGetSwapIntervalMESA; +extern PFNGLXSWAPINTERVALMESAPROC nglXSwapIntervalMESA; +extern PFNGLXGETSWAPINTERVALMESAPROC nglXGetSwapIntervalMESA; #endif // GL_EXT_framebuffer_object -extern NEL_PFNGLISRENDERBUFFEREXTPROC nglIsRenderbufferEXT; -extern NEL_PFNGLISFRAMEBUFFEREXTPROC nglIsFramebufferEXT; -extern NEL_PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC nglCheckFramebufferStatusEXT; -extern NEL_PFNGLGENFRAMEBUFFERSEXTPROC nglGenFramebuffersEXT; -extern NEL_PFNGLBINDFRAMEBUFFEREXTPROC nglBindFramebufferEXT; -extern NEL_PFNGLFRAMEBUFFERTEXTURE2DEXTPROC nglFramebufferTexture2DEXT; -extern NEL_PFNGLGENRENDERBUFFERSEXTPROC nglGenRenderbuffersEXT; -extern NEL_PFNGLBINDRENDERBUFFEREXTPROC nglBindRenderbufferEXT; -extern NEL_PFNGLRENDERBUFFERSTORAGEEXTPROC nglRenderbufferStorageEXT; -extern NEL_PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC nglFramebufferRenderbufferEXT; -extern NEL_PFNGLDELETERENDERBUFFERSEXTPROC nglDeleteRenderbuffersEXT; -extern NEL_PFNGLDELETEFRAMEBUFFERSEXTPROC nglDeleteFramebuffersEXT; -extern NEL_PFNGETRENDERBUFFERPARAMETERIVEXTPROC nglGetRenderbufferParameterivEXT; -extern NEL_PFNGENERATEMIPMAPEXTPROC nglGenerateMipmapEXT; +extern PFNGLISRENDERBUFFEREXTPROC nglIsRenderbufferEXT; +extern PFNGLISFRAMEBUFFEREXTPROC nglIsFramebufferEXT; +extern PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC nglCheckFramebufferStatusEXT; +extern PFNGLGENFRAMEBUFFERSEXTPROC nglGenFramebuffersEXT; +extern PFNGLBINDFRAMEBUFFEREXTPROC nglBindFramebufferEXT; +extern PFNGLFRAMEBUFFERTEXTURE2DEXTPROC nglFramebufferTexture2DEXT; +extern PFNGLGENRENDERBUFFERSEXTPROC nglGenRenderbuffersEXT; +extern PFNGLBINDRENDERBUFFEREXTPROC nglBindRenderbufferEXT; +extern PFNGLRENDERBUFFERSTORAGEEXTPROC nglRenderbufferStorageEXT; +extern PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC nglFramebufferRenderbufferEXT; +extern PFNGLDELETERENDERBUFFERSEXTPROC nglDeleteRenderbuffersEXT; +extern PFNGLDELETEFRAMEBUFFERSEXTPROC nglDeleteFramebuffersEXT; +extern PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC nglGetRenderbufferParameterivEXT; +extern PFNGLGENERATEMIPMAPEXTPROC nglGenerateMipmapEXT; // GL_EXT_framebuffer_blit -extern NEL_PFNGLBLITFRAMEBUFFEREXTPROC nglBlitFramebufferEXT; +extern PFNGLBLITFRAMEBUFFEREXTPROC nglBlitFramebufferEXT; // GL_EXT_framebuffer_multisample -extern NEL_PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC nglRenderbufferStorageMultisampleEXT; +extern PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC nglRenderbufferStorageMultisampleEXT; // GL_ARB_multisample -extern NEL_PFNGLSAMPLECOVERAGEARBPROC nglSampleCoverageARB; +extern PFNGLSAMPLECOVERAGEARBPROC nglSampleCoverageARB; #endif // USE_OPENGLES diff --git a/code/nel/src/3d/driver/opengl/driver_opengl_extension_def.h b/code/nel/src/3d/driver/opengl/driver_opengl_extension_def.h index a11d0cd1c..41d2c1366 100644 --- a/code/nel/src/3d/driver/opengl/driver_opengl_extension_def.h +++ b/code/nel/src/3d/driver/opengl/driver_opengl_extension_def.h @@ -25,44 +25,8 @@ extern "C" { #endif #ifdef USE_OPENGLES -// OES_mapbuffer -//============== -typedef void* (APIENTRY * NEL_PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access); -typedef GLboolean (APIENTRY * NEL_PFNGLUNMAPBUFFEROESPROC) (GLenum target); -typedef void (APIENTRY * NEL_PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, void** params); - -typedef void (APIENTRY * NEL_PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data); - -// GL_OES_framebuffer_object -//================================== -typedef GLboolean (APIENTRY * NEL_PFNGLISRENDERBUFFEROESPROC) (GLuint renderbuffer); -typedef void (APIENTRY * NEL_PFNGLBINDRENDERBUFFEROESPROC) (GLenum target, GLuint renderbuffer); -typedef void (APIENTRY * NEL_PFNGLDELETERENDERBUFFERSOESPROC) (GLsizei n, const GLuint* renderbuffers); -typedef void (APIENTRY * NEL_PFNGLGENRENDERBUFFERSOESPROC) (GLsizei n, GLuint* renderbuffers); -typedef void (APIENTRY * NEL_PFNGLRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -typedef void (APIENTRY * NEL_PFNGLGETRENDERBUFFERPARAMETERIVOESPROC) (GLenum target, GLenum pname, GLint* params); -typedef GLboolean (APIENTRY * NEL_PFNGLISFRAMEBUFFEROESPROC) (GLuint framebuffer); -typedef void (APIENTRY * NEL_PFNGLBINDFRAMEBUFFEROESPROC) (GLenum target, GLuint framebuffer); -typedef void (APIENTRY * NEL_PFNGLDELETEFRAMEBUFFERSOESPROC) (GLsizei n, const GLuint* framebuffers); -typedef void (APIENTRY * NEL_PFNGLGENFRAMEBUFFERSOESPROC) (GLsizei n, GLuint* framebuffers); -typedef GLenum (APIENTRY * NEL_PFNGLCHECKFRAMEBUFFERSTATUSOESPROC) (GLenum target); -typedef void (APIENTRY * NEL_PFNGLFRAMEBUFFERRENDERBUFFEROESPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef void (APIENTRY * NEL_PFNGLFRAMEBUFFERTEXTURE2DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef void (APIENTRY * NEL_PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVOESPROC) (GLenum target, GLenum attachment, GLenum pname, GLint* params); -typedef void (APIENTRY * NEL_PFNGLGENERATEMIPMAPOESPROC) (GLenum target); - -// GL_OES_texture_cube_map -//================================== -typedef void (APIENTRY * NEL_PFNGLTEXGENFOESPROC) (GLenum coord, GLenum pname, GLfloat param); -typedef void (APIENTRY * NEL_PFNGLTEXGENFVOESPROC) (GLenum coord, GLenum pname, const GLfloat *params); -typedef void (APIENTRY * NEL_PFNGLTEXGENIOESPROC) (GLenum coord, GLenum pname, GLint param); -typedef void (APIENTRY * NEL_PFNGLTEXGENIVOESPROC) (GLenum coord, GLenum pname, const GLint *params); -typedef void (APIENTRY * NEL_PFNGLTEXGENXOESPROC) (GLenum coord, GLenum pname, GLfixed param); -typedef void (APIENTRY * NEL_PFNGLTEXGENXVOESPROC) (GLenum coord, GLenum pname, const GLfixed *params); -typedef void (APIENTRY * NEL_PFNGLGETTEXGENFVOESPROC) (GLenum coord, GLenum pname, GLfloat *params); -typedef void (APIENTRY * NEL_PFNGLGETTEXGENIVOESPROC) (GLenum coord, GLenum pname, GLint *params); -typedef void (APIENTRY * NEL_PFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pname, GLfixed *params); +// use same defines for OpenGL and OpenGL ES to simplify the code #define GL_MULTISAMPLE_ARB GL_MULTISAMPLE #define GL_TEXTURE_CUBE_MAP_ARB GL_TEXTURE_CUBE_MAP_OES #define GL_NONE 0 @@ -86,346 +50,6 @@ typedef void (APIENTRY * NEL_PFNGLGETTEXGENXVOESPROC) (GLenum coord, GLenum pnam #else -// *************************************************************************** -// *************************************************************************** -// The NEL Functions Typedefs. -// Must do it for compatibilities with futures version of gl.h -// eg: version 1.2 does not define PFNGLACTIVETEXTUREARBPROC. Hence, do it now, with our special name -// *************************************************************************** -// *************************************************************************** - -#define WGL_COVERAGE_SAMPLES_NV 0x2042 -#define WGL_COLOR_SAMPLES_NV 0x20B9 - -// ARB_multitexture -//================= -typedef void (APIENTRY * NEL_PFNGLACTIVETEXTUREARBPROC) (GLenum texture); -typedef void (APIENTRY * NEL_PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD1DARBPROC) (GLenum target, GLdouble s); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD1DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD1FARBPROC) (GLenum target, GLfloat s); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD1FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD1IARBPROC) (GLenum target, GLint s); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD1IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD1SARBPROC) (GLenum target, GLshort s); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD1SVARBPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD2DARBPROC) (GLenum target, GLdouble s, GLdouble t); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD2DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD2FARBPROC) (GLenum target, GLfloat s, GLfloat t); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD2FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD2IARBPROC) (GLenum target, GLint s, GLint t); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD2IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD2SARBPROC) (GLenum target, GLshort s, GLshort t); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD2SVARBPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD3DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD3DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD3FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD3FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD3IARBPROC) (GLenum target, GLint s, GLint t, GLint r); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD3IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD3SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD3SVARBPROC) (GLenum target, const GLshort *v); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD4DARBPROC) (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD4DVARBPROC) (GLenum target, const GLdouble *v); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD4FARBPROC) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD4FVARBPROC) (GLenum target, const GLfloat *v); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD4IARBPROC) (GLenum target, GLint s, GLint t, GLint r, GLint q); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD4IVARBPROC) (GLenum target, const GLint *v); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD4SARBPROC) (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); -typedef void (APIENTRY * NEL_PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLshort *v); - - -// ARB_TextureCompression. -//======================== -typedef void (APIENTRY * NEL_PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRY * NEL_PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRY * NEL_PFNGLCOMPRESSEDTEXIMAGE1DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRY * NEL_PFNGLCOMPRESSEDTEXSUBIMAGE3DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRY * NEL_PFNGLCOMPRESSEDTEXSUBIMAGE2DARBPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRY * NEL_PFNGLCOMPRESSEDTEXSUBIMAGE1DARBPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data); -typedef void (APIENTRY * NEL_PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint level, void *img); - - -// VertexArrayRangeNV. -//==================== -typedef void (APIENTRY * NEL_PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void); -typedef void (APIENTRY * NEL_PFNGLVERTEXARRAYRANGENVPROC) (GLsizei size, const GLvoid *pointer); - - -// FenceNV. -//==================== -typedef void (APIENTRY * NEL_PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); -typedef void (APIENTRY * NEL_PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); -typedef GLboolean (APIENTRY * NEL_PFNGLISFENCENVPROC) (GLuint fence); -typedef GLboolean (APIENTRY * NEL_PFNGLTESTFENCENVPROC) (GLuint fence); -typedef void (APIENTRY * NEL_PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); -typedef void (APIENTRY * NEL_PFNGLFINISHFENCENVPROC) (GLuint fence); -typedef void (APIENTRY * NEL_PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); - - -// VertexWeighting. -//================== -typedef void (APIENTRY * NEL_PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight); -typedef void (APIENTRY * NEL_PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight); -typedef void (APIENTRY * NEL_PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer); - - -// VertexProgramExtension. -//======================== -typedef GLboolean (APIENTRY * NEL_PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences); -typedef void (APIENTRY * NEL_PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id); -typedef void (APIENTRY * NEL_PFNGLDELETEPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); -typedef void (APIENTRY * NEL_PFNGLEXECUTEPROGRAMNVPROC) (GLenum target, GLuint id, const GLfloat *params); -typedef void (APIENTRY * NEL_PFNGLGENPROGRAMSNVPROC) (GLsizei n, GLuint *programs); -typedef void (APIENTRY * NEL_PFNGLGETPROGRAMPARAMETERDVNVPROC) (GLenum target, GLuint index, GLenum pname, GLdouble *params); -typedef void (APIENTRY * NEL_PFNGLGETPROGRAMPARAMETERFVNVPROC) (GLenum target, GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRY * NEL_PFNGLGETPROGRAMIVNVPROC) (GLuint id, GLenum pname, GLint *params); -typedef void (APIENTRY * NEL_PFNGLGETPROGRAMSTRINGNVPROC) (GLuint id, GLenum pname, GLubyte *program); -typedef void (APIENTRY * NEL_PFNGLGETTRACKMATRIXIVNVPROC) (GLenum target, GLuint address, GLenum pname, GLint *params); -typedef void (APIENTRY * NEL_PFNGLGETVERTEXATTRIBDVNVPROC) (GLuint index, GLenum pname, GLdouble *params); -typedef void (APIENTRY * NEL_PFNGLGETVERTEXATTRIBFVNVPROC) (GLuint index, GLenum pname, GLfloat *params); -typedef void (APIENTRY * NEL_PFNGLGETVERTEXATTRIBIVNVPROC) (GLuint index, GLenum pname, GLint *params); -typedef void (APIENTRY * NEL_PFNGLGETVERTEXATTRIBPOINTERVNVPROC) (GLuint index, GLenum pname, GLvoid* *pointer); -typedef GLboolean (APIENTRY * NEL_PFNGLISPROGRAMNVPROC) (GLuint id); -typedef void (APIENTRY * NEL_PFNGLLOADPROGRAMNVPROC) (GLenum target, GLuint id, GLsizei len, const GLubyte *program); -typedef void (APIENTRY * NEL_PFNGLPROGRAMPARAMETER4DNVPROC) (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRY * NEL_PFNGLPROGRAMPARAMETER4DVNVPROC) (GLenum target, GLuint index, const GLdouble *v); -typedef void (APIENTRY * NEL_PFNGLPROGRAMPARAMETER4FNVPROC) (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRY * NEL_PFNGLPROGRAMPARAMETER4FVNVPROC) (GLenum target, GLuint index, const GLfloat *v); -typedef void (APIENTRY * NEL_PFNGLPROGRAMPARAMETERS4DVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLdouble *v); -typedef void (APIENTRY * NEL_PFNGLPROGRAMPARAMETERS4FVNVPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *v); -typedef void (APIENTRY * NEL_PFNGLREQUESTRESIDENTPROGRAMSNVPROC) (GLsizei n, const GLuint *programs); -typedef void (APIENTRY * NEL_PFNGLTRACKMATRIXNVPROC) (GLenum target, GLuint address, GLenum matrix, GLenum transform); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBPOINTERNVPROC) (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB1DNVPROC) (GLuint index, GLdouble x); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB1DVNVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB1FNVPROC) (GLuint index, GLfloat x); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB1FVNVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB1SNVPROC) (GLuint index, GLshort x); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB1SVNVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB2DNVPROC) (GLuint index, GLdouble x, GLdouble y); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB2DVNVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB2FNVPROC) (GLuint index, GLfloat x, GLfloat y); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB2FVNVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB2SNVPROC) (GLuint index, GLshort x, GLshort y); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB2SVNVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB3DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB3DVNVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB3FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB3FVNVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB3SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB3SVNVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB4DNVPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB4DVNVPROC) (GLuint index, const GLdouble *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB4FNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB4FVNVPROC) (GLuint index, const GLfloat *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB4SNVPROC) (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB4SVNVPROC) (GLuint index, const GLshort *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIB4UBVNVPROC) (GLuint index, const GLubyte *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS1DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS1FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS1SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS2DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS2FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS2SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS3DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS3FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS3SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS4DVNVPROC) (GLuint index, GLsizei count, const GLdouble *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS4FVNVPROC) (GLuint index, GLsizei count, const GLfloat *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS4SVNVPROC) (GLuint index, GLsizei count, const GLshort *v); -typedef void (APIENTRY * NEL_PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei count, const GLubyte *v); - -// VertexShaderExtension (EXT) -//============================ -typedef void (APIENTRY * NEL_PFNGLBEGINVERTEXSHADEREXTPROC) ( void ); -typedef void (APIENTRY * NEL_PFNGLENDVERTEXSHADEREXTPROC) ( void ); -typedef void (APIENTRY * NEL_PFNGLBINDVERTEXSHADEREXTPROC) ( GLuint id ); -typedef GLuint (APIENTRY * NEL_PFNGLGENVERTEXSHADERSEXTPROC) ( GLuint range ); -typedef void (APIENTRY * NEL_PFNGLDELETEVERTEXSHADEREXTPROC) ( GLuint id ); -typedef void (APIENTRY * NEL_PFNGLSHADEROP1EXTPROC) ( GLenum op, GLuint res, GLuint arg1 ); -typedef void (APIENTRY * NEL_PFNGLSHADEROP2EXTPROC) ( GLenum op, GLuint res, GLuint arg1, GLuint arg2 ); -typedef void (APIENTRY * NEL_PFNGLSHADEROP3EXTPROC) ( GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3 ); -typedef void (APIENTRY * NEL_PFNGLSWIZZLEEXTPROC) ( GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW ); -typedef void (APIENTRY * NEL_PFNGLWRITEMASKEXTPROC) ( GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW ); -typedef void (APIENTRY * NEL_PFNGLINSERTCOMPONENTEXTPROC) ( GLuint res, GLuint src, GLuint num ); -typedef void (APIENTRY * NEL_PFNGLEXTRACTCOMPONENTEXTPROC) ( GLuint res, GLuint src, GLuint num ); -typedef GLuint (APIENTRY * NEL_PFNGLGENSYMBOLSEXTPROC) ( GLenum datatype, GLenum storagetype, GLenum range, GLuint components ) ; -typedef void (APIENTRY * NEL_PFNGLSETINVARIANTEXTPROC) ( GLuint id, GLenum type, void *addr ); -typedef void (APIENTRY * NEL_PFNGLSETLOCALCONSTANTEXTPROC) ( GLuint id, GLenum type, void *addr ); -typedef void (APIENTRY * NEL_PFNGLVARIANTPOINTEREXTPROC) ( GLuint id, GLenum type, GLuint stride, void *addr ); -typedef void (APIENTRY * NEL_PFNGLENABLEVARIANTCLIENTSTATEEXTPROC) ( GLuint id); -typedef void (APIENTRY * NEL_PFNGLDISABLEVARIANTCLIENTSTATEEXTPROC) ( GLuint id); -typedef GLuint (APIENTRY * NEL_PFNGLBINDLIGHTPARAMETEREXTPROC) ( GLenum light, GLenum value); -typedef GLuint (APIENTRY * NEL_PFNGLBINDMATERIALPARAMETEREXTPROC) ( GLenum face, GLenum value); -typedef GLuint (APIENTRY * NEL_PFNGLBINDTEXGENPARAMETEREXTPROC) ( GLenum unit, GLenum coord, GLenum value); -typedef GLuint (APIENTRY * NEL_PFNGLBINDTEXTUREUNITPARAMETEREXTPROC) ( GLenum unit, GLenum value); -typedef GLuint (APIENTRY * NEL_PFNGLBINDPARAMETEREXTPROC) ( GLenum value); -typedef GLboolean (APIENTRY * NEL_PFNGLISVARIANTENABLEDEXTPROC) ( GLuint id, GLenum cap); -typedef void (APIENTRY * NEL_PFNGLGETVARIANTBOOLEANVEXTPROC) ( GLuint id, GLenum value, GLboolean *data); -typedef void (APIENTRY * NEL_PFNGLGETVARIANTINTEGERVEXTPROC) ( GLuint id, GLenum value, GLint *data); -typedef void (APIENTRY * NEL_PFNGLGETVARIANTFLOATVEXTPROC) ( GLuint id, GLenum value, GLfloat *data); -typedef void (APIENTRY * NEL_PFNGLGETVARIANTPOINTERVEXTPROC) ( GLuint id, GLenum value, void **data); -typedef void (APIENTRY * NEL_PFNGLGETINVARIANTBOOLEANVEXTPROC) ( GLuint id, GLenum value, GLboolean *data); -typedef void (APIENTRY * NEL_PFNGLGETINVARIANTINTEGERVEXTPROC) ( GLuint id, GLenum value, GLint *data); -typedef void (APIENTRY * NEL_PFNGLGETINVARIANTFLOATVEXTPROC) ( GLuint id, GLenum value, GLfloat *data); -typedef void (APIENTRY * NEL_PFNGLGETLOCALCONSTANTBOOLEANVEXTPROC) ( GLuint id, GLenum value, GLboolean *data); -typedef void (APIENTRY * NEL_PFNGLGETLOCALCONSTANTINTEGERVEXTPROC) ( GLuint id, GLenum value, GLint *data); -typedef void (APIENTRY * NEL_PFNGLGETLOCALCONSTANTFLOATVEXTPROC) ( GLuint id, GLenum value, GLfloat *data); - - -// SecondaryColor extension -//======================== -typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue); -typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v); -typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3DEXTPROC) (GLdouble red, GLdouble green, GLdouble blue); -typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3DVEXTPROC) (const GLdouble *v); -typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3FEXTPROC) (GLfloat red, GLfloat green, GLfloat blue); -typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3FVEXTPROC) (const GLfloat *v); -typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3IEXTPROC) (GLint red, GLint green, GLint blue); -typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3IVEXTPROC) (const GLint *v); -typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3SEXTPROC) (GLshort red, GLshort green, GLshort blue); -typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3SVEXTPROC) (const GLshort *v); -typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3UBEXTPROC) (GLubyte red, GLubyte green, GLubyte blue); -typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3UBVEXTPROC) (const GLubyte *v); -typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3UIEXTPROC) (GLuint red, GLuint green, GLuint blue); -typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3UIVEXTPROC) (const GLuint *v); -typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3USEXTPROC) (GLushort red, GLushort green, GLushort blue); -typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLOR3USVEXTPROC) (const GLushort *v); -typedef void (APIENTRY * NEL_PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLvoid *pointer); - - -// BlendColor extension -//======================== -typedef void (APIENTRY * NEL_PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); - - -// GL_ATI_vertex_array_object extension -//======================== -typedef GLuint (APIENTRY * NEL_PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const GLvoid *pointer, GLenum usage); -typedef GLboolean (APIENTRY * NEL_PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer); -typedef void (APIENTRY * NEL_PFNGLUPDATEOBJECTBUFFERATIPROC) (GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve); -typedef void (APIENTRY * NEL_PFNGLGETOBJECTBUFFERFVATIPROC) (GLuint buffer, GLenum pname, GLfloat *params); -typedef void (APIENTRY * NEL_PFNGLGETOBJECTBUFFERIVATIPROC) (GLuint buffer, GLenum pname, GLint *params); -typedef void (APIENTRY * NEL_PFNGLDELETEOBJECTBUFFERATIPROC) (GLuint buffer); -typedef void (APIENTRY * NEL_PFNGLARRAYOBJECTATIPROC) (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); -typedef void (APIENTRY * NEL_PFNGLGETARRAYOBJECTFVATIPROC) (GLenum array, GLenum pname, GLfloat *params); -typedef void (APIENTRY * NEL_PFNGLGETARRAYOBJECTIVATIPROC) (GLenum array, GLenum pname, GLint *params); -typedef void (APIENTRY * NEL_PFNGLVARIANTARRAYOBJECTATIPROC) (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset); -typedef void (APIENTRY * NEL_PFNGLGETVARIANTARRAYOBJECTFVATIPROC) (GLuint id, GLenum pname, GLfloat *params); -typedef void (APIENTRY * NEL_PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum pname, GLint *params); - - -// GL_ATI_fragment_shader extension -//================================== -typedef GLuint (APIENTRY *NEL_PFNGLGENFRAGMENTSHADERSATIPROC)(GLuint range); -typedef GLvoid (APIENTRY *NEL_PFNGLBINDFRAGMENTSHADERATIPROC)(GLuint id); -typedef GLvoid (APIENTRY *NEL_PFNGLDELETEFRAGMENTSHADERATIPROC)(GLuint id); -typedef GLvoid (APIENTRY *NEL_PFNGLBEGINFRAGMENTSHADERATIPROC)(); -typedef GLvoid (APIENTRY *NEL_PFNGLENDFRAGMENTSHADERATIPROC)(); -typedef GLvoid (APIENTRY *NEL_PFNGLPASSTEXCOORDATIPROC)(GLuint dst, GLuint coord, GLenum swizzle); -typedef GLvoid (APIENTRY *NEL_PFNGLSAMPLEMAPATIPROC)(GLuint dst, GLuint interp, GLenum swizzle); -typedef GLvoid (APIENTRY *NEL_PFNGLCOLORFRAGMENTOP1ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, - GLuint dstMod, GLuint arg1, GLuint arg1Rep, - GLuint arg1Mod); -typedef GLvoid (APIENTRY *NEL_PFNGLCOLORFRAGMENTOP2ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, - GLuint dstMod, GLuint arg1, GLuint arg1Rep, - GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, - GLuint arg2Mod); -typedef GLvoid (APIENTRY *NEL_PFNGLCOLORFRAGMENTOP3ATIPROC)(GLenum op, GLuint dst, GLuint dstMask, - GLuint dstMod, GLuint arg1, GLuint arg1Rep, - GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, - GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, - GLuint arg3Mod); -typedef GLvoid (APIENTRY *NEL_PFNGLALPHAFRAGMENTOP1ATIPROC)(GLenum op, GLuint dst, GLuint dstMod, - GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); -typedef GLvoid (APIENTRY *NEL_PFNGLALPHAFRAGMENTOP2ATIPROC)(GLenum op, GLuint dst, GLuint dstMod, - GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, - GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); -typedef GLvoid (APIENTRY *NEL_PFNGLALPHAFRAGMENTOP3ATIPROC)(GLenum op, GLuint dst, GLuint dstMod, - GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, - GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, - GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); -typedef GLvoid (APIENTRY *NEL_PFNGLSETFRAGMENTSHADERCONSTANTATIPROC)(GLuint dst, const GLfloat *value); - - - -// GL_ATI_map_object_buffer -//================================== -typedef void *(APIENTRY * NEL_PFNGLMAPOBJECTBUFFERATIPROC)(GLuint buffer); -typedef void (APIENTRY * NEL_PFNGLUNMAPOBJECTBUFFERATIPROC)(GLuint buffer); - - -// GL_ATI_vertex_attrib_array_object -//================================== - -typedef GLvoid (APIENTRY * NEL_PFNGLVERTEXATTRIBARRAYOBJECTATIPROC)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset); -typedef GLvoid (APIENTRY * NEL_PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC)(GLuint index, GLenum pname, GLfloat *params); -typedef GLvoid (APIENTRY * NEL_PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC)(GLuint index, GLenum pname, GLint *params); - - - - -// GL_ARB_fragment_program -//================================== -typedef GLvoid (APIENTRY *NEL_PFNGLPROGRAMSTRINGARBPROC)(GLenum target, GLenum format, GLsizei len,const GLvoid *string); -typedef GLvoid (APIENTRY *NEL_PFNGLBINDPROGRAMARBPROC)(GLenum target, GLuint program); -typedef GLvoid (APIENTRY *NEL_PFNGLDELETEPROGRAMSARBPROC)(GLsizei n, const GLuint *programs); -typedef GLvoid (APIENTRY *NEL_PFNGLGENPROGRAMSARBPROC)(GLsizei n, GLuint *programs); -typedef GLvoid (APIENTRY *NEL_PFNGLPROGRAMENVPARAMETER4DARBPROC)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef GLvoid (APIENTRY *NEL_PFNGLPROGRAMENVPARAMETER4DVARBPROC)(GLenum target, GLuint index, const GLdouble *params); -typedef GLvoid (APIENTRY *NEL_PFNGLPROGRAMENVPARAMETER4FARBPROC)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef GLvoid (APIENTRY *NEL_PFNGLPROGRAMENVPARAMETER4FVARBPROC)(GLenum target, GLuint index, const GLfloat *params); -typedef GLvoid (APIENTRY *NEL_PFNGLPROGRAMLOCALPARAMETER4DARBPROC)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); -typedef GLvoid (APIENTRY *NEL_PFNGLPROGRAMLOCALPARAMETER4DVARBPROC)(GLenum target, GLuint index, const GLdouble *params); -typedef GLvoid (APIENTRY *NEL_PFNGLPROGRAMLOCALPARAMETER4FARBPROC)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); -typedef GLvoid (APIENTRY *NEL_PFNGLPROGRAMLOCALPARAMETER4FVARBPROC)(GLenum target, GLuint index, const GLfloat *params); -typedef GLvoid (APIENTRY *NEL_PFNGLGETPROGRAMENVPARAMETERDVARBPROC)(GLenum target, GLuint index, GLdouble *params); -typedef GLvoid (APIENTRY *NEL_PFNGLGETPROGRAMENVPARAMETERFVARBPROC)(GLenum target, GLuint index, GLfloat *params); -typedef GLvoid (APIENTRY *NEL_PFNGLGETPROGRAMLOCALPARAMETERDVARBPROC)(GLenum target, GLuint index, GLdouble *params); -typedef GLvoid (APIENTRY *NEL_PFNGLGETPROGRAMLOCALPARAMETERFVARBPROC)(GLenum target, GLuint index, GLfloat *params); -typedef GLvoid (APIENTRY *NEL_PFNGLGETPROGRAMIVARBPROC)(GLenum target, GLenum pname, int *params); -typedef GLvoid (APIENTRY *NEL_PFNGLGETPROGRAMSTRINGARBPROC)(GLenum target, GLenum pname, GLvoid *string); -typedef GLboolean (APIENTRY *NEL_PFNGLISPROGRAMARBPROC)(GLuint program); - - -typedef GLboolean (APIENTRY * NEL_PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer); -typedef GLboolean (APIENTRY * NEL_PFNGLISFRAMEBUFFEREXTPROC) (GLuint framebuffer); -typedef GLenum (APIENTRY * NEL_PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum pname); -typedef GLvoid (APIENTRY * NEL_PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers); -typedef GLvoid (APIENTRY * NEL_PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); -typedef GLvoid (APIENTRY * NEL_PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); -typedef GLvoid (APIENTRY * NEL_PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers); -typedef GLvoid (APIENTRY * NEL_PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); -typedef GLvoid (APIENTRY * NEL_PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); -typedef GLvoid (APIENTRY * NEL_PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); -typedef GLvoid (APIENTRY * NEL_PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers); -typedef GLvoid (APIENTRY * NEL_PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers); -typedef GLvoid (APIENTRY * NEL_PFNGETRENDERBUFFERPARAMETERIVEXTPROC) (GLenum target, GLenum pname, GLint *params); -typedef GLvoid (APIENTRY * NEL_PFNGENERATEMIPMAPEXTPROC) (GLenum target); - -typedef GLvoid (APIENTRY * NEL_PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); - -typedef GLvoid (APIENTRY * NEL_PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); - -#ifndef NL_GL_NV_occlusion_query -#define NL_GL_NV_occlusion_query 1 - -typedef GLvoid (APIENTRY * NEL_PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids); -typedef GLvoid (APIENTRY * NEL_PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids); -typedef GLboolean (APIENTRY * NEL_PFNGLISOCCLUSIONQUERYNVPROC) (GLuint id); -typedef GLvoid (APIENTRY * NEL_PFNGLBEGINOCCLUSIONQUERYNVPROC) (GLuint id); -typedef GLvoid (APIENTRY * NEL_PFNGLENDOCCLUSIONQUERYNVPROC) (); -typedef GLvoid (APIENTRY * NEL_PFNGLGETOCCLUSIONQUERYIVNVPROC) (GLuint id, GLenum pname, GLint *params); -typedef GLvoid (APIENTRY * NEL_PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pname, GLuint *params); - -#endif /* GL_NV_occlusion_query */ - -#ifndef NL_GL_ARB_multisample -#define NL_GL_ARB_multisample 1 -typedef GLvoid (APIENTRY * NEL_PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert); -#endif - #if defined(NL_OS_MAC) // Mac GL extensions @@ -433,18 +57,6 @@ typedef GLvoid (APIENTRY * NEL_PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, G #elif defined(NL_OS_UNIX) // GLX extensions -#ifndef NL_GLX_EXT_swap_control -#define NL_GLX_EXT_swap_control 1 - -#ifndef GLX_EXT_swap_control -#define GLX_SWAP_INTERVAL_EXT 0x20F1 -#define GLX_MAX_SWAP_INTERVAL_EXT 0x20F2 -#endif - -typedef GLint (APIENTRY * NEL_PFNGLXSWAPINTERVALEXTPROC) (Display *dpy, GLXDrawable drawable, GLint interval); - -#endif // NL_GLX_EXT_swap_control - #ifndef NL_GLX_MESA_swap_control #define NL_GLX_MESA_swap_control 1 diff --git a/code/nel/src/3d/driver/opengl/driver_opengl_vertex.cpp b/code/nel/src/3d/driver/opengl/driver_opengl_vertex.cpp index 6df62dfc3..c71e82ce4 100644 --- a/code/nel/src/3d/driver/opengl/driver_opengl_vertex.cpp +++ b/code/nel/src/3d/driver/opengl/driver_opengl_vertex.cpp @@ -1809,7 +1809,7 @@ void CDriverGL::fenceOnCurVBHardIfNeeded(IVertexBufferHardGL *newVBHard) #ifndef USE_OPENGLES // If old is not a VBHard, or if not a NVidia VBHard, no-op. - if( _CurrentVertexBufferHard==NULL || !_CurrentVertexBufferHard->VBType == IVertexBufferHardGL::NVidiaVB) + if( _CurrentVertexBufferHard==NULL || _CurrentVertexBufferHard->VBType != IVertexBufferHardGL::NVidiaVB) return; // if we do not activate the same (NB: newVBHard==NULL if not a VBHard). diff --git a/code/nel/src/3d/driver/opengl/driver_opengl_vertex_buffer_hard.cpp b/code/nel/src/3d/driver/opengl/driver_opengl_vertex_buffer_hard.cpp index 60109cfb6..79c55ea16 100644 --- a/code/nel/src/3d/driver/opengl/driver_opengl_vertex_buffer_hard.cpp +++ b/code/nel/src/3d/driver/opengl/driver_opengl_vertex_buffer_hard.cpp @@ -551,7 +551,7 @@ void CVertexArrayRangeATI::free() _HeapMemory.reset(); // Free special memory. - nglDeleteObjectBufferATI(_VertexObjectId); + nglFreeObjectBufferATI(_VertexObjectId); _Allocated= false; _VertexArraySize= 0; @@ -839,7 +839,7 @@ bool CVertexArrayRangeMapObjectATI::allocate(uint32 size, CVertexBuffer::TPrefer if (vertexObjectId) { // free the object - nglDeleteObjectBufferATI(vertexObjectId); + nglFreeObjectBufferATI(vertexObjectId); // _SizeAllocated = size; _VBType = vbType; @@ -924,7 +924,7 @@ CVertexBufferHardGLMapObjectATI::CVertexBufferHardGLMapObjectATI(CDriverGL *drv, CVertexBufferHardGLMapObjectATI::~CVertexBufferHardGLMapObjectATI() { H_AUTO_OGL(CVertexBufferHardGLMapObjectATI_CVertexBufferHardGLMapObjectATIDtor) - if (_VertexObjectId) nglDeleteObjectBufferATI(_VertexObjectId); + if (_VertexObjectId) nglFreeObjectBufferATI(_VertexObjectId); #ifdef NL_DEBUG if (_VertexPtr) { @@ -1114,7 +1114,7 @@ void CVertexArrayRangeMapObjectATI::updateLostBuffers() { nlassert((*it)->_VertexObjectId); nlassert(nglIsObjectBufferATI((*it)->_VertexObjectId)); - nglDeleteObjectBufferATI((*it)->_VertexObjectId); + nglFreeObjectBufferATI((*it)->_VertexObjectId); (*it)->_VertexObjectId = 0; (*it)->VB->setLocation(CVertexBuffer::NotResident); } diff --git a/code/nel/src/3d/driver/opengl/stdopengl.h b/code/nel/src/3d/driver/opengl/stdopengl.h index 336f15f47..544829b19 100644 --- a/code/nel/src/3d/driver/opengl/stdopengl.h +++ b/code/nel/src/3d/driver/opengl/stdopengl.h @@ -14,6 +14,9 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . +#ifndef STDOPENGL_H +#define STDOPENGL_H + #include "nel/misc/types_nl.h" #include @@ -67,5 +70,33 @@ #include "nel/misc/mem_stream.h" #include "nel/misc/time_nl.h" #include "nel/misc/command.h" +#include "nel/misc/matrix.h" +#include "nel/misc/smart_ptr.h" +#include "nel/misc/rgba.h" +#include "nel/misc/event_emitter.h" +#include "nel/misc/bit_set.h" +#include "nel/misc/hierarchical_timer.h" +#include "nel/misc/bitmap.h" +#include "nel/misc/heap_memory.h" +#include "nel/misc/event_emitter_multi.h" +#include "nel/misc/time_nl.h" +#include "nel/misc/rect.h" +#include "nel/misc/mouse_device.h" +#include "nel/misc/dynloadlib.h" +#include "nel/misc/file.h" #include "nel/3d/driver.h" +#include "nel/3d/material.h" +#include "nel/3d/vertex_buffer.h" +#include "nel/3d/ptr_set.h" +#include "nel/3d/texture_cube.h" +#include "nel/3d/vertex_program_parse.h" +#include "nel/3d/viewport.h" +#include "nel/3d/scissor.h" +#include "nel/3d/light.h" +#include "nel/3d/occlusion_query.h" +#include "nel/3d/u_driver.h" +#include "nel/3d/light.h" +#include "nel/3d/index_buffer.h" + +#endif diff --git a/code/nel/src/gui/group_html.cpp b/code/nel/src/gui/group_html.cpp index d0fcd050e..9f19f383a 100644 --- a/code/nel/src/gui/group_html.cpp +++ b/code/nel/src/gui/group_html.cpp @@ -4094,7 +4094,8 @@ namespace NLGUI void CGroupHTML::requestTerminated(HTRequest * request ) { // this callback is being called for every request terminated - if( request == _LibWWW->Request ){ + if (request == _LibWWW->Request) + { // set the browser as complete _Browsing = false; updateRefreshButton(); diff --git a/code/ryzom/client/src/CMakeLists.txt b/code/ryzom/client/src/CMakeLists.txt index fb9bfcaa9..1fc53145b 100644 --- a/code/ryzom/client/src/CMakeLists.txt +++ b/code/ryzom/client/src/CMakeLists.txt @@ -5,10 +5,14 @@ ADD_SUBDIRECTORY(client_sheets) IF(WITH_RYZOM_CLIENT) # These are Windows/MFC apps - SET(SEVENZIP_LIBRARY "ryzom_sevenzip") +SET(SEVENZIP_LIBRARY "ryzom_sevenzip") ADD_SUBDIRECTORY(seven_zip) +IF(WITH_RYZOM_PATCH) + ADD_DEFINITIONS(-DRZ_USE_PATCH) +ENDIF(WITH_RYZOM_PATCH) + FILE(GLOB CFG ../*.cfg ../*.cfg.in) FILE(GLOB SRC *.cpp *.h motion/*.cpp motion/*.h client.rc) FILE(GLOB SRC_INTERFACE interface_v3/*.h interface_v3/*.cpp) diff --git a/code/ryzom/client/src/client.cpp b/code/ryzom/client/src/client.cpp index 368afe0ee..19af0545d 100644 --- a/code/ryzom/client/src/client.cpp +++ b/code/ryzom/client/src/client.cpp @@ -536,15 +536,17 @@ int main(int argc, char **argv) strcpy(filename, argv[0]); - // ignore signal SIGPIPE generated by libwww signal(SIGPIPE, sigHandler); + // Delete the .sh file because it s not useful anymore + if (NLMISC::CFile::fileExists("updt_nl.sh")) + NLMISC::CFile::deleteFile("updt_nl.sh"); #endif // initialize patch manager and set the ryzom full path, before it's used CPatchManager *pPM = CPatchManager::getInstance(); - pPM->setRyzomFilename(NLMISC::CFile::getFilename(filename)); + pPM->setRyzomFilename(filename); ///////////////////////////////// // Initialize the application. // diff --git a/code/ryzom/client/src/client_cfg.cpp b/code/ryzom/client/src/client_cfg.cpp index a065252a5..56decaa63 100644 --- a/code/ryzom/client/src/client_cfg.cpp +++ b/code/ryzom/client/src/client_cfg.cpp @@ -422,16 +422,16 @@ CClientConfig::CClientConfig() MouseOverFX = "sfx_selection_mouseover.ps"; SelectionFXSize = 0.8f; - // only force patching under Windows by default - #if WITH_PATCH_SUPPORT - PatchWanted = true; - #else - PatchWanted = false; - #endif - PatchUrl = ""; - PatchletUrl = ""; - PatchVersion = ""; - PatchServer = ""; +#if RZ_USE_PATCH + PatchWanted = true; +#else + PatchWanted = false; +#endif + + PatchUrl.clear(); + PatchletUrl.clear(); + PatchVersion.clear(); + PatchServer.clear(); WebIgMainDomain = "atys.ryzom.com"; WebIgTrustedDomains.push_back(WebIgMainDomain); diff --git a/code/ryzom/client/src/game_context_menu.cpp b/code/ryzom/client/src/game_context_menu.cpp index 852d90931..9cf2e0e64 100644 --- a/code/ryzom/client/src/game_context_menu.cpp +++ b/code/ryzom/client/src/game_context_menu.cpp @@ -473,7 +473,7 @@ void CGameContextMenu::update() // Action possible only if the client is not already busy and the selection is able to do this with you.. _TextFollow->setActive( selection && - (! selection->slot() == UserEntity->slot()) && + (selection->slot() != UserEntity->slot()) && (!selection->isForageSource()) && (selection->isDead()==false) && (((availablePrograms & (1 << BOTCHATTYPE::DontFollow)) == 0))); @@ -484,7 +484,7 @@ void CGameContextMenu::update() if(_TextAssist) { // Action possible only if the client is not already busy and the selection is able to do this with you.. - _TextAssist->setActive(!R2::getEditor().isDMing() && selection && (! selection->slot() == UserEntity->slot()) && (!selection->isForageSource()) && (selection->isDead()==false)); + _TextAssist->setActive(!R2::getEditor().isDMing() && selection && (selection->slot() != UserEntity->slot()) && (!selection->isForageSource()) && (selection->isDead()==false)); // See also below for mount/packer } diff --git a/code/ryzom/client/src/init.cpp b/code/ryzom/client/src/init.cpp index 1c4fe76e9..d603be4a3 100644 --- a/code/ryzom/client/src/init.cpp +++ b/code/ryzom/client/src/init.cpp @@ -829,13 +829,6 @@ void prelogInit() CLoginProgressPostThread::getInstance().init(ClientCfg.ConfigFile); - // tmp for patcher debug - extern void tmpFlagMainlandPatchCategories(NLMISC::CConfigFile &cf); - extern void tmpFlagRemovedPatchCategories(NLMISC::CConfigFile &cf); - tmpFlagMainlandPatchCategories(ClientCfg.ConfigFile); - tmpFlagRemovedPatchCategories(ClientCfg.ConfigFile); - - // check "BuildName" in ClientCfg //nlassert(!ClientCfg.BuildName.empty()); // TMP comment by nico do not commit diff --git a/code/ryzom/client/src/interface_v3/bot_chat_page_ring_sessions.h b/code/ryzom/client/src/interface_v3/bot_chat_page_ring_sessions.h index 5c9a492c5..2839cc775 100644 --- a/code/ryzom/client/src/interface_v3/bot_chat_page_ring_sessions.h +++ b/code/ryzom/client/src/interface_v3/bot_chat_page_ring_sessions.h @@ -15,7 +15,7 @@ // along with this program. If not, see . #ifndef CL_BOT_CHAT_PAGE_RING_SESSIONS_H -#define CL_BOT_CHAT_PAGE_RING_SSSIONS_H +#define CL_BOT_CHAT_PAGE_RING_SESSIONS_H #include "bot_chat_page.h" #include "../entity_cl.h" diff --git a/code/ryzom/client/src/interface_v3/interface_manager.cpp b/code/ryzom/client/src/interface_v3/interface_manager.cpp index 98184d715..8a70e10fd 100644 --- a/code/ryzom/client/src/interface_v3/interface_manager.cpp +++ b/code/ryzom/client/src/interface_v3/interface_manager.cpp @@ -21,8 +21,6 @@ // Memory #include -#include "game_share/ryzom_version.h" - #include "nel/misc/i_xml.h" #include "nel/misc/o_xml.h" #include "nel/misc/algo.h" @@ -131,29 +129,7 @@ using namespace NLGUI; #include "parser_modules.h" #include "../global.h" - -#ifdef HAVE_REVISION_H -#include "revision.h" -#endif - -#if defined(HAVE_X86_64) -#define RYZOM_ARCH "x64" -#elif defined(HAVE_X86) -#define RYZOM_ARCH "x86" -#elif defined(HAVE_ARM) -#define RYZOM_ARCH "arm" -#else -#define RYZOM_ARCH "unknow" -#endif -#if defined(NL_OS_WINDOWS) -#define RYZOM_SYSTEM "windows" -#elif defined(NL_OS_MAC) -#define RYZOM_SYSTEM "mac" -#elif defined(NL_OS_UNIX) -#define RYZOM_SYSTEM "unix" -#else -#define RYZOM_SYSTEM "unkown" -#endif +#include "user_agent.h" using namespace NLMISC; @@ -489,18 +465,10 @@ CInterfaceManager::CInterfaceManager() CViewTextID::setTextProvider( &SMTextProvider ); CViewTextFormated::setFormatter( &RyzomTextFormatter ); - char buffer[256]; - -#ifdef REVISION - sprintf(buffer, "%s.%s-%s-%s", RYZOM_VERSION, REVISION, RYZOM_SYSTEM, RYZOM_ARCH); -#else - sprintf(buffer, "%s-%s-%s", RYZOM_VERSION, RYZOM_SYSTEM, RYZOM_ARCH); -#endif - CGroupHTML::options.trustedDomains = ClientCfg.WebIgTrustedDomains; CGroupHTML::options.languageCode = ClientCfg.getHtmlLanguageCode(); CGroupHTML::options.appName = "Ryzom"; - CGroupHTML::options.appVersion = buffer; + CGroupHTML::options.appVersion = getUserAgent(); NLGUI::CDBManager::getInstance()->resizeBanks( NB_CDB_BANKS ); interfaceLinkUpdater = new CInterfaceLink::CInterfaceLinkUpdater(); diff --git a/code/ryzom/client/src/interface_v3/interface_options_ryzom.h b/code/ryzom/client/src/interface_v3/interface_options_ryzom.h index 8862eaea6..ebce72956 100644 --- a/code/ryzom/client/src/interface_v3/interface_options_ryzom.h +++ b/code/ryzom/client/src/interface_v3/interface_options_ryzom.h @@ -16,7 +16,7 @@ #ifndef IF_OPTIONS_RZ -#define IP_OPTIONS_RZ +#define IF_OPTIONS_RZ #include "nel/gui/interface_options.h" diff --git a/code/ryzom/client/src/login_patch.cpp b/code/ryzom/client/src/login_patch.cpp index ec01b3080..5b9a83c83 100644 --- a/code/ryzom/client/src/login_patch.cpp +++ b/code/ryzom/client/src/login_patch.cpp @@ -18,16 +18,14 @@ // Includes // +#include "stdpch.h" + #include -#ifdef NL_OS_WINDOWS - //windows doesnt have unistd.h -#else +#ifndef NL_OS_WINDOWS #include #endif -#include "stdpch.h" - #include #include @@ -36,8 +34,8 @@ #ifdef USE_CURL #include #endif -#include +#include #include "nel/misc/debug.h" #include "nel/misc/path.h" @@ -46,10 +44,10 @@ #include "nel/misc/big_file.h" #include "nel/misc/i18n.h" -#define NL_USE_SEVENZIP 1 +#define RZ_USE_SEVENZIP 1 // 7 zip includes -#ifdef NL_USE_SEVENZIP +#ifdef RZ_USE_SEVENZIP #include "seven_zip/7zCrc.h" #include "seven_zip/7zIn.h" #include "seven_zip/7zExtract.h" @@ -70,7 +68,7 @@ #endif #ifdef NL_OS_WINDOWS -#include + #include #endif // @@ -81,35 +79,6 @@ static std::vector ForceMainlandPatchCategories; static std::vector ForceRemovePatchCategories; -// TMP for debug : force some category in the patch to be flagged as 'mainland' until -// the actual file is updated -void tmpFlagMainlandPatchCategories(NLMISC::CConfigFile &cf) -{ - NLMISC::CConfigFile::CVar *catList = cf.getVarPtr("ForceMainlandPatchCategories"); - if (catList) - { - for (uint k = 0; k < catList->size(); ++k) - { - ForceMainlandPatchCategories.push_back(catList->asString(k)); - } - } -} - -// TMP for debug : force some category in the patch to be flagged as 'mainland' until -// the actual file is updated -void tmpFlagRemovedPatchCategories(NLMISC::CConfigFile &cf) -{ - NLMISC::CConfigFile::CVar *catList = cf.getVarPtr("RemovePatchCategories"); - if (catList) - { - for (uint k = 0; k < catList->size(); ++k) - { - ForceRemovePatchCategories.push_back(catList->asString(k)); - } - } -} - - using namespace std; using namespace NLMISC; @@ -118,11 +87,12 @@ extern string VersionName; extern string R2ServerVersion; #ifdef __CLIENT_INSTALL_EXE__ -extern std::string TheTmpInstallDirectory; -extern std::string ClientLauncherUrl; + extern std::string TheTmpInstallDirectory; + extern std::string ClientLauncherUrl; #else -std::string TheTmpInstallDirectory ="patch/client_install"; + std::string TheTmpInstallDirectory = "patch/client_install"; #endif + // **************************************************************************** // **************************************************************************** // **************************************************************************** @@ -141,7 +111,7 @@ struct EPatchDownloadException : public Exception CPatchManager *CPatchManager::_Instance = NULL; -#ifdef NL_USE_SEVENZIP +#ifdef RZ_USE_SEVENZIP /// Input stream class for 7zip archive class CNel7ZipInStream : public _ISzInStream { @@ -199,7 +169,11 @@ CPatchManager::CPatchManager() : State("t_state"), DataScanState("t_data_scan_st { DescFilename = "ryzom_xxxxx.idx"; +#ifdef NL_OS_WINDOWS UpdateBatchFilename = "updt_nl.bat"; +#else + UpdateBatchFilename = "updt_nl.sh"; +#endif // use current directory by default setClientRootPath("./"); @@ -221,6 +195,13 @@ CPatchManager::CPatchManager() : State("t_state"), DataScanState("t_data_scan_st _AsyncDownloader = NULL; _StateListener = NULL; _StartRyzomAtEnd = true; + +#ifdef NL_OS_UNIX + // don't use cfg, exe and dll from Windows version + ForceRemovePatchCategories.clear(); + ForceRemovePatchCategories.push_back("main_exedll"); + ForceRemovePatchCategories.push_back("main_cfg"); +#endif } // **************************************************************************** @@ -279,16 +260,20 @@ void CPatchManager::init(const std::vector& patchURIs, const std::s try { CConfigFile *cf; - #ifdef RY_BG_DOWNLOADER - cf = &theApp.ConfigFile; - #else - cf = &ClientCfg.ConfigFile; - #endif + +#ifdef RY_BG_DOWNLOADER + cf = &theApp.ConfigFile; +#else + cf = &ClientCfg.ConfigFile; +#endif + std::string appName = "ryzom_live"; + if (cf->getVarPtr("Application")) { appName = cf->getVar("Application").asString(0); } + std::string versionFileName = appName + ".version"; getServerFile(versionFileName); @@ -300,13 +285,14 @@ void CPatchManager::init(const std::vector& patchURIs, const std::s versionFile.getline(buffer, 1024); CSString line(buffer); - #ifdef NL_DEBUG - CConfigFile::CVar *forceVersion = cf->getVarPtr("ForceVersion"); - if (forceVersion != NULL) - { - line = forceVersion->asString(); - } - #endif +#ifdef NL_DEBUG + CConfigFile::CVar *forceVersion = cf->getVarPtr("ForceVersion"); + + if (forceVersion != NULL) + { + line = forceVersion->asString(); + } +#endif ServerVersion = line.firstWord(true); VersionName = line.firstWord(true); @@ -314,7 +300,7 @@ void CPatchManager::init(const std::vector& patchURIs, const std::s // force the R2ServerVersion R2ServerVersion = ServerVersion; - #ifdef __CLIENT_INSTALL_EXE__ +#ifdef __CLIENT_INSTALL_EXE__ { //The install program load a the url of the mini web site in the patch directory @@ -352,7 +338,7 @@ void CPatchManager::init(const std::vector& patchURIs, const std::s } } } - #endif +#endif } catch (...) { @@ -422,6 +408,7 @@ void CPatchManager::startCheckThread(bool includeBackgroundPatch) nlassert (thread != NULL); thread->start (); } + // **************************************************************************** bool CPatchManager::isCheckThreadEnded(bool &ok) { @@ -746,7 +733,6 @@ void CPatchManager::deleteBatchFile() // **************************************************************************** void CPatchManager::createBatchFile(CProductDescriptionForClient &descFile, bool wantRyzomRestart, bool useBatchFile) { - uint nblab = 0; FILE *fp = NULL; @@ -760,14 +746,13 @@ void CPatchManager::createBatchFile(CProductDescriptionForClient &descFile, bool string err = toString("Can't open file '%s' for writing: code=%d %s (error code 29)", UpdateBatchFilename.c_str(), errno, strerror(errno)); throw Exception (err); } + //use bat if windows if not use sh - #ifdef NL_OS_WINDOWS - fprintf(fp, "@echo off\n"); - #elif NL_OS_MAC - //mac patcher doesn't work yet - #else - fprintf(fp, "#!/bin/sh\npwd\n"); - #endif +#ifdef NL_OS_WINDOWS + fprintf(fp, "@echo off\n"); +#else + fprintf(fp, "#!/bin/sh\n"); +#endif } // Unpack files with category ExtractPath non empty @@ -799,6 +784,7 @@ void CPatchManager::createBatchFile(CProductDescriptionForClient &descFile, bool throw; } + if (!result) { //:TODO: handle exception? @@ -818,19 +804,17 @@ void CPatchManager::createBatchFile(CProductDescriptionForClient &descFile, bool string SrcPath = ClientPatchPath; string DstPath = rCat.getUnpackTo(); NLMISC::CFile::createDirectoryTree(DstPath); - // this file must be moved + // this file must be moved if (useBatchFile) { - #ifdef NL_OS_WINDOWS - SrcPath = CPath::standardizeDosPath(SrcPath); - DstPath = CPath::standardizeDosPath(DstPath); - #elif NL_OS_MAC - //no patcher on mac yet - #else - SrcPath = CPath::standardizePath(SrcPath); - DstPath = CPath::standardizePath(DstPath); - #endif +#ifdef NL_OS_WINDOWS + SrcPath = CPath::standardizeDosPath(SrcPath); + DstPath = CPath::standardizeDosPath(DstPath); +#else + SrcPath = CPath::standardizePath(SrcPath); + DstPath = CPath::standardizePath(DstPath); +#endif } std::string SrcName = SrcPath + vFilenames[fff]; @@ -838,21 +822,17 @@ void CPatchManager::createBatchFile(CProductDescriptionForClient &descFile, bool if (useBatchFile) { - //write windows .bat format else write sh format - #ifdef NL_OS_WINDOWS - fprintf(fp, ":loop%u\n", nblab); - fprintf(fp, "attrib -r -a -s -h %s\n", DstName.c_str()); - fprintf(fp, "del %s\n", DstName.c_str()); - fprintf(fp, "if exist %s goto loop%u\n", DstName.c_str(), nblab); - fprintf(fp, "move %s %s\n", SrcName.c_str(), DstPath.c_str()); - #elif NL_OS_MAC - //no patcher on osx - #else - fprintf(fp, "chmod 777 %s\n", DstName.c_str()); - fprintf(fp, "rm -rf %s\n", DstName.c_str()); - fprintf(fp, "mv %s %s\n", SrcName.c_str(), DstPath.c_str()); - #endif - + // write windows .bat format else write sh format +#ifdef NL_OS_WINDOWS + fprintf(fp, ":loop%u\n", nblab); + fprintf(fp, "attrib -r -a -s -h %s\n", DstName.c_str()); + fprintf(fp, "del %s\n", DstName.c_str()); + fprintf(fp, "if exist %s goto loop%u\n", DstName.c_str(), nblab); + fprintf(fp, "move %s %s\n", SrcName.c_str(), DstPath.c_str()); +#else + fprintf(fp, "rm -rf %s\n", DstName.c_str()); + fprintf(fp, "mv %s %s\n", SrcName.c_str(), DstPath.c_str()); +#endif } else { @@ -869,26 +849,25 @@ void CPatchManager::createBatchFile(CProductDescriptionForClient &descFile, bool // Finalize batch file if (NLMISC::CFile::isExists("patch") && NLMISC::CFile::isDirectory("patch")) { - #ifdef NL_OS_WINDOWS +#ifdef NL_OS_WINDOWS if (useBatchFile) { fprintf(fp, ":looppatch\n"); } - #endif +#endif vector vFileList; CPath::getPathContent ("patch", false, false, true, vFileList, NULL, false); + for(uint32 i = 0; i < vFileList.size(); ++i) { if (useBatchFile) { - #ifdef NL_OS_WINDOWS - fprintf(fp, "del %s\n", CPath::standardizeDosPath(vFileList[i]).c_str()); - #elif NL_OS_MAC - //no patcher on MAC yet - #else - fprintf(fp, "rm -f %s\n", CPath::standardizePath(vFileList[i]).c_str()); - #endif +#ifdef NL_OS_WINDOWS + fprintf(fp, "del %s\n", CPath::standardizeDosPath(vFileList[i]).c_str()); +#else + fprintf(fp, "rm -f %s\n", CPath::standardizePath(vFileList[i]).c_str()); +#endif } else { @@ -898,14 +877,12 @@ void CPatchManager::createBatchFile(CProductDescriptionForClient &descFile, bool if (useBatchFile) { - #ifdef NL_OS_WINDOWS - fprintf(fp, "rd /Q /S patch\n"); - fprintf(fp, "if exist patch goto looppatch\n"); - #elif NL_OS_MAC - //no patcher on mac yet - #else - fprintf(fp, "rm -rf patch\n"); - #endif +#ifdef NL_OS_WINDOWS + fprintf(fp, "rd /Q /S patch\n"); + fprintf(fp, "if exist patch goto looppatch\n"); +#else + fprintf(fp, "rm -rf patch\n"); +#endif } else { @@ -917,11 +894,11 @@ void CPatchManager::createBatchFile(CProductDescriptionForClient &descFile, bool { if (wantRyzomRestart) { - #ifdef NL_OS_WINDOWS +#ifdef NL_OS_WINDOWS fprintf(fp, "start %s %%1 %%2 %%3\n", RyzomFilename.c_str()); - #else - fprintf(fp, "/opt/tita/%s $1 $2 $3\n", RyzomFilename.c_str()); - #endif +#else + fprintf(fp, "%s $1 $2 $3\n", RyzomFilename.c_str()); +#endif } bool writeError = ferror(fp) != 0; @@ -996,9 +973,11 @@ void CPatchManager::executeBatchFile() #else // Start the child process. bool r2Mode = false; - #ifndef RY_BG_DOWNLOADER - r2Mode = ClientCfg.R2Mode; - #endif + +#ifndef RY_BG_DOWNLOADER + r2Mode = ClientCfg.R2Mode; +#endif + string strCmdLine; strCmdLine = "./" + UpdateBatchFilename; @@ -1006,21 +985,25 @@ void CPatchManager::executeBatchFile() chmod(strCmdLine.c_str(), S_IRWXU); if (r2Mode) { - if (execl(strCmdLine.c_str(), LoginLogin.c_str(), LoginPassword.c_str()) == -1) + if (execl(strCmdLine.c_str(), strCmdLine.c_str(), LoginLogin.c_str(), LoginPassword.c_str(), (char *) NULL) == -1) { int errsv = errno; nlerror("Execl Error: %d %s", errsv, strCmdLine.c_str(), (char *) NULL); - } else { + } + else + { nlinfo("Ran batch file r2Mode Success"); } } else { - if (execl(strCmdLine.c_str(), LoginLogin.c_str(), LoginPassword.c_str(), LoginShardId, (char *) NULL) == -1) + if (execl(strCmdLine.c_str(), strCmdLine.c_str(), LoginLogin.c_str(), LoginPassword.c_str(), toString(LoginShardId).c_str(), (char *) NULL) == -1) { int errsv = errno; nlerror("Execl r2mode Error: %d %s", errsv, strCmdLine.c_str()); - } else { + } + else + { nlinfo("Ran batch file Success"); } } @@ -1340,7 +1323,7 @@ void CPatchManager::downloadFileWithCurl (const string &source, const string &de DownloadInProgress = true; try { - #ifdef USE_CURL +#ifdef USE_CURL ucstring s = CI18N::get("uiDLWithCurl") + " " + dest; setState(true, s); @@ -1395,7 +1378,7 @@ void CPatchManager::downloadFileWithCurl (const string &source, const string &de fclose(fp); curl_global_cleanup(); - CurrentFile = ""; + CurrentFile.clear(); if (diskFull) { @@ -1437,9 +1420,9 @@ void CPatchManager::downloadFileWithCurl (const string &source, const string &de throw EPatchDownloadException (NLMISC::toString("curl download failed: (ec %d %d)", res, r)); } - #else +#else throw Exception("USE_CURL is not defined, no curl method"); - #endif +#endif } catch(...) { @@ -2153,10 +2136,8 @@ void CPatchManager::getCorruptedFileInfo(const SFileToPatch &ftp, ucstring &sTra bool CPatchManager::unpack7Zip(const std::string &sevenZipFile, const std::string &destFileName) { -#ifdef NL_USE_SEVENZIP - nlinfo("Uncompressing 7zip archive '%s' to '%s'", - sevenZipFile.c_str(), - destFileName.c_str()); +#ifdef RZ_USE_SEVENZIP + nlinfo("Uncompressing 7zip archive '%s' to '%s'", sevenZipFile.c_str(), destFileName.c_str()); // init seven zip ISzAlloc allocImp; @@ -2245,7 +2226,7 @@ bool CPatchManager::unpack7Zip(const std::string &sevenZipFile, const std::strin bool CPatchManager::unpackLZMA(const std::string &lzmaFile, const std::string &destFileName) { -#ifdef NL_USE_SEVENZIP +#ifdef RZ_USE_SEVENZIP nldebug("unpackLZMA : decompression the lzma file '%s' into output file '%s", lzmaFile.c_str(), destFileName.c_str()); CIFile inStream(lzmaFile); uint32 inSize = inStream.getFileSize(); @@ -2357,10 +2338,24 @@ void CCheckThread::run () return; } - sint32 nServerVersion; + sint32 nServerVersion, nClientVersion; fromString(sServerVersion, nServerVersion); + fromString(sClientVersion, nClientVersion); - if (sClientVersion != sServerVersion) +#ifdef NL_OS_UNIX + string sClientNewVersion = ClientCfg.BuildName; + + sint32 nClientNewVersion; + fromString(sClientNewVersion, nClientNewVersion); + + // servers files are not compatible with current client, use last client version + if (nClientNewVersion && nServerVersion > nClientNewVersion) + { + nServerVersion = nClientNewVersion; + } +#endif + + if (nClientVersion != nServerVersion) { // first, try in the version subdirectory try diff --git a/code/ryzom/client/src/r2/editor.cpp b/code/ryzom/client/src/r2/editor.cpp index c27001140..bb09bec52 100644 --- a/code/ryzom/client/src/r2/editor.cpp +++ b/code/ryzom/client/src/r2/editor.cpp @@ -206,14 +206,14 @@ CDynamicMapClient(eid, clientGateway, luaState) void CDynamicMapClientEventForwarder::nodeErased(const std::string& instanceId, const std::string& attrName, sint32 position) { //H_AUTO(R2_CDynamicMapClientEventForwarder_nodeErased) - if (!getEditor().getMode() == CEditor::EditionMode) return; + if (getEditor().getMode() != CEditor::EditionMode) return; getEditor().nodeErased(instanceId, attrName, position); } void CDynamicMapClientEventForwarder::nodeSet(const std::string& instanceId, const std::string& attrName, CObject* value) { //H_AUTO(R2_CDynamicMapClientEventForwarder_nodeSet) - if (!getEditor().getMode() == CEditor::EditionMode) return; + if (getEditor().getMode() != CEditor::EditionMode) return; getEditor().nodeSet(instanceId, attrName, value); } @@ -221,7 +221,7 @@ void CDynamicMapClientEventForwarder::nodeInserted(const std::string& instanceId const std::string& key, CObject* value) { //H_AUTO(R2_CDynamicMapClientEventForwarder_nodeInserted) - if (!getEditor().getMode() == CEditor::EditionMode) return; + if (getEditor().getMode() != CEditor::EditionMode) return; getEditor().nodeInserted(instanceId, attrName, position, key, value); } @@ -230,14 +230,14 @@ void CDynamicMapClientEventForwarder::nodeMoved( const std::string& destInstanceId, const std::string& destAttrName, sint32 destPosition) { //H_AUTO(R2_CDynamicMapClientEventForwarder_nodeMoved) - if (!getEditor().getMode() == CEditor::EditionMode) return; + if (getEditor().getMode() != CEditor::EditionMode) return; getEditor().nodeMoved(instanceId, attrName, position, destInstanceId, destAttrName, destPosition); } void CDynamicMapClientEventForwarder::scenarioUpdated(CObject* highLevel, bool willTP, uint32 initialActIndex) { //H_AUTO(R2_CDynamicMapClientEventForwarder_scenarioUpdated) - if (!getEditor().getMode() == CEditor::EditionMode) return; + if (getEditor().getMode() != CEditor::EditionMode) return; getEditor().scenarioUpdated(highLevel, willTP, initialActIndex); } diff --git a/code/ryzom/client/src/user_agent.cpp b/code/ryzom/client/src/user_agent.cpp new file mode 100644 index 000000000..af07e8b86 --- /dev/null +++ b/code/ryzom/client/src/user_agent.cpp @@ -0,0 +1,65 @@ +// Ryzom - MMORPG Framework +// Copyright (C) 2010 Winch Gate Property Limited +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + + + +#include "stdpch.h" +#include "user_agent.h" + +#include "game_share/ryzom_version.h" + +#ifdef HAVE_REVISION_H +#include "revision.h" +#endif + +#if defined(HAVE_X86_64) +#define RYZOM_ARCH "x64" +#elif defined(HAVE_X86) +#define RYZOM_ARCH "x86" +#elif defined(HAVE_ARM) +#define RYZOM_ARCH "arm" +#else +#define RYZOM_ARCH "unknown" +#endif +#if defined(NL_OS_WINDOWS) +#define RYZOM_SYSTEM "windows" +#elif defined(NL_OS_MAC) +#define RYZOM_SYSTEM "mac" +#elif defined(NL_OS_UNIX) +#define RYZOM_SYSTEM "unix" +#else +#define RYZOM_SYSTEM "unknown" +#endif + +std::string getUserAgent() +{ + static std::string s_userAgent; + + if (s_userAgent.empty()) + { + char buffer[256]; + +#ifdef REVISION + sprintf(buffer, "%s.%s-%s-%s", RYZOM_VERSION, REVISION, RYZOM_SYSTEM, RYZOM_ARCH); +#else + sprintf(buffer, "%s-%s-%s", RYZOM_VERSION, RYZOM_SYSTEM, RYZOM_ARCH); +#endif + + s_userAgent = buffer; + } + + return s_userAgent; +} diff --git a/code/ryzom/client/src/user_agent.h b/code/ryzom/client/src/user_agent.h new file mode 100644 index 000000000..e42635871 --- /dev/null +++ b/code/ryzom/client/src/user_agent.h @@ -0,0 +1,87 @@ +// Ryzom - MMORPG Framework +// Copyright (C) 2010 Winch Gate Property Limited +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +#ifndef CL_USER_AGENT_H +#define CL_USER_AGENT_H + +std::string getUserAgent(); + +#endif // CL_USER_AGENT_H + +/* End of user_agent.h */ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/ryzom/common/src/game_share/send_chat.cpp b/code/ryzom/common/src/game_share/send_chat.cpp index 064e223fe..f5b2353fb 100644 --- a/code/ryzom/common/src/game_share/send_chat.cpp +++ b/code/ryzom/common/src/game_share/send_chat.cpp @@ -14,7 +14,7 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -#include "nel/misc/types_nl.h" +#include "stdpch.h" #include "send_chat.h" /** @@ -81,7 +81,6 @@ void npcChatToChannel(const TDataSetRow &senderId, CChatGroup::TGroupType groupT sendMessageViaMirror("IOS", msgout); } - /** * Send a chat line from a bot (mainly NPC) in a chat channel (know as chat group). * Chat group can be constructed from CChatGroup class. @@ -169,7 +168,6 @@ void npcTellToPlayer(const TDataSetRow &senderId, const TDataSetRow &receiverId, sendMessageViaMirror("IOS", msgout); } - /** * Send a tell line from a bot (mainly NPC) to a player. Accept parametered strings * phraseId is a phrase id obtained through the string manager diff --git a/code/ryzom/tools/server/ryzom_ams/www/html/installer/libsetup.php b/code/ryzom/tools/server/ryzom_ams/www/html/installer/libsetup.php index 3191f074a..7e7f491cc 100644 --- a/code/ryzom/tools/server/ryzom_ams/www/html/installer/libsetup.php +++ b/code/ryzom/tools/server/ryzom_ams/www/html/installer/libsetup.php @@ -6,27 +6,27 @@ */ //set permissions - if(writable('../../../www/login/logs')) { + if(is_writable('../../../www/login/logs')) { echo "failed to get write permissions on logs"; exit; } - if(writable('../../../admin/graphs_output')) { + if(is_writable('../../../admin/graphs_output')) { echo "failed to get write permissions on graphs_output"; exit; } - if(writable('../../../templates/default_c')) { + if(is_writable('../../../admin/templates/default_c')) { echo "failed to get write permissions on default_c"; exit; } - if(writable('../../www')) { + if(is_writable('../../www')) { echo "failed to get write permissions on www"; exit; } - if(writable('../../www/html/cache')) { + if(is_writable('../../www/html/cache')) { echo "failed to get write permissions on cache"; exit; } - if(writable('../../www/html/templates_c')) { + if(is_writable('../../www/html/templates_c')) { echo "failed to get write permissions on templates_c"; exit; }