2026-06-07 - 2026-09-07

Overview

60 active pull requests
70 active issues
Excluding merges, 1 author has pushed 6 commits to master and 77 commits to all branches. On master, 183 files have changed and there have been 2071 additions and 1692 deletions.

60 pull requests merged by 1 user

Merged #156 test(bench): measure net perf gain from #40 to master in Sponza (#155) 2026-06-18 19:36:37 +00:00

Merged #154 fix(window): silence per-frame and setup-path Vulkan validation errors (#153) 2026-06-18 18:05:06 +00:00

Merged #152 perf(window): block message loop while paused on Win32 (#134) 2026-06-18 14:01:28 +00:00

Merged #151 perf(webgpu): byteCount-bounded readback for over-provisioned buffers (#133) 2026-06-18 14:01:18 +00:00

Merged #150 perf(rt): batch the WebGPU TLAS instance upload into one writeBuffer (#131) 2026-06-18 14:00:11 +00:00

Merged #149 perf(webgpu): range-flush only live TLAS metadata slots (#130) 2026-06-18 13:56:46 +00:00

Merged #148 perf(ui): reuse handles vector in WebGPU custom Dispatch (#132) 2026-06-18 13:54:36 +00:00

Merged #147 perf(ui): per-shelf dirty spans for tight font-atlas uploads (#129) 2026-06-18 13:36:33 +00:00

Merged #146 perf(ui): memoize the input-field caret prefix width (#128) 2026-06-18 13:30:33 +00:00

Merged #143 perf(ui): LRU-evict the shaped-run cache instead of clearing it (#123) 2026-06-18 13:30:08 +00:00

Merged #145 perf(ui): subgroup prefix-sum stream compaction in the UI compute shaders (#124) 2026-06-18 13:27:30 +00:00

Merged #144 perf(ui): skip the destination read-modify-write on empty tiles (#127) 2026-06-18 13:27:08 +00:00

Merged #142 perf(ui): hoist loop-invariant per-item/per-glyph math out of the per-pixel loop (#125) 2026-06-18 13:22:46 +00:00

Merged #141 perf(ui): transparent shaped-run cache lookup, no string copy on hit (#122) 2026-06-18 13:19:43 +00:00

Merged #140 perf(tlas): dirty-track the per-frame TLAS instance+metadata upload (#118) 2026-06-18 13:07:44 +00:00

Merged #139 perf(buffer): reuse staging via a per-frame-in-flight ring in UploadDeviceLocal (#120) 2026-06-17 19:52:04 +00:00

Merged #138 perf(mesh): dirty-range vertex upload for deforming-mesh Refit (#119) 2026-06-17 19:51:26 +00:00

Merged #137 perf(sync): scope frame-loop barriers to swapchain image + real per-pass stages (#115) 2026-06-17 19:45:13 +00:00

Merged #136 perf(image): release static texture staging after upload (#114) 2026-06-17 19:41:07 +00:00

Merged #135 perf(device): pop retired deletions off the front in O(ready) (#116) 2026-06-17 19:38:28 +00:00

Merged #112 test(mesh): pin static-build deletion count for #67 staging-release (#110) 2026-06-17 18:51:19 +00:00

Merged #109 perf(mesh): place RT geometry device-local via #89 upload strategy (#73) 2026-06-17 18:05:57 +00:00

Merged #111 perf(rt): allocate TLAS metadata buffer in BAR/VRAM, not system RAM (#75) 2026-06-17 17:50:55 +00:00

Merged #108 perf(window): use HOST_CACHED readback staging in SaveFrame (#74) 2026-06-17 17:45:17 +00:00

Merged #107 perf(rt): place SBT in device-local memory via upload-strategy helper (#72) 2026-06-17 17:42:02 +00:00

Merged #106 perf(decompress): release compressed staging after submit, not for the resource's life (#67) 2026-06-17 17:41:20 +00:00

Merged #105 perf(rt): allocate TLAS instance buffer in BAR/VRAM, not system RAM (#65) 2026-06-17 17:38:14 +00:00

Merged #104 perf(mesh): release per-mesh scratch buffer for static BLAS (#66) 2026-06-17 17:36:44 +00:00

Merged #103 perf(mesh): skip immutable index re-upload on RT refit UPDATE (#68) 2026-06-17 17:34:57 +00:00

Merged #102 fix(device): fence-keyed deferred resource-deletion queue (#101) 2026-06-17 13:21:47 +00:00

Merged #99 perf(ui): flush only the written descriptor range, not the whole heap (#61) 2026-06-16 18:56:46 +00:00

Merged #100 perf(image): batch final mip-chain layout transition (#70) 2026-06-16 18:31:16 +00:00

Merged #98 perf(rt): high-water-mark growth for TLAS host-input buffers (#64) 2026-06-16 18:24:49 +00:00

Merged #97 perf(pipeline): shared, disk-persisted VkPipelineCache (#69) 2026-06-16 18:24:03 +00:00

Merged #96 perf(buffer): capacity-reuse in VulkanBuffer::Resize (#63) 2026-06-16 18:22:38 +00:00

Merged #95 feat(device): runtime upload-strategy helper PreferDirectDeviceWrite (#89) 2026-06-16 17:23:59 +00:00

Merged #93 perf(ui): additive DispatchFused to collapse consecutive UI passes (#47) 2026-06-16 17:12:21 +00:00

Merged #94 perf(vulkan-buffer): skip flush/invalidate on coherent memory (#60) 2026-06-16 17:07:43 +00:00

Merged #92 perf(font): cache per-codepoint advances in font units (#57) 2026-06-16 17:04:09 +00:00

Merged #91 perf(ui): gate per-pixel clip compares behind a flags bit (#50) 2026-06-16 16:59:48 +00:00

Merged #90 perf(input-field): O(n) cursor hit test via Font::NearestCursorByte (#56) 2026-06-16 16:55:35 +00:00

Merged #88 perf(ui): scope inter-dispatch barrier to the swapchain image (#48) 2026-06-16 16:54:34 +00:00

Merged #87 fix(device): preferred mask + required-only fallback for GetMemoryType (#59) 2026-06-16 16:04:21 +00:00

Merged #85 perf(ui): cooperative shared-memory tile culling in UI compute shaders 2026-06-16 16:03:16 +00:00

Merged #86 fix(image): scope sampled-image upload barriers to the real consumer stage (#54) 2026-06-16 16:01:51 +00:00

Merged #84 perf(text): fold Ensure+Lookup into FontAtlas::EnsureAndGet (#53) 2026-06-16 15:44:21 +00:00

Merged #83 perf(font): upload only the dirty sub-rect of the glyph atlas (#51) 2026-06-16 15:43:23 +00:00

Merged #81 feat(window): multi-frame-in-flight frame pacing (#40) 2026-06-16 15:42:14 +00:00

Merged #82 perf(text): cache shaped runs in ShapeText (#52) 2026-06-16 15:41:36 +00:00

Merged #80 perf(shaders): drop nonuniformEXT on text font slots 2026-06-16 15:29:51 +00:00

Merged #79 perf(window): drop dead present-mode queries from swapchain recreate (#45) 2026-06-16 15:29:00 +00:00

Merged #77 perf(window): cache per-frame heap-bind structs across frames 2026-06-16 15:27:55 +00:00

Merged #78 perf(window): hoist invariant per-frame Vulkan info structs to members 2026-06-16 15:27:49 +00:00

Merged #76 perf(window): ring buffer for CRAFTER_TIMING frame times (#44) 2026-06-16 15:25:58 +00:00

Merged #39 feat(rt): BuildProcedural — accept a device AABB buffer as build input (#37) 2026-06-16 14:13:10 +00:00

Merged #38 feat(vulkan-rt): BLAS build options — fast-build/fast-trace + in-place refit (#36) 2026-06-16 13:38:35 +00:00

Merged #35 feat(vulkan-rt): Mesh::BuildProcedural — AABB (procedural) BLAS build path (#33) 2026-06-13 00:18:31 +00:00

Merged #34 feat(input): wire native mouse-wheel scroll on Wayland + Win32, normalize all backends to ±1/detent 2026-06-13 00:10:53 +00:00

Merged #31 feat(webgpu-rt): atomic pixel accumulator + raysPerPixel — >1 ray per pixel per bounce (#30) 2026-06-09 22:46:24 +00:00

Merged #28 feat(webgpu): HDR post-process primitives for bloom (#27) 2026-06-09 12:56:03 +00:00

69 issues closed from 2 users

Closed #155 Measure peformance improvements 2026-06-18 19:36:37 +00:00

Closed #153 Vulkan validation errors: per-frame acquire-barrier dstAccessMask/stage mismatch + setup-path cmd-buffer/buffer lifecycle 2026-06-18 18:05:06 +00:00

Closed #134 [perf] Win32 StartSync busy-spins one core at 100% when not updating (Window.cpp) 2026-06-18 14:01:29 +00:00

Closed #133 [perf] WebGPU full-buffer readback copies entire allocation even for a small prefix (WebGPUBuffer.cppm) 2026-06-18 14:01:19 +00:00

Closed #131 [perf] WebGPU GPU-owned instance runs upload one writeBuffer per element (RenderingElement3D-WebGPU.cpp) 2026-06-18 14:00:11 +00:00

Closed #130 [perf] WebGPU metadata flush uploads full 256 KB padded buffer every frame (RenderingElement3D-WebGPU.cpp) 2026-06-18 13:56:46 +00:00

Closed #132 [perf] UIRenderer::Dispatch heap-allocates a std::vector per custom dispatch (UI-WebGPU.cpp) 2026-06-18 13:54:36 +00:00

Closed #129 [perf] FontAtlas dirty-rect uses one union bounding box (FontAtlas.cpp) 2026-06-18 13:36:33 +00:00

Closed #128 [perf] DrawInputField recomputes caret X via full-prefix walk every frame (InputField.cpp) 2026-06-18 13:30:33 +00:00

Closed #123 [perf] shapedRuns_ eviction is all-or-nothing clear() at cap (UI-Shared.cpp) 2026-06-18 13:30:08 +00:00

Closed #124 [perf] Single-lane serial stream compaction stalls 63/64 threads — use subgroup prefix-sum (ui-fused.comp.glsl) 2026-06-18 13:27:30 +00:00

Closed #127 [perf] Unconditional destination imageLoad/imageStore before early-out (ui-quads.comp.glsl) 2026-06-18 13:27:08 +00:00

Closed #125 [perf] Hoist per-item/per-glyph loop-invariant math into shared memory at load (ui-images/text/fused) 2026-06-18 13:22:46 +00:00

Closed #122 [perf] ShapeText heap-allocates the cache-key std::string on every call, including hits (UI-Shared.cpp) 2026-06-18 13:19:44 +00:00

Closed #118 [perf] TLAS instance+metadata upload: O(n) rebuild + whole-buffer flush every frame (RenderingElement3D.cpp) 2026-06-18 13:07:44 +00:00

Closed #120 [perf] Staged UploadDeviceLocal allocates+frees a fresh staging buffer every call (VulkanBuffer.cppm) 2026-06-17 19:52:04 +00:00

Closed #119 [perf] Mesh::Refit re-uploads the full vertex buffer every frame (Mesh.cpp) 2026-06-17 19:51:26 +00:00

Closed #115 [perf] Frame-loop barriers use ALL_COMMANDS scope (inter-pass + acquire/present) (Window.cpp) 2026-06-17 19:45:14 +00:00

Closed #114 [perf] Per-image dedicated alloc + leaked persistent staging buffer (ImageVulkan.cppm) 2026-06-17 19:41:07 +00:00

Closed #116 [perf] ReclaimDeletions compacts the whole deletion queue every frame (Device.cpp) 2026-06-17 19:38:28 +00:00

Closed #126 [perf] Per-glyph-constant SDF AA scale recomputed per pixel (ui-text.comp.glsl) 2026-06-17 19:26:03 +00:00

Closed #121 [perf] Per-frame whole-buffer flush of TLAS instance+metadata buffers (RenderingElement3D.cpp) 2026-06-17 19:26:02 +00:00

Closed #117 [perf] Acquire/present barriers use ALL_COMMANDS scope (Window.cpp) 2026-06-17 19:21:54 +00:00

Closed #113 [perf] No buffer suballocator — vkAllocateMemory per buffer (VulkanBuffer.cppm) 2026-06-17 19:19:25 +00:00

Closed #110 MeshDecompressStagingRelease test fails on master: deletionQueue.size() != 1 after compressed Build 2026-06-17 18:51:19 +00:00

Closed #73 [perf] Mesh vertex/index/aabb are HOST_VISIBLE — place device-local (direct on ReBAR, staged otherwise) 2026-06-17 18:05:57 +00:00

Closed #75 [perf] TLAS metadataBuffer is HOST_VISIBLE, CPU-written + shader-read every frame 2026-06-17 17:50:55 +00:00

Closed #74 [perf] SaveFrame readback uses HOST_COHERENT (write-combined) — should be HOST_CACHED 2026-06-17 17:45:17 +00:00

Closed #72 [perf] RT shader binding table is HOST_VISIBLE, GPU-read every traceRays 2026-06-17 17:42:03 +00:00

Closed #67 [perf] compressedStaging reallocated and kept per compressed Build 2026-06-17 17:41:20 +00:00

Closed #65 [perf][MEDIUM] TLAS instance buffer is HOST_VISIBLE, read directly as AS build input 2026-06-17 17:38:14 +00:00

Closed #66 [perf] Per-mesh dedicated scratch buffer (VRAM waste) 2026-06-17 17:36:44 +00:00

Closed #68 [perf][LOW] Refit re-uploads immutable index buffer on UPDATE 2026-06-17 17:34:57 +00:00

Closed #71 [perf][LOW] Compressed-asset Update re-Resizes both staging buffers every call 2026-06-17 17:29:18 +00:00

Closed #101 [infra] Fence-keyed deferred resource-deletion queue (UAF since #40; unblocks #63/#66) 2026-06-17 13:21:48 +00:00

Closed #61 [perf][LOW] Per-descriptor write flushes all numFrames heap copies whole-size 2026-06-16 18:56:46 +00:00

Closed #70 [perf][LOW] Per-mip layout transitions issued one-at-a-time 2026-06-16 18:31:16 +00:00

Closed #64 [perf] TLAS instance/metadata buffers reallocated on instance-count change 2026-06-16 18:24:49 +00:00

Closed #69 [perf][LOW] No VkPipelineCache passed to vkCreateComputePipelines 2026-06-16 18:24:03 +00:00

Closed #63 [perf] VulkanBuffer::Resize always destroys+reallocates 2026-06-16 18:22:38 +00:00

Closed #62 [perf] Per-allocation vkAllocateMemory, no suballocator 2026-06-16 18:09:44 +00:00

Closed #89 [perf] Runtime upload-strategy helper: direct HOST_VISIBLE|DEVICE_LOCAL vs staging (ReBAR-aware) 2026-06-16 17:23:59 +00:00

Closed #47 [perf][MEDIUM] Add DispatchFused (additive) to collapse consecutive UI passes to one load/store 2026-06-16 17:12:21 +00:00

Closed #58 [perf][MEDIUM] Descriptor heaps force HOST_VISIBLE|DEVICE_LOCAL with no fallback 2026-06-16 17:09:31 +00:00

Closed #60 [perf][LOW] FlushDevice always flushes even on coherent memory 2026-06-16 17:07:43 +00:00

Closed #57 [perf][LOW] GetLineWidth/ScaleForSize recompute scale + per-glyph HMetrics uncached 2026-06-16 17:04:09 +00:00

Closed #50 [perf][LOW] uiResolveScreenPixel runs clip-rect compares even when unclipped 2026-06-16 16:59:48 +00:00

Closed #56 [perf][LOW] InputField hit-test is O(n^2): re-measures whole prefix per char 2026-06-16 16:55:35 +00:00

Closed #48 [perf][LOW] Narrow per-dispatch UI barrier to an image-subresource barrier (full removal: #47) 2026-06-16 16:54:34 +00:00

Closed #59 [perf][LOW] GetMemoryType returns first match, no preferred/fallback distinction 2026-06-16 16:04:21 +00:00

Closed #46 [perf][HIGH] UI tiles scan the full item list — no spatial culling 2026-06-16 16:03:16 +00:00

Closed #54 [perf][MEDIUM] TransitionImageLayout hardcodes RAY_TRACING stage for all shader reads 2026-06-16 16:01:51 +00:00

Closed #53 [perf][LOW] Ensure()+Lookup() do two hash-map probes per glyph 2026-06-16 15:44:21 +00:00

Closed #51 [perf][MEDIUM] Full 1 MiB font atlas re-upload on any single new glyph 2026-06-16 15:43:23 +00:00

Closed #40 [perf][HIGH] Frame-in-flight: per-frame fences + per-frame semaphores (remove per-frame vkQueueWaitIdle) 2026-06-16 15:42:14 +00:00

Closed #52 [perf][MEDIUM] Per-frame text re-shaping for static strings 2026-06-16 15:41:36 +00:00

Closed #49 [perf][LOW] nonuniformEXT on dynamically-uniform font slots (text shader) 2026-06-16 15:29:51 +00:00

Closed #45 [perf][LOW] Resize path: dead present-mode queries + presentModes vector 2026-06-16 15:29:00 +00:00

Closed #42 [perf][LOW] Descriptor-heap bind recorded unconditionally every frame 2026-06-16 15:27:55 +00:00

Closed #43 [perf][LOW] Invariant Vulkan structs rebuilt every frame 2026-06-16 15:27:49 +00:00

Closed #44 [perf][LOW] CRAFTER_TIMING frame-time history uses erase(begin()) every frame 2026-06-16 15:25:58 +00:00

Closed #41 [perf][MEDIUM] Single shared semaphore pair prevents multiple frames in flight 2026-06-16 15:14:45 +00:00

Closed #37 BuildProcedural: accept a device buffer as AABB build input (no host round-trip) 2026-06-16 14:13:10 +00:00

Closed #36 Accelration structure build options 2026-06-16 13:38:35 +00:00

Closed #33 Vulkan: Mesh::BuildProcedural — AABB (procedural) BLAS build path to match WebGPU 2026-06-13 00:18:31 +00:00

Closed #32 Mouse scroll never reaches Input on native: Wayland PointerListenerHandleAxis is an empty stub, Win32 lacks WM_MOUSEWHEEL 2026-06-13 00:10:53 +00:00

Closed #30 Wavefront RT: atomic pixel accumulator to allow >1 ray per pixel per bounce 2026-06-09 22:46:24 +00:00

Closed #29 Smoke doesn't move 2026-06-09 15:10:37 +00:00

Closed #27 Bloom / HDR post-process primitives for the WebGPU backend 2026-06-09 12:56:03 +00:00

70 issues created by 1 user

Opened #27 Bloom / HDR post-process primitives for the WebGPU backend 2026-06-09 12:31:14 +00:00

Opened #29 Smoke doesn't move 2026-06-09 15:10:14 +00:00

Opened #30 Wavefront RT: atomic pixel accumulator to allow >1 ray per pixel per bounce 2026-06-09 22:25:00 +00:00

Opened #32 Mouse scroll never reaches Input on native: Wayland PointerListenerHandleAxis is an empty stub, Win32 lacks WM_MOUSEWHEEL 2026-06-11 12:20:25 +00:00

Opened #33 Vulkan: Mesh::BuildProcedural — AABB (procedural) BLAS build path to match WebGPU 2026-06-12 11:39:21 +00:00

Opened #36 Accelration structure build options 2026-06-16 13:22:37 +00:00

Opened #37 BuildProcedural: accept a device buffer as AABB build input (no host round-trip) 2026-06-16 13:31:40 +00:00

Opened #40 [perf][HIGH] Frame-in-flight: per-frame fences + per-frame semaphores (remove per-frame vkQueueWaitIdle) 2026-06-16 14:51:29 +00:00

Opened #41 [perf][MEDIUM] Single shared semaphore pair prevents multiple frames in flight 2026-06-16 14:51:29 +00:00

Opened #42 [perf][LOW] Descriptor-heap bind recorded unconditionally every frame 2026-06-16 14:51:30 +00:00

Opened #43 [perf][LOW] Invariant Vulkan structs rebuilt every frame 2026-06-16 14:51:30 +00:00

Opened #44 [perf][LOW] CRAFTER_TIMING frame-time history uses erase(begin()) every frame 2026-06-16 14:51:30 +00:00

Opened #45 [perf][LOW] Resize path: dead present-mode queries + presentModes vector 2026-06-16 14:51:30 +00:00

Opened #46 [perf][HIGH] UI tiles scan the full item list — no spatial culling 2026-06-16 14:51:30 +00:00

Opened #47 [perf][MEDIUM] Add DispatchFused (additive) to collapse consecutive UI passes to one load/store 2026-06-16 14:51:31 +00:00

Opened #48 [perf][LOW] Narrow per-dispatch UI barrier to an image-subresource barrier (full removal: #47) 2026-06-16 14:51:31 +00:00

Opened #49 [perf][LOW] nonuniformEXT on dynamically-uniform font slots (text shader) 2026-06-16 14:51:31 +00:00

Opened #50 [perf][LOW] uiResolveScreenPixel runs clip-rect compares even when unclipped 2026-06-16 14:51:31 +00:00

Opened #51 [perf][MEDIUM] Full 1 MiB font atlas re-upload on any single new glyph 2026-06-16 14:51:31 +00:00

Opened #52 [perf][MEDIUM] Per-frame text re-shaping for static strings 2026-06-16 14:51:31 +00:00

Opened #53 [perf][LOW] Ensure()+Lookup() do two hash-map probes per glyph 2026-06-16 14:51:32 +00:00

Opened #54 [perf][MEDIUM] TransitionImageLayout hardcodes RAY_TRACING stage for all shader reads 2026-06-16 14:51:32 +00:00

Opened #55 [robustness] Font atlas has no eviction/repack; ShelfPlace fails permanently once full 2026-06-16 14:51:32 +00:00

Opened #56 [perf][LOW] InputField hit-test is O(n^2): re-measures whole prefix per char 2026-06-16 14:51:32 +00:00

Opened #57 [perf][LOW] GetLineWidth/ScaleForSize recompute scale + per-glyph HMetrics uncached 2026-06-16 14:51:32 +00:00

Opened #58 [perf][MEDIUM] Descriptor heaps force HOST_VISIBLE|DEVICE_LOCAL with no fallback 2026-06-16 14:51:33 +00:00

Opened #59 [perf][LOW] GetMemoryType returns first match, no preferred/fallback distinction 2026-06-16 14:51:33 +00:00

Opened #60 [perf][LOW] FlushDevice always flushes even on coherent memory 2026-06-16 14:51:33 +00:00

Opened #61 [perf][LOW] Per-descriptor write flushes all numFrames heap copies whole-size 2026-06-16 14:51:33 +00:00

Opened #62 [perf] Per-allocation vkAllocateMemory, no suballocator 2026-06-16 14:51:33 +00:00

Opened #63 [perf] VulkanBuffer::Resize always destroys+reallocates 2026-06-16 14:51:33 +00:00

Opened #64 [perf] TLAS instance/metadata buffers reallocated on instance-count change 2026-06-16 14:51:34 +00:00

Opened #65 [perf][MEDIUM] TLAS instance buffer is HOST_VISIBLE, read directly as AS build input 2026-06-16 14:51:34 +00:00

Opened #66 [perf] Per-mesh dedicated scratch buffer (VRAM waste) 2026-06-16 14:51:34 +00:00

Opened #67 [perf] compressedStaging reallocated and kept per compressed Build 2026-06-16 14:51:34 +00:00

Opened #68 [perf][LOW] Refit re-uploads immutable index buffer on UPDATE 2026-06-16 14:51:34 +00:00

Opened #69 [perf][LOW] No VkPipelineCache passed to vkCreateComputePipelines 2026-06-16 14:51:35 +00:00

Opened #70 [perf][LOW] Per-mip layout transitions issued one-at-a-time 2026-06-16 14:51:35 +00:00

Opened #71 [perf][LOW] Compressed-asset Update re-Resizes both staging buffers every call 2026-06-16 14:51:35 +00:00

Opened #72 [perf] RT shader binding table is HOST_VISIBLE, GPU-read every traceRays 2026-06-16 15:02:03 +00:00

Opened #73 [perf] Mesh vertex/index/aabb are HOST_VISIBLE — place device-local (direct on ReBAR, staged otherwise) 2026-06-16 15:10:54 +00:00

Opened #74 [perf] SaveFrame readback uses HOST_COHERENT (write-combined) — should be HOST_CACHED 2026-06-16 15:10:54 +00:00

Opened #75 [perf] TLAS metadataBuffer is HOST_VISIBLE, CPU-written + shader-read every frame 2026-06-16 15:10:54 +00:00

Opened #89 [perf] Runtime upload-strategy helper: direct HOST_VISIBLE|DEVICE_LOCAL vs staging (ReBAR-aware) 2026-06-16 16:55:02 +00:00

Opened #101 [infra] Fence-keyed deferred resource-deletion queue (UAF since #40; unblocks #63/#66) 2026-06-16 18:47:49 +00:00

Opened #110 MeshDecompressStagingRelease test fails on master: deletionQueue.size() != 1 after compressed Build 2026-06-17 17:50:31 +00:00

Opened #113 [perf] No buffer suballocator — vkAllocateMemory per buffer (VulkanBuffer.cppm) 2026-06-17 19:16:02 +00:00

Opened #114 [perf] Per-image dedicated alloc + leaked persistent staging buffer (ImageVulkan.cppm) 2026-06-17 19:18:52 +00:00

Opened #115 [perf] Frame-loop barriers use ALL_COMMANDS scope (inter-pass + acquire/present) (Window.cpp) 2026-06-17 19:18:52 +00:00

Opened #116 [perf] ReclaimDeletions compacts the whole deletion queue every frame (Device.cpp) 2026-06-17 19:18:53 +00:00

Opened #117 [perf] Acquire/present barriers use ALL_COMMANDS scope (Window.cpp) 2026-06-17 19:18:53 +00:00

Opened #118 [perf] TLAS instance+metadata upload: O(n) rebuild + whole-buffer flush every frame (RenderingElement3D.cpp) 2026-06-17 19:18:53 +00:00

Opened #119 [perf] Mesh::Refit re-uploads the full vertex buffer every frame (Mesh.cpp) 2026-06-17 19:18:53 +00:00

Opened #120 [perf] Staged UploadDeviceLocal allocates+frees a fresh staging buffer every call (VulkanBuffer.cppm) 2026-06-17 19:18:53 +00:00

Opened #121 [perf] Per-frame whole-buffer flush of TLAS instance+metadata buffers (RenderingElement3D.cpp) 2026-06-17 19:18:54 +00:00

Opened #122 [perf] ShapeText heap-allocates the cache-key std::string on every call, including hits (UI-Shared.cpp) 2026-06-17 19:18:54 +00:00

Opened #123 [perf] shapedRuns_ eviction is all-or-nothing clear() at cap (UI-Shared.cpp) 2026-06-17 19:18:54 +00:00

Opened #124 [perf] Single-lane serial stream compaction stalls 63/64 threads — use subgroup prefix-sum (ui-fused.comp.glsl) 2026-06-17 19:18:54 +00:00

Opened #125 [perf] Hoist per-item/per-glyph loop-invariant math into shared memory at load (ui-images/text/fused) 2026-06-17 19:18:54 +00:00

Opened #126 [perf] Per-glyph-constant SDF AA scale recomputed per pixel (ui-text.comp.glsl) 2026-06-17 19:18:55 +00:00

Opened #127 [perf] Unconditional destination imageLoad/imageStore before early-out (ui-quads.comp.glsl) 2026-06-17 19:18:55 +00:00

Opened #128 [perf] DrawInputField recomputes caret X via full-prefix walk every frame (InputField.cpp) 2026-06-17 19:18:55 +00:00

Opened #129 [perf] FontAtlas dirty-rect uses one union bounding box (FontAtlas.cpp) 2026-06-17 19:18:55 +00:00

Opened #130 [perf] WebGPU metadata flush uploads full 256 KB padded buffer every frame (RenderingElement3D-WebGPU.cpp) 2026-06-17 19:18:55 +00:00

Opened #131 [perf] WebGPU GPU-owned instance runs upload one writeBuffer per element (RenderingElement3D-WebGPU.cpp) 2026-06-17 19:18:55 +00:00

Opened #132 [perf] UIRenderer::Dispatch heap-allocates a std::vector per custom dispatch (UI-WebGPU.cpp) 2026-06-17 19:18:56 +00:00

Opened #133 [perf] WebGPU full-buffer readback copies entire allocation even for a small prefix (WebGPUBuffer.cppm) 2026-06-17 19:18:56 +00:00

Opened #134 [perf] Win32 StartSync busy-spins one core at 100% when not updating (Window.cpp) 2026-06-17 19:18:56 +00:00

Opened #153 Vulkan validation errors: per-frame acquire-barrier dstAccessMask/stage mismatch + setup-path cmd-buffer/buffer lifecycle 2026-06-18 16:40:09 +00:00

Opened #155 Measure peformance improvements 2026-06-18 19:07:09 +00:00