# GpuDeviceBinding

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

Device binding family.

```ds title="GpuDeviceBinding"
export interface GpuDeviceBinding {
    openDevice(adapter: GpuAdapterHandle, descriptor: &'a readonly GpuDeviceDescriptor): Result<GpuDeviceHandle, HostError>;
    readDevice(device: GpuDeviceHandle): Result<GpuDevice, HostError>;
    readDeviceFeatures(device: GpuDeviceHandle): Result<GpuFeatureId[], HostError>;
    readDeviceLimits(device: GpuDeviceHandle): Result<GpuAdapterLimits, HostError>;
    hasDeviceFeature(device: GpuDeviceHandle, feature: GpuFeatureId): Result<boolean, HostError>;
    readDeviceStatus(device: GpuDeviceHandle): Result<GpuDeviceStatus, HostError>;
    readDeviceQueue(device: GpuDeviceHandle): Result<GpuQueueHandle, HostError>;
    pollDevice(device: GpuDeviceHandle, wait: boolean, timeoutNs: uint64): Result<uint32, HostError>;
    pushDeviceErrorScope(device: GpuDeviceHandle, filter: GpuErrorFilter): Result<void, HostError>;
    popDeviceErrorScope(device: GpuDeviceHandle, timeoutNs: uint64): Result<GpuCapturedError, HostError>;
    closeDevice(device: GpuDeviceHandle): Result<void, HostError>;
}
```

[language/library/src/gpu/binding/device.ds:122:231](https://github.com/destack-sh/destack/blob/main/language/library/src/gpu/binding/device.ds#L122-L231)

## Members

### `openDevice(adapter: GpuAdapterHandle, descriptor: &'a readonly GpuDeviceDescriptor): Result<GpuDeviceHandle, HostError>`

Open a logical GPU device.

### `readDevice(device: GpuDeviceHandle): Result<GpuDevice, HostError>`

Read device metadata.

### `readDeviceFeatures(device: GpuDeviceHandle): Result<GpuFeatureId[], HostError>`

Read a device feature snapshot.

### `readDeviceLimits(device: GpuDeviceHandle): Result<GpuAdapterLimits, HostError>`

Read a device limits snapshot.

### `hasDeviceFeature(device: GpuDeviceHandle, feature: GpuFeatureId): Result<boolean, HostError>`

Check whether one device supports one feature.

### `readDeviceStatus(device: GpuDeviceHandle): Result<GpuDeviceStatus, HostError>`

Read device health status.

### `readDeviceQueue(device: GpuDeviceHandle): Result<GpuQueueHandle, HostError>`

Resolve the default queue for a logical device.

### `pollDevice(device: GpuDeviceHandle, wait: boolean, timeoutNs: uint64): Result<uint32, HostError>`

Poll a logical device for completion progress.

### `pushDeviceErrorScope(device: GpuDeviceHandle, filter: GpuErrorFilter): Result<void, HostError>`

Push one device error scope.

### `popDeviceErrorScope(device: GpuDeviceHandle, timeoutNs: uint64): Result<GpuCapturedError, HostError>`

Pop one device error scope.

### `closeDevice(device: GpuDeviceHandle): Result<void, HostError>`

Close a logical GPU device.
