DirectX11 CreateSharedHandle - 这是跨设备吗?

时间:2018-05-28 10:18:35

标签: c++ windows graphics directx gpu

我正在使用CreateShaderHandle来创建IDXGIResource1键控共享资源的句柄。目标是在一个线程中获取此资源并将其用于另一个线程。

现在我在同一个适配器上的两个线程上创建一个D3D11设备

hr = D3D11CreateDevice(dxgi_adapter, ...);

并分享此句柄有效。

如果在消费者线程上我在另一个适配器上创建设备,它似乎不起作用。

所以我的问题是:D3D11中的CreateShaderHandle句柄是否仅适用于同一个适配器(gpu)?

1 个答案:

答案 0 :(得分:1)

有关跨设备共享以及与使用DXGI密钥互斥锁相关的MSDN文章没有明确给出答案,但MSDN仍然在IDXGIFactory2::GetSharedResourceAdapterLuid中提供答案:

  

您无法跨适配器共享资源。因此,您无法在除创建资源的适配器之外的适配器上打开共享资源。   [...] ...在打开共享资源之前,确保资源是在适当的适配器上创建的。

也就是说,"仅适用于相同的适配器"资源共享。