vkDestroyDevice
To destroy a device, call:
void vkDestroyDevice(
VkDevice device,
const VkAllocationCallbacks* pAllocator);
device
is the logical device to destroy.pAllocator
controls host memory allocation as described in the Memory Allocation chapter.
To ensure that no work is active on the device, vkDeviceWaitIdle can
be used to gate the destruction of the device.
Prior to destroying a device, an application is responsible for
destroying/freeing any Vulkan objects that were created using that device as
the first parameter of the corresponding vkCreate*
or
vkAllocate*
command.
The lifetime of each of these objects is bound by the lifetime of the
VkDevice
object.
Therefore, to avoid resource leaks, it is critical that an application
explicitly free all of these resources prior to calling
vkDestroyDevice
.
Valid Usage
VUID-vkDestroyDevice-device-05137
All child objects created on device
must have been destroyed prior to destroying device
VUID-vkDestroyDevice-device-00379
If VkAllocationCallbacks
were provided when device
was
created, a compatible set of callbacks must be provided here
VUID-vkDestroyDevice-device-00380
If no VkAllocationCallbacks
were provided when device
was
created, pAllocator
must be NULL
Valid Usage (Implicit)
VUID-vkDestroyDevice-device-parameter
If device
is not NULL
, device
must be a valid VkDevice handle
VUID-vkDestroyDevice-pAllocator-parameter
If pAllocator
is not NULL
, pAllocator
must be a valid pointer to a valid VkAllocationCallbacks structure
Host Synchronization
- Host access to
device
must be externally synchronized - Host access to all
VkQueue
objects created fromdevice
must be externally synchronized ::