Welcome to mirror list, hosted at ThFree Co, Russian Federation.

openxr_private.h « wineopenxr - github.com/ValveSoftware/Proton.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 6d937444a8b8d96b1f250c087ea62eea043ca173 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#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 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;
    XrCompositionLayerProjectionView *projection_views;
} 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 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);