opengl.h (4312B)
1 /* See LICENSE for license details. */ 2 #ifndef _OPENGL_H_ 3 #define _OPENGL_H_ 4 5 #if OS_WINDOWS 6 /* NOTE: msys2 compatibility kludge */ 7 #define WINGDIAPI 8 #define APIENTRY 9 #endif 10 11 #include <GL/gl.h> 12 13 /* NOTE: do not add extra 0s to these, even at the start -> garbage compilers will complain */ 14 #define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020 15 #define GL_TEXTURE_UPDATE_BARRIER_BIT 0x00000100 16 17 #define GL_NONE 0 18 19 #define GL_CLAMP_TO_BORDER 0x812D 20 #define GL_RG32F 0x8230 21 #define GL_READ_ONLY 0x88B8 22 #define GL_WRITE_ONLY 0x88B9 23 #define GL_READ_WRITE 0x88BA 24 #define GL_DEBUG_OUTPUT 0x92E0 25 26 #define GL_DEDICATED_MEMORY_OBJECT_EXT 0x9581 27 #define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586 28 #define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587 29 #define GL_LAYOUT_COLOR_ATTACHMENT_EXT 0x958E 30 #define GL_LAYOUT_SHADER_READ_ONLY_EXT 0x9591 31 32 typedef char GLchar; 33 typedef i64 GLsizeiptr; 34 typedef i64 GLintptr; 35 typedef u64 GLuint64; 36 37 /* X(name, ret, params) */ 38 #define OGLProcedureList \ 39 X(glBindImageTexture, void, (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format)) \ 40 X(glClearNamedFramebufferfv, void, (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value)) \ 41 X(glClearTexImage, void, (GLuint texture, GLint level, GLenum format, GLenum type, const void *data)) \ 42 X(glCreateTextures, void, (GLenum target, GLsizei n, GLuint *textures)) \ 43 X(glDebugMessageCallback, void, (void (*)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const void *user), void *user)) \ 44 X(glDispatchCompute, void, (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z)) \ 45 X(glMemoryBarrier, void, (GLbitfield barriers)) \ 46 X(glObjectLabel, void, (GLenum identifier, GLuint name, GLsizei length, const char *label)) \ 47 X(glTextureParameteri, void, (GLuint texture, GLenum pname, GLint param)) \ 48 X(glTextureParameterfv, void, (GLuint texture, GLenum pname, const GLfloat *param)) \ 49 50 #define OGLRequiredExtensionProcedureListBase \ 51 X(glCreateMemoryObjectsEXT, void, (GLsizei n, GLuint *memoryObjects)) \ 52 X(glDeleteMemoryObjectsEXT, void, (GLsizei n, GLuint *memoryObjects)) \ 53 X(glGenSemaphoresEXT, void, (GLsizei n, GLuint *semaphores)) \ 54 X(glMemoryObjectParameterivEXT, void, (GLuint memoryObject, GLenum pname, const GLint *params)) \ 55 X(glSignalSemaphoreEXT, void, (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts)) \ 56 X(glTextureStorageMem2DEXT, void, (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset)) \ 57 X(glWaitSemaphoreEXT, void, (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts)) \ 58 59 #define OGLRequiredExtensionProcedureListW32 \ 60 X(glImportMemoryWin32HandleEXT, void, (GLuint memory, GLuint64 size, GLenum handleType, void *handle)) \ 61 X(glImportSemaphoreWin32HandleEXT, void, (GLuint semaphore, GLenum handleType, void *handle)) \ 62 63 #define OGLRequiredExtensionProcedureListLinux \ 64 X(glImportMemoryFdEXT, void, (GLuint memory, GLuint64 size, GLenum handleType, int fd)) \ 65 X(glImportSemaphoreFdEXT, void, (GLuint semaphore, GLenum handleType, int fd)) \ 66 67 #define OGLRequiredExtensionProcedureList \ 68 OGLRequiredExtensionProcedureListBase \ 69 OGLRequiredExtensionProcedureListW32 \ 70 OGLRequiredExtensionProcedureListLinux \ 71 72 #define X(name, ret, params) typedef ret name##_fn params; 73 OGLProcedureList 74 OGLRequiredExtensionProcedureList 75 #undef X 76 #define X(name, ret, params) DEBUG_IMPORT name##_fn *name; 77 OGLProcedureList 78 OGLRequiredExtensionProcedureList 79 #undef X 80 81 #endif /* _OPENGL_H_*/