985 lines
53 KiB
C
985 lines
53 KiB
C
/* Automatically generated from OpenXR xr.xml; DO NOT EDIT!
|
|
*
|
|
* This file is generated from OpenXR xr.xml file covered
|
|
* by the following copyright and permission notice:
|
|
*
|
|
* Copyright (c) 2017-2021, The Khronos Group Inc.
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0 OR MIT
|
|
*
|
|
* ------------------------------------------------------------------------
|
|
*
|
|
* This file, xr.xml, is the OpenXR API Registry. It is a critically important
|
|
* and normative part of the OpenXR Specification, including a canonical
|
|
* machine-readable definition of the API, parameter and member validation
|
|
* language incorporated into the Specification and reference pages, and other
|
|
* material which is registered by Khronos, such as tags used by extension and
|
|
* layer authors. The only authoritative version of xr.xml is the one
|
|
* maintained in the default branch of the Khronos OpenXR GitHub project.
|
|
*
|
|
*/
|
|
|
|
#include "wine/debug.h"
|
|
#include "wine/vulkan.h"
|
|
#include "d3d11.h"
|
|
#include "d3d12.h"
|
|
#define WINE_XR_HOST
|
|
#include "wineopenxr.h"
|
|
#include "openxr_private.h"
|
|
|
|
WINE_DEFAULT_DEBUG_CHANNEL(openxr);
|
|
|
|
#if defined(USE_STRUCT_CONVERSION)
|
|
static inline void convert_XrMarkerSpaceCreateInfoVARJO_win_to_host(const XrMarkerSpaceCreateInfoVARJO *in, XrMarkerSpaceCreateInfoVARJO_host *out)
|
|
{
|
|
if (!in) return;
|
|
|
|
out->type = in->type;
|
|
out->next = in->next;
|
|
out->markerId = in->markerId;
|
|
out->poseInMarkerSpace = in->poseInMarkerSpace;
|
|
}
|
|
|
|
static inline void convert_XrSceneMeshBuffersGetInfoMSFT_win_to_host(const XrSceneMeshBuffersGetInfoMSFT *in, XrSceneMeshBuffersGetInfoMSFT_host *out)
|
|
{
|
|
if (!in) return;
|
|
|
|
out->type = in->type;
|
|
out->next = in->next;
|
|
out->meshBufferId = in->meshBufferId;
|
|
}
|
|
|
|
#endif /* USE_STRUCT_CONVERSION */
|
|
|
|
XrResult convert_XrInstanceCreateInfo_struct_chain(const void *next, XrInstanceCreateInfo *out_struct)
|
|
{
|
|
XrBaseOutStructure *out_header = (XrBaseOutStructure *)out_struct;
|
|
const XrBaseInStructure *in_header;
|
|
|
|
out_header->next = NULL;
|
|
|
|
for (in_header = next; in_header; in_header = in_header->next)
|
|
{
|
|
switch (in_header->type)
|
|
{
|
|
case XR_TYPE_INSTANCE_CREATE_INFO:
|
|
break;
|
|
|
|
default:
|
|
WINE_FIXME("Application requested a linked structure of type %u.\n", in_header->type);
|
|
}
|
|
}
|
|
|
|
return XR_SUCCESS;
|
|
}
|
|
|
|
void free_XrInstanceCreateInfo_struct_chain(XrInstanceCreateInfo *s)
|
|
{
|
|
XrBaseOutStructure *header = (void *)s->next;
|
|
|
|
while (header)
|
|
{
|
|
void *prev = header;
|
|
header = header->next;
|
|
HeapFree(GetProcessHeap(), 0, prev);
|
|
}
|
|
|
|
s->next = NULL;
|
|
}
|
|
|
|
XrResult WINAPI wine_xrAcquireSwapchainImage(XrSwapchain swapchain, const XrSwapchainImageAcquireInfo *acquireInfo, uint32_t *index)
|
|
{
|
|
WINE_TRACE("%p, %p, %p\n", swapchain, acquireInfo, index);
|
|
return xrAcquireSwapchainImage(((wine_XrSwapchain *)swapchain)->swapchain, acquireInfo, index);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrApplyHapticFeedback(XrSession session, const XrHapticActionInfo *hapticActionInfo, const XrHapticBaseHeader *hapticFeedback)
|
|
{
|
|
WINE_TRACE("%p, %p, %p\n", session, hapticActionInfo, hapticFeedback);
|
|
return xrApplyHapticFeedback(((wine_XrSession *)session)->session, hapticActionInfo, hapticFeedback);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrAttachSessionActionSets(XrSession session, const XrSessionActionSetsAttachInfo *attachInfo)
|
|
{
|
|
WINE_TRACE("%p, %p\n", session, attachInfo);
|
|
return xrAttachSessionActionSets(((wine_XrSession *)session)->session, attachInfo);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrBeginFrame(XrSession session, const XrFrameBeginInfo *frameBeginInfo)
|
|
{
|
|
WINE_TRACE("%p, %p\n", session, frameBeginInfo);
|
|
return xrBeginFrame(((wine_XrSession *)session)->session, frameBeginInfo);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrBeginSession(XrSession session, const XrSessionBeginInfo *beginInfo)
|
|
{
|
|
WINE_TRACE("%p, %p\n", session, beginInfo);
|
|
return xrBeginSession(((wine_XrSession *)session)->session, beginInfo);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrClearSpatialAnchorStoreMSFT(XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore)
|
|
{
|
|
WINE_TRACE("%p\n", spatialAnchorStore);
|
|
return ((wine_XrSpatialAnchorStoreConnectionMSFT *)spatialAnchorStore)->wine_session->wine_instance->funcs.p_xrClearSpatialAnchorStoreMSFT(((wine_XrSpatialAnchorStoreConnectionMSFT *)spatialAnchorStore)->spatial_anchor_store_connection);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrComputeNewSceneMSFT(XrSceneObserverMSFT sceneObserver, const XrNewSceneComputeInfoMSFT *computeInfo)
|
|
{
|
|
WINE_TRACE("%p, %p\n", sceneObserver, computeInfo);
|
|
return ((wine_XrSceneObserverMSFT *)sceneObserver)->wine_session->wine_instance->funcs.p_xrComputeNewSceneMSFT(((wine_XrSceneObserverMSFT *)sceneObserver)->scene_observer_msft, computeInfo);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrCreateAction(XrActionSet actionSet, const XrActionCreateInfo *createInfo, XrAction *action)
|
|
{
|
|
WINE_TRACE("%p, %p, %p\n", actionSet, createInfo, action);
|
|
return xrCreateAction(actionSet, createInfo, action);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrCreateActionSet(XrInstance instance, const XrActionSetCreateInfo *createInfo, XrActionSet *actionSet)
|
|
{
|
|
WINE_TRACE("%p, %p, %p\n", instance, createInfo, actionSet);
|
|
return xrCreateActionSet(((wine_XrInstance *)instance)->instance, createInfo, actionSet);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrCreateActionSpace(XrSession session, const XrActionSpaceCreateInfo *createInfo, XrSpace *space)
|
|
{
|
|
WINE_TRACE("%p, %p, %p\n", session, createInfo, space);
|
|
return xrCreateActionSpace(((wine_XrSession *)session)->session, createInfo, space);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrCreateHandMeshSpaceMSFT(XrHandTrackerEXT handTracker, const XrHandMeshSpaceCreateInfoMSFT *createInfo, XrSpace *space)
|
|
{
|
|
WINE_TRACE("%p, %p, %p\n", handTracker, createInfo, space);
|
|
return ((wine_XrHandTrackerEXT *)handTracker)->wine_session->wine_instance->funcs.p_xrCreateHandMeshSpaceMSFT(((wine_XrHandTrackerEXT *)handTracker)->hand_tracker, createInfo, space);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrCreateMarkerSpaceVARJO(XrSession session, const XrMarkerSpaceCreateInfoVARJO *createInfo, XrSpace *space)
|
|
{
|
|
#if defined(USE_STRUCT_CONVERSION)
|
|
XrResult result;
|
|
XrMarkerSpaceCreateInfoVARJO_host createInfo_host;
|
|
WINE_TRACE("%p, %p, %p\n", session, createInfo, space);
|
|
|
|
convert_XrMarkerSpaceCreateInfoVARJO_win_to_host(createInfo, &createInfo_host);
|
|
result = ((wine_XrSession *)session)->wine_instance->funcs.p_xrCreateMarkerSpaceVARJO(((wine_XrSession *)session)->session, &createInfo_host, space);
|
|
|
|
return result;
|
|
#else
|
|
WINE_TRACE("%p, %p, %p\n", session, createInfo, space);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrCreateMarkerSpaceVARJO(((wine_XrSession *)session)->session, createInfo, space);
|
|
#endif
|
|
}
|
|
|
|
XrResult WINAPI wine_xrCreateReferenceSpace(XrSession session, const XrReferenceSpaceCreateInfo *createInfo, XrSpace *space)
|
|
{
|
|
WINE_TRACE("%p, %p, %p\n", session, createInfo, space);
|
|
return xrCreateReferenceSpace(((wine_XrSession *)session)->session, createInfo, space);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrCreateSpatialAnchorSpaceMSFT(XrSession session, const XrSpatialAnchorSpaceCreateInfoMSFT *createInfo, XrSpace *space)
|
|
{
|
|
WINE_TRACE("%p, %p, %p\n", session, createInfo, space);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrCreateSpatialAnchorSpaceMSFT(((wine_XrSession *)session)->session, createInfo, space);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrCreateSpatialGraphNodeSpaceMSFT(XrSession session, const XrSpatialGraphNodeSpaceCreateInfoMSFT *createInfo, XrSpace *space)
|
|
{
|
|
WINE_TRACE("%p, %p, %p\n", session, createInfo, space);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrCreateSpatialGraphNodeSpaceMSFT(((wine_XrSession *)session)->session, createInfo, space);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrDeserializeSceneMSFT(XrSceneObserverMSFT sceneObserver, const XrSceneDeserializeInfoMSFT *deserializeInfo)
|
|
{
|
|
WINE_TRACE("%p, %p\n", sceneObserver, deserializeInfo);
|
|
return ((wine_XrSceneObserverMSFT *)sceneObserver)->wine_session->wine_instance->funcs.p_xrDeserializeSceneMSFT(((wine_XrSceneObserverMSFT *)sceneObserver)->scene_observer_msft, deserializeInfo);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrDestroyAction(XrAction action)
|
|
{
|
|
WINE_TRACE("%p\n", action);
|
|
return xrDestroyAction(action);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrDestroyActionSet(XrActionSet actionSet)
|
|
{
|
|
WINE_TRACE("%p\n", actionSet);
|
|
return xrDestroyActionSet(actionSet);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrDestroySpace(XrSpace space)
|
|
{
|
|
WINE_TRACE("%p\n", space);
|
|
return xrDestroySpace(space);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrEndSession(XrSession session)
|
|
{
|
|
WINE_TRACE("%p\n", session);
|
|
return xrEndSession(((wine_XrSession *)session)->session);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrEnumerateApiLayerProperties(uint32_t propertyCapacityInput, uint32_t *propertyCountOutput, XrApiLayerProperties *properties)
|
|
{
|
|
WINE_TRACE("%u, %p, %p\n", propertyCapacityInput, propertyCountOutput, properties);
|
|
return xrEnumerateApiLayerProperties(propertyCapacityInput, propertyCountOutput, properties);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrEnumerateBoundSourcesForAction(XrSession session, const XrBoundSourcesForActionEnumerateInfo *enumerateInfo, uint32_t sourceCapacityInput, uint32_t *sourceCountOutput, XrPath *sources)
|
|
{
|
|
WINE_TRACE("%p, %p, %u, %p, %p\n", session, enumerateInfo, sourceCapacityInput, sourceCountOutput, sources);
|
|
return xrEnumerateBoundSourcesForAction(((wine_XrSession *)session)->session, enumerateInfo, sourceCapacityInput, sourceCountOutput, sources);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrEnumerateColorSpacesFB(XrSession session, uint32_t colorSpaceCapacityInput, uint32_t *colorSpaceCountOutput, XrColorSpaceFB *colorSpaces)
|
|
{
|
|
WINE_TRACE("%p, %u, %p, %p\n", session, colorSpaceCapacityInput, colorSpaceCountOutput, colorSpaces);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrEnumerateColorSpacesFB(((wine_XrSession *)session)->session, colorSpaceCapacityInput, colorSpaceCountOutput, colorSpaces);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrEnumerateDisplayRefreshRatesFB(XrSession session, uint32_t displayRefreshRateCapacityInput, uint32_t *displayRefreshRateCountOutput, float *displayRefreshRates)
|
|
{
|
|
WINE_TRACE("%p, %u, %p, %p\n", session, displayRefreshRateCapacityInput, displayRefreshRateCountOutput, displayRefreshRates);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrEnumerateDisplayRefreshRatesFB(((wine_XrSession *)session)->session, displayRefreshRateCapacityInput, displayRefreshRateCountOutput, displayRefreshRates);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrEnumerateEnvironmentBlendModes(XrInstance instance, XrSystemId systemId, XrViewConfigurationType viewConfigurationType, uint32_t environmentBlendModeCapacityInput, uint32_t *environmentBlendModeCountOutput, XrEnvironmentBlendMode *environmentBlendModes)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, %#x, %u, %p, %p\n", instance, wine_dbgstr_longlong(systemId), viewConfigurationType, environmentBlendModeCapacityInput, environmentBlendModeCountOutput, environmentBlendModes);
|
|
return xrEnumerateEnvironmentBlendModes(((wine_XrInstance *)instance)->instance, systemId, viewConfigurationType, environmentBlendModeCapacityInput, environmentBlendModeCountOutput, environmentBlendModes);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrEnumeratePersistedSpatialAnchorNamesMSFT(XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore, uint32_t spatialAnchorNamesCapacityInput, uint32_t *spatialAnchorNamesCountOutput, XrSpatialAnchorPersistenceNameMSFT *persistedAnchorNames)
|
|
{
|
|
WINE_TRACE("%p, %u, %p, %p\n", spatialAnchorStore, spatialAnchorNamesCapacityInput, spatialAnchorNamesCountOutput, persistedAnchorNames);
|
|
return ((wine_XrSpatialAnchorStoreConnectionMSFT *)spatialAnchorStore)->wine_session->wine_instance->funcs.p_xrEnumeratePersistedSpatialAnchorNamesMSFT(((wine_XrSpatialAnchorStoreConnectionMSFT *)spatialAnchorStore)->spatial_anchor_store_connection, spatialAnchorNamesCapacityInput, spatialAnchorNamesCountOutput, persistedAnchorNames);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrEnumerateReferenceSpaces(XrSession session, uint32_t spaceCapacityInput, uint32_t *spaceCountOutput, XrReferenceSpaceType *spaces)
|
|
{
|
|
WINE_TRACE("%p, %u, %p, %p\n", session, spaceCapacityInput, spaceCountOutput, spaces);
|
|
return xrEnumerateReferenceSpaces(((wine_XrSession *)session)->session, spaceCapacityInput, spaceCountOutput, spaces);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrEnumerateReprojectionModesMSFT(XrInstance instance, XrSystemId systemId, XrViewConfigurationType viewConfigurationType, uint32_t modeCapacityInput, uint32_t *modeCountOutput, XrReprojectionModeMSFT *modes)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, %#x, %u, %p, %p\n", instance, wine_dbgstr_longlong(systemId), viewConfigurationType, modeCapacityInput, modeCountOutput, modes);
|
|
return ((wine_XrInstance *)instance)->funcs.p_xrEnumerateReprojectionModesMSFT(((wine_XrInstance *)instance)->instance, systemId, viewConfigurationType, modeCapacityInput, modeCountOutput, modes);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrEnumerateSceneComputeFeaturesMSFT(XrInstance instance, XrSystemId systemId, uint32_t featureCapacityInput, uint32_t *featureCountOutput, XrSceneComputeFeatureMSFT *features)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, %u, %p, %p\n", instance, wine_dbgstr_longlong(systemId), featureCapacityInput, featureCountOutput, features);
|
|
return ((wine_XrInstance *)instance)->funcs.p_xrEnumerateSceneComputeFeaturesMSFT(((wine_XrInstance *)instance)->instance, systemId, featureCapacityInput, featureCountOutput, features);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrEnumerateViewConfigurationViews(XrInstance instance, XrSystemId systemId, XrViewConfigurationType viewConfigurationType, uint32_t viewCapacityInput, uint32_t *viewCountOutput, XrViewConfigurationView *views)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, %#x, %u, %p, %p\n", instance, wine_dbgstr_longlong(systemId), viewConfigurationType, viewCapacityInput, viewCountOutput, views);
|
|
return xrEnumerateViewConfigurationViews(((wine_XrInstance *)instance)->instance, systemId, viewConfigurationType, viewCapacityInput, viewCountOutput, views);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrEnumerateViewConfigurations(XrInstance instance, XrSystemId systemId, uint32_t viewConfigurationTypeCapacityInput, uint32_t *viewConfigurationTypeCountOutput, XrViewConfigurationType *viewConfigurationTypes)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, %u, %p, %p\n", instance, wine_dbgstr_longlong(systemId), viewConfigurationTypeCapacityInput, viewConfigurationTypeCountOutput, viewConfigurationTypes);
|
|
return xrEnumerateViewConfigurations(((wine_XrInstance *)instance)->instance, systemId, viewConfigurationTypeCapacityInput, viewConfigurationTypeCountOutput, viewConfigurationTypes);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrEnumerateViveTrackerPathsHTCX(XrInstance instance, uint32_t pathCapacityInput, uint32_t *pathCountOutput, XrViveTrackerPathsHTCX *paths)
|
|
{
|
|
WINE_TRACE("%p, %u, %p, %p\n", instance, pathCapacityInput, pathCountOutput, paths);
|
|
return ((wine_XrInstance *)instance)->funcs.p_xrEnumerateViveTrackerPathsHTCX(((wine_XrInstance *)instance)->instance, pathCapacityInput, pathCountOutput, paths);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrGeometryInstanceSetTransformFB(XrGeometryInstanceFB instance, const XrGeometryInstanceTransformFB *transformation)
|
|
{
|
|
WINE_TRACE("%p, %p\n", instance, transformation);
|
|
return ((wine_XrGeometryInstanceFB *)instance)->wine_session->wine_instance->funcs.p_xrGeometryInstanceSetTransformFB(((wine_XrGeometryInstanceFB *)instance)->instance, transformation);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrGetActionStateBoolean(XrSession session, const XrActionStateGetInfo *getInfo, XrActionStateBoolean *state)
|
|
{
|
|
WINE_TRACE("%p, %p, %p\n", session, getInfo, state);
|
|
return xrGetActionStateBoolean(((wine_XrSession *)session)->session, getInfo, state);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrGetActionStateFloat(XrSession session, const XrActionStateGetInfo *getInfo, XrActionStateFloat *state)
|
|
{
|
|
WINE_TRACE("%p, %p, %p\n", session, getInfo, state);
|
|
return xrGetActionStateFloat(((wine_XrSession *)session)->session, getInfo, state);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrGetActionStatePose(XrSession session, const XrActionStateGetInfo *getInfo, XrActionStatePose *state)
|
|
{
|
|
WINE_TRACE("%p, %p, %p\n", session, getInfo, state);
|
|
return xrGetActionStatePose(((wine_XrSession *)session)->session, getInfo, state);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrGetActionStateVector2f(XrSession session, const XrActionStateGetInfo *getInfo, XrActionStateVector2f *state)
|
|
{
|
|
WINE_TRACE("%p, %p, %p\n", session, getInfo, state);
|
|
return xrGetActionStateVector2f(((wine_XrSession *)session)->session, getInfo, state);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrGetAudioInputDeviceGuidOculus(XrInstance instance, wchar_t buffer[])
|
|
{
|
|
WINE_TRACE("%p, %p\n", instance, buffer);
|
|
return ((wine_XrInstance *)instance)->funcs.p_xrGetAudioInputDeviceGuidOculus(((wine_XrInstance *)instance)->instance, buffer);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrGetAudioOutputDeviceGuidOculus(XrInstance instance, wchar_t buffer[])
|
|
{
|
|
WINE_TRACE("%p, %p\n", instance, buffer);
|
|
return ((wine_XrInstance *)instance)->funcs.p_xrGetAudioOutputDeviceGuidOculus(((wine_XrInstance *)instance)->instance, buffer);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrGetControllerModelKeyMSFT(XrSession session, XrPath topLevelUserPath, XrControllerModelKeyStateMSFT *controllerModelKeyState)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, %p\n", session, wine_dbgstr_longlong(topLevelUserPath), controllerModelKeyState);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrGetControllerModelKeyMSFT(((wine_XrSession *)session)->session, topLevelUserPath, controllerModelKeyState);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrGetControllerModelPropertiesMSFT(XrSession session, XrControllerModelKeyMSFT modelKey, XrControllerModelPropertiesMSFT *properties)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, %p\n", session, wine_dbgstr_longlong(modelKey), properties);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrGetControllerModelPropertiesMSFT(((wine_XrSession *)session)->session, modelKey, properties);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrGetControllerModelStateMSFT(XrSession session, XrControllerModelKeyMSFT modelKey, XrControllerModelStateMSFT *state)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, %p\n", session, wine_dbgstr_longlong(modelKey), state);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrGetControllerModelStateMSFT(((wine_XrSession *)session)->session, modelKey, state);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrGetCurrentInteractionProfile(XrSession session, XrPath topLevelUserPath, XrInteractionProfileState *interactionProfile)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, %p\n", session, wine_dbgstr_longlong(topLevelUserPath), interactionProfile);
|
|
return xrGetCurrentInteractionProfile(((wine_XrSession *)session)->session, topLevelUserPath, interactionProfile);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrGetDisplayRefreshRateFB(XrSession session, float *displayRefreshRate)
|
|
{
|
|
WINE_TRACE("%p, %p\n", session, displayRefreshRate);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrGetDisplayRefreshRateFB(((wine_XrSession *)session)->session, displayRefreshRate);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrGetHandMeshFB(XrHandTrackerEXT handTracker, XrHandTrackingMeshFB *mesh)
|
|
{
|
|
WINE_TRACE("%p, %p\n", handTracker, mesh);
|
|
return ((wine_XrHandTrackerEXT *)handTracker)->wine_session->wine_instance->funcs.p_xrGetHandMeshFB(((wine_XrHandTrackerEXT *)handTracker)->hand_tracker, mesh);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrGetInputSourceLocalizedName(XrSession session, const XrInputSourceLocalizedNameGetInfo *getInfo, uint32_t bufferCapacityInput, uint32_t *bufferCountOutput, char *buffer)
|
|
{
|
|
WINE_TRACE("%p, %p, %u, %p, %p\n", session, getInfo, bufferCapacityInput, bufferCountOutput, buffer);
|
|
return xrGetInputSourceLocalizedName(((wine_XrSession *)session)->session, getInfo, bufferCapacityInput, bufferCountOutput, buffer);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrGetInstanceProperties(XrInstance instance, XrInstanceProperties *instanceProperties)
|
|
{
|
|
WINE_TRACE("%p, %p\n", instance, instanceProperties);
|
|
return xrGetInstanceProperties(((wine_XrInstance *)instance)->instance, instanceProperties);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrGetMarkerSizeVARJO(XrSession session, uint64_t markerId, XrExtent2Df *size)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, %p\n", session, wine_dbgstr_longlong(markerId), size);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrGetMarkerSizeVARJO(((wine_XrSession *)session)->session, markerId, size);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrGetOpenGLGraphicsRequirementsKHR(XrInstance instance, XrSystemId systemId, XrGraphicsRequirementsOpenGLKHR *graphicsRequirements)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, %p\n", instance, wine_dbgstr_longlong(systemId), graphicsRequirements);
|
|
return ((wine_XrInstance *)instance)->funcs.p_xrGetOpenGLGraphicsRequirementsKHR(((wine_XrInstance *)instance)->instance, systemId, graphicsRequirements);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrGetReferenceSpaceBoundsRect(XrSession session, XrReferenceSpaceType referenceSpaceType, XrExtent2Df *bounds)
|
|
{
|
|
WINE_TRACE("%p, %#x, %p\n", session, referenceSpaceType, bounds);
|
|
return xrGetReferenceSpaceBoundsRect(((wine_XrSession *)session)->session, referenceSpaceType, bounds);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrGetSceneComponentsMSFT(XrSceneMSFT scene, const XrSceneComponentsGetInfoMSFT *getInfo, XrSceneComponentsMSFT *components)
|
|
{
|
|
WINE_TRACE("%p, %p, %p\n", scene, getInfo, components);
|
|
return ((wine_XrSceneMSFT *)scene)->wine_scene_observer_msft->wine_session->wine_instance->funcs.p_xrGetSceneComponentsMSFT(((wine_XrSceneMSFT *)scene)->scene_msft, getInfo, components);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrGetSceneComputeStateMSFT(XrSceneObserverMSFT sceneObserver, XrSceneComputeStateMSFT *state)
|
|
{
|
|
WINE_TRACE("%p, %p\n", sceneObserver, state);
|
|
return ((wine_XrSceneObserverMSFT *)sceneObserver)->wine_session->wine_instance->funcs.p_xrGetSceneComputeStateMSFT(((wine_XrSceneObserverMSFT *)sceneObserver)->scene_observer_msft, state);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrGetSceneMeshBuffersMSFT(XrSceneMSFT scene, const XrSceneMeshBuffersGetInfoMSFT *getInfo, XrSceneMeshBuffersMSFT *buffers)
|
|
{
|
|
#if defined(USE_STRUCT_CONVERSION)
|
|
XrResult result;
|
|
XrSceneMeshBuffersGetInfoMSFT_host getInfo_host;
|
|
WINE_TRACE("%p, %p, %p\n", scene, getInfo, buffers);
|
|
|
|
convert_XrSceneMeshBuffersGetInfoMSFT_win_to_host(getInfo, &getInfo_host);
|
|
result = ((wine_XrSceneMSFT *)scene)->wine_scene_observer_msft->wine_session->wine_instance->funcs.p_xrGetSceneMeshBuffersMSFT(((wine_XrSceneMSFT *)scene)->scene_msft, &getInfo_host, buffers);
|
|
|
|
return result;
|
|
#else
|
|
WINE_TRACE("%p, %p, %p\n", scene, getInfo, buffers);
|
|
return ((wine_XrSceneMSFT *)scene)->wine_scene_observer_msft->wine_session->wine_instance->funcs.p_xrGetSceneMeshBuffersMSFT(((wine_XrSceneMSFT *)scene)->scene_msft, getInfo, buffers);
|
|
#endif
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrGetSerializedSceneFragmentDataMSFT(XrSceneMSFT scene, const XrSerializedSceneFragmentDataGetInfoMSFT *getInfo, uint32_t countInput, uint32_t *readOutput, uint8_t *buffer)
|
|
{
|
|
WINE_TRACE("%p, %p, %u, %p, %p\n", scene, getInfo, countInput, readOutput, buffer);
|
|
return ((wine_XrSceneMSFT *)scene)->wine_scene_observer_msft->wine_session->wine_instance->funcs.p_xrGetSerializedSceneFragmentDataMSFT(((wine_XrSceneMSFT *)scene)->scene_msft, getInfo, countInput, readOutput, buffer);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrGetSwapchainStateFB(XrSwapchain swapchain, XrSwapchainStateBaseHeaderFB *state)
|
|
{
|
|
WINE_TRACE("%p, %p\n", swapchain, state);
|
|
return ((wine_XrSwapchain *)swapchain)->wine_session->wine_instance->funcs.p_xrGetSwapchainStateFB(((wine_XrSwapchain *)swapchain)->swapchain, state);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrGetSystemProperties(XrInstance instance, XrSystemId systemId, XrSystemProperties *properties)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, %p\n", instance, wine_dbgstr_longlong(systemId), properties);
|
|
return xrGetSystemProperties(((wine_XrInstance *)instance)->instance, systemId, properties);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrGetViewConfigurationProperties(XrInstance instance, XrSystemId systemId, XrViewConfigurationType viewConfigurationType, XrViewConfigurationProperties *configurationProperties)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, %#x, %p\n", instance, wine_dbgstr_longlong(systemId), viewConfigurationType, configurationProperties);
|
|
return xrGetViewConfigurationProperties(((wine_XrInstance *)instance)->instance, systemId, viewConfigurationType, configurationProperties);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrGetVisibilityMaskKHR(XrSession session, XrViewConfigurationType viewConfigurationType, uint32_t viewIndex, XrVisibilityMaskTypeKHR visibilityMaskType, XrVisibilityMaskKHR *visibilityMask)
|
|
{
|
|
WINE_TRACE("%p, %#x, %u, %#x, %p\n", session, viewConfigurationType, viewIndex, visibilityMaskType, visibilityMask);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrGetVisibilityMaskKHR(((wine_XrSession *)session)->session, viewConfigurationType, viewIndex, visibilityMaskType, visibilityMask);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrGetVulkanGraphicsRequirements2KHR(XrInstance instance, XrSystemId systemId, XrGraphicsRequirementsVulkanKHR *graphicsRequirements)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, %p\n", instance, wine_dbgstr_longlong(systemId), graphicsRequirements);
|
|
return ((wine_XrInstance *)instance)->funcs.p_xrGetVulkanGraphicsRequirements2KHR(((wine_XrInstance *)instance)->instance, systemId, graphicsRequirements);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrGetVulkanGraphicsRequirementsKHR(XrInstance instance, XrSystemId systemId, XrGraphicsRequirementsVulkanKHR *graphicsRequirements)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, %p\n", instance, wine_dbgstr_longlong(systemId), graphicsRequirements);
|
|
return ((wine_XrInstance *)instance)->funcs.p_xrGetVulkanGraphicsRequirementsKHR(((wine_XrInstance *)instance)->instance, systemId, graphicsRequirements);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrLoadControllerModelMSFT(XrSession session, XrControllerModelKeyMSFT modelKey, uint32_t bufferCapacityInput, uint32_t *bufferCountOutput, uint8_t *buffer)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, %u, %p, %p\n", session, wine_dbgstr_longlong(modelKey), bufferCapacityInput, bufferCountOutput, buffer);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrLoadControllerModelMSFT(((wine_XrSession *)session)->session, modelKey, bufferCapacityInput, bufferCountOutput, buffer);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrLocateHandJointsEXT(XrHandTrackerEXT handTracker, const XrHandJointsLocateInfoEXT *locateInfo, XrHandJointLocationsEXT *locations)
|
|
{
|
|
WINE_TRACE("%p, %p, %p\n", handTracker, locateInfo, locations);
|
|
return ((wine_XrHandTrackerEXT *)handTracker)->wine_session->wine_instance->funcs.p_xrLocateHandJointsEXT(((wine_XrHandTrackerEXT *)handTracker)->hand_tracker, locateInfo, locations);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrLocateSceneComponentsMSFT(XrSceneMSFT scene, const XrSceneComponentsLocateInfoMSFT *locateInfo, XrSceneComponentLocationsMSFT *locations)
|
|
{
|
|
WINE_TRACE("%p, %p, %p\n", scene, locateInfo, locations);
|
|
return ((wine_XrSceneMSFT *)scene)->wine_scene_observer_msft->wine_session->wine_instance->funcs.p_xrLocateSceneComponentsMSFT(((wine_XrSceneMSFT *)scene)->scene_msft, locateInfo, locations);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrLocateSpace(XrSpace space, XrSpace baseSpace, XrTime time, XrSpaceLocation *location)
|
|
{
|
|
WINE_TRACE("%p, %p, 0x%s, %p\n", space, baseSpace, wine_dbgstr_longlong(time), location);
|
|
return xrLocateSpace(space, baseSpace, time, location);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrLocateViews(XrSession session, const XrViewLocateInfo *viewLocateInfo, XrViewState *viewState, uint32_t viewCapacityInput, uint32_t *viewCountOutput, XrView *views)
|
|
{
|
|
WINE_TRACE("%p, %p, %p, %u, %p, %p\n", session, viewLocateInfo, viewState, viewCapacityInput, viewCountOutput, views);
|
|
return xrLocateViews(((wine_XrSession *)session)->session, viewLocateInfo, viewState, viewCapacityInput, viewCountOutput, views);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrPassthroughLayerPauseFB(XrPassthroughLayerFB layer)
|
|
{
|
|
WINE_TRACE("%p\n", layer);
|
|
return ((wine_XrPassthroughLayerFB *)layer)->wine_session->wine_instance->funcs.p_xrPassthroughLayerPauseFB(((wine_XrPassthroughLayerFB *)layer)->layer);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrPassthroughLayerResumeFB(XrPassthroughLayerFB layer)
|
|
{
|
|
WINE_TRACE("%p\n", layer);
|
|
return ((wine_XrPassthroughLayerFB *)layer)->wine_session->wine_instance->funcs.p_xrPassthroughLayerResumeFB(((wine_XrPassthroughLayerFB *)layer)->layer);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrPassthroughLayerSetStyleFB(XrPassthroughLayerFB layer, const XrPassthroughStyleFB *style)
|
|
{
|
|
WINE_TRACE("%p, %p\n", layer, style);
|
|
return ((wine_XrPassthroughLayerFB *)layer)->wine_session->wine_instance->funcs.p_xrPassthroughLayerSetStyleFB(((wine_XrPassthroughLayerFB *)layer)->layer, style);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrPassthroughPauseFB(XrPassthroughFB passthrough)
|
|
{
|
|
WINE_TRACE("%p\n", passthrough);
|
|
return ((wine_XrPassthroughFB *)passthrough)->wine_session->wine_instance->funcs.p_xrPassthroughPauseFB(((wine_XrPassthroughFB *)passthrough)->passthrough);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrPassthroughStartFB(XrPassthroughFB passthrough)
|
|
{
|
|
WINE_TRACE("%p\n", passthrough);
|
|
return ((wine_XrPassthroughFB *)passthrough)->wine_session->wine_instance->funcs.p_xrPassthroughStartFB(((wine_XrPassthroughFB *)passthrough)->passthrough);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrPathToString(XrInstance instance, XrPath path, uint32_t bufferCapacityInput, uint32_t *bufferCountOutput, char *buffer)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, %u, %p, %p\n", instance, wine_dbgstr_longlong(path), bufferCapacityInput, bufferCountOutput, buffer);
|
|
return xrPathToString(((wine_XrInstance *)instance)->instance, path, bufferCapacityInput, bufferCountOutput, buffer);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrPerfSettingsSetPerformanceLevelEXT(XrSession session, XrPerfSettingsDomainEXT domain, XrPerfSettingsLevelEXT level)
|
|
{
|
|
WINE_TRACE("%p, %#x, %#x\n", session, domain, level);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrPerfSettingsSetPerformanceLevelEXT(((wine_XrSession *)session)->session, domain, level);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrPersistSpatialAnchorMSFT(XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore, const XrSpatialAnchorPersistenceInfoMSFT *spatialAnchorPersistenceInfo)
|
|
{
|
|
WINE_TRACE("%p, %p\n", spatialAnchorStore, spatialAnchorPersistenceInfo);
|
|
return ((wine_XrSpatialAnchorStoreConnectionMSFT *)spatialAnchorStore)->wine_session->wine_instance->funcs.p_xrPersistSpatialAnchorMSFT(((wine_XrSpatialAnchorStoreConnectionMSFT *)spatialAnchorStore)->spatial_anchor_store_connection, spatialAnchorPersistenceInfo);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrReleaseSwapchainImage(XrSwapchain swapchain, const XrSwapchainImageReleaseInfo *releaseInfo)
|
|
{
|
|
WINE_TRACE("%p, %p\n", swapchain, releaseInfo);
|
|
return xrReleaseSwapchainImage(((wine_XrSwapchain *)swapchain)->swapchain, releaseInfo);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrRequestDisplayRefreshRateFB(XrSession session, float displayRefreshRate)
|
|
{
|
|
WINE_TRACE("%p, %f\n", session, displayRefreshRate);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrRequestDisplayRefreshRateFB(((wine_XrSession *)session)->session, displayRefreshRate);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrRequestExitSession(XrSession session)
|
|
{
|
|
WINE_TRACE("%p\n", session);
|
|
return xrRequestExitSession(((wine_XrSession *)session)->session);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrResultToString(XrInstance instance, XrResult value, char buffer[])
|
|
{
|
|
WINE_TRACE("%p, %#x, %p\n", instance, value, buffer);
|
|
return xrResultToString(((wine_XrInstance *)instance)->instance, value, buffer);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrSetColorSpaceFB(XrSession session, const XrColorSpaceFB colorspace)
|
|
{
|
|
WINE_TRACE("%p, %#x\n", session, colorspace);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrSetColorSpaceFB(((wine_XrSession *)session)->session, colorspace);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrSetEnvironmentDepthEstimationVARJO(XrSession session, XrBool32 enabled)
|
|
{
|
|
WINE_TRACE("%p, %u\n", session, enabled);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrSetEnvironmentDepthEstimationVARJO(((wine_XrSession *)session)->session, enabled);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrSetInputDeviceActiveEXT(XrSession session, XrPath interactionProfile, XrPath topLevelPath, XrBool32 isActive)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, 0x%s, %u\n", session, wine_dbgstr_longlong(interactionProfile), wine_dbgstr_longlong(topLevelPath), isActive);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrSetInputDeviceActiveEXT(((wine_XrSession *)session)->session, interactionProfile, topLevelPath, isActive);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrSetInputDeviceLocationEXT(XrSession session, XrPath topLevelPath, XrPath inputSourcePath, XrSpace space, XrPosef pose)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, 0x%s, %p, \n", session, wine_dbgstr_longlong(topLevelPath), wine_dbgstr_longlong(inputSourcePath), space, pose);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrSetInputDeviceLocationEXT(((wine_XrSession *)session)->session, topLevelPath, inputSourcePath, space, pose);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrSetInputDeviceStateBoolEXT(XrSession session, XrPath topLevelPath, XrPath inputSourcePath, XrBool32 state)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, 0x%s, %u\n", session, wine_dbgstr_longlong(topLevelPath), wine_dbgstr_longlong(inputSourcePath), state);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrSetInputDeviceStateBoolEXT(((wine_XrSession *)session)->session, topLevelPath, inputSourcePath, state);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrSetInputDeviceStateFloatEXT(XrSession session, XrPath topLevelPath, XrPath inputSourcePath, float state)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, 0x%s, %f\n", session, wine_dbgstr_longlong(topLevelPath), wine_dbgstr_longlong(inputSourcePath), state);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrSetInputDeviceStateFloatEXT(((wine_XrSession *)session)->session, topLevelPath, inputSourcePath, state);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrSetInputDeviceStateVector2fEXT(XrSession session, XrPath topLevelPath, XrPath inputSourcePath, XrVector2f state)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, 0x%s, %f, %f\n", session, wine_dbgstr_longlong(topLevelPath), wine_dbgstr_longlong(inputSourcePath), state.x, state.y);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrSetInputDeviceStateVector2fEXT(((wine_XrSession *)session)->session, topLevelPath, inputSourcePath, state);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrSetMarkerTrackingPredictionVARJO(XrSession session, uint64_t markerId, XrBool32 enabled)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, %u\n", session, wine_dbgstr_longlong(markerId), enabled);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrSetMarkerTrackingPredictionVARJO(((wine_XrSession *)session)->session, markerId, enabled);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrSetMarkerTrackingTimeoutVARJO(XrSession session, uint64_t markerId, XrDuration timeout)
|
|
{
|
|
WINE_TRACE("%p, 0x%s, 0x%s\n", session, wine_dbgstr_longlong(markerId), wine_dbgstr_longlong(timeout));
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrSetMarkerTrackingTimeoutVARJO(((wine_XrSession *)session)->session, markerId, timeout);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrSetMarkerTrackingVARJO(XrSession session, XrBool32 enabled)
|
|
{
|
|
WINE_TRACE("%p, %u\n", session, enabled);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrSetMarkerTrackingVARJO(((wine_XrSession *)session)->session, enabled);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrStopHapticFeedback(XrSession session, const XrHapticActionInfo *hapticActionInfo)
|
|
{
|
|
WINE_TRACE("%p, %p\n", session, hapticActionInfo);
|
|
return xrStopHapticFeedback(((wine_XrSession *)session)->session, hapticActionInfo);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrStringToPath(XrInstance instance, const char *pathString, XrPath *path)
|
|
{
|
|
WINE_TRACE("%p, %p, %p\n", instance, pathString, path);
|
|
return xrStringToPath(((wine_XrInstance *)instance)->instance, pathString, path);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrStructureTypeToString(XrInstance instance, XrStructureType value, char buffer[])
|
|
{
|
|
WINE_TRACE("%p, %#x, %p\n", instance, value, buffer);
|
|
return xrStructureTypeToString(((wine_XrInstance *)instance)->instance, value, buffer);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrSuggestInteractionProfileBindings(XrInstance instance, const XrInteractionProfileSuggestedBinding *suggestedBindings)
|
|
{
|
|
WINE_TRACE("%p, %p\n", instance, suggestedBindings);
|
|
return xrSuggestInteractionProfileBindings(((wine_XrInstance *)instance)->instance, suggestedBindings);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrSyncActions(XrSession session, const XrActionsSyncInfo *syncInfo)
|
|
{
|
|
WINE_TRACE("%p, %p\n", session, syncInfo);
|
|
return xrSyncActions(((wine_XrSession *)session)->session, syncInfo);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrThermalGetTemperatureTrendEXT(XrSession session, XrPerfSettingsDomainEXT domain, XrPerfSettingsNotificationLevelEXT *notificationLevel, float *tempHeadroom, float *tempSlope)
|
|
{
|
|
WINE_TRACE("%p, %#x, %p, %p, %p\n", session, domain, notificationLevel, tempHeadroom, tempSlope);
|
|
return ((wine_XrSession *)session)->wine_instance->funcs.p_xrThermalGetTemperatureTrendEXT(((wine_XrSession *)session)->session, domain, notificationLevel, tempHeadroom, tempSlope);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrTriangleMeshBeginUpdateFB(XrTriangleMeshFB mesh)
|
|
{
|
|
WINE_TRACE("%p\n", mesh);
|
|
return ((wine_XrTriangleMeshFB *)mesh)->wine_session->wine_instance->funcs.p_xrTriangleMeshBeginUpdateFB(((wine_XrTriangleMeshFB *)mesh)->mesh);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrTriangleMeshBeginVertexBufferUpdateFB(XrTriangleMeshFB mesh, uint32_t *outVertexCount)
|
|
{
|
|
WINE_TRACE("%p, %p\n", mesh, outVertexCount);
|
|
return ((wine_XrTriangleMeshFB *)mesh)->wine_session->wine_instance->funcs.p_xrTriangleMeshBeginVertexBufferUpdateFB(((wine_XrTriangleMeshFB *)mesh)->mesh, outVertexCount);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrTriangleMeshEndUpdateFB(XrTriangleMeshFB mesh, uint32_t vertexCount, uint32_t triangleCount)
|
|
{
|
|
WINE_TRACE("%p, %u, %u\n", mesh, vertexCount, triangleCount);
|
|
return ((wine_XrTriangleMeshFB *)mesh)->wine_session->wine_instance->funcs.p_xrTriangleMeshEndUpdateFB(((wine_XrTriangleMeshFB *)mesh)->mesh, vertexCount, triangleCount);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrTriangleMeshEndVertexBufferUpdateFB(XrTriangleMeshFB mesh)
|
|
{
|
|
WINE_TRACE("%p\n", mesh);
|
|
return ((wine_XrTriangleMeshFB *)mesh)->wine_session->wine_instance->funcs.p_xrTriangleMeshEndVertexBufferUpdateFB(((wine_XrTriangleMeshFB *)mesh)->mesh);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrTriangleMeshGetIndexBufferFB(XrTriangleMeshFB mesh, uint32_t **outIndexBuffer)
|
|
{
|
|
WINE_TRACE("%p, %p\n", mesh, outIndexBuffer);
|
|
return ((wine_XrTriangleMeshFB *)mesh)->wine_session->wine_instance->funcs.p_xrTriangleMeshGetIndexBufferFB(((wine_XrTriangleMeshFB *)mesh)->mesh, outIndexBuffer);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrTriangleMeshGetVertexBufferFB(XrTriangleMeshFB mesh, XrVector3f **outVertexBuffer)
|
|
{
|
|
WINE_TRACE("%p, %p\n", mesh, outVertexBuffer);
|
|
return ((wine_XrTriangleMeshFB *)mesh)->wine_session->wine_instance->funcs.p_xrTriangleMeshGetVertexBufferFB(((wine_XrTriangleMeshFB *)mesh)->mesh, outVertexBuffer);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrUnpersistSpatialAnchorMSFT(XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore, const XrSpatialAnchorPersistenceNameMSFT *spatialAnchorPersistenceName)
|
|
{
|
|
WINE_TRACE("%p, %p\n", spatialAnchorStore, spatialAnchorPersistenceName);
|
|
return ((wine_XrSpatialAnchorStoreConnectionMSFT *)spatialAnchorStore)->wine_session->wine_instance->funcs.p_xrUnpersistSpatialAnchorMSFT(((wine_XrSpatialAnchorStoreConnectionMSFT *)spatialAnchorStore)->spatial_anchor_store_connection, spatialAnchorPersistenceName);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrUpdateHandMeshMSFT(XrHandTrackerEXT handTracker, const XrHandMeshUpdateInfoMSFT *updateInfo, XrHandMeshMSFT *handMesh)
|
|
{
|
|
WINE_TRACE("%p, %p, %p\n", handTracker, updateInfo, handMesh);
|
|
return ((wine_XrHandTrackerEXT *)handTracker)->wine_session->wine_instance->funcs.p_xrUpdateHandMeshMSFT(((wine_XrHandTrackerEXT *)handTracker)->hand_tracker, updateInfo, handMesh);
|
|
}
|
|
|
|
static XrResult WINAPI wine_xrUpdateSwapchainFB(XrSwapchain swapchain, const XrSwapchainStateBaseHeaderFB *state)
|
|
{
|
|
WINE_TRACE("%p, %p\n", swapchain, state);
|
|
return ((wine_XrSwapchain *)swapchain)->wine_session->wine_instance->funcs.p_xrUpdateSwapchainFB(((wine_XrSwapchain *)swapchain)->swapchain, state);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrWaitFrame(XrSession session, const XrFrameWaitInfo *frameWaitInfo, XrFrameState *frameState)
|
|
{
|
|
WINE_TRACE("%p, %p, %p\n", session, frameWaitInfo, frameState);
|
|
return xrWaitFrame(((wine_XrSession *)session)->session, frameWaitInfo, frameState);
|
|
}
|
|
|
|
XrResult WINAPI wine_xrWaitSwapchainImage(XrSwapchain swapchain, const XrSwapchainImageWaitInfo *waitInfo)
|
|
{
|
|
WINE_TRACE("%p, %p\n", swapchain, waitInfo);
|
|
return xrWaitSwapchainImage(((wine_XrSwapchain *)swapchain)->swapchain, waitInfo);
|
|
}
|
|
|
|
static const struct openxr_func xr_dispatch_table[] =
|
|
{
|
|
{"xrAcquireSwapchainImage", &wine_xrAcquireSwapchainImage},
|
|
{"xrApplyHapticFeedback", &wine_xrApplyHapticFeedback},
|
|
{"xrAttachSessionActionSets", &wine_xrAttachSessionActionSets},
|
|
{"xrBeginFrame", &wine_xrBeginFrame},
|
|
{"xrBeginSession", &wine_xrBeginSession},
|
|
{"xrClearSpatialAnchorStoreMSFT", &wine_xrClearSpatialAnchorStoreMSFT},
|
|
{"xrComputeNewSceneMSFT", &wine_xrComputeNewSceneMSFT},
|
|
{"xrConvertTimeToWin32PerformanceCounterKHR", &wine_xrConvertTimeToWin32PerformanceCounterKHR},
|
|
{"xrConvertWin32PerformanceCounterToTimeKHR", &wine_xrConvertWin32PerformanceCounterToTimeKHR},
|
|
{"xrCreateAction", &wine_xrCreateAction},
|
|
{"xrCreateActionSet", &wine_xrCreateActionSet},
|
|
{"xrCreateActionSpace", &wine_xrCreateActionSpace},
|
|
{"xrCreateFoveationProfileFB", &wine_xrCreateFoveationProfileFB},
|
|
{"xrCreateGeometryInstanceFB", &wine_xrCreateGeometryInstanceFB},
|
|
{"xrCreateHandMeshSpaceMSFT", &wine_xrCreateHandMeshSpaceMSFT},
|
|
{"xrCreateHandTrackerEXT", &wine_xrCreateHandTrackerEXT},
|
|
{"xrCreateInstance", &wine_xrCreateInstance},
|
|
{"xrCreateMarkerSpaceVARJO", &wine_xrCreateMarkerSpaceVARJO},
|
|
{"xrCreatePassthroughFB", &wine_xrCreatePassthroughFB},
|
|
{"xrCreatePassthroughLayerFB", &wine_xrCreatePassthroughLayerFB},
|
|
{"xrCreateReferenceSpace", &wine_xrCreateReferenceSpace},
|
|
{"xrCreateSceneMSFT", &wine_xrCreateSceneMSFT},
|
|
{"xrCreateSceneObserverMSFT", &wine_xrCreateSceneObserverMSFT},
|
|
{"xrCreateSession", &wine_xrCreateSession},
|
|
{"xrCreateSpatialAnchorFromPersistedNameMSFT", &wine_xrCreateSpatialAnchorFromPersistedNameMSFT},
|
|
{"xrCreateSpatialAnchorMSFT", &wine_xrCreateSpatialAnchorMSFT},
|
|
{"xrCreateSpatialAnchorSpaceMSFT", &wine_xrCreateSpatialAnchorSpaceMSFT},
|
|
{"xrCreateSpatialAnchorStoreConnectionMSFT", &wine_xrCreateSpatialAnchorStoreConnectionMSFT},
|
|
{"xrCreateSpatialGraphNodeSpaceMSFT", &wine_xrCreateSpatialGraphNodeSpaceMSFT},
|
|
{"xrCreateSwapchain", &wine_xrCreateSwapchain},
|
|
{"xrCreateTriangleMeshFB", &wine_xrCreateTriangleMeshFB},
|
|
{"xrCreateVulkanDeviceKHR", &wine_xrCreateVulkanDeviceKHR},
|
|
{"xrCreateVulkanInstanceKHR", &wine_xrCreateVulkanInstanceKHR},
|
|
{"xrDeserializeSceneMSFT", &wine_xrDeserializeSceneMSFT},
|
|
{"xrDestroyAction", &wine_xrDestroyAction},
|
|
{"xrDestroyActionSet", &wine_xrDestroyActionSet},
|
|
{"xrDestroyFoveationProfileFB", &wine_xrDestroyFoveationProfileFB},
|
|
{"xrDestroyGeometryInstanceFB", &wine_xrDestroyGeometryInstanceFB},
|
|
{"xrDestroyHandTrackerEXT", &wine_xrDestroyHandTrackerEXT},
|
|
{"xrDestroyInstance", &wine_xrDestroyInstance},
|
|
{"xrDestroyPassthroughFB", &wine_xrDestroyPassthroughFB},
|
|
{"xrDestroyPassthroughLayerFB", &wine_xrDestroyPassthroughLayerFB},
|
|
{"xrDestroySceneMSFT", &wine_xrDestroySceneMSFT},
|
|
{"xrDestroySceneObserverMSFT", &wine_xrDestroySceneObserverMSFT},
|
|
{"xrDestroySession", &wine_xrDestroySession},
|
|
{"xrDestroySpace", &wine_xrDestroySpace},
|
|
{"xrDestroySpatialAnchorMSFT", &wine_xrDestroySpatialAnchorMSFT},
|
|
{"xrDestroySpatialAnchorStoreConnectionMSFT", &wine_xrDestroySpatialAnchorStoreConnectionMSFT},
|
|
{"xrDestroySwapchain", &wine_xrDestroySwapchain},
|
|
{"xrDestroyTriangleMeshFB", &wine_xrDestroyTriangleMeshFB},
|
|
{"xrEndFrame", &wine_xrEndFrame},
|
|
{"xrEndSession", &wine_xrEndSession},
|
|
{"xrEnumerateApiLayerProperties", &wine_xrEnumerateApiLayerProperties},
|
|
{"xrEnumerateBoundSourcesForAction", &wine_xrEnumerateBoundSourcesForAction},
|
|
{"xrEnumerateColorSpacesFB", &wine_xrEnumerateColorSpacesFB},
|
|
{"xrEnumerateDisplayRefreshRatesFB", &wine_xrEnumerateDisplayRefreshRatesFB},
|
|
{"xrEnumerateEnvironmentBlendModes", &wine_xrEnumerateEnvironmentBlendModes},
|
|
{"xrEnumerateInstanceExtensionProperties", &wine_xrEnumerateInstanceExtensionProperties},
|
|
{"xrEnumeratePersistedSpatialAnchorNamesMSFT", &wine_xrEnumeratePersistedSpatialAnchorNamesMSFT},
|
|
{"xrEnumerateReferenceSpaces", &wine_xrEnumerateReferenceSpaces},
|
|
{"xrEnumerateReprojectionModesMSFT", &wine_xrEnumerateReprojectionModesMSFT},
|
|
{"xrEnumerateSceneComputeFeaturesMSFT", &wine_xrEnumerateSceneComputeFeaturesMSFT},
|
|
{"xrEnumerateSwapchainFormats", &wine_xrEnumerateSwapchainFormats},
|
|
{"xrEnumerateSwapchainImages", &wine_xrEnumerateSwapchainImages},
|
|
{"xrEnumerateViewConfigurationViews", &wine_xrEnumerateViewConfigurationViews},
|
|
{"xrEnumerateViewConfigurations", &wine_xrEnumerateViewConfigurations},
|
|
{"xrEnumerateViveTrackerPathsHTCX", &wine_xrEnumerateViveTrackerPathsHTCX},
|
|
{"xrGeometryInstanceSetTransformFB", &wine_xrGeometryInstanceSetTransformFB},
|
|
{"xrGetActionStateBoolean", &wine_xrGetActionStateBoolean},
|
|
{"xrGetActionStateFloat", &wine_xrGetActionStateFloat},
|
|
{"xrGetActionStatePose", &wine_xrGetActionStatePose},
|
|
{"xrGetActionStateVector2f", &wine_xrGetActionStateVector2f},
|
|
{"xrGetAudioInputDeviceGuidOculus", &wine_xrGetAudioInputDeviceGuidOculus},
|
|
{"xrGetAudioOutputDeviceGuidOculus", &wine_xrGetAudioOutputDeviceGuidOculus},
|
|
{"xrGetControllerModelKeyMSFT", &wine_xrGetControllerModelKeyMSFT},
|
|
{"xrGetControllerModelPropertiesMSFT", &wine_xrGetControllerModelPropertiesMSFT},
|
|
{"xrGetControllerModelStateMSFT", &wine_xrGetControllerModelStateMSFT},
|
|
{"xrGetCurrentInteractionProfile", &wine_xrGetCurrentInteractionProfile},
|
|
{"xrGetD3D11GraphicsRequirementsKHR", &wine_xrGetD3D11GraphicsRequirementsKHR},
|
|
{"xrGetD3D12GraphicsRequirementsKHR", &wine_xrGetD3D12GraphicsRequirementsKHR},
|
|
{"xrGetDisplayRefreshRateFB", &wine_xrGetDisplayRefreshRateFB},
|
|
{"xrGetHandMeshFB", &wine_xrGetHandMeshFB},
|
|
{"xrGetInputSourceLocalizedName", &wine_xrGetInputSourceLocalizedName},
|
|
{"xrGetInstanceProcAddr", &wine_xrGetInstanceProcAddr},
|
|
{"xrGetInstanceProperties", &wine_xrGetInstanceProperties},
|
|
{"xrGetMarkerSizeVARJO", &wine_xrGetMarkerSizeVARJO},
|
|
{"xrGetOpenGLGraphicsRequirementsKHR", &wine_xrGetOpenGLGraphicsRequirementsKHR},
|
|
{"xrGetReferenceSpaceBoundsRect", &wine_xrGetReferenceSpaceBoundsRect},
|
|
{"xrGetSceneComponentsMSFT", &wine_xrGetSceneComponentsMSFT},
|
|
{"xrGetSceneComputeStateMSFT", &wine_xrGetSceneComputeStateMSFT},
|
|
{"xrGetSceneMeshBuffersMSFT", &wine_xrGetSceneMeshBuffersMSFT},
|
|
{"xrGetSerializedSceneFragmentDataMSFT", &wine_xrGetSerializedSceneFragmentDataMSFT},
|
|
{"xrGetSwapchainStateFB", &wine_xrGetSwapchainStateFB},
|
|
{"xrGetSystem", &wine_xrGetSystem},
|
|
{"xrGetSystemProperties", &wine_xrGetSystemProperties},
|
|
{"xrGetViewConfigurationProperties", &wine_xrGetViewConfigurationProperties},
|
|
{"xrGetVisibilityMaskKHR", &wine_xrGetVisibilityMaskKHR},
|
|
{"xrGetVulkanDeviceExtensionsKHR", &wine_xrGetVulkanDeviceExtensionsKHR},
|
|
{"xrGetVulkanGraphicsDevice2KHR", &wine_xrGetVulkanGraphicsDevice2KHR},
|
|
{"xrGetVulkanGraphicsDeviceKHR", &wine_xrGetVulkanGraphicsDeviceKHR},
|
|
{"xrGetVulkanGraphicsRequirements2KHR", &wine_xrGetVulkanGraphicsRequirements2KHR},
|
|
{"xrGetVulkanGraphicsRequirementsKHR", &wine_xrGetVulkanGraphicsRequirementsKHR},
|
|
{"xrGetVulkanInstanceExtensionsKHR", &wine_xrGetVulkanInstanceExtensionsKHR},
|
|
{"xrLoadControllerModelMSFT", &wine_xrLoadControllerModelMSFT},
|
|
{"xrLocateHandJointsEXT", &wine_xrLocateHandJointsEXT},
|
|
{"xrLocateSceneComponentsMSFT", &wine_xrLocateSceneComponentsMSFT},
|
|
{"xrLocateSpace", &wine_xrLocateSpace},
|
|
{"xrLocateViews", &wine_xrLocateViews},
|
|
{"xrPassthroughLayerPauseFB", &wine_xrPassthroughLayerPauseFB},
|
|
{"xrPassthroughLayerResumeFB", &wine_xrPassthroughLayerResumeFB},
|
|
{"xrPassthroughLayerSetStyleFB", &wine_xrPassthroughLayerSetStyleFB},
|
|
{"xrPassthroughPauseFB", &wine_xrPassthroughPauseFB},
|
|
{"xrPassthroughStartFB", &wine_xrPassthroughStartFB},
|
|
{"xrPathToString", &wine_xrPathToString},
|
|
{"xrPerfSettingsSetPerformanceLevelEXT", &wine_xrPerfSettingsSetPerformanceLevelEXT},
|
|
{"xrPersistSpatialAnchorMSFT", &wine_xrPersistSpatialAnchorMSFT},
|
|
{"xrPollEvent", &wine_xrPollEvent},
|
|
{"xrReleaseSwapchainImage", &wine_xrReleaseSwapchainImage},
|
|
{"xrRequestDisplayRefreshRateFB", &wine_xrRequestDisplayRefreshRateFB},
|
|
{"xrRequestExitSession", &wine_xrRequestExitSession},
|
|
{"xrResultToString", &wine_xrResultToString},
|
|
{"xrSetColorSpaceFB", &wine_xrSetColorSpaceFB},
|
|
{"xrSetEnvironmentDepthEstimationVARJO", &wine_xrSetEnvironmentDepthEstimationVARJO},
|
|
{"xrSetInputDeviceActiveEXT", &wine_xrSetInputDeviceActiveEXT},
|
|
{"xrSetInputDeviceLocationEXT", &wine_xrSetInputDeviceLocationEXT},
|
|
{"xrSetInputDeviceStateBoolEXT", &wine_xrSetInputDeviceStateBoolEXT},
|
|
{"xrSetInputDeviceStateFloatEXT", &wine_xrSetInputDeviceStateFloatEXT},
|
|
{"xrSetInputDeviceStateVector2fEXT", &wine_xrSetInputDeviceStateVector2fEXT},
|
|
{"xrSetMarkerTrackingPredictionVARJO", &wine_xrSetMarkerTrackingPredictionVARJO},
|
|
{"xrSetMarkerTrackingTimeoutVARJO", &wine_xrSetMarkerTrackingTimeoutVARJO},
|
|
{"xrSetMarkerTrackingVARJO", &wine_xrSetMarkerTrackingVARJO},
|
|
{"xrStopHapticFeedback", &wine_xrStopHapticFeedback},
|
|
{"xrStringToPath", &wine_xrStringToPath},
|
|
{"xrStructureTypeToString", &wine_xrStructureTypeToString},
|
|
{"xrSuggestInteractionProfileBindings", &wine_xrSuggestInteractionProfileBindings},
|
|
{"xrSyncActions", &wine_xrSyncActions},
|
|
{"xrThermalGetTemperatureTrendEXT", &wine_xrThermalGetTemperatureTrendEXT},
|
|
{"xrTriangleMeshBeginUpdateFB", &wine_xrTriangleMeshBeginUpdateFB},
|
|
{"xrTriangleMeshBeginVertexBufferUpdateFB", &wine_xrTriangleMeshBeginVertexBufferUpdateFB},
|
|
{"xrTriangleMeshEndUpdateFB", &wine_xrTriangleMeshEndUpdateFB},
|
|
{"xrTriangleMeshEndVertexBufferUpdateFB", &wine_xrTriangleMeshEndVertexBufferUpdateFB},
|
|
{"xrTriangleMeshGetIndexBufferFB", &wine_xrTriangleMeshGetIndexBufferFB},
|
|
{"xrTriangleMeshGetVertexBufferFB", &wine_xrTriangleMeshGetVertexBufferFB},
|
|
{"xrUnpersistSpatialAnchorMSFT", &wine_xrUnpersistSpatialAnchorMSFT},
|
|
{"xrUpdateHandMeshMSFT", &wine_xrUpdateHandMeshMSFT},
|
|
{"xrUpdateSwapchainFB", &wine_xrUpdateSwapchainFB},
|
|
{"xrWaitFrame", &wine_xrWaitFrame},
|
|
{"xrWaitSwapchainImage", &wine_xrWaitSwapchainImage},
|
|
};
|
|
|
|
void *wine_xr_proc_addr(const char *name)
|
|
{
|
|
unsigned int i;
|
|
for (i = 0; i < ARRAY_SIZE(xr_dispatch_table); i++)
|
|
{
|
|
if (strcmp(xr_dispatch_table[i].name, name) == 0)
|
|
{
|
|
WINE_TRACE("Found name=%s in instance table\n", wine_dbgstr_a(name));
|
|
return xr_dispatch_table[i].func;
|
|
}
|
|
}
|
|
return NULL;
|
|
}
|
|
|
|
static const char * const xr_extensions[] =
|
|
{
|
|
"XR_EPIC_view_configuration_fov",
|
|
"XR_EXTX_overlay",
|
|
"XR_EXT_conformance_automation",
|
|
"XR_EXT_eye_gaze_interaction",
|
|
"XR_EXT_hand_joints_motion_range",
|
|
"XR_EXT_hand_tracking",
|
|
"XR_EXT_hp_mixed_reality_controller",
|
|
"XR_EXT_performance_settings",
|
|
"XR_EXT_samsung_odyssey_controller",
|
|
"XR_EXT_thermal_query",
|
|
"XR_EXT_view_configuration_depth_range",
|
|
"XR_EXT_win32_appcontainer_compatible",
|
|
"XR_FB_color_space",
|
|
"XR_FB_composition_layer_alpha_blend",
|
|
"XR_FB_composition_layer_image_layout",
|
|
"XR_FB_composition_layer_secure_content",
|
|
"XR_FB_display_refresh_rate",
|
|
"XR_FB_foveation",
|
|
"XR_FB_foveation_configuration",
|
|
"XR_FB_foveation_vulkan",
|
|
"XR_FB_hand_tracking_aim",
|
|
"XR_FB_hand_tracking_capsules",
|
|
"XR_FB_hand_tracking_mesh",
|
|
"XR_FB_passthrough",
|
|
"XR_FB_space_warp",
|
|
"XR_FB_swapchain_update_state",
|
|
"XR_FB_swapchain_update_state_vulkan",
|
|
"XR_FB_triangle_mesh",
|
|
"XR_HTCX_vive_tracker_interaction",
|
|
"XR_HTC_vive_cosmos_controller_interaction",
|
|
"XR_HUAWEI_controller_interaction",
|
|
"XR_KHR_D3D11_enable",
|
|
"XR_KHR_D3D12_enable",
|
|
"XR_KHR_binding_modification",
|
|
"XR_KHR_composition_layer_color_scale_bias",
|
|
"XR_KHR_composition_layer_cube",
|
|
"XR_KHR_composition_layer_cylinder",
|
|
"XR_KHR_composition_layer_depth",
|
|
"XR_KHR_composition_layer_equirect",
|
|
"XR_KHR_composition_layer_equirect2",
|
|
"XR_KHR_opengl_enable",
|
|
"XR_KHR_swapchain_usage_input_attachment_bit",
|
|
"XR_KHR_visibility_mask",
|
|
"XR_KHR_vulkan_enable",
|
|
"XR_KHR_vulkan_enable2",
|
|
"XR_KHR_vulkan_swapchain_format_list",
|
|
"XR_KHR_win32_convert_performance_counter_time",
|
|
"XR_MND_headless",
|
|
"XR_MND_swapchain_usage_input_attachment_bit",
|
|
"XR_MSFT_composition_layer_reprojection",
|
|
"XR_MSFT_controller_model",
|
|
"XR_MSFT_first_person_observer",
|
|
"XR_MSFT_hand_interaction",
|
|
"XR_MSFT_hand_tracking_mesh",
|
|
"XR_MSFT_holographic_window_attachment",
|
|
"XR_MSFT_scene_understanding",
|
|
"XR_MSFT_scene_understanding_serialization",
|
|
"XR_MSFT_secondary_view_configuration",
|
|
"XR_MSFT_spatial_anchor",
|
|
"XR_MSFT_spatial_anchor_persistence",
|
|
"XR_MSFT_spatial_graph_bridge",
|
|
"XR_MSFT_unbounded_reference_space",
|
|
"XR_OCULUS_android_session_state_enable",
|
|
"XR_OCULUS_audio_device_guid",
|
|
"XR_VALVE_analog_threshold",
|
|
"XR_VARJO_composition_layer_depth_test",
|
|
"XR_VARJO_environment_depth_estimation",
|
|
"XR_VARJO_foveated_rendering",
|
|
"XR_VARJO_marker_tracking",
|
|
"XR_VARJO_quad_views",
|
|
};
|
|
|
|
BOOL wine_xr_extension_supported(const char *name)
|
|
{
|
|
unsigned int i;
|
|
for (i = 0; i < ARRAY_SIZE(xr_extensions); i++)
|
|
{
|
|
if (strcmp(xr_extensions[i], name) == 0)
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
}
|