@@ -29,16 +29,51 @@ Qualcomm Adreno GPU | Mobile | Reasonable | 640+
2929AMD GPU | Desktop/server | Good | RDNA+
3030NVIDIA GPU | Desktop/server | Reasonable | Turing+
3131
32+ ## :octicons-cpu-16: Device compatibility
33+
34+ IREE's Vulkan HAL targets modern compute-capable Vulkan implementations. The
35+ runtime baseline is Vulkan 1.3 with a compute queue and the
36+ ` timelineSemaphore ` , ` scalarBlockLayout ` , and ` synchronization2 ` device
37+ features. Devices missing that baseline still appear in device dumps, but are
38+ reported below the supported feature tier and are not selected for execution.
39+
40+ Descriptor-set dispatch is the portable baseline executable ABI. Buffer device
41+ address (BDA) dispatch is an optional faster ABI used when the device exposes
42+ ` bufferDeviceAddress ` and the program was compiled with BDA support. The
43+ runtime default accepts all supported executable ABI variants and prefers BDA
44+ when available; descriptor executables remain the fallback for devices without
45+ BDA.
46+
47+ Other Vulkan features are enabled opportunistically when the implementation
48+ reports them:
49+
50+ * ` VK_KHR_push_descriptor ` reduces descriptor allocation and update overhead.
51+ * ` VK_EXT_calibrated_timestamps ` enables device-side queue and dispatch timing
52+ in IREE HAL profile captures.
53+ * External memory extensions enable native interop and file/staging strategies
54+ when the platform and driver expose compatible handle types.
55+ * Sparse binding and residency features are used only when explicitly requested
56+ and supported by an appropriate queue family.
57+ * Validation layers, debug utils, robust buffer access, object names, and
58+ command labels are debug/profiling features rather than execution
59+ requirements.
60+
61+ Use ` iree-run-module --dump_devices ` to inspect the exact Vulkan API version,
62+ feature tier, device features, queues, and enabled extension opportunities for a
63+ machine. A supported device reports ` feature_tier[vulkan-1.3]: supported ` .
64+
3265## :octicons-download-16: Prerequisites
3366
3467In order to use Vulkan to drive the GPU, you need to have a functional Vulkan
35- environment. IREE requires Vulkan 1.1 on Android and 1.2 elsewhere. It can be
36- verified by the following steps:
68+ environment. IREE requires a device satisfying the Vulkan 1.3 baseline above.
69+ It can be verified by the following steps:
3770
3871=== "Android"
3972
40- Android mandates Vulkan 1.1 support since Android 10. You just need to
41- make sure the device's Android version is 10 or higher.
73+ Android version alone is not enough to determine IREE compatibility. Run
74+ `vulkaninfo` or `iree-run-module --dump_devices` on the device and verify
75+ that the selected physical device reports Vulkan 1.3 and the required
76+ baseline features.
4277
4378=== ":fontawesome-brands-linux: Linux"
4479
@@ -53,7 +88,7 @@ verified by the following steps:
5388 repository is recommended, as it places Vulkan libraries and tools under
5489 system paths so it's easy to discover.
5590
56- If the listed version is lower than Vulkan 1.2 , you will need to update the
91+ If the listed version is lower than Vulkan 1.3 , you will need to update the
5792 driver for your GPU.
5893
5994=== ":fontawesome-brands-windows: Windows"
@@ -67,7 +102,7 @@ verified by the following steps:
67102 If `vulkaninfo` does not exist, you will need to [install the latest Vulkan
68103 SDK](https://vulkan.lunarg.com/sdk/home/).
69104
70- If the listed version is lower than Vulkan 1.2 , you will need to update the
105+ If the listed version is lower than Vulkan 1.3 , you will need to update the
71106 driver for your GPU.
72107
73108### Get the IREE compiler
@@ -158,15 +193,27 @@ With the requirements out of the way, we can now compile a model and run it.
158193
159194Then run the following command to compile with the ` vulkan ` target device:
160195
161- ``` shell hl_lines="2 3"
196+ ``` shell hl_lines="2 3 4 "
162197iree-compile \
163198 --iree-hal-target-device=vulkan \
199+ --iree-vulkan-dispatch-abi=all \
164200 --iree-vulkan-target=< ...> \
165201 mobilenetv2.mlir -o mobilenet_vulkan.vmfb
166202```
167203
168204--8<-- "docs/website/docs/guides/deployment-configurations/snippets/_ iree-optimization-options.md"
169205
206+ ` --iree-vulkan-dispatch-abi ` controls which Vulkan executable ABI variants are
207+ emitted:
208+
209+ * ` descriptors ` emits the portable descriptor-set ABI.
210+ * ` bda ` emits only the BDA root binding table ABI.
211+ * ` all ` emits all supported ABI variants in runtime preference order.
212+
213+ Use ` all ` when producing a program intended to run across multiple Vulkan
214+ devices. Use ` bda ` only when the deployment fleet is known to support
215+ ` bufferDeviceAddress ` .
216+
170217#### Choosing Vulkan targets
171218
172219The ` --iree-vulkan-target ` specifies the GPU architecture to target. It
0 commit comments