+++ /dev/null
-//------------------------------------------------------//
-// 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
-
#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 */
#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)
/* 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))
_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
/* 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)
_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)
_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)
_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)
#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
if (debug_nofp != 1)
{
COREGL_OVERRIDE(fastpath_, glGetError);
+ COREGL_OVERRIDE(fastpath_, glGetString);
COREGL_OVERRIDE(fastpath_, glGetIntegerv);
COREGL_OVERRIDE(fastpath_, glGetFloatv);
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);
int ref_count;
int is_destroyed;
+ double glversion;
+
int used_count;
GLDisplay *rdpy;
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
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;
{
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");
}
// 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;
}
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;
}
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);
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;
}
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();
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;
}
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;
}
finish:
_COREGL_FASTPATH_FUNC_END();
- return ret;
+ return (const GLubyte *)ret;
}
////////////////////////////////////////////////////////////////////////
}
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;
}
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;
goto finish;
}
- _orig_fastpath_glGetProgramBinaryOES(real_obj, bufsize, length, binaryFormat, binary);
+ _orig_fastpath_glGetProgramBinary(real_obj, bufsize, length, binaryFormat, binary);
goto 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;
goto finish;
}
- _orig_fastpath_glProgramBinaryOES(real_obj, binaryFormat, binary, length);
+ _orig_fastpath_glProgramBinary(real_obj, binaryFormat, binary, length);
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_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:
}
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();
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();
}
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();
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);
+}
+