What is Vulkan ICD?

 Hello friends. Please keep in mind. English is NOT my first language. Please correct me when you reads wrong sentences. I really want to enhance my English.

 ICD is stand for Installable Client Driver. Maybe you have read about it when you read about Vulkan loader.

 You can find Vulkan ICDs at an upper figure. ICD is the real Vulkan driver. It means that it's implemented by NVIDIA, AMD, Qualcomm, Imagination and ARM. Vulkan loader collects ICDs and reports this information to an application.

 If you want to load a specific Vulkan ICD drivers, you can force that Vulkan loader uses the specific ICD JSON files using VK_ICD_FILENAMES.

 First, you need to have your ICD JSON file.

   "file_format_version": "1.0.0",
   "ICD": {
      "library_path": "path to ICD library",
      "api_version": "1.0.5"

 Second, set VK_ICD_FILENAMES environment on your system. There are many ways to set up an environment variable but I show one way using a command.

 On Windows

set VK_ICD_FILENAMES=/user/loader/local.json

 On Linux

export VK_ICD_FILENAMES=/user/loader/local.json

 Both examples override pointing to your ICD JSON file.

 When VK_ICD_FILENAMES is useful?
  • If you are Vulkan driver engineer, VK_ICD_FILENAMES is very useful. Because you can test your Vulkan driver without replacing stable Vulkan driver.
  • If you are Vulkan application engineer, VK_ICD_FILENAMES is also useful. When you faces some rendering issue and it looks like Vulkan driver issue, you can do regression without installing old Vulkan drivers.