148 lines
5.1 KiB
Plaintext
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.
|