google / google/amber

Use Vulkan application, instance, and device versions accurately

Open
#903 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
228
Forks
77
PR merge metrics
No merged PRs in 30d

Description

The Vulkan API version at various points is more complex than it might seem intuitively. There is not just one number we need to check.

(Edited to add VkPhysicalDevice version and use tables.)

### To use core functionality:

Functionality type
Must be supported by the...

Instance-level
Instance version

Physical-device-level
Physical device version

Device-level
Physical device version

### To use extension functionality:

Functionality type
Must be supported by the...

Instance-level (from an instance extension)
The instance (vkEnumerateInstanceExtensionProperties)

Physical-device-level (from an instance extension)
The instance (vkEnumerateInstanceExtensionProperties)

Physical-device-level (from a device extension)
The physical device. Requires both the instance and physical device versions to be at least 1.1, or the `VK_KHR_get_physical_device_properties2` extension. Then the app calls `vkEnumerateDeviceExtensionProperties(VkPhysicalDevice, ...)` to enumerate the device extension for the physical device, then uses `vkGetInstanceProcAddr` to get function pointers (where the functions are from one of the enumerated device extensions and have a first arg of type VkPhysicalDevice).

Device-level (from a device extension)
The physical device (vkEnumerateDeviceExtensionProperties)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.