1// Copyright 2020-2024 The Khronos Group Inc. 2// 3// SPDX-License-Identifier: CC-BY-4.0 4 5include::{generated}/meta/{refprefix}VK_EXT_private_data.adoc[] 6 7=== Other Extension Metadata 8 9*Last Modified Date*:: 10 2020-03-25 11*IP Status*:: 12 No known IP claims. 13*Contributors*:: 14 - Matthew Rusch, NVIDIA 15 - Nuno Subtil, NVIDIA 16 - Piers Daniell, NVIDIA 17 - Jeff Bolz, NVIDIA 18 19=== Description 20 21This extension is a device extension which enables attaching arbitrary 22payloads to Vulkan objects. 23It introduces the idea of private data slots as a means of storing a 64-bit 24unsigned integer of application defined data. 25Private data slots can be created or destroyed any time an associated device 26is available. 27Private data slots can be reserved at device creation time, and limiting use 28to the amount reserved will allow the extension to exhibit better 29performance characteristics. 30 31include::{generated}/interfaces/VK_EXT_private_data.adoc[] 32 33=== Promotion to Vulkan 1.3 34 35Functionality in this extension is included in core Vulkan 1.3, with the EXT 36suffix omitted. 37The original type, enum and command names are still available as aliases of 38the core functionality. 39 40=== Examples 41 42 * In progress 43 44=== Issues 45 46(1) If I have to create a slink:VkPrivateDataSlot to store and retrieve data 47on an object, how does this extension help me? Will I not need to store the 48slink:VkPrivateDataSlot mapping with each object, and if I am doing that, I 49might as well just store the original data! 50-- 51**RESOLVED:** The slink:VkPrivateDataSlot can be thought of as an opaque 52index into storage that is reserved in each object. 53That is, you can use the same slink:VkPrivateDataSlot with each object for a 54specific piece of information. 55For example, if a layer wishes to track per-object information, the layer 56only needs to allocate one slink:VkPrivateDataSlot per device and it can use 57that private data slot for all of the device's child objects. 58This allows multiple layers to store private data without conflicting with 59each other's and/or the application's private data. 60-- 61 62(2) What if I need to store more than 64-bits of information per object? 63-- 64**RESOLVED:** The data that you store per object could be a pointer to 65another object or structure of your own allocation. 66-- 67 68=== Version History 69 70 * Revision 1, 2020-01-15 (Matthew Rusch) 71 ** Initial draft 72