---
name: "SDL_Vulkan_CreateSurface"
section: "3"
platform: "linux"
package: "libsdl3-doc"
version: "3.2.10+ds-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SDL_Vulkan_CreateSurface"
---

# SDL\_Vulkan\_CreateSurface(3)

Create a Vulkan rendering surface for a window.

## NAME

SDL\_Vulkan\_CreateSurface - Create a Vulkan rendering surface for a window.

## HEADER FILE

Defined in SDL3/SDL\_vulkan.h

## SYNOPSIS

```
#include "SDL3/SDL.h"
```

**bool SDL\_Vulkan\_CreateSurface(SDL\_Window \*window,**                                   **VkInstance instance,**                                   **const struct VkAllocationCallbacks \*allocator,**                                   **VkSurfaceKHR \*surface);**

## DESCRIPTION

The **window** must have been created with the

**SDL\_WINDOW\_VULKAN** flag and **instance** must have been created with extensions returned by

**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.

## FUNCTION PARAMETERS

- *window*

  the window to which to attach the Vulkan surface.

- *instance*

  the Vulkan instance handle.

- *allocator*

  a VkAllocationCallbacks struct, which lets the app set the allocator that creates the surface. Can be NULL.

- *surface*

  a pointer to a VkSurfaceKHR handle to output the newly created surface.

## RETURN VALUE

Returns true on success or false on failure; call

**SDL\_GetError** () for more information.

## AVAILABILITY

This function is available since SDL 3.2.0.

## SEE ALSO

**•**(3), [**SDL\_Vulkan\_GetInstanceExtensions**(3)](/SDL_Vulkan_GetInstanceExtensions/3.md), **•**(3), [**SDL\_Vulkan\_DestroySurface**(3)](/SDL_Vulkan_DestroySurface/3.md)
