# SDL_Vulkan_CreateSurface
Create a Vulkan rendering surface for a window.
## Header File
Defined in [<SDL3/SDL_vulkan.h>](https://github.com/libsdl-org/SDL/blob/main/include/SDL3/SDL_vulkan.h)
## Syntax
```c
bool SDL_Vulkan_CreateSurface(SDL_Window *window,
VkInstance instance,
const struct VkAllocationCallbacks *allocator,
VkSurfaceKHR *surface);
```
## Function Parameters
| | | |
| ------------------------------------ | ------------- | ----------------------------------------------------------------------------------------------------------- |
| [SDL_Window](SDL_Window) * | **window** | the window to which to attach the Vulkan surface. |
| VkInstance | **instance** | the Vulkan instance handle. |
| const struct VkAllocationCallbacks * | **allocator** | a VkAllocationCallbacks struct, which lets the app set the allocator that creates the surface. Can be NULL. |
| VkSurfaceKHR * | **surface** | a pointer to a VkSurfaceKHR handle to output the newly created surface. |
## Return Value
(bool) Returns true on success or false on failure; call
[SDL_GetError](SDL_GetError)() for more information.
## Remarks
The `window` must have been created with the
[`SDL_WINDOW_VULKAN`](SDL_WINDOW_VULKAN) flag and `instance` must have been
created with extensions returned by
[SDL_Vulkan_GetInstanceExtensions](SDL_Vulkan_GetInstanceExtensions)()
enabled.
If `allocator` is NULL, Vulkan will use the system default allocator. This
argument is passed directly to Vulkan and isn't used by SDL itself.
## Version
This function is available since SDL 3.2.0.
## See Also
- [SDL_Vulkan_GetInstanceExtensions](SDL_Vulkan_GetInstanceExtensions)
- [SDL_Vulkan_DestroySurface](SDL_Vulkan_DestroySurface)
----
[CategoryAPI](CategoryAPI), [CategoryAPIFunction](CategoryAPIFunction), [CategoryVulkan](CategoryVulkan)