我正在使用CreateShaderHandle
来创建IDXGIResource1
键控共享资源的句柄。目标是在一个线程中获取此资源并将其用于另一个线程。
现在我在同一个适配器上的两个线程上创建一个D3D11设备
hr = D3D11CreateDevice(dxgi_adapter, ...);
并分享此句柄有效。
如果在消费者线程上我在另一个适配器上创建设备,它似乎不起作用。
所以我的问题是:D3D11中的CreateShaderHandle
句柄是否仅适用于同一个适配器(gpu)?
答案 0 :(得分:1)
有关跨设备共享以及与使用DXGI密钥互斥锁相关的MSDN文章没有明确给出答案,但MSDN仍然在IDXGIFactory2::GetSharedResourceAdapterLuid
中提供答案:
您无法跨适配器共享资源。因此,您无法在除创建资源的适配器之外的适配器上打开共享资源。 [...] ...在打开共享资源之前,确保资源是在适当的适配器上创建的。
也就是说,"仅适用于相同的适配器"资源共享。