6.42. Direct3D 11 互操作性

本节描述了低级 CUDA 驱动程序应用程序编程接口的 Direct3D 11 互操作性功能。请注意,Direct3D 11 资源的映射是使用 图形互操作性中描述的图形 API 不可知、资源映射接口执行的。

模块

 

枚举

enum CUd3d11DeviceList

函数

CUresult cuD3D11GetDevice ( CUdevice* pCudaDevice, IDXGIAdapter* pAdapter )
获取与显示适配器对应的 CUDA 设备。
CUresult cuD3D11GetDevices ( unsigned int* pCudaDeviceCount, CUdevice* pCudaDevices, unsigned int  cudaDeviceCount, ID3D11Device* pD3D11Device, CUd3d11DeviceList deviceList )
获取与 Direct3D 11 设备对应的 CUDA 设备。
CUresult cuGraphicsD3D11RegisterResource ( CUgraphicsResource* pCudaResource, ID3D11Resource* pD3DResource, unsigned int  Flags )
注册 Direct3D 11 资源以供 CUDA 访问。

枚举

enum CUd3d11DeviceList

与 D3D11 设备对应的 CUDA 设备

CU_D3D11_DEVICE_LIST_ALL = 0x01
D3D11 设备使用的所有 GPU 的 CUDA 设备
CU_D3D11_DEVICE_LIST_CURRENT_FRAME = 0x02
D3D11 设备在其当前渲染帧中使用的 GPU 的 CUDA 设备
CU_D3D11_DEVICE_LIST_NEXT_FRAME = 0x03
D3D11 设备在下一帧中将要使用的 GPU 的 CUDA 设备

函数

CUresult cuD3D11GetDevice ( CUdevice* pCudaDevice, IDXGIAdapter* pAdapter )
获取与显示适配器对应的 CUDA 设备。
参数
pCudaDevice
- 返回的与...对应的 CUDA 设备pAdapter
pAdapter
- 要查询 CUDA 设备的适配器
描述

*pCudaDevice中返回与从 IDXGIFactory::EnumAdapters 获取的适配器对应的 CUDA 兼容设备。pAdapter从 IDXGIFactory::EnumAdapters 获取。

如果pAdapter上没有设备是 CUDA 兼容的,则调用将返回 CUDA_ERROR_NO_DEVICE

注意

请注意,此函数也可能返回来自先前异步启动的错误代码。

另请参阅

cuD3D11GetDevices, cudaD3D11GetDevice

CUresult cuD3D11GetDevices ( unsigned int* pCudaDeviceCount, CUdevice* pCudaDevices, unsigned int  cudaDeviceCount, ID3D11Device* pD3D11Device, CUd3d11DeviceList deviceList )
获取与 Direct3D 11 设备对应的 CUDA 设备。
参数
pCudaDeviceCount
- 返回的与pD3D11Device
对应的 CUDA 设备数量
pCudaDevicespD3D11Device
- 返回的与
cudaDeviceCount对应的 CUDA 设备数量
pD3D11Device
- 输出设备数组的大小
- 要查询 CUDA 设备的 Direct3D 11 设备
deviceList
描述

- 要返回的设备集。此集合可以是 CU_D3D11_DEVICE_LIST_ALL (对于所有设备)、CU_D3D11_DEVICE_LIST_CURRENT_FRAME (对于用于渲染当前帧的设备,在 SLI 中)或 CU_D3D11_DEVICE_LIST_NEXT_FRAME (对于用于渲染下一帧的设备,在 SLI 中)。*pCudaDeviceCountpD3D11Device与 Direct3D 11 设备对应的 CUDA 兼容设备数量。也在*pCudaDevices- 返回的与中返回最多pD3D11Device.

个与 Direct3D 11 设备对应的 CUDA 兼容设备如果用于渲染pDevice

注意

请注意,此函数也可能返回来自先前异步启动的错误代码。

另请参阅

的任何 GPU 不具备 CUDA 功能,则调用将返回 CUDA_ERROR_NO_DEVICE

CUresult cuGraphicsD3D11RegisterResource ( CUgraphicsResource* pCudaResource, ID3D11Resource* pD3DResource, unsigned int  Flags )
注册 Direct3D 11 资源以供 CUDA 访问。
参数
pCudaResource
- 返回的图形资源句柄
pD3DResource
- 要注册的 Direct3D 资源
Flags
- 资源注册的参数
描述

注册 Direct3D 11 资源pD3DResource以供 CUDA 访问,并在pD3Dresource中返回pCudaResource的 CUDA 句柄。pCudaResourcepD3DResource中返回的句柄可用于映射和取消映射此资源,直到它被注销。成功时,此调用将增加

的内部引用计数。当此资源通过 cuGraphicsUnregisterResource() 注销时,此引用计数将递减。

此调用可能开销很高,不应在交互式应用程序中每帧调用。pD3DResource的类型

  • 必须是以下类型之一。

  • ID3D11Buffer:可以通过设备指针访问。

  • ID3D11Texture1D:纹理的各个子资源可以通过数组访问

  • ID3D11Texture2D:纹理的各个子资源可以通过数组访问

ID3D11Texture3D:纹理的各个子资源可以通过数组访问Flags参数可用于在注册时指定其他参数。此参数的有效值是

  • CU_GRAPHICS_REGISTER_FLAGS_NONE:指定关于如何使用此资源的任何提示。

  • CU_GRAPHICS_REGISTER_FLAGS_SURFACE_LDST:指定 CUDA 将把此资源绑定到表面引用。

  • CU_GRAPHICS_REGISTER_FLAGS_TEXTURE_GATHER:指定 CUDA 将对此资源执行纹理Gather操作。

并非所有上述类型的 Direct3D 资源都可以用于与 CUDA 的互操作性。以下是一些限制。

  • 主渲染目标可能未在 CUDA 中注册。

  • 格式不是 1、2 或 4 通道 8、16 或 32 位整数或浮点数据的纹理无法共享。

  • 深度或模板格式的表面无法共享。

以下是支持的 DXGI 格式的完整列表。为了简洁起见,符号 A_{B,C,D} 表示 A_B、A_C 和 A_D。

  • DXGI_FORMAT_A8_UNORM

  • DXGI_FORMAT_B8G8R8A8_UNORM

  • DXGI_FORMAT_B8G8R8X8_UNORM

  • DXGI_FORMAT_R16_FLOAT

  • DXGI_FORMAT_R16G16B16A16_{FLOAT,SINT,SNORM,UINT,UNORM}

  • DXGI_FORMAT_R16G16_{FLOAT,SINT,SNORM,UINT,UNORM}

  • DXGI_FORMAT_R16_{SINT,SNORM,UINT,UNORM}

  • DXGI_FORMAT_R32_FLOAT

  • DXGI_FORMAT_R32G32B32A32_{FLOAT,SINT,UINT}

  • DXGI_FORMAT_R32G32_{FLOAT,SINT,UINT}

  • DXGI_FORMAT_R32_{SINT,UINT}

  • DXGI_FORMAT_R8G8B8A8_{SINT,SNORM,UINT,UNORM,UNORM_SRGB}

  • DXGI_FORMAT_R8G8_{SINT,SNORM,UINT,UNORM}

  • DXGI_FORMAT_R8_{SINT,SNORM,UINT,UNORM}

如果pD3DResource类型不正确或已注册,则返回 CUDA_ERROR_INVALID_HANDLE。如果pD3DResource无法注册,则返回 CUDA_ERROR_UNKNOWN。如果Flags不是上述指定值之一,则返回 CUDA_ERROR_INVALID_VALUE

注意

请注意,此函数也可能返回来自先前异步启动的错误代码。

另请参阅

cuGraphicsUnregisterResource, cuGraphicsMapResources, cuGraphicsSubResourceGetMappedArray, cuGraphicsResourceGetMappedPointer, cudaGraphicsD3D11RegisterResource

Direct3D 11 互操作性 [已弃用]