dynamis_broadphase/
streams.rs1use crate::BroadphaseDomain;
2use dynamis_abi::GridEntryRecord;
3use dynamis_domain::Domain;
4use dynamis_domain::streams;
5use dynamis_gpu::Contents;
6
7streams! {
8 BroadphaseStreams, BroadphaseStream, BroadphaseDemand, BroadphaseDomain::ID, demand,
9 demand {
10 entries: u32,
11 pairs: u32,
12 sort: u32,
13 }
14 streams {
15 entry_keys, EntryKeys: "grid entry keys", u32, 1, Contents::Scratch, demand.entries;
16 entry_order, EntryOrder: "grid entry order", u32, 1, Contents::Scratch, demand.entries;
17 entries, Entries: "grid entries", GridEntryRecord, 1, Contents::Scratch, demand.entries;
18 pair_major, PairMajor: "pairs major", u32, 1, Contents::Scratch, demand.pairs;
19 pair_minor, PairMinor: "pairs minor", u32, 1, Contents::Scratch, demand.pairs;
20 sort_dummy, SortDummy: "sort key dummy", u32, 1, Contents::Scratch, demand.sort;
21 sort_scratch_major, SortScratchMajor: "sort scratch major", u32, 1, Contents::Scratch, demand.sort;
22 sort_scratch_minor, SortScratchMinor: "sort scratch minor", u32, 1, Contents::Scratch, demand.sort;
23 sort_scratch_payload, SortScratchPayload: "sort scratch payload", u32, 1, Contents::Scratch, demand.sort;
24 }
25}
26
27pub fn entry_capacity<R: dynamis_gpu::Resources>(resources: &R) -> u32 {
28 resources.slots(BroadphaseStream::EntryKeys.into())
29}
30
31pub fn pair_capacity<R: dynamis_gpu::Resources>(resources: &R) -> u32 {
32 resources.slots(BroadphaseStream::PairMajor.into())
33}
34
35pub fn sort_capacity<R: dynamis_gpu::Resources>(resources: &R) -> u32 {
36 resources.slots(BroadphaseStream::SortScratchMajor.into())
37}