Proton/wineopenxr/openxr_private.h

133 lines
4.1 KiB
C

#include "openxr_thunks.h"
#include "wine/list.h"
#define INSTANCE_TYPE_VULKAN 1
#define INSTANCE_TYPE_OPENGL 2
#define INSTANCE_TYPE_D3D11 3
#define INSTANCE_TYPE_D3D12 4
struct IDXGIVkInteropDevice2;
typedef struct IDXGIVkInteropDevice2 IDXGIVkInteropDevice2;
typedef struct wine_XrInstance {
XrInstance instance;
struct openxr_instance_funcs funcs;
VkInstance vk_instance;
VkPhysicalDevice vk_phys_dev;
uint32_t instance_type;
XrSystemId systemId;
IDXGIVkInteropDevice2 *dxvk_device;
} wine_XrInstance;
union CompositionLayer;
typedef union CompositionLayer CompositionLayer;
typedef union
{
XrCompositionLayerDepthInfoKHR depth_info;
XrCompositionLayerSpaceWarpInfoFB space_warp_info;
} view_info;
typedef struct wine_XrSession {
XrSession session;
struct wine_XrInstance *wine_instance;
struct list entry;
uint32_t composition_layer_count;
CompositionLayer *composition_layers;
XrCompositionLayerBaseHeader **composition_layer_ptrs;
uint32_t projection_view_count, view_info_count;
XrCompositionLayerProjectionView *projection_views;
view_info *view_infos;
} wine_XrSession;
typedef struct wine_XrHandTrackerEXT {
XrHandTrackerEXT hand_tracker;
struct wine_XrSession *wine_session;
} wine_XrHandTrackerEXT;
typedef struct wine_XrSpatialAnchorMSFT {
XrSpatialAnchorMSFT spatial_anchor;
struct wine_XrSession *wine_session;
} wine_XrSpatialAnchorMSFT;
typedef struct XrSpatialAnchorStoreConnectionMSFT {
XrSpatialAnchorStoreConnectionMSFT spatial_anchor_store_connection;
struct wine_XrSession *wine_session;
} wine_XrSpatialAnchorStoreConnectionMSFT;
typedef struct wine_XrSceneObserverMSFT {
XrSceneObserverMSFT scene_observer_msft;
struct wine_XrSession *wine_session;
} wine_XrSceneObserverMSFT;
typedef struct wine_XrSceneMSFT {
XrSceneMSFT scene_msft;
struct wine_XrSceneObserverMSFT *wine_scene_observer_msft;
} wine_XrSceneMSFT;
typedef struct wine_XrPassthroughFB {
XrPassthroughFB passthrough;
struct wine_XrSession *wine_session;
} wine_XrPassthroughFB;
typedef struct wine_XrPassthroughLayerFB {
XrPassthroughLayerFB layer;
struct wine_XrSession *wine_session;
} wine_XrPassthroughLayerFB;
typedef struct wine_XrTriangleMeshFB {
XrTriangleMeshFB mesh;
struct wine_XrSession *wine_session;
} wine_XrTriangleMeshFB;
typedef struct wine_XrGeometryInstanceFB {
XrGeometryInstanceFB instance;
struct wine_XrSession *wine_session;
} wine_XrGeometryInstanceFB;
typedef struct wine_XrFoveationProfileFB {
XrFoveationProfileFB foveation_profile;
struct wine_XrSession *wine_session;
} wine_XrFoveationProfileFB;
typedef struct wine_XrSwapchain{
XrSwapchain swapchain;
struct wine_XrSession *wine_session;
XrSwapchainCreateInfo create_info;
} wine_XrSwapchain;
struct openxr_func {
const char *name;
void *func;
};
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(*a))
extern void *wine_xr_proc_addr(const char *name);
extern XrResult WINAPI wine_xrEnumerateInstanceExtensionProperties(const char *layerName,
uint32_t propertyCapacityInput, uint32_t *propertyCountOutput, XrExtensionProperties *properties);
extern XrResult WINAPI wine_xrConvertTimeToWin32PerformanceCounterKHR(XrInstance instance,
XrTime time, LARGE_INTEGER *performanceCounter);
extern XrResult WINAPI wine_xrConvertWin32PerformanceCounterToTimeKHR(XrInstance instance,
const LARGE_INTEGER *performanceCounter, XrTime *time);
extern XrResult WINAPI wine_xrGetD3D11GraphicsRequirementsKHR(XrInstance instance,
XrSystemId systemId, XrGraphicsRequirementsD3D11KHR *graphicsRequirements);
extern XrResult WINAPI wine_xrGetD3D12GraphicsRequirementsKHR(XrInstance instance,
XrSystemId systemId, XrGraphicsRequirementsD3D12KHR *graphicsRequirements);
extern VkDevice (WINAPI *get_native_VkDevice)(VkDevice);
extern VkInstance (WINAPI *get_native_VkInstance)(VkInstance);
extern VkPhysicalDevice (WINAPI *get_native_VkPhysicalDevice)(VkPhysicalDevice);
extern VkPhysicalDevice (WINAPI *get_wrapped_VkPhysicalDevice)(VkInstance, VkPhysicalDevice);
extern VkQueue (WINAPI *get_native_VkQueue)(VkQueue);
extern XrResult load_host_openxr_loader(void);