VK_KHR_get_physical_device_properties2
Other Extension Metadata
Last Modified Date
2017-09-05
IP Status
No known IP claims.
Contributors
- Jeff Bolz, NVIDIA
- Ian Elliott, Google
Description
This extension provides new queries for device features, device properties,
and format properties that can be easily extended by other extensions,
without introducing any further queries.
The Vulkan 1.0 feature/limit/formatproperty structures do not include
sType
/pNext
members.
This extension wraps them in new structures with sType
/pNext
members, so an application can query a chain of feature/limit/formatproperty
structures by constructing the chain and letting the implementation fill
them in.
A new command is added for each vkGetPhysicalDevice*
command in core
Vulkan 1.0.
The new feature structure (and a pNext
chain of extending structures)
can also be passed in to device creation to enable features.
This extension also allows applications to use the physical-device components of device extensions before vkCreateDevice is called.
Promotion to Vulkan 1.1
All functionality in this extension is included in core Vulkan 1.1, with the KHR suffix omitted. The original type, enum, and command names are still available as aliases of the core functionality.
New Commands
- vkGetPhysicalDeviceFeatures2KHR
- vkGetPhysicalDeviceFormatProperties2KHR
- vkGetPhysicalDeviceImageFormatProperties2KHR
- vkGetPhysicalDeviceMemoryProperties2KHR
- vkGetPhysicalDeviceProperties2KHR
- vkGetPhysicalDeviceQueueFamilyProperties2KHR
- vkGetPhysicalDeviceSparseImageFormatProperties2KHR
New Structures
- VkFormatProperties2KHR
- VkImageFormatProperties2KHR
- VkPhysicalDeviceImageFormatInfo2KHR
- VkPhysicalDeviceMemoryProperties2KHR
- VkPhysicalDeviceProperties2KHR
- VkPhysicalDeviceSparseImageFormatInfo2KHR
- VkQueueFamilyProperties2KHR
- VkSparseImageFormatProperties2KHR
- Extending VkDeviceCreateInfo:
New Enum Constants
VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION
- Extending VkStructureType:
VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR
VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR
VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR
VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR
Examples
// Get features with a hypothetical future extension.
VkHypotheticalExtensionFeaturesKHR hypotheticalFeatures =
{
.sType = VK_STRUCTURE_TYPE_HYPOTHETICAL_FEATURES_KHR,
.pNext = NULL,
};
VkPhysicalDeviceFeatures2KHR features =
{
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,
.pNext = &hypotheticalFeatures,
};
// After this call, features and hypotheticalFeatures have been filled out.
vkGetPhysicalDeviceFeatures2KHR(physicalDevice, &features);
// Properties/limits can be chained and queried similarly.
// Enable some features:
VkHypotheticalExtensionFeaturesKHR enabledHypotheticalFeatures =
{
.sType = VK_STRUCTURE_TYPE_HYPOTHETICAL_FEATURES_KHR,
.pNext = NULL,
};
VkPhysicalDeviceFeatures2KHR enabledFeatures =
{
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,
.pNext = &enabledHypotheticalFeatures,
};
enabledFeatures.features.xyz = VK_TRUE;
enabledHypotheticalFeatures.abc = VK_TRUE;
VkDeviceCreateInfo deviceCreateInfo =
{
.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
.pNext = &enabledFeatures,
...
.pEnabledFeatures = NULL,
};
VkDevice device;
vkCreateDevice(physicalDevice, &deviceCreateInfo, NULL, &device);
Version History
- Revision 1, 2016-09-12 (Jeff Bolz)
- Internal revisions
- Revision 2, 2016-11-02 (Ian Elliott)
- Added ability for applications to use the physical-device components of device extensions before vkCreateDevice is called.