ogl_beamforming

Ultrasound Beamforming Implemented with OpenGL
git clone anongit@rnpnr.xyz:ogl_beamforming.git
Log | Files | Refs | Feed | Submodules | README | LICENSE

Commit: 99e9d313f717586802e8c4bbafac2edf58411a04
Parent: b2883295f5d48909aeef43bb741958db6ac184b7
Author: Randy Palamar
Date:   Tue, 30 Dec 2025 17:54:31 -0700

gl: load extensions for vulkan memory importing

Diffstat:
Mbeamformer.c | 2++
Mopengl.h | 20+++++++++++++++++++-
2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/beamformer.c b/beamformer.c @@ -92,6 +92,7 @@ load_gl(Stream *err) { #define X(name, ret, params) name = (name##_fn *)glfwGetProcAddress(#name); OGLProcedureList + OGLRequiredExtensionProcedureList #undef X /* NOTE: Gather information about the GPU */ @@ -161,6 +162,7 @@ load_gl(Stream *err) #define X(name, ret, params) if (!name) stream_append_s8(err, s8("missing required GL function: " #name "\n")); OGLProcedureList + OGLRequiredExtensionProcedureList #undef X if (err->widx) fatal(stream_to_s8(err)); diff --git a/opengl.h b/opengl.h @@ -70,6 +70,9 @@ #define GL_COMPUTE_SHADER 0x91B9 #define GL_DEBUG_OUTPUT 0x92E0 +#define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586 +#define GL_HANDLE_TYPE_OPAQUE_WIN32_EXT 0x9587 + #define GL_TIMEOUT_IGNORED 0xFFFFFFFFFFFFFFFFull typedef char GLchar; @@ -152,13 +155,28 @@ typedef struct __GLsync *GLsync; 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)) \ - X(glWaitSync, void, (GLsync sync, GLbitfield flags, GLuint64 timeout)) + X(glWaitSync, void, (GLsync sync, GLbitfield flags, GLuint64 timeout)) \ + + +#define OGLRequiredExtensionProcedureList \ + X(glCreateMemoryObjectsEXT, void, (GLsizei n, GLuint *memoryObjects)) \ + X(glDeleteMemoryObjectsEXT, void, (GLsizei n, GLuint *memoryObjects)) \ + X(glGenSemaphoresEXT, void, (GLsizei n, GLuint *semaphores)) \ + X(glImportMemoryFdEXT, void, (GLuint memory, GLuint64 size, GLenum handleType, int fd)) \ + X(glImportMemoryWin32HandleEXT, void, (GLuint memory, GLuint64 size, GLenum handleType, void *handle)) \ + X(glImportSemaphoreFdEXT, void, (GLuint semaphore, GLenum handleType, int fd)) \ + X(glImportSemaphoreWin32HandleEXT, void, (GLuint semaphore, GLenum handleType, void *handle)) \ + X(glNamedBufferStorageMemEXT, void, (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset)) \ + X(glWaitSemaphoreEXT, void, (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts)) \ + #define X(name, ret, params) typedef ret name##_fn params; OGLProcedureList +OGLRequiredExtensionProcedureList #undef X #define X(name, ret, params) DEBUG_IMPORT name##_fn *name; OGLProcedureList +OGLRequiredExtensionProcedureList #undef X typedef enum {