diff --git a/src/modules/video/gl/flextGL.c b/src/modules/video/gl/flextGL.c index 4f2970d9a..bd0011ffd 100644 --- a/src/modules/video/gl/flextGL.c +++ b/src/modules/video/gl/flextGL.c @@ -1,34 +1,106 @@ -/* - This file was generated using https://github.com/mosra/flextgl: - - path/to/flextGLgen.py -T sdl -D /home/mgerhardy/dev/engine/src/modules/video/gl profiles/gl33.txt - - Do not edit directly, modify the template or profile and regenerate. -*/ +/* WARNING: This file was automatically generated */ +/* Do not edit. */ #include "flextGL.h" - #include + #ifdef __cplusplus extern "C" { #endif -void flextLoadOpenGLFunctions(void) { + +void flextLoadOpenGLFunctions(void); + +/** + * \return -1 on error, 0 on success + * \sa SDL_GetError + */ +int flextInit(void) +{ + int major; + int minor; + + SDL_GL_GetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, &major); + SDL_GL_GetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, &minor); + + flextLoadOpenGLFunctions(); + + /* --- Check for minimal version and profile --- */ + + if (major * 10 + minor < 33) { + return SDL_SetError("OpenGL context hasn't the expected version 3.3."); + } + + + /* --- Check for extensions --- */ + + if (SDL_GL_ExtensionSupported("GL_ARB_debug_output")) { + FLEXT_ARB_debug_output = GL_TRUE; + } + + if (SDL_GL_ExtensionSupported("GL_ARB_direct_state_access")) { + FLEXT_ARB_direct_state_access = GL_TRUE; + } + + if (SDL_GL_ExtensionSupported("GL_ARB_buffer_storage")) { + FLEXT_ARB_buffer_storage = GL_TRUE; + } + + if (SDL_GL_ExtensionSupported("GL_ARB_multi_draw_indirect")) { + FLEXT_ARB_multi_draw_indirect = GL_TRUE; + } + + if (SDL_GL_ExtensionSupported("GL_ARB_draw_indirect")) { + FLEXT_ARB_draw_indirect = GL_TRUE; + } + + if (SDL_GL_ExtensionSupported("GL_ARB_instanced_arrays")) { + FLEXT_ARB_instanced_arrays = GL_TRUE; + } + + if (SDL_GL_ExtensionSupported("GL_ARB_compute_shader")) { + FLEXT_ARB_compute_shader = GL_TRUE; + } + + if (SDL_GL_ExtensionSupported("GL_ARB_shader_image_load_store")) { + FLEXT_ARB_shader_image_load_store = GL_TRUE; + } + + if (SDL_GL_ExtensionSupported("GL_ARB_transform_feedback2")) { + FLEXT_ARB_transform_feedback2 = GL_TRUE; + } + + if (SDL_GL_ExtensionSupported("GL_ARB_shader_storage_buffer_object")) { + FLEXT_ARB_shader_storage_buffer_object = GL_TRUE; + } + + + return 0; +} + +void flextLoadOpenGLFunctions(void) +{ + /* --- Function pointer loading --- */ + /* GL_ARB_buffer_storage */ + glpfBufferStorage = (PFNGLBUFFERSTORAGE_PROC*)SDL_GL_GetProcAddress("glBufferStorage"); /* GL_ARB_compute_shader */ + glpfDispatchCompute = (PFNGLDISPATCHCOMPUTE_PROC*)SDL_GL_GetProcAddress("glDispatchCompute"); glpfDispatchComputeIndirect = (PFNGLDISPATCHCOMPUTEINDIRECT_PROC*)SDL_GL_GetProcAddress("glDispatchComputeIndirect"); /* GL_ARB_debug_output */ + glpfDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARB_PROC*)SDL_GL_GetProcAddress("glDebugMessageCallbackARB"); glpfDebugMessageControlARB = (PFNGLDEBUGMESSAGECONTROLARB_PROC*)SDL_GL_GetProcAddress("glDebugMessageControlARB"); glpfDebugMessageInsertARB = (PFNGLDEBUGMESSAGEINSERTARB_PROC*)SDL_GL_GetProcAddress("glDebugMessageInsertARB"); glpfGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARB_PROC*)SDL_GL_GetProcAddress("glGetDebugMessageLogARB"); /* GL_ARB_direct_state_access */ + glpfBindTextureUnit = (PFNGLBINDTEXTUREUNIT_PROC*)SDL_GL_GetProcAddress("glBindTextureUnit"); glpfBlitNamedFramebuffer = (PFNGLBLITNAMEDFRAMEBUFFER_PROC*)SDL_GL_GetProcAddress("glBlitNamedFramebuffer"); glpfCheckNamedFramebufferStatus = (PFNGLCHECKNAMEDFRAMEBUFFERSTATUS_PROC*)SDL_GL_GetProcAddress("glCheckNamedFramebufferStatus"); @@ -128,24 +200,30 @@ void flextLoadOpenGLFunctions(void) { glpfVertexArrayVertexBuffers = (PFNGLVERTEXARRAYVERTEXBUFFERS_PROC*)SDL_GL_GetProcAddress("glVertexArrayVertexBuffers"); /* GL_ARB_draw_indirect */ + glpfDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECT_PROC*)SDL_GL_GetProcAddress("glDrawArraysIndirect"); glpfDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECT_PROC*)SDL_GL_GetProcAddress("glDrawElementsIndirect"); /* GL_ARB_instanced_arrays */ + glpfVertexAttribDivisorARB = (PFNGLVERTEXATTRIBDIVISORARB_PROC*)SDL_GL_GetProcAddress("glVertexAttribDivisorARB"); /* GL_ARB_multi_draw_indirect */ + glpfMultiDrawArraysIndirect = (PFNGLMULTIDRAWARRAYSINDIRECT_PROC*)SDL_GL_GetProcAddress("glMultiDrawArraysIndirect"); glpfMultiDrawElementsIndirect = (PFNGLMULTIDRAWELEMENTSINDIRECT_PROC*)SDL_GL_GetProcAddress("glMultiDrawElementsIndirect"); /* GL_ARB_shader_image_load_store */ + glpfBindImageTexture = (PFNGLBINDIMAGETEXTURE_PROC*)SDL_GL_GetProcAddress("glBindImageTexture"); glpfMemoryBarrier = (PFNGLMEMORYBARRIER_PROC*)SDL_GL_GetProcAddress("glMemoryBarrier"); /* GL_ARB_shader_storage_buffer_object */ + glpfShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDING_PROC*)SDL_GL_GetProcAddress("glShaderStorageBlockBinding"); /* GL_ARB_transform_feedback2 */ + glpfBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACK_PROC*)SDL_GL_GetProcAddress("glBindTransformFeedback"); glpfDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKS_PROC*)SDL_GL_GetProcAddress("glDeleteTransformFeedbacks"); glpfDrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACK_PROC*)SDL_GL_GetProcAddress("glDrawTransformFeedback"); @@ -155,6 +233,7 @@ void flextLoadOpenGLFunctions(void) { glpfResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACK_PROC*)SDL_GL_GetProcAddress("glResumeTransformFeedback"); /* GL_VERSION_1_0 */ + glpfBlendFunc = (PFNGLBLENDFUNC_PROC*)SDL_GL_GetProcAddress("glBlendFunc"); glpfClear = (PFNGLCLEAR_PROC*)SDL_GL_GetProcAddress("glClear"); glpfClearColor = (PFNGLCLEARCOLOR_PROC*)SDL_GL_GetProcAddress("glClearColor"); @@ -205,6 +284,7 @@ void flextLoadOpenGLFunctions(void) { glpfViewport = (PFNGLVIEWPORT_PROC*)SDL_GL_GetProcAddress("glViewport"); /* GL_VERSION_1_1 */ + glpfBindTexture = (PFNGLBINDTEXTURE_PROC*)SDL_GL_GetProcAddress("glBindTexture"); glpfCopyTexImage1D = (PFNGLCOPYTEXIMAGE1D_PROC*)SDL_GL_GetProcAddress("glCopyTexImage1D"); glpfCopyTexImage2D = (PFNGLCOPYTEXIMAGE2D_PROC*)SDL_GL_GetProcAddress("glCopyTexImage2D"); @@ -220,12 +300,14 @@ void flextLoadOpenGLFunctions(void) { glpfTexSubImage2D = (PFNGLTEXSUBIMAGE2D_PROC*)SDL_GL_GetProcAddress("glTexSubImage2D"); /* GL_VERSION_1_2 */ + glpfCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3D_PROC*)SDL_GL_GetProcAddress("glCopyTexSubImage3D"); glpfDrawRangeElements = (PFNGLDRAWRANGEELEMENTS_PROC*)SDL_GL_GetProcAddress("glDrawRangeElements"); glpfTexImage3D = (PFNGLTEXIMAGE3D_PROC*)SDL_GL_GetProcAddress("glTexImage3D"); glpfTexSubImage3D = (PFNGLTEXSUBIMAGE3D_PROC*)SDL_GL_GetProcAddress("glTexSubImage3D"); /* GL_VERSION_1_3 */ + glpfActiveTexture = (PFNGLACTIVETEXTURE_PROC*)SDL_GL_GetProcAddress("glActiveTexture"); glpfCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1D_PROC*)SDL_GL_GetProcAddress("glCompressedTexImage1D"); glpfCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2D_PROC*)SDL_GL_GetProcAddress("glCompressedTexImage2D"); @@ -237,6 +319,7 @@ void flextLoadOpenGLFunctions(void) { glpfSampleCoverage = (PFNGLSAMPLECOVERAGE_PROC*)SDL_GL_GetProcAddress("glSampleCoverage"); /* GL_VERSION_1_4 */ + glpfBlendColor = (PFNGLBLENDCOLOR_PROC*)SDL_GL_GetProcAddress("glBlendColor"); glpfBlendEquation = (PFNGLBLENDEQUATION_PROC*)SDL_GL_GetProcAddress("glBlendEquation"); glpfBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATE_PROC*)SDL_GL_GetProcAddress("glBlendFuncSeparate"); @@ -248,6 +331,7 @@ void flextLoadOpenGLFunctions(void) { glpfPointParameteriv = (PFNGLPOINTPARAMETERIV_PROC*)SDL_GL_GetProcAddress("glPointParameteriv"); /* GL_VERSION_1_5 */ + glpfBeginQuery = (PFNGLBEGINQUERY_PROC*)SDL_GL_GetProcAddress("glBeginQuery"); glpfBindBuffer = (PFNGLBINDBUFFER_PROC*)SDL_GL_GetProcAddress("glBindBuffer"); glpfBufferData = (PFNGLBUFFERDATA_PROC*)SDL_GL_GetProcAddress("glBufferData"); @@ -269,6 +353,7 @@ void flextLoadOpenGLFunctions(void) { glpfUnmapBuffer = (PFNGLUNMAPBUFFER_PROC*)SDL_GL_GetProcAddress("glUnmapBuffer"); /* GL_VERSION_2_0 */ + glpfAttachShader = (PFNGLATTACHSHADER_PROC*)SDL_GL_GetProcAddress("glAttachShader"); glpfBindAttribLocation = (PFNGLBINDATTRIBLOCATION_PROC*)SDL_GL_GetProcAddress("glBindAttribLocation"); glpfBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATE_PROC*)SDL_GL_GetProcAddress("glBlendEquationSeparate"); @@ -364,6 +449,7 @@ void flextLoadOpenGLFunctions(void) { glpfVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTER_PROC*)SDL_GL_GetProcAddress("glVertexAttribPointer"); /* GL_VERSION_2_1 */ + glpfUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FV_PROC*)SDL_GL_GetProcAddress("glUniformMatrix2x3fv"); glpfUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FV_PROC*)SDL_GL_GetProcAddress("glUniformMatrix2x4fv"); glpfUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FV_PROC*)SDL_GL_GetProcAddress("glUniformMatrix3x2fv"); @@ -372,6 +458,7 @@ void flextLoadOpenGLFunctions(void) { glpfUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FV_PROC*)SDL_GL_GetProcAddress("glUniformMatrix4x3fv"); /* GL_VERSION_3_0 */ + glpfBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDER_PROC*)SDL_GL_GetProcAddress("glBeginConditionalRender"); glpfBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACK_PROC*)SDL_GL_GetProcAddress("glBeginTransformFeedback"); glpfBindBufferBase = (PFNGLBINDBUFFERBASE_PROC*)SDL_GL_GetProcAddress("glBindBufferBase"); @@ -458,6 +545,7 @@ void flextLoadOpenGLFunctions(void) { glpfVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTER_PROC*)SDL_GL_GetProcAddress("glVertexAttribIPointer"); /* GL_VERSION_3_1 */ + glpfCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATA_PROC*)SDL_GL_GetProcAddress("glCopyBufferSubData"); glpfDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCED_PROC*)SDL_GL_GetProcAddress("glDrawArraysInstanced"); glpfDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCED_PROC*)SDL_GL_GetProcAddress("glDrawElementsInstanced"); @@ -472,6 +560,7 @@ void flextLoadOpenGLFunctions(void) { glpfUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDING_PROC*)SDL_GL_GetProcAddress("glUniformBlockBinding"); /* GL_VERSION_3_2 */ + glpfClientWaitSync = (PFNGLCLIENTWAITSYNC_PROC*)SDL_GL_GetProcAddress("glClientWaitSync"); glpfDeleteSync = (PFNGLDELETESYNC_PROC*)SDL_GL_GetProcAddress("glDeleteSync"); glpfDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEX_PROC*)SDL_GL_GetProcAddress("glDrawElementsBaseVertex"); @@ -493,6 +582,7 @@ void flextLoadOpenGLFunctions(void) { glpfWaitSync = (PFNGLWAITSYNC_PROC*)SDL_GL_GetProcAddress("glWaitSync"); /* GL_VERSION_3_3 */ + glpfBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXED_PROC*)SDL_GL_GetProcAddress("glBindFragDataLocationIndexed"); glpfBindSampler = (PFNGLBINDSAMPLER_PROC*)SDL_GL_GetProcAddress("glBindSampler"); glpfDeleteSamplers = (PFNGLDELETESAMPLERS_PROC*)SDL_GL_GetProcAddress("glDeleteSamplers"); @@ -524,57 +614,7 @@ void flextLoadOpenGLFunctions(void) { } -int flextInit(void) { - int major; - int minor; - SDL_GL_GetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, &major); - SDL_GL_GetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, &minor); - - flextLoadOpenGLFunctions(); - - /* Check for minimal version and profile */ - - if(major * 10 + minor < 33) { - return SDL_SetError("OpenGL context hasn't the expected version 3.3."); - } - - /* --- Check for extensions --- */ - - if(SDL_GL_ExtensionSupported("GL_ARB_debug_output")) { - FLEXT_ARB_debug_output = GL_TRUE; - } - if(SDL_GL_ExtensionSupported("GL_ARB_direct_state_access")) { - FLEXT_ARB_direct_state_access = GL_TRUE; - } - if(SDL_GL_ExtensionSupported("GL_ARB_buffer_storage")) { - FLEXT_ARB_buffer_storage = GL_TRUE; - } - if(SDL_GL_ExtensionSupported("GL_ARB_multi_draw_indirect")) { - FLEXT_ARB_multi_draw_indirect = GL_TRUE; - } - if(SDL_GL_ExtensionSupported("GL_ARB_draw_indirect")) { - FLEXT_ARB_draw_indirect = GL_TRUE; - } - if(SDL_GL_ExtensionSupported("GL_ARB_instanced_arrays")) { - FLEXT_ARB_instanced_arrays = GL_TRUE; - } - if(SDL_GL_ExtensionSupported("GL_ARB_compute_shader")) { - FLEXT_ARB_compute_shader = GL_TRUE; - } - if(SDL_GL_ExtensionSupported("GL_ARB_shader_image_load_store")) { - FLEXT_ARB_shader_image_load_store = GL_TRUE; - } - if(SDL_GL_ExtensionSupported("GL_ARB_transform_feedback2")) { - FLEXT_ARB_transform_feedback2 = GL_TRUE; - } - if(SDL_GL_ExtensionSupported("GL_ARB_shader_storage_buffer_object")) { - FLEXT_ARB_shader_storage_buffer_object = GL_TRUE; - } - - return 0; -} - -/* Extension flag definitions */ +/* ----------------------- Extension flag definitions ---------------------- */ int FLEXT_ARB_debug_output = GL_FALSE; int FLEXT_ARB_direct_state_access = GL_FALSE; int FLEXT_ARB_buffer_storage = GL_FALSE; @@ -586,7 +626,7 @@ int FLEXT_ARB_shader_image_load_store = GL_FALSE; int FLEXT_ARB_transform_feedback2 = GL_FALSE; int FLEXT_ARB_shader_storage_buffer_object = GL_FALSE; -/* Function pointer definitions */ +/* ---------------------- Function pointer definitions --------------------- */ /* GL_ARB_buffer_storage */ @@ -1117,6 +1157,7 @@ PFNGLVERTEXATTRIBP3UIV_PROC* glpfVertexAttribP3uiv = NULL; PFNGLVERTEXATTRIBP4UI_PROC* glpfVertexAttribP4ui = NULL; PFNGLVERTEXATTRIBP4UIV_PROC* glpfVertexAttribP4uiv = NULL; + #ifdef __cplusplus } #endif diff --git a/src/modules/video/gl/flextGL.h b/src/modules/video/gl/flextGL.h index eac00126c..616f21146 100644 --- a/src/modules/video/gl/flextGL.h +++ b/src/modules/video/gl/flextGL.h @@ -1,12 +1,8 @@ +/* WARNING: This file was automatically generated */ +/* Do not edit. */ + #ifndef __gl_h_ #define __gl_h_ -/* - This file was generated using https://github.com/mosra/flextgl: - - path/to/flextGLgen.py -T sdl -D /home/mgerhardy/dev/engine/src/modules/video/gl profiles/gl33.txt - - Do not edit directly, modify the template or profile and regenerate. -*/ #ifdef __cplusplus extern "C" { @@ -32,32 +28,71 @@ extern "C" { #define GLAPI extern #endif -/* ------------------------------- DATA TYPES ------------------------------ */ +/* -------------------------------- DATA TYPES ------------------------------- */ -#include +#include +#ifndef GLEXT_64_TYPES_DEFINED +/* This code block is duplicated in glxext.h, so must be protected */ +#define GLEXT_64_TYPES_DEFINED +/* Define int32_t, int64_t, and uint64_t types for UST/MSC */ +/* (as used in the GL_EXT_timer_query extension). */ +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#include +#elif defined(__sun__) || defined(__digital__) +#include +#if defined(__STDC__) +#if defined(__arch64__) || defined(_LP64) +typedef long int int64_t; +typedef unsigned long int uint64_t; +#else +typedef long long int int64_t; +typedef unsigned long long int uint64_t; +#endif /* __arch64__ */ +#endif /* __STDC__ */ +#elif defined( __VMS ) || defined(__sgi) +#include +#elif defined(__SCO__) || defined(__USLC__) +#include +#elif defined(__UNIXOS2__) || defined(__SOL64__) +typedef long int int32_t; +typedef long long int int64_t; +typedef unsigned long long int uint64_t; +#elif defined(_WIN32) && defined(__GNUC__) +#include +#elif defined(_WIN32) +typedef __int32 int32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +#else +/* Fallback if nothing above works */ +#include +#endif +#endif typedef unsigned int GLenum; typedef unsigned char GLboolean; typedef unsigned int GLbitfield; typedef void GLvoid; -typedef khronos_int8_t GLbyte; -typedef khronos_uint8_t GLubyte; -typedef khronos_int16_t GLshort; -typedef khronos_uint16_t GLushort; +typedef signed char GLbyte; +typedef short GLshort; typedef int GLint; +typedef unsigned char GLubyte; +typedef unsigned short GLushort; typedef unsigned int GLuint; typedef int GLsizei; -typedef khronos_float_t GLfloat; +typedef float GLfloat; +typedef float GLclampf; typedef double GLdouble; +typedef double GLclampd; typedef char GLchar; -typedef khronos_uint16_t GLhalf; -typedef khronos_intptr_t GLintptr; -typedef khronos_ssize_t GLsizeiptr; -typedef khronos_int64_t GLint64; -typedef khronos_uint64_t GLuint64; +typedef unsigned short GLhalf; +typedef ptrdiff_t GLintptr; +typedef ptrdiff_t GLsizeiptr; +typedef int64_t GLint64; +typedef uint64_t GLuint64; typedef struct __GLsync *GLsync; typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); -/* ---------------------------------- ENUMS -------------------------------- */ +/* ----------------------------------- ENUMS --------------------------------- */ /* GL_VERSION_1_0 */ @@ -1090,7 +1125,8 @@ typedef void (APIENTRY *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLen #define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39 #define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS 0x8F39 -/* -------------------------- FUNCTION PROTOTYPES -------------------------- */ +/* --------------------------- FUNCTION PROTOTYPES --------------------------- */ + /* GL_ARB_buffer_storage */ @@ -1100,6 +1136,7 @@ GLAPI PFNGLBUFFERSTORAGE_PROC* glpfBufferStorage; #define glBufferStorage glpfBufferStorage + /* GL_ARB_compute_shader */ typedef void (APIENTRY PFNGLDISPATCHCOMPUTE_PROC (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)); @@ -1111,6 +1148,7 @@ GLAPI PFNGLDISPATCHCOMPUTEINDIRECT_PROC* glpfDispatchComputeIndirect; #define glDispatchCompute glpfDispatchCompute #define glDispatchComputeIndirect glpfDispatchComputeIndirect + /* GL_ARB_debug_output */ typedef void (APIENTRY PFNGLDEBUGMESSAGECALLBACKARB_PROC (GLDEBUGPROCARB callback, const void * userParam)); @@ -1128,6 +1166,7 @@ GLAPI PFNGLGETDEBUGMESSAGELOGARB_PROC* glpfGetDebugMessageLogARB; #define glDebugMessageInsertARB glpfDebugMessageInsertARB #define glGetDebugMessageLogARB glpfGetDebugMessageLogARB + /* GL_ARB_direct_state_access */ typedef void (APIENTRY PFNGLBINDTEXTUREUNIT_PROC (GLuint unit, GLuint texture)); @@ -1424,6 +1463,7 @@ GLAPI PFNGLVERTEXARRAYVERTEXBUFFERS_PROC* glpfVertexArrayVertexBuffers; #define glVertexArrayVertexBuffer glpfVertexArrayVertexBuffer #define glVertexArrayVertexBuffers glpfVertexArrayVertexBuffers + /* GL_ARB_draw_indirect */ typedef void (APIENTRY PFNGLDRAWARRAYSINDIRECT_PROC (GLenum mode, const void * indirect)); @@ -1435,6 +1475,7 @@ GLAPI PFNGLDRAWELEMENTSINDIRECT_PROC* glpfDrawElementsIndirect; #define glDrawArraysIndirect glpfDrawArraysIndirect #define glDrawElementsIndirect glpfDrawElementsIndirect + /* GL_ARB_instanced_arrays */ typedef void (APIENTRY PFNGLVERTEXATTRIBDIVISORARB_PROC (GLuint index, GLuint divisor)); @@ -1443,6 +1484,7 @@ GLAPI PFNGLVERTEXATTRIBDIVISORARB_PROC* glpfVertexAttribDivisorARB; #define glVertexAttribDivisorARB glpfVertexAttribDivisorARB + /* GL_ARB_multi_draw_indirect */ typedef void (APIENTRY PFNGLMULTIDRAWARRAYSINDIRECT_PROC (GLenum mode, const void * indirect, GLsizei drawcount, GLsizei stride)); @@ -1454,6 +1496,7 @@ GLAPI PFNGLMULTIDRAWELEMENTSINDIRECT_PROC* glpfMultiDrawElementsIndirect; #define glMultiDrawArraysIndirect glpfMultiDrawArraysIndirect #define glMultiDrawElementsIndirect glpfMultiDrawElementsIndirect + /* GL_ARB_shader_image_load_store */ typedef void (APIENTRY PFNGLBINDIMAGETEXTURE_PROC (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)); @@ -1465,6 +1508,7 @@ GLAPI PFNGLMEMORYBARRIER_PROC* glpfMemoryBarrier; #define glBindImageTexture glpfBindImageTexture #define glMemoryBarrier glpfMemoryBarrier + /* GL_ARB_shader_storage_buffer_object */ typedef void (APIENTRY PFNGLSHADERSTORAGEBLOCKBINDING_PROC (GLuint program, GLuint storageBlockIndex, GLuint storageBlockBinding)); @@ -1473,6 +1517,7 @@ GLAPI PFNGLSHADERSTORAGEBLOCKBINDING_PROC* glpfShaderStorageBlockBinding; #define glShaderStorageBlockBinding glpfShaderStorageBlockBinding + /* GL_ARB_transform_feedback2 */ typedef void (APIENTRY PFNGLBINDTRANSFORMFEEDBACK_PROC (GLenum target, GLuint id)); @@ -1499,6 +1544,7 @@ GLAPI PFNGLRESUMETRANSFORMFEEDBACK_PROC* glpfResumeTransformFeedback; #define glPauseTransformFeedback glpfPauseTransformFeedback #define glResumeTransformFeedback glpfResumeTransformFeedback + /* GL_VERSION_1_0 */ typedef void (APIENTRY PFNGLBLENDFUNC_PROC (GLenum sfactor, GLenum dfactor)); @@ -1648,6 +1694,7 @@ GLAPI PFNGLVIEWPORT_PROC* glpfViewport; #define glTexParameteriv glpfTexParameteriv #define glViewport glpfViewport + /* GL_VERSION_1_1 */ typedef void (APIENTRY PFNGLBINDTEXTURE_PROC (GLenum target, GLuint texture)); @@ -1692,6 +1739,7 @@ GLAPI PFNGLTEXSUBIMAGE2D_PROC* glpfTexSubImage2D; #define glTexSubImage1D glpfTexSubImage1D #define glTexSubImage2D glpfTexSubImage2D + /* GL_VERSION_1_2 */ typedef void (APIENTRY PFNGLCOPYTEXSUBIMAGE3D_PROC (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)); @@ -1709,6 +1757,7 @@ GLAPI PFNGLTEXSUBIMAGE3D_PROC* glpfTexSubImage3D; #define glTexImage3D glpfTexImage3D #define glTexSubImage3D glpfTexSubImage3D + /* GL_VERSION_1_3 */ typedef void (APIENTRY PFNGLACTIVETEXTURE_PROC (GLenum texture)); @@ -1741,6 +1790,7 @@ GLAPI PFNGLSAMPLECOVERAGE_PROC* glpfSampleCoverage; #define glGetCompressedTexImage glpfGetCompressedTexImage #define glSampleCoverage glpfSampleCoverage + /* GL_VERSION_1_4 */ typedef void (APIENTRY PFNGLBLENDCOLOR_PROC (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)); @@ -1773,6 +1823,7 @@ GLAPI PFNGLPOINTPARAMETERIV_PROC* glpfPointParameteriv; #define glPointParameteri glpfPointParameteri #define glPointParameteriv glpfPointParameteriv + /* GL_VERSION_1_5 */ typedef void (APIENTRY PFNGLBEGINQUERY_PROC (GLenum target, GLuint id)); @@ -1835,6 +1886,7 @@ GLAPI PFNGLUNMAPBUFFER_PROC* glpfUnmapBuffer; #define glMapBuffer glpfMapBuffer #define glUnmapBuffer glpfUnmapBuffer + /* GL_VERSION_2_0 */ typedef void (APIENTRY PFNGLATTACHSHADER_PROC (GLuint program, GLuint shader)); @@ -2119,6 +2171,7 @@ GLAPI PFNGLVERTEXATTRIBPOINTER_PROC* glpfVertexAttribPointer; #define glVertexAttrib4usv glpfVertexAttrib4usv #define glVertexAttribPointer glpfVertexAttribPointer + /* GL_VERSION_2_1 */ typedef void (APIENTRY PFNGLUNIFORMMATRIX2X3FV_PROC (GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)); @@ -2142,6 +2195,7 @@ GLAPI PFNGLUNIFORMMATRIX4X3FV_PROC* glpfUniformMatrix4x3fv; #define glUniformMatrix4x2fv glpfUniformMatrix4x2fv #define glUniformMatrix4x3fv glpfUniformMatrix4x3fv + /* GL_VERSION_3_0 */ typedef void (APIENTRY PFNGLBEGINCONDITIONALRENDER_PROC (GLuint id, GLenum mode)); @@ -2399,6 +2453,7 @@ GLAPI PFNGLVERTEXATTRIBIPOINTER_PROC* glpfVertexAttribIPointer; #define glVertexAttribI4usv glpfVertexAttribI4usv #define glVertexAttribIPointer glpfVertexAttribIPointer + /* GL_VERSION_3_1 */ typedef void (APIENTRY PFNGLCOPYBUFFERSUBDATA_PROC (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)); @@ -2440,6 +2495,7 @@ GLAPI PFNGLUNIFORMBLOCKBINDING_PROC* glpfUniformBlockBinding; #define glTexBuffer glpfTexBuffer #define glUniformBlockBinding glpfUniformBlockBinding + /* GL_VERSION_3_2 */ typedef GLenum (APIENTRY PFNGLCLIENTWAITSYNC_PROC (GLsync sync, GLbitfield flags, GLuint64 timeout)); @@ -2502,6 +2558,7 @@ GLAPI PFNGLWAITSYNC_PROC* glpfWaitSync; #define glTexImage3DMultisample glpfTexImage3DMultisample #define glWaitSync glpfWaitSync + /* GL_VERSION_3_3 */ typedef void (APIENTRY PFNGLBINDFRAGDATALOCATIONINDEXED_PROC (GLuint program, GLuint colorNumber, GLuint index, const GLchar * name)); @@ -2591,7 +2648,8 @@ GLAPI PFNGLVERTEXATTRIBP4UIV_PROC* glpfVertexAttribP4uiv; #define glVertexAttribP4ui glpfVertexAttribP4ui #define glVertexAttribP4uiv glpfVertexAttribP4uiv -/* -------------------------- CATEGORY DEFINES ----------------------------- */ + +/* --------------------------- CATEGORY DEFINES ------------------------------ */ #define GL_ARB_buffer_storage #define GL_ARB_compute_shader @@ -2616,7 +2674,8 @@ GLAPI PFNGLVERTEXATTRIBP4UIV_PROC* glpfVertexAttribP4uiv; #define GL_VERSION_3_2 #define GL_VERSION_3_3 -/* --------------------- FLAGS FOR OPTIONAL EXTENSIONS --------------------- */ +/* ---------------------- Flags for optional extensions ---------------------- */ + extern int FLEXT_ARB_debug_output; extern int FLEXT_ARB_direct_state_access; @@ -2639,4 +2698,4 @@ int flextInit(void); } #endif -#endif +#endif /* _gl_h_ */ diff --git a/tools/flextGL/templates/sdl/flextGL.c.template b/tools/flextGL/templates/sdl/flextGL.c.template index 979099709..9dde73d2d 100644 --- a/tools/flextGL/templates/sdl/flextGL.c.template +++ b/tools/flextGL/templates/sdl/flextGL.c.template @@ -1,86 +1,90 @@ -@require(passthru, functions, enums, options, version, extensions, args) -/* - This file was generated using https://github.com/mosra/flextgl: - - path/to/flextGLgen.py @args - - Do not edit directly, modify the template or profile and regenerate. -*/ +@require(passthru, functions, enums, options, version, extensions) +/* WARNING: This file was automatically generated */ +/* Do not edit. */ #include "flextGL.h" - #include + #ifdef __cplusplus extern "C" { #endif -void flextLoadOpenGLFunctions(void) { - @for category,funcs in functions: - @if funcs: - @if category not in ['VERSION_1_0_DEPRECATED', 'VERSION_1_1_DEPRECATED']: - /* GL_@category */ - @for f in funcs: - glpf@f.name = (PFNGL@f.name.upper()_PROC*)SDL_GL_GetProcAddress("gl@f.name"); - @end - @end - @end - @end -} +void flextLoadOpenGLFunctions(void); -int flextInit(void) { +/** + * \return -1 on error, 0 on success + * \sa SDL_GetError + */ +int flextInit(void) +{ + @if version.int_value() >= 32 and not version.profile == 'core': + GLint profile; + @end int major; int minor; + SDL_GL_GetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, &major); SDL_GL_GetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, &minor); flextLoadOpenGLFunctions(); - /* Check for minimal version and profile */ + /* --- Check for minimal version and profile --- */ - if(major * 10 + minor < @version.int_value()!s) { + if (major * 10 + minor < @version.int_value()!s) { return SDL_SetError("OpenGL context hasn't the expected version @version.major!s.@version.minor!s."); } - @if version.int_value() >= 32 and not version.profile == 'core': - GLint profile; + @if version.int_value() >= 32 and not version.profile == 'core': glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &profile); - if((profile & GL_CONTEXT_COMPATIBILITY_PROFILE_BIT) == 0) { + + if ((profile & GL_CONTEXT_COMPATIBILITY_PROFILE_BIT) == 0) { return SDL_SetError("This application requires a compatibility profile"); } @end - @if extensions: /* --- Check for extensions --- */ @for extension,required in extensions: @if required: - if(!SDL_GL_ExtensionSupported("GL_@extension")) { + if (!SDL_GL_ExtensionSupported("GL_@extension")) { return SDL_SetError("OpenGL extension @extension not supported."); } @else: - if(SDL_GL_ExtensionSupported("GL_@extension")) { + if (SDL_GL_ExtensionSupported("GL_@extension")) { FLEXT_@extension = GL_TRUE; } @end - @end @end + return 0; } -@if extensions: -/* Extension flag definitions */ +void flextLoadOpenGLFunctions(void) +{ + /* --- Function pointer loading --- */ + + @for category,funcs in functions: + /* GL_@category */ + + @for f in funcs: + glpf@f.name = (PFNGL@f.name.upper()_PROC*)SDL_GL_GetProcAddress("gl@f.name"); + @end + + @end +} + +/* ----------------------- Extension flag definitions ---------------------- */ @for extension,required in extensions: int FLEXT_@extension = GL_FALSE; @end -@end -/* Function pointer definitions */ +/* ---------------------- Function pointer definitions --------------------- */ @for category,funcs in functions: -@if len(funcs) > 0 and category not in ['VERSION_1_0_DEPRECATED', 'VERSION_1_1_DEPRECATED' ]: +@if len(funcs) > 0: /* GL_@category */ @for f in funcs: @@ -89,6 +93,7 @@ PFNGL@f.name.upper()_PROC* glpf@f.name = NULL; @end @end + #ifdef __cplusplus } #endif diff --git a/tools/flextGL/templates/sdl/flextGL.h.template b/tools/flextGL/templates/sdl/flextGL.h.template index 687035c97..48277e89a 100644 --- a/tools/flextGL/templates/sdl/flextGL.h.template +++ b/tools/flextGL/templates/sdl/flextGL.h.template @@ -1,13 +1,9 @@ -@require(passthru, functions, enums, options, version, extensions, args) +@require(passthru, functions, enums, options, version, extensions) +/* WARNING: This file was automatically generated */ +/* Do not edit. */ + #ifndef __gl_h_ #define __gl_h_ -/* - This file was generated using https://github.com/mosra/flextgl: - - path/to/flextGLgen.py @args - - Do not edit directly, modify the template or profile and regenerate. -*/ #ifdef __cplusplus extern "C" { @@ -33,56 +29,47 @@ extern "C" { #define GLAPI extern #endif -/* ------------------------------- DATA TYPES ------------------------------ */ - -#include +/* -------------------------------- DATA TYPES ------------------------------- */ @passthru -/* ---------------------------------- ENUMS -------------------------------- */ +/* ----------------------------------- ENUMS --------------------------------- */ @enums -/* -------------------------- FUNCTION PROTOTYPES -------------------------- */ +/* --------------------------- FUNCTION PROTOTYPES --------------------------- */ @for cat,funcs in functions: -@if funcs: + /* GL_@cat */ - @if cat in ['VERSION_1_0_DEPRECATED', 'VERSION_1_1_DEPRECATED']: - @for f in funcs: -GLAPI @f.returntype APIENTRY gl@f.name (@f.param_list_string()); - @end - @else: - @for f in funcs: + @for f in funcs: typedef @f.returntype (APIENTRY PFNGL@f.name.upper()_PROC (@f.param_list_string())); - @end + @end - @for f in funcs: + @for f in funcs: GLAPI PFNGL@f.name.upper()_PROC* glpf@f.name; - @end + @end - @for f in funcs: + @for f in funcs: #define gl@f.name glpf@f.name - @end @end @end -@end -/* -------------------------- CATEGORY DEFINES ----------------------------- */ + +/* --------------------------- CATEGORY DEFINES ------------------------------ */ @for cat,funcs in functions: #define GL_@cat @end -@if extensions: -/* --------------------- FLAGS FOR OPTIONAL EXTENSIONS --------------------- */ +/* ---------------------- Flags for optional extensions ---------------------- */ + @for extension,required in extensions: extern int FLEXT_@extension; @end -@end int flextInit(void); #define FLEXT_MAJOR_VERSION @version.major!s @@ -97,4 +84,4 @@ int flextInit(void); } #endif -#endif +#endif /* _gl_h_ */