Commit: d50d8016be03b09434515b89b40e9671ed8fe4a1
Parent: 446c6489d4ac3fa02e24598fb7d0c86ccdd92bf0
Author: Randy Palamar
Date:   Mon, 26 May 2025 06:04:04 -0600
move opengl stuff to header, add #defines needed for w32
Diffstat:
| M | common.c | | | 74 | ++------------------------------------------------------------------------ | 
| A | opengl.h | | | 89 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | 
2 files changed, 91 insertions(+), 72 deletions(-)
diff --git a/common.c b/common.c
@@ -1,5 +1,5 @@
 /* See LICENSE for license details. */
-#include <GL/gl.h>
+#include "opengl.h"
 #include "GLFW/glfw3.h"
 
 #include <stdio.h>
@@ -61,66 +61,6 @@ global VolumeDisplayItem volumes[] = {
 #define CYCLE_T_UPDATE_SPEED 0.25f
 #define BG_CLEAR_COLOUR      (v4){{0.12, 0.1, 0.1, 1}}
 
-/* X(name, ret, params) */
-	//X(glBlendFunc,                           void,   (GLenum sfactor, GLenum dfactor))
-	//X(glDrawArrays,                          void,   (GLenum mode, GLint first, GLsizei count))
-	//X(glDrawElements,                        void,   (GLenum mode, GLsizei count, GLenum type, const GLvoid * indices))
-	//X(glEnable,                              void,   (GLenum cap))
-	//X(glViewport,                            void,   (GLint x, GLint y, GLsizei width, GLsizei height))
-#define OGLProcedureList \
-	X(glAttachShader,                        void,   (GLuint program, GLuint shader)) \
-	X(glBindFramebuffer,                     void,   (GLenum target, GLuint framebuffer)) \
-	X(glBindTextureUnit,                     void,   (GLuint unit, GLuint texture)) \
-	X(glBindVertexArray,                     void,   (GLuint array)) \
-	X(glBlitNamedFramebuffer,                void,   (GLuint sfb, GLuint dfb, GLint sx0, GLint sy0, GLint sx1, GLint sy1, GLint dx0, GLint dy0, GLint dx1, GLint dy1, GLbitfield mask, GLenum filter)) \
-	X(glClearNamedFramebufferfv,             void,   (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value)) \
-	X(glCompileShader,                       void,   (GLuint shader)) \
-	X(glCreateBuffers,                       void,   (GLsizei n, GLuint *buffers)) \
-	X(glCreateFramebuffers,                  void,   (GLsizei n, GLuint *ids)) \
-	X(glCreateProgram,                       GLuint, (void)) \
-	X(glCreateRenderbuffers,                 void,   (GLsizei n, GLuint *renderbuffers)) \
-	X(glCreateShader,                        GLuint, (GLenum shaderType)) \
-	X(glCreateTextures,                      void,   (GLenum target, GLsizei n, GLuint *textures)) \
-	X(glCreateVertexArrays,                  void,   (GLsizei n, GLuint *arrays)) \
-	X(glDebugMessageCallback,                void,   (void (*)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const void *user), void *user)) \
-	X(glDeleteProgram,                       void,   (GLuint program)) \
-	X(glDeleteShader,                        void,   (GLuint shader)) \
-	X(glEnableVertexArrayAttrib,             void,   (GLuint vao, GLuint index)) \
-	X(glGenerateTextureMipmap,               void,   (GLuint texture)) \
-	X(glGetProgramInfoLog,                   void,   (GLuint program, GLsizei maxLength, GLsizei *length, GLchar *infoLog)) \
-	X(glGetProgramiv,                        void,   (GLuint program, GLenum pname, GLint *params)) \
-	X(glGetShaderInfoLog,                    void,   (GLuint shader, GLsizei maxLength, GLsizei *length, GLchar *infoLog)) \
-	X(glGetShaderiv,                         void,   (GLuint shader, GLenum pname, GLint *params)) \
-	X(glGetTextureImage,                     void,   (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels)) \
-	X(glLinkProgram,                         void,   (GLuint program)) \
-	X(glNamedBufferData,                     void,   (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage)) \
-	X(glNamedBufferStorage,                  void,   (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags)) \
-	X(glNamedBufferSubData,                  void,   (GLuint buffer, GLintptr offset, GLsizei size, const void *data)) \
-	X(glNamedFramebufferRenderbuffer,        void,   (GLuint fb, GLenum attachment, GLenum renderbuffertarget, GLuint rb)) \
-	X(glNamedFramebufferTexture,             void,   (GLuint fb, GLenum attachment, GLuint texture, GLint level)) \
-	X(glNamedRenderbufferStorageMultisample, void,   (GLuint rb, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) \
-	X(glObjectLabel,                         void,   (GLenum identifier, GLuint name, GLsizei length, const char *label)) \
-	X(glProgramUniform1f,                    void,   (GLuint program, GLint location, GLfloat v0)) \
-	X(glProgramUniform1ui,                   void,   (GLuint program, GLint location, GLuint v0)) \
-	X(glProgramUniformMatrix4fv,             void,   (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
-	X(glShaderSource,                        void,   (GLuint shader, GLsizei count, const GLchar **strings, const GLint *lengths)) \
-	X(glTextureParameteri,                   void,   (GLuint texture, GLenum pname, GLint param)) \
-	X(glTextureStorage2D,                    void,   (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)) \
-	X(glTextureStorage3D,                    void,   (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)) \
-	X(glTextureSubImage3D,                   void,   (GLuint texture, GLint level, GLint xoff, GLint yoff, GLint zoff, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pix)) \
-	X(glUseProgram,                          void,   (GLuint program)) \
-	X(glVertexArrayAttribBinding,            void,   (GLuint vao, GLuint attribindex, GLuint bindingindex)) \
-	X(glVertexArrayAttribFormat,             void,   (GLuint vao, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)) \
-	X(glVertexArrayElementBuffer,            void,   (GLuint vao, GLuint buffer)) \
-	X(glVertexArrayVertexBuffer,             void,   (GLuint vao, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride))
-
-#define X(name, ret, params) typedef ret name##_fn params;
-OGLProcedureList
-#undef X
-#define X(name, ret, params) global name##_fn *name;
-OGLProcedureList
-#undef X
-
 struct gl_debug_ctx {
 	Stream  stream;
 	OS     *os;
@@ -149,16 +89,7 @@ gl_debug_logger(u32 src, u32 type, u32 id, u32 lvl, s32 len, const char *msg, co
 
 	struct gl_debug_ctx *ctx = (struct gl_debug_ctx *)userctx;
 	Stream *e = &ctx->stream;
-	stream_append_str8(e, str8("[GL DEBUG "));
-	switch (lvl) {
-	case GL_DEBUG_SEVERITY_HIGH:         stream_append_str8(e, str8("HIGH]: "));         break;
-	case GL_DEBUG_SEVERITY_MEDIUM:       stream_append_str8(e, str8("MEDIUM]: "));       break;
-	case GL_DEBUG_SEVERITY_LOW:          stream_append_str8(e, str8("LOW]: "));          break;
-	case GL_DEBUG_SEVERITY_NOTIFICATION: stream_append_str8(e, str8("NOTIFICATION]: ")); break;
-	default:                             stream_append_str8(e, str8("INVALID]: "));      break;
-	}
-	stream_append(e, (char *)msg, len);
-	stream_append_byte(e, '\n');
+	stream_append_str8s(e, str8("[OpenGL] "), (str8){.len = len, .data = (u8 *)msg}, str8("\n"));
 	os_write_file(ctx->os->error_handle, stream_to_str8(e));
 	stream_reset(e, 0);
 }
@@ -405,7 +336,6 @@ init_viewer(ViewerContext *ctx)
 	#define X(name, ret, params) name = (name##_fn *)glfwGetProcAddress(#name);
 	OGLProcedureList
 	#undef X
-	//if (!gladLoadGL()) os_fatal(str8("failed to load glad\n"));
 
 	/* NOTE: set up OpenGL debug logging */
 	struct gl_debug_ctx *gl_debug_ctx = push_struct(&ctx->arena, typeof(*gl_debug_ctx));
diff --git a/opengl.h b/opengl.h
@@ -0,0 +1,89 @@
+/* See LICENSE for license details. */
+#if OS_WINDOWS
+/* NOTE: msys2 compatibility kludge */
+#define WINGDIAPI
+#define APIENTRY
+#endif
+
+#include <GL/gl.h>
+
+#define GL_DYNAMIC_STORAGE_BIT  0x0100
+
+#define GL_UNSIGNED_INT_8_8_8_8 0x8035
+#define GL_TEXTURE_3D           0x806F
+#define GL_MULTISAMPLE          0x809D
+#define GL_DEPTH_COMPONENT24    0x81A6
+#define GL_RG                   0x8227
+#define GL_RG32F                0x8230
+#define GL_PROGRAM              0x82E2
+#define GL_MIRRORED_REPEAT      0x8370
+#define GL_STATIC_DRAW          0x88E4
+#define GL_FRAGMENT_SHADER      0x8B30
+#define GL_VERTEX_SHADER        0x8B31
+#define GL_COMPILE_STATUS       0x8B81
+#define GL_LINK_STATUS          0x8B82
+#define GL_INFO_LOG_LENGTH      0x8B84
+#define GL_COLOR_ATTACHMENT0    0x8CE0
+#define GL_DEPTH_ATTACHMENT     0x8D00
+#define GL_FRAMEBUFFER          0x8D40
+#define GL_RENDERBUFFER         0x8D41
+
+typedef char      GLchar;
+typedef ptrdiff_t GLsizeiptr;
+typedef ptrdiff_t GLintptr;
+
+/* X(name, ret, params) */
+#define OGLProcedureList \
+	X(glAttachShader,                        void,   (GLuint program, GLuint shader)) \
+	X(glBindFramebuffer,                     void,   (GLenum target, GLuint framebuffer)) \
+	X(glBindTextureUnit,                     void,   (GLuint unit, GLuint texture)) \
+	X(glBindVertexArray,                     void,   (GLuint array)) \
+	X(glBlitNamedFramebuffer,                void,   (GLuint sfb, GLuint dfb, GLint sx0, GLint sy0, GLint sx1, GLint sy1, GLint dx0, GLint dy0, GLint dx1, GLint dy1, GLbitfield mask, GLenum filter)) \
+	X(glClearNamedFramebufferfv,             void,   (GLuint framebuffer, GLenum buffer, GLint drawbuffer, const GLfloat *value)) \
+	X(glCompileShader,                       void,   (GLuint shader)) \
+	X(glCreateBuffers,                       void,   (GLsizei n, GLuint *buffers)) \
+	X(glCreateFramebuffers,                  void,   (GLsizei n, GLuint *ids)) \
+	X(glCreateProgram,                       GLuint, (void)) \
+	X(glCreateRenderbuffers,                 void,   (GLsizei n, GLuint *renderbuffers)) \
+	X(glCreateShader,                        GLuint, (GLenum shaderType)) \
+	X(glCreateTextures,                      void,   (GLenum target, GLsizei n, GLuint *textures)) \
+	X(glCreateVertexArrays,                  void,   (GLsizei n, GLuint *arrays)) \
+	X(glDebugMessageCallback,                void,   (void (*)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, const void *user), void *user)) \
+	X(glDeleteProgram,                       void,   (GLuint program)) \
+	X(glDeleteShader,                        void,   (GLuint shader)) \
+	X(glEnableVertexArrayAttrib,             void,   (GLuint vao, GLuint index)) \
+	X(glGenerateTextureMipmap,               void,   (GLuint texture)) \
+	X(glGetProgramInfoLog,                   void,   (GLuint program, GLsizei maxLength, GLsizei *length, GLchar *infoLog)) \
+	X(glGetProgramiv,                        void,   (GLuint program, GLenum pname, GLint *params)) \
+	X(glGetShaderInfoLog,                    void,   (GLuint shader, GLsizei maxLength, GLsizei *length, GLchar *infoLog)) \
+	X(glGetShaderiv,                         void,   (GLuint shader, GLenum pname, GLint *params)) \
+	X(glGetTextureImage,                     void,   (GLuint texture, GLint level, GLenum format, GLenum type, GLsizei bufSize, void *pixels)) \
+	X(glLinkProgram,                         void,   (GLuint program)) \
+	X(glNamedBufferData,                     void,   (GLuint buffer, GLsizeiptr size, const void *data, GLenum usage)) \
+	X(glNamedBufferStorage,                  void,   (GLuint buffer, GLsizeiptr size, const void *data, GLbitfield flags)) \
+	X(glNamedBufferSubData,                  void,   (GLuint buffer, GLintptr offset, GLsizei size, const void *data)) \
+	X(glNamedFramebufferRenderbuffer,        void,   (GLuint fb, GLenum attachment, GLenum renderbuffertarget, GLuint rb)) \
+	X(glNamedFramebufferTexture,             void,   (GLuint fb, GLenum attachment, GLuint texture, GLint level)) \
+	X(glNamedRenderbufferStorageMultisample, void,   (GLuint rb, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)) \
+	X(glObjectLabel,                         void,   (GLenum identifier, GLuint name, GLsizei length, const char *label)) \
+	X(glProgramUniform1f,                    void,   (GLuint program, GLint location, GLfloat v0)) \
+	X(glProgramUniform1ui,                   void,   (GLuint program, GLint location, GLuint v0)) \
+	X(glProgramUniformMatrix4fv,             void,   (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)) \
+	X(glShaderSource,                        void,   (GLuint shader, GLsizei count, const GLchar **strings, const GLint *lengths)) \
+	X(glTextureParameteri,                   void,   (GLuint texture, GLenum pname, GLint param)) \
+	X(glTextureStorage2D,                    void,   (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height)) \
+	X(glTextureStorage3D,                    void,   (GLuint texture, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth)) \
+	X(glTextureSubImage3D,                   void,   (GLuint texture, GLint level, GLint xoff, GLint yoff, GLint zoff, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pix)) \
+	X(glUseProgram,                          void,   (GLuint program)) \
+	X(glVertexArrayAttribBinding,            void,   (GLuint vao, GLuint attribindex, GLuint bindingindex)) \
+	X(glVertexArrayAttribFormat,             void,   (GLuint vao, GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset)) \
+	X(glVertexArrayElementBuffer,            void,   (GLuint vao, GLuint buffer)) \
+	X(glVertexArrayVertexBuffer,             void,   (GLuint vao, GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride))
+
+#define X(name, ret, params) typedef ret name##_fn params;
+OGLProcedureList
+#undef X
+#define X(name, ret, params) global name##_fn *name;
+OGLProcedureList
+#undef X
+