VK_EXT_private_data(3)

# VK_EXT_private_data(3) Manual Page

## Name

VK_EXT_private_data - device extension

## Registered Extension Number

296

## Revision

1

## Ratification Status

Not ratified

## Extension and Version Dependencies

VK_KHR_get_physical_device_properties2
or
Vulkan Version 1.1

## Deprecation State

- Promoted to Vulkan 1.3

## Contact

- Matthew Rusch [GitHub]mattruschnv

## Other Extension Metadata

Last Modified Date

  2020-03-25

IP Status

  No known IP claims.

Contributors

  - Matthew Rusch, NVIDIA

  - Nuno Subtil, NVIDIA

  - Piers Daniell, NVIDIA

  - Jeff Bolz, NVIDIA

## Description

This extension is a device extension which enables attaching arbitrary payloads to Vulkan objects. It introduces the idea of private data slots as a means of storing a 64-bit unsigned integer of application-defined data. Private data slots can be created or destroyed any time an associated device is available. Private data slots can be reserved at device creation time, and limiting use to the amount reserved will allow the extension to exhibit better performance characteristics.

## New Object Types

- VkPrivateDataSlotEXT

## New Commands

- vkCreatePrivateDataSlotEXT

- vkDestroyPrivateDataSlotEXT

- vkGetPrivateDataEXT

- vkSetPrivateDataEXT

## New Structures

- VkPrivateDataSlotCreateInfoEXT

- Extending VkDeviceCreateInfo:

  - VkDevicePrivateDataCreateInfoEXT

- Extending VkPhysicalDeviceFeatures2, VkDeviceCreateInfo:

  - VkPhysicalDevicePrivateDataFeaturesEXT

## New Bitmasks

- VkPrivateDataSlotCreateFlagsEXT

## New Enum Constants

- `VK_EXT_PRIVATE_DATA_EXTENSION_NAME`

- `VK_EXT_PRIVATE_DATA_SPEC_VERSION`

- Extending VkObjectType:

  - VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT

- Extending VkStructureType:

  - VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT

  - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT

  - VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT

## Promotion to Vulkan 1.3

Vulkan APIs in this extension are included in core Vulkan 1.3, with the EXT suffix omitted. External interactions defined by this extension, such as SPIR-V token names, retain their original names. The original Vulkan API names are still available as aliases of the core functionality.

## Examples

- In progress

## Issues

(1) If I have to create a VkPrivateDataSlot to store and retrieve data on an object, how does this extension help me? Will I not need to store the VkPrivateDataSlot mapping with each object, and if I am doing that, I might as well just store the original data!

The VkPrivateDataSlot can be thought of as an opaque index into storage that is reserved in each object. That is, you can use the same VkPrivateDataSlot with each object for a specific piece of information. For example, if a layer wishes to track per-object information, the layer only needs to allocate one VkPrivateDataSlot per device and it can use that private data slot for all of the device’s child objects. This allows multiple layers to store private data without conflicting with each other’s and/or the application’s private data.

2) What if I need to store more than 64-bits of information per object?

The data that you store per object could be a pointer to another object or structure of your own allocation.

## Version History

- Revision 1, 2020-01-15 (Matthew Rusch)

  - Initial draft

## See Also

No cross-references are available

## Document Notes

For more information, see the Vulkan Specification.

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

## Copyright

Copyright 2014-2026 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0