|
1919 | 1919 | <span id="1919">1919</span>
|
1920 | 1920 | <span id="1920">1920</span>
|
1921 | 1921 | <span id="1921">1921</span>
|
| 1922 | +<span id="1922">1922</span> |
| 1923 | +<span id="1923">1923</span> |
| 1924 | +<span id="1924">1924</span> |
| 1925 | +<span id="1925">1925</span> |
| 1926 | +<span id="1926">1926</span> |
| 1927 | +<span id="1927">1927</span> |
| 1928 | +<span id="1928">1928</span> |
| 1929 | +<span id="1929">1929</span> |
1922 | 1930 | </pre><pre class="rust"><code><span class="kw">use </span><span class="kw">super</span>::conv;
|
1923 | 1931 |
|
1924 | 1932 | <span class="kw">use </span>arrayvec::ArrayVec;
|
1925 | 1933 | <span class="kw">use </span>ash::{extensions::khr, vk};
|
1926 |
| -<span class="kw">use </span>inplace_it::inplace_or_alloc_from_iter; |
1927 | 1934 | <span class="kw">use </span>parking_lot::Mutex;
|
1928 | 1935 |
|
1929 | 1936 | <span class="kw">use </span>std::{
|
|
2383 | 2390 | layouts: <span class="kw">impl </span>ExactSizeIterator<Item = <span class="kw-2">&</span><span class="lifetime">'a </span>vk::DescriptorSetLayout>,
|
2384 | 2391 | sets: <span class="kw-2">&mut </span><span class="kw">impl </span>Extend<vk::DescriptorSet>,
|
2385 | 2392 | ) -> <span class="prelude-ty">Result</span><(), gpu_descriptor::DeviceAllocationError> {
|
2386 |
| - <span class="kw">let </span>result = inplace_or_alloc_from_iter(layouts.cloned(), |layouts_slice| { |
2387 |
| - <span class="kw">let </span>vk_info = vk::DescriptorSetAllocateInfo::builder() |
| 2393 | + <span class="kw">let </span>result = <span class="self">self</span>.raw.allocate_descriptor_sets( |
| 2394 | + <span class="kw-2">&</span>vk::DescriptorSetAllocateInfo::builder() |
2388 | 2395 | .descriptor_pool(<span class="kw-2">*</span>pool)
|
2389 |
| - .set_layouts(layouts_slice) |
2390 |
| - .build(); |
2391 |
| - <span class="self">self</span>.raw.allocate_descriptor_sets(<span class="kw-2">&</span>vk_info) |
2392 |
| - }); |
| 2396 | + .set_layouts( |
| 2397 | + <span class="kw-2">&</span>smallvec::SmallVec::<[vk::DescriptorSetLayout; <span class="number">32</span>]>::from_iter( |
| 2398 | + layouts.cloned(), |
| 2399 | + ), |
| 2400 | + ) |
| 2401 | + .build(), |
| 2402 | + ); |
2393 | 2403 |
|
2394 | 2404 | <span class="kw">match </span>result {
|
2395 | 2405 | <span class="prelude-val">Ok</span>(vk_sets) => {
|
|
2418 | 2428 | pool: <span class="kw-2">&mut </span>vk::DescriptorPool,
|
2419 | 2429 | sets: <span class="kw">impl </span>Iterator<Item = vk::DescriptorSet>,
|
2420 | 2430 | ) {
|
2421 |
| - <span class="kw">let </span>result = inplace_or_alloc_from_iter(sets, |sets_slice| { |
2422 |
| - <span class="self">self</span>.raw.free_descriptor_sets(<span class="kw-2">*</span>pool, sets_slice) |
2423 |
| - }); |
| 2431 | + <span class="kw">let </span>result = <span class="self">self</span>.raw.free_descriptor_sets( |
| 2432 | + <span class="kw-2">*</span>pool, |
| 2433 | + <span class="kw-2">&</span>smallvec::SmallVec::<[vk::DescriptorSet; <span class="number">32</span>]>::from_iter(sets), |
| 2434 | + ); |
2424 | 2435 | <span class="kw">match </span>result {
|
2425 | 2436 | <span class="prelude-val">Ok</span>(()) => {}
|
2426 | 2437 | <span class="prelude-val">Err</span>(err) => <span class="macro">log::error!</span>(<span class="string">"free_descriptor_sets: {:?}"</span>, err),
|
|
2748 | 2759 | </span>I: Iterator<Item = <span class="kw">crate</span>::MemoryRange>,
|
2749 | 2760 | {
|
2750 | 2761 | <span class="kw">let </span>vk_ranges = <span class="self">self</span>.shared.make_memory_ranges(buffer, ranges);
|
2751 |
| - inplace_or_alloc_from_iter(vk_ranges, |array| { |
2752 |
| - <span class="self">self</span>.shared.raw.flush_mapped_memory_ranges(array).unwrap() |
2753 |
| - }); |
| 2762 | + |
| 2763 | + <span class="self">self</span>.shared |
| 2764 | + .raw |
| 2765 | + .flush_mapped_memory_ranges( |
| 2766 | + <span class="kw-2">&</span>smallvec::SmallVec::<[vk::MappedMemoryRange; <span class="number">32</span>]>::from_iter(vk_ranges), |
| 2767 | + ) |
| 2768 | + .unwrap(); |
2754 | 2769 | }
|
2755 | 2770 | <span class="kw">unsafe fn </span>invalidate_mapped_ranges<I>(<span class="kw-2">&</span><span class="self">self</span>, buffer: <span class="kw-2">&</span><span class="kw">super</span>::Buffer, ranges: I)
|
2756 | 2771 | <span class="kw">where
|
2757 | 2772 | </span>I: Iterator<Item = <span class="kw">crate</span>::MemoryRange>,
|
2758 | 2773 | {
|
2759 | 2774 | <span class="kw">let </span>vk_ranges = <span class="self">self</span>.shared.make_memory_ranges(buffer, ranges);
|
2760 |
| - inplace_or_alloc_from_iter(vk_ranges, |array| { |
2761 |
| - <span class="self">self</span>.shared |
2762 |
| - .raw |
2763 |
| - .invalidate_mapped_memory_ranges(array) |
2764 |
| - .unwrap() |
2765 |
| - }); |
| 2775 | + |
| 2776 | + <span class="self">self</span>.shared |
| 2777 | + .raw |
| 2778 | + .invalidate_mapped_memory_ranges( |
| 2779 | + <span class="kw-2">&</span>smallvec::SmallVec::<[vk::MappedMemoryRange; <span class="number">32</span>]>::from_iter(vk_ranges), |
| 2780 | + ) |
| 2781 | + .unwrap(); |
2766 | 2782 | }
|
2767 | 2783 |
|
2768 | 2784 | <span class="kw">unsafe fn </span>create_texture(
|
|
3044 | 3060 | }
|
3045 | 3061 | }
|
3046 | 3062 |
|
3047 |
| - <span class="comment">//Note: not bothering with inplace_or_alloc_from_iter her as it's low frequency |
| 3063 | + <span class="comment">//Note: not bothering with on stack array here as it's low frequency |
3048 | 3064 | </span><span class="kw">let </span>vk_bindings = desc
|
3049 | 3065 | .entries
|
3050 | 3066 | .iter()
|
|
3156 | 3172 | <span class="kw-2">&</span><span class="self">self</span>,
|
3157 | 3173 | desc: <span class="kw-2">&</span><span class="kw">crate</span>::PipelineLayoutDescriptor<<span class="kw">super</span>::Api>,
|
3158 | 3174 | ) -> <span class="prelude-ty">Result</span><<span class="kw">super</span>::PipelineLayout, <span class="kw">crate</span>::DeviceError> {
|
3159 |
| - <span class="comment">//Note: not bothering with inplace_or_alloc_from_iter her as it's low frequency |
| 3175 | + <span class="comment">//Note: not bothering with on stack array here as it's low frequency |
3160 | 3176 | </span><span class="kw">let </span>vk_set_layouts = desc
|
3161 | 3177 | .bind_group_layouts
|
3162 | 3178 | .iter()
|
|
0 commit comments