# GpuSyncBinding

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

Sync binding family.

```ds title="GpuSyncBinding"
export interface GpuSyncBinding {
    createFence(device: GpuDeviceHandle, descriptor: &'a readonly GpuFenceDescriptor): Result<GpuFenceHandle, HostError>;
    destroyFence(fence: GpuFenceHandle): Result<void, HostError>;
    signalQueue(queue: GpuQueueHandle, fence: GpuFenceHandle, value: uint64): Result<void, HostError>;
    waitQueue(queue: GpuQueueHandle, fence: GpuFenceHandle, value: uint64, timeoutNs: uint64): Result<void, HostError>;
    waitQueueDone(queue: GpuQueueHandle, timeoutNs: uint64): Result<void, HostError>;
    readQueueTimestampPeriod(queue: GpuQueueHandle): Result<float64, HostError>;
    createQuerySet(device: GpuDeviceHandle, descriptor: &'a readonly GpuQuerySetDescriptor): Result<GpuQuerySetHandle, HostError>;
    destroyQuerySet(querySet: GpuQuerySetHandle): Result<void, HostError>;
    readQuerySet(querySet: GpuQuerySetHandle): Result<GpuQuerySetState, HostError>;
    writeCommandTimestamp(encoder: GpuCommandEncoderHandle, querySet: GpuQuerySetHandle, queryIndex: uint32): Result<void, HostError>;
    beginOcclusionQuery(renderPass: GpuRenderPassHandle, querySet: GpuQuerySetHandle, queryIndex: uint32): Result<void, HostError>;
    endOcclusionQuery(renderPass: GpuRenderPassHandle): Result<void, HostError>;
    beginRenderStatisticsQuery(renderPass: GpuRenderPassHandle, querySet: GpuQuerySetHandle, queryIndex: uint32): Result<void, HostError>;
    endRenderStatisticsQuery(renderPass: GpuRenderPassHandle): Result<void, HostError>;
    beginComputeStatisticsQuery(computePass: GpuComputePassHandle, querySet: GpuQuerySetHandle, queryIndex: uint32): Result<void, HostError>;
    endComputeStatisticsQuery(computePass: GpuComputePassHandle): Result<void, HostError>;
    resolveQueries(encoder: GpuCommandEncoderHandle, querySet: GpuQuerySetHandle, firstQuery: uint32, queryCount: uint32, destination: GpuBufferHandle, destinationOffset: uint64): Result<void, HostError>;
}
```

[language/library/src/gpu/binding/sync.ds:93:284](https://github.com/destack-sh/destack/blob/main/language/library/src/gpu/binding/sync.ds#L93-L284)

## Members

### `createFence(device: GpuDeviceHandle, descriptor: &'a readonly GpuFenceDescriptor): Result<GpuFenceHandle, HostError>`

Create a synchronization fence.

### `destroyFence(fence: GpuFenceHandle): Result<void, HostError>`

Destroy a synchronization fence.

### `signalQueue(queue: GpuQueueHandle, fence: GpuFenceHandle, value: uint64): Result<void, HostError>`

Signal a fence value from a queue.

### `waitQueue(queue: GpuQueueHandle, fence: GpuFenceHandle, value: uint64, timeoutNs: uint64): Result<void, HostError>`

Wait for a fence value.

### `waitQueueDone(queue: GpuQueueHandle, timeoutNs: uint64): Result<void, HostError>`

Wait for all previously submitted queue work.

### `readQueueTimestampPeriod(queue: GpuQueueHandle): Result<float64, HostError>`

Read a queue timestamp period.

### `createQuerySet(device: GpuDeviceHandle, descriptor: &'a readonly GpuQuerySetDescriptor): Result<GpuQuerySetHandle, HostError>`

Create a query set.

### `destroyQuerySet(querySet: GpuQuerySetHandle): Result<void, HostError>`

Destroy a query set.

### `readQuerySet(querySet: GpuQuerySetHandle): Result<GpuQuerySetState, HostError>`

Read a query-set metadata snapshot.

### `writeCommandTimestamp(encoder: GpuCommandEncoderHandle, querySet: GpuQuerySetHandle, queryIndex: uint32): Result<void, HostError>`

Write a timestamp query from a command encoder.

### `beginOcclusionQuery(renderPass: GpuRenderPassHandle, querySet: GpuQuerySetHandle, queryIndex: uint32): Result<void, HostError>`

Begin an occlusion query.

### `endOcclusionQuery(renderPass: GpuRenderPassHandle): Result<void, HostError>`

End an occlusion query.

### `beginRenderStatisticsQuery(renderPass: GpuRenderPassHandle, querySet: GpuQuerySetHandle, queryIndex: uint32): Result<void, HostError>`

Begin a pipeline-statistics query in a render pass.

### `endRenderStatisticsQuery(renderPass: GpuRenderPassHandle): Result<void, HostError>`

End a pipeline-statistics query in a render pass.

### `beginComputeStatisticsQuery(computePass: GpuComputePassHandle, querySet: GpuQuerySetHandle, queryIndex: uint32): Result<void, HostError>`

Begin a pipeline-statistics query in a compute pass.

### `endComputeStatisticsQuery(computePass: GpuComputePassHandle): Result<void, HostError>`

End a pipeline-statistics query in a compute pass.

### `resolveQueries(encoder: GpuCommandEncoderHandle, querySet: GpuQuerySetHandle, firstQuery: uint32, queryCount: uint32, destination: GpuBufferHandle, destinationOffset: uint64): Result<void, HostError>`

Resolve one query range into one destination buffer.
