@@ -78,6 +78,9 @@ pub struct MeshAllocator {
78
78
/// WebGL 2. On this platform, we must give each vertex array its own
79
79
/// buffer, because we can't adjust the first vertex when we perform a draw.
80
80
general_vertex_slabs_supported : bool ,
81
+
82
+ /// Additional buffer usages to add to any vertex or index buffers created.
83
+ pub extra_buffer_usages : BufferUsages ,
81
84
}
82
85
83
86
/// Tunable parameters that customize the behavior of the allocator.
@@ -348,6 +351,7 @@ impl FromWorld for MeshAllocator {
348
351
mesh_id_to_index_slab : HashMap :: default ( ) ,
349
352
next_slab_id : default ( ) ,
350
353
general_vertex_slabs_supported,
354
+ extra_buffer_usages : BufferUsages :: empty ( ) ,
351
355
}
352
356
}
353
357
}
@@ -598,7 +602,7 @@ impl MeshAllocator {
598
602
buffer_usages_to_str( buffer_usages)
599
603
) ) ,
600
604
size : len as u64 ,
601
- usage : buffer_usages | BufferUsages :: COPY_DST ,
605
+ usage : buffer_usages | BufferUsages :: COPY_DST | self . extra_buffer_usages ,
602
606
mapped_at_creation : true ,
603
607
} ) ;
604
608
{
@@ -835,7 +839,7 @@ impl MeshAllocator {
835
839
buffer_usages_to_str( buffer_usages)
836
840
) ) ,
837
841
size : slab. current_slot_capacity as u64 * slab. element_layout . slot_size ( ) ,
838
- usage : buffer_usages,
842
+ usage : buffer_usages | self . extra_buffer_usages ,
839
843
mapped_at_creation : false ,
840
844
} ) ;
841
845
0 commit comments