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},
|
||||
"xrBeginFrame" : {"dispatch" : True, "driver" : True, "thunk" : False},
|
||||
"xrAcquireSwapchainImage" : {"dispatch" : True, "driver" : True, "thunk" : False},
|
||||
"xrReleaseSwapchainImage" : {"dispatch" : True, "driver" : True, "thunk" : False},
|
||||
}
|
||||
|
||||
NOT_OUR_FUNCTIONS = [
|
||||
|
|
|
@ -1909,6 +1909,21 @@ XrResult WINAPI wine_xrAcquireSwapchainImage(XrSwapchain swapchain, const XrSwap
|
|||
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 */
|
||||
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
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
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_xrNegotiateLoaderRuntimeInterface(const XrNegotiateLoaderInfo *loaderInfo, XrNegotiateRuntimeRequest *runtimeRequest);
|
||||
XrResult WINAPI wine_xrPollEvent(XrInstance instance, XrEventDataBuffer *eventData);
|
||||
XrResult WINAPI wine_xrReleaseSwapchainImage(XrSwapchain swapchain, const XrSwapchainImageReleaseInfo *releaseInfo);
|
||||
|
||||
/* Private thunks */
|
||||
|
||||
|
|
Loading…
Reference in a new issue