Revision control

++ #ifndef OPENXR_LOADER_NEGOTIATION_H_
++ #define OPENXR_LOADER_NEGOTIATION_H_ 1
++
++ /*
++ ** Copyright 2017-2026 The Khronos Group Inc.
++ **
++ ** SPDX-License-Identifier: Apache-2.0 OR MIT
++ */
++
++ /*
++ ** This header is generated from the Khronos OpenXR XML API Registry.
++ **
++ */
++
++ #include "openxr.h"
++
++ #ifdef __cplusplus
++ extern "C" {
++ #endif
++
++
++
++ // XR_LOADER_VERSION_1_0 is a preprocessor guard. Do not pass it to API calls.
++ #define XR_LOADER_VERSION_1_0 1
++
++ #define XR_CURRENT_LOADER_API_LAYER_VERSION 1
++
++
++ #define XR_CURRENT_LOADER_RUNTIME_VERSION 1
++
++
++ #define XR_LOADER_INFO_STRUCT_VERSION 1
++
++
++ #define XR_API_LAYER_INFO_STRUCT_VERSION 1
++
++
++ #define XR_RUNTIME_INFO_STRUCT_VERSION 1
++
++
++ #define XR_API_LAYER_NEXT_INFO_STRUCT_VERSION 1
++
++
++ #define XR_API_LAYER_CREATE_INFO_STRUCT_VERSION 1
++
++
++ #define XR_API_LAYER_MAX_SETTINGS_PATH_SIZE 512
++
++
++ typedef enum XrLoaderInterfaceStructs {
++ XR_LOADER_INTERFACE_STRUCT_UNINTIALIZED = 0,
++ XR_LOADER_INTERFACE_STRUCT_LOADER_INFO = 1,
++ XR_LOADER_INTERFACE_STRUCT_API_LAYER_REQUEST = 2,
++ XR_LOADER_INTERFACE_STRUCT_RUNTIME_REQUEST = 3,
++ XR_LOADER_INTERFACE_STRUCT_API_LAYER_CREATE_INFO = 4,
++ XR_LOADER_INTERFACE_STRUCT_API_LAYER_NEXT_INFO = 5,
++ XR_LOADER_INTERFACE_STRUCTS_MAX_ENUM = 0x7FFFFFFF
++ } XrLoaderInterfaceStructs;
++ typedef XrResult (XRAPI_PTR *PFN_xrGetInstanceProcAddr)(XrInstance instance, const char* name, PFN_xrVoidFunction* function);
++
++ typedef struct XrApiLayerCreateInfo XrApiLayerCreateInfo;
++ typedef XrResult (XRAPI_PTR *PFN_xrCreateApiLayerInstance)(
++ const XrInstanceCreateInfo* info,
++ const XrApiLayerCreateInfo* apiLayerInfo,
++ XrInstance* instance);
++
++ typedef struct XrApiLayerNextInfo {
++ XrLoaderInterfaceStructs structType;
++ uint32_t structVersion;
++ size_t structSize;
++ char layerName[XR_MAX_API_LAYER_NAME_SIZE];
++ PFN_xrGetInstanceProcAddr nextGetInstanceProcAddr;
++ PFN_xrCreateApiLayerInstance nextCreateApiLayerInstance;
++ struct XrApiLayerNextInfo* next;
++ } XrApiLayerNextInfo;
++
++ typedef struct XrApiLayerCreateInfo {
++ XrLoaderInterfaceStructs structType;
++ uint32_t structVersion;
++ size_t structSize;
++ void* XR_MAY_ALIAS loaderInstance;
++ char settings_file_location[XR_API_LAYER_MAX_SETTINGS_PATH_SIZE];
++ XrApiLayerNextInfo* nextInfo;
++ } XrApiLayerCreateInfo;
++
++ typedef struct XrNegotiateLoaderInfo {
++ XrLoaderInterfaceStructs structType;
++ uint32_t structVersion;
++ size_t structSize;
++ uint32_t minInterfaceVersion;
++ uint32_t maxInterfaceVersion;
++ XrVersion minApiVersion;
++ XrVersion maxApiVersion;
++ } XrNegotiateLoaderInfo;
++
++ typedef struct XrNegotiateRuntimeRequest {
++ XrLoaderInterfaceStructs structType;
++ uint32_t structVersion;
++ size_t structSize;
++ uint32_t runtimeInterfaceVersion;
++ XrVersion runtimeApiVersion;
++ PFN_xrGetInstanceProcAddr getInstanceProcAddr;
++ } XrNegotiateRuntimeRequest;
++
++ typedef struct XrNegotiateApiLayerRequest {
++ XrLoaderInterfaceStructs structType;
++ uint32_t structVersion;
++ size_t structSize;
++ uint32_t layerInterfaceVersion;
++ XrVersion layerApiVersion;
++ PFN_xrGetInstanceProcAddr getInstanceProcAddr;
++ PFN_xrCreateApiLayerInstance createApiLayerInstance;
++ } XrNegotiateApiLayerRequest;
++
++ typedef XrResult (XRAPI_PTR *PFN_xrCreateApiLayerInstance)(const XrInstanceCreateInfo* info, const XrApiLayerCreateInfo* layerInfo, XrInstance* instance);
++ typedef XrResult (XRAPI_PTR *PFN_xrNegotiateLoaderRuntimeInterface)(const XrNegotiateLoaderInfo* loaderInfo, XrNegotiateRuntimeRequest* runtimeRequest);
++ typedef XrResult (XRAPI_PTR *PFN_xrNegotiateLoaderApiLayerInterface)(const XrNegotiateLoaderInfo* loaderInfo, const char* layerName, XrNegotiateApiLayerRequest* apiLayerRequest);
++
++ #ifndef XR_NO_PROTOTYPES
++ #ifdef XR_EXTENSION_PROTOTYPES
++ XRAPI_ATTR XrResult XRAPI_CALL xrCreateApiLayerInstance(
++ const XrInstanceCreateInfo* info,
++ const XrApiLayerCreateInfo* layerInfo,
++ XrInstance* instance);
++
++ XRAPI_ATTR XrResult XRAPI_CALL xrNegotiateLoaderRuntimeInterface(
++ const XrNegotiateLoaderInfo* loaderInfo,
++ XrNegotiateRuntimeRequest* runtimeRequest);
++
++ XRAPI_ATTR XrResult XRAPI_CALL xrNegotiateLoaderApiLayerInterface(
++ const XrNegotiateLoaderInfo* loaderInfo,
++ const char* layerName,
++ XrNegotiateApiLayerRequest* apiLayerRequest);
++ #endif /* XR_EXTENSION_PROTOTYPES */
++ #endif /* !XR_NO_PROTOTYPES */
++
++ #ifdef __cplusplus
++ }
++ #endif
++
++ #endif