# GpuResourceBinding

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

Resource binding family.

```ds title="GpuResourceBinding"
export interface GpuResourceBinding {
    createBuffer(device: GpuDeviceHandle, descriptor: &'a readonly GpuBufferDescriptor): Result<GpuBufferHandle, HostError>;
    destroyBuffer(buffer: GpuBufferHandle): Result<void, HostError>;
    writeBuffer(buffer: GpuBufferHandle, offset: uint64, bytes: &'a readonly [uint8]): Result<void, HostError>;
    readBuffer(buffer: GpuBufferHandle, offset: uint64, length: uint64): Result<uint8[], HostError>;
    mapBuffer(buffer: GpuBufferHandle, offset: uint64, length: uint64, mode: GpuMapMode): Result<GpuMappedBufferRange, HostError>;
    unmapBuffer(buffer: GpuBufferHandle): Result<void, HostError>;
    readBufferState(buffer: GpuBufferHandle): Result<GpuBufferState, HostError>;
    createTexture(device: GpuDeviceHandle, descriptor: &'a readonly GpuTextureDescriptor): Result<GpuTextureHandle, HostError>;
    destroyTexture(texture: GpuTextureHandle): Result<void, HostError>;
    readTextureState(texture: GpuTextureHandle): Result<GpuTextureState, HostError>;
    createTextureView(texture: GpuTextureHandle, descriptor: &'a readonly GpuTextureViewDescriptor): Result<GpuTextureViewHandle, HostError>;
    destroyTextureView(view: GpuTextureViewHandle): Result<void, HostError>;
    createSampler(device: GpuDeviceHandle, descriptor: &'a readonly GpuSamplerDescriptor): Result<GpuSamplerHandle, HostError>;
    destroySampler(sampler: GpuSamplerHandle): Result<void, HostError>;
    createExternalTexture(device: GpuDeviceHandle, descriptor: &'a readonly GpuExternalTextureDescriptor, planeViews: &'b readonly [GpuTextureViewHandle]): Result<GpuExternalTextureHandle, HostError>;
    destroyExternalTexture(externalTexture: GpuExternalTextureHandle): Result<void, HostError>;
}
```

[language/library/src/gpu/binding/resource.ds:739:908](https://github.com/destack-sh/destack/blob/main/language/library/src/gpu/binding/resource.ds#L739-L908)

## Members

### `createBuffer(device: GpuDeviceHandle, descriptor: &'a readonly GpuBufferDescriptor): Result<GpuBufferHandle, HostError>`

Create a GPU buffer.

### `destroyBuffer(buffer: GpuBufferHandle): Result<void, HostError>`

Destroy a GPU buffer.

### `writeBuffer(buffer: GpuBufferHandle, offset: uint64, bytes: &'a readonly [uint8]): Result<void, HostError>`

Write a byte range to a GPU buffer.

### `readBuffer(buffer: GpuBufferHandle, offset: uint64, length: uint64): Result<uint8[], HostError>`

Read a byte range from a GPU buffer.

### `mapBuffer(buffer: GpuBufferHandle, offset: uint64, length: uint64, mode: GpuMapMode): Result<GpuMappedBufferRange, HostError>`

Map a buffer range.

### `unmapBuffer(buffer: GpuBufferHandle): Result<void, HostError>`

Unmap a mapped buffer.

### `readBufferState(buffer: GpuBufferHandle): Result<GpuBufferState, HostError>`

Read a buffer state snapshot.

### `createTexture(device: GpuDeviceHandle, descriptor: &'a readonly GpuTextureDescriptor): Result<GpuTextureHandle, HostError>`

Create a texture resource.

### `destroyTexture(texture: GpuTextureHandle): Result<void, HostError>`

Destroy a texture resource.

### `readTextureState(texture: GpuTextureHandle): Result<GpuTextureState, HostError>`

Read a texture state snapshot.

### `createTextureView(texture: GpuTextureHandle, descriptor: &'a readonly GpuTextureViewDescriptor): Result<GpuTextureViewHandle, HostError>`

Create a texture view.

### `destroyTextureView(view: GpuTextureViewHandle): Result<void, HostError>`

Destroy a texture view.

### `createSampler(device: GpuDeviceHandle, descriptor: &'a readonly GpuSamplerDescriptor): Result<GpuSamplerHandle, HostError>`

Create a sampler resource.

### `destroySampler(sampler: GpuSamplerHandle): Result<void, HostError>`

Destroy a sampler resource.

### `createExternalTexture(device: GpuDeviceHandle, descriptor: &'a readonly GpuExternalTextureDescriptor, planeViews: &'b readonly [GpuTextureViewHandle]): Result<GpuExternalTextureHandle, HostError>`

Create an external texture resource.

### `destroyExternalTexture(externalTexture: GpuExternalTextureHandle): Result<void, HostError>`

Destroy an external texture resource.
