pub struct GPUSorter { /* private fields */ }Expand description
Sorting pipeline. It can be used to sort key-value pairs stored in SortBuffers
Implementations§
Source§impl GPUSorter
impl GPUSorter
pub fn new(device: &Device, subgroup_size: u32) -> Self
Sourcepub fn sort(
&self,
encoder: &mut CommandEncoder,
queue: &Queue,
sort_buffers: &SortBuffers,
sort_first_n: Option<u32>,
)
pub fn sort( &self, encoder: &mut CommandEncoder, queue: &Queue, sort_buffers: &SortBuffers, sort_first_n: Option<u32>, )
Writes sort commands to command encoder. If sort_first_n is not none one the first n elements are sorted otherwise everything is sorted.
IMPORTANT: if less than the whole buffer is sorted the rest of the keys buffer will be be corrupted
Sourcepub fn sort_indirect(
&self,
encoder: &mut CommandEncoder,
sort_buffers: &SortBuffers,
dispatch_buffer: &Buffer,
)
pub fn sort_indirect( &self, encoder: &mut CommandEncoder, sort_buffers: &SortBuffers, dispatch_buffer: &Buffer, )
Initiates sorting with an indirect call. The dispatch buffer must contain the struct wgpu::util::DispatchIndirectArgs.
number of y and z workgroups must be 1
x = (N + HISTO_BLOCK_KVS- 1 )/HISTO_BLOCK_KVS, where N are the first N elements to be sorted
SortBuffers::state_buffer contains the number of keys that will be sorted. This is set to sort the whole buffer by default.
IMPORTANT: if less than the whole buffer is sorted the rest of the keys buffer will most likely be corrupted.
Sourcepub fn create_sort_buffers(
&self,
device: &Device,
length: NonZeroU32,
) -> SortBuffers
pub fn create_sort_buffers( &self, device: &Device, length: NonZeroU32, ) -> SortBuffers
creates all buffers necessary for sorting