142 lines
4.9 KiB
C++
142 lines
4.9 KiB
C++
#ifndef OPENXR_LOADER_NEGOTIATION_H_
|
|
#define OPENXR_LOADER_NEGOTIATION_H_ 1
|
|
|
|
/*
|
|
** Copyright 2017-2024, 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
|