ogl_beamforming

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

Commit: f60c3ba8127f72cfee8d55a130526dd73ecebb3d
Parent: 649e9c2e567af6c6cddf24a4c7c242c5d1e54ec8
Author: Randy Palamar
Date:   Wed,  9 Apr 2025 19:50:03 -0600

debug: check a couple extra gl parameters

Diffstat:
Mbeamformer.h | 21++++++++++++++-------
Mstatic.c | 53++++++++++++++++++++++++++---------------------------
Mutil.c | 6++++++
3 files changed, 46 insertions(+), 34 deletions(-)

diff --git a/beamformer.h b/beamformer.h @@ -137,15 +137,22 @@ struct BeamformComputeFrame { #include "beamformer_work_queue.h" +#define GL_PARAMETERS \ + X(MAJOR_VERSION, version_major, "") \ + X(MINOR_VERSION, version_minor, "") \ + X(TEXTURE_BUFFER_OFFSET_ALIGNMENT, texture_buffer_offset_alignment, "") \ + X(MAX_TEXTURE_BUFFER_SIZE, max_texture_buffer_size, "") \ + X(MAX_TEXTURE_SIZE, max_2d_texture_dim, "") \ + X(MAX_3D_TEXTURE_SIZE, max_3d_texture_dim, "") \ + X(MAX_SHADER_STORAGE_BLOCK_SIZE, max_ssbo_size, "") \ + X(MAX_UNIFORM_BLOCK_SIZE, max_ubo_size, "") \ + X(MAX_SERVER_WAIT_TIMEOUT, max_server_wait_time, " [ns]") + typedef struct { enum gl_vendor_ids vendor_id; - i32 version_major; - i32 version_minor; - i32 max_2d_texture_dim; - i32 max_3d_texture_dim; - i32 max_ssbo_size; - i32 max_ubo_size; - i32 max_server_wait_time; + #define X(glname, name, suffix) i32 name; + GL_PARAMETERS + #undef X } GLParams; typedef struct { diff --git a/static.c b/static.c @@ -117,16 +117,11 @@ get_gl_params(GLParams *gl, Stream *err) stream_append_s8(err, c_str_to_s8(vendor)); stream_append_byte(err, '\n'); os_fatal(stream_to_s8(err)); - break; } - glGetIntegerv(GL_MAJOR_VERSION, &gl->version_major); - glGetIntegerv(GL_MINOR_VERSION, &gl->version_minor); - glGetIntegerv(GL_MAX_TEXTURE_SIZE, &gl->max_2d_texture_dim); - glGetIntegerv(GL_MAX_3D_TEXTURE_SIZE, &gl->max_3d_texture_dim); - glGetIntegerv(GL_MAX_SHADER_STORAGE_BLOCK_SIZE, &gl->max_ssbo_size); - glGetIntegerv(GL_MAX_UNIFORM_BLOCK_SIZE, &gl->max_ubo_size); - glGetIntegerv(GL_MAX_SERVER_WAIT_TIMEOUT, &gl->max_server_wait_time); + #define X(glname, name, suffix) glGetIntegerv(GL_##glname, &gl->name); + GL_PARAMETERS + #undef X /* NOTE(rnp): sometimes GL_MINOR_VERSION doesn't actually report the drivers * supported version. Since at this point GL has been fully loaded we can @@ -157,29 +152,33 @@ dump_gl_params(GLParams *gl, Arena a, OS *os) { (void)gl; (void)a; #ifdef _DEBUG + s8 vendor = s8("vendor:"); + iz max_width = vendor.len; + #define X(glname, name, suffix) if (s8(#name).len > max_width) max_width = s8(#name ":").len; + GL_PARAMETERS + #undef X + max_width++; + Stream s = arena_stream(&a); stream_append_s8(&s, s8("---- GL Parameters ----\n")); + stream_append_s8(&s, vendor); + stream_pad(&s, ' ', max_width - vendor.len); switch (gl->vendor_id) { - case GL_VENDOR_AMD: stream_append_s8(&s, s8("Vendor: AMD\n")); break; - case GL_VENDOR_ARM: stream_append_s8(&s, s8("Vendor: ARM\n")); break; - case GL_VENDOR_INTEL: stream_append_s8(&s, s8("Vendor: Intel\n")); break; - case GL_VENDOR_NVIDIA: stream_append_s8(&s, s8("Vendor: nVidia\n")); break; + case GL_VENDOR_AMD: stream_append_s8(&s, s8("AMD\n")); break; + case GL_VENDOR_ARM: stream_append_s8(&s, s8("ARM\n")); break; + case GL_VENDOR_INTEL: stream_append_s8(&s, s8("Intel\n")); break; + case GL_VENDOR_NVIDIA: stream_append_s8(&s, s8("nVidia\n")); break; } - stream_append_s8(&s, s8("Version: ")); - stream_append_i64(&s, gl->version_major); - stream_append_byte(&s, '.'); - stream_append_i64(&s, gl->version_minor); - stream_append_s8(&s, s8("\nMax 1D/2D Texture Dimension: ")); - stream_append_i64(&s, gl->max_2d_texture_dim); - stream_append_s8(&s, s8("\nMax 3D Texture Dimension: ")); - stream_append_i64(&s, gl->max_3d_texture_dim); - stream_append_s8(&s, s8("\nMax SSBO Size: ")); - stream_append_i64(&s, gl->max_ssbo_size); - stream_append_s8(&s, s8("\nMax UBO Size: ")); - stream_append_i64(&s, gl->max_ubo_size); - stream_append_s8(&s, s8("\nMax Server Wait Time [ns]: ")); - stream_append_i64(&s, gl->max_server_wait_time); - stream_append_s8(&s, s8("\n-----------------------\n")); + + #define X(glname, name, suffix) \ + stream_append_s8(&s, s8(#name ":")); \ + stream_pad(&s, ' ', max_width - s8(#name ":").len); \ + stream_append_i64(&s, gl->name); \ + stream_append_s8(&s, s8(suffix)); \ + stream_append_byte(&s, '\n'); + GL_PARAMETERS + #undef X + stream_append_s8(&s, s8("-----------------------\n")); os->write_file(os->stderr, stream_to_s8(&s)); #endif } diff --git a/util.c b/util.c @@ -252,6 +252,12 @@ stream_append_byte(Stream *s, u8 b) } static void +stream_pad(Stream *s, u8 b, i32 n) +{ + while (n > 0) stream_append_byte(s, b), n--; +} + +static void stream_append_s8(Stream *s, s8 str) { stream_append(s, str.data, str.len);