libobs-d3d11: Reset handle and re-lock if texture rebuilt
If a texture has to be rebuilt due to a driver reset and is a keyed mutex shared texture, make sure to reacquire the shared handle and acquire the lock.master
parent
8f3ea18276
commit
2f3cb1804e
|
@ -89,6 +89,15 @@ void gs_texture_2d::Rebuild(ID3D11Device *dev)
|
|||
if (FAILED(hr))
|
||||
throw HRError("Failed to create GDI surface", hr);
|
||||
}
|
||||
|
||||
acquired = false;
|
||||
|
||||
if ((td.MiscFlags & D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX) != 0) {
|
||||
ComQIPtr<IDXGIResource> dxgi_res(texture);
|
||||
if (dxgi_res)
|
||||
GetSharedHandle(dxgi_res);
|
||||
device_texture_acquire_sync(this, 0, INFINITE);
|
||||
}
|
||||
}
|
||||
|
||||
void gs_texture_2d::RebuildNV12_Y(ID3D11Device *dev)
|
||||
|
@ -108,6 +117,15 @@ void gs_texture_2d::RebuildNV12_Y(ID3D11Device *dev)
|
|||
InitRenderTargets();
|
||||
|
||||
tex_uv->RebuildNV12_UV(dev);
|
||||
|
||||
acquired = false;
|
||||
|
||||
if ((td.MiscFlags & D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX) != 0) {
|
||||
ComQIPtr<IDXGIResource> dxgi_res(texture);
|
||||
if (dxgi_res)
|
||||
GetSharedHandle(dxgi_res);
|
||||
device_texture_acquire_sync(this, 0, INFINITE);
|
||||
}
|
||||
}
|
||||
|
||||
void gs_texture_2d::RebuildNV12_UV(ID3D11Device *dev)
|
||||
|
|
Loading…
Reference in New Issue