# GpuPresentBinding

`import { GpuPresentBinding } from "destack:gpu/binding";`

Present binding family.

```ds title="GpuPresentBinding"
export interface GpuPresentBinding {
    openSurface(window: WindowHandle): Result<GpuSurfaceHandle, HostError>;
    closeSurface(surface: GpuSurfaceHandle): Result<void, HostError>;
    surfaceCapabilities(surface: GpuSurfaceHandle, adapter: GpuAdapterHandle): Result<GpuSurfaceCapabilities, HostError>;
    configureSurface(device: GpuDeviceHandle, surface: GpuSurfaceHandle, descriptor: &'a readonly GpuSurfaceDescriptor): Result<void, HostError>;
    unconfigureSurface(surface: GpuSurfaceHandle): Result<void, HostError>;
    surfaceState(surface: GpuSurfaceHandle): Result<GpuSurfaceState, HostError>;
    acquireSurface(surface: GpuSurfaceHandle, timeoutNs?: uint64 | undefined): Result<GpuSurfaceFrame, HostError>;
    presentSurface(surface: GpuSurfaceHandle, request: &'a readonly GpuPresentRequest): Result<void, HostError>;
    openPresentationEvents(surface: GpuSurfaceHandle, subscription: &'a readonly GpuPresentationSubscription): Result<GpuPresentationHandle, HostError>;
    closePresentationEvents(events: GpuPresentationHandle): Result<void, HostError>;
    readPresentationEvents(events: GpuPresentationHandle, maxEvents: uint32, timeoutNs?: uint64 | undefined): Result<GpuPresentationEvent[], HostError>;
}
```

[language/library/src/gpu/binding/present.ds:238:368](https://github.com/destack-sh/destack/blob/main/language/library/src/gpu/binding/present.ds#L238-L368)

## Members

### `openSurface(window: WindowHandle): Result<GpuSurfaceHandle, HostError>`

Open one present surface for a window.

### `closeSurface(surface: GpuSurfaceHandle): Result<void, HostError>`

Close one present surface.

### `surfaceCapabilities(surface: GpuSurfaceHandle, adapter: GpuAdapterHandle): Result<GpuSurfaceCapabilities, HostError>`

Read surface capabilities for one adapter.

### `configureSurface(device: GpuDeviceHandle, surface: GpuSurfaceHandle, descriptor: &'a readonly GpuSurfaceDescriptor): Result<void, HostError>`

Configure one present surface.

### `unconfigureSurface(surface: GpuSurfaceHandle): Result<void, HostError>`

Remove one present surface configuration.

### `surfaceState(surface: GpuSurfaceHandle): Result<GpuSurfaceState, HostError>`

Read one present surface state.

### `acquireSurface(surface: GpuSurfaceHandle, timeoutNs?: uint64 | undefined): Result<GpuSurfaceFrame, HostError>`

Acquire one presentable surface texture.

### `presentSurface(surface: GpuSurfaceHandle, request: &'a readonly GpuPresentRequest): Result<void, HostError>`

Present one acquired surface frame.

### `openPresentationEvents(surface: GpuSurfaceHandle, subscription: &'a readonly GpuPresentationSubscription): Result<GpuPresentationHandle, HostError>`

Open one presentation event subscription.

### `closePresentationEvents(events: GpuPresentationHandle): Result<void, HostError>`

Close one presentation event subscription.

### `readPresentationEvents(events: GpuPresentationHandle, maxEvents: uint32, timeoutNs?: uint64 | undefined): Result<GpuPresentationEvent[], HostError>`

Read presentation events.
