Skip to main content

dynamis_broadphase/
streams.rs

1use 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}