diff --git a/engine/sprite.odin b/engine/sprite.odin index 12a9dba..2f62bb1 100644 --- a/engine/sprite.odin +++ b/engine/sprite.odin @@ -11,6 +11,19 @@ Sprite :: struct { frame: int, time: f32, flip_x: bool, + + draw_ok: bool, + draw_cache_dirty: bool, + draw_src_w: f32, + draw_src_h: f32, + draw_fw: f32, + draw_fh: f32, + draw_trim_x: f32, + draw_trim_y: f32, + draw_u0: f32, + draw_v0: f32, + draw_u1: f32, + draw_v1: f32, } spawn_sprite :: proc( @@ -36,6 +49,7 @@ spawn_sprite :: proc( } } } + invalidate_sprite_draw_cache(&sprite) return sprite } @@ -57,6 +71,8 @@ update_sprite :: proc(sprite: ^Sprite, dt: f32) { sprite.time += dt frame_duration := 1.0 / clip.fps + frame_changed := false + for sprite.time >= frame_duration { sprite.time -= frame_duration next := sprite.frame + 1 @@ -64,6 +80,7 @@ update_sprite :: proc(sprite: ^Sprite, dt: f32) { if next >= frame_count { if clip.loop { sprite.frame = 0 + frame_changed = true } else { sprite.frame = frame_count - 1 sprite.time = 0 @@ -71,8 +88,13 @@ update_sprite :: proc(sprite: ^Sprite, dt: f32) { } } else { sprite.frame = next + frame_changed = true } } + + if frame_changed { + invalidate_sprite_draw_cache(sprite) + } } to_clip :: proc(px, py, sw, sh: f32) -> [2]f32 { @@ -82,6 +104,50 @@ to_clip :: proc(px, py, sw, sh: f32) -> [2]f32 { } } +refresh_sprite_draw_cache :: proc(sprite: ^Sprite) { + if sprite == nil || sprite.data == nil { + return + } + if !sprite.draw_cache_dirty { + return + } + + frame, ok := character_frame(sprite.data, sprite.clip, sprite.frame) + if !ok { + sprite.draw_ok = false + sprite.draw_cache_dirty = false + return + } + + src_w := f32(frame.source_size[0]) + src_h := f32(frame.source_size[1]) + if src_w <= 0 do src_w = f32(frame.rect[2]) + if src_h <= 0 do src_h = f32(frame.rect[3]) + + tex_w := f32(sprite.data.width) + tex_h := f32(sprite.data.height) + u0, v0, u1, v1 := frame_uvs(frame.rect, tex_w, tex_h, false) + + sprite.draw_src_w = src_w + sprite.draw_src_h = src_h + sprite.draw_fw = f32(frame.rect[2]) + sprite.draw_fh = f32(frame.rect[3]) + sprite.draw_trim_x = f32(frame.trim_offset[0]) + sprite.draw_trim_y = f32(frame.trim_offset[1]) + sprite.draw_u0 = u0 + sprite.draw_v0 = v0 + sprite.draw_u1 = u1 + sprite.draw_v1 = v1 + sprite.draw_ok = true + sprite.draw_cache_dirty = false +} + +invalidate_sprite_draw_cache :: proc(sprite: ^Sprite) { + if sprite == nil do return + sprite.draw_cache_dirty = true + refresh_sprite_draw_cache(sprite) +} + draw_sprite :: proc(app: ^App, sprite: ^Sprite) { if app.cmd == nil || app.swapchain_texture == nil { return @@ -92,23 +158,24 @@ draw_sprite :: proc(app: ^App, sprite: ^Sprite) { if len(app.draw_list) >= MAX_SPRITES { return } - - frame, ok := character_frame(sprite.data, sprite.clip, sprite.frame) - if !ok { + if !sprite.draw_ok { return } - src_w := f32(frame.source_size[0]) - src_h := f32(frame.source_size[1]) - if src_w <= 0 do src_w = f32(frame.rect[2]) - if src_h <= 0 do src_h = f32(frame.rect[3]) - - fw := f32(frame.rect[2]) - fh := f32(frame.rect[3]) - trim_x := f32(frame.trim_offset[0]) - trim_y := f32(frame.trim_offset[1]) + src_w := sprite.draw_src_w + src_h := sprite.draw_src_h + fw := sprite.draw_fw + fh := sprite.draw_fh + trim_x := sprite.draw_trim_x + trim_y := sprite.draw_trim_y pivot := sprite.data.def.pivot + u0, v0 := sprite.draw_u0, sprite.draw_v0 + u1, v1 := sprite.draw_u1, sprite.draw_v1 + if sprite.flip_x { + u0, u1 = u1, u0 + } + viewport := Vec2{f32(app.swapchain_w), f32(app.swapchain_h)} feet := world_to_screen(app.camera, sprite.position, viewport) @@ -124,15 +191,16 @@ draw_sprite :: proc(app: ^App, sprite: ^Sprite) { sw := f32(app.swapchain_w) sh := f32(app.swapchain_h) + + if x1_px < 0 || y1_px < 0 || x0_px > sw || y0_px > sh { + return + } + p0 := to_clip(x0_px, y0_px, sw, sh) p1 := to_clip(x1_px, y0_px, sw, sh) p2 := to_clip(x1_px, y1_px, sw, sh) p3 := to_clip(x0_px, y1_px, sw, sh) - tex_w := f32(sprite.data.width) - tex_h := f32(sprite.data.height) - u0, v0, u1, v1 := frame_uvs(frame.rect, tex_w, tex_h, sprite.flip_x) - verts := [SPRITE_VERT_COUNT]Vertex { {pos = p0, uv = {u0, v0}}, {pos = p1, uv = {u1, v0}}, @@ -156,6 +224,7 @@ set_sprite_clip :: proc(sprite: ^Sprite, clip: string) { sprite.clip = clip sprite.frame = 0 sprite.time = 0 + invalidate_sprite_draw_cache(sprite) } sprite_quad_origin :: proc(position: Vec2, size: Vec2, pivot: [2]f32) -> Vec2 { diff --git a/flame/crowd-20260803-134819-report.txt b/flame/crowd-20260803-134819-report.txt new file mode 100644 index 0000000..91d5580 --- /dev/null +++ b/flame/crowd-20260803-134819-report.txt @@ -0,0 +1,691 @@ +# To display the perf.data header info, please use --header/--header-only options. +# +# +# Total Lost Samples: 0 +# +# Samples: 520 of event 'cpu/cycles/Pu' +# Event count (approx.): 2034232526 +# +# Overhead Command Shared Object Symbol +# ........ ............... .............................. ...................................................................................................................................................................... +# + 8.31% crowd_perf crowd_perf [.] engine::draw_sprite + | + ---engine::draw_sprite + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 3.99% crowd_perf libwayland-client.so.0.25.0 [.] 0x00000000000054fe + | + ---0x7f14729394fe + wl_display_dispatch_queue_pending + 0x7f146af97ba4 + 0x7f146af8a4f8 + 0x7f147284ffc9 + engine::end_frame + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 3.98% crowd_perf crowd_perf [.] engine::to_clip + | + ---engine::to_clip + engine::draw_sprite + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 3.84% crowd_perf crowd_perf [.] engine::update_sprite + | + ---engine::update_sprite + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 2.62% crowd_perf libc.so.6 [.] pthread_mutex_lock + | + ---pthread_mutex_lock + | + --0.81%--0x7f147284d10f + 0x7f147284f5c0 + 0x7f14728545c5 + 0x7f1472669860 + engine::begin_frame + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 2.58% crowd_perf libSDL3.so.0.4.12 [.] 0x0000000000149258 + | + ---0x7f1472749258 + 0x7f1472741b9a + 0x7f14727426da + + 2.15% crowd_perf libwayland-client.so.0.25.0 [.] 0x0000000000004dce + | + ---0x7f1472938dce + wl_proxy_marshal_array_flags + wl_proxy_marshal_flags + 0x7f146af97614 + 0x7f146af8a4f8 + 0x7f147284ffc9 + engine::end_frame + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 2.00% crowd_perf crowd_perf [.] runtime::memory_equal + | + ---runtime::memory_equal + runtime::string_eq + __$map_get$$map[string]engine::Clip_Def + engine::character_clip + engine::update_sprite + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 1.92% crowd_perf [unknown] [k] 0xffffffffa9e00080 + | + ---0xffffffffa9e00080 + | + --1.48%--0x7f147229fff2 + 0x7f147229403b + 0x7f1472294083 + __close + 0x7f146af8cacd + 0x7f146af893c8 + 0x7f146af89241 + 0x7f14728544bd + 0x7f1472669860 + engine::begin_frame + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 1.87% crowd_perf libSDL3.so.0.4.12 [.] 0x000000000014400b + | + ---0x7f147274400b + 0x7f147274a028 + 0x7f1472741b9a + + 1.85% crowd_perf libc.so.6 [.] 0x00000000000a6383 + | + ---0x7f14722a6383 + 0x7f14722a73af + wl_proxy_marshal_array_flags + wl_proxy_marshal_flags + | + --0.97%--0x7f146af97937 + 0x7f146af8a4f8 + 0x7f147284ffc9 + engine::end_frame + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 1.73% crowd_perf crowd_perf [.] engine::world_to_screen + | + ---engine::world_to_screen + engine::draw_sprite + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 1.73% crowd_perf crowd_perf [.] engine::sprite_feet_quad + | + ---engine::sprite_feet_quad + engine::draw_sprite + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 1.44% crowd_perf crowd_perf [.] runtime::default_hasher + | + ---runtime::default_hasher + runtime::default_hasher_string + __$hasher$$string + engine::character_clip + engine::update_sprite + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 1.38% crowd_perf crowd_perf [.] runtime::bounds_check_error + | + ---runtime::bounds_check_error + | + |--0.83%--engine::end_frame + | main::main + | main + | 0x7f1472227740 + | __libc_start_main + | _start + | + --0.55%--engine::texture_run_len + engine::end_frame + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 1.32% crowd_perf libwayland-client.so.0.25.0 [.] wl_proxy_marshal_array_flags + | + ---wl_proxy_marshal_array_flags + wl_proxy_marshal_flags + + 1.29% crowd_perf ld-linux-x86-64.so.2 [.] 0x000000000000fe40 + | + ---0x7f1472a0be40 + 0x7f1472a0de00 + 0x7f1472a09eda + _dl_catch_exception + 0x7f1472a09242 + _dl_catch_exception + 0x7f1472a097a9 + 0x7f1472293bb3 + _dl_catch_exception + 0x7f14729fe5c8 + 0x7f14722936a2 + dlopen + 0x7f147183dc10 + 0x7f1471842b4b + + 1.26% crowd_perf libc.so.6 [.] 0x000000000018a4c0 + | + ---0x7f147238a4c0 + | + --0.87%--engine::draw_sprite + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 1.22% crowd_perf libvulkan_radeon.so [.] 0x000000000018d492 + | + ---0x7f146af8d492 + 0x7f146af93f45 + 0x7f146af89296 + 0x7f146af89241 + 0x7f14728544bd + 0x7f1472669860 + engine::begin_frame + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 1.06% crowd_perf libwayland-client.so.0.25.0 [.] 0x00000000000032a4 + | + ---0x7f14729372a4 + wl_proxy_marshal_flags + 0x7f146af97988 + 0x7f146af8a4f8 + 0x7f147284ffc9 + engine::end_frame + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 1.05% crowd_perf libvulkan_radeon.so [.] 0x00000000001e361f + | + ---0x7f146afe361f + 0x7f146afe157e + 0x7f147283be46 + 0x7f1472668a74 + engine::end_frame + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 1.03% crowd_perf libSDL3.so.0.4.12 [.] 0x000000000023af6a + | + ---0x7f147283af6a + | + --1.03%--0x7f1472849f2d + engine::end_frame + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 1.00% crowd_perf crowd_perf [.] runtime::_append_elem + | + ---runtime::_append_elem + runtime::append_elem:proc(array:^[dynamic]engine::Queued_Sprite,arg:engine::Queued_Sprite,loc:runtime::Source_Code_Location)->(n:int,err:runtime::Allocator_Error) + engine::draw_sprite + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 0.98% crowd_perf libSDL3.so.0.4.12 [.] 0x0000000000144168 + | + ---0x7f1472744168 + 0x7f147274a028 + 0x7f1472741b9a + + 0.95% crowd_perf libvulkan_radeon.so [.] 0x000000000018d597 + | + ---0x7f146af8d597 + 0x7f146af93f45 + 0x7f146af89296 + 0x7f146af89241 + 0x7f14728544bd + 0x7f1472669860 + engine::begin_frame + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 0.83% crowd_perf crowd_perf [.] engine::end_frame + | + ---engine::end_frame + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 0.83% crowd_perf libc.so.6 [.] clock_gettime + | + ---clock_gettime + 0x7f146b17a09a + 0x7f146b13de27 + + 0.83% crowd_perf libc.so.6 [.] 0x000000000018a4c4 + | + ---0x7f147238a4c4 + engine::draw_sprite + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 0.80% crowd_perf libdrm.so.2.134.0 [.] drmIoctl + | + ---drmIoctl + + 0.80% crowd_perf libvulkan_radeon.so [.] 0x00000000001f2dd0 + | + ---0x7f146aff2dd0 + 0x7f146afe47c4 + 0x7f146afd1316 + + 0.79% crowd_perf libvulkan_radeon.so [.] 0x000000000022dd9e + | + ---0x7f146b02dd9e + 0x7f146af152a7 + 0x7f146af163f7 + 0x7f146af1692c + 0x7f146ae2bd93 + 0x7f146ae2da03 + 0x7f146ae2e4ca + 0x7f146ae2f277 + 0x7f146afe052c + 0x7f146afe1521 + 0x7f1472847581 + 0x7f1472664bab + engine::end_frame + main::main + + 0.74% crowd_perf crowd_perf [.] main::main + | + ---main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 0.73% crowd_perf libvulkan_radeon.so [.] 0x00000000001f41b7 + | + ---0x7f146aff41b7 + 0x7f146aff44e5 + + 0.58% wl_cursor_surfa libwayland-client.so.0.25.0 [.] 0x000000000000365c + 0.57% crowd_perf libc.so.6 [.] 0x000000000018a507 + | + ---0x7f147238a507 + 0x7f146aed1554 + 0x7f146afe165e + 0x7f146afdee47 + 0x7f146afe35f1 + 0x7f146afe157e + 0x7f147283be46 + 0x7f1472668a74 + engine::end_frame + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 0.56% crowd_perf libvulkan_radeon.so [.] 0x000000000033b80b + | + ---0x7f146b13b80b + 0x7f146aff41ce + 0x7f146aff44e5 + 0x7f146ae2baf6 + 0x7f146ae2da03 + 0x7f146ae2e4ca + 0x7f146ae2f277 + 0x7f146afe052c + 0x7f146afe1521 + 0x7f1472847581 + 0x7f1472664bab + engine::end_frame + main::main + + 0.56% crowd_perf libvulkan_radeon.so [.] 0x000000000017ff51 + | + ---0x7f146af7ff51 + 0x7f146af81458 + 0x7f146aecf495 + 0x7f1472840650 + 0x7f1472662316 + engine::end_frame + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 0.53% crowd_perf libSDL3.so.0.4.12 [.] 0x000000000023af5d + | + ---0x7f147283af5d + 0x7f1472849f38 + engine::end_frame + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 0.52% crowd_perf libvulkan_radeon.so [.] 0x00000000000bdcf2 + | + ---0x7f146aebdcf2 + 0x7f146aed7a12 + engine::end_frame + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 0.52% crowd_perf libvulkan_radeon.so [.] 0x0000000000180ab2 + | + ---0x7f146af80ab2 + 0x7f146af82d59 + 0x7f146af3cff4 + 0x7f146afdcaf6 + 0x7f146afdccd4 + 0x7f146afe6f2c + 0x7f147284fec1 + engine::end_frame + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 0.51% crowd_perf libvulkan_radeon.so [.] 0x00000000001dd3c0 + | + ---0x7f146afdd3c0 + 0x7f146afddcaf + 0x7f146afe6f2c + 0x7f147284fec1 + engine::end_frame + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 0.50% crowd_perf libvulkan_radeon.so [.] 0x00000000001d18cb + | + ---0x7f146afd18cb + 0x7f146afd1f34 + 0x7f146aeb925d + 0x7f146aec9db3 + 0x7f146aed7932 + engine::end_frame + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 0.50% crowd_perf libvulkan_radeon.so [.] 0x00000000000bbcbf + | + ---0x7f146aebbcbf + 0x7f146aec9af6 + 0x7f146aed7932 + engine::end_frame + main::main + main + 0x7f1472227740 + __libc_start_main + _start + + 0.50% crowd_perf libc.so.6 [.] 0x000000000018a516 + 0.50% crowd_perf crowd_perf [.] runtime::string_eq + 0.49% crowd_perf libvulkan_radeon.so [.] 0x00000000000bcb4f + 0.49% crowd_perf libdbus-1.so.3.38.3 [.] _dbus_list_get_first_link + 0.48% crowd_perf libvulkan_radeon.so [.] 0x000000000018d4e4 + 0.48% crowd_perf libc.so.6 [.] 0x0000000000180646 + 0.48% crowd_perf libdbus-1.so.3.38.3 [.] dbus_connection_get_dispatch_status + 0.48% crowd_perf libvulkan_radeon.so [.] 0x0000000000194603 + 0.47% crowd_perf libc.so.6 [.] 0x0000000000189c40 + 0.47% wl_cursor_surfa libc.so.6 [.] 0x00000000000a6761 + 0.47% crowd_perf libc.so.6 [.] 0x00000000000a5908 + 0.47% crowd_perf libc.so.6 [.] __libc_calloc + 0.47% crowd_perf libSDL3.so.0.4.12 [.] 0x000000000023ba05 + 0.47% crowd_perf libvulkan_radeon.so [.] 0x00000000000cb17b + 0.47% crowd_perf libdrm.so.2.134.0 [.] drmSyncobjDestroy + 0.46% crowd_perf libwayland-client.so.0.25.0 [.] wl_proxy_marshal_flags + 0.46% crowd_perf libvulkan_radeon.so [.] 0x000000000037a25f + 0.46% crowd_perf libvulkan_radeon.so [.] 0x00000000000ca967 + 0.46% crowd_perf libSDL3.so.0.4.12 [.] 0x00000000000657ed + 0.46% wl_cursor_surfa libc.so.6 [.] ppoll + 0.46% crowd_perf libSDL3.so.0.4.12 [.] 0x0000000000243e20 + 0.46% crowd_perf libc.so.6 [.] 0x000000000009ffc0 + 0.46% crowd_perf libc.so.6 [.] pthread_rwlock_unlock + 0.46% wl_cursor_surfa libwayland-client.so.0.25.0 [.] wl_display_read_events + 0.46% crowd_perf libvulkan_radeon.so [.] 0x000000000022d248 + 0.45% crowd_perf libvulkan_radeon.so [.] 0x000000000031ef50 + 0.45% crowd_perf libvulkan_radeon.so [.] 0x0000000000134153 + 0.45% crowd_perf libSDL3.so.0.4.12 [.] 0x000000000023be20 + 0.45% wl_cursor_surfa libc.so.6 [.] 0x0000000000094075 + 0.45% crowd_perf libvulkan_radeon.so [.] 0x000000000002809e + 0.45% crowd_perf libvulkan_radeon.so [.] 0x00000000001e35f2 + 0.45% crowd_perf [unknown] [k] 0xffffffffaa5d7847 + 0.45% crowd_perf libvulkan_radeon.so [.] 0x00000000000d2c23 + 0.44% crowd_perf libc.so.6 [.] pthread_rwlock_rdlock + 0.44% crowd_perf libvulkan_radeon.so [.] 0x00000000001d63fa + 0.44% crowd_perf libvulkan_radeon.so [.] 0x000000000035f600 + 0.44% crowd_perf libc.so.6 [.] 0x0000000000093fe5 + 0.44% crowd_perf libvulkan_radeon.so [.] 0x0000000000217e34 + 0.44% crowd_perf libvulkan_radeon.so [.] 0x00000000000ced24 + 0.43% crowd_perf libSDL3.so.0.4.12 [.] 0x000000000024bb50 + 0.43% crowd_perf libvulkan_radeon.so [.] 0x000000000002ca18 + 0.43% crowd_perf libSDL3.so.0.4.12 [.] 0x00000000000168f0 + 0.43% crowd_perf libc.so.6 [.] __errno_location + 0.42% crowd_perf libc.so.6 [.] malloc + 0.42% crowd_perf libwayland-client.so.0.25.0 [.] 0x0000000000003233 + 0.42% crowd_perf libc.so.6 [.] 0x00000000000a5735 + 0.42% crowd_perf crowd_perf [.] engine::begin_frame + 0.42% crowd_perf libvulkan_radeon.so [.] 0x00000000001cad78 + 0.42% crowd_perf libvulkan_radeon.so [.] 0x0000000000197510 + 0.42% crowd_perf crowd_perf [.] engine::character_clip + 0.42% crowd_perf libc.so.6 [.] 0x00000000000a58f9 + 0.41% crowd_perf libc.so.6 [.] 0x000000000009ca14 + 0.41% crowd_perf libwayland-client.so.0.25.0 [.] 0x0000000000003203 + 0.41% crowd_perf libc.so.6 [.] ppoll + 0.41% wl_cursor_surfa libc.so.6 [.] 0x00000000000a6ed3 + 0.41% crowd_perf libc.so.6 [.] pthread_rwlock_wrlock + 0.41% crowd_perf libc.so.6 [.] 0x00000000000a57e4 + 0.40% crowd_perf libvulkan_radeon.so [.] 0x000000000002ca02 + 0.40% crowd_perf libvulkan_radeon.so [.] 0x00000000001df85d + 0.40% crowd_perf libSDL3.so.0.4.12 [.] 0x000000000025445f + 0.40% crowd_perf libvulkan_radeon.so [.] 0x000000000002b9c7 + 0.40% crowd_perf libvulkan_radeon.so [.] 0x00000000000bbef5 + 0.39% crowd_perf libSDL3.so.0.4.12 [.] 0x000000000001663d + 0.39% crowd_perf libvulkan_radeon.so [.] 0x0000000000189bca + 0.39% crowd_perf libSDL3.so.0.4.12 [.] 0x000000000023b2d1 + 0.39% crowd_perf libwayland-client.so.0.25.0 [.] 0x000000000000547c + 0.39% crowd_perf libc.so.6 [.] 0x00000000000a5859 + 0.38% crowd_perf [vdso] [.] __vdso_clock_gettime + 0.38% crowd_perf libvulkan_radeon.so [.] 0x00000000000284e5 + 0.38% crowd_perf libvulkan_radeon.so [.] 0x00000000001815c0 + 0.37% crowd_perf libSDL3.so.0.4.12 [.] 0x00000000002441e6 + 0.37% crowd_perf crowd_perf [.] runtime::default_hasher_string + 0.37% crowd_perf libvulkan_radeon.so [.] 0x00000000001f4498 + 0.37% crowd_perf libvulkan_radeon.so [.] 0x00000000000d3cee + 0.37% crowd_perf libvulkan_radeon.so [.] 0x00000000000ba831 + 0.36% crowd_perf libvulkan_radeon.so [.] 0x00000000001e61f1 + 0.36% crowd_perf libc.so.6 [.] 0x0000000000189cc4 + 0.36% crowd_perf libc.so.6 [.] ioctl + 0.35% crowd_perf libvulkan_radeon.so [.] 0x00000000000c9cb4 + 0.35% crowd_perf crowd_perf [.] runtime::append_elem:proc(array:^[dynamic]engine::Queued_Sprite,arg:engine::Queued_Sprite,loc:runtime::Source_Code_Location)->(n:int,err:runtime::Allocator_Error) + 0.34% crowd_perf libvulkan_radeon.so [.] 0x000000000002ce05 + 0.31% crowd_perf crowd_perf [.] mem::copy + 0.23% crowd_perf libvulkan_radeon.so [.] 0x000000000033c9db + 0.21% wl_cursor_surfa libSDL3.so.0.4.12 [.] 0x00000000001cd7b4 + 0.12% wl_cursor_surfa libwayland-client.so.0.25.0 [.] wl_display_prepare_read_queue + 0.09% crowd_perf ld-linux-x86-64.so.2 [.] 0x0000000000026dc6 + 0.06% wl_cursor_surfa libSDL3.so.0.4.12 [.] 0x00000000001e3f76 + 0.02% wl_cursor_surfa libSDL3.so.0.4.12 [.] 0x00000000001cd7f8 + 0.02% wl_cursor_surfa libc.so.6 [.] 0x00000000000a66e2 + 0.01% wl_cursor_surfa libc.so.6 [.] 0x0000000000094047 + 0.00% wl_cursor_surfa libwayland-client.so.0.25.0 [.] 0x0000000000004cb4 + 0.00% wl_cursor_surfa libc.so.6 [.] pthread_mutex_lock + 0.00% wl_cursor_surfa libc.so.6 [.] 0x000000000018a4ca + 0.00% crowd_perf libnvidia-gpucomp.so.610.43.03 [.] 0x00000000019a8a1c + 0.00% crowd_perf libvulkan_radeon.so [.] 0x00000000002d350a + 0.00% crowd_perf libnvidia-gpucomp.so.610.43.03 [.] 0x00000000004ab69d + 0.00% wl_cursor_surfa [unknown] [k] 0xffffffffa9e00080 + 0.00% wl_cursor_surfa libc.so.6 [.] 0x00000000000a66c8 + 0.00% wl_cursor_surfa libwayland-client.so.0.25.0 [.] wl_list_empty + 0.00% crowd_perf libdbus-1.so.3.38.3 [.] 0x000000000001e7b4 + 0.00% crowd_perf ld-linux-x86-64.so.2 [.] 0x0000000000009bf6 + 0.00% wl_cursor_surfa libc.so.6 [.] 0x00000000000a6383 + 0.00% wl_cursor_surfa libc.so.6 [.] 0x000000000018a4f3 + 0.00% crowd_perf libwayland-client.so.0.25.0 [.] 0x0000000000003656 + 0.00% crowd_perf libLLVM.so.22.1 [.] 0x000000000082aba4 + 0.00% wl_cursor_surfa libc.so.6 [.] 0x00000000000a7371 + 0.00% crowd_perf libc.so.6 [.] __sigsetjmp + 0.00% wl_cursor_surfa libwayland-client.so.0.25.0 [.] 0x0000000000003621 + 0.00% crowd_perf ld-linux-x86-64.so.2 [.] 0x00000000000148a1 + 0.00% crowd_perf libc.so.6 [.] 0x00000000000a735f + 0.00% crowd_perf libc.so.6 [.] 0x00000000000a88a1 + 0.00% crowd_perf libc.so.6 [.] strlcpy + 0.00% crowd_perf libvulkan_radeon.so [.] 0x0000000000345adb + 0.00% crowd_perf libvulkan_radeon.so [.] 0x0000000000345b18 + 0.00% crowd_perf [unknown] [k] 0xffffffffa9e0012a + 0.00% crowd_perf libvulkan_radeon.so [.] 0x0000000000345ad6 + 0.00% wl_cursor_surfa libSDL3.so.0.4.12 [.] 0x00000000001e3f74 + 0.00% crowd_perf libc.so.6 [.] 0x0000000000103a63 + 0.00% crowd_perf libvulkan_radeon.so [.] 0x00000000002222a8 + 0.00% crowd_perf libnvidia-gpucomp.so.610.43.03 [.] 0x000000000046bca5 + 0.00% wl_cursor_surfa libc.so.6 [.] recvmsg + 0.00% crowd_perf libc.so.6 [.] 0x000000000009741b + 0.00% crowd_perf libnvidia-gpucomp.so.610.43.03 [.] 0x000000000195a132 + 0.00% crowd_perf libvulkan_radeon.so [.] 0x000000000018d575 + 0.00% crowd_perf libc.so.6 [.] 0x000000000011bed0 + 0.00% wl_cursor_surfa libc.so.6 [.] 0x0000000000094049 + 0.00% crowd_perf libdbus-1.so.3.38.3 [.] 0x0000000000032197 + 0.00% crowd_perf libc.so.6 [.] wait4 + 0.00% crowd_perf libc.so.6 [.] open64 + 0.00% crowd_perf libc.so.6 [.] 0x0000000000097417 + 0.00% crowd_perf libvulkan_radeon.so [.] 0x00000000001e4a14 + 0.00% crowd_perf libdrm.so.2.134.0 [.] drmSyncobjWait + 0.00% crowd_perf libc.so.6 [.] 0x00000000000408dc + 0.00% crowd_perf libwayland-client.so.0.25.0 [.] 0x0000000000003b1a + 0.00% crowd_perf libc.so.6 [.] __ctype_init + 0.00% crowd_perf [unknown] [k] 0xffffffffa9e01280 + 0.00% crowd_perf libvulkan_radeon.so [.] 0x0000000000344ddb + 0.00% crowd_perf libvulkan_radeon.so [.] 0x0000000000345bb3 + 0.00% crowd_perf libvulkan_radeon.so [.] 0x0000000000344ccb + 0.00% crowd_perf libvulkan_radeon.so [.] 0x0000000000344cd4 + 0.00% crowd_perf libvulkan_radeon.so [.] 0x0000000000345bb0 + 0.00% wl_cursor_surfa libc.so.6 [.] 0x0000000000094040 + 0.00% wl_cursor_surfa libc.so.6 [.] 0x0000000000094084 + 0.00% crowd_perf libc.so.6 [.] 0x0000000000094040 + 0.00% wl_cursor_surfa libc.so.6 [.] 0x0000000000094085 + 0.00% crowd_perf libc.so.6 [.] 0x0000000000094047 + 0.00% crowd_perf libc.so.6 [.] 0x0000000000103a40 + 0.00% crowd_perf [unknown] [k] 0xffffffffa9e01630 + 0.00% crowd_perf libc.so.6 [.] 0x00000000000973a0 + 0.00% crowd_perf libc.so.6 [.] 0x00000000000973a4 + 0.00% wl_cursor_surfa libc.so.6 [.] 0x0000000000094048 + 0.00% wl_cursor_surfa libc.so.6 [.] 0x0000000000094097 + 0.00% crowd_perf ld-linux-x86-64.so.2 [.] 0x0000000000019a7d + 0.00% crowd_perf ld-linux-x86-64.so.2 [.] 0x0000000000019a84 + 0.00% crowd_perf ld-linux-x86-64.so.2 [.] 0x000000000001f103 + 0.00% crowd_perf libLLVM.so.22.1 [.] 0x000000000082abc8 + 0.00% crowd_perf libLLVM.so.22.1 [.] 0x000000000082abdf + 0.00% crowd_perf libc.so.6 [.] __poll + 0.00% crowd_perf libc.so.6 [.] 0x00000000000409bc + 0.00% crowd_perf libc.so.6 [.] 0x0000000000094084 + 0.00% crowd_perf libc.so.6 [.] 0x0000000000094085 + 0.00% crowd_perf libc.so.6 [.] 0x00000000000a5701 + 0.00% crowd_perf libc.so.6 [.] 0x00000000000a5711 + 0.00% crowd_perf libc.so.6 [.] 0x00000000000a58fb + 0.00% crowd_perf libdrm.so.2.134.0 [.] drmSyncobjTimelineWait + 0.00% crowd_perf libnvidia-gpucomp.so.610.43.03 [.] 0x000000000046bbe3 + 0.00% crowd_perf libnvidia-gpucomp.so.610.43.03 [.] 0x000000000046bbf2 + 0.00% crowd_perf libnvidia-gpucomp.so.610.43.03 [.] 0x00000000004ad045 + 0.00% crowd_perf libnvidia-gpucomp.so.610.43.03 [.] 0x0000000001956947 + 0.00% crowd_perf libnvidia-gpucomp.so.610.43.03 [.] 0x000000000195a621 + 0.00% crowd_perf libnvidia-gpucomp.so.610.43.03 [.] 0x000000000195a630 + 0.00% crowd_perf libvulkan_radeon.so [.] 0x000000000018c923 + 0.00% crowd_perf libvulkan_radeon.so [.] 0x000000000018ca52 + 0.00% crowd_perf libvulkan_radeon.so [.] 0x000000000028edc6 + 0.00% crowd_perf libvulkan_radeon.so [.] 0x000000000028edec + 0.00% crowd_perf libvulkan_radeon.so [.] 0x0000000000344ddd + 0.00% crowd_perf libvulkan_radeon.so [.] 0x0000000000345bb5 + 0.00% crowd_perf libwayland-client.so.0.25.0 [.] 0x0000000000003aa8 + 0.00% crowd_perf [unknown] [k] 0xffffffffa9e01670 + 0.00% wl_cursor_surfa libc.so.6 [.] 0x0000000000094050 + + +# +# (Tip: Boolean options have negative forms, e.g.: perf report --no-children) +# diff --git a/flame/crowd-20260803-134819.jpg b/flame/crowd-20260803-134819.jpg new file mode 100644 index 0000000..a01fb69 Binary files /dev/null and b/flame/crowd-20260803-134819.jpg differ diff --git a/flame/crowd-20260803-134819.svg b/flame/crowd-20260803-134819.svg new file mode 100644 index 0000000..a696686 --- /dev/null +++ b/flame/crowd-20260803-134819.svg @@ -0,0 +1,1218 @@ + + + + + + + + + + + + + + +Flame Graph + +Reset Zoom +Search +ic + + + +engine::texture_run_len (11,144,665 samples, 0.55%) + + + +[libc.so.6] (1,742,631 samples, 0.09%) + + + +[unknown] (9,090,772 samples, 0.45%) + + + +[libwayland-client.so.0.25.0] (8,341,432 samples, 0.41%) + + + +all (2,034,232,526 samples, 100%) + + + +[libvulkan_radeon.so] (8,924,810 samples, 0.44%) + + + +[libSDL3.so.0.4.12] (77,611,657 samples, 3.82%) +[lib.. + + +[libSDL3.so.0.4.12] (7,424,189 samples, 0.36%) + + + +[libSDL3.so.0.4.12] (163,773,279 samples, 8.05%) +[libSDL3.so.. + + +[libvulkan.so.1.4.350] (26,444,028 samples, 1.30%) + + + +[libc.so.6] (48,327,993 samples, 2.38%) +[.. + + +[libvulkan_radeon.so] (26,136,195 samples, 1.28%) + + + +drmIoctl (8,433,375 samples, 0.41%) + + + +dbus_connection_get_dispatch_status (19,701,864 samples, 0.97%) + + + +[libdbus-1.so.3.38.3] (19,701,864 samples, 0.97%) + + + +[libSDL3.so.0.4.12] (314,202,906 samples, 15.45%) +[libSDL3.so.0.4.12] + + +_dbus_list_get_first_link (9,914,786 samples, 0.49%) + + + +_dl_catch_exception (26,403,012 samples, 1.30%) + + + +[libvulkan_radeon.so] (71,712,300 samples, 3.53%) +[li.. + + +dlsym (1,742,631 samples, 0.09%) + + + +[ld-linux-x86-64.so.2] (1,742,631 samples, 0.09%) + + + +[ld-linux-x86-64.so.2] (26,403,012 samples, 1.30%) + + + +[libc.so.6] (8,169,920 samples, 0.40%) + + + +[libc.so.6] (34,441,906 samples, 1.69%) + + + +[libSDL3.so.0.4.12] (8,164,232 samples, 0.40%) + + + +clock_gettime (16,069,538 samples, 0.79%) + + + +main (1,678,887,419 samples, 82.53%) +main + + +runtime::bounds_check_error (16,884,861 samples, 0.83%) + + + +wl_display_cancel_read (9,218,379 samples, 0.45%) + + + +runtime::_append_elem (20,310,488 samples, 1.00%) + + + +engine::character_clip (96,038,912 samples, 4.72%) +engin.. + + +runtime::memory_equal (40,633,824 samples, 2.00%) +r.. + + +engine::end_frame (755,142,466 samples, 37.12%) +engine::end_frame + + +[libc.so.6] (8,245,577 samples, 0.41%) + + + +wl_proxy_marshal_flags (183,962,894 samples, 9.04%) +wl_proxy_mars.. + + +[libSDL3.so.0.4.12] (9,344,714 samples, 0.46%) + + + +engine::end_frame (8,164,232 samples, 0.40%) + + + +engine::init (1,787,312 samples, 0.09%) + + + +[libvulkan_radeon.so] (183,367,260 samples, 9.01%) +[libvulkan_ra.. + + +drmSyncobjDestroy (9,482,682 samples, 0.47%) + + + +[unknown] (9,071,006 samples, 0.45%) + + + +drmIoctl (7,303,997 samples, 0.36%) + + + +[ld-linux-x86-64.so.2] (26,403,012 samples, 1.30%) + + + +[libSDL3.so.0.4.12] (1,787,312 samples, 0.09%) + + + +wl_cursor_surfa (66,753,686 samples, 3.28%) +wl_.. + + +[libvulkan_radeon.so] (32,127,587 samples, 1.58%) + + + +[libvulkan_radeon.so] (107,882,053 samples, 5.30%) +[libvu.. + + +[libc.so.6] (46,098,571 samples, 2.27%) +[.. + + +[libvulkan_radeon.so] (27,478,656 samples, 1.35%) + + + +drmIoctl (9,071,006 samples, 0.45%) + + + +[libc.so.6] (7,908,299 samples, 0.39%) + + + +[libvulkan_radeon.so] (193,507,638 samples, 9.51%) +[libvulkan_ra.. + + +[libvulkan_radeon.so] (8,924,810 samples, 0.44%) + + + +__$map_get$$map[string]engine::Clip_Def (50,735,980 samples, 2.49%) +__.. + + +[libc.so.6] (8,383,491 samples, 0.41%) + + + +[libwayland-client.so.0.25.0] (30,122,421 samples, 1.48%) + + + +pthread_mutex_lock (9,237,440 samples, 0.45%) + + + +[libSDL3.so.0.4.12] (314,202,906 samples, 15.45%) +[libSDL3.so.0.4.12] + + +__libc_start_main (1,678,903,479 samples, 82.53%) +__libc_start_main + + +[libwayland-client.so.0.25.0] (71,410,483 samples, 3.51%) +[li.. + + +pthread_rwlock_wrlock (8,255,663 samples, 0.41%) + + + +[libvulkan_radeon.so] (141,310,138 samples, 6.95%) +[libvulka.. + + +[libc.so.6] (1,678,903,479 samples, 82.53%) +[libc.so.6] + + +engine::draw_sprite (382,327,024 samples, 18.79%) +engine::draw_sprite + + +pthread_rwlock_rdlock (9,042,124 samples, 0.44%) + + + +[libvulkan_radeon.so] (100,391,522 samples, 4.94%) +[libvu.. + + +malloc (8,637,556 samples, 0.42%) + + + +__close (48,327,993 samples, 2.38%) +_.. + + +[ld-linux-x86-64.so.2] (1,742,631 samples, 0.09%) + + + +[libvulkan_radeon.so] (11,566,188 samples, 0.57%) + + + +[ld-linux-x86-64.so.2] (1,742,631 samples, 0.09%) + + + +[libc.so.6] (26,403,012 samples, 1.30%) + + + +drmSyncobjDestroy (7,896,144 samples, 0.39%) + + + +mem::copy (6,317,225 samples, 0.31%) + + + +[libvulkan_radeon.so] (9,414,768 samples, 0.46%) + + + +[libSDL3.so.0.4.12] (8,164,232 samples, 0.40%) + + + +[libc.so.6] (26,403,012 samples, 1.30%) + + + +[libc.so.6] (9,657,865 samples, 0.47%) + + + +[libSDL3.so.0.4.12] (124,796,519 samples, 6.13%) +[libSDL3.. + + +__$hasher$$string (36,832,454 samples, 1.81%) +_.. + + +[libvulkan_radeon.so] (13,643,854 samples, 0.67%) + + + +[libvulkan_radeon.so] (100,391,522 samples, 4.94%) +[libvu.. + + +main (8,164,232 samples, 0.40%) + + + +[libc.so.6] (37,653,724 samples, 1.85%) +[.. + + +[libSDL3.so.0.4.12] (621,071,944 samples, 30.53%) +[libSDL3.so.0.4.12] + + +[libSDL3.so.0.4.12] (51,475,462 samples, 2.53%) +[l.. + + +[libvulkan_radeon.so] (438,557,355 samples, 21.56%) +[libvulkan_radeon.so] + + +[libSDL3.so.0.4.12] (19,721,685 samples, 0.97%) + + + +engine::to_clip (80,873,900 samples, 3.98%) +engi.. + + +[libvulkan_radeon.so] (107,882,053 samples, 5.30%) +[libvu.. + + +[libvulkan_radeon.so] (28,380,951 samples, 1.40%) + + + +wl_proxy_marshal_array_flags (144,422,541 samples, 7.10%) +wl_proxy_.. + + +engine::events (27,741,962 samples, 1.36%) + + + +[libc.so.6] (1,742,631 samples, 0.09%) + + + +runtime::string_eq (50,735,980 samples, 2.49%) +ru.. + + +[ld-linux-x86-64.so.2] (26,403,012 samples, 1.30%) + + + +[libwayland-client.so.0.25.0] (8,366,132 samples, 0.41%) + + + +[libc.so.6] (8,020,277 samples, 0.39%) + + + +drmSyncobjTimelineWait (9,090,776 samples, 0.45%) + + + +[unknown] (30,082,062 samples, 1.48%) + + + +[libvulkan_radeon.so] (82,793,811 samples, 4.07%) +[lib.. + + + (27,459,787 samples, 1.35%) + + + +[libvulkan_radeon.so] (40,236,838 samples, 1.98%) +[.. + + +wl_display_dispatch_queue_timeout (17,559,811 samples, 0.86%) + + + +[libvulkan_radeon.so] (53,272,742 samples, 2.62%) +[l.. + + +[libvulkan_radeon.so] (13,643,854 samples, 0.67%) + + + +dlopen (26,403,012 samples, 1.30%) + + + +[libvulkan_radeon.so] (46,006,259 samples, 2.26%) +[.. + + +__errno_location (8,648,795 samples, 0.43%) + + + +[libvulkan_radeon.so] (10,236,838 samples, 0.50%) + + + +[libvulkan_radeon.so] (18,485,774 samples, 0.91%) + + + +main::main (124,831,274 samples, 6.14%) +main::main + + +[libwayland-client.so.0.25.0] (89,146,302 samples, 4.38%) +[libw.. + + +[libvulkan_radeon.so] (68,422,760 samples, 3.36%) +[li.. + + +[libvulkan_radeon.so] (97,776,019 samples, 4.81%) +[libvu.. + + +[ld-linux-x86-64.so.2] (1,742,631 samples, 0.09%) + + + +[libvulkan_radeon.so] (34,398,347 samples, 1.69%) + + + +[ld-linux-x86-64.so.2] (26,278,849 samples, 1.29%) + + + +[libvulkan_radeon.so] (8,164,232 samples, 0.40%) + + + +pthread_mutex_lock (16,478,120 samples, 0.81%) + + + +_dl_catch_exception (26,403,012 samples, 1.30%) + + + +[libvulkan_radeon.so] (114,758,606 samples, 5.64%) +[libvul.. + + +[libvulkan_radeon.so] (8,924,810 samples, 0.44%) + + + +[libc.so.6] (39,402,521 samples, 1.94%) +[.. + + +pthread_mutex_lock (9,218,379 samples, 0.45%) + + + +[libSDL3.so.0.4.12] (16,657,228 samples, 0.82%) + + + +[libSDL3.so.0.4.12] (7,424,189 samples, 0.36%) + + + +[libvulkan_radeon.so] (82,793,811 samples, 4.07%) +[lib.. + + +[libSDL3.so.0.4.12] (19,721,685 samples, 0.97%) + + + +main::main (1,678,887,419 samples, 82.53%) +main::main + + +[libvulkan_radeon.so] (11,566,188 samples, 0.57%) + + + +crowd_perf (1,967,478,840 samples, 96.72%) +crowd_perf + + +[libvulkan_radeon.so] (107,882,053 samples, 5.30%) +[libvu.. + + +main::main (8,164,232 samples, 0.40%) + + + +[ld-linux-x86-64.so.2] (26,403,012 samples, 1.30%) + + + +ioctl (9,071,006 samples, 0.45%) + + + +[libc.so.6] (48,327,993 samples, 2.38%) +[.. + + +_dbus_list_pop_first_link (9,914,786 samples, 0.49%) + + + +[libc.so.6] (1,742,631 samples, 0.09%) + + + +engine::end_frame (124,796,519 samples, 6.13%) +engine::.. + + +[libSDL3.so.0.4.12] (124,796,519 samples, 6.13%) +[libSDL3.. + + +[libSDL3.so.0.4.12] (1,787,312 samples, 0.09%) + + + +clock_gettime (8,483,070 samples, 0.42%) + + + +drmIoctl (9,090,775 samples, 0.45%) + + + +[ld-linux-x86-64.so.2] (1,742,631 samples, 0.09%) + + + +engine::begin_frame (322,714,962 samples, 15.86%) +engine::begin_frame + + +[libvulkan_radeon.so] (19,233,079 samples, 0.95%) + + + +ioctl (7,303,997 samples, 0.36%) + + + +[libSDL3.so.0.4.12] (110,523,257 samples, 5.43%) +[libSDL.. + + +[libvulkan_radeon.so] (100,391,522 samples, 4.94%) +[libvu.. + + +[libc.so.6] (17,180,244 samples, 0.84%) + + + +[libvulkan_radeon.so] (112,169,713 samples, 5.51%) +[libvul.. + + +[libvulkan_radeon.so] (8,164,232 samples, 0.40%) + + + +[libvulkan_radeon.so] (430,574,925 samples, 21.17%) +[libvulkan_radeon.so] + + +[libSDL3.so.0.4.12] (1,787,312 samples, 0.09%) + + + +drmSyncobjWait (17,082,245 samples, 0.84%) + + + +[libvulkan_radeon.so] (7,424,189 samples, 0.36%) + + + +runtime::bounds_check_error (11,144,665 samples, 0.55%) + + + +[libc.so.6] (8,245,577 samples, 0.41%) + + + +drmSyncobjTimelineWait (9,071,006 samples, 0.45%) + + + +ioctl (9,090,774 samples, 0.45%) + + + +[libSDL3.so.0.4.12] (110,523,257 samples, 5.43%) +[libSDL.. + + +__vdso_clock_gettime (7,707,391 samples, 0.38%) + + + +runtime::default_hasher (29,280,891 samples, 1.44%) + + + +[libvulkan_radeon.so] (26,136,195 samples, 1.28%) + + + +[libvulkan_radeon.so] (31,298,993 samples, 1.54%) + + + +pthread_rwlock_unlock (9,297,990 samples, 0.46%) + + + +[libvulkan_radeon.so] (59,169,952 samples, 2.91%) +[l.. + + +_dbus_connection_unlock (9,914,786 samples, 0.49%) + + + +_dl_catch_exception (1,742,631 samples, 0.09%) + + + +[libc.so.6] (11,566,188 samples, 0.57%) + + + +[libvulkan_radeon.so] (26,136,195 samples, 1.28%) + + + +runtime::append_elem:proc (27,459,787 samples, 1.35%) + + + +engine::update_sprite (174,157,959 samples, 8.56%) +engine::upda.. + + +[libc.so.6] (10,140,378 samples, 0.50%) + + + +drmIoctl (7,896,144 samples, 0.39%) + + + +[libc.so.6] (18,130,716 samples, 0.89%) + + + +__libc_calloc (9,607,282 samples, 0.47%) + + + +engine::world_to_screen (35,275,968 samples, 1.73%) + + + +[libSDL3.so.0.4.12] (110,523,257 samples, 5.43%) +[libSDL.. + + +wl_display_dispatch_queue_pending (89,146,302 samples, 4.38%) +wl_di.. + + +pthread_mutex_lock (9,345,689 samples, 0.46%) + + + +engine::sprite_feet_quad (35,186,658 samples, 1.73%) + + + +[libvulkan_radeon.so] (202,015,929 samples, 9.93%) +[libvulkan_rad.. + + +[unknown] (9,090,771 samples, 0.45%) + + + +_start (1,678,903,479 samples, 82.53%) +_start + + +runtime::default_hasher_string (36,832,454 samples, 1.81%) +r.. + + +[unknown] (9,090,771 samples, 0.45%) + + + +[libvulkan.so.1.4.350] (26,403,012 samples, 1.30%) + + + +[libc.so.6] (8,514,459 samples, 0.42%) + + + +_dl_catch_exception (26,403,012 samples, 1.30%) + + + +drmSyncobjTransfer (7,303,997 samples, 0.36%) + + + +[libvulkan_radeon.so] (13,643,854 samples, 0.67%) + + + +pthread_mutex_lock (9,022,260 samples, 0.44%) + + + +[ld-linux-x86-64.so.2] (26,278,849 samples, 1.29%) + + + +ppoll (8,341,432 samples, 0.41%) + + + +