xref: /aosp_15_r20/external/vulkan-validation-layers/docs/unique_objects_layer.md (revision b7893ccf7851cd6a48cc5a1e965257d8a5cdcc70)
1*b7893ccfSSadaf Ebrahimi<!-- markdownlint-disable MD041 -->
2*b7893ccfSSadaf Ebrahimi[![Khronos Vulkan][1]][2]
3*b7893ccfSSadaf Ebrahimi
4*b7893ccfSSadaf Ebrahimi[1]: https://vulkan.lunarg.com/img/Vulkan_100px_Dec16.png "https://www.khronos.org/vulkan/"
5*b7893ccfSSadaf Ebrahimi[2]: https://www.khronos.org/vulkan/
6*b7893ccfSSadaf Ebrahimi
7*b7893ccfSSadaf Ebrahimi# VK\_LAYER\_GOOGLE\_unique\_objects
8*b7893ccfSSadaf Ebrahimi[![Creative Commons][3]][4]
9*b7893ccfSSadaf Ebrahimi
10*b7893ccfSSadaf Ebrahimi[3]: https://i.creativecommons.org/l/by-nd/4.0/88x31.png "Creative Commons License"
11*b7893ccfSSadaf Ebrahimi[4]: https://creativecommons.org/licenses/by-nd/4.0/
12*b7893ccfSSadaf Ebrahimi
13*b7893ccfSSadaf EbrahimiThe `VK_LAYER_LUNARG_unique_objects` is a validation-supporting utility layer which enables consistent and coherent validation in addition to proper operation on systems which return non-unique object handles.  This layer aliases all non-dispatchable Vulkan objects with a unique identifier at object-creation time. The aliased handles are used during validation to ensure that duplicate object handles are correctly managed and tracked by the validation layers.
14*b7893ccfSSadaf Ebrahimi
15*b7893ccfSSadaf Ebrahimi**Note**:
16*b7893ccfSSadaf Ebrahimi
17*b7893ccfSSadaf Ebrahimi* For optimal efficiency, this layer MUST be last in the chain (closest to the display driver).
18*b7893ccfSSadaf Ebrahimi* If you are developing Vulkan extensions which include new APIs taking one or more Vulkan dispatchable objects as parameters, you may find it necessary to disable the unique objects layer in order use the validation layers. The best way to do this is to explicitly load the layers in the optimal order specified earlier but without this layer. This should result in a minimal decrease in functionality but still allow you to benefit from using the validation layers.
19