Vulkan-Docs/appendices/VK_KHR_get_physical_device_...

148 lines
5.1 KiB
Plaintext

// Copyright (c) 2016-2019 Khronos Group. This work is licensed under a
// Creative Commons Attribution 4.0 International License; see
// http://creativecommons.org/licenses/by/4.0/
include::meta/VK_KHR_get_physical_device_properties2.txt[]
*Last Modified Date*::
2017-09-05
*IP Status*::
No known IP claims.
*Interactions and External Dependencies*::
- Promoted to Vulkan 1.1 Core
*Contributors*::
- Jeff Bolz, NVIDIA
- Ian Elliott, Google
This extension provides new entry points to query device features, device
properties, and format properties in a way that can be easily extended by
other extensions, without introducing any further entry points.
The Vulkan 1.0 feature/limit/formatproperty structures do not include
ptext:sType/ptext:pNext members.
This extension wraps them in new structures with ptext:sType/ptext: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 ftext:vkGetPhysicalDevice* command in core
Vulkan 1.0.
The new feature structure (and a chain of extension 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 flink:vkCreateDevice is called.
=== New Object Types
None.
=== New Enum Constants
* Extending elink:VkStructureType:
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR
** ename:VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR
** ename:VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR
** ename:VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR
** ename:VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR
** ename:VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR
=== New Enums
None.
=== New Structures
* slink:VkPhysicalDeviceFeatures2KHR
* slink:VkPhysicalDeviceProperties2KHR
* slink:VkFormatProperties2KHR
* slink:VkImageFormatProperties2KHR
* slink:VkPhysicalDeviceImageFormatInfo2KHR
* slink:VkQueueFamilyProperties2KHR
* slink:VkPhysicalDeviceMemoryProperties2KHR
* slink:VkSparseImageFormatProperties2KHR
* slink:VkPhysicalDeviceSparseImageFormatInfo2KHR
=== New Functions
* flink:vkGetPhysicalDeviceFeatures2KHR
* flink:vkGetPhysicalDeviceProperties2KHR
* flink:vkGetPhysicalDeviceFormatProperties2KHR
* flink:vkGetPhysicalDeviceImageFormatProperties2KHR
* flink:vkGetPhysicalDeviceQueueFamilyProperties2KHR
* flink:vkGetPhysicalDeviceMemoryProperties2KHR
* flink:vkGetPhysicalDeviceSparseImageFormatProperties2KHR
=== 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.
=== Issues
None.
=== Examples
[source,c++]
----------------------------------------
// Get features with a hypothetical future extension.
VkHypotheticalExtensionFeaturesKHR hypotheticalFeatures =
{
VK_STRUCTURE_TYPE_HYPOTHETICAL_FEATURES_KHR, // sType
NULL, // pNext
};
VkPhysicalDeviceFeatures2KHR features =
{
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR, // sType
&hypotheticalFeatures, // pNext
};
// 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 =
{
VK_STRUCTURE_TYPE_HYPOTHETICAL_FEATURES_KHR, // sType
NULL, // pNext
};
VkPhysicalDeviceFeatures2KHR enabledFeatures =
{
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR, // sType
&enabledHypotheticalFeatures, // pNext
};
enabledFeatures.features.xyz = VK_TRUE;
enabledHypotheticalFeatures.abc = VK_TRUE;
VkDeviceCreateInfo deviceCreateInfo =
{
VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO, // sType
&enabledFeatures, // pNext
...
NULL, // pEnabledFeatures
}
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.