vkCmdFillMemoryKHR
To fill a memory range with a fixed 4-byte bit pattern, call:
void vkCmdFillMemoryKHR(
VkCommandBuffer commandBuffer,
const VkDeviceAddressRangeKHR* pDstRange,
VkAddressCommandFlagsKHR dstFlags,
uint32_t data);
pub fn cmd_fill_memory_khr(
command_buffer: vk::CommandBuffer,
p_dst_range: *const vk::DeviceAddressRangeKHR,
dst_flags: vk::AddressCommandFlagsKHR,
data: u32,
);
commandBufferis the command buffer into which the command will be recorded.pDstRangeis a pointer to the VkDeviceAddressRangeKHR selecting the memory range to be filled.dstFlagsis a VkAddressCommandFlagsKHR value defining the copy flags for the destination address range.datais the 4-byte word written repeatedly to the destination range to fillsizebytes of data.
data is determined by the host endianness.
For example, an unsigned integer value of 1 will result in a different bit
pattern on a little endian machine compared to a big endian machine.Valid Usage
VUID-vkCmdFillMemoryKHR-pDstRange-13097
If the range specified by pDstRange is not bound completely
to memory when accessed, dstFlags must not include
VK_ADDRESS_COMMAND_FULLY_BOUND_BIT_KHR
VUID-vkCmdFillMemoryKHR-pDstRange-13098
If the buffer from which the range specified by pDstRange was
created with VK_BUFFER_CREATE_PROTECTED_BIT, and
protectedNoFault is not supported,
dstFlags must include
VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR
VUID-vkCmdFillMemoryKHR-pDstRange-13099
If the buffer from which the range specified by pDstRange was
created without VK_BUFFER_CREATE_PROTECTED_BIT, and
protectedNoFault is not supported,
dstFlags must not include
VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR
VUID-vkCmdFillMemoryKHR-dstFlags-13100
dstFlags must not include both
VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR and
VK_ADDRESS_COMMAND_UNKNOWN_STORAGE_BUFFER_USAGE_BIT_KHR
VUID-vkCmdFillMemoryKHR-pDstRange-13122
If any buffer, which is bound to a range of VkDeviceMemory that
overlaps the range backing pDstRange, was created with
VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, dstFlags must
include VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR or
VK_ADDRESS_COMMAND_UNKNOWN_STORAGE_BUFFER_USAGE_BIT_KHR
VUID-vkCmdFillMemoryKHR-pDstRange-13123
If any buffer, which is bound to a range of VkDeviceMemory that
overlaps the range backing pDstRange, was created without
VK_BUFFER_USAGE_STORAGE_BUFFER_BIT, dstFlags must not
include VK_ADDRESS_COMMAND_STORAGE_BUFFER_USAGE_BIT_KHR
VUID-vkCmdFillMemoryKHR-dstFlags-13101
dstFlags must not include both
VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR and
VK_ADDRESS_COMMAND_UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR
VUID-vkCmdFillMemoryKHR-pDstRange-13124
If any buffer, which is bound to a range of VkDeviceMemory that
overlaps the range backing pDstRange, was created with
VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT,
dstFlags must include
VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR or
VK_ADDRESS_COMMAND_UNKNOWN_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR
VUID-vkCmdFillMemoryKHR-pDstRange-13125
If any buffer, which is bound to a range of VkDeviceMemory that
overlaps the range backing pDstRange, was created without
VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT,
dstFlags must not include
VK_ADDRESS_COMMAND_TRANSFORM_FEEDBACK_BUFFER_USAGE_BIT_KHR
VUID-vkCmdFillMemoryKHR-dstRange-13000
The buffer from which dstRange was queried must have been created
with VK_BUFFER_USAGE_TRANSFER_DST_BIT usage flag
VUID-vkCmdFillMemoryKHR-pDstRange-13001
pDstRange→address must be a multiple of 4
VUID-vkCmdFillMemoryKHR-pDstRange-13002
pDstRange→size must be a multiple of 4
VUID-vkCmdFillMemoryKHR-commandBuffer-13003
If commandBuffer is an unprotected command buffer and
protectedNoFault is not supported,
dstFlags must not include
VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR
VUID-vkCmdFillMemoryKHR-commandBuffer-13004
If commandBuffer is a protected command buffer and
protectedNoFault is not supported,
dstFlags must include VK_ADDRESS_COMMAND_PROTECTED_BIT_KHR
Valid Usage (Implicit)
VUID-vkCmdFillMemoryKHR-commandBuffer-parameter
commandBuffer must be a valid VkCommandBuffer handle
VUID-vkCmdFillMemoryKHR-pDstRange-parameter
pDstRange must be a valid pointer to a valid VkDeviceAddressRangeKHR structure
VUID-vkCmdFillMemoryKHR-dstFlags-parameter
dstFlags must be a valid combination of VkAddressCommandFlagBitsKHR values
VUID-vkCmdFillMemoryKHR-commandBuffer-recording
commandBuffer must be in the recording state
VUID-vkCmdFillMemoryKHR-commandBuffer-cmdpool
The VkCommandPool that commandBuffer was allocated from must support VK_QUEUE_TRANSFER_BIT operations
VUID-vkCmdFillMemoryKHR-renderpass
This command must only be called outside of a render pass instance
VUID-vkCmdFillMemoryKHR-suspended
This command must not be called between suspended render pass instances
VUID-vkCmdFillMemoryKHR-videocoding
This command must only be called outside of a video coding scope
Host Synchronization
- Host access to
commandBuffermust be externally synchronized - Host access to the
VkCommandPoolthatcommandBufferwas allocated from must be externally synchronized