Commit graph

30 commits

Author SHA1 Message Date
janis ad22ff8c76
datastructures crate: intervalmap 2026-10-30 01:00:31 +01:00
janis afb322fa93
rendergraph: dynamic-rendering render passes, single-pass compiler, perf
- Add BeginRendering/EndRendering commands with imported/created attachment
  views, view plumbing, and aspect-gated depth/stencil slots
- Derive and validate render-pass spans at compile time; contract spans into
  single DAG nodes before hazard analysis; hoist cross-boundary barriers to
  pass begins with in-pass policy and created-view resolution
- Replace the four-pass ordering pipeline with a single command walk
  (build_command_orderings): span derivation, validation, lifetime-only
  injection, dependency edges, and Kahn batching in one pass; batches are
  ranges into execution_order and RenderPassSpan keeps only begin/end
- Perf: node-collapsed frontier analysis, dense command/resource indexing
  (no SipHash on hot paths), inline barrier storage, exact preallocation,
  lazy Kahn ready heap, scoped barrier fast paths
- Scope buffer and image alias barriers to the incoming resource per the
  Vulkan resource-memory-aliasing rules (availability unscoped, visibility
  scoped to the new owner)
- Add criterion compile benchmarks (two_pass/{no_pass,pass}/per_{20,50,100})
2026-10-29 00:51:52 +01:00
janis 5e4bc0ccf0
rendergraph: correct transient-resource aliasing with pooled placement
Lifetimes derive from the real dependency ordering (retained DAG +
compile-time happens-before closure), not command-index intervals.
Aliasing is restricted to the single-queue contract; alias reuse is
synchronized with memory/image barriers anchored at first-use commands.

- renderer_device: aliasable shared allocations (CAN_ALIAS), memory-
  requirements queries incl. dedicated hints, offset-aware
  bind_buffer/image_memory2, grouped bind under one allocator lock
- renderer_resources: unallocated resource creation, requirements
  cached in Allocation::Unmanaged (OnceLock), MemoryGroup pooling with
  intersecting memoryTypeBits, bind-time validation
- renderer_rendergraph: retained dependency DAG, happens_before
  closure, batch lifetimes, Placement type, plan_placements with
  pooled aliasing (first-fit over offset-sorted ranges, pool classes
  split by bufferImageGranularity), alias-barrier construction,
  placement/bind error variants
- perf: quadratic compile/resolve paths eliminated (per-resource
  indexing, frontier caching, backward-scan prune, cached recording
  index, recorder scratch reuse); single requirements query per
  resource through plan/validate/bind
- design plan + GPU-gated validation tests
2026-10-27 01:57:27 +01:00
janis e116851b90
feat: migrate GPU memory allocator from gpu-allocator to VMA (vk-mem)
- Replace gpu-allocator with vk-mem 0.5.0 (VMA 3.3.0) in renderer_device
- Add public GpuAllocation wrapper, MemoryLocation, AllocationDesc, and
  allocate_for_buffer/image + bind_buffer/image_memory helpers
- Restrict CPU-mapped allocations to HOST_VISIBLE|HOST_COHERENT memory types
- Handle guards: raw buffer/image handles owned before allocation so failure
  paths never leak
- Use renderer_device::device::MemoryLocation across renderer, renderer_resources,
  and renderer_rendergraph; remove all gpu-allocator dependencies
- Error on dedicated allocation below Vulkan 1.1 instead of silent downgrade
- Add Send/Sync asserts, coherent-mapping and dedicated-allocation validation
  tests; update AGENTS.md docs
2026-10-26 13:44:17 +01:00
janis f9c18bcd3c
newtype queue family index 2026-10-24 21:37:07 +02:00
janis a173cf18ff
extract resources into renderer_resources 2026-10-24 21:16:54 +02:00
janis ce46ca1801
extract device into renderer_device
add deviceref macro
2026-10-24 17:36:43 +02:00
janis 65bae2196a
add renderer proc macros crate 2026-10-24 13:15:04 +02:00
janis e2f1ceffd8
disable unused deps 2026-10-24 02:41:42 +02:00
janis f6af46e7f4
update to latest bevy (local checkout) 2026-10-24 02:16:51 +02:00
janis 00c67d5bdf
...........kkkkkkk yeah.. 2026-10-24 01:55:27 +02:00
janis 44ff4c4839 pipeline cache 2026-04-04 15:46:17 +02:00
janis b00b1b3151 fix egui ? 2026-04-03 03:13:51 +02:00
janis 55d22e3164 image? alloc? bruh.. 2026-04-02 13:32:49 +02:00
janis c1c69d5e54 idk? like.. updating my understanding of the code base after half a year of not touching it 2026-03-26 12:08:48 +01:00
janis fd1855dc73 bevy vulkan render crate 2025-09-20 15:27:47 +02:00
janis 760366a0e4 dependencies 2025-09-20 15:27:39 +02:00
Janis cdb18da722 renderer: thread-local commandpools 2025-01-28 02:30:57 +01:00
Janis 8a7bfed29e font rendering test, ahash, F32 new type 2025-01-27 17:05:43 +01:00
Janis b06c76f1e1 reorder crate dependencies, workspace dependencies 2025-01-19 21:18:06 +01:00
Janis 30269f7bd2 mold + debug-release profile 2025-01-09 21:52:36 +01:00
Janis adfcdd37c1 cargo: resolve indexmap and petgraph dependency conflict 2025-01-03 00:18:30 +01:00
Janis 87e6361323 tracing info/debug changes 2025-01-01 22:39:19 +01:00
Janis e8bcaae2a7 render egui to the screen (finally) 2024-12-31 11:19:23 +01:00
Janis f0fff72bce idek so much when i thought i was only doing egui integration
egui cant draw yet, but textures are loaded/updated
2024-12-29 15:48:55 +01:00
Janis 7b7badd4d4 removed winit dependency from renderer and included raw window handle 2024-12-21 17:29:08 +01:00
Janis 29258aed7b stuff? 2024-12-15 22:24:18 +01:00
Janis 99c86c0c85 multi-window 2024-12-15 02:49:44 +01:00
Janis 052fdc4e3e stuff..... building & rebuilding swapchain 2024-12-14 23:19:33 +01:00
Janis b7ac53ddca initial commit 2024-10-19 00:21:43 +02:00