From afc360984962f81ff70ac6e663f6bf74834f3cce Mon Sep 17 00:00:00 2001 From: DaeKwang Ryu Date: Tue, 23 Feb 2016 17:40:10 +0900 Subject: [PATCH] EvasGL: implement GLES 3.1 add feature GLES 3.1. 2 wrapper functions are added. (glFramebufferParameteri, glGetFramebufferParameteriv) Bugfix: in evas_gl_api_ext.c, It didn't create Ext functions for GLES 3.X. Change-Id: I0b913f57d511631527b667f6feb79d4d4f35d7e1 --- src/lib/evas/Evas_GL.h | 940 ++++++++++++++++++++- src/lib/evas/Evas_GL_GLES3_Helpers.h | 71 ++ src/modules/evas/engines/gl_common/evas_gl_api.c | 341 +++++++- .../evas/engines/gl_common/evas_gl_api_ext.c | 38 +- .../evas/engines/gl_common/evas_gl_api_ext_def.h | 61 ++ .../evas/engines/gl_common/evas_gl_api_gles3_def.h | 72 ++ 6 files changed, 1503 insertions(+), 20 deletions(-) diff --git a/src/lib/evas/Evas_GL.h b/src/lib/evas/Evas_GL.h index 8045b62..51899e7 100644 --- a/src/lib/evas/Evas_GL.h +++ b/src/lib/evas/Evas_GL.h @@ -1525,7 +1525,6 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #ifndef GL_KHR_blend_equation_advanced #define GL_KHR_blend_equation_advanced 1 -#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 #define GL_MULTIPLY_KHR 0x9294 #define GL_SCREEN_KHR 0x9295 #define GL_OVERLAY_KHR 0x9296 @@ -1543,6 +1542,17 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_HSL_LUMINOSITY_KHR 0x92B0 #endif /* GL_KHR_blend_equation_advanced */ +#ifndef GL_KHR_blend_equation_advanced_coherent +#define GL_KHR_blend_equation_advanced_coherent 1 +#define GL_BLEND_ADVANCED_COHERENT_KHR 0x9285 +#endif /* GL_KHR_blend_equation_advanced_coherent */ + +#ifndef GL_KHR_context_flush_control +#define GL_KHR_context_flush_control 1 +#define GL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x82FC +#endif /* GL_KHR_context_flush_control */ + #ifndef GL_KHR_debug #define GL_KHR_debug 1 #define GL_SAMPLER 0x82E6 @@ -1573,6 +1583,7 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_PROGRAM_KHR 0x82E2 #define GL_VERTEX_ARRAY_KHR 0x8074 #define GL_QUERY_KHR 0x82E3 +#define GL_PROGRAM_PIPELINE_KHR 0x82E4 #define GL_SAMPLER_KHR 0x82E6 #define GL_MAX_LABEL_LENGTH_KHR 0x82E8 #define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143 @@ -1587,6 +1598,27 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_STACK_UNDERFLOW_KHR 0x0504 #endif /* GL_KHR_debug */ +#ifndef GL_KHR_no_error +#define GL_KHR_no_error 1 +#define GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR 0x00000008 +#endif /* GL_KHR_no_error */ + +#ifndef GL_KHR_robust_buffer_access_behavior +#define GL_KHR_robust_buffer_access_behavior 1 +#endif /* GL_KHR_robust_buffer_access_behavior */ + +#ifndef GL_KHR_robustness +#define GL_KHR_robustness 1 +#define GL_CONTEXT_ROBUST_ACCESS_KHR 0x90F3 +#define GL_LOSE_CONTEXT_ON_RESET_KHR 0x8252 +#define GL_GUILTY_CONTEXT_RESET_KHR 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_KHR 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_KHR 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY_KHR 0x8256 +#define GL_NO_RESET_NOTIFICATION_KHR 0x8261 +#define GL_CONTEXT_LOST_KHR 0x0507 +#endif /* GL_KHR_robustness */ + #ifndef GL_KHR_texture_compression_astc_hdr #define GL_KHR_texture_compression_astc_hdr 1 #define GL_COMPRESSED_RGBA_ASTC_4x4_KHR 0x93B0 @@ -1623,6 +1655,10 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_KHR_texture_compression_astc_ldr 1 #endif /* GL_KHR_texture_compression_astc_ldr */ +#ifndef GL_KHR_texture_compression_astc_sliced_3d +#define GL_KHR_texture_compression_astc_sliced_3d 1 +#endif /* GL_KHR_texture_compression_astc_sliced_3d */ + #ifndef GL_OES_EGL_image #define GL_OES_EGL_image 1 #endif /* GL_OES_EGL_image */ @@ -1635,6 +1671,14 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_SAMPLER_EXTERNAL_OES 0x8D66 #endif /* GL_OES_EGL_image_external */ +#ifndef GL_OES_EGL_image_external_essl3 +#define GL_OES_EGL_image_external_essl3 1 +#endif /* GL_OES_EGL_image_external_essl3 */ + +#ifndef GL_OES_compressed_ETC1_RGB8_sub_texture +#define GL_OES_compressed_ETC1_RGB8_sub_texture 1 +#endif /* GL_OES_compressed_ETC1_RGB8_sub_texture */ + #ifndef GL_OES_compressed_ETC1_RGB8_texture #define GL_OES_compressed_ETC1_RGB8_texture 1 #define GL_ETC1_RGB8_OES 0x8D64 @@ -1654,6 +1698,10 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_PALETTE8_RGB5_A1_OES 0x8B99 #endif /* GL_OES_compressed_paletted_texture */ +#ifndef GL_OES_copy_image +#define GL_OES_copy_image 1 +#endif /* GL_OES_copy_image */ + #ifndef GL_OES_depth24 #define GL_OES_depth24 1 #define GL_DEPTH_COMPONENT24_OES 0x81A6 @@ -1668,6 +1716,16 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_OES_depth_texture 1 #endif /* GL_OES_depth_texture */ +#ifndef GL_OES_draw_buffers_indexed +#define GL_OES_draw_buffers_indexed 1 +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +#endif /* GL_OES_draw_buffers_indexed */ + +#ifndef GL_OES_draw_elements_base_vertex +#define GL_OES_draw_elements_base_vertex 1 +#endif /* GL_OES_draw_elements_base_vertex */ + #ifndef GL_OES_element_index_uint #define GL_OES_element_index_uint 1 #endif /* GL_OES_element_index_uint */ @@ -1680,6 +1738,47 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_OES_fragment_precision_high 1 #endif /* GL_OES_fragment_precision_high */ +#ifndef GL_OES_geometry_point_size +#define GL_OES_geometry_point_size 1 +#endif /* GL_OES_geometry_point_size */ + +#ifndef GL_OES_geometry_shader +#define GL_OES_geometry_shader 1 +#define GL_GEOMETRY_SHADER_OES 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT_OES 0x00000004 +#define GL_GEOMETRY_LINKED_VERTICES_OUT_OES 0x8916 +#define GL_GEOMETRY_LINKED_INPUT_TYPE_OES 0x8917 +#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES 0x8918 +#define GL_GEOMETRY_SHADER_INVOCATIONS_OES 0x887F +#define GL_LAYER_PROVOKING_VERTEX_OES 0x825E +#define GL_LINES_ADJACENCY_OES 0x000A +#define GL_LINE_STRIP_ADJACENCY_OES 0x000B +#define GL_TRIANGLES_ADJACENCY_OES 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_OES 0x000D +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES 0x8A2C +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8A32 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES 0x8DE1 +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES 0x8E5A +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES 0x8C29 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES 0x92CF +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES 0x92D5 +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES 0x90CD +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES 0x90D7 +#define GL_FIRST_VERTEX_CONVENTION_OES 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_OES 0x8E4E +#define GL_UNDEFINED_VERTEX_OES 0x8260 +#define GL_PRIMITIVES_GENERATED_OES 0x8C87 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS_OES 0x9312 +#define GL_MAX_FRAMEBUFFER_LAYERS_OES 0x9317 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES 0x8DA8 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES 0x8DA7 +#define GL_REFERENCED_BY_GEOMETRY_SHADER_OES 0x9309 +#endif /* GL_OES_geometry_shader */ + #ifndef GL_OES_get_program_binary #define GL_OES_get_program_binary 1 #define GL_PROGRAM_BINARY_LENGTH_OES 0x8741 @@ -1687,6 +1786,10 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF #endif /* GL_OES_get_program_binary */ +#ifndef GL_OES_gpu_shader5 +#define GL_OES_gpu_shader5 1 +#endif /* GL_OES_gpu_shader5 */ + #ifndef GL_OES_mapbuffer #define GL_OES_mapbuffer 1 #define GL_WRITE_ONLY_OES 0x88B9 @@ -1702,6 +1805,11 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_DEPTH24_STENCIL8_OES 0x88F0 #endif /* GL_OES_packed_depth_stencil */ +#ifndef GL_OES_primitive_bounding_box +#define GL_OES_primitive_bounding_box 1 +#define GL_PRIMITIVE_BOUNDING_BOX_OES 0x92BE +#endif /* GL_OES_primitive_bounding_box */ + #ifndef GL_OES_required_internalformat #define GL_OES_required_internalformat 1 #define GL_ALPHA8_OES 0x803C @@ -1736,6 +1844,10 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_OES_shader_image_atomic 1 #endif /* GL_OES_shader_image_atomic */ +#ifndef GL_OES_shader_io_blocks +#define GL_OES_shader_io_blocks 1 +#endif /* GL_OES_shader_io_blocks */ + #ifndef GL_OES_shader_multisample_interpolation #define GL_OES_shader_multisample_interpolation 1 #define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5B @@ -1763,6 +1875,57 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219 #endif /* GL_OES_surfaceless_context */ +#ifndef GL_OES_tessellation_point_size +#define GL_OES_tessellation_point_size 1 +#endif /* GL_OES_tessellation_point_size */ + +#ifndef GL_OES_tessellation_shader +#define GL_OES_tessellation_shader 1 +#define GL_PATCHES_OES 0x000E +#define GL_PATCH_VERTICES_OES 0x8E72 +#define GL_TESS_CONTROL_OUTPUT_VERTICES_OES 0x8E75 +#define GL_TESS_GEN_MODE_OES 0x8E76 +#define GL_TESS_GEN_SPACING_OES 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER_OES 0x8E78 +#define GL_TESS_GEN_POINT_MODE_OES 0x8E79 +#define GL_ISOLINES_OES 0x8E7A +#define GL_QUADS_OES 0x0007 +#define GL_FRACTIONAL_ODD_OES 0x8E7B +#define GL_FRACTIONAL_EVEN_OES 0x8E7C +#define GL_MAX_PATCH_VERTICES_OES 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL_OES 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS_OES 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E1F +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES 0x92CE +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES 0x92D4 +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES 0x90CC +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES 0x90D9 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES 0x8221 +#define GL_IS_PER_PATCH_OES 0x92E7 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES 0x9308 +#define GL_TESS_CONTROL_SHADER_OES 0x8E88 +#define GL_TESS_EVALUATION_SHADER_OES 0x8E87 +#define GL_TESS_CONTROL_SHADER_BIT_OES 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT_OES 0x00000010 +#endif /* GL_OES_tessellation_shader */ + #ifndef GL_OES_texture_3D #define GL_OES_texture_3D 1 #define GL_TEXTURE_WRAP_R_OES 0x8072 @@ -1773,6 +1936,30 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4 #endif /* GL_OES_texture_3D */ +#ifndef GL_OES_texture_border_clamp +#define GL_OES_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_OES 0x1004 +#define GL_CLAMP_TO_BORDER_OES 0x812D +#endif /* GL_OES_texture_border_clamp */ + +#ifndef GL_OES_texture_buffer +#define GL_OES_texture_buffer 1 +#define GL_TEXTURE_BUFFER_OES 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING_OES 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_OES 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_OES 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES 0x8C2D +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES 0x919F +#define GL_SAMPLER_BUFFER_OES 0x8DC2 +#define GL_INT_SAMPLER_BUFFER_OES 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_OES 0x8DD8 +#define GL_IMAGE_BUFFER_OES 0x9051 +#define GL_INT_IMAGE_BUFFER_OES 0x905C +#define GL_UNSIGNED_INT_IMAGE_BUFFER_OES 0x9067 +#define GL_TEXTURE_BUFFER_OFFSET_OES 0x919D +#define GL_TEXTURE_BUFFER_SIZE_OES 0x919E +#endif /* GL_OES_texture_buffer */ + #ifndef GL_OES_texture_compression_astc #define GL_OES_texture_compression_astc 1 #define GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0 @@ -1797,6 +1984,19 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9 #endif /* GL_OES_texture_compression_astc */ +#ifndef GL_OES_texture_cube_map_array +#define GL_OES_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_OES 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES 0x900A +#define GL_SAMPLER_CUBE_MAP_ARRAY_OES 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_OES 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900F +#define GL_IMAGE_CUBE_MAP_ARRAY_OES 0x9054 +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x905F +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x906A +#endif /* GL_OES_texture_cube_map_array */ + #ifndef GL_OES_texture_float #define GL_OES_texture_float 1 #endif /* GL_OES_texture_float */ @@ -1833,6 +2033,15 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910D #endif /* GL_OES_texture_storage_multisample_2d_array */ +#ifndef GL_OES_texture_view +#define GL_OES_texture_view 1 +#define GL_TEXTURE_VIEW_MIN_LEVEL_OES 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS_OES 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER_OES 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS_OES 0x82DE +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF +#endif /* GL_OES_texture_view */ + #ifndef GL_OES_vertex_array_object #define GL_OES_vertex_array_object 1 #define GL_VERTEX_ARRAY_BINDING_OES 0x85B5 @@ -1877,6 +2086,10 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_Z400_BINARY_AMD 0x8740 #endif /* GL_AMD_program_binary_Z400 */ +#ifndef GL_ANDROID_extension_pack_es31a +#define GL_ANDROID_extension_pack_es31a 1 +#endif /* GL_ANDROID_extension_pack_es31a */ + #ifndef GL_ANGLE_depth_texture #define GL_ANGLE_depth_texture 1 #endif /* GL_ANGLE_depth_texture */ @@ -1932,6 +2145,23 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0 #endif /* GL_ANGLE_translated_shader_source */ +#ifndef GL_APPLE_clip_distance +#define GL_APPLE_clip_distance 1 +#define GL_MAX_CLIP_DISTANCES_APPLE 0x0D32 +#define GL_CLIP_DISTANCE0_APPLE 0x3000 +#define GL_CLIP_DISTANCE1_APPLE 0x3001 +#define GL_CLIP_DISTANCE2_APPLE 0x3002 +#define GL_CLIP_DISTANCE3_APPLE 0x3003 +#define GL_CLIP_DISTANCE4_APPLE 0x3004 +#define GL_CLIP_DISTANCE5_APPLE 0x3005 +#define GL_CLIP_DISTANCE6_APPLE 0x3006 +#define GL_CLIP_DISTANCE7_APPLE 0x3007 +#endif /* GL_APPLE_clip_distance */ + +#ifndef GL_APPLE_color_buffer_packed_float +#define GL_APPLE_color_buffer_packed_float 1 +#endif /* GL_APPLE_color_buffer_packed_float */ + #ifndef GL_APPLE_copy_texture_levels #define GL_APPLE_copy_texture_levels 1 #endif /* GL_APPLE_copy_texture_levels */ @@ -1986,6 +2216,14 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D #endif /* GL_APPLE_texture_max_level */ +#ifndef GL_APPLE_texture_packed_float +#define GL_APPLE_texture_packed_float 1 +#define GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE 0x8C3B +#define GL_UNSIGNED_INT_5_9_9_9_REV_APPLE 0x8C3E +#define GL_R11F_G11F_B10F_APPLE 0x8C3A +#define GL_RGB9_E5_APPLE 0x8C3D +#endif /* GL_APPLE_texture_packed_float */ + #ifndef GL_ARM_mali_program_binary #define GL_ARM_mali_program_binary 1 #define GL_MALI_PROGRAM_BINARY_ARM 0x8F61 @@ -2010,17 +2248,61 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_ARM_shader_framebuffer_fetch_depth_stencil 1 #endif /* GL_ARM_shader_framebuffer_fetch_depth_stencil */ +#ifndef GL_DMP_program_binary +#define GL_DMP_program_binary 1 +#define GL_SMAPHS30_PROGRAM_BINARY_DMP 0x9251 +#define GL_SMAPHS_PROGRAM_BINARY_DMP 0x9252 +#define GL_DMP_PROGRAM_BINARY_DMP 0x9253 +#endif /* GL_DMP_program_binary */ + #ifndef GL_DMP_shader_binary #define GL_DMP_shader_binary 1 #define GL_SHADER_BINARY_DMP 0x9250 #endif /* GL_DMP_shader_binary */ +#ifndef GL_EXT_YUV_target +#define GL_EXT_YUV_target 1 +#define GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT 0x8BE7 +#endif /* GL_EXT_YUV_target */ + +#ifndef GL_EXT_base_instance +#define GL_EXT_base_instance 1 +#endif /* GL_EXT_base_instance */ + +#ifndef GL_EXT_blend_func_extended +#define GL_EXT_blend_func_extended 1 +#define GL_SRC1_COLOR_EXT 0x88F9 +#define GL_SRC1_ALPHA_EXT 0x8589 +#define GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA +#define GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB +#define GL_SRC_ALPHA_SATURATE_EXT 0x0308 +#define GL_LOCATION_INDEX_EXT 0x930F +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC +#endif /* GL_EXT_blend_func_extended */ + #ifndef GL_EXT_blend_minmax #define GL_EXT_blend_minmax 1 #define GL_MIN_EXT 0x8007 #define GL_MAX_EXT 0x8008 #endif /* GL_EXT_blend_minmax */ +#ifndef GL_EXT_buffer_storage +#define GL_EXT_buffer_storage 1 +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_PERSISTENT_BIT_EXT 0x0040 +#define GL_MAP_COHERENT_BIT_EXT 0x0080 +#define GL_DYNAMIC_STORAGE_BIT_EXT 0x0100 +#define GL_CLIENT_STORAGE_BIT_EXT 0x0200 +#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT 0x00004000 +#define GL_BUFFER_IMMUTABLE_STORAGE_EXT 0x821F +#define GL_BUFFER_STORAGE_FLAGS_EXT 0x8220 +#endif /* GL_EXT_buffer_storage */ + +#ifndef GL_EXT_color_buffer_float +#define GL_EXT_color_buffer_float 1 +#endif /* GL_EXT_color_buffer_float */ + #ifndef GL_EXT_color_buffer_half_float #define GL_EXT_color_buffer_half_float 1 #define GL_RGBA16F_EXT 0x881A @@ -2031,6 +2313,10 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_UNSIGNED_NORMALIZED_EXT 0x8C17 #endif /* GL_EXT_color_buffer_half_float */ +#ifndef GL_EXT_copy_image +#define GL_EXT_copy_image 1 +#endif /* GL_EXT_copy_image */ + #ifndef GL_EXT_debug_label #define GL_EXT_debug_label 1 #define GL_PROGRAM_PIPELINE_OBJECT_EXT 0x8A4F @@ -2102,10 +2388,67 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_COLOR_ATTACHMENT15_EXT 0x8CEF #endif /* GL_EXT_draw_buffers */ +#ifndef GL_EXT_draw_buffers_indexed +#define GL_EXT_draw_buffers_indexed 1 +#endif /* GL_EXT_draw_buffers_indexed */ + +#ifndef GL_EXT_draw_elements_base_vertex +#define GL_EXT_draw_elements_base_vertex 1 +#endif /* GL_EXT_draw_elements_base_vertex */ + #ifndef GL_EXT_draw_instanced #define GL_EXT_draw_instanced 1 #endif /* GL_EXT_draw_instanced */ +#ifndef GL_EXT_float_blend +#define GL_EXT_float_blend 1 +#endif /* GL_EXT_float_blend */ + +#ifndef GL_EXT_geometry_point_size +#define GL_EXT_geometry_point_size 1 +#endif /* GL_EXT_geometry_point_size */ + +#ifndef GL_EXT_geometry_shader +#define GL_EXT_geometry_shader 1 +#define GL_GEOMETRY_SHADER_EXT 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT_EXT 0x00000004 +#define GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916 +#define GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917 +#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918 +#define GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F +#define GL_LAYER_PROVOKING_VERTEX_EXT 0x825E +#define GL_LINES_ADJACENCY_EXT 0x000A +#define GL_LINE_STRIP_ADJACENCY_EXT 0x000B +#define GL_TRIANGLES_ADJACENCY_EXT 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_EXT 0x000D +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5 +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7 +#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E +#define GL_UNDEFINED_VERTEX_EXT 0x8260 +#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312 +#define GL_MAX_FRAMEBUFFER_LAYERS_EXT 0x9317 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 +#define GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309 +#endif /* GL_EXT_geometry_shader */ + +#ifndef GL_EXT_gpu_shader5 +#define GL_EXT_gpu_shader5 1 +#endif /* GL_EXT_gpu_shader5 */ + #ifndef GL_EXT_instanced_arrays #define GL_EXT_instanced_arrays 1 #define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE @@ -2125,6 +2468,16 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_EXT_multi_draw_arrays 1 #endif /* GL_EXT_multi_draw_arrays */ +#ifndef GL_EXT_multi_draw_indirect +#define GL_EXT_multi_draw_indirect 1 +#endif /* GL_EXT_multi_draw_indirect */ + +#ifndef GL_EXT_multisampled_compatibility +#define GL_EXT_multisampled_compatibility 1 +#define GL_MULTISAMPLE_EXT 0x809D +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F +#endif /* GL_EXT_multisampled_compatibility */ + #ifndef GL_EXT_multisampled_render_to_texture #define GL_EXT_multisampled_render_to_texture 1 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C @@ -2148,20 +2501,56 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A #endif /* GL_EXT_occlusion_query_boolean */ +#ifndef GL_EXT_polygon_offset_clamp +#define GL_EXT_polygon_offset_clamp 1 +#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B +#endif /* GL_EXT_polygon_offset_clamp */ + +#ifndef GL_EXT_post_depth_coverage +#define GL_EXT_post_depth_coverage 1 +#endif /* GL_EXT_post_depth_coverage */ + +#ifndef GL_EXT_primitive_bounding_box +#define GL_EXT_primitive_bounding_box 1 +#define GL_PRIMITIVE_BOUNDING_BOX_EXT 0x92BE +#endif /* GL_EXT_primitive_bounding_box */ + #ifndef GL_EXT_pvrtc_sRGB #define GL_EXT_pvrtc_sRGB 1 #define GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54 #define GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55 #define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56 #define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1 #endif /* GL_EXT_pvrtc_sRGB */ +#ifndef GL_EXT_raster_multisample +#define GL_EXT_raster_multisample 1 +#define GL_RASTER_MULTISAMPLE_EXT 0x9327 +#define GL_RASTER_SAMPLES_EXT 0x9328 +#define GL_MAX_RASTER_SAMPLES_EXT 0x9329 +#define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A +#define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B +#define GL_EFFECTIVE_RASTER_SAMPLES_EXT 0x932C +#endif /* GL_EXT_raster_multisample */ + #ifndef GL_EXT_read_format_bgra #define GL_EXT_read_format_bgra 1 #define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365 #define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366 #endif /* GL_EXT_read_format_bgra */ +#ifndef GL_EXT_render_snorm +#define GL_EXT_render_snorm 1 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_R16_SNORM_EXT 0x8F98 +#define GL_RG16_SNORM_EXT 0x8F99 +#define GL_RGBA16_SNORM_EXT 0x8F9B +#endif /* GL_EXT_render_snorm */ + #ifndef GL_EXT_robustness #define GL_EXT_robustness 1 #define GL_GUILTY_CONTEXT_RESET_EXT 0x8253 @@ -2201,10 +2590,22 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52 #endif /* GL_EXT_shader_framebuffer_fetch */ +#ifndef GL_EXT_shader_group_vote +#define GL_EXT_shader_group_vote 1 +#endif /* GL_EXT_shader_group_vote */ + +#ifndef GL_EXT_shader_implicit_conversions +#define GL_EXT_shader_implicit_conversions 1 +#endif /* GL_EXT_shader_implicit_conversions */ + #ifndef GL_EXT_shader_integer_mix #define GL_EXT_shader_integer_mix 1 #endif /* GL_EXT_shader_integer_mix */ +#ifndef GL_EXT_shader_io_blocks +#define GL_EXT_shader_io_blocks 1 +#endif /* GL_EXT_shader_io_blocks */ + #ifndef GL_EXT_shader_pixel_local_storage #define GL_EXT_shader_pixel_local_storage 1 #define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT 0x8F63 @@ -2212,6 +2613,13 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_SHADER_PIXEL_LOCAL_STORAGE_EXT 0x8F64 #endif /* GL_EXT_shader_pixel_local_storage */ +#ifndef GL_EXT_shader_pixel_local_storage2 +#define GL_EXT_shader_pixel_local_storage2 1 +#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT 0x9650 +#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT 0x9651 +#define GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT 0x9652 +#endif /* GL_EXT_shader_pixel_local_storage2 */ + #ifndef GL_EXT_shader_texture_lod #define GL_EXT_shader_texture_lod 1 #endif /* GL_EXT_shader_texture_lod */ @@ -2224,6 +2632,98 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_SAMPLER_2D_SHADOW_EXT 0x8B62 #endif /* GL_EXT_shadow_samplers */ +#ifndef GL_EXT_sparse_texture +#define GL_EXT_sparse_texture 1 +#define GL_TEXTURE_SPARSE_EXT 0x91A6 +#define GL_VIRTUAL_PAGE_SIZE_INDEX_EXT 0x91A7 +#define GL_NUM_SPARSE_LEVELS_EXT 0x91AA +#define GL_NUM_VIRTUAL_PAGE_SIZES_EXT 0x91A8 +#define GL_VIRTUAL_PAGE_SIZE_X_EXT 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_EXT 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_EXT 0x9197 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_TEXTURE_3D 0x806F +#define GL_MAX_SPARSE_TEXTURE_SIZE_EXT 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT 0x919A +#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT 0x91A9 +#endif /* GL_EXT_sparse_texture */ + +#ifndef GL_EXT_tessellation_point_size +#define GL_EXT_tessellation_point_size 1 +#endif /* GL_EXT_tessellation_point_size */ + +#ifndef GL_EXT_tessellation_shader +#define GL_EXT_tessellation_shader 1 +#define GL_PATCHES_EXT 0x000E +#define GL_PATCH_VERTICES_EXT 0x8E72 +#define GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75 +#define GL_TESS_GEN_MODE_EXT 0x8E76 +#define GL_TESS_GEN_SPACING_EXT 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER_EXT 0x8E78 +#define GL_TESS_GEN_POINT_MODE_EXT 0x8E79 +#define GL_ISOLINES_EXT 0x8E7A +#define GL_QUADS_EXT 0x0007 +#define GL_FRACTIONAL_ODD_EXT 0x8E7B +#define GL_FRACTIONAL_EVEN_EXT 0x8E7C +#define GL_MAX_PATCH_VERTICES_EXT 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL_EXT 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS_EXT 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4 +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 +#define GL_IS_PER_PATCH_EXT 0x92E7 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308 +#define GL_TESS_CONTROL_SHADER_EXT 0x8E88 +#define GL_TESS_EVALUATION_SHADER_EXT 0x8E87 +#define GL_TESS_CONTROL_SHADER_BIT_EXT 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010 +#endif /* GL_EXT_tessellation_shader */ + +#ifndef GL_EXT_texture_border_clamp +#define GL_EXT_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_EXT 0x1004 +#define GL_CLAMP_TO_BORDER_EXT 0x812D +#endif /* GL_EXT_texture_border_clamp */ + +#ifndef GL_EXT_texture_buffer +#define GL_EXT_texture_buffer 1 +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING_EXT 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_EXT 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_EXT 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT 0x919F +#define GL_SAMPLER_BUFFER_EXT 0x8DC2 +#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 +#define GL_IMAGE_BUFFER_EXT 0x9051 +#define GL_INT_IMAGE_BUFFER_EXT 0x905C +#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 +#define GL_TEXTURE_BUFFER_OFFSET_EXT 0x919D +#define GL_TEXTURE_BUFFER_SIZE_EXT 0x919E +#endif /* GL_EXT_texture_buffer */ + #ifndef GL_EXT_texture_compression_dxt1 #define GL_EXT_texture_compression_dxt1 1 #define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 @@ -2236,16 +2736,42 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 #endif /* GL_EXT_texture_compression_s3tc */ +#ifndef GL_EXT_texture_cube_map_array +#define GL_EXT_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_EXT 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT 0x900A +#define GL_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900F +#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A +#endif /* GL_EXT_texture_cube_map_array */ + #ifndef GL_EXT_texture_filter_anisotropic #define GL_EXT_texture_filter_anisotropic 1 #define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF #endif /* GL_EXT_texture_filter_anisotropic */ +#ifndef GL_EXT_texture_filter_minmax +#define GL_EXT_texture_filter_minmax 1 +#endif /* GL_EXT_texture_filter_minmax */ + #ifndef GL_EXT_texture_format_BGRA8888 #define GL_EXT_texture_format_BGRA8888 1 #endif /* GL_EXT_texture_format_BGRA8888 */ +#ifndef GL_EXT_texture_norm16 +#define GL_EXT_texture_norm16 1 +#define GL_R16_EXT 0x822A +#define GL_RG16_EXT 0x822C +#define GL_RGBA16_EXT 0x805B +#define GL_RGB16_EXT 0x8054 +#define GL_RGB16_SNORM_EXT 0x8F9A +#endif /* GL_EXT_texture_norm16 */ + #ifndef GL_EXT_texture_rg #define GL_EXT_texture_rg 1 #define GL_RED_EXT 0x1903 @@ -2254,6 +2780,16 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_RG8_EXT 0x822B #endif /* GL_EXT_texture_rg */ +#ifndef GL_EXT_texture_sRGB_R8 +#define GL_EXT_texture_sRGB_R8 1 +#define GL_SR8_EXT 0x8FBD +#endif /* GL_EXT_texture_sRGB_R8 */ + +#ifndef GL_EXT_texture_sRGB_RG8 +#define GL_EXT_texture_sRGB_RG8 1 +#define GL_SRG8_EXT 0x8FBE +#endif /* GL_EXT_texture_sRGB_RG8 */ + #ifndef GL_EXT_texture_sRGB_decode #define GL_EXT_texture_sRGB_decode 1 #define GL_TEXTURE_SRGB_DECODE_EXT 0x8A48 @@ -2284,6 +2820,14 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368 #endif /* GL_EXT_texture_type_2_10_10_10_REV */ +#ifndef GL_EXT_texture_view +#define GL_EXT_texture_view 1 +#define GL_TEXTURE_VIEW_MIN_LEVEL_EXT 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS_EXT 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER_EXT 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS_EXT 0x82DE +#endif /* GL_EXT_texture_view */ + #ifndef GL_EXT_unpack_subimage #define GL_EXT_unpack_subimage 1 #define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2 @@ -2296,6 +2840,14 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_GCCSO_SHADER_BINARY_FJ 0x9260 #endif /* GL_FJ_shader_binary_GCCSO */ +#ifndef GL_IMG_framebuffer_downsample +#define GL_IMG_framebuffer_downsample 1 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG 0x913C +#define GL_NUM_DOWNSAMPLE_SCALES_IMG 0x913D +#define GL_DOWNSAMPLE_SCALES_IMG 0x913E +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG 0x913F +#endif /* GL_IMG_framebuffer_downsample */ + #ifndef GL_IMG_multisampled_render_to_texture #define GL_IMG_multisampled_render_to_texture 1 #define GL_RENDERBUFFER_SAMPLES_IMG 0x9133 @@ -2334,6 +2886,17 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138 #endif /* GL_IMG_texture_compression_pvrtc2 */ +#ifndef GL_IMG_texture_filter_cubic +#define GL_IMG_texture_filter_cubic 1 +#define GL_CUBIC_IMG 0x9139 +#define GL_CUBIC_MIPMAP_NEAREST_IMG 0x913A +#define GL_CUBIC_MIPMAP_LINEAR_IMG 0x913B +#endif /* GL_IMG_texture_filter_cubic */ + +#ifndef GL_INTEL_framebuffer_CMAA +#define GL_INTEL_framebuffer_CMAA 1 +#endif /* GL_INTEL_framebuffer_CMAA */ + #ifndef GL_INTEL_performance_query #define GL_INTEL_performance_query 1 #define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000 @@ -2358,6 +2921,10 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500 #endif /* GL_INTEL_performance_query */ +#ifndef GL_NV_bindless_texture +#define GL_NV_bindless_texture 1 +#endif /* GL_NV_bindless_texture */ + #ifndef GL_NV_blend_equation_advanced #define GL_NV_blend_equation_advanced 1 #define GL_BLEND_OVERLAP_NV 0x9281 @@ -2416,6 +2983,22 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_BLEND_ADVANCED_COHERENT_NV 0x9285 #endif /* GL_NV_blend_equation_advanced_coherent */ +#ifndef GL_NV_conditional_render +#define GL_NV_conditional_render 1 +#define GL_QUERY_WAIT_NV 0x8E13 +#define GL_QUERY_NO_WAIT_NV 0x8E14 +#define GL_QUERY_BY_REGION_WAIT_NV 0x8E15 +#define GL_QUERY_BY_REGION_NO_WAIT_NV 0x8E16 +#endif /* GL_NV_conditional_render */ + +#ifndef GL_NV_conservative_raster +#define GL_NV_conservative_raster 1 +#define GL_CONSERVATIVE_RASTERIZATION_NV 0x9346 +#define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347 +#define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348 +#define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349 +#endif /* GL_NV_conservative_raster */ + #ifndef GL_NV_copy_buffer #define GL_NV_copy_buffer 1 #define GL_COPY_READ_BUFFER_NV 0x8F36 @@ -2428,15 +3011,6 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_COVERAGE_COMPONENT4_NV 0x8ED1 #define GL_COVERAGE_ATTACHMENT_NV 0x8ED2 #define GL_COVERAGE_BUFFERS_NV 0x8ED3 -#ifdef GL_COVERAGE_SAMPLES_NV -# undef GL_COVERAGE_SAMPLES_NV -/* Extract from the multisample_coverage spec: - * (Note: Earlier versions of this extension included a token - * COVERAGE_SAMPLES_NV that was an alias for SAMPLES/SAMPLES_ARB. This was - * removed to avoid a name collision with a similar COVERAGE_SAMPLES_NV - * token from the NV_coverage_sample extension to OpenGL ES.) - */ -#endif #define GL_COVERAGE_SAMPLES_NV 0x8ED4 #define GL_COVERAGE_ALL_FRAGMENTS_NV 0x8ED5 #define GL_COVERAGE_EDGE_FRAGMENTS_NV 0x8ED6 @@ -2506,6 +3080,21 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_FENCE_CONDITION_NV 0x84F4 #endif /* GL_NV_fence */ +#ifndef GL_NV_fill_rectangle +#define GL_NV_fill_rectangle 1 +#define GL_FILL_RECTANGLE_NV 0x933C +#endif /* GL_NV_fill_rectangle */ + +#ifndef GL_NV_fragment_coverage_to_color +#define GL_NV_fragment_coverage_to_color 1 +#define GL_FRAGMENT_COVERAGE_TO_COLOR_NV 0x92DD +#define GL_FRAGMENT_COVERAGE_COLOR_NV 0x92DE +#endif /* GL_NV_fragment_coverage_to_color */ + +#ifndef GL_NV_fragment_shader_interlock +#define GL_NV_fragment_shader_interlock 1 +#endif /* GL_NV_fragment_shader_interlock */ + #ifndef GL_NV_framebuffer_blit #define GL_NV_framebuffer_blit 1 #define GL_READ_FRAMEBUFFER_NV 0x8CA8 @@ -2514,6 +3103,18 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA #endif /* GL_NV_framebuffer_blit */ +#ifndef GL_NV_framebuffer_mixed_samples +#define GL_NV_framebuffer_mixed_samples 1 +#define GL_COVERAGE_MODULATION_TABLE_NV 0x9331 +#define GL_COLOR_SAMPLES_NV 0x8E20 +#define GL_DEPTH_SAMPLES_NV 0x932D +#define GL_STENCIL_SAMPLES_NV 0x932E +#define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F +#define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330 +#define GL_COVERAGE_MODULATION_NV 0x9332 +#define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333 +#endif /* GL_NV_framebuffer_mixed_samples */ + #ifndef GL_NV_framebuffer_multisample #define GL_NV_framebuffer_multisample 1 #define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB @@ -2525,11 +3126,29 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_NV_generate_mipmap_sRGB 1 #endif /* GL_NV_generate_mipmap_sRGB */ +#ifndef GL_NV_geometry_shader_passthrough +#define GL_NV_geometry_shader_passthrough 1 +#endif /* GL_NV_geometry_shader_passthrough */ + +#ifndef GL_NV_image_formats +#define GL_NV_image_formats 1 +#endif /* GL_NV_image_formats */ + #ifndef GL_NV_instanced_arrays #define GL_NV_instanced_arrays 1 #define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE #endif /* GL_NV_instanced_arrays */ +#ifndef GL_NV_internalformat_sample_query +#define GL_NV_internalformat_sample_query 1 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#define GL_MULTISAMPLES_NV 0x9371 +#define GL_SUPERSAMPLE_SCALE_X_NV 0x9372 +#define GL_SUPERSAMPLE_SCALE_Y_NV 0x9373 +#define GL_CONFORMANT_NV 0x9374 +#endif /* GL_NV_internalformat_sample_query */ + #ifndef GL_NV_non_square_matrices #define GL_NV_non_square_matrices 1 #define GL_FLOAT_MAT2x3_NV 0x8B65 @@ -2540,6 +3159,178 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_FLOAT_MAT4x3_NV 0x8B6A #endif /* GL_NV_non_square_matrices */ +#ifndef GL_NV_path_rendering +#define GL_NV_path_rendering 1 +#define GL_PATH_FORMAT_SVG_NV 0x9070 +#define GL_PATH_FORMAT_PS_NV 0x9071 +#define GL_STANDARD_FONT_NAME_NV 0x9072 +#define GL_SYSTEM_FONT_NAME_NV 0x9073 +#define GL_FILE_NAME_NV 0x9074 +#define GL_PATH_STROKE_WIDTH_NV 0x9075 +#define GL_PATH_END_CAPS_NV 0x9076 +#define GL_PATH_INITIAL_END_CAP_NV 0x9077 +#define GL_PATH_TERMINAL_END_CAP_NV 0x9078 +#define GL_PATH_JOIN_STYLE_NV 0x9079 +#define GL_PATH_MITER_LIMIT_NV 0x907A +#define GL_PATH_DASH_CAPS_NV 0x907B +#define GL_PATH_INITIAL_DASH_CAP_NV 0x907C +#define GL_PATH_TERMINAL_DASH_CAP_NV 0x907D +#define GL_PATH_DASH_OFFSET_NV 0x907E +#define GL_PATH_CLIENT_LENGTH_NV 0x907F +#define GL_PATH_FILL_MODE_NV 0x9080 +#define GL_PATH_FILL_MASK_NV 0x9081 +#define GL_PATH_FILL_COVER_MODE_NV 0x9082 +#define GL_PATH_STROKE_COVER_MODE_NV 0x9083 +#define GL_PATH_STROKE_MASK_NV 0x9084 +#define GL_COUNT_UP_NV 0x9088 +#define GL_COUNT_DOWN_NV 0x9089 +#define GL_PATH_OBJECT_BOUNDING_BOX_NV 0x908A +#define GL_CONVEX_HULL_NV 0x908B +#define GL_BOUNDING_BOX_NV 0x908D +#define GL_TRANSLATE_X_NV 0x908E +#define GL_TRANSLATE_Y_NV 0x908F +#define GL_TRANSLATE_2D_NV 0x9090 +#define GL_TRANSLATE_3D_NV 0x9091 +#define GL_AFFINE_2D_NV 0x9092 +#define GL_AFFINE_3D_NV 0x9094 +#define GL_TRANSPOSE_AFFINE_2D_NV 0x9096 +#define GL_TRANSPOSE_AFFINE_3D_NV 0x9098 +#define GL_UTF8_NV 0x909A +#define GL_UTF16_NV 0x909B +#define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C +#define GL_PATH_COMMAND_COUNT_NV 0x909D +#define GL_PATH_COORD_COUNT_NV 0x909E +#define GL_PATH_DASH_ARRAY_COUNT_NV 0x909F +#define GL_PATH_COMPUTED_LENGTH_NV 0x90A0 +#define GL_PATH_FILL_BOUNDING_BOX_NV 0x90A1 +#define GL_PATH_STROKE_BOUNDING_BOX_NV 0x90A2 +#define GL_SQUARE_NV 0x90A3 +#define GL_ROUND_NV 0x90A4 +#define GL_TRIANGULAR_NV 0x90A5 +#define GL_BEVEL_NV 0x90A6 +#define GL_MITER_REVERT_NV 0x90A7 +#define GL_MITER_TRUNCATE_NV 0x90A8 +#define GL_SKIP_MISSING_GLYPH_NV 0x90A9 +#define GL_USE_MISSING_GLYPH_NV 0x90AA +#define GL_PATH_ERROR_POSITION_NV 0x90AB +#define GL_ACCUM_ADJACENT_PAIRS_NV 0x90AD +#define GL_ADJACENT_PAIRS_NV 0x90AE +#define GL_FIRST_TO_REST_NV 0x90AF +#define GL_PATH_GEN_MODE_NV 0x90B0 +#define GL_PATH_GEN_COEFF_NV 0x90B1 +#define GL_PATH_GEN_COMPONENTS_NV 0x90B3 +#define GL_PATH_STENCIL_FUNC_NV 0x90B7 +#define GL_PATH_STENCIL_REF_NV 0x90B8 +#define GL_PATH_STENCIL_VALUE_MASK_NV 0x90B9 +#define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD +#define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE +#define GL_PATH_COVER_DEPTH_FUNC_NV 0x90BF +#define GL_PATH_DASH_OFFSET_RESET_NV 0x90B4 +#define GL_MOVE_TO_RESETS_NV 0x90B5 +#define GL_MOVE_TO_CONTINUES_NV 0x90B6 +#define GL_CLOSE_PATH_NV 0x00 +#define GL_MOVE_TO_NV 0x02 +#define GL_RELATIVE_MOVE_TO_NV 0x03 +#define GL_LINE_TO_NV 0x04 +#define GL_RELATIVE_LINE_TO_NV 0x05 +#define GL_HORIZONTAL_LINE_TO_NV 0x06 +#define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07 +#define GL_VERTICAL_LINE_TO_NV 0x08 +#define GL_RELATIVE_VERTICAL_LINE_TO_NV 0x09 +#define GL_QUADRATIC_CURVE_TO_NV 0x0A +#define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B +#define GL_CUBIC_CURVE_TO_NV 0x0C +#define GL_RELATIVE_CUBIC_CURVE_TO_NV 0x0D +#define GL_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0E +#define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F +#define GL_SMOOTH_CUBIC_CURVE_TO_NV 0x10 +#define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11 +#define GL_SMALL_CCW_ARC_TO_NV 0x12 +#define GL_RELATIVE_SMALL_CCW_ARC_TO_NV 0x13 +#define GL_SMALL_CW_ARC_TO_NV 0x14 +#define GL_RELATIVE_SMALL_CW_ARC_TO_NV 0x15 +#define GL_LARGE_CCW_ARC_TO_NV 0x16 +#define GL_RELATIVE_LARGE_CCW_ARC_TO_NV 0x17 +#define GL_LARGE_CW_ARC_TO_NV 0x18 +#define GL_RELATIVE_LARGE_CW_ARC_TO_NV 0x19 +#define GL_RESTART_PATH_NV 0xF0 +#define GL_DUP_FIRST_CUBIC_CURVE_TO_NV 0xF2 +#define GL_DUP_LAST_CUBIC_CURVE_TO_NV 0xF4 +#define GL_RECT_NV 0xF6 +#define GL_CIRCULAR_CCW_ARC_TO_NV 0xF8 +#define GL_CIRCULAR_CW_ARC_TO_NV 0xFA +#define GL_CIRCULAR_TANGENT_ARC_TO_NV 0xFC +#define GL_ARC_TO_NV 0xFE +#define GL_RELATIVE_ARC_TO_NV 0xFF +#define GL_BOLD_BIT_NV 0x01 +#define GL_ITALIC_BIT_NV 0x02 +#define GL_GLYPH_WIDTH_BIT_NV 0x01 +#define GL_GLYPH_HEIGHT_BIT_NV 0x02 +#define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04 +#define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08 +#define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10 +#define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20 +#define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40 +#define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80 +#define GL_GLYPH_HAS_KERNING_BIT_NV 0x100 +#define GL_FONT_X_MIN_BOUNDS_BIT_NV 0x00010000 +#define GL_FONT_Y_MIN_BOUNDS_BIT_NV 0x00020000 +#define GL_FONT_X_MAX_BOUNDS_BIT_NV 0x00040000 +#define GL_FONT_Y_MAX_BOUNDS_BIT_NV 0x00080000 +#define GL_FONT_UNITS_PER_EM_BIT_NV 0x00100000 +#define GL_FONT_ASCENDER_BIT_NV 0x00200000 +#define GL_FONT_DESCENDER_BIT_NV 0x00400000 +#define GL_FONT_HEIGHT_BIT_NV 0x00800000 +#define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV 0x01000000 +#define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000 +#define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000 +#define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000 +#define GL_FONT_HAS_KERNING_BIT_NV 0x10000000 +#define GL_ROUNDED_RECT_NV 0xE8 +#define GL_RELATIVE_ROUNDED_RECT_NV 0xE9 +#define GL_ROUNDED_RECT2_NV 0xEA +#define GL_RELATIVE_ROUNDED_RECT2_NV 0xEB +#define GL_ROUNDED_RECT4_NV 0xEC +#define GL_RELATIVE_ROUNDED_RECT4_NV 0xED +#define GL_ROUNDED_RECT8_NV 0xEE +#define GL_RELATIVE_ROUNDED_RECT8_NV 0xEF +#define GL_RELATIVE_RECT_NV 0xF7 +#define GL_FONT_GLYPHS_AVAILABLE_NV 0x9368 +#define GL_FONT_TARGET_UNAVAILABLE_NV 0x9369 +#define GL_FONT_UNAVAILABLE_NV 0x936A +#define GL_FONT_UNINTELLIGIBLE_NV 0x936B +#define GL_CONIC_CURVE_TO_NV 0x1A +#define GL_RELATIVE_CONIC_CURVE_TO_NV 0x1B +#define GL_FONT_NUM_GLYPH_INDICES_BIT_NV 0x20000000 +#define GL_STANDARD_FONT_FORMAT_NV 0x936C +#define GL_PATH_PROJECTION_NV 0x1701 +#define GL_PATH_MODELVIEW_NV 0x1700 +#define GL_PATH_MODELVIEW_STACK_DEPTH_NV 0x0BA3 +#define GL_PATH_MODELVIEW_MATRIX_NV 0x0BA6 +#define GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV 0x0D36 +#define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV 0x84E3 +#define GL_PATH_PROJECTION_STACK_DEPTH_NV 0x0BA4 +#define GL_PATH_PROJECTION_MATRIX_NV 0x0BA7 +#define GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV 0x0D38 +#define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV 0x84E4 +#define GL_FRAGMENT_INPUT_NV 0x936D +#endif /* GL_NV_path_rendering */ + +#ifndef GL_NV_path_rendering_shared_edge +#define GL_NV_path_rendering_shared_edge 1 +#define GL_SHARED_EDGE_NV 0xC0 +#endif /* GL_NV_path_rendering_shared_edge */ + +#ifndef GL_NV_polygon_mode +#define GL_NV_polygon_mode 1 +#define GL_POLYGON_MODE_NV 0x0B40 +#define GL_POLYGON_OFFSET_POINT_NV 0x2A01 +#define GL_POLYGON_OFFSET_LINE_NV 0x2A02 +#define GL_POINT_NV 0x1B00 +#define GL_LINE_NV 0x1B01 +#define GL_FILL_NV 0x1B02 +#endif /* GL_NV_polygon_mode */ + #ifndef GL_NV_read_buffer #define GL_NV_read_buffer 1 #define GL_READ_BUFFER_NV 0x0C02 @@ -2575,6 +3366,26 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_ETC1_SRGB8_NV 0x88EE #endif /* GL_NV_sRGB_formats */ +#ifndef GL_NV_sample_locations +#define GL_NV_sample_locations 1 +#define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D +#define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E +#define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340 +#define GL_SAMPLE_LOCATION_NV 0x8E50 +#define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341 +#define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342 +#define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343 +#endif /* GL_NV_sample_locations */ + +#ifndef GL_NV_sample_mask_override_coverage +#define GL_NV_sample_mask_override_coverage 1 +#endif /* GL_NV_sample_mask_override_coverage */ + +#ifndef GL_NV_shader_noperspective_interpolation +#define GL_NV_shader_noperspective_interpolation 1 +#endif /* GL_NV_shader_noperspective_interpolation */ + #ifndef GL_NV_shadow_samplers_array #define GL_NV_shadow_samplers_array 1 #define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4 @@ -2599,6 +3410,33 @@ typedef signed long int GLsizeiptr; // Changed khronos_ssize_t #define GL_NV_texture_npot_2D_mipmap 1 #endif /* GL_NV_texture_npot_2D_mipmap */ +#ifndef GL_NV_viewport_array +#define GL_NV_viewport_array 1 +#define GL_MAX_VIEWPORTS_NV 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS_NV 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE_NV 0x825D +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV 0x825F +#endif /* GL_NV_viewport_array */ + +#ifndef GL_NV_viewport_array2 +#define GL_NV_viewport_array2 1 +#endif /* GL_NV_viewport_array2 */ + +#ifndef GL_OVR_multiview +#define GL_OVR_multiview 1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632 +#define GL_MAX_VIEWS_OVR 0x9631 +#endif /* GL_OVR_multiview */ + +#ifndef GL_OVR_multiview2 +#define GL_OVR_multiview2 1 +#endif /* GL_OVR_multiview2 */ + +#ifndef GL_OVR_multiview_multisampled_render_to_texture +#define GL_OVR_multiview_multisampled_render_to_texture 1 +#endif /* GL_OVR_multiview_multisampled_render_to_texture */ + #ifndef GL_QCOM_alpha_test #define GL_QCOM_alpha_test 1 #define GL_ALPHA_TEST_QCOM 0x0BC0 @@ -4042,8 +4880,9 @@ typedef unsigned long long EvasGLTime; * Version 2: GLES 2.0 + GLES2 extensions + GLES1 + GLES1.1 extensions * Version 3: [version 2] + Wayland extensions * Version 4: [version 3] + GLES3.0 + GLES3.0 extensions + * Version 5: [version 4] + GLES3.1 */ -#define EVAS_GL_API_VERSION 4 +#define EVAS_GL_API_VERSION 5 /** * @brief The Evas GL API @@ -4891,6 +5730,85 @@ EvasGLImage *img = glapi->evasglCreateImageForContext void (*glVertexAttribIPointer) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer); void (*glWaitSync) (GLsync sync, GLbitfield flags, EvasGLuint64 timeout); /** @} */ + /** + * @anchor gles3.1 + * @name OpenGL-ES 3.1. + * + * Evas_GL_API version 5. + * + * The following functions are supported in all OpenGL-ES 3.1 contexts. + * @{ + */ + /* This defines shows that Evas_GL_API supports GLES3.1 APIs */ + void (*glDispatchCompute) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z); + void (*glDispatchComputeIndirect) (GLintptr indirect); + void (*glDrawArraysIndirect) (GLenum mode, const void *indirect); + void (*glDrawElementsIndirect) (GLenum mode, GLenum type, const void *indirect); + void (*glFramebufferParameteri) (GLenum target, GLenum pname, GLint param); + void (*glGetFramebufferParameteriv) (GLenum target, GLenum pname, GLint *params); + void (*glGetProgramInterfaceiv) (GLuint program, GLenum programInterface, GLenum pname, GLint *params); + GLuint (*glGetProgramResourceIndex) (GLuint program, GLenum programInterface, const GLchar *name); + void (*glGetProgramResourceName) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name); + void (*glGetProgramResourceiv) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params); + GLint (*glGetProgramResourceLocation) (GLuint program, GLenum programInterface, const GLchar *name); + void (*glUseProgramStages) (GLuint pipeline, GLbitfield stages, GLuint program); + void (*glActiveShaderProgram) (GLuint pipeline, GLuint program); + GLuint (*glCreateShaderProgramv) (GLenum type, GLsizei count, const GLchar *const*strings); + void (*glBindProgramPipeline) (GLuint pipeline); + void (*glDeleteProgramPipelines) (GLsizei n, const GLuint *pipelines); + void (*glGenProgramPipelines) (GLsizei n, GLuint *pipelines); + GLboolean (*glIsProgramPipeline) (GLuint pipeline); + void (*glGetProgramPipelineiv) (GLuint pipeline, GLenum pname, GLint *params); + void (*glProgramUniform1i) (GLuint program, GLint location, GLint v0); + void (*glProgramUniform2i) (GLuint program, GLint location, GLint v0, GLint v1); + void (*glProgramUniform3i) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); + void (*glProgramUniform4i) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); + void (*glProgramUniform1ui) (GLuint program, GLint location, GLuint v0); + void (*glProgramUniform2ui) (GLuint program, GLint location, GLuint v0, GLuint v1); + void (*glProgramUniform3ui) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); + void (*glProgramUniform4ui) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); + void (*glProgramUniform1f) (GLuint program, GLint location, GLfloat v0); + void (*glProgramUniform2f) (GLuint program, GLint location, GLfloat v0, GLfloat v1); + void (*glProgramUniform3f) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); + void (*glProgramUniform4f) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); + void (*glProgramUniform1iv) (GLuint program, GLint location, GLsizei count, const GLint *value); + void (*glProgramUniform2iv) (GLuint program, GLint location, GLsizei count, const GLint *value); + void (*glProgramUniform3iv) (GLuint program, GLint location, GLsizei count, const GLint *value); + void (*glProgramUniform4iv) (GLuint program, GLint location, GLsizei count, const GLint *value); + void (*glProgramUniform1uiv) (GLuint program, GLint location, GLsizei count, const GLuint *value); + void (*glProgramUniform2uiv) (GLuint program, GLint location, GLsizei count, const GLuint *value); + void (*glProgramUniform3uiv) (GLuint program, GLint location, GLsizei count, const GLuint *value); + void (*glProgramUniform4uiv) (GLuint program, GLint location, GLsizei count, const GLuint *value); + void (*glProgramUniform1fv) (GLuint program, GLint location, GLsizei count, const GLfloat *value); + void (*glProgramUniform2fv) (GLuint program, GLint location, GLsizei count, const GLfloat *value); + void (*glProgramUniform3fv) (GLuint program, GLint location, GLsizei count, const GLfloat *value); + void (*glProgramUniform4fv) (GLuint program, GLint location, GLsizei count, const GLfloat *value); + void (*glProgramUniformMatrix2fv) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (*glProgramUniformMatrix3fv) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (*glProgramUniformMatrix4fv) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (*glProgramUniformMatrix2x3fv) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (*glProgramUniformMatrix3x2fv) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (*glProgramUniformMatrix2x4fv) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (*glProgramUniformMatrix4x2fv) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (*glProgramUniformMatrix3x4fv) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (*glProgramUniformMatrix4x3fv) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); + void (*glValidateProgramPipeline) (GLuint pipeline); + void (*glGetProgramPipelineInfoLog) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); + void (*glBindImageTexture) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format); + void (*glGetBooleani_v) (GLenum target, GLuint index, GLboolean *data); + void (*glMemoryBarrier) (GLbitfield barriers); + void (*glMemoryBarrierByRegion) (GLbitfield barriers); + void (*glTexStorage2DMultisample) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations); + void (*glGetMultisamplefv) (GLenum pname, GLuint index, GLfloat *val); + void (*glSampleMaski) (GLuint maskNumber, GLbitfield mask); + void (*glGetTexLevelParameteriv) (GLenum target, GLint level, GLenum pname, GLint *params); + void (*glGetTexLevelParameterfv) (GLenum target, GLint level, GLenum pname, GLfloat *params); + void (*glBindVertexBuffer) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride); + void (*glVertexAttribFormat) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset); + void (*glVertexAttribIFormat) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset); + void (*glVertexAttribBinding) (GLuint attribindex, GLuint bindingindex); + void (*glVertexBindingDivisor) (GLuint bindingindex, GLuint divisor); + /** @} */ /* Future calls will be added down here for expansion, when adding * new APIs here, please bump the struct version number (together with diff --git a/src/lib/evas/Evas_GL_GLES3_Helpers.h b/src/lib/evas/Evas_GL_GLES3_Helpers.h index 2bbb090..904abf6 100755 --- a/src/lib/evas/Evas_GL_GLES3_Helpers.h +++ b/src/lib/evas/Evas_GL_GLES3_Helpers.h @@ -517,6 +517,77 @@ evgl_init(...) #define glVertexAttribIPointer __evas_gl_glapi->glVertexAttribIPointer #define glWaitSync __evas_gl_glapi->glWaitSync +//GLES 3.1 +#define glDispatchCompute __evas_gl_glapi->glDispatchCompute +#define glDispatchComputeIndirect __evas_gl_glapi->glDispatchComputeIndirect +#define glDrawArraysIndirect __evas_gl_glapi->glDrawArraysIndirect +#define glDrawElementsIndirect __evas_gl_glapi->glDrawElementsIndirect +#define glFramebufferParameteri __evas_gl_glapi->glFramebufferParameteri +#define glGetFramebufferParameteriv __evas_gl_glapi->glGetFramebufferParameteriv +#define glGetProgramInterfaceiv __evas_gl_glapi->glGetProgramInterfaceiv +#define glGetProgramResourceIndex __evas_gl_glapi->glGetProgramResourceIndex +#define glGetProgramResourceName __evas_gl_glapi->glGetProgramResourceName +#define glGetProgramResourceiv __evas_gl_glapi->glGetProgramResourceiv +#define glGetProgramResourceLocation __evas_gl_glapi->glGetProgramResourceLocation +#define glUseProgramStages __evas_gl_glapi->glUseProgramStages +#define glActiveShaderProgram __evas_gl_glapi->glActiveShaderProgram +#define glCreateShaderProgramv __evas_gl_glapi->glCreateShaderProgramv +#define glBindProgramPipeline __evas_gl_glapi->glBindProgramPipeline +#define glDeleteProgramPipelines __evas_gl_glapi->glDeleteProgramPipelines +#define glGenProgramPipelines __evas_gl_glapi->glGenProgramPipelines +#define glIsProgramPipeline __evas_gl_glapi->glIsProgramPipeline +#define glGetProgramPipelineiv __evas_gl_glapi->glGetProgramPipelineiv +#define glProgramUniform1i __evas_gl_glapi->glProgramUniform1i +#define glProgramUniform2i __evas_gl_glapi->glProgramUniform2i +#define glProgramUniform3i __evas_gl_glapi->glProgramUniform3i +#define glProgramUniform4i __evas_gl_glapi->glProgramUniform4i +#define glProgramUniform1ui __evas_gl_glapi->glProgramUniform1ui +#define glProgramUniform2ui __evas_gl_glapi->glProgramUniform2ui +#define glProgramUniform3ui __evas_gl_glapi->glProgramUniform3ui +#define glProgramUniform4ui __evas_gl_glapi->glProgramUniform4ui +#define glProgramUniform1f __evas_gl_glapi->glProgramUniform1f +#define glProgramUniform2f __evas_gl_glapi->glProgramUniform2f +#define glProgramUniform3f __evas_gl_glapi->glProgramUniform3f +#define glProgramUniform4f __evas_gl_glapi->glProgramUniform4f +#define glProgramUniform1iv __evas_gl_glapi->glProgramUniform1iv +#define glProgramUniform2iv __evas_gl_glapi->glProgramUniform2iv +#define glProgramUniform3iv __evas_gl_glapi->glProgramUniform3iv +#define glProgramUniform4iv __evas_gl_glapi->glProgramUniform4iv +#define glProgramUniform1uiv __evas_gl_glapi->glProgramUniform1uiv +#define glProgramUniform2uiv __evas_gl_glapi->glProgramUniform2uiv +#define glProgramUniform3uiv __evas_gl_glapi->glProgramUniform3uiv +#define glProgramUniform4uiv __evas_gl_glapi->glProgramUniform4uiv +#define glProgramUniform1fv __evas_gl_glapi->glProgramUniform1fv +#define glProgramUniform2fv __evas_gl_glapi->glProgramUniform2fv +#define glProgramUniform3fv __evas_gl_glapi->glProgramUniform3fv +#define glProgramUniform4fv __evas_gl_glapi->glProgramUniform4fv +#define glProgramUniformMatrix2fv __evas_gl_glapi->glProgramUniformMatrix2fv +#define glProgramUniformMatrix3fv __evas_gl_glapi->glProgramUniformMatrix3fv +#define glProgramUniformMatrix4fv __evas_gl_glapi->glProgramUniformMatrix4fv +#define glProgramUniformMatrix2x3fv __evas_gl_glapi->glProgramUniformMatrix2x3fv +#define glProgramUniformMatrix3x2fv __evas_gl_glapi->glProgramUniformMatrix3x2fv +#define glProgramUniformMatrix2x4fv __evas_gl_glapi->glProgramUniformMatrix2x4fv +#define glProgramUniformMatrix4x2fv __evas_gl_glapi->glProgramUniformMatrix4x2fv +#define glProgramUniformMatrix3x4fv __evas_gl_glapi->glProgramUniformMatrix3x4fv +#define glProgramUniformMatrix4x3fv __evas_gl_glapi->glProgramUniformMatrix4x3fv +#define glValidateProgramPipeline __evas_gl_glapi->glValidateProgramPipeline +#define glGetProgramPipelineInfoLog __evas_gl_glapi->glGetProgramPipelineInfoLog +#define glBindImageTexture __evas_gl_glapi->glBindImageTexture +#define glGetBooleani_v __evas_gl_glapi->glGetBooleani_v +#define glMemoryBarrier __evas_gl_glapi->glMemoryBarrier +#define glMemoryBarrierByRegion __evas_gl_glapi->glMemoryBarrierByRegion +#define glTexStorage2DMultisample __evas_gl_glapi->glTexStorage2DMultisample +#define glGetMultisamplefv __evas_gl_glapi->glGetMultisamplefv +#define glSampleMaski __evas_gl_glapi->glSampleMaski +#define glGetTexLevelParameteriv __evas_gl_glapi->glGetTexLevelParameteriv +#define glGetTexLevelParameterfv __evas_gl_glapi->glGetTexLevelParameterfv +#define glBindVertexBuffer __evas_gl_glapi->glBindVertexBuffer +#define glVertexAttribFormat __evas_gl_glapi->glVertexAttribFormat +#define glVertexAttribIFormat __evas_gl_glapi->glVertexAttribIFormat +#define glVertexAttribBinding __evas_gl_glapi->glVertexAttribBinding +#define glVertexBindingDivisor __evas_gl_glapi->glVertexBindingDivisor + + /** * @ingroup Evas_GL_GLES3_Helpers * @brief Macro to check that the GL APIs are properly set (GLES 3.0) diff --git a/src/modules/evas/engines/gl_common/evas_gl_api.c b/src/modules/evas/engines/gl_common/evas_gl_api.c index e469fb3..cd92fa7 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_api.c +++ b/src/modules/evas/engines/gl_common/evas_gl_api.c @@ -747,6 +747,54 @@ _evgl_glDisable(GLenum cap) glDisable(cap); } +void +_evgl_glFramebufferParameteri(GLenum target, GLenum pname, GLint param) +{ + EVGL_Resource *rsc; + EVGL_Context *ctx; + + if (!(rsc=_evgl_tls_resource_get())) + { + ERR("Unable to execute GL command. Error retrieving tls"); + return; + } + + if (!rsc->current_eng) + { + ERR("Unable to retrive Current Engine"); + return; + } + + ctx = rsc->current_ctx; + if (!ctx) + { + ERR("Unable to retrive Current Context"); + return; + } + + if (!_evgl_direct_enabled()) + { + if (target == GL_DRAW_FRAMEBUFFER || target == GL_FRAMEBUFFER) + { + if (ctx->current_draw_fbo == 0) + { + SET_GL_ERROR(GL_INVALID_OPERATION); + return; + } + } + else if (target == GL_READ_FRAMEBUFFER) + { + if (ctx->current_read_fbo == 0) + { + SET_GL_ERROR(GL_INVALID_OPERATION); + return; + } + } + } + + glFramebufferParameteri(target, pname, param); +} + static void _evgl_glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { @@ -1068,6 +1116,53 @@ _evgl_glGetFramebufferAttachmentParameteriv(GLenum target, GLenum attachment, GL } void +_evgl_glGetFramebufferParameteriv(GLenum target, GLenum pname, GLint* params) +{ + EVGL_Resource *rsc; + EVGL_Context *ctx; + + if (!(rsc=_evgl_tls_resource_get())) + { + ERR("Unable to execute GL command. Error retrieving tls"); + return; + } + + if (!rsc->current_eng) + { + ERR("Unable to retrive Current Engine"); + return; + } + + ctx = rsc->current_ctx; + if (!ctx) + { + ERR("Unable to retrive Current Context"); + return; + } + + if (!_evgl_direct_enabled()) + { + if (target == GL_DRAW_FRAMEBUFFER || target == GL_FRAMEBUFFER) + { + if (ctx->current_draw_fbo == 0) + { + SET_GL_ERROR(GL_INVALID_OPERATION); + return; + } + } + else if (target == GL_READ_FRAMEBUFFER) + { + if (ctx->current_read_fbo == 0) + { + SET_GL_ERROR(GL_INVALID_OPERATION); + return; + } + } + } + + glGetFramebufferParameteriv(target, pname, params); +} +void _evgl_glGetIntegerv(GLenum pname, GLint* params) { EVGL_Resource *rsc; @@ -2465,7 +2560,7 @@ _evgl_api_gles2_get(Evas_GL_API *funcs, Eina_Bool debug) } static void -_normal_gles3_api_get(Evas_GL_API *funcs) +_normal_gles3_api_get(Evas_GL_API *funcs, int minor_version) { if (!funcs) return; funcs->version = EVAS_GL_API_VERSION; @@ -2724,11 +2819,84 @@ _normal_gles3_api_get(Evas_GL_API *funcs) ORD(glVertexAttribIPointer); ORD(glWaitSync); + if (minor_version > 0) + { +//GLES 3.1 + ORD(glDispatchCompute); + ORD(glDispatchComputeIndirect); + ORD(glDrawArraysIndirect); + ORD(glDrawElementsIndirect); + ORD(glFramebufferParameteri); + ORD(glGetFramebufferParameteriv); + ORD(glGetProgramInterfaceiv); + ORD(glGetProgramResourceIndex); + ORD(glGetProgramResourceName); + ORD(glGetProgramResourceiv); + ORD(glGetProgramResourceLocation); + ORD(glUseProgramStages); + ORD(glActiveShaderProgram); + ORD(glCreateShaderProgramv); + ORD(glBindProgramPipeline); + ORD(glDeleteProgramPipelines); + ORD(glGenProgramPipelines); + ORD(glIsProgramPipeline); + ORD(glGetProgramPipelineiv); + ORD(glProgramUniform1i); + ORD(glProgramUniform2i); + ORD(glProgramUniform3i); + ORD(glProgramUniform4i); + ORD(glProgramUniform1ui); + ORD(glProgramUniform2ui); + ORD(glProgramUniform3ui); + ORD(glProgramUniform4ui); + ORD(glProgramUniform1f); + ORD(glProgramUniform2f); + ORD(glProgramUniform3f); + ORD(glProgramUniform4f); + ORD(glProgramUniform1iv); + ORD(glProgramUniform2iv); + ORD(glProgramUniform3iv); + ORD(glProgramUniform4iv); + ORD(glProgramUniform1uiv); + ORD(glProgramUniform2uiv); + ORD(glProgramUniform3uiv); + ORD(glProgramUniform4uiv); + ORD(glProgramUniform1fv); + ORD(glProgramUniform2fv); + ORD(glProgramUniform3fv); + ORD(glProgramUniform4fv); + ORD(glProgramUniformMatrix2fv); + ORD(glProgramUniformMatrix3fv); + ORD(glProgramUniformMatrix4fv); + ORD(glProgramUniformMatrix2x3fv); + ORD(glProgramUniformMatrix3x2fv); + ORD(glProgramUniformMatrix2x4fv); + ORD(glProgramUniformMatrix4x2fv); + ORD(glProgramUniformMatrix3x4fv); + ORD(glProgramUniformMatrix4x3fv); + ORD(glValidateProgramPipeline); + ORD(glGetProgramPipelineInfoLog); + ORD(glBindImageTexture); + ORD(glGetBooleani_v); + ORD(glMemoryBarrier); + ORD(glMemoryBarrierByRegion); + ORD(glTexStorage2DMultisample); + ORD(glGetMultisamplefv); + ORD(glSampleMaski); + ORD(glGetTexLevelParameteriv); + ORD(glGetTexLevelParameterfv); + ORD(glBindVertexBuffer); + ORD(glVertexAttribFormat); + ORD(glVertexAttribIFormat); + ORD(glVertexAttribBinding); + ORD(glVertexBindingDivisor); + } + #undef ORD } static void -_debug_gles3_api_get(Evas_GL_API *funcs) +_debug_gles3_api_get(Evas_GL_API *funcs, int minor_version) { if (!funcs) return; funcs->version = EVAS_GL_API_VERSION; @@ -2984,12 +3152,86 @@ _debug_gles3_api_get(Evas_GL_API *funcs) ORD(glVertexAttribI4uiv); ORD(glVertexAttribIPointer); ORD(glWaitSync); + + if (minor_version > 0) + { + //GLES 3.1 + ORD(glDispatchCompute); + ORD(glDispatchComputeIndirect); + ORD(glDrawArraysIndirect); + ORD(glDrawElementsIndirect); + ORD(glFramebufferParameteri); + ORD(glGetFramebufferParameteriv); + ORD(glGetProgramInterfaceiv); + ORD(glGetProgramResourceIndex); + ORD(glGetProgramResourceName); + ORD(glGetProgramResourceiv); + ORD(glGetProgramResourceLocation); + ORD(glUseProgramStages); + ORD(glActiveShaderProgram); + ORD(glCreateShaderProgramv); + ORD(glBindProgramPipeline); + ORD(glDeleteProgramPipelines); + ORD(glGenProgramPipelines); + ORD(glIsProgramPipeline); + ORD(glGetProgramPipelineiv); + ORD(glProgramUniform1i); + ORD(glProgramUniform2i); + ORD(glProgramUniform3i); + ORD(glProgramUniform4i); + ORD(glProgramUniform1ui); + ORD(glProgramUniform2ui); + ORD(glProgramUniform3ui); + ORD(glProgramUniform4ui); + ORD(glProgramUniform1f); + ORD(glProgramUniform2f); + ORD(glProgramUniform3f); + ORD(glProgramUniform4f); + ORD(glProgramUniform1iv); + ORD(glProgramUniform2iv); + ORD(glProgramUniform3iv); + ORD(glProgramUniform4iv); + ORD(glProgramUniform1uiv); + ORD(glProgramUniform2uiv); + ORD(glProgramUniform3uiv); + ORD(glProgramUniform4uiv); + ORD(glProgramUniform1fv); + ORD(glProgramUniform2fv); + ORD(glProgramUniform3fv); + ORD(glProgramUniform4fv); + ORD(glProgramUniformMatrix2fv); + ORD(glProgramUniformMatrix3fv); + ORD(glProgramUniformMatrix4fv); + ORD(glProgramUniformMatrix2x3fv); + ORD(glProgramUniformMatrix3x2fv); + ORD(glProgramUniformMatrix2x4fv); + ORD(glProgramUniformMatrix4x2fv); + ORD(glProgramUniformMatrix3x4fv); + ORD(glProgramUniformMatrix4x3fv); + ORD(glValidateProgramPipeline); + ORD(glGetProgramPipelineInfoLog); + ORD(glBindImageTexture); + ORD(glGetBooleani_v); + ORD(glMemoryBarrier); + ORD(glMemoryBarrierByRegion); + ORD(glTexStorage2DMultisample); + ORD(glGetMultisamplefv); + ORD(glSampleMaski); + ORD(glGetTexLevelParameteriv); + ORD(glGetTexLevelParameterfv); + ORD(glBindVertexBuffer); + ORD(glVertexAttribFormat); + ORD(glVertexAttribIFormat); + ORD(glVertexAttribBinding); + ORD(glVertexBindingDivisor); + } + #undef ORD } static Eina_Bool -_evgl_load_gles3_apis(void *dl_handle, Evas_GL_API *funcs) +_evgl_load_gles3_apis(void *dl_handle, Evas_GL_API *funcs, int minor_version) { if (!dl_handle) return EINA_FALSE; @@ -3109,6 +3351,80 @@ _evgl_load_gles3_apis(void *dl_handle, Evas_GL_API *funcs) ORD(glVertexAttribI4uiv); ORD(glVertexAttribIPointer); ORD(glWaitSync); + + if (minor_version > 0) + { + //GLES 3.1 + ORD(glDispatchCompute); + ORD(glDispatchComputeIndirect); + ORD(glDrawArraysIndirect); + ORD(glDrawElementsIndirect); + ORD(glFramebufferParameteri); + ORD(glGetFramebufferParameteriv); + ORD(glGetProgramInterfaceiv); + ORD(glGetProgramResourceIndex); + ORD(glGetProgramResourceName); + ORD(glGetProgramResourceiv); + ORD(glGetProgramResourceLocation); + ORD(glUseProgramStages); + ORD(glActiveShaderProgram); + ORD(glCreateShaderProgramv); + ORD(glBindProgramPipeline); + ORD(glDeleteProgramPipelines); + ORD(glGenProgramPipelines); + ORD(glIsProgramPipeline); + ORD(glGetProgramPipelineiv); + ORD(glProgramUniform1i); + ORD(glProgramUniform2i); + ORD(glProgramUniform3i); + ORD(glProgramUniform4i); + ORD(glProgramUniform1ui); + ORD(glProgramUniform2ui); + ORD(glProgramUniform3ui); + ORD(glProgramUniform4ui); + ORD(glProgramUniform1f); + ORD(glProgramUniform2f); + ORD(glProgramUniform3f); + ORD(glProgramUniform4f); + ORD(glProgramUniform1iv); + ORD(glProgramUniform2iv); + ORD(glProgramUniform3iv); + ORD(glProgramUniform4iv); + ORD(glProgramUniform1uiv); + ORD(glProgramUniform2uiv); + ORD(glProgramUniform3uiv); + ORD(glProgramUniform4uiv); + ORD(glProgramUniform1fv); + ORD(glProgramUniform2fv); + ORD(glProgramUniform3fv); + ORD(glProgramUniform4fv); + ORD(glProgramUniformMatrix2fv); + ORD(glProgramUniformMatrix3fv); + ORD(glProgramUniformMatrix4fv); + ORD(glProgramUniformMatrix2x3fv); + ORD(glProgramUniformMatrix3x2fv); + ORD(glProgramUniformMatrix2x4fv); + ORD(glProgramUniformMatrix4x2fv); + ORD(glProgramUniformMatrix3x4fv); + ORD(glProgramUniformMatrix4x3fv); + ORD(glValidateProgramPipeline); + ORD(glGetProgramPipelineInfoLog); + ORD(glBindImageTexture); + ORD(glGetBooleani_v); + ORD(glMemoryBarrier); + ORD(glMemoryBarrierByRegion); + ORD(glTexStorage2DMultisample); + ORD(glGetMultisamplefv); + ORD(glSampleMaski); + ORD(glGetTexLevelParameteriv); + ORD(glGetTexLevelParameterfv); + ORD(glBindVertexBuffer); + ORD(glVertexAttribFormat); + ORD(glVertexAttribIFormat); + ORD(glVertexAttribBinding); + ORD(glVertexBindingDivisor); + } + #undef ORD return EINA_TRUE; } @@ -3116,7 +3432,7 @@ _evgl_load_gles3_apis(void *dl_handle, Evas_GL_API *funcs) static Eina_Bool -_evgl_gles3_api_init(void) +_evgl_gles3_api_init(int minor_version) { static Eina_Bool _initialized = EINA_FALSE; if (_initialized) return EINA_TRUE; @@ -3148,7 +3464,7 @@ _evgl_gles3_api_init(void) return EINA_FALSE; } - if (!_evgl_load_gles3_apis(_gles3_handle, &_gles3_api)) + if (!_evgl_load_gles3_apis(_gles3_handle, &_gles3_api, minor_version)) { return EINA_FALSE; } @@ -3161,13 +3477,22 @@ _evgl_gles3_api_init(void) void _evgl_api_gles3_get(Evas_GL_API *funcs, Eina_Bool debug) { - if (!_evgl_gles3_api_init()) + const char *ret = (const char *) glGetString(GL_VERSION); + int minor_version = ret[12] - '0'; + + if (minor_version > 9 || minor_version < 0) + { + ERR("OpenGL ES version is invalid"); + return; + } + + if (!_evgl_gles3_api_init(minor_version)) return; if (debug) - _debug_gles3_api_get(funcs); + _debug_gles3_api_get(funcs, minor_version); else - _normal_gles3_api_get(funcs); + _normal_gles3_api_get(funcs, minor_version); if (evgl_engine->direct_scissor_off) _direct_scissor_off_api_get(funcs); diff --git a/src/modules/evas/engines/gl_common/evas_gl_api_ext.c b/src/modules/evas/engines/gl_common/evas_gl_api_ext.c index b826df7..f41400b 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_api_ext.c +++ b/src/modules/evas/engines/gl_common/evas_gl_api_ext.c @@ -547,6 +547,42 @@ _evgl_glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments, const GLenu #undef _EVASGL_EXT_FUNCTION_DRVFUNC #undef _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR +//3.X ext bodies +#define _EVASGL_EXT_CHECK_SUPPORT(name) +#define _EVASGL_EXT_DISCARD_SUPPORT() +#define _EVASGL_EXT_BEGIN(name) +#define _EVASGL_EXT_END() +#define _EVASGL_EXT_DRVNAME(name) +#define _EVASGL_EXT_DRVNAME_PRIVATE(name) +#define _EVASGL_EXT_DRVNAME_DESKTOP(deskname) +#define _EVASGL_EXT_FUNCTION_BEGIN(ret, name, param1, param2) \ + static ret evgl_gles3_##name param1 { EVGL_FUNC_BEGIN(); return EXT_FUNC_GLES3(name) param2; } +#define _EVASGL_EXT_FUNCTION_END() +#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN() +#define _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END() +#define _EVASGL_EXT_FUNCTION_PRIVATE_BEGIN(ret, name, param1, param2) +#define _EVASGL_EXT_FUNCTION_PRIVATE_END() +#define _EVASGL_EXT_FUNCTION_DRVFUNC(name) +#define _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR(name) + +#include "evas_gl_api_ext_def.h" + +#undef _EVASGL_EXT_CHECK_SUPPORT +#undef _EVASGL_EXT_DISCARD_SUPPORT +#undef _EVASGL_EXT_BEGIN +#undef _EVASGL_EXT_END +#undef _EVASGL_EXT_DRVNAME +#undef _EVASGL_EXT_DRVNAME_PRIVATE +#undef _EVASGL_EXT_DRVNAME_DESKTOP +#undef _EVASGL_EXT_FUNCTION_BEGIN +#undef _EVASGL_EXT_FUNCTION_END +#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_BEGIN +#undef _EVASGL_EXT_FUNCTION_DISABLE_FOR_GLES1_END +#undef _EVASGL_EXT_FUNCTION_PRIVATE_BEGIN +#undef _EVASGL_EXT_FUNCTION_PRIVATE_END +#undef _EVASGL_EXT_FUNCTION_DRVFUNC +#undef _EVASGL_EXT_FUNCTION_DRVFUNC_PROCADDR + // 0: not initialized, // 1: GLESv2 initialized, // 3: GLESv1 and GLESv2 initialized, @@ -1487,7 +1523,7 @@ evgl_api_gles3_ext_get(Evas_GL_API *gl_funcs, void *getproc, const char *glueext } } -#define ORD(f) EVAS_API_OVERRIDE(f, gl_funcs, evgl_) +#define ORD(f) EVAS_API_OVERRIDE(f, gl_funcs, evgl_gles3_) ///////////////////////////////////////////////////////////////////////////////////////////////////// // Extension HEADER diff --git a/src/modules/evas/engines/gl_common/evas_gl_api_ext_def.h b/src/modules/evas/engines/gl_common/evas_gl_api_ext_def.h index 5a41d71..8c8b1c0 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_api_ext_def.h +++ b/src/modules/evas/engines/gl_common/evas_gl_api_ext_def.h @@ -1196,6 +1196,54 @@ _EVASGL_EXT_BEGIN(GL_OES_EGL_image_external) #endif _EVASGL_EXT_END() + +_EVASGL_EXT_BEGIN(shader_image_atomic) + _EVASGL_EXT_DRVNAME(GL_OES_shader_image_atomic) +_EVASGL_EXT_END() + +_EVASGL_EXT_BEGIN(texture_rg) + _EVASGL_EXT_DRVNAME(GL_EXT_texture_rg) +_EVASGL_EXT_END() + +_EVASGL_EXT_BEGIN(shadow_samplers) + _EVASGL_EXT_DRVNAME(GL_EXT_shadow_samplers) +_EVASGL_EXT_END() + +_EVASGL_EXT_BEGIN(texture_compression_astc) + _EVASGL_EXT_DRVNAME(GL_OES_texture_compression_astc) +_EVASGL_EXT_END() + +_EVASGL_EXT_BEGIN(texture_compression_astc_ldr) + _EVASGL_EXT_DRVNAME(GL_KHR_texture_compression_astc_ldr) +_EVASGL_EXT_END() + +_EVASGL_EXT_BEGIN(texture_compression_astc_hdr) + _EVASGL_EXT_DRVNAME(GL_KHR_texture_compression_astc_hdr) +_EVASGL_EXT_END() + +_EVASGL_EXT_BEGIN(texture_stencil8) + _EVASGL_EXT_DRVNAME(GL_OES_texture_stencil8) +_EVASGL_EXT_END() + +_EVASGL_EXT_BEGIN(shader_pixel_local_storage) + _EVASGL_EXT_DRVNAME(GL_EXT_shader_pixel_local_storage) +_EVASGL_EXT_END() + +_EVASGL_EXT_BEGIN(shader_framebuffer_fetch) + _EVASGL_EXT_DRVNAME(GL_ARM_shader_framebuffer_fetch) +_EVASGL_EXT_END() + +_EVASGL_EXT_BEGIN(shader_framebuffer_fetch_depth_stencil) + _EVASGL_EXT_DRVNAME(GL_ARM_shader_framebuffer_fetch_depth_stencil) +_EVASGL_EXT_END() + +_EVASGL_EXT_BEGIN(sRGB_write_control) + _EVASGL_EXT_DRVNAME(GL_EXT_sRGB_write_control) +_EVASGL_EXT_END() + +_EVASGL_EXT_BEGIN(texture_sRGB_decode) + _EVASGL_EXT_DRVNAME(GL_EXT_texture_sRGB_decode) +_EVASGL_EXT_END() #endif // GL_GLES /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1450,7 +1498,20 @@ _EVASGL_EXT_BEGIN(point_size_array) _EVASGL_EXT_END() +// ---------------------------------------------------------- +_EVASGL_EXT_BEGIN(blend_equation_advanced) + _EVASGL_EXT_DRVNAME(GL_KHR_blend_equation_advanced) + + _EVASGL_EXT_FUNCTION_WHITELIST("glBlendBarrierKHR") +_EVASGL_EXT_END() + +// ---------------------------------------------------------- +_EVASGL_EXT_BEGIN(texture_storage_multisample_2d_array) + _EVASGL_EXT_DRVNAME(GL_OES_texture_storage_multisample_2d_array) + + _EVASGL_EXT_FUNCTION_WHITELIST("glTexStorage3DMultisampleOES") +_EVASGL_EXT_END() #endif // _EVASGL_EXT_WHITELIST_ONLY ("safe" extensions) #endif // _EVASGL_EXT_ENABLE_GL_GLES diff --git a/src/modules/evas/engines/gl_common/evas_gl_api_gles3_def.h b/src/modules/evas/engines/gl_common/evas_gl_api_gles3_def.h index f282857..9879453 100644 --- a/src/modules/evas/engines/gl_common/evas_gl_api_gles3_def.h +++ b/src/modules/evas/engines/gl_common/evas_gl_api_gles3_def.h @@ -1,6 +1,9 @@ _EVASGL_FUNCTION_PRIVATE_BEGIN_VOID( glDrawBuffers, (GLsizei n, const GLenum *bufs), (n, bufs)) _EVASGL_FUNCTION_PRIVATE_BEGIN(const GLubyte *, glGetStringi, (GLenum name, GLuint index), (name, index)) _EVASGL_FUNCTION_PRIVATE_BEGIN_VOID( glReadBuffer, (GLenum src), (src)) +//GLES 3.1 +_EVASGL_FUNCTION_PRIVATE_BEGIN_VOID( glFramebufferParameteri, (GLenum target, GLenum pname, GLint param), (target, pname, param)) +_EVASGL_FUNCTION_PRIVATE_BEGIN_VOID( glGetFramebufferParameteriv, (GLenum target, GLenum pname, GLint *params), (target, pname, params)) _EVASGL_FUNCTION_BEGIN_VOID( glBeginQuery, (GLenum target, GLuint id), (target, id)) _EVASGL_FUNCTION_BEGIN_VOID( glBeginTransformFeedback, (GLenum primitiveMode), (primitiveMode)) @@ -103,3 +106,72 @@ _EVASGL_FUNCTION_BEGIN_VOID( glVertexAttribI4ui, (GLuint index, GLuint v0, GLuin _EVASGL_FUNCTION_BEGIN_VOID( glVertexAttribI4uiv, (GLuint index, const GLuint *v), (index, v)) _EVASGL_FUNCTION_BEGIN_VOID( glVertexAttribIPointer, (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer), (index, size, type, stride, pointer)) _EVASGL_FUNCTION_BEGIN_VOID( glWaitSync, (GLsync sync, GLbitfield flags, EvasGLuint64 timeout), (sync, flags, timeout)) + + +//GLES 3.1 +_EVASGL_FUNCTION_BEGIN_VOID( glDispatchCompute, (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z), (num_groups_x, num_groups_y, num_groups_z)) +_EVASGL_FUNCTION_BEGIN_VOID( glDispatchComputeIndirect, (GLintptr indirect), (indirect)) +_EVASGL_FUNCTION_BEGIN_VOID( glDrawArraysIndirect, (GLenum mode, const void *indirect), (mode, indirect)) +_EVASGL_FUNCTION_BEGIN_VOID( glDrawElementsIndirect, (GLenum mode, GLenum type, const void *indirect), (mode, type, indirect)) +_EVASGL_FUNCTION_BEGIN_VOID( glGetProgramInterfaceiv, (GLuint program, GLenum programInterface, GLenum pname, GLint *params), (program, programInterface, pname, params)) +_EVASGL_FUNCTION_BEGIN(GLuint, glGetProgramResourceIndex, (GLuint program, GLenum programInterface, const GLchar *name), (program, programInterface, name)) +_EVASGL_FUNCTION_BEGIN_VOID( glGetProgramResourceName, (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name), (program, programInterface, index, bufSize, length, name)) +_EVASGL_FUNCTION_BEGIN_VOID( glGetProgramResourceiv, (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params), (program, programInterface, index, propCount, props, bufSize, length, params)) +_EVASGL_FUNCTION_BEGIN(GLuint, glGetProgramResourceLocation, (GLuint program, GLenum programInterface, const GLchar *name), (program, programInterface, name)) +_EVASGL_FUNCTION_BEGIN_VOID( glUseProgramStages, (GLuint pipeline, GLbitfield stages, GLuint program), (pipeline, stages, program)) +_EVASGL_FUNCTION_BEGIN_VOID( glActiveShaderProgram, (GLuint pipeline, GLuint program), (pipeline, program)) +_EVASGL_FUNCTION_BEGIN(GLuint, glCreateShaderProgramv, (GLenum type, GLsizei count, const GLchar *const*strings), (type, count, strings)) +_EVASGL_FUNCTION_BEGIN_VOID( glBindProgramPipeline, (GLuint pipeline), (pipeline)) +_EVASGL_FUNCTION_BEGIN_VOID( glDeleteProgramPipelines, (GLsizei n, const GLuint *pipelines), (n, pipelines)) +_EVASGL_FUNCTION_BEGIN_VOID( glGenProgramPipelines, (GLsizei n, GLuint *pipelines), (n, pipelines)) +_EVASGL_FUNCTION_BEGIN(GLboolean, glIsProgramPipeline, (GLuint pipeline), (pipeline)) +_EVASGL_FUNCTION_BEGIN_VOID( glGetProgramPipelineiv, (GLuint pipeline, GLenum pname, GLint *params), (pipeline, pname, params)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform1i, (GLuint program, GLint location, GLint v0), (program, location, v0)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform2i, (GLuint program, GLint location, GLint v0, GLint v1), (program, location, v0, v1)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform3i, (GLuint program, GLint location, GLint v0, GLint v1, GLint v2), (program, location, v0, v1, v2)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform4i, (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3), (program, location, v0, v1, v2, v3)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform1ui, (GLuint program, GLint location, GLuint v0), (program, location, v0)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform2ui, (GLuint program, GLint location, GLuint v0, GLuint v1), (program, location, v0, v1)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform3ui, (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2), (program, location, v0, v1, v2)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform4ui, (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3), (program, location, v0, v1, v2, v3)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform1f, (GLuint program, GLint location, GLfloat v0), (program, location, v0)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform2f, (GLuint program, GLint location, GLfloat v0, GLfloat v1) ,(program, location, v0, v1)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform3f, (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2), (program, location, v0, v1, v2)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform4f, (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3), (program, location, v0, v1, v2, v3)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform1iv, (GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform2iv, (GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform3iv, (GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform4iv, (GLuint program, GLint location, GLsizei count, const GLint *value), (program, location, count, value)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform1uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform2uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform3uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform4uiv, (GLuint program, GLint location, GLsizei count, const GLuint *value), (program, location, count, value)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform1fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform2fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform3fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniform4fv, (GLuint program, GLint location, GLsizei count, const GLfloat *value), (program, location, count, value)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniformMatrix2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value), (program, location, count, transpose, value)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniformMatrix3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value), (program, location, count, transpose, value)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniformMatrix4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value), (program, location, count, transpose, value)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniformMatrix2x3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value), (program, location, count, transpose, value)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniformMatrix3x2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value), (program, location, count, transpose, value)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniformMatrix2x4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value), (program, location, count, transpose, value)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniformMatrix4x2fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value), (program, location, count, transpose, value)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniformMatrix3x4fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value), (program, location, count, transpose, value)) +_EVASGL_FUNCTION_BEGIN_VOID( glProgramUniformMatrix4x3fv, (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value), (program, location, count, transpose, value)) +_EVASGL_FUNCTION_BEGIN_VOID( glValidateProgramPipeline, (GLuint pipeline), (pipeline)) +_EVASGL_FUNCTION_BEGIN_VOID( glGetProgramPipelineInfoLog, (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog), (pipeline, bufSize, length, infoLog)) +_EVASGL_FUNCTION_BEGIN_VOID( glBindImageTexture, (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format), (unit, texture, level, layered, layer, access, format)) +_EVASGL_FUNCTION_BEGIN_VOID( glGetBooleani_v, (GLenum target, GLuint index, GLboolean *data), (target, index, data)) +_EVASGL_FUNCTION_BEGIN_VOID( glMemoryBarrier, (GLbitfield barriers), (barriers)) +_EVASGL_FUNCTION_BEGIN_VOID( glMemoryBarrierByRegion, (GLbitfield barriers), (barriers)) +_EVASGL_FUNCTION_BEGIN_VOID( glTexStorage2DMultisample, (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations), (target, samples, internalformat, width, height, fixedsamplelocations)) +_EVASGL_FUNCTION_BEGIN_VOID( glGetMultisamplefv, (GLenum pname, GLuint index, GLfloat *val), (pname, index, val)) +_EVASGL_FUNCTION_BEGIN_VOID( glSampleMaski, (GLuint maskNumber, GLbitfield mask), (maskNumber, mask)) +_EVASGL_FUNCTION_BEGIN_VOID( glGetTexLevelParameteriv, (GLenum target, GLint level, GLenum pname, GLint *params), (target, level, pname, params)) +_EVASGL_FUNCTION_BEGIN_VOID( glGetTexLevelParameterfv, (GLenum target, GLint level, GLenum pname, GLfloat *params), (target, level, pname, params)) +_EVASGL_FUNCTION_BEGIN_VOID( glBindVertexBuffer, (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride), (bindingindex, buffer, offset, stride)) +_EVASGL_FUNCTION_BEGIN_VOID( glVertexAttribFormat, (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset), (attribindex, size, type, normalized, relativeoffset)) +_EVASGL_FUNCTION_BEGIN_VOID( glVertexAttribIFormat, (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset), (attribindex, size, type, relativeoffset)) +_EVASGL_FUNCTION_BEGIN_VOID( glVertexAttribBinding, (GLuint attribindex, GLuint bindingindex), (attribindex, bindingindex)) +_EVASGL_FUNCTION_BEGIN_VOID( glVertexBindingDivisor, (GLuint bindingindex, GLuint divisor), (bindingindex, divisor)) \ No newline at end of file -- 2.7.4