clEnqueueAcquireD3D11ObjectsKHR块很长一段时间

时间:2019-04-18 14:19:00

标签: directx opencl directx-11 amd direct3d11

在我的应用程序中,我有一个处理线程,该线程使OpenCL内核排队,该内核写入ID3D11Texture2D对象。

一切都正确无误。我可以通过clEnqueueAcquireD3D11ObjectsKHR成功获取共享的OpenCL-Direct3D11资源,并使用Direct3D11 API在另一个线程上渲染纹理。

我注意到,当应用程序的工作量稍大(从多个队列启动更多的OpenCL内核,更多的Direct3D11绘图)时,所有相关的API调用在性能方面都可以很好地扩展,它们花费的时间大约与以前相同。好吧,除了一个以外的所有内容-对clEnqueueAcquireD3D11ObjectsKHR的调用。

似乎此调用实际上在主机端阻止,试图获取一些共享资源。这没有意义,因为采集应在设备端异步进行。

所以我的问题是:

  • 什么会影响clEnqueueAcquireD3D11ObjectsKHR完成的时间?究竟是什么会导致此函数在相当长的时间内(3-20毫秒)阻塞调用线程?

其他信息: 硬件是AMD Radeon Pro WX7100 操作系统:Windows 10

0 个答案:

没有答案