NVIDIA DRIVE 5.0 Linux PDK API Reference

5.0.4.0 Release

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Vulkan Specs and Extensions

Vulkan is a new generation graphics and compute API that provides high- efficiency, cross-platform access to modern GPUs used in a wide variety of devices from PCs and consoles to mobile phones and embedded platforms.

Khronos launched the Vulkan 1.0 specification on February 16th, 2016 and Khronos members released Vulkan drivers and SDKs on the same day. Everything you need to come up to speed on Vulkan and to forge ahead and explore whether Vulkan is right for your engine or application is now available on the official Vulkan homepage.

NVIDIA DRIVE™ Linux supports Vulkan 1.0.

Vulkan Specifications

NVIDIA DRIVE™ Linux supports the following Vulkan specification.

Vulkan Extensions

Instance Extensions

The Vulkan driver in this release supports a subset of the following Vulkan instance extensions. You can determine exactly which Vulkan extensions your NVIDIA DRIVE™ product supports with code such as the following. This code is from KhronosGroup/Vulkan-LoaderAndValidationLayers at:

https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/demos/vulkaninfo.c

static void
AppGetGlobalLayerExtensions(char *layer_name, uint32_t *extension_count,
VkExtensionProperties **extension_properties) {
VkResult err;
uint32_t ext_count = 0;
VkExtensionProperties *ext_ptr = NULL;
/* repeat get until VK_INCOMPLETE goes away */
do {
// gets the extension count if the last parameter is NULL
err = vkEnumerateInstanceExtensionProperties(layer_name, &ext_count,
NULL);
assert(!err);
if (ext_ptr) {
free(ext_ptr);
}
ext_ptr = malloc(ext_count * sizeof(VkExtensionProperties));
// gets the extension properties if the last parameter is not NULL
err = vkEnumerateInstanceExtensionProperties(layer_name, &ext_count,
ext_ptr);
} while (err == VK_INCOMPLETE);
assert(!err);
*extension_count = ext_count;
*extension_properties = ext_ptr;
}



Device Extensions

The Vulkan driver in this release supports a subset of the following Vulkan device extensions. You can determine exactly which Vulkan extensions your NVIDIA DRIVE™ product supports with code such as the following. This code is from KhronosGroup/Vulkan-LoaderAndValidationLayers at:

https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/demos/vulkaninfo.c

static void AppGetPhysicalDeviceLayerExtensions(
struct AppGpu *gpu, char *layer_name, uint32_t *extension_count,
VkExtensionProperties **extension_properties) {
VkResult err;
uint32_t ext_count = 0;
VkExtensionProperties *ext_ptr = NULL;
/* repeat get until VK_INCOMPLETE goes away */
do {
err = vkEnumerateDeviceExtensionProperties(gpu->obj, layer_name,
&ext_count, NULL);
assert(!err);
if (ext_ptr) {
free(ext_ptr);
}
ext_ptr = malloc(ext_count * sizeof(VkExtensionProperties));
err = vkEnumerateDeviceExtensionProperties(gpu->obj, layer_name,
&ext_count, ext_ptr);
} while (err == VK_INCOMPLETE);
assert(!err);
*extension_count = ext_count;
*extension_properties = ext_ptr;
}