6.41. Direct3D 10 互操作性
本节介绍低级别 CUDA 驱动程序应用程序编程接口的 Direct3D 10 互操作性功能。请注意,Direct3D 10 资源的映射是使用 图形互操作性 中描述的与图形 API 无关的资源映射接口执行的。
模块
枚举
- enum CUd3d10DeviceList
函数
- CUresult cuD3D10GetDevice ( CUdevice* pCudaDevice, IDXGIAdapter* pAdapter )
- 获取与显示适配器对应的 CUDA 设备。
- CUresult cuD3D10GetDevices ( unsigned int* pCudaDeviceCount, CUdevice* pCudaDevices, unsigned int cudaDeviceCount, ID3D10Device* pD3D10Device, CUd3d10DeviceList deviceList )
- 获取与 Direct3D 10 设备对应的 CUDA 设备。
- CUresult cuGraphicsD3D10RegisterResource ( CUgraphicsResource* pCudaResource, ID3D10Resource* pD3DResource, unsigned int Flags )
- 注册 Direct3D 10 资源以便 CUDA 访问。
枚举
函数
- CUresult cuD3D10GetDevice ( CUdevice* pCudaDevice, IDXGIAdapter* pAdapter )
-
获取与显示适配器对应的 CUDA 设备。
参数
- pCudaDevice
- - 返回的与以下项对应的 CUDA 设备pAdapter
- pAdapter
- - 要查询 CUDA 设备的适配器
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_NOT_FOUND, CUDA_ERROR_UNKNOWN
描述
在*pCudaDevice中返回与适配器对应的 CUDA 兼容设备pAdapter从 IDXGIFactory::EnumAdapters 获得。
如果pAdapter上没有 CUDA 兼容的设备,则调用将失败。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
- CUresult cuD3D10GetDevices ( unsigned int* pCudaDeviceCount, CUdevice* pCudaDevices, unsigned int cudaDeviceCount, ID3D10Device* pD3D10Device, CUd3d10DeviceList deviceList )
-
获取与 Direct3D 10 设备对应的 CUDA 设备。
参数
- pCudaDeviceCount
- - 返回的与pD3D10Device
- 对应的 CUDA 设备数量
- pCudaDevicespD3D10Device
- - 返回的与
- cudaDeviceCount对应的 CUDA 设备数量
- pD3D10Device
- - 输出设备数组的大小
- - 要查询 CUDA 设备的 Direct3D 10 设备
- deviceList
返回值
- 要返回的设备集。此集合可以是 CU_D3D10_DEVICE_LIST_ALL(所有设备)、CU_D3D10_DEVICE_LIST_CURRENT_FRAME(用于渲染当前帧的设备,在 SLI 中)或 CU_D3D10_DEVICE_LIST_NEXT_FRAME(用于渲染下一帧的设备,在 SLI 中)。
描述
在CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_NO_DEVICE, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_NOT_FOUND, CUDA_ERROR_UNKNOWN*pCudaDeviceCountpD3D10Device与 Direct3D 10 设备对应的 CUDA 兼容设备数量。也在*pCudaDevices- 返回的与中返回最多pD3D10Device.
cudaDeviceCount个与 Direct3D 10 设备对应的 CUDA 兼容设备。如果用于渲染
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
pDevice
- 的任何 GPU 不支持 CUDA,则调用将返回 CUDA_ERROR_NO_DEVICE。
-
参数
- CUresult cuGraphicsD3D10RegisterResource ( CUgraphicsResource* pCudaResource, ID3D10Resource* pD3DResource, unsigned int Flags )
- 注册 Direct3D 10 资源以便 CUDA 访问。
- pCudaResource
- - 返回的图形资源句柄
- pD3DResource
- - 要注册的 Direct3D 资源
返回值
Flags
描述
- 资源注册的参数pCudaResourceCUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_OUT_OF_MEMORY, CUDA_ERROR_UNKNOWN注册 Direct3D 10 资源以便 CUDA 访问,并在 CUresult cuGraphicsD3D10RegisterResource ( CUgraphicsResource* pCudaResource, ID3D10Resource* pD3DResource, unsigned int Flags ) *pCudaResource CUresult cuGraphicsD3D10RegisterResource ( CUgraphicsResource* pCudaResource, ID3D10Resource* pD3DResource, unsigned int Flags ) 中返回pCudaResourcepD3Dresource
的 CUDA 句柄。返回的句柄
可用于映射和取消映射此资源,直到其被注销。成功后,此调用将增加pCudaResource上的内部引用计数。
-
当通过 cuGraphicsUnregisterResource() 注销此资源时,此引用计数将递减。
-
此调用可能开销很高,不应在交互式应用程序的每一帧中调用。
-
的类型
-
pD3Dresource
必须是以下类型之一。pD3DResourceID3D10Buffer:可以通过设备指针访问。
-
ID3D10Texture1D:可以通过数组访问纹理的各个子资源
-
ID3D10Texture2D:可以通过数组访问纹理的各个子资源
-
ID3D10Texture3D:可以通过数组访问纹理的各个子资源
参数
-
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}pCudaResourceDXGI_FORMAT_R32G32_{FLOAT,SINT,UINT}pCudaResourceDXGI_FORMAT_R32_{SINT,UINT}pD3DResourceDXGI_FORMAT_R8G8B8A8_{SINT,SNORM,UINT,UNORM,UNORM_SRGB}
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
DXGI_FORMAT_R8G8_{SINT,SNORM,UINT,UNORM}