struct radix_sort_vk_memory_requirements

Defined at line 156 of file ../../src/graphics/lib/compute/radix_sort/platforms/vk/include/radix_sort/platforms/vk/radix_sort_vk.h

Returns the buffer size and alignment requirements when `.count` is the

maximum expected number of keyvals.

The radix sort implementation is not an in-place sorting algorithm so two

non-overlapping keyval buffers are required that are at least

`.keyvals_size`.

The radix sort instance also requires an internal buffer during sorting.

If the indirect dispatch sorting function is used, then an indirect buffer is

also required.

The alignment requirements for the keyval, internal, and indirect buffers

must be honored. All alignments are power of 2.

Input:

count : Maximum number of keyvals

Outputs:

keyval_size : Size of a single keyval

keyvals_size : Minimum size of the even and odd keyval buffers

keyvals_alignment : Alignment of each keyval buffer

internal_size : Minimum size of internal buffer

internal_aligment : Alignment of the internal buffer

indirect_size : Minimum size of indirect buffer

indirect_aligment : Alignment of the indirect buffer

.keyvals_even/odd

-----------------

VK_BUFFER_USAGE_STORAGE_BUFFER_BIT

VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT

.internal

---------

VK_BUFFER_USAGE_STORAGE_BUFFER_BIT

VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT

VK_BUFFER_USAGE_TRANSFER_DST_BIT ("direct" mode only)

.indirect

---------

VK_BUFFER_USAGE_STORAGE_BUFFER_BIT

VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT

VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT

Public Members

VkDeviceSize keyval_size
VkDeviceSize keyvals_size
VkDeviceSize keyvals_alignment
VkDeviceSize internal_size
VkDeviceSize internal_alignment
VkDeviceSize indirect_size
VkDeviceSize indirect_alignment