[Feat] (All): Continue building the basic structure.

This commit is contained in:
BZLZHH
2025-07-12 20:29:20 +08:00
parent 9542512209
commit 9194e1c97f
15 changed files with 4689 additions and 4 deletions
+7
View File
@@ -20,12 +20,19 @@ add_library(${CMAKE_PROJECT_NAME} SHARED
MobileGL/MG_Util/Debug/Log.cpp
MobileGL/MG_Util/Converters/GLToStr/GLEnumConverter.cpp
MobileGL/MG_Util/Converters/MGToStr/GLExtensionConverter.cpp
MobileGL/MG_Impl/GLXImpl/Exporting/Definitions.cpp
MobileGL/MG_Impl/GLXImpl/LookUp/LookUp.cpp
MobileGL/MG_Impl/EGLImpl/Exporting/Definitions.cpp
MobileGL/MG_Impl/EGLImpl/Temporary/TemporaryEGLImpl.cpp
MobileGL/MG_Impl/GLImpl/Exporting/Definitions.cpp
MobileGL/MG_Impl/GLImpl/Getter/GL_Getter.cpp
MobileGL/MG_Backend/Init.cpp
)
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE
+20 -1
View File
@@ -10,4 +10,23 @@
#define MOBILEGL_LOG_FILE_PATH "/sdcard/MG/latest.log"
#elif
#define MOBILEGL_LOG_FILE_PATH ""
#endif
#endif
namespace MobileGL {
namespace MG_Config {
inline const String ProjectName = "MobileGL";
inline const String CoreName = "MobileGL Core";
inline const String CoreVendor = "MobileGL-Dev";
inline const Version CoreVersion = { 1, 0, 0, "-Dev" };
extern RendererInfo* RendererInfoPtr;
namespace Backend {
#define MOBILEGL_BACKEND MOBILEGL_BACKEND_UNKNOWN
namespace Diligent {
inline const MG_Backend::Diligent::SpecificBackendType SpecificBackend =
MG_Backend::Diligent::SpecificBackendType::Vulkan;
}
}
}
}
+9 -1
View File
@@ -23,6 +23,7 @@
#include <chrono>
#include <thread>
#include <string>
#include <string_view>
#include <map>
#include <vector>
#include <cctype>
@@ -67,10 +68,17 @@
#include <GL/gl.h>
#include <GL/glext.h>
#include "MG_Util/GLExtensions.h"
#include "MG_Util/Types.h"
#include "MG_Util/Debug/Log.h"
#include "MG_Util/Converters/GLToStr/GLEnumConverter.h"
#include "MG_Util/Converters/MGToStr/GLExtensionConverter.h"
#include "MG_Backend/Backends.h"
#include "Config.h"
#include "MG_Impl/GLXImpl/LookUp/LookUp.h"
#include "MG_Impl/EGLImpl/Temporary/TemporaryEGLImpl.h"
#include "MG_Impl/EGLImpl/Temporary/TemporaryEGLImpl.h"
#include "MG_Impl/GLImpl/Getter/GL_Getter.h"
+1
View File
@@ -4,6 +4,7 @@ namespace MobileGL {
void MG_Initialize() {
MG_Util::Debug::InitFile();
MGLOG_I("MobileGL Initializing...");
MG_Backend::Init();
}
void MG_Destroy() {
+57
View File
@@ -0,0 +1,57 @@
#pragma once
#define MOBILEGL_BACKEND_TYPE_UNKNOWN 0
#define MOBILEGL_BACKEND_TYPE_DILIGENT 1
#define MOBILEGL_BACKEND_TYPE_MRHI 2
#define MOBILEGL_BACKEND_TYPE_DIRECT 3 // the previous "ShittilyDraw"
namespace MobileGL {
namespace MG_Backend {
namespace Unknown {
const RendererInfo RendererInfoUnknown = {
"<unknown renderer of MobileGL>",
"<unknown backend>",
", <unknown>",
{
{ 0, 0, 0 },
{ 0, 0, 0 },
{ },
},
{ }
};
}
namespace Diligent {
enum class SpecificBackendType {
Vulkan,
Metal
};
const RendererInfo RendererInfoVulkan = {
"MobileGlued-vk",
"Diligent Engine (Vulkan)",
Nullopt,
{
{ 3, 2, 0 },
{ 4, 5, 0 },
{ V_OpenGL30, V_OpenGL31, V_OpenGL32 },
false
},
{ }
};
const RendererInfo RendererInfoMetal = {
"MobileGlued-mtl",
"Diligent Engine (Metal)",
Nullopt,
{
{ 3, 2, 0 },
{ 4, 5, 0 },
{ V_OpenGL30, V_OpenGL31, V_OpenGL32 },
},
{ }
};
}
void Init();
}
}
+28
View File
@@ -0,0 +1,28 @@
#include "../Includes.h"
namespace MobileGL {
namespace MG_Config {
RendererInfo* RendererInfoPtr = nullptr;
}
namespace MG_Backend {
void Init() {
MGLOG_D("Initializing MobileGL Backend...");
#if MOBILEGL_BACKEND == MOBILEGL_BACKEND_DILIGENT
switch (MG_Config::Backend::Diligent::SpecificBackend) {
case MG_Backend::Diligent::SpecificBackendType::Vulkan:
MG_Config::RendererInfoPtr = (RendererInfo*)&MG_Backend::Diligent::RendererInfoVulkan;
break;
case MG_Backend::Diligent::SpecificBackendType::Metal:
MG_Config::RendererInfoPtr = (RendererInfo*)&MG_Backend::Diligent::RendererInfoMetal;
break;
default:
throw RuntimeError("Unsupported renderer type");
}
#else
MG_Config::RendererInfoPtr = (RendererInfo*)&RendererInfoUnknown;
#endif
}
}
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,124 @@
#include "../../../Includes.h"
namespace MobileGL {
namespace MG_Impl::GLImpl {
const GLubyte* GetString(GLenum name) {
MGLOG_D("glGetString, name: %s", MG_Util::ConvertGLEnumToString(name).c_str());
switch (name) {
case GL_VENDOR:
static String vendorString;
if (vendorString.empty()) {
if (MG_Config::RendererInfoPtr->ExtraVendor.has_value()) {
vendorString = std::format("{}{}",
MG_Config::CoreVendor, MG_Config::RendererInfoPtr->ExtraVendor.value());
} else {
vendorString = MG_Config::CoreVendor;
}
}
return (const GLubyte*)vendorString.c_str();
case GL_VERSION: {
static String versionStr;
if (versionStr.empty()) {
versionStr = std::format("{} {}, {} Backend, Version {}",
MG_Config::RendererInfoPtr->RendererGLInfo.TargetGLVersion.toString().c_str(),
MG_Config::ProjectName.c_str(),
MG_Config::RendererInfoPtr->BackendName.c_str(),
MG_Config::CoreVersion.toString().c_str());
}
return (const GLubyte*)versionStr.c_str();
}
case GL_RENDERER:
{
static String rendererString;
if (rendererString.empty()) {
String deviceInfo;
rendererString = std::format("{} ({}) ({})",
MG_Config::RendererInfoPtr->RendererName.c_str(),
MG_Config::CoreName.c_str(),
deviceInfo);
}
return (const GLubyte*)rendererString.c_str();
}
case GL_SHADING_LANGUAGE_VERSION:
static String shadingLanguageVersion;
if (shadingLanguageVersion.empty()) {
shadingLanguageVersion = std::format("{} MobileGL",
MG_Config::RendererInfoPtr->RendererGLInfo.TargetGLSLVersion.toString().c_str());
}
return (const GLubyte*)shadingLanguageVersion.c_str();
case GL_EXTENSIONS:
static String extensionsString;
if (extensionsString.empty()) {
for (auto& ext : MG_Config::RendererInfoPtr->RendererGLInfo.Extensions) {
extensionsString += MG_Util::ConvertetGLExtToString(ext);
extensionsString += " ";
}
extensionsString.pop_back();
}
return (const GLubyte*)extensionsString.c_str();
default:
return (const GLubyte*)"Unknown enum";
}
}
const GLubyte* GetStringi(GLenum name, GLuint index) {
MGLOG_D("glGetStringi, name: %s, index: %u", MG_Util::ConvertGLEnumToString(name).c_str(), index);
if (name != GL_EXTENSIONS) {
return (const GLubyte*)"";
}
const auto& exts = MG_Config::RendererInfoPtr->RendererGLInfo.Extensions;
if (index >= exts.size()) {
return nullptr;
}
static Vector<String> extStrings;
static bool initialized = false;
if (!initialized) {
extStrings.reserve(exts.size());
for (const auto& ext : exts) {
extStrings.emplace_back(MG_Util::ConvertetGLExtToString(ext));
}
initialized = true;
}
return (const GLubyte*)extStrings[index].c_str();
}
void GetIntegerv(GLenum pname, GLint* params) {
MGLOG_D("glGetIntegerv, pname: %s", MG_Util::ConvertGLEnumToString(pname).c_str());
if (!params) {
// TODO: Report GL_INVALID_VALUE.
return;
}
switch (pname) {
// General
case GL_CONTEXT_PROFILE_MASK:
params[0] = GL_CONTEXT_CORE_PROFILE_BIT;
break;
case GL_NUM_EXTENSIONS:
params[0] = MG_Config::RendererInfoPtr->RendererGLInfo.Extensions.size();
break;
case GL_MAJOR_VERSION:
params[0] = MG_Config::RendererInfoPtr->RendererGLInfo.TargetGLVersion.Major;
break;
case GL_MINOR_VERSION:
params[0] = MG_Config::RendererInfoPtr->RendererGLInfo.TargetGLVersion.Minor;
break;
// State
// TODO
// Others...
default:
MGLOG_E("glGetIntegerv: Invalid enum %s (0x%X)",
MG_Util::ConvertGLEnumToString(pname).c_str(), pname);
// TODO: Report GL_INVALID_ENUM.
break;
}
}
}
}
@@ -0,0 +1,9 @@
#pragma once
namespace MobileGL {
namespace MG_Impl::GLImpl {
const GLubyte* GetString(GLenum name);
const GLubyte* GetStringi(GLenum name, GLuint index);
void GetIntegerv(GLenum pname, GLint* params);
}
}
@@ -2,7 +2,7 @@
namespace MobileGL {
namespace MG_Util {
std::string ConvertGLEnumToString(GLenum value) {
String ConvertGLEnumToString(GLenum value) {
switch (value) {
#define CASE(value) \
case value: return #value;
@@ -2,6 +2,6 @@
namespace MobileGL {
namespace MG_Util {
std::string ConvertGLEnumToString(GLenum value);
String ConvertGLEnumToString(GLenum value);
}
}
@@ -0,0 +1,775 @@
#include "../../../Includes.h"
namespace MobileGL {
namespace MG_Util {
String ConvertetGLExtToString(GLExtension extension) {
String str;
switch (extension) {
#define CASE(value) \
case value: { str = #value; break; }
CASE(V_OpenGL10)
CASE(V_OpenGL11)
CASE(V_OpenGL12)
CASE(V_OpenGL13)
CASE(V_OpenGL14)
CASE(V_OpenGL15)
CASE(V_OpenGL20)
CASE(V_OpenGL21)
CASE(V_OpenGL30)
CASE(V_OpenGL31)
CASE(V_OpenGL32)
CASE(V_OpenGL33)
CASE(V_OpenGL40)
CASE(V_OpenGL41)
CASE(V_OpenGL42)
CASE(V_OpenGL43)
CASE(V_OpenGL44)
CASE(V_OpenGL45)
CASE(V_OpenGL46)
CASE(E_GL_EXT_shader_samples_identical)
CASE(E_GL_ARB_multitexture)
CASE(E_GLX_ARB_get_proc_address)
CASE(E_GL_ARB_transpose_matrix)
CASE(E_WGL_ARB_buffer_region)
CASE(E_GL_ARB_multisample)
CASE(E_GLX_ARB_multisample)
CASE(E_WGL_ARB_multisample)
CASE(E_GL_ARB_texture_env_add)
CASE(E_GL_ARB_texture_cube_map)
CASE(E_WGL_ARB_extensions_string)
CASE(E_WGL_ARB_pixel_format)
CASE(E_WGL_ARB_make_current_read)
CASE(E_WGL_ARB_pbuffer)
CASE(E_GL_ARB_texture_compression)
CASE(E_GL_ARB_texture_border_clamp)
CASE(E_GL_ARB_point_parameters)
CASE(E_GL_ARB_vertex_blend)
CASE(E_GL_ARB_matrix_palette)
CASE(E_GL_ARB_texture_env_combine)
CASE(E_GL_ARB_texture_env_crossbar)
CASE(E_GL_ARB_texture_env_dot3)
CASE(E_WGL_ARB_render_texture)
CASE(E_GL_ARB_texture_mirrored_repeat)
CASE(E_GL_ARB_depth_texture)
CASE(E_GL_ARB_shadow)
CASE(E_GL_ARB_shadow_ambient)
CASE(E_GL_ARB_window_pos)
CASE(E_GL_ARB_vertex_program)
CASE(E_GL_ARB_fragment_program)
CASE(E_GL_ARB_vertex_buffer_object)
CASE(E_GLX_ARB_vertex_buffer_object)
CASE(E_GL_ARB_occlusion_query)
CASE(E_GL_ARB_shader_objects)
CASE(E_GL_ARB_vertex_shader)
CASE(E_GL_ARB_fragment_shader)
CASE(E_GL_ARB_shading_language_100)
CASE(E_GL_ARB_texture_non_power_of_two)
CASE(E_GL_ARB_point_sprite)
CASE(E_GL_ARB_fragment_program_shadow)
CASE(E_GL_ARB_draw_buffers)
CASE(E_GL_ARB_texture_rectangle)
CASE(E_GL_ARB_color_buffer_float)
CASE(E_GLX_ARB_fbconfig_float)
CASE(E_WGL_ARB_pixel_format_float)
CASE(E_GL_ARB_half_float_pixel)
CASE(E_GL_ARB_texture_float)
CASE(E_GL_ARB_pixel_buffer_object)
CASE(E_GL_ARB_depth_buffer_float)
CASE(E_GL_ARB_draw_instanced)
CASE(E_GL_ARB_framebuffer_object)
CASE(E_GL_ARB_framebuffer_sRGB)
CASE(E_GLX_ARB_framebuffer_sRGB)
CASE(E_WGL_ARB_framebuffer_sRGB)
CASE(E_GL_ARB_geometry_shader4)
CASE(E_GL_ARB_half_float_vertex)
CASE(E_GL_ARB_instanced_arrays)
CASE(E_GL_ARB_map_buffer_range)
CASE(E_GL_ARB_texture_buffer_object)
CASE(E_GL_ARB_texture_compression_rgtc)
CASE(E_GL_ARB_texture_rg)
CASE(E_GL_ARB_vertex_array_object)
CASE(E_WGL_ARB_create_context)
CASE(E_GLX_ARB_create_context)
CASE(E_GL_ARB_uniform_buffer_object)
CASE(E_GL_ARB_compatibility)
CASE(E_GL_ARB_copy_buffer)
CASE(E_GL_ARB_shader_texture_lod)
CASE(E_GL_ARB_depth_clamp)
CASE(E_GL_ARB_draw_elements_base_vertex)
CASE(E_GL_ARB_fragment_coord_conventions)
CASE(E_GL_ARB_provoking_vertex)
CASE(E_GL_ARB_seamless_cube_map)
CASE(E_GL_ARB_sync)
CASE(E_GL_ARB_texture_multisample)
CASE(E_GL_ARB_vertex_array_bgra)
CASE(E_GL_ARB_draw_buffers_blend)
CASE(E_GL_ARB_sample_shading)
CASE(E_GL_ARB_texture_cube_map_array)
CASE(E_GL_ARB_texture_gather)
CASE(E_GL_ARB_texture_query_lod)
CASE(E_WGL_ARB_create_context_profile)
CASE(E_GLX_ARB_create_context_profile)
CASE(E_GL_ARB_shading_language_include)
CASE(E_GL_ARB_texture_compression_bptc)
CASE(E_GL_ARB_blend_func_extended)
CASE(E_GL_ARB_explicit_attrib_location)
CASE(E_GL_ARB_occlusion_query2)
CASE(E_GL_ARB_sampler_objects)
CASE(E_GL_ARB_shader_bit_encoding)
CASE(E_GL_ARB_texture_rgb10_a2ui)
CASE(E_GL_ARB_texture_swizzle)
CASE(E_GL_ARB_timer_query)
CASE(E_GL_ARB_vertex_type_2_10_10_10_rev)
CASE(E_GL_ARB_draw_indirect)
CASE(E_GL_ARB_gpu_shader5)
CASE(E_GL_ARB_gpu_shader_fp64)
CASE(E_GL_ARB_shader_subroutine)
CASE(E_GL_ARB_tessellation_shader)
CASE(E_GL_ARB_texture_buffer_object_rgb32)
CASE(E_GL_ARB_transform_feedback2)
CASE(E_GL_ARB_transform_feedback3)
CASE(E_GL_ARB_ES2_compatibility)
CASE(E_GL_ARB_get_program_binary)
CASE(E_GL_ARB_separate_shader_objects)
CASE(E_GL_ARB_shader_precision)
CASE(E_GL_ARB_vertex_attrib_64bit)
CASE(E_GL_ARB_viewport_array)
CASE(E_GLX_ARB_create_context_robustness)
CASE(E_WGL_ARB_create_context_robustness)
CASE(E_GL_ARB_cl_event)
CASE(E_GL_ARB_debug_output)
CASE(E_GL_ARB_robustness)
CASE(E_GL_ARB_shader_stencil_export)
CASE(E_GL_ARB_base_instance)
CASE(E_GL_ARB_shading_language_420pack)
CASE(E_GL_ARB_transform_feedback_instanced)
CASE(E_GL_ARB_compressed_texture_pixel_storage)
CASE(E_GL_ARB_conservative_depth)
CASE(E_GL_ARB_internalformat_query)
CASE(E_GL_ARB_map_buffer_alignment)
CASE(E_GL_ARB_shader_atomic_counters)
CASE(E_GL_ARB_shader_image_load_store)
CASE(E_GL_ARB_shading_language_packing)
CASE(E_GL_ARB_texture_storage)
CASE(E_GL_KHR_texture_compression_astc_hdr)
CASE(E_GL_KHR_texture_compression_astc_ldr)
CASE(E_GL_KHR_debug)
CASE(E_GL_ARB_arrays_of_arrays)
CASE(E_GL_ARB_clear_buffer_object)
CASE(E_GL_ARB_compute_shader)
CASE(E_GL_ARB_copy_image)
CASE(E_GL_ARB_texture_view)
CASE(E_GL_ARB_vertex_attrib_binding)
CASE(E_GL_ARB_robustness_isolation)
CASE(E_GL_ARB_robustness_share_group_isolation)
CASE(E_GL_ARB_ES3_compatibility)
CASE(E_GL_ARB_explicit_uniform_location)
CASE(E_GL_ARB_fragment_layer_viewport)
CASE(E_GL_ARB_framebuffer_no_attachments)
CASE(E_GL_ARB_internalformat_query2)
CASE(E_GL_ARB_invalidate_subdata)
CASE(E_GL_ARB_multi_draw_indirect)
CASE(E_GL_ARB_program_interface_query)
CASE(E_GL_ARB_robust_buffer_access_behavior)
CASE(E_GL_ARB_shader_image_size)
CASE(E_GL_ARB_shader_storage_buffer_object)
CASE(E_GL_ARB_stencil_texturing)
CASE(E_GL_ARB_texture_buffer_range)
CASE(E_GL_ARB_texture_query_levels)
CASE(E_GL_ARB_texture_storage_multisample)
CASE(E_GLX_ARB_robustness_application_isolation)
CASE(E_GLX_ARB_robustness_share_group_isolation)
CASE(E_WGL_ARB_robustness_application_isolation)
CASE(E_WGL_ARB_robustness_share_group_isolation)
CASE(E_GL_ARB_buffer_storage)
CASE(E_GL_ARB_clear_texture)
CASE(E_GL_ARB_enhanced_layouts)
CASE(E_GL_ARB_multi_bind)
CASE(E_GL_ARB_query_buffer_object)
CASE(E_GL_ARB_texture_mirror_clamp_to_edge)
CASE(E_GL_ARB_texture_stencil8)
CASE(E_GL_ARB_vertex_type_10f_11f_11f_rev)
CASE(E_GL_ARB_bindless_texture)
CASE(E_GL_ARB_compute_variable_group_size)
CASE(E_GL_ARB_indirect_parameters)
CASE(E_GL_ARB_seamless_cubemap_per_texture)
CASE(E_GL_ARB_shader_draw_parameters)
CASE(E_GL_ARB_shader_group_vote)
CASE(E_GL_ARB_sparse_texture)
CASE(E_GL_ARB_ES3_1_compatibility)
CASE(E_GL_ARB_clip_control)
CASE(E_GL_ARB_conditional_render_inverted)
CASE(E_GL_ARB_cull_distance)
CASE(E_GL_ARB_derivative_control)
CASE(E_GL_ARB_direct_state_access)
CASE(E_GL_ARB_get_texture_sub_image)
CASE(E_GL_ARB_shader_texture_image_samples)
CASE(E_GL_ARB_texture_barrier)
CASE(E_GL_KHR_context_flush_control)
CASE(E_GLX_ARB_context_flush_control)
CASE(E_WGL_ARB_context_flush_control)
CASE(E_GL_KHR_robust_buffer_access_behavior)
CASE(E_GL_KHR_robustness)
CASE(E_GL_ARB_pipeline_statistics_query)
CASE(E_GL_ARB_sparse_buffer)
CASE(E_GL_ARB_transform_feedback_overflow_query)
CASE(E_GL_KHR_blend_equation_advanced)
CASE(E_GL_KHR_blend_equation_advanced_coherent)
CASE(E_GL_KHR_no_error)
CASE(E_GL_ARB_ES3_2_compatibility)
CASE(E_GL_ARB_fragment_shader_interlock)
CASE(E_GL_ARB_gpu_shader_int64)
CASE(E_GL_ARB_parallel_shader_compile)
CASE(E_GL_ARB_post_depth_coverage)
CASE(E_GL_ARB_sample_locations)
CASE(E_GL_ARB_shader_atomic_counter_ops)
CASE(E_GL_ARB_shader_ballot)
CASE(E_GL_ARB_shader_clock)
CASE(E_GL_ARB_shader_viewport_layer_array)
CASE(E_GL_ARB_sparse_texture2)
CASE(E_GL_ARB_sparse_texture_clamp)
CASE(E_GL_ARB_texture_filter_minmax)
CASE(E_GL_KHR_texture_compression_astc_sliced_3d)
CASE(E_GL_ARB_gl_spirv)
CASE(E_GLX_ARB_create_context_no_error)
CASE(E_WGL_ARB_create_context_no_error)
CASE(E_GL_KHR_parallel_shader_compile)
CASE(E_GL_ARB_polygon_offset_clamp)
CASE(E_GL_ARB_spirv_extensions)
CASE(E_GL_ARB_texture_filter_anisotropic)
CASE(E_GL_KHR_shader_subgroup)
CASE(E_GL_EXT_abgr)
CASE(E_GL_EXT_blend_color)
CASE(E_GL_EXT_polygon_offset)
CASE(E_GL_EXT_texture)
CASE(E_GL_EXT_texture3D)
CASE(E_GL_SGIS_texture_filter4)
CASE(E_GL_EXT_subtexture)
CASE(E_GL_EXT_copy_texture)
CASE(E_GL_EXT_histogram)
CASE(E_GL_EXT_convolution)
CASE(E_GL_SGI_color_matrix)
CASE(E_GL_SGI_color_table)
CASE(E_GL_SGIS_pixel_texture)
CASE(E_GL_SGIS_texture4D)
CASE(E_GL_SGI_texture_color_table)
CASE(E_GL_EXT_cmyka)
CASE(E_GL_EXT_texture_object)
CASE(E_GL_SGIS_detail_texture)
CASE(E_GL_SGIS_sharpen_texture)
CASE(E_GL_EXT_packed_pixels)
CASE(E_GL_SGIS_texture_lod)
CASE(E_GL_SGIS_multisample)
CASE(E_GLX_SGIS_multisample)
CASE(E_GL_EXT_rescale_normal)
CASE(E_GLX_EXT_visual_info)
CASE(E_GL_EXT_vertex_array)
CASE(E_GL_EXT_misc_attribute)
CASE(E_GL_SGIS_generate_mipmap)
CASE(E_GL_SGIX_clipmap)
CASE(E_GL_SGIX_shadow)
CASE(E_GL_SGIS_texture_edge_clamp)
CASE(E_GL_SGIS_texture_border_clamp)
CASE(E_GL_EXT_blend_minmax)
CASE(E_GL_EXT_blend_subtract)
CASE(E_GL_EXT_blend_logic_op)
CASE(E_GLX_SGI_swap_control)
CASE(E_GLX_SGI_video_sync)
CASE(E_GLX_SGI_make_current_read)
CASE(E_GLX_SGIX_video_source)
CASE(E_GLX_EXT_visual_rating)
CASE(E_GL_SGIX_interlace)
CASE(E_GLX_EXT_import_context)
CASE(E_GLX_SGIX_fbconfig)
CASE(E_GLX_SGIX_pbuffer)
CASE(E_GL_SGIS_texture_select)
CASE(E_GL_SGIX_sprite)
CASE(E_GL_SGIX_texture_multi_buffer)
CASE(E_GL_EXT_point_parameters)
CASE(E_GL_SGIX_instruments)
CASE(E_GL_SGIX_texture_scale_bias)
CASE(E_GL_SGIX_framezoom)
CASE(E_GL_SGIX_tag_sample_buffer)
CASE(E_GL_SGIX_reference_plane)
CASE(E_GL_SGIX_flush_raster)
CASE(E_GLX_SGI_cushion)
CASE(E_GL_SGIX_depth_texture)
CASE(E_GL_SGIS_fog_function)
CASE(E_GL_SGIX_fog_offset)
CASE(E_GL_HP_image_transform)
CASE(E_GL_HP_convolution_border_modes)
CASE(E_GL_SGIX_texture_add_env)
CASE(E_GL_EXT_color_subtable)
CASE(E_GLU_EXT_object_space_tess)
CASE(E_GL_PGI_vertex_hints)
CASE(E_GL_PGI_misc_hints)
CASE(E_GL_EXT_paletted_texture)
CASE(E_GL_EXT_clip_volume_hint)
CASE(E_GL_SGIX_list_priority)
CASE(E_GL_SGIX_ir_instrument1)
CASE(E_GLX_SGIX_video_resize)
CASE(E_GL_SGIX_texture_lod_bias)
CASE(E_GLU_SGI_filter4_parameters)
CASE(E_GLX_SGIX_dm_buffer)
CASE(E_GL_SGIX_shadow_ambient)
CASE(E_GLX_SGIX_swap_group)
CASE(E_GLX_SGIX_swap_barrier)
CASE(E_GL_EXT_index_texture)
CASE(E_GL_EXT_index_material)
CASE(E_GL_EXT_index_func)
CASE(E_GL_EXT_index_array_formats)
CASE(E_GL_EXT_compiled_vertex_array)
CASE(E_GL_EXT_cull_vertex)
CASE(E_GLU_EXT_nurbs_tessellator)
CASE(E_GL_SGIX_ycrcb)
CASE(E_GL_EXT_fragment_lighting)
CASE(E_GL_IBM_rasterpos_clip)
CASE(E_GL_HP_texture_lighting)
CASE(E_GL_EXT_draw_range_elements)
CASE(E_GL_WIN_phong_shading)
CASE(E_GL_WIN_specular_fog)
CASE(E_GLX_SGIS_color_range)
CASE(E_GL_SGIS_color_range)
CASE(E_GL_EXT_light_texture)
CASE(E_GL_SGIX_blend_alpha_minmax)
CASE(E_GL_EXT_scene_marker)
CASE(E_GLX_EXT_scene_marker)
CASE(E_GL_SGIX_pixel_texture_bits)
CASE(E_GL_EXT_bgra)
CASE(E_GL_SGIX_async)
CASE(E_GL_SGIX_async_pixel)
CASE(E_GL_SGIX_async_histogram)
CASE(E_GL_INTEL_texture_scissor)
CASE(E_GL_INTEL_parallel_arrays)
CASE(E_GL_HP_occlusion_test)
CASE(E_GL_EXT_pixel_transform)
CASE(E_GL_EXT_pixel_transform_color_table)
CASE(E_GL_EXT_shared_texture_palette)
CASE(E_GLX_SGIS_blended_overlay)
CASE(E_GL_EXT_separate_specular_color)
CASE(E_GL_EXT_secondary_color)
CASE(E_GL_EXT_texture_env)
CASE(E_GL_EXT_texture_perturb_normal)
CASE(E_GL_EXT_multi_draw_arrays)
CASE(E_GL_SUN_multi_draw_arrays)
CASE(E_GL_EXT_fog_coord)
CASE(E_GL_REND_screen_coordinates)
CASE(E_GL_EXT_coordinate_frame)
CASE(E_GL_EXT_texture_env_combine)
CASE(E_GL_APPLE_specular_vector)
CASE(E_GL_APPLE_transform_hint)
CASE(E_GL_SUNX_constant_data)
CASE(E_GL_SUN_global_alpha)
CASE(E_GL_SUN_triangle_list)
CASE(E_GL_SUN_vertex)
CASE(E_WGL_EXT_display_color_table)
CASE(E_WGL_EXT_extensions_string)
CASE(E_WGL_EXT_make_current_read)
CASE(E_WGL_EXT_pixel_format)
CASE(E_WGL_EXT_pbuffer)
CASE(E_WGL_EXT_swap_control)
CASE(E_GL_EXT_blend_func_separate)
CASE(E_GL_INGR_color_clamp)
CASE(E_GL_INGR_interlace_read)
CASE(E_GL_EXT_stencil_wrap)
CASE(E_WGL_EXT_depth_float)
CASE(E_GL_EXT_422_pixels)
CASE(E_GL_NV_texgen_reflection)
CASE(E_GL_SGIX_texture_range)
CASE(E_GL_SUN_convolution_border_modes)
CASE(E_GLX_SUN_get_transparent_index)
CASE(E_GLX_SGIX_video_resize_float)
CASE(E_GL_EXT_texture_env_add)
CASE(E_GL_EXT_texture_lod_bias)
CASE(E_GL_EXT_texture_filter_anisotropic)
CASE(E_GL_EXT_vertex_weighting)
CASE(E_GL_NV_light_max_exponent)
CASE(E_GL_NV_vertex_array_range)
CASE(E_GL_NV_register_combiners)
CASE(E_GL_NV_fog_distance)
CASE(E_GL_NV_texgen_emboss)
CASE(E_GL_NV_blend_square)
CASE(E_GL_NV_texture_env_combine4)
CASE(E_GL_MESA_resize_buffers)
CASE(E_GL_MESA_window_pos)
CASE(E_GL_EXT_texture_compression_s3tc)
CASE(E_GL_IBM_cull_vertex)
CASE(E_GL_IBM_multimode_draw_arrays)
CASE(E_GL_IBM_vertex_array_lists)
CASE(E_GL_3DFX_texture_compression_FXT1)
CASE(E_GL_3DFX_multisample)
CASE(E_GL_3DFX_tbuffer)
CASE(E_WGL_EXT_multisample)
CASE(E_GL_EXT_multisample)
CASE(E_GL_SGIX_vertex_preclip)
CASE(E_GL_SGIX_vertex_preclip_hint)
CASE(E_GL_SGIX_convolution_accuracy)
CASE(E_GL_SGIX_resample)
CASE(E_GL_SGIS_point_line_texgen)
CASE(E_GL_SGIS_texture_color_mask)
CASE(E_GLX_MESA_copy_sub_buffer)
CASE(E_GLX_MESA_pixmap_colormap)
CASE(E_GLX_MESA_release_buffers)
CASE(E_GLX_MESA_set_3dfx_mode)
CASE(E_GL_EXT_texture_env_dot3)
CASE(E_GL_ATI_texture_mirror_once)
CASE(E_GL_NV_fence)
CASE(E_GL_IBM_static_data)
CASE(E_GL_IBM_texture_mirrored_repeat)
CASE(E_GL_NV_evaluators)
CASE(E_GL_NV_packed_depth_stencil)
CASE(E_GL_NV_register_combiners2)
CASE(E_GL_NV_texture_compression_vtc)
CASE(E_GL_NV_texture_rectangle)
CASE(E_GL_NV_texture_shader)
CASE(E_GL_NV_texture_shader2)
CASE(E_GL_NV_vertex_array_range2)
CASE(E_GL_NV_vertex_program)
CASE(E_GLX_SGIX_visual_select_group)
CASE(E_GL_SGIX_texture_coordinate_clamp)
CASE(E_GLX_OML_swap_method)
CASE(E_GLX_OML_sync_control)
CASE(E_GL_OML_interlace)
CASE(E_GL_OML_subsample)
CASE(E_GL_OML_resample)
CASE(E_WGL_OML_sync_control)
CASE(E_GL_NV_copy_depth_to_color)
CASE(E_GL_ATI_envmap_bumpmap)
CASE(E_GL_ATI_fragment_shader)
CASE(E_GL_ATI_pn_triangles)
CASE(E_GL_ATI_vertex_array_object)
CASE(E_GL_EXT_vertex_shader)
CASE(E_GL_ATI_vertex_streams)
CASE(E_WGL_I3D_digital_video_control)
CASE(E_WGL_I3D_gamma)
CASE(E_WGL_I3D_genlock)
CASE(E_WGL_I3D_image_buffer)
CASE(E_WGL_I3D_swap_frame_lock)
CASE(E_WGL_I3D_swap_frame_usage)
CASE(E_GL_ATI_element_array)
CASE(E_GL_SUN_mesh_array)
CASE(E_GL_SUN_slice_accum)
CASE(E_GL_NV_multisample_filter_hint)
CASE(E_GL_NV_depth_clamp)
CASE(E_GL_NV_occlusion_query)
CASE(E_GL_NV_point_sprite)
CASE(E_WGL_NV_render_depth_texture)
CASE(E_WGL_NV_render_texture_rectangle)
CASE(E_GL_NV_texture_shader3)
CASE(E_GL_NV_vertex_program1_1)
CASE(E_GL_EXT_shadow_funcs)
CASE(E_GL_EXT_stencil_two_side)
CASE(E_GL_ATI_text_fragment_shader)
CASE(E_GL_APPLE_client_storage)
CASE(E_GL_APPLE_element_array)
CASE(E_GL_APPLE_fence)
CASE(E_GL_APPLE_vertex_array_object)
CASE(E_GL_APPLE_vertex_array_range)
CASE(E_GL_APPLE_ycbcr_422)
CASE(E_GL_S3_s3tc)
CASE(E_GL_ATI_draw_buffers)
CASE(E_WGL_ATI_pixel_format_float)
CASE(E_GL_ATI_texture_env_combine3)
CASE(E_GL_ATI_texture_float)
CASE(E_GL_NV_float_buffer)
CASE(E_WGL_NV_float_buffer)
CASE(E_GL_NV_fragment_program)
CASE(E_GL_NV_half_float)
CASE(E_GL_NV_pixel_data_range)
CASE(E_GL_NV_primitive_restart)
CASE(E_GL_NV_texture_expand_normal)
CASE(E_GL_NV_vertex_program2)
CASE(E_GL_ATI_map_object_buffer)
CASE(E_GL_ATI_separate_stencil)
CASE(E_GL_ATI_vertex_attrib_array_object)
CASE(E_GL_OES_byte_coordinates)
CASE(E_GL_OES_fixed_point)
CASE(E_GL_OES_single_precision)
CASE(E_GL_OES_compressed_paletted_texture)
CASE(E_GL_OES_read_format)
CASE(E_GL_OES_query_matrix)
CASE(E_GL_EXT_depth_bounds_test)
CASE(E_GL_EXT_texture_mirror_clamp)
CASE(E_GL_EXT_blend_equation_separate)
CASE(E_GL_MESA_pack_invert)
CASE(E_GL_MESA_ycbcr_texture)
CASE(E_GL_EXT_pixel_buffer_object)
CASE(E_GL_NV_fragment_program_option)
CASE(E_GL_NV_fragment_program2)
CASE(E_GL_NV_vertex_program2_option)
CASE(E_GL_NV_vertex_program3)
CASE(E_GLX_SGIX_hyperpipe)
CASE(E_GLX_MESA_agp_offset)
CASE(E_GL_EXT_texture_compression_dxt1)
CASE(E_GL_EXT_framebuffer_object)
CASE(E_GL_GREMEDY_string_marker)
CASE(E_GL_EXT_packed_depth_stencil)
CASE(E_WGL_3DL_stereo_control)
CASE(E_GL_EXT_stencil_clear_tag)
CASE(E_GL_EXT_texture_sRGB)
CASE(E_GL_EXT_framebuffer_blit)
CASE(E_GL_EXT_framebuffer_multisample)
CASE(E_GL_MESAX_texture_stack)
CASE(E_GL_EXT_timer_query)
CASE(E_GL_EXT_gpu_program_parameters)
CASE(E_GL_APPLE_flush_buffer_range)
CASE(E_GL_NV_gpu_program4)
CASE(E_GL_NV_geometry_program4)
CASE(E_GL_EXT_geometry_shader4)
CASE(E_GL_NV_vertex_program4)
CASE(E_GL_EXT_gpu_shader4)
CASE(E_GL_EXT_draw_instanced)
CASE(E_GL_EXT_packed_float)
CASE(E_GLX_EXT_fbconfig_packed_float)
CASE(E_WGL_EXT_pixel_format_packed_float)
CASE(E_GL_EXT_texture_array)
CASE(E_GL_EXT_texture_buffer_object)
CASE(E_GL_EXT_texture_compression_latc)
CASE(E_GL_EXT_texture_compression_rgtc)
CASE(E_GL_EXT_texture_shared_exponent)
CASE(E_GL_NV_depth_buffer_float)
CASE(E_GL_NV_fragment_program4)
CASE(E_GL_NV_framebuffer_multisample_coverage)
CASE(E_GL_EXT_framebuffer_sRGB)
CASE(E_GLX_EXT_framebuffer_sRGB)
CASE(E_WGL_EXT_framebuffer_sRGB)
CASE(E_GL_NV_geometry_shader4)
CASE(E_GL_NV_parameter_buffer_object)
CASE(E_GL_EXT_draw_buffers2)
CASE(E_GL_NV_transform_feedback)
CASE(E_GL_EXT_bindable_uniform)
CASE(E_GL_EXT_texture_integer)
CASE(E_GLX_EXT_texture_from_pixmap)
CASE(E_GL_GREMEDY_frame_terminator)
CASE(E_GL_NV_conditional_render)
CASE(E_GL_NV_present_video)
CASE(E_GLX_NV_present_video)
CASE(E_WGL_NV_present_video)
CASE(E_GLX_NV_video_out)
CASE(E_WGL_NV_video_output)
CASE(E_GLX_NV_swap_group)
CASE(E_WGL_NV_swap_group)
CASE(E_GL_EXT_transform_feedback)
CASE(E_GL_EXT_direct_state_access)
CASE(E_GL_EXT_vertex_array_bgra)
CASE(E_WGL_NV_gpu_affinity)
CASE(E_GL_EXT_texture_swizzle)
CASE(E_GL_NV_explicit_multisample)
CASE(E_GL_NV_transform_feedback2)
CASE(E_GL_ATI_meminfo)
CASE(E_GL_AMD_performance_monitor)
CASE(E_WGL_AMD_gpu_association)
CASE(E_GL_AMD_texture_texture4)
CASE(E_GL_AMD_vertex_shader_tessellator)
CASE(E_GL_EXT_provoking_vertex)
CASE(E_GL_EXT_texture_snorm)
CASE(E_GL_AMD_draw_buffers_blend)
CASE(E_GL_APPLE_texture_range)
CASE(E_GL_APPLE_float_pixels)
CASE(E_GL_APPLE_vertex_program_evaluators)
CASE(E_GL_APPLE_aux_depth_stencil)
CASE(E_GL_APPLE_object_purgeable)
CASE(E_GL_APPLE_row_bytes)
CASE(E_GL_APPLE_rgb_422)
CASE(E_GL_NV_video_capture)
CASE(E_GLX_NV_video_capture)
CASE(E_WGL_NV_video_capture)
CASE(E_GL_EXT_swap_control)
CASE(E_GL_NV_copy_image)
CASE(E_GLX_NV_copy_image)
CASE(E_WGL_NV_copy_image)
CASE(E_GL_EXT_separate_shader_objects)
CASE(E_GL_NV_parameter_buffer_object2)
CASE(E_GL_NV_shader_buffer_load)
CASE(E_GL_NV_vertex_buffer_unified_memory)
CASE(E_GL_NV_texture_barrier)
CASE(E_GL_AMD_shader_stencil_export)
CASE(E_GL_AMD_seamless_cubemap_per_texture)
CASE(E_GLX_INTEL_swap_event)
CASE(E_GL_AMD_conservative_depth)
CASE(E_GL_EXT_shader_image_load_store)
CASE(E_GL_EXT_vertex_attrib_64bit)
CASE(E_GL_NV_gpu_program5)
CASE(E_GL_NV_gpu_shader5)
CASE(E_GL_NV_shader_buffer_store)
CASE(E_GL_NV_tessellation_program5)
CASE(E_GL_NV_vertex_attrib_integer_64bit)
CASE(E_GL_NV_multisample_coverage)
CASE(E_GL_AMD_name_gen_delete)
CASE(E_GL_AMD_debug_output)
CASE(E_GL_NV_vdpau_interop)
CASE(E_GL_AMD_transform_feedback3_lines_triangles)
CASE(E_GLX_AMD_gpu_association)
CASE(E_GLX_EXT_create_context_es2_profile)
CASE(E_GLX_EXT_create_context_es_profile)
CASE(E_WGL_EXT_create_context_es2_profile)
CASE(E_WGL_EXT_create_context_es_profile)
CASE(E_GL_AMD_depth_clamp_separate)
CASE(E_GL_EXT_texture_sRGB_decode)
CASE(E_GL_NV_texture_multisample)
CASE(E_GL_AMD_blend_minmax_factor)
CASE(E_GL_AMD_sample_positions)
CASE(E_GL_EXT_x11_sync_object)
CASE(E_WGL_NV_DX_interop)
CASE(E_GL_AMD_multi_draw_indirect)
CASE(E_GL_EXT_framebuffer_multisample_blit_scaled)
CASE(E_GL_NV_path_rendering)
CASE(E_GL_AMD_pinned_memory)
CASE(E_WGL_NV_DX_interop2)
CASE(E_GL_AMD_stencil_operation_extended)
CASE(E_GLX_EXT_swap_control_tear)
CASE(E_WGL_EXT_swap_control_tear)
CASE(E_GL_AMD_vertex_shader_viewport_index)
CASE(E_GL_AMD_vertex_shader_layer)
CASE(E_GL_NV_bindless_texture)
CASE(E_GL_NV_shader_atomic_float)
CASE(E_GL_AMD_query_buffer_object)
CASE(E_GL_NV_compute_program5)
CASE(E_GL_NV_shader_storage_buffer_object)
CASE(E_GL_NV_shader_atomic_counters)
CASE(E_GL_NV_deep_texture3D)
CASE(E_GL_NVX_conditional_render)
CASE(E_GL_AMD_sparse_texture)
CASE(E_GLX_EXT_buffer_age)
CASE(E_GL_AMD_shader_trinary_minmax)
CASE(E_GL_INTEL_map_texture)
CASE(E_GL_NV_draw_texture)
CASE(E_GL_AMD_interleaved_elements)
CASE(E_GL_NV_bindless_multi_draw_indirect)
CASE(E_GL_NV_blend_equation_advanced)
CASE(E_GL_NV_blend_equation_advanced_coherent)
CASE(E_GL_NV_gpu_program5_mem_extended)
CASE(E_GL_AMD_shader_atomic_counter_ops)
CASE(E_WGL_NV_delay_before_swap)
CASE(E_GL_EXT_shader_integer_mix)
CASE(E_GL_NVX_gpu_memory_info)
CASE(E_GL_EXT_debug_label)
CASE(E_GL_EXT_debug_marker)
CASE(E_GL_INTEL_fragment_shader_ordering)
CASE(E_GL_AMD_occlusion_query_event)
CASE(E_GL_INTEL_performance_query)
CASE(E_GL_AMD_shader_stencil_value_export)
CASE(E_GLX_NV_delay_before_swap)
CASE(E_GLX_MESA_query_renderer)
CASE(E_GL_NV_shader_thread_group)
CASE(E_GL_NV_shader_thread_shuffle)
CASE(E_GL_EXT_shader_image_load_formatted)
CASE(E_GL_AMD_transform_feedback4)
CASE(E_GL_AMD_gpu_shader_int64)
CASE(E_GLX_EXT_stereo_tree)
CASE(E_GL_AMD_gcn_shader)
CASE(E_GL_AMD_framebuffer_sample_positions)
CASE(E_GL_NV_shader_atomic_int64)
CASE(E_GL_NV_bindless_multi_draw_indirect_count)
CASE(E_GLX_NV_copy_buffer)
CASE(E_GL_NV_uniform_buffer_unified_memory)
CASE(E_GL_EXT_polygon_offset_clamp)
CASE(E_GL_EXT_post_depth_coverage)
CASE(E_GL_EXT_raster_multisample)
CASE(E_GL_EXT_sparse_texture2)
CASE(E_GL_EXT_texture_filter_minmax)
CASE(E_GL_NV_conservative_raster)
CASE(E_GL_NV_fill_rectangle)
CASE(E_GL_NV_fragment_coverage_to_color)
CASE(E_GL_NV_fragment_shader_interlock)
CASE(E_GL_NV_framebuffer_mixed_samples)
CASE(E_GL_NV_geometry_shader_passthrough)
CASE(E_GL_NV_path_rendering_shared_edge)
CASE(E_GL_NV_sample_locations)
CASE(E_GL_NV_sample_mask_override_coverage)
CASE(E_GL_NV_shader_atomic_fp16_vector)
CASE(E_GL_NV_internalformat_sample_query)
CASE(E_GL_NV_viewport_array2)
CASE(E_GL_NV_command_list)
CASE(E_GL_OVR_multiview)
CASE(E_GL_OVR_multiview2)
CASE(E_GL_NV_conservative_raster_dilate)
CASE(E_GL_INTEL_framebuffer_CMAA)
CASE(E_GLX_EXT_libglvnd)
CASE(E_GL_NV_viewport_swizzle)
CASE(E_GL_NV_robustness_video_memory_purge)
CASE(E_GL_AMD_shader_explicit_vertex_parameter)
CASE(E_GL_NV_clip_space_w_scaling)
CASE(E_GL_NV_conservative_raster_pre_snap_triangles)
CASE(E_GL_NV_shader_atomic_float64)
CASE(E_GL_NV_stereo_view_rendering)
CASE(E_GL_EXT_window_rectangles)
CASE(E_GL_INTEL_conservative_rasterization)
CASE(E_GL_NVX_blend_equation_advanced_multi_draw_buffers)
CASE(E_GL_NVX_linked_gpu_multicast)
CASE(E_GL_NV_gpu_multicast)
CASE(E_GL_MESA_shader_integer_functions)
CASE(E_GL_AMD_gpu_shader_half_float)
CASE(E_GL_AMD_shader_ballot)
CASE(E_WGL_EXT_colorspace)
CASE(E_GL_SGIX_pixel_texture)
CASE(E_GL_NV_alpha_to_coverage_dither_control)
CASE(E_GL_NV_draw_vulkan_image)
CASE(E_GL_AMD_texture_gather_bias_lod)
CASE(E_GL_EXT_memory_object)
CASE(E_GL_EXT_semaphore)
CASE(E_GL_EXT_memory_object_fd)
CASE(E_GL_EXT_semaphore_fd)
CASE(E_GL_EXT_memory_object_win32)
CASE(E_GL_EXT_semaphore_win32)
CASE(E_GL_EXT_win32_keyed_mutex)
CASE(E_GL_AMD_gpu_shader_int16)
CASE(E_GL_EXT_external_buffer)
CASE(E_GL_NV_texture_rectangle_compressed)
CASE(E_GL_NV_blend_minmax_factor)
CASE(E_GL_NV_query_resource)
CASE(E_GL_NV_query_resource_tag)
CASE(E_GL_AMD_shader_image_load_store_lod)
CASE(E_GLX_MESA_swap_control)
CASE(E_GL_MESA_tile_raster_order)
CASE(E_GL_MESA_program_binary_formats)
CASE(E_GL_NV_conservative_raster_pre_snap)
CASE(E_GL_NV_conservative_raster_underestimation)
CASE(E_GL_AMD_gpu_shader_half_float_fetch)
CASE(E_GL_EXT_shader_framebuffer_fetch)
CASE(E_GL_EXT_shader_framebuffer_fetch_non_coherent)
CASE(E_GL_INTEL_blackhole_render)
CASE(E_GL_EXT_EGL_image_storage)
CASE(E_GL_AMD_framebuffer_multisample_advanced)
CASE(E_GL_NV_memory_attachment)
CASE(E_GL_NV_compute_shader_derivatives)
CASE(E_GL_NV_fragment_shader_barycentric)
CASE(E_GL_NV_mesh_shader)
CASE(E_GL_NV_representative_fragment_test)
CASE(E_GL_NV_scissor_exclusive)
CASE(E_GL_NV_shader_texture_footprint)
CASE(E_GL_NV_shading_rate_image)
CASE(E_WGL_ATI_render_texture_rectangle)
CASE(E_GL_NV_vdpau_interop2)
CASE(E_GL_EXT_texture_sRGB_R8)
CASE(E_GLX_EXT_context_priority)
CASE(E_GL_EXT_multiview_timer_query)
CASE(E_GL_EXT_multiview_texture_multisample)
CASE(E_GL_EXT_multiview_tessellation_geometry_shader)
CASE(E_GL_EXT_texture_shadow_lod)
CASE(E_GL_MESA_framebuffer_flip_y)
CASE(E_GL_NVX_progress_fence)
CASE(E_WGL_NV_multigpu_context)
CASE(E_GL_NVX_gpu_multicast2)
CASE(E_GL_NV_shader_subgroup_partitioned)
CASE(E_GLX_NV_multigpu_context)
CASE(E_GL_EXT_EGL_sync)
CASE(E_GL_INTEL_shader_integer_functions2)
CASE(E_GL_MESA_framebuffer_flip_x)
CASE(E_GL_MESA_framebuffer_swap_xy)
CASE(E_GL_NV_memory_object_sparse)
CASE(E_GL_NV_timeline_semaphore)
CASE(E_GLX_EXT_get_drawable_type)
CASE(E_GLX_EXT_no_config_context)
CASE(E_GL_NV_primitive_shading_rate)
CASE(E_GL_EXT_texture_sRGB_RG8)
CASE(E_GL_EXT_texture_storage)
CASE(E_GL_EXT_framebuffer_blit_layers)
CASE(E_GL_NV_uniform_buffer_std430_layout)
CASE(E_GL_MESA_texture_const_bandwidth)
}
str.erase(0, 2);
return str;
}
}
}
@@ -0,0 +1,7 @@
#pragma once
namespace MobileGL {
namespace MG_Util {
String ConvertetGLExtToString(GLExtension extension);
}
}
+766
View File
@@ -0,0 +1,766 @@
#pragma once
namespace MobileGL {
enum GLExtension {
V_OpenGL10 ,
V_OpenGL11 ,
V_OpenGL12 ,
V_OpenGL13 ,
V_OpenGL14 ,
V_OpenGL15 ,
V_OpenGL20 ,
V_OpenGL21 ,
V_OpenGL30 ,
V_OpenGL31 ,
V_OpenGL32 ,
V_OpenGL33 ,
V_OpenGL40 ,
V_OpenGL41 ,
V_OpenGL42 ,
V_OpenGL43 ,
V_OpenGL44 ,
V_OpenGL45 ,
V_OpenGL46 ,
E_GL_EXT_shader_samples_identical ,
E_GL_ARB_multitexture ,
E_GLX_ARB_get_proc_address ,
E_GL_ARB_transpose_matrix ,
E_WGL_ARB_buffer_region ,
E_GL_ARB_multisample ,
E_GLX_ARB_multisample ,
E_WGL_ARB_multisample ,
E_GL_ARB_texture_env_add ,
E_GL_ARB_texture_cube_map ,
E_WGL_ARB_extensions_string ,
E_WGL_ARB_pixel_format ,
E_WGL_ARB_make_current_read ,
E_WGL_ARB_pbuffer ,
E_GL_ARB_texture_compression ,
E_GL_ARB_texture_border_clamp ,
E_GL_ARB_point_parameters ,
E_GL_ARB_vertex_blend ,
E_GL_ARB_matrix_palette ,
E_GL_ARB_texture_env_combine ,
E_GL_ARB_texture_env_crossbar ,
E_GL_ARB_texture_env_dot3 ,
E_WGL_ARB_render_texture ,
E_GL_ARB_texture_mirrored_repeat ,
E_GL_ARB_depth_texture ,
E_GL_ARB_shadow ,
E_GL_ARB_shadow_ambient ,
E_GL_ARB_window_pos ,
E_GL_ARB_vertex_program ,
E_GL_ARB_fragment_program ,
E_GL_ARB_vertex_buffer_object ,
E_GLX_ARB_vertex_buffer_object ,
E_GL_ARB_occlusion_query ,
E_GL_ARB_shader_objects ,
E_GL_ARB_vertex_shader ,
E_GL_ARB_fragment_shader ,
E_GL_ARB_shading_language_100 ,
E_GL_ARB_texture_non_power_of_two ,
E_GL_ARB_point_sprite ,
E_GL_ARB_fragment_program_shadow ,
E_GL_ARB_draw_buffers ,
E_GL_ARB_texture_rectangle ,
E_GL_ARB_color_buffer_float ,
E_GLX_ARB_fbconfig_float ,
E_WGL_ARB_pixel_format_float ,
E_GL_ARB_half_float_pixel ,
E_GL_ARB_texture_float ,
E_GL_ARB_pixel_buffer_object ,
E_GL_ARB_depth_buffer_float ,
E_GL_ARB_draw_instanced ,
E_GL_ARB_framebuffer_object ,
E_GL_ARB_framebuffer_sRGB ,
E_GLX_ARB_framebuffer_sRGB ,
E_WGL_ARB_framebuffer_sRGB ,
E_GL_ARB_geometry_shader4 ,
E_GL_ARB_half_float_vertex ,
E_GL_ARB_instanced_arrays ,
E_GL_ARB_map_buffer_range ,
E_GL_ARB_texture_buffer_object ,
E_GL_ARB_texture_compression_rgtc ,
E_GL_ARB_texture_rg ,
E_GL_ARB_vertex_array_object ,
E_WGL_ARB_create_context ,
E_GLX_ARB_create_context ,
E_GL_ARB_uniform_buffer_object ,
E_GL_ARB_compatibility ,
E_GL_ARB_copy_buffer ,
E_GL_ARB_shader_texture_lod ,
E_GL_ARB_depth_clamp ,
E_GL_ARB_draw_elements_base_vertex ,
E_GL_ARB_fragment_coord_conventions ,
E_GL_ARB_provoking_vertex ,
E_GL_ARB_seamless_cube_map ,
E_GL_ARB_sync ,
E_GL_ARB_texture_multisample ,
E_GL_ARB_vertex_array_bgra ,
E_GL_ARB_draw_buffers_blend ,
E_GL_ARB_sample_shading ,
E_GL_ARB_texture_cube_map_array ,
E_GL_ARB_texture_gather ,
E_GL_ARB_texture_query_lod ,
E_WGL_ARB_create_context_profile ,
E_GLX_ARB_create_context_profile ,
E_GL_ARB_shading_language_include ,
E_GL_ARB_texture_compression_bptc ,
E_GL_ARB_blend_func_extended ,
E_GL_ARB_explicit_attrib_location ,
E_GL_ARB_occlusion_query2 ,
E_GL_ARB_sampler_objects ,
E_GL_ARB_shader_bit_encoding ,
E_GL_ARB_texture_rgb10_a2ui ,
E_GL_ARB_texture_swizzle ,
E_GL_ARB_timer_query ,
E_GL_ARB_vertex_type_2_10_10_10_rev ,
E_GL_ARB_draw_indirect ,
E_GL_ARB_gpu_shader5 ,
E_GL_ARB_gpu_shader_fp64 ,
E_GL_ARB_shader_subroutine ,
E_GL_ARB_tessellation_shader ,
E_GL_ARB_texture_buffer_object_rgb32 ,
E_GL_ARB_transform_feedback2 ,
E_GL_ARB_transform_feedback3 ,
E_GL_ARB_ES2_compatibility ,
E_GL_ARB_get_program_binary ,
E_GL_ARB_separate_shader_objects ,
E_GL_ARB_shader_precision ,
E_GL_ARB_vertex_attrib_64bit ,
E_GL_ARB_viewport_array ,
E_GLX_ARB_create_context_robustness ,
E_WGL_ARB_create_context_robustness ,
E_GL_ARB_cl_event ,
E_GL_ARB_debug_output ,
E_GL_ARB_robustness ,
E_GL_ARB_shader_stencil_export ,
E_GL_ARB_base_instance ,
E_GL_ARB_shading_language_420pack ,
E_GL_ARB_transform_feedback_instanced ,
E_GL_ARB_compressed_texture_pixel_storage ,
E_GL_ARB_conservative_depth ,
E_GL_ARB_internalformat_query ,
E_GL_ARB_map_buffer_alignment ,
E_GL_ARB_shader_atomic_counters ,
E_GL_ARB_shader_image_load_store ,
E_GL_ARB_shading_language_packing ,
E_GL_ARB_texture_storage ,
E_GL_KHR_texture_compression_astc_hdr ,
E_GL_KHR_texture_compression_astc_ldr ,
E_GL_KHR_debug ,
E_GL_ARB_arrays_of_arrays ,
E_GL_ARB_clear_buffer_object ,
E_GL_ARB_compute_shader ,
E_GL_ARB_copy_image ,
E_GL_ARB_texture_view ,
E_GL_ARB_vertex_attrib_binding ,
E_GL_ARB_robustness_isolation ,
E_GL_ARB_robustness_share_group_isolation ,
E_GL_ARB_ES3_compatibility ,
E_GL_ARB_explicit_uniform_location ,
E_GL_ARB_fragment_layer_viewport ,
E_GL_ARB_framebuffer_no_attachments ,
E_GL_ARB_internalformat_query2 ,
E_GL_ARB_invalidate_subdata ,
E_GL_ARB_multi_draw_indirect ,
E_GL_ARB_program_interface_query ,
E_GL_ARB_robust_buffer_access_behavior ,
E_GL_ARB_shader_image_size ,
E_GL_ARB_shader_storage_buffer_object ,
E_GL_ARB_stencil_texturing ,
E_GL_ARB_texture_buffer_range ,
E_GL_ARB_texture_query_levels ,
E_GL_ARB_texture_storage_multisample ,
E_GLX_ARB_robustness_application_isolation ,
E_GLX_ARB_robustness_share_group_isolation ,
E_WGL_ARB_robustness_application_isolation ,
E_WGL_ARB_robustness_share_group_isolation ,
E_GL_ARB_buffer_storage ,
E_GL_ARB_clear_texture ,
E_GL_ARB_enhanced_layouts ,
E_GL_ARB_multi_bind ,
E_GL_ARB_query_buffer_object ,
E_GL_ARB_texture_mirror_clamp_to_edge ,
E_GL_ARB_texture_stencil8 ,
E_GL_ARB_vertex_type_10f_11f_11f_rev ,
E_GL_ARB_bindless_texture ,
E_GL_ARB_compute_variable_group_size ,
E_GL_ARB_indirect_parameters ,
E_GL_ARB_seamless_cubemap_per_texture ,
E_GL_ARB_shader_draw_parameters ,
E_GL_ARB_shader_group_vote ,
E_GL_ARB_sparse_texture ,
E_GL_ARB_ES3_1_compatibility ,
E_GL_ARB_clip_control ,
E_GL_ARB_conditional_render_inverted ,
E_GL_ARB_cull_distance ,
E_GL_ARB_derivative_control ,
E_GL_ARB_direct_state_access ,
E_GL_ARB_get_texture_sub_image ,
E_GL_ARB_shader_texture_image_samples ,
E_GL_ARB_texture_barrier ,
E_GL_KHR_context_flush_control ,
E_GLX_ARB_context_flush_control ,
E_WGL_ARB_context_flush_control ,
E_GL_KHR_robust_buffer_access_behavior ,
E_GL_KHR_robustness ,
E_GL_ARB_pipeline_statistics_query ,
E_GL_ARB_sparse_buffer ,
E_GL_ARB_transform_feedback_overflow_query ,
E_GL_KHR_blend_equation_advanced ,
E_GL_KHR_blend_equation_advanced_coherent ,
E_GL_KHR_no_error ,
E_GL_ARB_ES3_2_compatibility ,
E_GL_ARB_fragment_shader_interlock ,
E_GL_ARB_gpu_shader_int64 ,
E_GL_ARB_parallel_shader_compile ,
E_GL_ARB_post_depth_coverage ,
E_GL_ARB_sample_locations ,
E_GL_ARB_shader_atomic_counter_ops ,
E_GL_ARB_shader_ballot ,
E_GL_ARB_shader_clock ,
E_GL_ARB_shader_viewport_layer_array ,
E_GL_ARB_sparse_texture2 ,
E_GL_ARB_sparse_texture_clamp ,
E_GL_ARB_texture_filter_minmax ,
E_GL_KHR_texture_compression_astc_sliced_3d ,
E_GL_ARB_gl_spirv ,
E_GLX_ARB_create_context_no_error ,
E_WGL_ARB_create_context_no_error ,
E_GL_KHR_parallel_shader_compile ,
E_GL_ARB_polygon_offset_clamp ,
E_GL_ARB_spirv_extensions ,
E_GL_ARB_texture_filter_anisotropic ,
E_GL_KHR_shader_subgroup ,
E_GL_EXT_abgr ,
E_GL_EXT_blend_color ,
E_GL_EXT_polygon_offset ,
E_GL_EXT_texture ,
E_GL_EXT_texture3D ,
E_GL_SGIS_texture_filter4 ,
E_GL_EXT_subtexture ,
E_GL_EXT_copy_texture ,
E_GL_EXT_histogram ,
E_GL_EXT_convolution ,
E_GL_SGI_color_matrix ,
E_GL_SGI_color_table ,
E_GL_SGIS_pixel_texture ,
E_GL_SGIS_texture4D ,
E_GL_SGI_texture_color_table ,
E_GL_EXT_cmyka ,
E_GL_EXT_texture_object ,
E_GL_SGIS_detail_texture ,
E_GL_SGIS_sharpen_texture ,
E_GL_EXT_packed_pixels ,
E_GL_SGIS_texture_lod ,
E_GL_SGIS_multisample ,
E_GLX_SGIS_multisample ,
E_GL_EXT_rescale_normal ,
E_GLX_EXT_visual_info ,
E_GL_EXT_vertex_array ,
E_GL_EXT_misc_attribute ,
E_GL_SGIS_generate_mipmap ,
E_GL_SGIX_clipmap ,
E_GL_SGIX_shadow ,
E_GL_SGIS_texture_edge_clamp ,
E_GL_SGIS_texture_border_clamp ,
E_GL_EXT_blend_minmax ,
E_GL_EXT_blend_subtract ,
E_GL_EXT_blend_logic_op ,
E_GLX_SGI_swap_control ,
E_GLX_SGI_video_sync ,
E_GLX_SGI_make_current_read ,
E_GLX_SGIX_video_source ,
E_GLX_EXT_visual_rating ,
E_GL_SGIX_interlace ,
E_GLX_EXT_import_context ,
E_GLX_SGIX_fbconfig ,
E_GLX_SGIX_pbuffer ,
E_GL_SGIS_texture_select ,
E_GL_SGIX_sprite ,
E_GL_SGIX_texture_multi_buffer ,
E_GL_EXT_point_parameters ,
E_GL_SGIX_instruments ,
E_GL_SGIX_texture_scale_bias ,
E_GL_SGIX_framezoom ,
E_GL_SGIX_tag_sample_buffer ,
E_GL_SGIX_reference_plane ,
E_GL_SGIX_flush_raster ,
E_GLX_SGI_cushion ,
E_GL_SGIX_depth_texture ,
E_GL_SGIS_fog_function ,
E_GL_SGIX_fog_offset ,
E_GL_HP_image_transform ,
E_GL_HP_convolution_border_modes ,
E_GL_SGIX_texture_add_env ,
E_GL_EXT_color_subtable ,
E_GLU_EXT_object_space_tess ,
E_GL_PGI_vertex_hints ,
E_GL_PGI_misc_hints ,
E_GL_EXT_paletted_texture ,
E_GL_EXT_clip_volume_hint ,
E_GL_SGIX_list_priority ,
E_GL_SGIX_ir_instrument1 ,
E_GLX_SGIX_video_resize ,
E_GL_SGIX_texture_lod_bias ,
E_GLU_SGI_filter4_parameters ,
E_GLX_SGIX_dm_buffer ,
E_GL_SGIX_shadow_ambient ,
E_GLX_SGIX_swap_group ,
E_GLX_SGIX_swap_barrier ,
E_GL_EXT_index_texture ,
E_GL_EXT_index_material ,
E_GL_EXT_index_func ,
E_GL_EXT_index_array_formats ,
E_GL_EXT_compiled_vertex_array ,
E_GL_EXT_cull_vertex ,
E_GLU_EXT_nurbs_tessellator ,
E_GL_SGIX_ycrcb ,
E_GL_EXT_fragment_lighting ,
E_GL_IBM_rasterpos_clip ,
E_GL_HP_texture_lighting ,
E_GL_EXT_draw_range_elements ,
E_GL_WIN_phong_shading ,
E_GL_WIN_specular_fog ,
E_GLX_SGIS_color_range ,
E_GL_SGIS_color_range ,
E_GL_EXT_light_texture ,
E_GL_SGIX_blend_alpha_minmax ,
E_GL_EXT_scene_marker ,
E_GLX_EXT_scene_marker ,
E_GL_SGIX_pixel_texture_bits ,
E_GL_EXT_bgra ,
E_GL_SGIX_async ,
E_GL_SGIX_async_pixel ,
E_GL_SGIX_async_histogram ,
E_GL_INTEL_texture_scissor ,
E_GL_INTEL_parallel_arrays ,
E_GL_HP_occlusion_test ,
E_GL_EXT_pixel_transform ,
E_GL_EXT_pixel_transform_color_table ,
E_GL_EXT_shared_texture_palette ,
E_GLX_SGIS_blended_overlay ,
E_GL_EXT_separate_specular_color ,
E_GL_EXT_secondary_color ,
E_GL_EXT_texture_env ,
E_GL_EXT_texture_perturb_normal ,
E_GL_EXT_multi_draw_arrays ,
E_GL_SUN_multi_draw_arrays ,
E_GL_EXT_fog_coord ,
E_GL_REND_screen_coordinates ,
E_GL_EXT_coordinate_frame ,
E_GL_EXT_texture_env_combine ,
E_GL_APPLE_specular_vector ,
E_GL_APPLE_transform_hint ,
E_GL_SUNX_constant_data ,
E_GL_SUN_global_alpha ,
E_GL_SUN_triangle_list ,
E_GL_SUN_vertex ,
E_WGL_EXT_display_color_table ,
E_WGL_EXT_extensions_string ,
E_WGL_EXT_make_current_read ,
E_WGL_EXT_pixel_format ,
E_WGL_EXT_pbuffer ,
E_WGL_EXT_swap_control ,
E_GL_EXT_blend_func_separate ,
E_GL_INGR_color_clamp ,
E_GL_INGR_interlace_read ,
E_GL_EXT_stencil_wrap ,
E_WGL_EXT_depth_float ,
E_GL_EXT_422_pixels ,
E_GL_NV_texgen_reflection ,
E_GL_SGIX_texture_range ,
E_GL_SUN_convolution_border_modes ,
E_GLX_SUN_get_transparent_index ,
E_GLX_SGIX_video_resize_float ,
E_GL_EXT_texture_env_add ,
E_GL_EXT_texture_lod_bias ,
E_GL_EXT_texture_filter_anisotropic ,
E_GL_EXT_vertex_weighting ,
E_GL_NV_light_max_exponent ,
E_GL_NV_vertex_array_range ,
E_GL_NV_register_combiners ,
E_GL_NV_fog_distance ,
E_GL_NV_texgen_emboss ,
E_GL_NV_blend_square ,
E_GL_NV_texture_env_combine4 ,
E_GL_MESA_resize_buffers ,
E_GL_MESA_window_pos ,
E_GL_EXT_texture_compression_s3tc ,
E_GL_IBM_cull_vertex ,
E_GL_IBM_multimode_draw_arrays ,
E_GL_IBM_vertex_array_lists ,
E_GL_3DFX_texture_compression_FXT1 ,
E_GL_3DFX_multisample ,
E_GL_3DFX_tbuffer ,
E_WGL_EXT_multisample ,
E_GL_EXT_multisample ,
E_GL_SGIX_vertex_preclip ,
E_GL_SGIX_vertex_preclip_hint ,
E_GL_SGIX_convolution_accuracy ,
E_GL_SGIX_resample ,
E_GL_SGIS_point_line_texgen ,
E_GL_SGIS_texture_color_mask ,
E_GLX_MESA_copy_sub_buffer ,
E_GLX_MESA_pixmap_colormap ,
E_GLX_MESA_release_buffers ,
E_GLX_MESA_set_3dfx_mode ,
E_GL_EXT_texture_env_dot3 ,
E_GL_ATI_texture_mirror_once ,
E_GL_NV_fence ,
E_GL_IBM_static_data ,
E_GL_IBM_texture_mirrored_repeat ,
E_GL_NV_evaluators ,
E_GL_NV_packed_depth_stencil ,
E_GL_NV_register_combiners2 ,
E_GL_NV_texture_compression_vtc ,
E_GL_NV_texture_rectangle ,
E_GL_NV_texture_shader ,
E_GL_NV_texture_shader2 ,
E_GL_NV_vertex_array_range2 ,
E_GL_NV_vertex_program ,
E_GLX_SGIX_visual_select_group ,
E_GL_SGIX_texture_coordinate_clamp ,
E_GLX_OML_swap_method ,
E_GLX_OML_sync_control ,
E_GL_OML_interlace ,
E_GL_OML_subsample ,
E_GL_OML_resample ,
E_WGL_OML_sync_control ,
E_GL_NV_copy_depth_to_color ,
E_GL_ATI_envmap_bumpmap ,
E_GL_ATI_fragment_shader ,
E_GL_ATI_pn_triangles ,
E_GL_ATI_vertex_array_object ,
E_GL_EXT_vertex_shader ,
E_GL_ATI_vertex_streams ,
E_WGL_I3D_digital_video_control ,
E_WGL_I3D_gamma ,
E_WGL_I3D_genlock ,
E_WGL_I3D_image_buffer ,
E_WGL_I3D_swap_frame_lock ,
E_WGL_I3D_swap_frame_usage ,
E_GL_ATI_element_array ,
E_GL_SUN_mesh_array ,
E_GL_SUN_slice_accum ,
E_GL_NV_multisample_filter_hint ,
E_GL_NV_depth_clamp ,
E_GL_NV_occlusion_query ,
E_GL_NV_point_sprite ,
E_WGL_NV_render_depth_texture ,
E_WGL_NV_render_texture_rectangle ,
E_GL_NV_texture_shader3 ,
E_GL_NV_vertex_program1_1 ,
E_GL_EXT_shadow_funcs ,
E_GL_EXT_stencil_two_side ,
E_GL_ATI_text_fragment_shader ,
E_GL_APPLE_client_storage ,
E_GL_APPLE_element_array ,
E_GL_APPLE_fence ,
E_GL_APPLE_vertex_array_object ,
E_GL_APPLE_vertex_array_range ,
E_GL_APPLE_ycbcr_422 ,
E_GL_S3_s3tc ,
E_GL_ATI_draw_buffers ,
E_WGL_ATI_pixel_format_float ,
E_GL_ATI_texture_env_combine3 ,
E_GL_ATI_texture_float ,
E_GL_NV_float_buffer ,
E_WGL_NV_float_buffer ,
E_GL_NV_fragment_program ,
E_GL_NV_half_float ,
E_GL_NV_pixel_data_range ,
E_GL_NV_primitive_restart ,
E_GL_NV_texture_expand_normal ,
E_GL_NV_vertex_program2 ,
E_GL_ATI_map_object_buffer ,
E_GL_ATI_separate_stencil ,
E_GL_ATI_vertex_attrib_array_object ,
E_GL_OES_byte_coordinates ,
E_GL_OES_fixed_point ,
E_GL_OES_single_precision ,
E_GL_OES_compressed_paletted_texture ,
E_GL_OES_read_format ,
E_GL_OES_query_matrix ,
E_GL_EXT_depth_bounds_test ,
E_GL_EXT_texture_mirror_clamp ,
E_GL_EXT_blend_equation_separate ,
E_GL_MESA_pack_invert ,
E_GL_MESA_ycbcr_texture ,
E_GL_EXT_pixel_buffer_object ,
E_GL_NV_fragment_program_option ,
E_GL_NV_fragment_program2 ,
E_GL_NV_vertex_program2_option ,
E_GL_NV_vertex_program3 ,
E_GLX_SGIX_hyperpipe ,
E_GLX_MESA_agp_offset ,
E_GL_EXT_texture_compression_dxt1 ,
E_GL_EXT_framebuffer_object ,
E_GL_GREMEDY_string_marker ,
E_GL_EXT_packed_depth_stencil ,
E_WGL_3DL_stereo_control ,
E_GL_EXT_stencil_clear_tag ,
E_GL_EXT_texture_sRGB ,
E_GL_EXT_framebuffer_blit ,
E_GL_EXT_framebuffer_multisample ,
E_GL_MESAX_texture_stack ,
E_GL_EXT_timer_query ,
E_GL_EXT_gpu_program_parameters ,
E_GL_APPLE_flush_buffer_range ,
E_GL_NV_gpu_program4 ,
E_GL_NV_geometry_program4 ,
E_GL_EXT_geometry_shader4 ,
E_GL_NV_vertex_program4 ,
E_GL_EXT_gpu_shader4 ,
E_GL_EXT_draw_instanced ,
E_GL_EXT_packed_float ,
E_GLX_EXT_fbconfig_packed_float ,
E_WGL_EXT_pixel_format_packed_float ,
E_GL_EXT_texture_array ,
E_GL_EXT_texture_buffer_object ,
E_GL_EXT_texture_compression_latc ,
E_GL_EXT_texture_compression_rgtc ,
E_GL_EXT_texture_shared_exponent ,
E_GL_NV_depth_buffer_float ,
E_GL_NV_fragment_program4 ,
E_GL_NV_framebuffer_multisample_coverage ,
E_GL_EXT_framebuffer_sRGB ,
E_GLX_EXT_framebuffer_sRGB ,
E_WGL_EXT_framebuffer_sRGB ,
E_GL_NV_geometry_shader4 ,
E_GL_NV_parameter_buffer_object ,
E_GL_EXT_draw_buffers2 ,
E_GL_NV_transform_feedback ,
E_GL_EXT_bindable_uniform ,
E_GL_EXT_texture_integer ,
E_GLX_EXT_texture_from_pixmap ,
E_GL_GREMEDY_frame_terminator ,
E_GL_NV_conditional_render ,
E_GL_NV_present_video ,
E_GLX_NV_present_video ,
E_WGL_NV_present_video ,
E_GLX_NV_video_out ,
E_WGL_NV_video_output ,
E_GLX_NV_swap_group ,
E_WGL_NV_swap_group ,
E_GL_EXT_transform_feedback ,
E_GL_EXT_direct_state_access ,
E_GL_EXT_vertex_array_bgra ,
E_WGL_NV_gpu_affinity ,
E_GL_EXT_texture_swizzle ,
E_GL_NV_explicit_multisample ,
E_GL_NV_transform_feedback2 ,
E_GL_ATI_meminfo ,
E_GL_AMD_performance_monitor ,
E_WGL_AMD_gpu_association ,
E_GL_AMD_texture_texture4 ,
E_GL_AMD_vertex_shader_tessellator ,
E_GL_EXT_provoking_vertex ,
E_GL_EXT_texture_snorm ,
E_GL_AMD_draw_buffers_blend ,
E_GL_APPLE_texture_range ,
E_GL_APPLE_float_pixels ,
E_GL_APPLE_vertex_program_evaluators ,
E_GL_APPLE_aux_depth_stencil ,
E_GL_APPLE_object_purgeable ,
E_GL_APPLE_row_bytes ,
E_GL_APPLE_rgb_422 ,
E_GL_NV_video_capture ,
E_GLX_NV_video_capture ,
E_WGL_NV_video_capture ,
E_GL_EXT_swap_control ,
E_GL_NV_copy_image ,
E_GLX_NV_copy_image ,
E_WGL_NV_copy_image ,
E_GL_EXT_separate_shader_objects ,
E_GL_NV_parameter_buffer_object2 ,
E_GL_NV_shader_buffer_load ,
E_GL_NV_vertex_buffer_unified_memory ,
E_GL_NV_texture_barrier ,
E_GL_AMD_shader_stencil_export ,
E_GL_AMD_seamless_cubemap_per_texture ,
E_GLX_INTEL_swap_event ,
E_GL_AMD_conservative_depth ,
E_GL_EXT_shader_image_load_store ,
E_GL_EXT_vertex_attrib_64bit ,
E_GL_NV_gpu_program5 ,
E_GL_NV_gpu_shader5 ,
E_GL_NV_shader_buffer_store ,
E_GL_NV_tessellation_program5 ,
E_GL_NV_vertex_attrib_integer_64bit ,
E_GL_NV_multisample_coverage ,
E_GL_AMD_name_gen_delete ,
E_GL_AMD_debug_output ,
E_GL_NV_vdpau_interop ,
E_GL_AMD_transform_feedback3_lines_triangles ,
E_GLX_AMD_gpu_association ,
E_GLX_EXT_create_context_es2_profile ,
E_GLX_EXT_create_context_es_profile ,
E_WGL_EXT_create_context_es2_profile ,
E_WGL_EXT_create_context_es_profile ,
E_GL_AMD_depth_clamp_separate ,
E_GL_EXT_texture_sRGB_decode ,
E_GL_NV_texture_multisample ,
E_GL_AMD_blend_minmax_factor ,
E_GL_AMD_sample_positions ,
E_GL_EXT_x11_sync_object ,
E_WGL_NV_DX_interop ,
E_GL_AMD_multi_draw_indirect ,
E_GL_EXT_framebuffer_multisample_blit_scaled ,
E_GL_NV_path_rendering ,
E_GL_AMD_pinned_memory ,
E_WGL_NV_DX_interop2 ,
E_GL_AMD_stencil_operation_extended ,
E_GLX_EXT_swap_control_tear ,
E_WGL_EXT_swap_control_tear ,
E_GL_AMD_vertex_shader_viewport_index ,
E_GL_AMD_vertex_shader_layer ,
E_GL_NV_bindless_texture ,
E_GL_NV_shader_atomic_float ,
E_GL_AMD_query_buffer_object ,
E_GL_NV_compute_program5 ,
E_GL_NV_shader_storage_buffer_object ,
E_GL_NV_shader_atomic_counters ,
E_GL_NV_deep_texture3D ,
E_GL_NVX_conditional_render ,
E_GL_AMD_sparse_texture ,
E_GLX_EXT_buffer_age ,
E_GL_AMD_shader_trinary_minmax ,
E_GL_INTEL_map_texture ,
E_GL_NV_draw_texture ,
E_GL_AMD_interleaved_elements ,
E_GL_NV_bindless_multi_draw_indirect ,
E_GL_NV_blend_equation_advanced ,
E_GL_NV_blend_equation_advanced_coherent ,
E_GL_NV_gpu_program5_mem_extended ,
E_GL_AMD_shader_atomic_counter_ops ,
E_WGL_NV_delay_before_swap ,
E_GL_EXT_shader_integer_mix ,
E_GL_NVX_gpu_memory_info ,
E_GL_EXT_debug_label ,
E_GL_EXT_debug_marker ,
E_GL_INTEL_fragment_shader_ordering ,
E_GL_AMD_occlusion_query_event ,
E_GL_INTEL_performance_query ,
E_GL_AMD_shader_stencil_value_export ,
E_GLX_NV_delay_before_swap ,
E_GLX_MESA_query_renderer ,
E_GL_NV_shader_thread_group ,
E_GL_NV_shader_thread_shuffle ,
E_GL_EXT_shader_image_load_formatted ,
E_GL_AMD_transform_feedback4 ,
E_GL_AMD_gpu_shader_int64 ,
E_GLX_EXT_stereo_tree ,
E_GL_AMD_gcn_shader ,
E_GL_AMD_framebuffer_sample_positions ,
E_GL_NV_shader_atomic_int64 ,
E_GL_NV_bindless_multi_draw_indirect_count ,
E_GLX_NV_copy_buffer ,
E_GL_NV_uniform_buffer_unified_memory ,
E_GL_EXT_polygon_offset_clamp ,
E_GL_EXT_post_depth_coverage ,
E_GL_EXT_raster_multisample ,
E_GL_EXT_sparse_texture2 ,
E_GL_EXT_texture_filter_minmax ,
E_GL_NV_conservative_raster ,
E_GL_NV_fill_rectangle ,
E_GL_NV_fragment_coverage_to_color ,
E_GL_NV_fragment_shader_interlock ,
E_GL_NV_framebuffer_mixed_samples ,
E_GL_NV_geometry_shader_passthrough ,
E_GL_NV_path_rendering_shared_edge ,
E_GL_NV_sample_locations ,
E_GL_NV_sample_mask_override_coverage ,
E_GL_NV_shader_atomic_fp16_vector ,
E_GL_NV_internalformat_sample_query ,
E_GL_NV_viewport_array2 ,
E_GL_NV_command_list ,
E_GL_OVR_multiview ,
E_GL_OVR_multiview2 ,
E_GL_NV_conservative_raster_dilate ,
E_GL_INTEL_framebuffer_CMAA ,
E_GLX_EXT_libglvnd ,
E_GL_NV_viewport_swizzle ,
E_GL_NV_robustness_video_memory_purge ,
E_GL_AMD_shader_explicit_vertex_parameter ,
E_GL_NV_clip_space_w_scaling ,
E_GL_NV_conservative_raster_pre_snap_triangles ,
E_GL_NV_shader_atomic_float64 ,
E_GL_NV_stereo_view_rendering ,
E_GL_EXT_window_rectangles ,
E_GL_INTEL_conservative_rasterization ,
E_GL_NVX_blend_equation_advanced_multi_draw_buffers ,
E_GL_NVX_linked_gpu_multicast ,
E_GL_NV_gpu_multicast ,
E_GL_MESA_shader_integer_functions ,
E_GL_AMD_gpu_shader_half_float ,
E_GL_AMD_shader_ballot ,
E_WGL_EXT_colorspace ,
E_GL_SGIX_pixel_texture ,
E_GL_NV_alpha_to_coverage_dither_control ,
E_GL_NV_draw_vulkan_image ,
E_GL_AMD_texture_gather_bias_lod ,
E_GL_EXT_memory_object ,
E_GL_EXT_semaphore ,
E_GL_EXT_memory_object_fd ,
E_GL_EXT_semaphore_fd ,
E_GL_EXT_memory_object_win32 ,
E_GL_EXT_semaphore_win32 ,
E_GL_EXT_win32_keyed_mutex ,
E_GL_AMD_gpu_shader_int16 ,
E_GL_EXT_external_buffer ,
E_GL_NV_texture_rectangle_compressed ,
E_GL_NV_blend_minmax_factor ,
E_GL_NV_query_resource ,
E_GL_NV_query_resource_tag ,
E_GL_AMD_shader_image_load_store_lod ,
E_GLX_MESA_swap_control ,
E_GL_MESA_tile_raster_order ,
E_GL_MESA_program_binary_formats ,
E_GL_NV_conservative_raster_pre_snap ,
E_GL_NV_conservative_raster_underestimation ,
E_GL_AMD_gpu_shader_half_float_fetch ,
E_GL_EXT_shader_framebuffer_fetch ,
E_GL_EXT_shader_framebuffer_fetch_non_coherent ,
E_GL_INTEL_blackhole_render ,
E_GL_EXT_EGL_image_storage ,
E_GL_AMD_framebuffer_multisample_advanced ,
E_GL_NV_memory_attachment ,
E_GL_NV_compute_shader_derivatives ,
E_GL_NV_fragment_shader_barycentric ,
E_GL_NV_mesh_shader ,
E_GL_NV_representative_fragment_test ,
E_GL_NV_scissor_exclusive ,
E_GL_NV_shader_texture_footprint ,
E_GL_NV_shading_rate_image ,
E_WGL_ATI_render_texture_rectangle ,
E_GL_NV_vdpau_interop2 ,
E_GL_EXT_texture_sRGB_R8 ,
E_GLX_EXT_context_priority ,
E_GL_EXT_multiview_timer_query ,
E_GL_EXT_multiview_texture_multisample ,
E_GL_EXT_multiview_tessellation_geometry_shader ,
E_GL_EXT_texture_shadow_lod ,
E_GL_MESA_framebuffer_flip_y ,
E_GL_NVX_progress_fence ,
E_WGL_NV_multigpu_context ,
E_GL_NVX_gpu_multicast2 ,
E_GL_NV_shader_subgroup_partitioned ,
E_GLX_NV_multigpu_context ,
E_GL_EXT_EGL_sync ,
E_GL_INTEL_shader_integer_functions2 ,
E_GL_MESA_framebuffer_flip_x ,
E_GL_MESA_framebuffer_swap_xy ,
E_GL_NV_memory_object_sparse ,
E_GL_NV_timeline_semaphore ,
E_GLX_EXT_get_drawable_type ,
E_GLX_EXT_no_config_context ,
E_GL_NV_primitive_shading_rate ,
E_GL_EXT_texture_sRGB_RG8 ,
E_GL_EXT_texture_storage ,
E_GL_EXT_framebuffer_blit_layers ,
E_GL_NV_uniform_buffer_std430_layout ,
E_GL_MESA_texture_const_bandwidth
};
}
+89
View File
@@ -0,0 +1,89 @@
#pragma once
namespace MobileGL {
using String = std::string;
using Int8 = int8_t;
using Uint8 = uint8_t;
using Int16 = int16_t;
using Uint16 = uint16_t;
using Int32 = int32_t;
using Uint32 = uint32_t;
using Int = Int32;
using Uint = Uint32;
using Int64 = int64_t;
using Uint64 = uint64_t;
using Bool = bool;
using Float = float;
using Double = double;
template <typename T>
using Vector = std::vector<T>;
template <typename T>
using SharedPtr = std::shared_ptr<T>;
template <typename T>
using UniquePtr = std::unique_ptr<T>;
template<typename T, typename... Args>
inline SharedPtr<T> MakeShared(Args&&... args) {
return std::make_shared<T>(std::forward<Args>(args)...);
}
template<typename T, typename... Args>
inline UniquePtr<T> MakeUnique(Args&&... args) {
return std::make_unique<T>(std::forward<Args>(args)...);
}
using SizeT = std::size_t;
template <typename T, SizeT N>
using Array = std::array<T, N>;
template <typename Key, typename Value>
using UnorderedMap = std::unordered_map<Key, Value>;
template<typename T>
inline constexpr std::remove_reference_t<T>&& Move(T&& t) noexcept {
return static_cast<std::remove_reference_t<T>&&>(t);
}
class RuntimeError : public std::runtime_error {
public:
using std::runtime_error::runtime_error;
};
template <typename T>
using Optional = std::optional<T>;
using NulloptT = std::nullopt_t;
const NulloptT Nullopt = std::nullopt;
using Data = Vector<Uint8>;
struct DataPtr {
void* data;
SizeT size;
};
struct Version {
Int Major;
Int Minor;
Int Patch;
Optional<String> Suffix;
String toString() const {
String versionStr = std::format("{}.{}.{}", Major, Minor, Patch);
if (Suffix.has_value()) {
versionStr += std::format("{}", Suffix.value());
}
return versionStr;
}
};
struct BackendCap {
};
struct GLInfo {
Version TargetGLVersion;
Version TargetGLSLVersion;
Vector<GLExtension> Extensions;
Bool IsCompatibilityProfile;
};
struct RendererInfo {
String RendererName;
String BackendName;
Optional<String> ExtraVendor;
GLInfo RendererGLInfo;
BackendCap BackendCapability;
};
}