vkInvalidateMappedMemoryRanges
To invalidate ranges of non-coherent memory from the host caches, call:
VkResult vkInvalidateMappedMemoryRanges(
VkDevice device,
uint32_t memoryRangeCount,
const VkMappedMemoryRange* pMemoryRanges);
device
is the logical device that owns the memory ranges.memoryRangeCount
is the length of thepMemoryRanges
array.pMemoryRanges
is a pointer to an array of VkMappedMemoryRange structures describing the memory ranges to invalidate.
vkInvalidateMappedMemoryRanges
guarantees that device writes to the
memory ranges described by pMemoryRanges
, which have been made
available to the host memory domain using the VK_ACCESS_HOST_WRITE_BIT
and VK_ACCESS_HOST_READ_BIT
access
types, are made visible to the host.
If a range of non-coherent memory is written by the host and then
invalidated without first being flushed, its contents are undefined:.
Within each range described by pMemoryRanges
, each set of
nonCoherentAtomSize
bytes in that range is invalidated if any byte in
that set has been written by the device since it was first host mapped, or
the last time it was invalidated.
Mapping non-coherent memory does not implicitly invalidate that memory.
Valid Usage (Implicit)
VUID-vkInvalidateMappedMemoryRanges-device-parameter
device
must be a valid VkDevice handle
VUID-vkInvalidateMappedMemoryRanges-pMemoryRanges-parameter
pMemoryRanges
must be a valid pointer to an array of memoryRangeCount
valid VkMappedMemoryRange structures
VUID-vkInvalidateMappedMemoryRanges-memoryRangeCount-arraylength
memoryRangeCount
must be greater than 0