diff options
| author | HampusM <hampus@hampusmat.com> | 2026-09-14 12:41:52 +0200 |
|---|---|---|
| committer | HampusM <hampus@hampusmat.com> | 2026-09-14 12:41:52 +0200 |
| commit | a0a7516b51c088ce416714eace3ad320ec04a5fb (patch) | |
| tree | 37336d6dcf78952ae2840442d8ba4e7b7fcd45e5 /opengl-bindings | |
| parent | a8f7f5d12ea47175dfb361f9b3e7aa9520985d5c (diff) | |
feat(opengl-bindings): add tracing instrumentation to fns
Diffstat (limited to 'opengl-bindings')
| -rw-r--r-- | opengl-bindings/Cargo.toml | 1 | ||||
| -rw-r--r-- | opengl-bindings/src/blending.rs | 1 | ||||
| -rw-r--r-- | opengl-bindings/src/buffer.rs | 26 | ||||
| -rw-r--r-- | opengl-bindings/src/debug.rs | 2 | ||||
| -rw-r--r-- | opengl-bindings/src/framebuffer.rs | 6 | ||||
| -rw-r--r-- | opengl-bindings/src/lib.rs | 6 | ||||
| -rw-r--r-- | opengl-bindings/src/misc.rs | 17 | ||||
| -rw-r--r-- | opengl-bindings/src/shader.rs | 17 | ||||
| -rw-r--r-- | opengl-bindings/src/texture.rs | 16 | ||||
| -rw-r--r-- | opengl-bindings/src/vertex_array.rs | 11 |
10 files changed, 97 insertions, 6 deletions
diff --git a/opengl-bindings/Cargo.toml b/opengl-bindings/Cargo.toml index f9965e6..7670912 100644 --- a/opengl-bindings/Cargo.toml +++ b/opengl-bindings/Cargo.toml @@ -8,6 +8,7 @@ glutin = "0.32.3" thiserror = "1.0.49" safer-ffi = "0.1.13" bitflags = "2.4.0" +tracing = "0.1.39" util-macros = { workspace = true } [build-dependencies] diff --git a/opengl-bindings/src/blending.rs b/opengl-bindings/src/blending.rs index a855c2a..e4229ed 100644 --- a/opengl-bindings/src/blending.rs +++ b/opengl-bindings/src/blending.rs @@ -1,5 +1,6 @@ use crate::MaybeCurrentContextWithFns; +#[tracing::instrument(skip(current_context))] pub fn configure( current_context: &MaybeCurrentContextWithFns, configuration: Configuration, diff --git a/opengl-bindings/src/buffer.rs b/opengl-bindings/src/buffer.rs index 2567aba..4d0fcba 100644 --- a/opengl-bindings/src/buffer.rs +++ b/opengl-bindings/src/buffer.rs @@ -1,3 +1,5 @@ +use std::any::type_name; +use std::fmt::Debug; use std::marker::PhantomData; use std::mem::size_of_val; use std::ptr::null; @@ -6,7 +8,7 @@ use safer_ffi::layout::ReprC; use crate::MaybeCurrentContextWithFns; -#[derive(Debug, Clone)] +#[derive(Clone)] pub struct Buffer<Item: ReprC> { buf: crate::sys::types::GLuint, @@ -15,6 +17,7 @@ pub struct Buffer<Item: ReprC> impl<Item: ReprC> Buffer<Item> { + #[tracing::instrument(skip(current_context))] #[must_use] pub fn new(current_context: &MaybeCurrentContextWithFns) -> Self { @@ -31,6 +34,7 @@ impl<Item: ReprC> Buffer<Item> /// /// # Errors /// Returns `Err` if the size (in bytes) is too large. + #[tracing::instrument(skip(current_context))] pub fn init( &self, current_context: &MaybeCurrentContextWithFns, @@ -60,6 +64,7 @@ impl<Item: ReprC> Buffer<Item> /// /// # Errors /// Returns `Err` if the total size (in bytes) is too large. + #[tracing::instrument(skip(current_context, items))] pub fn store( &self, current_context: &MaybeCurrentContextWithFns, @@ -91,12 +96,12 @@ impl<Item: ReprC> Buffer<Item> /// /// # Errors /// Returns `Err` if the total size (in bytes) is too large. + #[tracing::instrument(skip(current_context, items))] pub fn store_at_byte_offset( &self, current_context: &MaybeCurrentContextWithFns, byte_offset: usize, items: &[Item], - // usage: Usage, ) -> Result<(), Error> { let total_size = size_of_val(items); @@ -121,7 +126,6 @@ impl<Item: ReprC> Buffer<Item> byte_offset, total_size, items.as_ptr().cast(), - // usage.into_gl(), ); } @@ -133,6 +137,7 @@ impl<Item: ReprC> Buffer<Item> /// /// # Errors /// Returns `Err` if the total size (in bytes) is too large. + #[tracing::instrument(skip(current_context, values, map_func))] pub fn store_mapped<Value>( &self, current_context: &MaybeCurrentContextWithFns, @@ -187,6 +192,7 @@ impl<Item: ReprC> Buffer<Item> Ok(()) } + #[tracing::instrument(skip(current_context))] pub fn delete(&self, current_context: &MaybeCurrentContextWithFns) { unsafe { @@ -194,6 +200,7 @@ impl<Item: ReprC> Buffer<Item> } } + #[tracing::instrument(skip(current_context))] pub fn bind_to_indexed_target( &self, current_context: &MaybeCurrentContextWithFns, @@ -216,6 +223,19 @@ impl<Item: ReprC> Buffer<Item> } } +impl<Item: ReprC> Debug for Buffer<Item> +{ + fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result + { + let name = format!("Buffer<{}>", type_name::<Item>()); + + formatter + .debug_struct(&name) + .field("buf", &self.buf) + .finish() + } +} + /// Buffer usage. #[derive(Debug, Clone, Copy)] pub enum Usage diff --git a/opengl-bindings/src/debug.rs b/opengl-bindings/src/debug.rs index 167173f..b842846 100644 --- a/opengl-bindings/src/debug.rs +++ b/opengl-bindings/src/debug.rs @@ -7,6 +7,7 @@ use util_macros::FromRepr; use crate::MaybeCurrentContextWithFns; +#[tracing::instrument(skip(current_context, cb))] pub fn set_debug_message_callback( current_context: &MaybeCurrentContextWithFns, cb: MessageCallback, @@ -23,6 +24,7 @@ pub fn set_debug_message_callback( /// /// # Errors /// Returns `Err` if `ids` contains too many ids. +#[tracing::instrument(skip(current_context))] pub fn set_debug_message_control( current_context: &MaybeCurrentContextWithFns, source: Option<MessageSource>, diff --git a/opengl-bindings/src/framebuffer.rs b/opengl-bindings/src/framebuffer.rs index 6d16602..a758cc3 100644 --- a/opengl-bindings/src/framebuffer.rs +++ b/opengl-bindings/src/framebuffer.rs @@ -9,6 +9,7 @@ pub struct Framebuffer impl Framebuffer { + #[tracing::instrument(skip(current_context))] #[must_use] pub fn new(current_context: &MaybeCurrentContextWithFns) -> Self { @@ -22,6 +23,7 @@ impl Framebuffer } /// Attaches a texture object as a logical buffer of this framebuffer object. + #[tracing::instrument(skip(current_context))] pub fn attach_texture( &self, current_context: &MaybeCurrentContextWithFns, @@ -41,6 +43,7 @@ impl Framebuffer } /// Detaches the texture object at the specified attachment point. + #[tracing::instrument(skip(current_context))] pub fn detach_texture( &self, current_context: &MaybeCurrentContextWithFns, @@ -61,6 +64,7 @@ impl Framebuffer /// framebuffer object. /// /// If `buffer` is `None`, no color buffer will be written into. + #[tracing::instrument(skip(current_context))] pub fn set_draw_buffer( &self, current_context: &MaybeCurrentContextWithFns, @@ -77,6 +81,7 @@ impl Framebuffer } } + #[tracing::instrument(skip(current_context))] pub fn delete(self, current_context: &MaybeCurrentContextWithFns) { unsafe { @@ -101,6 +106,7 @@ impl Framebuffer /// /// If `framebuffer` is `None`, breaks the existing binding of a framebuffer object to /// the framebuffer target `target`. +#[tracing::instrument(skip(current_context))] pub fn bind( current_context: &MaybeCurrentContextWithFns, target: Target, diff --git a/opengl-bindings/src/lib.rs b/opengl-bindings/src/lib.rs index 3733f44..ec39c83 100644 --- a/opengl-bindings/src/lib.rs +++ b/opengl-bindings/src/lib.rs @@ -29,6 +29,7 @@ impl MaybeCurrentContextWithFns /// /// # Errors /// Returns `Err` if making this context current fails. + #[tracing::instrument(skip(context, surface))] pub fn new<SurfaceType: SurfaceTypeTrait>( context: NotCurrentContext, surface: &Surface<SurfaceType>, @@ -57,6 +58,7 @@ impl MaybeCurrentContextWithFns /// /// # Errors /// Returns `Err` if making this context current fails. + #[tracing::instrument(skip(self, surface))] pub fn make_current<SurfaceType: SurfaceTypeTrait>( &self, surface: &Surface<SurfaceType>, @@ -75,6 +77,7 @@ impl MaybeCurrentContextWithFns /// /// # Errors /// Returns `Err` if making this context current fails. + #[tracing::instrument(skip(self))] pub fn make_current_surfaceless(&self) -> Result<(), MakeContextCurrentError> { if !self.context.is_current() { @@ -85,12 +88,14 @@ impl MaybeCurrentContextWithFns Ok(()) } + #[tracing::instrument(skip(self))] #[must_use] pub fn context(&self) -> &PossiblyCurrentContext { &self.context } + #[tracing::instrument(skip(self))] #[inline] pub(crate) fn fns(&self) -> &sys::Gl { @@ -104,6 +109,7 @@ impl MaybeCurrentContextWithFns #[error("Failed to make context current")] pub struct MakeContextCurrentError(#[source] glutin::error::Error); +#[tracing::instrument(skip(context))] fn make_glutin_context_current_surfaceless( context: &PossiblyCurrentContext, ) -> Result<(), glutin::error::Error> diff --git a/opengl-bindings/src/misc.rs b/opengl-bindings/src/misc.rs index f7f86d0..9ad8c4a 100644 --- a/opengl-bindings/src/misc.rs +++ b/opengl-bindings/src/misc.rs @@ -9,6 +9,7 @@ use crate::MaybeCurrentContextWithFns; /// /// # Errors /// Returns `Err` if any value in `position` or `size` does not fit into a `i32`. +#[tracing::instrument(skip(current_context))] pub fn set_viewport( current_context: &MaybeCurrentContextWithFns, position: &Vec2<u32>, @@ -54,6 +55,7 @@ pub fn set_viewport( Ok(()) } +#[tracing::instrument(skip(current_context))] pub fn get_viewport( current_context: &MaybeCurrentContextWithFns, ) -> (Vec2<u32>, Dimens<u32>) @@ -81,6 +83,7 @@ pub fn get_viewport( (pos, size) } +#[tracing::instrument(skip(current_context))] pub fn clear_buffers(current_context: &MaybeCurrentContextWithFns, mask: BufferClearMask) { unsafe { @@ -88,6 +91,7 @@ pub fn clear_buffers(current_context: &MaybeCurrentContextWithFns, mask: BufferC } } +#[tracing::instrument(skip(current_context))] pub fn set_polygon_mode( current_context: &MaybeCurrentContextWithFns, face: PolygonModeFace, @@ -99,6 +103,7 @@ pub fn set_polygon_mode( } } +#[tracing::instrument(skip(current_context))] pub fn set_face_culling_mode( current_context: &MaybeCurrentContextWithFns, face_culling_mode: FaceCullingMode, @@ -107,6 +112,7 @@ pub fn set_face_culling_mode( unsafe { current_context.fns().CullFace(face_culling_mode as u32) } } +#[tracing::instrument(skip(current_context))] pub fn enable(current_context: &MaybeCurrentContextWithFns, capacity: Capability) { unsafe { @@ -114,6 +120,7 @@ pub fn enable(current_context: &MaybeCurrentContextWithFns, capacity: Capability } } +#[tracing::instrument(skip(current_context))] pub fn disable(current_context: &MaybeCurrentContextWithFns, capability: Capability) { unsafe { @@ -121,6 +128,7 @@ pub fn disable(current_context: &MaybeCurrentContextWithFns, capability: Capabil } } +#[tracing::instrument(skip(current_context))] pub fn set_enabled( current_context: &MaybeCurrentContextWithFns, capability: Capability, @@ -134,6 +142,7 @@ pub fn set_enabled( } } +#[tracing::instrument(skip(current_context))] #[must_use] pub fn get_context_flags(current_context: &MaybeCurrentContextWithFns) -> ContextFlags { @@ -149,6 +158,7 @@ pub fn get_context_flags(current_context: &MaybeCurrentContextWithFns) -> Contex } /// Defines a rectangle, called the scissor box, in window coordinates. +#[tracing::instrument(skip(current_context))] pub fn define_scissor_box( current_context: &MaybeCurrentContextWithFns, lower_left_corner_pos: Vec2<u16>, @@ -175,6 +185,7 @@ pub fn define_scissor_box( } } +#[tracing::instrument(skip(current_context))] pub fn set_depth_function( current_context: &MaybeCurrentContextWithFns, depth_function: DepthFunction, @@ -208,7 +219,7 @@ pub enum Capability CullFace = crate::sys::CULL_FACE, } -#[derive(Debug)] +#[derive(Debug, Clone, Copy)] #[repr(u32)] pub enum PolygonMode { @@ -217,7 +228,7 @@ pub enum PolygonMode Fill = crate::sys::FILL, } -#[derive(Debug)] +#[derive(Debug, Clone, Copy)] #[repr(u32)] pub enum PolygonModeFace { @@ -226,7 +237,7 @@ pub enum PolygonModeFace FrontAndBack = crate::sys::FRONT_AND_BACK, } -#[derive(Debug, Default)] +#[derive(Debug, Default, Clone, Copy)] #[repr(u32)] pub enum FaceCullingMode { diff --git a/opengl-bindings/src/shader.rs b/opengl-bindings/src/shader.rs index 511b00c..e3df35c 100644 --- a/opengl-bindings/src/shader.rs +++ b/opengl-bindings/src/shader.rs @@ -14,6 +14,7 @@ pub struct Shader impl Shader { + #[tracing::instrument(skip(current_context))] #[must_use] pub fn new(current_context: &MaybeCurrentContextWithFns, kind: Kind) -> Self { @@ -30,6 +31,7 @@ impl Shader /// /// # Errors /// Returns `Err` if `source` is not ASCII. + #[tracing::instrument(skip(current_context, source))] pub fn set_source( &self, current_context: &MaybeCurrentContextWithFns, @@ -62,6 +64,7 @@ impl Shader /// /// # Errors /// Returns `Err` if compiling fails. + #[tracing::instrument(skip(current_context))] pub fn compile( &self, current_context: &MaybeCurrentContextWithFns, @@ -90,6 +93,7 @@ impl Shader Ok(()) } + #[tracing::instrument(skip(current_context))] pub fn delete(self, current_context: &MaybeCurrentContextWithFns) { unsafe { @@ -97,6 +101,7 @@ impl Shader } } + #[tracing::instrument(skip(current_context))] fn get_info_log(&self, current_context: &MaybeCurrentContextWithFns) -> String { const BUF_SIZE: crate::sys::types::GLsizei = 512; @@ -136,6 +141,7 @@ pub struct Program impl Program { + #[tracing::instrument(skip(current_context))] #[must_use] pub fn new(current_context: &MaybeCurrentContextWithFns) -> Self { @@ -144,6 +150,7 @@ impl Program Self { program } } + #[tracing::instrument(skip(current_context))] pub fn attach(&self, current_context: &MaybeCurrentContextWithFns, shader: &Shader) { unsafe { @@ -157,6 +164,7 @@ impl Program /// /// # Errors /// Returns `Err` if linking fails. + #[tracing::instrument(skip(current_context))] pub fn link(&self, current_context: &MaybeCurrentContextWithFns) -> Result<(), Error> { @@ -183,6 +191,7 @@ impl Program Ok(()) } + #[tracing::instrument(skip(current_context))] pub fn activate(&self, current_context: &MaybeCurrentContextWithFns) { unsafe { @@ -190,6 +199,7 @@ impl Program } } + #[tracing::instrument(skip(current_context, var))] pub fn set_uniform_at_location( &self, current_context: &MaybeCurrentContextWithFns, @@ -200,6 +210,7 @@ impl Program var.set(current_context, self, location); } + #[tracing::instrument(skip(current_context, var))] pub fn set_uniform( &self, current_context: &MaybeCurrentContextWithFns, @@ -226,6 +237,7 @@ impl Program self.program } + #[tracing::instrument(skip(current_context))] pub fn delete(self, current_context: &MaybeCurrentContextWithFns) { unsafe { @@ -233,6 +245,7 @@ impl Program } } + #[tracing::instrument(skip(current_context))] fn get_info_log(&self, current_context: &MaybeCurrentContextWithFns) -> String { const BUF_SIZE: crate::sys::types::GLsizei = 512; @@ -266,6 +279,7 @@ pub trait UniformVariable: ReprC + sealed::Sealed impl UniformVariable for f32 { + #[tracing::instrument(skip(current_context))] fn set( &self, current_context: &MaybeCurrentContextWithFns, @@ -287,6 +301,7 @@ impl sealed::Sealed for f32 {} impl UniformVariable for i32 { + #[tracing::instrument(skip(current_context, program, uniform_location))] fn set( &self, current_context: &MaybeCurrentContextWithFns, @@ -308,6 +323,7 @@ impl sealed::Sealed for i32 {} impl UniformVariable for Vec3<f32> { + #[tracing::instrument(skip(current_context, program, uniform_location))] fn set( &self, current_context: &MaybeCurrentContextWithFns, @@ -331,6 +347,7 @@ impl sealed::Sealed for Vec3<f32> {} impl UniformVariable for Matrix<f32, 4, 4> { + #[tracing::instrument(skip(current_context, program, uniform_location))] fn set( &self, current_context: &MaybeCurrentContextWithFns, diff --git a/opengl-bindings/src/texture.rs b/opengl-bindings/src/texture.rs index ebfc8f4..e0bd19f 100644 --- a/opengl-bindings/src/texture.rs +++ b/opengl-bindings/src/texture.rs @@ -22,6 +22,7 @@ impl Builder self } + #[tracing::instrument(skip(current_context, image))] #[must_use] pub fn create_2d<'image>( &self, @@ -60,6 +61,7 @@ impl Builder Ok(texture) } + #[tracing::instrument(skip(current_context, images))] #[must_use] pub fn create_cube_map<'image>( &self, @@ -125,6 +127,7 @@ impl Texture Builder::default() } + #[tracing::instrument(skip(current_context))] pub fn bind_to_texture_unit( &self, current_context: &MaybeCurrentContextWithFns, @@ -138,6 +141,7 @@ impl Texture } } + #[tracing::instrument(skip(current_context))] pub fn generate_mipmap(&self, current_context: &MaybeCurrentContextWithFns) { unsafe { @@ -145,6 +149,7 @@ impl Texture } } + #[tracing::instrument(skip_all)] pub fn store_image_2d( &self, current_context: &MaybeCurrentContextWithFns, @@ -176,6 +181,7 @@ impl Texture Ok(()) } + #[tracing::instrument(skip_all)] pub fn store_image_3d( &self, current_context: &MaybeCurrentContextWithFns, @@ -203,6 +209,7 @@ impl Texture Ok(()) } + #[tracing::instrument(skip_all, fields(wrapping = ?wrapping))] pub fn set_wrap( &self, current_context: &MaybeCurrentContextWithFns, @@ -224,6 +231,7 @@ impl Texture } } + #[tracing::instrument(skip(current_context))] pub fn set_magnifying_filter( &self, current_context: &MaybeCurrentContextWithFns, @@ -239,6 +247,7 @@ impl Texture } } + #[tracing::instrument(skip(current_context))] pub fn set_minifying_filter( &self, current_context: &MaybeCurrentContextWithFns, @@ -263,6 +272,7 @@ impl Texture /// The values are stored unmodified as floating-point values. /// /// The initial values are (0.0, 0.0, 0.0, 0.0). + #[tracing::instrument(skip(current_context))] pub fn set_float_border_values( &self, current_context: &MaybeCurrentContextWithFns, @@ -278,6 +288,7 @@ impl Texture } } + #[tracing::instrument(skip(current_context))] pub fn delete(self, current_context: &MaybeCurrentContextWithFns) { unsafe { @@ -297,6 +308,7 @@ impl Texture self.texture } + #[tracing::instrument(skip(current_context))] fn new( current_context: &MaybeCurrentContextWithFns, target: crate::sys::types::GLenum, @@ -313,6 +325,7 @@ impl Texture Self { texture } } + #[tracing::instrument(skip(current_context))] fn alloc_2d( &self, current_context: &MaybeCurrentContextWithFns, @@ -332,6 +345,7 @@ impl Texture } } + #[tracing::instrument(skip(current_context, image))] fn sub_image_2d( &self, current_context: &MaybeCurrentContextWithFns, @@ -371,6 +385,7 @@ impl Texture } } + #[tracing::instrument(skip(current_context, image))] fn sub_image_3d( &self, current_context: &MaybeCurrentContextWithFns, @@ -657,6 +672,7 @@ fn check_image_buffer_len_correct_for_size( Ok(()) } +#[tracing::instrument(skip(current_context))] fn set_pixel_unpack_alignment( current_context: &MaybeCurrentContextWithFns, alignment: PixelAlignment, diff --git a/opengl-bindings/src/vertex_array.rs b/opengl-bindings/src/vertex_array.rs index 84fdc42..723bbfb 100644 --- a/opengl-bindings/src/vertex_array.rs +++ b/opengl-bindings/src/vertex_array.rs @@ -13,6 +13,7 @@ pub struct VertexArray impl VertexArray { + #[tracing::instrument(skip(current_context))] #[must_use] pub fn new(current_context: &MaybeCurrentContextWithFns) -> Self { @@ -31,6 +32,7 @@ impl VertexArray /// Returns `Err` if: /// - `vertex_offset` is too large /// - `vertex_cnt` is too large + #[tracing::instrument(skip(current_context))] pub fn draw_arrays( current_context: &MaybeCurrentContextWithFns, primitive_kind: PrimitiveKind, @@ -69,6 +71,7 @@ impl VertexArray /// /// # Errors /// Returns `Err` if `cnt` is too large. + #[tracing::instrument(skip(current_context))] pub fn draw_elements( current_context: &MaybeCurrentContextWithFns, DrawElementsOptions { @@ -113,6 +116,7 @@ impl VertexArray Ok(()) } + #[tracing::instrument(skip(current_context))] pub fn bind_element_buffer( &self, current_context: &MaybeCurrentContextWithFns, @@ -126,6 +130,7 @@ impl VertexArray } } + #[tracing::instrument(skip(current_context))] pub fn bind_vertex_buffer<VertexBufferItem: ReprC>( &self, current_context: &MaybeCurrentContextWithFns, @@ -163,6 +168,7 @@ impl VertexArray Ok(()) } + #[tracing::instrument(skip(current_context))] pub fn enable_attrib( &self, current_context: &MaybeCurrentContextWithFns, @@ -177,6 +183,7 @@ impl VertexArray } } + #[tracing::instrument(skip(current_context))] pub fn disable_attrib( &self, current_context: &MaybeCurrentContextWithFns, @@ -191,6 +198,7 @@ impl VertexArray } } + #[tracing::instrument(skip(current_context))] pub fn set_attrib_format( &self, current_context: &MaybeCurrentContextWithFns, @@ -215,6 +223,7 @@ impl VertexArray } /// Associate a vertex attribute and a vertex buffer binding. + #[tracing::instrument(skip(current_context))] pub fn set_attrib_vertex_buf_binding( &self, current_context: &MaybeCurrentContextWithFns, @@ -231,11 +240,13 @@ impl VertexArray } } + #[tracing::instrument(skip(current_context))] pub fn bind(&self, current_context: &MaybeCurrentContextWithFns) { unsafe { current_context.fns().BindVertexArray(self.array) } } + #[tracing::instrument(skip(current_context))] pub fn delete(&self, current_context: &MaybeCurrentContextWithFns) { unsafe { |
