wineopenxr: Lock d3d11 device in xrReleaseSwapchainImage().
CW-Bug-Id: #23491
This commit is contained in:
parent
231c4b7112
commit
c35598bb21
4 changed files with 17 additions and 9 deletions
|
@ -177,6 +177,7 @@ FUNCTION_OVERRIDES = {
|
||||||
"xrEndFrame" : {"dispatch" : True, "driver" : True, "thunk" : False},
|
"xrEndFrame" : {"dispatch" : True, "driver" : True, "thunk" : False},
|
||||||
"xrBeginFrame" : {"dispatch" : True, "driver" : True, "thunk" : False},
|
"xrBeginFrame" : {"dispatch" : True, "driver" : True, "thunk" : False},
|
||||||
"xrAcquireSwapchainImage" : {"dispatch" : True, "driver" : True, "thunk" : False},
|
"xrAcquireSwapchainImage" : {"dispatch" : True, "driver" : True, "thunk" : False},
|
||||||
|
"xrReleaseSwapchainImage" : {"dispatch" : True, "driver" : True, "thunk" : False},
|
||||||
}
|
}
|
||||||
|
|
||||||
NOT_OUR_FUNCTIONS = [
|
NOT_OUR_FUNCTIONS = [
|
||||||
|
|
|
@ -1909,6 +1909,21 @@ XrResult WINAPI wine_xrAcquireSwapchainImage(XrSwapchain swapchain, const XrSwap
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
XrResult WINAPI wine_xrReleaseSwapchainImage(XrSwapchain swapchain, const XrSwapchainImageReleaseInfo *releaseInfo)
|
||||||
|
{
|
||||||
|
wine_XrSession *wine_session = ((wine_XrSwapchain *)swapchain)->wine_session;
|
||||||
|
IDXGIVkInteropDevice2 *dxvk_device;
|
||||||
|
XrResult ret;
|
||||||
|
|
||||||
|
WINE_TRACE("%p, %p\n", swapchain, releaseInfo);
|
||||||
|
if ((dxvk_device = wine_session->wine_instance->dxvk_device))
|
||||||
|
dxvk_device->lpVtbl->LockSubmissionQueue(dxvk_device);
|
||||||
|
ret = xrReleaseSwapchainImage(((wine_XrSwapchain *)swapchain)->swapchain, releaseInfo);
|
||||||
|
if (dxvk_device)
|
||||||
|
dxvk_device->lpVtbl->ReleaseSubmissionQueue(dxvk_device);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/* wineopenxr API */
|
/* wineopenxr API */
|
||||||
XrResult WINAPI __wineopenxr_GetVulkanInstanceExtensions(uint32_t buflen, uint32_t *outlen, char *buf)
|
XrResult WINAPI __wineopenxr_GetVulkanInstanceExtensions(uint32_t buflen, uint32_t *outlen, char *buf)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1989,15 +1989,6 @@ static XrResult WINAPI wine_xrQuerySystemTrackedKeyboardFB(XrSession session, co
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
XrResult WINAPI wine_xrReleaseSwapchainImage(XrSwapchain swapchain, const XrSwapchainImageReleaseInfo *releaseInfo)
|
|
||||||
{
|
|
||||||
XrResult ret;
|
|
||||||
|
|
||||||
WINE_TRACE("%p, %p\n", swapchain, releaseInfo);
|
|
||||||
ret = xrReleaseSwapchainImage(((wine_XrSwapchain *)swapchain)->swapchain, releaseInfo);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static XrResult WINAPI wine_xrRequestDisplayRefreshRateFB(XrSession session, float displayRefreshRate)
|
static XrResult WINAPI wine_xrRequestDisplayRefreshRateFB(XrSession session, float displayRefreshRate)
|
||||||
{
|
{
|
||||||
XrResult ret;
|
XrResult ret;
|
||||||
|
|
|
@ -53,6 +53,7 @@ XrResult WINAPI wine_xrGetVulkanInstanceExtensionsKHR(XrInstance instance, XrSys
|
||||||
XrResult WINAPI wine_xrNegotiateLoaderApiLayerInterface(const XrNegotiateLoaderInfo *loaderInfo, const char *layerName, XrNegotiateApiLayerRequest *apiLayerRequest);
|
XrResult WINAPI wine_xrNegotiateLoaderApiLayerInterface(const XrNegotiateLoaderInfo *loaderInfo, const char *layerName, XrNegotiateApiLayerRequest *apiLayerRequest);
|
||||||
XrResult WINAPI wine_xrNegotiateLoaderRuntimeInterface(const XrNegotiateLoaderInfo *loaderInfo, XrNegotiateRuntimeRequest *runtimeRequest);
|
XrResult WINAPI wine_xrNegotiateLoaderRuntimeInterface(const XrNegotiateLoaderInfo *loaderInfo, XrNegotiateRuntimeRequest *runtimeRequest);
|
||||||
XrResult WINAPI wine_xrPollEvent(XrInstance instance, XrEventDataBuffer *eventData);
|
XrResult WINAPI wine_xrPollEvent(XrInstance instance, XrEventDataBuffer *eventData);
|
||||||
|
XrResult WINAPI wine_xrReleaseSwapchainImage(XrSwapchain swapchain, const XrSwapchainImageReleaseInfo *releaseInfo);
|
||||||
|
|
||||||
/* Private thunks */
|
/* Private thunks */
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue