Vulkan Hardware Capability Viewer — Understand Your GPU’s Vulkan Support

How to Use Vulkan Hardware Capability Viewer to Check GPU FeaturesVulkan is a low-level, high-performance graphics and compute API that gives developers more control over the GPU than older APIs. The Vulkan Hardware Capability Viewer (VHCV) is a tool that helps you inspect what your GPU supports — Vulkan versions, device features, extensions, limits, memory heaps, queue families, and more. This guide walks through installing VHCV, running it, interpreting its output, and applying the information to debugging, optimization, and compatibility checks.


What VHCV is and when to use it

Vulkan Hardware Capability Viewer is a diagnostic utility that queries the Vulkan implementation on your system and displays the physical device properties and features exposed by the Vulkan API. Use it when you need to:

  • Verify whether a GPU supports a specific Vulkan version or extension.
  • Inspect limits and capabilities (max texture size, uniform buffer alignment, etc.).
  • Troubleshoot Vulkan runtime or driver issues.
  • Decide which features to enable in an application for compatibility or performance.

VHCV reveals the exact features and extensions the driver exposes for each physical device.


Installing VHCV

VHCV may be available as a standalone binary, part of GPU vendor tools, or as an open-source project. Two common ways to get equivalent functionality are:

  • Download an official or community build of the Vulkan Hardware Capability Viewer for your OS (Windows, Linux) if available.
  • Use other utilities that report Vulkan device info, such as vulkaninfo (part of the LunarG SDK), or vendor tools (NVIDIA Nsight, AMD GPU Tools). The commands and presentation differ, but the information is fundamentally the same.

If vulkaninfo is more convenient:

  • On Windows: install the Vulkan SDK from LunarG and run “vulkaninfo.exe”.
  • On Linux: install the vulkan-tools package (e.g., apt install vulkan-tools) and run vulkaninfo.

vulkaninfo outputs the same Vulkan device properties and features VHCV displays.


Running the tool

  1. Close any applications that might hold GPU exclusive access.
  2. Launch VHCV or run vulkaninfo from a terminal/command prompt.
  3. For vulkaninfo, you can pipe output to a file for easier reading:
    
    vulkaninfo > vulkaninfo.txt 
  4. If the tool supports a GUI, select the physical device you want to inspect (if multiple GPUs are present).

If the tool fails to find a Vulkan loader or instance, you may need to install or update graphics drivers or the Vulkan runtime.


Key sections of the report and what they mean

Instance and physical device summary
  • Lists available Vulkan-capable devices (discrete GPU, integrated GPU).
  • Shows the Vulkan API version supported by the driver and the vendor/driver names.

The Vulkan API version listed is the highest core version the driver claims to support.

Device properties

Important fields:

  • deviceName — human-readable GPU name.
  • vendorID/deviceID — hardware identifiers.
  • apiVersion — Vulkan version number (e.g., 1.3.239).
  • driverVersion — driver build version (interpretation varies by vendor).
  • limits — numeric implementation limits (maxImageDimension2D, maxPushConstantsSize, etc.).

Use limits to choose resource sizes, texture dimensions, and buffer layouts that are safe across target GPUs.

Device features
  • Boolean flags indicating feature support (robustBufferAccess, geometryShader, tessellationShader, samplerAnisotropy, etc.).
  • Newer core features may also appear under feature2 structures (Vulkan 1.1+ and feature struct chaining).

If a feature flag is true, the driver exposes that capability and your application may enable it at device creation.

Extensions
  • Lists supported device and instance extensions (VK_KHR_swapchain, VK_EXT_descriptor_indexing, etc.).
  • Each extension may unlock additional functionality beyond core Vulkan.

Compare required extensions for your application against this list; missing extensions prevent using those features.

Queue families
  • Shows queue types (graphics, compute, transfer), counts, and capabilities.
  • Important for deciding how to submit work and whether dedicated transfer queues exist.
Memory properties
  • Memory heaps and types, sizes, and property flags (device local, host visible, host coherent).
  • Use this to select appropriate memory types for buffers and images.

How to use the information in development

  • Compatibility checks: Before enabling optional features or extensions, verify they appear in the report.
  • Feature toggles: Use conditional code paths—enable features like anisotropic filtering or descriptor indexing only when supported.
  • Resource sizing: Respect max limits to avoid runtime errors (e.g., maximum texture dimensions).
  • Memory allocation: Choose memory types with appropriate flags (e.g., HOST_VISIBLE | HOST_COHERENT) from the memoryTypeBits mask.
  • Queue placement: Assign uploads to a transfer-only queue if available for better performance.
  • Debugging: If a shader or pipeline creation fails, check for missing required extensions or insufficient limits.

Examples

  • Checking for anisotropic filtering:

    • Look for device feature flag samplerAnisotropy = true.
    • If true, create sampler with maxAnisotropy up to limits.maxSamplerAnisotropy.
  • Verifying swapchain support:

    • Ensure VK_KHR_swapchain appears in device extensions.
    • Check surface formats and present modes (vulkaninfo shows these under surface support sections).

Common pitfalls and troubleshooting

  • Driver vs. GPU capability: Sometimes drivers underreport features due to bugs; updating GPU drivers often resolves inconsistencies.
  • Multiple GPUs: The tool lists each physical device; ensure you inspect the GPU actually used by your application.
  • Feature enabling: Even if a feature exists, you must enable it at device creation via VkDeviceCreateInfo and pEnabledFeatures or feature2 chaining.
  • Loader errors: If the Vulkan loader isn’t found, install the Vulkan runtime from the vendor or the LunarG SDK.

Updating the GPU driver often fixes missing or incorrect Vulkan capability reports.


Summary

Vulkan Hardware Capability Viewer (or vulkaninfo) is essential for understanding what features and limits your GPU exposes through Vulkan. Use it to verify API version and extensions, inspect device limits and features, pick appropriate memory types and queues, and guide conditional feature usage in your application. Regularly re-run the tool after driver updates or on target machines to ensure compatibility and optimal performance.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *