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

github.com/doitsujin/dxvk.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gofman <pgofman@codeweavers.com>2023-07-06 03:18:06 +0300
committerPhilip Rebohle <25567304+doitsujin@users.noreply.github.com>2023-07-16 16:34:39 +0300
commit01ad79278bb1576f0d3f3608afac0d8278f0f214 (patch)
tree1a5d53945279ed0151f0b96a623f67370bfafe0c
parent48557886de7facc03fff1f020a444d3f880c8d9f (diff)
[d3d11] Support just one handle type in D3D11DXGIResource::{Get|Create}SharedHandle
-rw-r--r--src/d3d11/d3d11_resource.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/d3d11/d3d11_resource.cpp b/src/d3d11/d3d11_resource.cpp
index cf3adfbf..975e16b0 100644
--- a/src/d3d11/d3d11_resource.cpp
+++ b/src/d3d11/d3d11_resource.cpp
@@ -84,9 +84,15 @@ namespace dxvk {
HRESULT STDMETHODCALLTYPE D3D11DXGIResource::GetSharedHandle(
HANDLE* pSharedHandle) {
auto texture = GetCommonTexture(m_resource);
- if (texture == nullptr || pSharedHandle == nullptr || !(texture->Desc()->MiscFlags & D3D11_RESOURCE_MISC_SHARED))
+ if (texture == nullptr || pSharedHandle == nullptr ||
+ (texture->Desc()->MiscFlags & D3D11_RESOURCE_MISC_SHARED_NTHANDLE))
return E_INVALIDARG;
+ if (!(texture->Desc()->MiscFlags & (D3D11_RESOURCE_MISC_SHARED | D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX))) {
+ *pSharedHandle = NULL;
+ return S_OK;
+ }
+
HANDLE kmtHandle = texture->GetImage()->sharedHandle();
if (kmtHandle == INVALID_HANDLE_VALUE)
@@ -143,8 +149,9 @@ namespace dxvk {
LPCWSTR lpName,
HANDLE* pHandle) {
auto texture = GetCommonTexture(m_resource);
+ if (pHandle) *pHandle = nullptr;
if (texture == nullptr || pHandle == nullptr ||
- !(texture->Desc()->MiscFlags & (D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX | D3D11_RESOURCE_MISC_SHARED_NTHANDLE)))
+ !(texture->Desc()->MiscFlags & D3D11_RESOURCE_MISC_SHARED_NTHANDLE))
return E_INVALIDARG;
if (lpName)
@@ -155,9 +162,6 @@ namespace dxvk {
if (handle == INVALID_HANDLE_VALUE)
return E_INVALIDARG;
- if (texture->Desc()->MiscFlags & D3D11_RESOURCE_MISC_SHARED)
- handle = openKmtHandle( handle );
-
*pHandle = handle;
return S_OK;
}