mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-09 12:48:32 +09:00
[Feat] (All): Continue building the basic structure.
This commit is contained in:
@@ -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
@@ -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
@@ -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"
|
||||
|
||||
@@ -4,6 +4,7 @@ namespace MobileGL {
|
||||
void MG_Initialize() {
|
||||
MG_Util::Debug::InitFile();
|
||||
MGLOG_I("MobileGL Initializing...");
|
||||
MG_Backend::Init();
|
||||
}
|
||||
|
||||
void MG_Destroy() {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user