Added GLES3 symbols and KHR_create_context
authorHaegeun Park <haegeun.park@samsung.com>
Fri, 13 Sep 2013 07:58:10 +0000 (00:58 -0700)
committerHaegeun Park <haegeun.park@samsung.com>
Fri, 13 Sep 2013 07:58:10 +0000 (00:58 -0700)
include/EGL/def_egl.h [deleted file]
src/headers/egl.h
src/headers/sym_gl.h
src/modules/fastpath/coregl_fastpath.c
src/modules/fastpath/coregl_fastpath.h
src/modules/fastpath/coregl_fastpath_egl.c
src/modules/fastpath/coregl_fastpath_gl.c
src/modules/tracepath/coregl_tracepath_gl.c
src/wraps/coregl_gl.c

diff --git a/include/EGL/def_egl.h b/include/EGL/def_egl.h
deleted file mode 100644 (file)
index 6236e08..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-//------------------------------------------------------//
-//                         EGL
-//------------------------------------------------------//
-
-/* EGL Types */
-/* EGLint is defined in eglplatform.h */
-
-typedef unsigned int EGLBoolean;
-typedef unsigned int EGLenum;
-typedef void *EGLConfig;
-typedef void *EGLContext;
-typedef void *EGLDisplay;
-typedef void *EGLSurface;
-typedef void *EGLClientBuffer;
-
-/* EGL Versioning */
-#define EGL_VERSION_1_0                        1
-#define EGL_VERSION_1_1                        1
-#define EGL_VERSION_1_2                        1
-#define EGL_VERSION_1_3                        1
-#define EGL_VERSION_1_4                        1
-
-/* EGL Enumerants. Bitmasks and other exceptional cases aside, most
- * enums are assigned unique values starting at 0x3000.
- */
-
-/* EGL aliases */
-#define EGL_FALSE                      0
-#define EGL_TRUE                       1
-
-/* Out-of-band handle values */
-#define EGL_DEFAULT_DISPLAY            ((EGLNativeDisplayType)0)
-#define EGL_NO_CONTEXT                 ((EGLContext)0)
-#define EGL_NO_DISPLAY                 ((EGLDisplay)0)
-#define EGL_NO_SURFACE                 ((EGLSurface)0)
-
-/* Out-of-band attribute value */
-#define EGL_DONT_CARE                  ((EGLint)-1)
-
-/* Errors / GetError return values */
-#define EGL_SUCCESS                    0x3000
-#define EGL_NOT_INITIALIZED            0x3001
-#define EGL_BAD_ACCESS                 0x3002
-#define EGL_BAD_ALLOC                  0x3003
-#define EGL_BAD_ATTRIBUTE              0x3004
-#define EGL_BAD_CONFIG                 0x3005
-#define EGL_BAD_CONTEXT                        0x3006
-#define EGL_BAD_CURRENT_SURFACE                0x3007
-#define EGL_BAD_DISPLAY                        0x3008
-#define EGL_BAD_MATCH                  0x3009
-#define EGL_BAD_NATIVE_PIXMAP          0x300A
-#define EGL_BAD_NATIVE_WINDOW          0x300B
-#define EGL_BAD_PARAMETER              0x300C
-#define EGL_BAD_SURFACE                        0x300D
-#define EGL_CONTEXT_LOST               0x300E  /* EGL 1.1 - IMG_power_management */
-
-/* Reserved 0x300F-0x301F for additional errors */
-
-/* Config attributes */
-#define EGL_BUFFER_SIZE                        0x3020
-#define EGL_ALPHA_SIZE                 0x3021
-#define EGL_BLUE_SIZE                  0x3022
-#define EGL_GREEN_SIZE                 0x3023
-#define EGL_RED_SIZE                   0x3024
-#define EGL_DEPTH_SIZE                 0x3025
-#define EGL_STENCIL_SIZE               0x3026
-#define EGL_CONFIG_CAVEAT              0x3027
-#define EGL_CONFIG_ID                  0x3028
-#define EGL_LEVEL                      0x3029
-#define EGL_MAX_PBUFFER_HEIGHT         0x302A
-#define EGL_MAX_PBUFFER_PIXELS         0x302B
-#define EGL_MAX_PBUFFER_WIDTH          0x302C
-#define EGL_NATIVE_RENDERABLE          0x302D
-#define EGL_NATIVE_VISUAL_ID           0x302E
-#define EGL_NATIVE_VISUAL_TYPE         0x302F
-#define EGL_PRESERVED_RESOURCES                0x3030
-#define EGL_SAMPLES                    0x3031
-#define EGL_SAMPLE_BUFFERS             0x3032
-#define EGL_SURFACE_TYPE               0x3033
-#define EGL_TRANSPARENT_TYPE           0x3034
-#define EGL_TRANSPARENT_BLUE_VALUE     0x3035
-#define EGL_TRANSPARENT_GREEN_VALUE    0x3036
-#define EGL_TRANSPARENT_RED_VALUE      0x3037
-#define EGL_NONE                       0x3038  /* Attrib list terminator */
-#define EGL_BIND_TO_TEXTURE_RGB                0x3039
-#define EGL_BIND_TO_TEXTURE_RGBA       0x303A
-#define EGL_MIN_SWAP_INTERVAL          0x303B
-#define EGL_MAX_SWAP_INTERVAL          0x303C
-#define EGL_LUMINANCE_SIZE             0x303D
-#define EGL_ALPHA_MASK_SIZE            0x303E
-#define EGL_COLOR_BUFFER_TYPE          0x303F
-#define EGL_RENDERABLE_TYPE            0x3040
-#define EGL_MATCH_NATIVE_PIXMAP                0x3041  /* Pseudo-attribute (not queryable) */
-#define EGL_CONFORMANT                 0x3042
-
-/* Reserved 0x3041-0x304F for additional config attributes */
-
-/* Config attribute values */
-#define EGL_SLOW_CONFIG                        0x3050  /* EGL_CONFIG_CAVEAT value */
-#define EGL_NON_CONFORMANT_CONFIG      0x3051  /* EGL_CONFIG_CAVEAT value */
-#define EGL_TRANSPARENT_RGB            0x3052  /* EGL_TRANSPARENT_TYPE value */
-#define EGL_RGB_BUFFER                 0x308E  /* EGL_COLOR_BUFFER_TYPE value */
-#define EGL_LUMINANCE_BUFFER           0x308F  /* EGL_COLOR_BUFFER_TYPE value */
-
-/* More config attribute values, for EGL_TEXTURE_FORMAT */
-#define EGL_NO_TEXTURE                 0x305C
-#define EGL_TEXTURE_RGB                        0x305D
-#define EGL_TEXTURE_RGBA               0x305E
-#define EGL_TEXTURE_2D                 0x305F
-
-/* Config attribute mask bits */
-#define EGL_PBUFFER_BIT                        0x0001  /* EGL_SURFACE_TYPE mask bits */
-#define EGL_PIXMAP_BIT                 0x0002  /* EGL_SURFACE_TYPE mask bits */
-#define EGL_WINDOW_BIT                 0x0004  /* EGL_SURFACE_TYPE mask bits */
-#define EGL_VG_COLORSPACE_LINEAR_BIT   0x0020  /* EGL_SURFACE_TYPE mask bits */
-#define EGL_VG_ALPHA_FORMAT_PRE_BIT    0x0040  /* EGL_SURFACE_TYPE mask bits */
-#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200 /* EGL_SURFACE_TYPE mask bits */
-#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400 /* EGL_SURFACE_TYPE mask bits */
-
-#define EGL_OPENGL_ES_BIT              0x0001  /* EGL_RENDERABLE_TYPE mask bits */
-#define EGL_OPENVG_BIT                 0x0002  /* EGL_RENDERABLE_TYPE mask bits */
-#define EGL_OPENGL_ES2_BIT             0x0004  /* EGL_RENDERABLE_TYPE mask bits */
-#define EGL_OPENGL_BIT                 0x0008  /* EGL_RENDERABLE_TYPE mask bits */
-
-/* QueryString targets */
-#define EGL_VENDOR                     0x3053
-#define EGL_VERSION                    0x3054
-#define EGL_EXTENSIONS                 0x3055
-#define EGL_CLIENT_APIS                        0x308D
-
-/* QuerySurface / SurfaceAttrib / CreatePbufferSurface targets */
-#define EGL_HEIGHT                     0x3056
-#define EGL_WIDTH                      0x3057
-#define EGL_LARGEST_PBUFFER            0x3058
-#define EGL_TEXTURE_FORMAT             0x3080
-#define EGL_TEXTURE_TARGET             0x3081
-#define EGL_MIPMAP_TEXTURE             0x3082
-#define EGL_MIPMAP_LEVEL               0x3083
-#define EGL_RENDER_BUFFER              0x3086
-#define EGL_VG_COLORSPACE              0x3087
-#define EGL_VG_ALPHA_FORMAT            0x3088
-#define EGL_HORIZONTAL_RESOLUTION      0x3090
-#define EGL_VERTICAL_RESOLUTION                0x3091
-#define EGL_PIXEL_ASPECT_RATIO         0x3092
-#define EGL_SWAP_BEHAVIOR              0x3093
-#define EGL_MULTISAMPLE_RESOLVE                0x3099
-
-/* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
-#define EGL_BACK_BUFFER                        0x3084
-#define EGL_SINGLE_BUFFER              0x3085
-
-/* OpenVG color spaces */
-#define EGL_VG_COLORSPACE_sRGB         0x3089  /* EGL_VG_COLORSPACE value */
-#define EGL_VG_COLORSPACE_LINEAR       0x308A  /* EGL_VG_COLORSPACE value */
-
-/* OpenVG alpha formats */
-#define EGL_VG_ALPHA_FORMAT_NONPRE     0x308B  /* EGL_ALPHA_FORMAT value */
-#define EGL_VG_ALPHA_FORMAT_PRE                0x308C  /* EGL_ALPHA_FORMAT value */
-
-/* Constant scale factor by which fractional display resolutions &
- * aspect ratio are scaled when queried as integer values.
- */
-#define EGL_DISPLAY_SCALING            10000
-
-/* Unknown display resolution/aspect ratio */
-#define EGL_UNKNOWN                    ((EGLint)-1)
-
-/* Back buffer swap behaviors */
-#define EGL_BUFFER_PRESERVED           0x3094  /* EGL_SWAP_BEHAVIOR value */
-#define EGL_BUFFER_DESTROYED           0x3095  /* EGL_SWAP_BEHAVIOR value */
-
-/* CreatePbufferFromClientBuffer buffer types */
-#define EGL_OPENVG_IMAGE               0x3096
-
-/* QueryContext targets */
-#define EGL_CONTEXT_CLIENT_TYPE                0x3097
-
-/* CreateContext attributes */
-#define EGL_CONTEXT_CLIENT_VERSION     0x3098
-
-/* Multisample resolution behaviors */
-#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A /* EGL_MULTISAMPLE_RESOLVE value */
-#define EGL_MULTISAMPLE_RESOLVE_BOX    0x309B  /* EGL_MULTISAMPLE_RESOLVE value */
-
-/* BindAPI/QueryAPI targets */
-#define EGL_OPENGL_ES_API              0x30A0
-#define EGL_OPENVG_API                 0x30A1
-#define EGL_OPENGL_API                 0x30A2
-
-/* GetCurrentSurface targets */
-#define EGL_DRAW                       0x3059
-#define EGL_READ                       0x305A
-
-/* WaitNative engines */
-#define EGL_CORE_NATIVE_ENGINE         0x305B
-
-/* EGL 1.2 tokens renamed for consistency in EGL 1.3 */
-#define EGL_COLORSPACE                 EGL_VG_COLORSPACE
-#define EGL_ALPHA_FORMAT               EGL_VG_ALPHA_FORMAT
-#define EGL_COLORSPACE_sRGB            EGL_VG_COLORSPACE_sRGB
-#define EGL_COLORSPACE_LINEAR          EGL_VG_COLORSPACE_LINEAR
-#define EGL_ALPHA_FORMAT_NONPRE                EGL_VG_ALPHA_FORMAT_NONPRE
-#define EGL_ALPHA_FORMAT_PRE           EGL_VG_ALPHA_FORMAT_PRE
-
-// KHR Extention
-#ifndef EGL_KHR_image
-#define EGL_KHR_image 1
-#define EGL_NATIVE_PIXMAP_KHR                  0x30B0  /* eglCreateImageKHR target */
-typedef void *EGLImageKHR;
-#define EGL_NO_IMAGE_KHR                       ((EGLImageKHR)0)
-#endif
-
index 6236e08..e7b4c3c 100644 (file)
@@ -202,11 +202,29 @@ typedef void *EGLClientBuffer;
 #define EGL_ALPHA_FORMAT_NONPRE                EGL_VG_ALPHA_FORMAT_NONPRE
 #define EGL_ALPHA_FORMAT_PRE           EGL_VG_ALPHA_FORMAT_PRE
 
+
 // KHR Extention
 #ifndef EGL_KHR_image
 #define EGL_KHR_image 1
-#define EGL_NATIVE_PIXMAP_KHR                  0x30B0  /* eglCreateImageKHR target */
 typedef void *EGLImageKHR;
-#define EGL_NO_IMAGE_KHR                       ((EGLImageKHR)0)
-#endif
+#define EGL_NATIVE_PIXMAP_KHR             0x30B0
+#define EGL_NO_IMAGE_KHR                  ((EGLImageKHR)0)
+#endif /* EGL_KHR_image */
+
+#ifndef EGL_KHR_create_context
+#define EGL_KHR_create_context 1
+#define EGL_CONTEXT_MAJOR_VERSION_KHR     0x3098
+#define EGL_CONTEXT_MINOR_VERSION_KHR     0x30FB
+#define EGL_CONTEXT_FLAGS_KHR             0x30FC
+#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR 0x30FD
+#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR 0x31BD
+#define EGL_NO_RESET_NOTIFICATION_KHR     0x31BE
+#define EGL_LOSE_CONTEXT_ON_RESET_KHR     0x31BF
+#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR  0x00000001
+#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR 0x00000002
+#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR 0x00000004
+#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR 0x00000001
+#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR 0x00000002
+#define EGL_OPENGL_ES3_BIT_KHR            0x00000040
+#endif /* EGL_KHR_create_context */
 
index 8021bd1..42276a4 100644 (file)
 #define _COREGL_EXT_SYMBOL_ALIAS_NOT_DEFINED
 #define _COREGL_EXT_SYMBOL_ALIAS(FUNC_NAME, ALIAS_NAME)
 #endif
+#ifndef _COREGL_FASTPATH_SUPPORTED_EXTENSION
+#define _COREGL_FASTPATH_SUPPORTED_EXTENSION_NOT_DEFINED
+#define _COREGL_FASTPATH_SUPPORTED_EXTENSION(NAME, MINVER, MAXVER)
+#endif
 #ifndef _COREGL_EXT_SYMBOL_FASTPATH_PASS
 #define _COREGL_EXT_SYMBOL_FASTPATH_PASS_NOT_DEFINED
 #define _COREGL_EXT_SYMBOL_FASTPATH_PASS(FUNC_NAME)
@@ -278,15 +282,21 @@ _COREGL_SYMBOL(GL_FALSE, void, glGetInternalformativ, (GLenum target, GLenum int
 
 /* Extensions */
 
-// OES_EGL_image
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_EGL_image", 1.1, -1)
 _COREGL_EXT_SYMBOL(GL_TRUE, void, glEGLImageTargetTexture2DOES, (GLenum target, GLeglImageOES image))
 _COREGL_EXT_SYMBOL(GL_TRUE, void, glEGLImageTargetRenderbufferStorageOES, (GLenum target, GLeglImageOES image))
+//_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_EGL_image_external", 1.1, -1)
+
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_get_program_binary", 2.0, -1)
+_COREGL_EXT_SYMBOL_ALIAS(glGetProgramBinaryOES, glGetProgramBinary) // Replaced to ES 3.0 API
+_COREGL_EXT_SYMBOL_ALIAS(glProgramBinaryOES, glProgramBinary) // Replaced to ES 3.0 API
 
-// OES_get_program_binary
-_COREGL_EXT_SYMBOL(GL_TRUE, void, glGetProgramBinaryOES, (GLuint program, GLsizei bufsize, GLsizei *length, GLenum *binaryFormat, void *binary))
-_COREGL_EXT_SYMBOL(GL_TRUE, void, glProgramBinaryOES, (GLuint program, GLenum binaryFormat, const void *binary, GLint length))
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_AMD_program_binary_Z400", 2.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_IMG_program_binary ", 2.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_ARM_mali_program_binary", 2.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_ANGLE_program_binary", 2.0, -1)
 
-// EXT_separate_shader_objects
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_EXT_separate_shader_objects", 2.0, -1)
 _COREGL_EXT_SYMBOL(GL_TRUE, void, glUseProgramStagesEXT, (GLuint pipeline, GLbitfield stages, GLuint program))
 _COREGL_EXT_SYMBOL(GL_TRUE, void, glActiveShaderProgramEXT, (GLuint pipeline, GLuint program))
 _COREGL_EXT_SYMBOL(GL_TRUE, GLuint, glCreateShaderProgramvEXT, (GLenum type, GLsizei count, const char **strings))
@@ -318,14 +328,14 @@ _COREGL_EXT_SYMBOL(GL_TRUE, void, glProgramUniformMatrix4fvEXT, (GLuint program,
 _COREGL_EXT_SYMBOL(GL_TRUE, void, glValidateProgramPipelineEXT, (GLuint pipeline))
 _COREGL_EXT_SYMBOL(GL_TRUE, void, glGetProgramPipelineInfoLogEXT, (GLuint pipeline, GLsizei bufSize, GLsizei *length, char *infoLog))
 
-// EXT_multisampled_render_to_texture
-_COREGL_EXT_SYMBOL(GL_TRUE, void, glRenderbufferStorageMultisampleEXT, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height))
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_EXT_multisampled_render_to_texture", 2.0, -1)
+_COREGL_EXT_SYMBOL_ALIAS(glRenderbufferStorageMultisampleEXT, glRenderbufferStorageMultisample) // Replaced to ES 3.0 API
 _COREGL_EXT_SYMBOL(GL_TRUE, void, glFramebufferTexture2DMultisampleEXT, (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples))
 
-// EXT_discard_framebuffer
-_COREGL_EXT_SYMBOL(GL_TRUE, void, glDiscardFramebufferEXT, (GLenum target, GLsizei numAttachments, const GLenum *attachments))
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_EXT_discard_framebuffer", 1.0, -1)
+_COREGL_EXT_SYMBOL_ALIAS(glDiscardFramebufferEXT, glInvalidateFramebuffer) // Replaced to ES 3.0 API
 
-// OES_texture_3d
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_texture_3D", 2.0, -1)
 _COREGL_EXT_SYMBOL_ALIAS(glTexImage3DOES, glTexImage3D) // Replaced to ES 3.0 API
 _COREGL_EXT_SYMBOL_ALIAS(glTexSubImage3DOES, glTexSubImage3D) // Replaced to ES 3.0 API
 _COREGL_EXT_SYMBOL_ALIAS(glCopyTexSubImage3DOES, glCopyTexSubImage3D) // Replaced to ES 3.0 API
@@ -335,8 +345,71 @@ _COREGL_EXT_SYMBOL(GL_TRUE, void, glFramebufferTexture3DOES, (GLenum target, GLe
 
 
 /* Fastpath Verified extensions */
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_IMG_shader_binary", -1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_ARM_mali_shader_binary", -1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_VIV_shader_binary", -1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_DMP_shader_binary", -1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_FJ_shader_binary_GCCSO", -1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_ARM_mali_shader_binary", -1, -1)
+
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_compressed_ETC1_RGB8_texture", -1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_compressed_paletted_texture", -1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_AMD_compressed_3DC_texture", -1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_AMD_compressed_ATC_texture", -1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_EXT_texture_compression_dxt1", -1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_IMG_texture_compression_pvrtc", -1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_NV_texture_compression_s3tc_update", -1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_ANGLE_texture_compression_dxt3", -1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_ANGLE_texture_compression_dxt5", -1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_KHR_texture_compression_astc_ldr", -1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_NV_texture_compression_s3tc", -1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_NV_texture_compression_latc", -1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_IMG_texture_compression_pvrtc2", -1, -1)
+
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_EXT_texture_type_2_10_10_10_REV", -1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_EXT_texture_format_BGRA8888", -1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_APPLE_texture_format_BGRA8888", 1.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_texture_half_float_linear", 2.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_texture_float_linear", 2.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_texture_half_float", 2.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_texture_float", 2.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_texture_npot", 1.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_IMG_texture_env_enhanced_fixed_function", 1.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_APPLE_texture_max_level", 1.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_NV_texture_npot_2D_mipmap", 2.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_ANGLE_texture_usage", 2.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_EXT_texture_rg", 2.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_EXT_sRGB", 1.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_EXT_texture_sRGB_decode", 2.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_EXT_texture_filter_anisotropic", 1.2, -1)
+
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_standard_derivatives", 2.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_depth24", 1.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_ARM_rgba8", 1.1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_depth_texture", 2.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_packed_depth_stencil", 1.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_EXT_texture_format_BGRA8888", 1.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_EXT_blend_minmax", -1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_EGL_sync", -1, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_rgb8_rgba8", 1.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_EXT_shader_texture_lod", 2.0, -1)
+
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_element_index_uint", 1.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_fbo_render_mipmap", 1.0, -1)
+
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_depth_texture_cube_map", 2.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_vertex_half_float", 2.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_vertex_type_10_10_10_2", 2.0, -1)
+
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_EXT_color_buffer_half_float", 2.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_EXT_color_buffer_float", 3.0, -1)
+
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_element_index_uint", 1.0, -1)
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_element_index_uint", 1.0, -1)
+
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_EXT_debug_marker", 1.1, -1)
 
-// AMD_performance_monitor
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_AMD_performance_monitor", -1, -1)
 _COREGL_EXT_SYMBOL_FASTPATH_PASS(glGetPerfMonitorGroupsAMD)
 _COREGL_EXT_SYMBOL_FASTPATH_PASS(glGetPerfMonitorCountersAMD)
 _COREGL_EXT_SYMBOL_FASTPATH_PASS(glGetPerfMonitorGroupStringAMD)
@@ -349,7 +422,7 @@ _COREGL_EXT_SYMBOL_FASTPATH_PASS(glBeginPerfMonitorAMD)
 _COREGL_EXT_SYMBOL_FASTPATH_PASS(glEndPerfMonitorAMD)
 _COREGL_EXT_SYMBOL_FASTPATH_PASS(glGetPerfMonitorCounterDataAMD)
 
-// NV_fence
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_NV_fence", -1, -1)
 _COREGL_EXT_SYMBOL_FASTPATH_PASS(glSetFenceNV)
 _COREGL_EXT_SYMBOL_FASTPATH_PASS(glTestFenceNV)
 _COREGL_EXT_SYMBOL_FASTPATH_PASS(glFinishFenceNV)
@@ -358,23 +431,58 @@ _COREGL_EXT_SYMBOL_FASTPATH_PASS(glDeleteFencesNV)
 _COREGL_EXT_SYMBOL_FASTPATH_PASS(glIsFenceNV)
 _COREGL_EXT_SYMBOL_FASTPATH_PASS(glGetFenceivNV)
 
-// QCOM_driver_control
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_QCOM_driver_control", 1.0, -1)
 _COREGL_EXT_SYMBOL_FASTPATH_PASS(glGetDriverControlsQCOM)
 _COREGL_EXT_SYMBOL_FASTPATH_PASS(glGetDriverControlStringQCOM)
 _COREGL_EXT_SYMBOL_FASTPATH_PASS(glEnableDriverControlQCOM)
 _COREGL_EXT_SYMBOL_FASTPATH_PASS(glDisableDriverControlQCOM)
 
-// QCOM_tiled_rendering
+_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_QCOM_tiled_rendering", 1.0, -1)
 _COREGL_EXT_SYMBOL_FASTPATH_PASS(glStartTilingQCOM)
 _COREGL_EXT_SYMBOL_FASTPATH_PASS(glEndTilingQCOM)
 
 
 /* Fastpath Blocked extensions */
-_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glMapBufferRange)
-_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glUnmapBuffer)
-_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glGetBufferPointerv)
+
+//_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_EXT_robustness", 1.1, -1)
+_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glGetGraphicsResetStatusEXT)
+_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glReadnPixelsEXT)
+_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glGetnUniformfvEXT)
+_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glGetnUniformivEXT)
+
+//_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_EXT_debug_label", 1.1, -1)
+_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glLabelObjectEXT)
+_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glGetObjectLabelEXT)
+
+//_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_EXT_disjoint_timer_query", 2.0, -1)
+_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glGenQueriesEXT)
+_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glDeleteQueriesEXT)
+_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glIsQueryEXT)
+_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glBeginQueryEXT)
+_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glEndQueryEXT)
+_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glQueryCounterEXT)
+_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glGetQueryivEXT)
+_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glGetQueryObjectivEXT)
+_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glGetQueryObjectuivEXT)
+_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glGetQueryObjecti64vEXT)
+_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glGetQueryObjectui64vEXT)
+
+//_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_OES_vertex_array_object", 1.1, -1)
+_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glBindVertexArrayOES)
+_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glDeleteVertexArraysOES)
+_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glGenVertexArraysOES)
+_COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glIsVertexArrayOES)
+
+//_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_QCOM_alpha_test", 2.0, -1)
+
+//_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_QCOM_binning_control", 1.0, -1)
+
+//_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_QCOM_perfmon_global_mode", -1, -1)
+
+//_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_QCOM_writeonly_rendering", 1.0, -1)
 
 // QCOM_extended_get
+//_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_QCOM_extended_get", 1.0, -1)
 _COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glExtGetTexturesQCOM)
 _COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glExtGetBuffersQCOM)
 _COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glExtGetRenderbuffersQCOM)
@@ -385,15 +493,18 @@ _COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glExtGetTexSubImageQCOM)
 _COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glExtGetBufferPointervQCOM)
 
 // QCOM_extended_get2
+//_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_QCOM_extended_get2", 1.0, -1)
 _COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glExtGetShadersQCOM)
 _COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glExtGetProgramsQCOM)
 _COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glExtIsProgramBinaryQCOM)
 _COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glExtGetProgramBinarySourceQCOM)
 
 // ANGLE_framebuffer_blit
+//_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_ANGLE_framebuffer_blit", 1.0, -1)
 _COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glBlitFramebufferANGLE)
 
 // ANGLE_framebuffer_multisample
+//_COREGL_FASTPATH_SUPPORTED_EXTENSION("GL_ANGLE_framebuffer_multisample", 1.0, -1)
 _COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glRenderbufferStorageMultisampleANGLE)
 
 
@@ -412,6 +523,11 @@ _COREGL_EXT_SYMBOL_FASTPATH_BLOCK(glRenderbufferStorageMultisampleANGLE)
 #undef _COREGL_EXT_SYMBOL_ALIAS
 #endif
 
+#ifdef _COREGL_FASTPATH_SUPPORTED_EXTENSION_NOT_DEFINED
+#undef _COREGL_FASTPATH_SUPPORTED_EXTENSION_NOT_DEFINED
+#undef _COREGL_FASTPATH_SUPPORTED_EXTENSION
+#endif
+
 #ifdef _COREGL_EXT_SYMBOL_FASTPATH_PASS_NOT_DEFINED
 #undef _COREGL_EXT_SYMBOL_FASTPATH_PASS_NOT_DEFINED
 #undef _COREGL_EXT_SYMBOL_FASTPATH_PASS
index 99f8507..0d587c4 100644 (file)
@@ -191,6 +191,7 @@ fastpath_apply_overrides_gl(int enable)
        if (debug_nofp != 1)
        {
                COREGL_OVERRIDE(fastpath_, glGetError);
+               COREGL_OVERRIDE(fastpath_, glGetString);
 
                COREGL_OVERRIDE(fastpath_, glGetIntegerv);
                COREGL_OVERRIDE(fastpath_, glGetFloatv);
@@ -290,8 +291,9 @@ fastpath_apply_overrides_gl(int enable)
                COREGL_OVERRIDE(fastpath_, glViewport);
 
                COREGL_OVERRIDE(fastpath_, glFramebufferTexture2DMultisampleEXT);
-               COREGL_OVERRIDE(fastpath_, glGetProgramBinaryOES);
-               COREGL_OVERRIDE(fastpath_, glProgramBinaryOES);
+               COREGL_OVERRIDE(fastpath_, glFramebufferTextureLayer);
+               COREGL_OVERRIDE(fastpath_, glGetProgramBinary);
+               COREGL_OVERRIDE(fastpath_, glProgramBinary);
                COREGL_OVERRIDE(fastpath_, glProgramParameteriEXT);
                COREGL_OVERRIDE(fastpath_, glEGLImageTargetTexture2DOES);
                COREGL_OVERRIDE(fastpath_, glFramebufferTexture3DOES);
index 91616b0..04b4fe1 100644 (file)
@@ -178,6 +178,8 @@ typedef struct _GLGlueContext
        int                                                     ref_count;
        int                                                     is_destroyed;
 
+       double                  glversion;
+
        int                                                     used_count;
 
        GLDisplay              *rdpy;
index 8408c16..7421fc5 100644 (file)
@@ -252,7 +252,11 @@ finish:
 
 typedef struct
 {
-       EGLint                        context_client_version;
+       EGLint                        context_major_version;
+       EGLint                        context_minor_version;
+       EGLint                        context_flags;
+       EGLint                        context_opengl_profile_mask;
+       EGLint                        opengl_reset_notification_strategy;
 } EGL_packed_attrib_list;
 
 typedef struct
@@ -279,7 +283,11 @@ _pack_egl_context_option(EGL_packed_option *pack_data, EGLDisplay dpy, EGLConfig
        pack_data->force_unique = force_unique;
 
        // Default context attributes
-       pack_data->attrib_list.context_client_version = EGL_DONT_CARE;
+       pack_data->attrib_list.context_major_version = EGL_DONT_CARE;
+       pack_data->attrib_list.context_minor_version = EGL_DONT_CARE;
+       pack_data->attrib_list.context_flags = EGL_DONT_CARE;
+       pack_data->attrib_list.context_opengl_profile_mask = EGL_DONT_CARE;
+       pack_data->attrib_list.opengl_reset_notification_strategy = EGL_DONT_CARE;
 
        // Apply specified attributes
        EGLint *attrib = (EGLint *)attrib_list;
@@ -287,8 +295,20 @@ _pack_egl_context_option(EGL_packed_option *pack_data, EGLDisplay dpy, EGLConfig
        {
                switch(attrib[0])
                {
-                       case EGL_CONTEXT_CLIENT_VERSION:
-                               pack_data->attrib_list.context_client_version = attrib[1];
+                       case EGL_CONTEXT_MAJOR_VERSION_KHR: // EGL_CONTEXT_CLIENT_VERSION
+                               pack_data->attrib_list.context_major_version = attrib[1];
+                               break;
+                       case EGL_CONTEXT_MINOR_VERSION_KHR:
+                               pack_data->attrib_list.context_minor_version = attrib[1];
+                               break;
+                       case EGL_CONTEXT_FLAGS_KHR:
+                               pack_data->attrib_list.context_flags = attrib[1];
+                               break;
+                       case EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR:
+                               pack_data->attrib_list.context_opengl_profile_mask = attrib[1];
+                               break;
+                       case EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR:
+                               pack_data->attrib_list.opengl_reset_notification_strategy = attrib[1];
                                break;
                        default:
                                COREGL_WRN("\E[40;31;1mInvalid context attribute.\E[0m\n");
@@ -298,8 +318,7 @@ _pack_egl_context_option(EGL_packed_option *pack_data, EGLDisplay dpy, EGLConfig
        }
 
        // Eject condition for context version
-       // Current : Support GLES 2.0 only
-       if (pack_data->attrib_list.context_client_version != 2)
+       if (pack_data->attrib_list.context_major_version != 2)
        {
                pack_data->force_unique = 1;
        }
@@ -326,11 +345,39 @@ _unpack_egl_context_option(EGL_packed_option *pack_data, EGLDisplay *dpy, EGLCon
 
                memset(attrib_list, 0x00, sizeof(int) * attrib_list_size);
 
-               if (pack_data->attrib_list.context_client_version != EGL_DONT_CARE)
+               if (pack_data->attrib_list.context_major_version != EGL_DONT_CARE)
+               {
+                       AST(attrib_list_index + 2 < attrib_list_size);
+                       attrib_list[attrib_list_index] = EGL_CONTEXT_MAJOR_VERSION_KHR;
+                       attrib_list[attrib_list_index + 1] = pack_data->attrib_list.context_major_version;
+                       attrib_list_index += 2;
+               }
+               if (pack_data->attrib_list.context_minor_version != EGL_DONT_CARE)
+               {
+                       AST(attrib_list_index + 2 < attrib_list_size);
+                       attrib_list[attrib_list_index] = EGL_CONTEXT_MINOR_VERSION_KHR;
+                       attrib_list[attrib_list_index + 1] = pack_data->attrib_list.context_minor_version;
+                       attrib_list_index += 2;
+               }
+               if (pack_data->attrib_list.context_flags != EGL_DONT_CARE)
+               {
+                       AST(attrib_list_index + 2 < attrib_list_size);
+                       attrib_list[attrib_list_index] = EGL_CONTEXT_FLAGS_KHR;
+                       attrib_list[attrib_list_index + 1] = pack_data->attrib_list.context_flags;
+                       attrib_list_index += 2;
+               }
+               if (pack_data->attrib_list.context_opengl_profile_mask != EGL_DONT_CARE)
+               {
+                       AST(attrib_list_index + 2 < attrib_list_size);
+                       attrib_list[attrib_list_index] = EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR;
+                       attrib_list[attrib_list_index + 1] = pack_data->attrib_list.context_opengl_profile_mask;
+                       attrib_list_index += 2;
+               }
+               if (pack_data->attrib_list.opengl_reset_notification_strategy != EGL_DONT_CARE)
                {
                        AST(attrib_list_index + 2 < attrib_list_size);
-                       attrib_list[attrib_list_index] = EGL_CONTEXT_CLIENT_VERSION;
-                       attrib_list[attrib_list_index + 1] = pack_data->attrib_list.context_client_version;
+                       attrib_list[attrib_list_index] = EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR;
+                       attrib_list[attrib_list_index + 1] = pack_data->attrib_list.opengl_reset_notification_strategy;
                        attrib_list_index += 2;
                }
 
@@ -773,6 +820,8 @@ fastpath_eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_con
                if (sostate_new == NULL)
                {
                        COREGL_ERR("\E[40;31;1mError creating a new GLGlueContext(Memory full 4)\E[0m\n");
+                       free(gctx);
+                       gctx = NULL;
                        goto finish;
                }
                fastpath_sostate_init(sostate_new);
@@ -794,6 +843,8 @@ fastpath_eglCreateContext(EGLDisplay dpy, EGLConfig config, EGLContext share_con
                if (gctx_list_new == NULL)
                {
                        COREGL_ERR("\E[40;31;1mError creating a new GlGlueContext(Memory full 5)\E[0m\n");
+                       free(gctx);
+                       gctx = NULL;
                        goto finish;
                }
 
index d6feb1d..018face 100644 (file)
@@ -257,9 +257,10 @@ finish:
 const GLubyte *
 fastpath_glGetString(GLenum name)
 {
-       const GLubyte *ret = NULL;
-       static const GLubyte *string_gles20 = "OpenGL ES 2.0";
-       static GLubyte string_extensions[2048] = { 0 };
+       const char *ret = NULL;
+       int i = _COREGL_INT_INIT_VALUE;
+       static const char *string_gles20 = "OpenGL ES 2.0";
+       static char string_tmpbuf[2048], string_extensions[2048] = { 0x00 };
 
        DEFINE_FASTPAH_GL_FUNC();
        _COREGL_FASTPATH_FUNC_BEGIN();
@@ -268,9 +269,9 @@ fastpath_glGetString(GLenum name)
        switch (name)
        {
                case GL_VERSION:
-                       IF_GL_SUCCESS(ret = _orig_fastpath_glGetString(name))
+                       IF_GL_SUCCESS(ret = (const char *)_orig_fastpath_glGetString(name))
                        {
-                               if (!strcmp(ret, "OpenGL ES 2.0"))
+                               if (strncmp(ret, "OpenGL ES 2.0", 13))
                                {
                                        COREGL_WRN("\E[40;31;1mFastpath can't support %s (Fixed to %s)\E[0m\n", ret, string_gles20);
                                        ret = string_gles20;
@@ -278,26 +279,63 @@ fastpath_glGetString(GLenum name)
                        }
                        break;
                case GL_EXTENSIONS:
-                       IF_GL_SUCCESS(ret = _orig_fastpath_glGetString(name))
+                       IF_GL_SUCCESS(ret = (const char *)_orig_fastpath_glGetString(name))
                        {
-                               if (string_extensions[0] == NULL)
+
+                               if (string_extensions[0] == 0x00)
                                {
-                                       char tmp[64] = { 0 }, *tmpp = NULL;
-                                       strncpy(tmp, get_env_setting("COREGL_TRACE_SURFACE_FILTER_PERIOD"), 64);
-                                       for (tmpp = &tmp[0]; ; tmpp++)
+                                       double GLver = 0.0;
+                                       const char *vret;
+                                       char vret_tmp[80] = { 0 };
+                                       IF_GL_SUCCESS(vret = (const char *)_orig_fastpath_glGetString(GL_VERSION))
+                                       {
+                                               if (!strncmp(vret, "OpenGL ES", 9))
+                                               {
+                                                       int stp = 10;
+                                                       if (vret[9] == '-') stp = 13;
+
+                                                       for (i = stp; ; i++)
+                                                       {
+                                                               if (vret[i] == ' ' || vret[i] == 0x00 || i >= 80)
+                                                               {
+                                                                       strncpy(vret_tmp, &vret[stp], i - stp);
+                                                                       vret_tmp[i - stp] = 0x00;
+                                                                       break;
+                                                               }
+                                                       }
+                                                       if (vret_tmp[0] != 0x00)
+                                                               GLver = atof(vret_tmp);
+                                               }
+                                       }
+
+                                       strcpy(string_tmpbuf, ret);
+                                       char *fstr = &string_tmpbuf[0], *estr = NULL;
+                                       for (estr = fstr; ; estr++)
                                        {
-                                               if (*tmpp == 0x00) break;
-                                               if (*tmpp == '~')
+                                               if (*estr == 0x00) break;
+                                               if (*estr == ' ')
                                                {
-                                                       *tmpp = 0x00;
-                                                       trace_surface_filter_period_begin = atoi(tmp);
-                                                       trace_surface_filter_period_end = atoi(tmpp + 1);
-                                                       break;
+                                                       *estr = 0x00;
+
+#define _COREGL_SYMBOL(IS_EXTENSION, RET_TYPE, FUNC_NAME, PARAM_LIST)
+#define _COREGL_FASTPATH_SUPPORTED_EXTENSION(NAME, MINVER, MAXVER) \
+                                                       if (!strcmp(fstr, NAME) && (MINVER < 0 || GLver >= MINVER) && (MAXVER < 0 || GLver <= MAXVER)) \
+                                                       { \
+                                                               strcat(string_extensions, fstr); \
+                                                               strcat(string_extensions, " "); \
+                                                       }
+
+# include "../../headers/sym_gl.h"
+
+#undef _COREGL_FASTPATH_SUPPORTED_EXTENSION
+#undef _COREGL_SYMBOL
+
+                                                       fstr = estr + 1;
                                                }
                                        }
                                }
-                               ret = string_extensions;
                        }
+                       ret = string_extensions;
                        break;
        }
 
@@ -305,7 +343,7 @@ fastpath_glGetString(GLenum name)
 
 finish:
        _COREGL_FASTPATH_FUNC_END();
-       return ret;
+       return (const GLubyte *)ret;
 }
 
 ////////////////////////////////////////////////////////////////////////
@@ -473,6 +511,29 @@ finish:
 }
 
 void
+fastpath_glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
+{
+       GLuint real_obj;
+
+       DEFINE_FASTPAH_GL_FUNC();
+       _COREGL_FASTPATH_FUNC_BEGIN();
+       INIT_FASTPATH_GL_FUNC();
+
+       if (GET_REAL_OBJ(GL_OBJECT_TYPE_TEXTURE, texture, &real_obj) != 1)
+       {
+               _set_gl_error(GL_OUT_OF_MEMORY);
+               goto finish;
+       }
+
+       _orig_fastpath_glFramebufferTextureLayer(target, attachment, real_obj, level, layer);
+
+       goto finish;
+
+finish:
+       _COREGL_FASTPATH_FUNC_END();
+}
+
+void
 fastpath_glFramebufferTexture2DMultisampleEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
 {
        GLuint real_obj;
@@ -1852,7 +1913,7 @@ finish:
 }
 
 void
-fastpath_glGetProgramBinaryOES(GLuint program, GLsizei bufsize, GLsizei* length, GLenum* binaryFormat, void* binary)
+fastpath_glGetProgramBinary(GLuint program, GLsizei bufsize, GLsizei* length, GLenum* binaryFormat, void* binary)
 {
        GLuint real_obj;
 
@@ -1866,7 +1927,7 @@ fastpath_glGetProgramBinaryOES(GLuint program, GLsizei bufsize, GLsizei* length,
                goto finish;
        }
 
-       _orig_fastpath_glGetProgramBinaryOES(real_obj, bufsize, length, binaryFormat, binary);
+       _orig_fastpath_glGetProgramBinary(real_obj, bufsize, length, binaryFormat, binary);
 
        goto finish;
 
@@ -1875,7 +1936,7 @@ finish:
 }
 
 void
-fastpath_glProgramBinaryOES(GLuint program, GLenum binaryFormat, const void* binary, GLint length)
+fastpath_glProgramBinary(GLuint program, GLenum binaryFormat, const void* binary, GLint length)
 {
        GLuint real_obj;
 
@@ -1889,7 +1950,7 @@ fastpath_glProgramBinaryOES(GLuint program, GLenum binaryFormat, const void* bin
                goto finish;
        }
 
-       _orig_fastpath_glProgramBinaryOES(real_obj, binaryFormat, binary, length);
+       _orig_fastpath_glProgramBinary(real_obj, binaryFormat, binary, length);
 
        goto finish;
 
index 550d2d4..bb83d94 100644 (file)
@@ -2629,14 +2629,102 @@ tracepath_glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenu
 
 finish:
        _COREGL_TRACEPATH_FUNC_END();
+#ifdef COREGL_TRACEPATH_TRACE_MEMUSE_INFO
+       if (trace_mem_flag == 1)
+       {
+               MY_MODULE_TSTATE *tstate = NULL;
+
+               GET_MY_TSTATE(tstate, get_current_thread_state());
+               AST(tstate != NULL);
+               if (tstate->ctx != NULL)
+               {
+                       int objidx = _COREGL_INT_INIT_VALUE;
+                       _orig_tracepath_glGetIntegerv(GL_RENDERBUFFER_BINDING, &objidx);
+                       AST(objidx != _COREGL_INT_INIT_VALUE);
+
+                       // Detect byte per pixel
+                       int bpp = 0;
+                       char formatment[80];
+                       switch (internalformat)
+                       {
+                               case GL_ALPHA: sprintf(formatment, "ALPHA"); bpp = 1; break;
+                               case GL_LUMINANCE: sprintf(formatment, "LUMINANCE"); bpp = 1; break;
+                               case GL_LUMINANCE_ALPHA: sprintf(formatment, "LUMINANCE_ALPHA"); bpp = 1; break;
+                               case GL_RGB: sprintf(formatment, "RGB"); bpp = 2; break;
+                               case GL_RGBA: sprintf(formatment, "RGBA"); bpp = 4; break;
+                               case 0x80E1: sprintf(formatment, "BGRA_EXT"); bpp = 4; break;
+                               case 0x84F9: sprintf(formatment, "DEPTH_STENCIL_OES"); bpp = 4; break;
+                               case GL_DEPTH_COMPONENT : sprintf(formatment, "DEPTH_COMPONENT"); bpp = 1; break;
+                               case 0x81A5: sprintf(formatment, "DEPTH_COMPONENT16_ARB"); bpp = 2; break;
+                               case 0x81A6: sprintf(formatment, "DEPTH_COMPONENT24_ARB"); bpp = 3; break;
+                               case 0x81A7: sprintf(formatment, "DEPTH_COMPONENT32_ARB"); bpp = 4; break;
+                               case 0x8D46 : sprintf(formatment, "STENCIL_INDEX1_OES"); bpp = 1; break;
+                               case 0x8D47 : sprintf(formatment, "STENCIL_INDEX4_OES"); bpp = 1; break;
+                               case 0x8D48 : sprintf(formatment, "STENCIL_INDEX8_OES"); bpp = 1; break;
+                               default: sprintf(formatment, "0x%X", internalformat); bpp = 0; break;
+                       }
+
+                       _add_glbuf_object(tstate->ctx->sostate->glbuf_rb, objidx, "Renderbuffer", width, height, bpp, formatment);
+               }
+       }
+#endif // COREGL_TRACEPATH_TRACE_MEMUSE_INFO
+#ifdef COREGL_TRACEPATH_TRACE_SURFACE_INFO
+       if (trace_surface_flag == 1)
+       {
+               MY_MODULE_TSTATE *tstate = NULL;
+
+               GET_MY_TSTATE(tstate, get_current_thread_state());
+               AST(tstate != NULL);
+               if (tstate->ctx != NULL)
+               {
+                       int objidx = _COREGL_INT_INIT_VALUE;
+                       _orig_tracepath_glGetIntegerv(GL_RENDERBUFFER_BINDING, &objidx);
+                       AST(objidx != _COREGL_INT_INIT_VALUE);
+
+                       {
+                               int channel = 0;
+                               switch (internalformat)
+                               {
+                                       case GL_ALPHA:
+                                       case GL_LUMINANCE:
+                                       case GL_DEPTH_COMPONENT :
+                                       case 0x81A5:
+                                       case 0x81A6:
+                                       case 0x81A7:
+                                       case 0x8D46 :
+                                       case 0x8D47 :
+                                       case 0x8D48 : channel = 1; break;
+                                       case GL_LUMINANCE_ALPHA:
+                                       case 0x84F9: channel = 2; break;
+                                       case GL_RGB: channel = 3; break;
+                                       case GL_RGBA:
+                                       case 0x80E1: channel = 4; break;
+                               }
+
+                               char name[256];
+                               sprintf(name, "FBORB_0x%X", objidx);
+                               tracepath_surface_trace_add(name, tstate->ctx->dpy, tstate->ctx->handle, tstate->surf_draw, -1, 0, objidx, width, height, channel, NULL);
+                       }
+               }
+       }
+#endif // COREGL_TRACEPATH_TRACE_SURFACE_INFO
 }
 
 void
 tracepath_glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
 {
        _COREGL_TRACEPATH_FUNC_BEGIN();
+
+#ifdef COREGL_TRACEPATH_TRACE_SURFACE_INFO
+       tracepath_fbdump_update(0);
+#endif // COREGL_TRACEPATH_TRACE_SURFACE_INFO
+
        _orig_tracepath_glFramebufferTextureLayer(target, attachment, texture, level, layer);
 
+#ifdef COREGL_TRACEPATH_TRACE_SURFACE_INFO
+       tracepath_fbdump_update(1);
+#endif // COREGL_TRACEPATH_TRACE_SURFACE_INFO
+
        goto finish;
 
 finish:
@@ -3668,30 +3756,6 @@ finish:
 }
 
 void
-tracepath_glGetProgramBinaryOES(GLuint program, GLsizei bufsize, GLsizei* length, GLenum* binaryFormat, void* binary)
-{
-       _COREGL_TRACEPATH_FUNC_BEGIN();
-       _orig_tracepath_glGetProgramBinaryOES(program, bufsize, length, binaryFormat, binary);
-
-       goto finish;
-
-finish:
-       _COREGL_TRACEPATH_FUNC_END();
-}
-
-void
-tracepath_glProgramBinaryOES(GLuint program, GLenum binaryFormat, const void* binary, GLint length)
-{
-       _COREGL_TRACEPATH_FUNC_BEGIN();
-       _orig_tracepath_glProgramBinaryOES(program, binaryFormat, binary, length);
-
-       goto finish;
-
-finish:
-       _COREGL_TRACEPATH_FUNC_END();
-}
-
-void
 tracepath_glUseProgramStagesEXT(GLuint pipeline, GLbitfield stages, GLuint program)
 {
        _COREGL_TRACEPATH_FUNC_BEGIN();
@@ -4059,97 +4123,6 @@ finish:
 
 
 void
-tracepath_glRenderbufferStorageMultisampleEXT(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
-{
-       _COREGL_TRACEPATH_FUNC_BEGIN();
-       _orig_tracepath_glRenderbufferStorageMultisampleEXT(target, samples, internalformat, width, height);
-
-       goto finish;
-
-finish:
-       _COREGL_TRACEPATH_FUNC_END();
-#ifdef COREGL_TRACEPATH_TRACE_MEMUSE_INFO
-       if (trace_mem_flag == 1)
-       {
-               MY_MODULE_TSTATE *tstate = NULL;
-
-               GET_MY_TSTATE(tstate, get_current_thread_state());
-               AST(tstate != NULL);
-               if (tstate->ctx != NULL)
-               {
-                       int objidx = _COREGL_INT_INIT_VALUE;
-                       _orig_tracepath_glGetIntegerv(GL_RENDERBUFFER_BINDING, &objidx);
-                       AST(objidx != _COREGL_INT_INIT_VALUE);
-
-                       // Detect byte per pixel
-                       int bpp = 0;
-                       char formatment[80];
-                       switch (internalformat)
-                       {
-                               case GL_ALPHA: sprintf(formatment, "ALPHA"); bpp = 1; break;
-                               case GL_LUMINANCE: sprintf(formatment, "LUMINANCE"); bpp = 1; break;
-                               case GL_LUMINANCE_ALPHA: sprintf(formatment, "LUMINANCE_ALPHA"); bpp = 1; break;
-                               case GL_RGB: sprintf(formatment, "RGB"); bpp = 2; break;
-                               case GL_RGBA: sprintf(formatment, "RGBA"); bpp = 4; break;
-                               case 0x80E1: sprintf(formatment, "BGRA_EXT"); bpp = 4; break;
-                               case 0x84F9: sprintf(formatment, "DEPTH_STENCIL_OES"); bpp = 4; break;
-                               case GL_DEPTH_COMPONENT : sprintf(formatment, "DEPTH_COMPONENT"); bpp = 1; break;
-                               case 0x81A5: sprintf(formatment, "DEPTH_COMPONENT16_ARB"); bpp = 2; break;
-                               case 0x81A6: sprintf(formatment, "DEPTH_COMPONENT24_ARB"); bpp = 3; break;
-                               case 0x81A7: sprintf(formatment, "DEPTH_COMPONENT32_ARB"); bpp = 4; break;
-                               case 0x8D46 : sprintf(formatment, "STENCIL_INDEX1_OES"); bpp = 1; break;
-                               case 0x8D47 : sprintf(formatment, "STENCIL_INDEX4_OES"); bpp = 1; break;
-                               case 0x8D48 : sprintf(formatment, "STENCIL_INDEX8_OES"); bpp = 1; break;
-                               default: sprintf(formatment, "0x%X", internalformat); bpp = 0; break;
-                       }
-
-                       _add_glbuf_object(tstate->ctx->sostate->glbuf_rb, objidx, "Renderbuffer", width, height, bpp, formatment);
-               }
-       }
-#endif // COREGL_TRACEPATH_TRACE_MEMUSE_INFO
-#ifdef COREGL_TRACEPATH_TRACE_SURFACE_INFO
-       if (trace_surface_flag == 1)
-       {
-               MY_MODULE_TSTATE *tstate = NULL;
-
-               GET_MY_TSTATE(tstate, get_current_thread_state());
-               AST(tstate != NULL);
-               if (tstate->ctx != NULL)
-               {
-                       int objidx = _COREGL_INT_INIT_VALUE;
-                       _orig_tracepath_glGetIntegerv(GL_RENDERBUFFER_BINDING, &objidx);
-                       AST(objidx != _COREGL_INT_INIT_VALUE);
-
-                       {
-                               int channel = 0;
-                               switch (internalformat)
-                               {
-                                       case GL_ALPHA:
-                                       case GL_LUMINANCE:
-                                       case GL_DEPTH_COMPONENT :
-                                       case 0x81A5:
-                                       case 0x81A6:
-                                       case 0x81A7:
-                                       case 0x8D46 :
-                                       case 0x8D47 :
-                                       case 0x8D48 : channel = 1; break;
-                                       case GL_LUMINANCE_ALPHA:
-                                       case 0x84F9: channel = 2; break;
-                                       case GL_RGB: channel = 3; break;
-                                       case GL_RGBA:
-                                       case 0x80E1: channel = 4; break;
-                               }
-
-                               char name[256];
-                               sprintf(name, "FBORB_0x%X", objidx);
-                               tracepath_surface_trace_add(name, tstate->ctx->dpy, tstate->ctx->handle, tstate->surf_draw, -1, 0, objidx, width, height, channel, NULL);
-                       }
-               }
-       }
-#endif // COREGL_TRACEPATH_TRACE_SURFACE_INFO
-}
-
-void
 tracepath_glFramebufferTexture2DMultisampleEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples)
 {
        _COREGL_TRACEPATH_FUNC_BEGIN();
@@ -4171,17 +4144,6 @@ finish:
 }
 
 void
-tracepath_glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenum *attachments)
-{
-       _COREGL_TRACEPATH_FUNC_BEGIN();
-       _orig_tracepath_glDiscardFramebufferEXT(target, numAttachments, attachments);
-
-       goto finish;
-
-finish:
-       _COREGL_TRACEPATH_FUNC_END();
-}
-void
 tracepath_glFramebufferTexture3DOES(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
 {
        _COREGL_TRACEPATH_FUNC_BEGIN();
index 95a8dee..dcef48d 100644 (file)
@@ -895,3 +895,628 @@ glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
        ovr_glViewport(x, y, width, height);
 }
 
+/* OpenGL ES 3.0 */
+void
+glReadBuffer(GLenum mode)
+{
+       ovr_glReadBuffer(mode);
+}
+
+void
+glDrawRangeElements(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices)
+{
+       ovr_glDrawRangeElements(mode, start, end, count, type, indices);
+}
+
+void
+glTexImage3D(GLenum target, GLint level, GLint GLinternalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
+{
+       ovr_glTexImage3D(target, level, GLinternalFormat, width, height, depth, border, format, type, pixels);
+}
+
+void
+glTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels)
+{
+       ovr_glTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels);
+}
+
+void
+glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+{
+       ovr_glCopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height);
+}
+
+void
+glCompressedTexImage3D(GLenum target, GLint level, GLenum GLinternalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data)
+{
+       ovr_glCompressedTexImage3D(target, level, GLinternalformat, width, height, depth, border, imageSize, data);
+}
+
+void
+glCompressedTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data)
+{
+       ovr_glCompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data);
+}
+
+void
+glGenQueries(GLsizei n, GLuint* ids)
+{
+       ovr_glGenQueries(n, ids);
+}
+
+void
+glDeleteQueries(GLsizei n, const GLuint* ids)
+{
+       ovr_glDeleteQueries(n, ids);
+}
+
+GLboolean
+glIsQuery(GLuint id)
+{
+       return ovr_glIsQuery(id);
+}
+
+void
+glBeginQuery(GLenum target, GLuint id)
+{
+       ovr_glBeginQuery(target, id);
+}
+
+void
+glEndQuery(GLenum target)
+{
+       ovr_glEndQuery(target);
+}
+
+void
+glGetQueryiv(GLenum target, GLenum pname, GLint* params)
+{
+       ovr_glGetQueryiv(target, pname, params);
+}
+
+void
+glGetQueryObjectuiv(GLuint id, GLenum pname, GLuint* params)
+{
+       ovr_glGetQueryObjectuiv(id, pname, params);
+}
+
+GLboolean
+glUnmapBuffer(GLenum target)
+{
+       return ovr_glUnmapBuffer(target);
+}
+
+void
+glGetBufferPointerv(GLenum target, GLenum pname, GLvoid** params)
+{
+       ovr_glGetBufferPointerv(target, pname, params);
+}
+
+void
+glDrawBuffers(GLsizei n, const GLenum* bufs)
+{
+       ovr_glDrawBuffers(n, bufs);
+}
+
+void
+glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+{
+       ovr_glUniformMatrix2x3fv(location, count, transpose, value);
+}
+
+void
+glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+{
+       ovr_glUniformMatrix3x2fv(location, count, transpose, value);
+}
+
+void
+glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+{
+       ovr_glUniformMatrix2x4fv(location, count, transpose, value);
+}
+
+void
+glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+{
+       ovr_glUniformMatrix4x2fv(location, count, transpose, value);
+}
+
+void
+glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+{
+       ovr_glUniformMatrix3x4fv(location, count, transpose, value);
+}
+
+void
+glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value)
+{
+       ovr_glUniformMatrix4x3fv(location, count, transpose, value);
+}
+
+void
+glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
+{
+       ovr_glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter);
+}
+
+void
+glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
+{
+       ovr_glRenderbufferStorageMultisample(target, samples, internalformat, width, height);
+}
+
+void
+glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
+{
+       ovr_glFramebufferTextureLayer(target, attachment, texture, level, layer);
+}
+
+GLvoid*
+glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
+{
+       return ovr_glMapBufferRange(target, offset, length, access);
+}
+
+void
+glFlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length)
+{
+       ovr_glFlushMappedBufferRange(target, offset, length);
+}
+
+void
+glBindVertexArray(GLuint array)
+{
+       ovr_glBindVertexArray(array);
+}
+
+void
+glDeleteVertexArrays(GLsizei n, const GLuint* arrays)
+{
+       ovr_glDeleteVertexArrays(n, arrays);
+}
+
+void
+glGenVertexArrays(GLsizei n, GLuint* arrays)
+{
+       ovr_glGenVertexArrays(n, arrays);
+}
+
+GLboolean
+glIsVertexArray(GLuint array)
+{
+       return ovr_glIsVertexArray(array);
+}
+
+void
+glGetIntegeri_v(GLenum target, GLuint index, GLint* data)
+{
+       ovr_glGetIntegeri_v(target, index, data);
+}
+
+void
+glBeginTransformFeedback(GLenum primitiveMode)
+{
+       ovr_glBeginTransformFeedback(primitiveMode);
+}
+
+void
+glEndTransformFeedback()
+{
+       ovr_glEndTransformFeedback();
+}
+
+void
+glBindBufferRange(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
+{
+       ovr_glBindBufferRange(target, index, buffer, offset, size);
+}
+
+void
+glBindBufferBase(GLenum target, GLuint index, GLuint buffer)
+{
+       ovr_glBindBufferBase(target, index, buffer);
+}
+
+void
+glTransformFeedbackVaryings(GLuint program, GLsizei count, const GLchar* const* varyings, GLenum bufferMode)
+{
+       ovr_glTransformFeedbackVaryings(program, count, varyings, bufferMode);
+}
+
+void
+glGetTransformFeedbackVarying(GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name)
+{
+       ovr_glGetTransformFeedbackVarying(program, index, bufSize, length, size, type, name);
+}
+
+void
+glVertexAttribIPointer(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid* pointer)
+{
+       ovr_glVertexAttribIPointer(index, size, type, stride, pointer);
+}
+
+void
+glGetVertexAttribIiv(GLuint index, GLenum pname, GLint* params)
+{
+       ovr_glGetVertexAttribIiv(index, pname, params);
+}
+
+void
+glGetVertexAttribIuiv(GLuint index, GLenum pname, GLuint* params)
+{
+       ovr_glGetVertexAttribIuiv(index, pname, params);
+}
+
+void
+glVertexAttribI4i(GLuint index, GLint x, GLint y, GLint z, GLint w)
+{
+       ovr_glVertexAttribI4i(index, x, y, z, w);
+}
+
+void
+glVertexAttribI4ui(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
+{
+       ovr_glVertexAttribI4ui(index, x, y, z, w);
+}
+
+void
+glVertexAttribI4iv(GLuint index, const GLint* v)
+{
+       ovr_glVertexAttribI4iv(index, v);
+}
+
+void
+glVertexAttribI4uiv(GLuint index, const GLuint* v)
+{
+       ovr_glVertexAttribI4uiv(index, v);
+}
+
+void
+glGetUniformuiv(GLuint program, GLint location, GLuint* params)
+{
+       ovr_glGetUniformuiv(program, location, params);
+}
+
+GLint
+glGetFragDataLocation(GLuint program, const GLchar *name)
+{
+       return ovr_glGetFragDataLocation(program, name);
+}
+
+void
+glUniform1ui(GLint location, GLuint v0)
+{
+       ovr_glUniform1ui(location, v0);
+}
+
+void
+glUniform2ui(GLint location, GLuint v0, GLuint v1)
+{
+       ovr_glUniform2ui(location, v0, v1);
+}
+
+void
+glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2)
+{
+       ovr_glUniform3ui(location, v0, v1, v2);
+}
+
+void
+glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
+{
+       ovr_glUniform4ui(location, v0, v1, v2, v3);
+}
+
+void
+glUniform1uiv(GLint location, GLsizei count, const GLuint* value)
+{
+       ovr_glUniform1uiv(location, count, value);
+}
+
+void
+glUniform2uiv(GLint location, GLsizei count, const GLuint* value)
+{
+       ovr_glUniform2uiv(location, count, value);
+}
+
+void
+glUniform3uiv(GLint location, GLsizei count, const GLuint* value)
+{
+       ovr_glUniform3uiv(location, count, value);
+}
+
+void
+glUniform4uiv(GLint location, GLsizei count, const GLuint* value)
+{
+       ovr_glUniform4uiv(location, count, value);
+}
+
+void
+glClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint* value)
+{
+       ovr_glClearBufferiv(buffer, drawbuffer, value);
+}
+
+void
+glClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint* value)
+{
+       ovr_glClearBufferuiv(buffer, drawbuffer, value);
+}
+
+void
+glClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat* value)
+{
+       ovr_glClearBufferfv(buffer, drawbuffer, value);
+}
+
+void
+glClearBufferfi(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
+{
+       ovr_glClearBufferfi(buffer, drawbuffer, depth, stencil);
+}
+
+const GLubyte*
+glGetStringi(GLenum name, GLuint index)
+{
+       return ovr_glGetStringi(name, index);
+}
+
+void
+glCopyBufferSubData(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
+{
+       ovr_glCopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size);
+}
+
+void
+glGetUniformIndices(GLuint program, GLsizei uniformCount, const GLchar* const* uniformNames, GLuint* uniformIndices)
+{
+       ovr_glGetUniformIndices(program, uniformCount, uniformNames, uniformIndices);
+}
+
+void
+glGetActiveUniformsiv(GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params)
+{
+       ovr_glGetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params);
+}
+
+GLuint
+glGetUniformBlockIndex(GLuint program, const GLchar* uniformBlockName)
+{
+       return ovr_glGetUniformBlockIndex(program, uniformBlockName);
+}
+
+void
+glGetActiveUniformBlockiv(GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params)
+{
+       ovr_glGetActiveUniformBlockiv(program, uniformBlockIndex, pname, params);
+}
+
+void
+glGetActiveUniformBlockName(GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName)
+{
+       ovr_glGetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName);
+}
+
+void
+glUniformBlockBinding(GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding)
+{
+       ovr_glUniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding);
+}
+
+void
+glDrawArraysInstanced(GLenum mode, GLint first, GLsizei count, GLsizei instanceCount)
+{
+       ovr_glDrawArraysInstanced(mode, first, count, instanceCount);
+}
+
+void
+glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices, GLsizei instanceCount)
+{
+       ovr_glDrawElementsInstanced(mode, count, type, indices, instanceCount);
+}
+
+GLsync
+glFenceSync(GLenum condition, GLbitfield flags)
+{
+       return ovr_glFenceSync(condition, flags);
+}
+
+GLboolean
+glIsSync(GLsync sync)
+{
+       return ovr_glIsSync(sync);
+}
+
+void
+glDeleteSync(GLsync sync)
+{
+       ovr_glDeleteSync(sync);
+}
+
+GLenum
+glClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
+{
+       return ovr_glClientWaitSync(sync, flags, timeout);
+}
+
+void
+glWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout)
+{
+       ovr_glWaitSync(sync, flags, timeout);
+}
+
+void
+glGetInteger64v(GLenum pname, GLint64* params)
+{
+       ovr_glGetInteger64v(pname, params);
+}
+
+void
+glGetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values)
+{
+       ovr_glGetSynciv(sync, pname, bufSize, length, values);
+}
+
+void
+glGetInteger64i_v(GLenum target, GLuint index, GLint64* data)
+{
+       ovr_glGetInteger64i_v(target, index, data);
+}
+
+void
+glGetBufferParameteri64v(GLenum target, GLenum pname, GLint64* params)
+{
+       ovr_glGetBufferParameteri64v(target, pname, params);
+}
+
+void
+glGenSamplers(GLsizei count, GLuint* samplers)
+{
+       ovr_glGenSamplers(count, samplers);
+}
+
+void
+glDeleteSamplers(GLsizei count, const GLuint* samplers)
+{
+       ovr_glDeleteSamplers(count, samplers);
+}
+
+GLboolean
+glIsSampler(GLuint sampler)
+{
+       return ovr_glIsSampler(sampler);
+}
+
+void
+glBindSampler(GLuint unit, GLuint sampler)
+{
+       ovr_glBindSampler(unit, sampler);
+}
+
+void
+glSamplerParameteri(GLuint sampler, GLenum pname, GLint param)
+{
+       ovr_glSamplerParameteri(sampler, pname, param);
+}
+
+void
+glSamplerParameteriv(GLuint sampler, GLenum pname, const GLint* param)
+{
+       ovr_glSamplerParameteriv(sampler, pname, param);
+}
+
+void
+glSamplerParameterf(GLuint sampler, GLenum pname, GLfloat param)
+{
+       ovr_glSamplerParameterf(sampler, pname, param);
+}
+
+void
+glSamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat* param)
+{
+       ovr_glSamplerParameterfv(sampler, pname, param);
+}
+
+void
+glGetSamplerParameteriv(GLuint sampler, GLenum pname, GLint* params)
+{
+       ovr_glGetSamplerParameteriv(sampler, pname, params);
+}
+
+void
+glGetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat* params)
+{
+       ovr_glGetSamplerParameterfv(sampler, pname, params);
+}
+
+void
+glVertexAttribDivisor(GLuint index, GLuint divisor)
+{
+       ovr_glVertexAttribDivisor(index, divisor);
+}
+
+void
+glBindTransformFeedback(GLenum target, GLuint id)
+{
+       ovr_glBindTransformFeedback(target, id);
+}
+
+void
+glDeleteTransformFeedbacks(GLsizei n, const GLuint* ids)
+{
+       ovr_glDeleteTransformFeedbacks(n, ids);
+}
+
+void
+glGenTransformFeedbacks(GLsizei n, GLuint* ids)
+{
+       ovr_glGenTransformFeedbacks(n, ids);
+}
+
+GLboolean
+glIsTransformFeedback(GLuint id)
+{
+       return ovr_glIsTransformFeedback(id);
+}
+
+void
+glPauseTransformFeedback()
+{
+       ovr_glPauseTransformFeedback();
+}
+
+void
+glResumeTransformFeedback()
+{
+       ovr_glResumeTransformFeedback();
+}
+
+void
+glGetProgramBinary(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, GLvoid* binary)
+{
+       ovr_glGetProgramBinary(program, bufSize, length, binaryFormat, binary);
+}
+
+void
+glProgramBinary(GLuint program, GLenum binaryFormat, const GLvoid* binary, GLsizei length)
+{
+       ovr_glProgramBinary(program, binaryFormat, binary, length);
+}
+
+void
+glProgramParameteri(GLuint program, GLenum pname, GLint value)
+{
+       ovr_glProgramParameteri(program, pname, value);
+}
+
+void
+glInvalidateFramebuffer(GLenum target, GLsizei numAttachments, const GLenum* attachments)
+{
+       ovr_glInvalidateFramebuffer(target, numAttachments, attachments);
+}
+
+void
+glInvalidateSubFramebuffer(GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height)
+{
+       ovr_glInvalidateSubFramebuffer(target, numAttachments, attachments, x, y, width, height);
+}
+
+void
+glTexStorage2D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)
+{
+       ovr_glTexStorage2D(target, levels, internalformat, width, height);
+}
+
+void
+glTexStorage3D(GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)
+{
+       ovr_glTexStorage3D(target, levels, internalformat, width, height, depth);
+}
+
+void
+glGetInternalformativ(GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params)
+{
+       ovr_glGetInternalformativ(target, internalformat, pname, bufSize, params);
+}
+