// Copyright (c) 2017-2024, The Khronos Group Inc. // Copyright (c) 2017-2019 Valve Corporation // Copyright (c) 2017-2019 LunarG, Inc. // Copyright (c) 2019 Collabora, Ltd. // // SPDX-License-Identifier: Apache-2.0 OR MIT // // Initial Authors: Mark Young <[email protected]>, Rylie Pavlik <[email protected] // /*! * @file * * The core of an XR_EXT_debug_utils implementation, used/shared by the loader and several SDK layers. */ #pragma once #include "hex_and_handles.h" #include <openxr/openxr.h> #include <memory> #include <string> #include <unordered_map> #include <vector> struct XrSdkGenericObject { … }; struct XrSdkLogObjectInfo { … }; //! True if the two object infos have the same handle value and handle type static inline bool Equivalent(XrSdkLogObjectInfo const& a, XrSdkLogObjectInfo const& b) { … } //! @overload static inline bool Equivalent(XrDebugUtilsObjectNameInfoEXT const& a, XrSdkLogObjectInfo const& b) { … } //! @overload static inline bool Equivalent(XrSdkLogObjectInfo const& a, XrDebugUtilsObjectNameInfoEXT const& b) { … } /// Object info registered with calls to xrSetDebugUtilsObjectNameEXT class ObjectInfoCollection { … }; struct XrSdkSessionLabel; XrSdkSessionLabelPtr; XrSdkSessionLabelList; struct XrSdkSessionLabel { … }; /// The metadata for a collection of objects. Must persist unmodified during the entire debug messenger call! struct NamesAndLabels { … }; struct AugmentedCallbackData { … }; /// Tracks all the data (handle names and session labels) required to fully augment XR_EXT_debug_utils-related calls. class DebugUtilsData { … };