## C Specification

To destroy a VkSurfaceKHR object, call:

void vkDestroySurfaceKHR(
VkInstance                                  instance,
VkSurfaceKHR                                surface,
const VkAllocationCallbacks*                pAllocator);

## Parameters

• instance is the instance used to create the surface.

• surface is the surface to destroy.

• pAllocator is the allocator used for host memory allocated for the surface object when there is no more specific allocator available (see Memory Allocation).

## Description

Destroying a VkSurfaceKHR merely severs the connection between Vulkan and the native surface, and does not imply destroying the native surface, closing a window, or similar behavior.

Valid Usage
• All VkSwapchainKHR objects created for surface must have been destroyed prior to destroying surface

• If VkAllocationCallbacks were provided when surface was created, a compatible set of callbacks must be provided here

• If no VkAllocationCallbacks were provided when surface was created, pAllocator must be NULL

Valid Usage (Implicit)
• instance must be a valid VkInstance handle

• If surface is not VK_NULL_HANDLE, surface must be a valid VkSurfaceKHR handle

• If pAllocator is not NULL, pAllocator must be a valid pointer to a valid VkAllocationCallbacks structure

• If surface is a valid handle, it must have been created, allocated, or retrieved from instance

Host Synchronization
• Host access to surface must be externally synchronized