# Adapter Properties

## Memory Heaps

`wgpu::FeatureName::AdapterPropertiesMemoryHeaps` allows querying memory heap information from the adapter.

`wgpu::AdapterPropertiesMemoryHeaps` may be chained on `wgpu::AdapterInfo` in a call to `wgpu::Adapter::GetInfo` or `wgpu::Device::GetAdapterInfo` in order to query information about the memory heaps on the adapter.
The implementation will write out the number of memory heaps and information about each heap.

If `wgpu::FeatureName::AdapterPropertiesMemoryHeaps` is not available, the struct will not be populated.

Adds `wgpu::HeapProperty` which is a bitmask describing the type of memory a heap is. Valid bits:
- DeviceLocal
- HostVisible
- HostCoherent
- HostUncached
- HostCached

Note that both HostUncached and HostCached may be set if a heap can allocate pages with either cache property.

Adds `wgpu::MemoryHeapInfo` which is a struct describing a memory heap.
```
struct MemoryHeapInfo {
    HeapProperty properties;
    uint64_t size;
};
```

`wgpu::MemoryHeapInfo::size` is the size that should be allocated out of this heap. Allocating more than this may result in poor performance or may deterministically run out of memory.

## DRM properties

`wgpu::FeatureName:AdapterPropertiesDRM`, currently only available on Vulkan (but could be added on OpenGL / ES), allows querying Linux DRM information about the adapter.

`wgpu::AdapterPropertiesDRM` may be chained on `wgpu::AdapterInfo` in a call to `wgpu::Adapter::GetInfo` or `wgpu::Device::GetAdapterInfo` in order to query DRM information on the adapter.

## D3D

`wgpu::FeatureName::AdapterPropertiesD3D` allows querying D3D information from the adapter.

`wgpu::AdapterPropertiesD3D` may be chained on `wgpu::AdapterInfo` in a call to `wgpu::Adapter::GetInfo` or `wgpu::Device::GetAdapterInfo` in order to query D3D information on the adapter.

Adds `wgpu::AdapterPropertiesD3D` which is a struct describing the D3D adapter.
```
struct AdapterPropertiesD3D {
    uint32_t shaderModel;  // The D3D shader model
};
```

## Vulkan

`wgpu::FeatureName::AdapterPropertiesVk` allows querying Vulkan information from the adapter.

`wgpu::AdapterPropertiesVk` may be chained on `wgpu::AdapterInfo` in a call to `wgpu::Adapter::GetInfo` or `wgpu::Device::GetAdapterInfo` in order to query Vulkan information on the adapter.

Adds `wgpu::AdapterPropertiesVk` which is a struct describing the Vulkan adapter.
```
struct AdapterPropertiesVk {
    uint32_t driverVersion;  // The Vulkan driver version
};
```

## WebGPU

`wgpu::FeatureName::AdapterPropertiesWGPU` allows querying inner backend information of the WebGPUBackend from the adapter.

`wgpu::AdapterPropertiesWGPU` may be chained on `wgpu::AdapterInfo` in a call to `wgpu::Adapter::GetInfo` or `wgpu::Device::GetAdapterInfo` in order to query WebGPU backend information on the adapter.

Adds `wgpu::AdapterPropertiesWGPU` which is a struct describing the WebGPU adapter.
```
struct AdapterPropertiesWGPU {
    wgpu::BackendType backendType;  // The inner backend type
};
```
