6.21. Direct3D 10 互操作性 [已弃用]

本节介绍已弃用的 Direct3D 10 互操作性函数。

枚举

enum cudaD3D10MapFlags
enum cudaD3D10RegisterFlags

函数

__host__cudaError_t cudaD3D10GetDirect3DDevice ( ID3D10Device** ppD3D10Device )
获取创建当前 CUDA 上下文所针对的 Direct3D 设备。
__host__cudaError_t cudaD3D10MapResources ( int  count, ID3D10Resource** ppResources )
映射 Direct3D 资源以供 CUDA 访问。
__host__cudaError_t cudaD3D10RegisterResource ( ID3D10Resource* pResource, unsigned int  flags )
注册 Direct3D 10 资源以供 CUDA 访问。
__host__cudaError_t cudaD3D10ResourceGetMappedArray ( cudaArray** ppArray, ID3D10Resource* pResource, unsigned int  subResource )
获取一个数组,通过该数组访问已映射以供 CUDA 访问的 Direct3D 资源的子资源。
__host__cudaError_t cudaD3D10ResourceGetMappedPitch ( size_t* pPitch, size_t* pPitchSlice, ID3D10Resource* pResource, unsigned int  subResource )
获取已映射以供 CUDA 访问的 Direct3D 资源的子资源的步幅。
__host__cudaError_t cudaD3D10ResourceGetMappedPointer ( void** pPointer, ID3D10Resource* pResource, unsigned int  subResource )
获取一个指针,通过该指针访问已映射以供 CUDA 访问的 Direct3D 资源的子资源。
__host__cudaError_t cudaD3D10ResourceGetMappedSize ( size_t* pSize, ID3D10Resource* pResource, unsigned int  subResource )
获取已映射以供 CUDA 访问的 Direct3D 资源的子资源的大小。
__host__cudaError_t cudaD3D10ResourceGetSurfaceDimensions ( size_t* pWidth, size_t* pHeight, size_t* pDepth, ID3D10Resource* pResource, unsigned int  subResource )
获取已注册的 Direct3D 表面的尺寸。
__host__cudaError_t cudaD3D10ResourceSetMapFlags ( ID3D10Resource* pResource, unsigned int  flags )
为映射 Direct3D 资源设置使用标志。
__host__cudaError_t cudaD3D10SetDirect3DDevice ( ID3D10Device* pD3D10Device, int  device = -1 )
设置用于与 CUDA 设备互操作的 Direct3D 10 设备。
__host__cudaError_t cudaD3D10UnmapResources ( int  count, ID3D10Resource** ppResources )
取消映射 Direct3D 资源。
__host__cudaError_t cudaD3D10UnregisterResource ( ID3D10Resource* pResource )
取消注册 Direct3D 资源。

枚举

enum cudaD3D10MapFlags

CUDA D3D10 映射标志

cudaD3D10MapFlagsNone = 0
默认值;假设资源可以读取/写入
cudaD3D10MapFlagsReadOnly = 1
CUDA 内核不会写入此资源
cudaD3D10MapFlagsWriteDiscard = 2
CUDA 内核只会写入此资源,而不会从中读取
enum cudaD3D10RegisterFlags

CUDA D3D10 注册标志

cudaD3D10RegisterFlagsNone = 0
默认值;可以通过 void* 访问资源
cudaD3D10RegisterFlagsArray = 1
可以通过 CUarray* 访问资源

函数

__host__cudaError_t cudaD3D10GetDirect3DDevice ( ID3D10Device** ppD3D10Device )
获取创建当前 CUDA 上下文所针对的 Direct3D 设备。
参数
ppD3D10Device
- 返回此线程的 Direct3D 设备
已弃用

此函数从 CUDA 5.0 开始已弃用。

描述

此函数已弃用,不应再使用。不再需要将 CUDA 设备与 D3D10 设备关联,即可实现最大的互操作性性能。

注意

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

另请参阅

cudaD3D10SetDirect3DDevice

__host__cudaError_t cudaD3D10MapResources ( int  count, ID3D10Resource** ppResources )
映射 Direct3D 资源以供 CUDA 访问。
参数
count
- 要为 CUDA 映射的资源数
ppResources
- 要为 CUDA 映射的资源
已弃用

此函数从 CUDA 3.0 开始已弃用。

描述

映射count中的 Direct3D 资源ppResources以供 CUDA 访问。

中的资源ppResources可以在 CUDA 内核中访问,直到它们被取消映射。当资源被 CUDA 映射时,Direct3D 不应访问任何资源。如果应用程序这样做,则结果是未定义的。

此函数提供同步保证,即在 cudaD3D10MapResources() 之前发出的任何 Direct3D 调用将在 cudaD3D10MapResources() 之后发出的任何 CUDA 内核开始之前完成。

如果任何ppResources尚未注册以供 CUDA 使用,或者如果ppResources包含任何重复条目,则返回 cudaErrorInvalidResourceHandle。如果任何ppResources当前已映射以供 CUDA 访问,则返回 cudaErrorUnknown

注意

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

另请参阅

cudaGraphicsMapResources

__host__cudaError_t cudaD3D10RegisterResource ( ID3D10Resource* pResource, unsigned int  flags )
注册 Direct3D 10 资源以供 CUDA 访问。
参数
pResource
- 要注册的资源
flags
- 资源注册的参数
已弃用

此函数从 CUDA 3.0 开始已弃用。

描述

注册 Direct3D 资源pResource以供 CUDA 访问。

如果此调用成功,则应用程序将能够映射和取消映射此资源,直到通过 cudaD3D10UnregisterResource() 取消注册为止。此外,在成功时,此调用将增加内部引用计数pResource。当通过 cudaD3D10UnregisterResource() 取消注册此资源时,此引用计数将递减。

此调用可能具有较高的开销,不应在交互式应用程序中每帧调用。

的类型pResource必须是以下类型之一

  • ID3D10Buffer:不能与flags设置为cudaD3D10RegisterFlagsArray.

  • ID3D10Texture1D:无限制。

  • ID3D10Texture2D:无限制。

  • ID3D10Texture3D:无限制。

参数flags指定 CUDA 将通过其访问 Direct3D 资源的机制。允许以下值。

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

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

  • 分配为共享的资源可能未在 CUDA 中注册。

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

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

如果未在此上下文上初始化 Direct3D 互操作性,则返回 cudaErrorInvalidDevice。如果pResource类型不正确或已注册,则返回 cudaErrorInvalidResourceHandle。如果pResource无法注册,则返回 cudaErrorUnknown

注意

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

另请参阅

cudaGraphicsD3D10RegisterResource

__host__cudaError_t cudaD3D10ResourceGetMappedArray ( cudaArray** ppArray, ID3D10Resource* pResource, unsigned int  subResource )
获取一个数组,通过该数组访问已映射以供 CUDA 访问的 Direct3D 资源的子资源。
参数
ppArray
- 返回的与子资源对应的数组
pResource
- 要访问的映射资源
subResource
- 要访问的 pResource 的子资源
已弃用

此函数从 CUDA 3.0 开始已弃用。

描述

*ppArray中返回一个数组,通过该数组可以访问映射的 Direct3D 资源的子资源pResource,该子资源对应于subResource。中设置的值ppArray可能在每次pResource映射时更改。

如果pResource未注册,则返回 cudaErrorInvalidResourceHandle。如果pResource未使用 cudaD3D10RegisterFlagsArray 使用标志注册,则返回 cudaErrorInvalidResourceHandle。如果pResource未映射,则返回 cudaErrorUnknown

有关subResource参数的用法要求,请参阅 cudaD3D10ResourceGetMappedPointer()

注意

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

另请参阅

cudaGraphicsSubResourceGetMappedArray

__host__cudaError_t cudaD3D10ResourceGetMappedPitch ( size_t* pPitch, size_t* pPitchSlice, ID3D10Resource* pResource, unsigned int  subResource )
获取已映射以供 CUDA 访问的 Direct3D 资源的子资源的步幅。
参数
pPitch
- 返回的子资源步幅
pPitchSlice
- 返回的子资源 Z 切片步幅
pResource
- 要访问的映射资源
subResource
- 要访问的 pResource 的子资源
已弃用

此函数从 CUDA 3.0 开始已弃用。

描述

*pPitch*pPitchSlice映射的 Direct3D 资源的子资源的步幅和 Z 切片步幅pResource,该子资源对应于subResource。中设置的值pPitchpPitchSlice可能在每次pResource映射时更改。

步幅和 Z 切片步幅值可用于计算表面上样本的位置,如下所示。

对于 2D 表面,位置 xy 处的样本相对于表面基指针的字节偏移量为

y * 步幅 + (每像素字节数) * x

对于 3D 表面,位置 xyz 处的样本相对于表面基指针的字节偏移量为

z*切片步幅 + y * 步幅 + (每像素字节数) * x

两个参数pPitchpPitchSlice都是可选的,可以设置为 NULL。

如果pResource不是 ID3D10Texture1D、ID3D10Texture2D 或 ID3D10Texture3D 类型,或者如果pResource尚未注册以供 CUDA 使用,则返回 cudaErrorInvalidResourceHandle。如果pResource未使用 cudaD3D10RegisterFlagsNone 使用标志注册,则返回 cudaErrorInvalidResourceHandle。如果pResource未映射以供 CUDA 访问,则返回 cudaErrorUnknown

有关subResource参数,请参阅 cudaD3D10ResourceGetMappedPointer()

注意

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

另请参阅

cudaGraphicsSubResourceGetMappedArray

__host__cudaError_t cudaD3D10ResourceGetMappedPointer ( void** pPointer, ID3D10Resource* pResource, unsigned int  subResource )
获取一个指针,通过该指针访问已映射以供 CUDA 访问的 Direct3D 资源的子资源。
参数
pPointer
- 返回的与子资源对应的指针
pResource
- 要访问的映射资源
subResource
- 要访问的 pResource 的子资源
已弃用

此函数从 CUDA 3.0 开始已弃用。

描述

*pPointer映射的 Direct3D 资源的子资源的基指针pResource,该子资源对应于subResource。中设置的值pPointer可能在每次pResource映射时更改。

如果pResource未注册,则返回 cudaErrorInvalidResourceHandle。如果pResource未使用 cudaD3D9RegisterFlagsNone 使用标志注册,则返回 cudaErrorInvalidResourceHandle。如果pResource未映射,则返回 cudaErrorUnknown

如果pResource是 ID3D10Buffer 类型,则subResource必须为 0。如果pResource是任何其他类型,则subResource的值必须来自 D3D10CalcSubResource() 中的子资源计算。

注意

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

另请参阅

cudaGraphicsResourceGetMappedPointer

__host__cudaError_t cudaD3D10ResourceGetMappedSize ( size_t* pSize, ID3D10Resource* pResource, unsigned int  subResource )
获取已映射以供 CUDA 访问的 Direct3D 资源的子资源的大小。
参数
pSize
- 返回的子资源大小
pResource
- 要访问的映射资源
subResource
- 要访问的 pResource 的子资源
已弃用

此函数从 CUDA 3.0 开始已弃用。

描述

*pSize映射的 Direct3D 资源的子资源的大小pResource,该子资源对应于subResource。中设置的值pSize可能在每次pResource映射时更改。

如果pResource尚未注册以供 CUDA 使用,则返回 cudaErrorInvalidHandle。如果pResource未使用 cudaD3D10RegisterFlagsNone 使用标志注册,则返回 cudaErrorInvalidResourceHandle。如果pResource未映射以供 CUDA 访问,则返回 cudaErrorUnknown

有关subResource参数,请参阅 cudaD3D10ResourceGetMappedPointer()

注意

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

另请参阅

cudaGraphicsResourceGetMappedPointer

__host__cudaError_t cudaD3D10ResourceGetSurfaceDimensions ( size_t* pWidth, size_t* pHeight, size_t* pDepth, ID3D10Resource* pResource, unsigned int  subResource )
获取已注册的 Direct3D 表面的尺寸。
参数
pWidth
- 返回的表面宽度
pHeight
- 返回的表面高度
pDepth
- 返回的表面深度
pResource
- 要访问的已注册资源
subResource
- 要访问的 pResource 的子资源
已弃用

此函数从 CUDA 3.0 开始已弃用。

描述

*pWidth, *pHeight*pDepth映射的 Direct3D 资源的子资源的尺寸pResource,该子资源对应于subResource.

由于抗锯齿表面可能每个像素有多个样本,因此资源的尺寸可能比 Direct3D 运行时报告的尺寸大一个整数因子。

参数pWidth, pHeightpDepth是可选的。对于 2D 表面,在中返回的值*pDepth将为 0。

如果pResource不是 ID3D10Texture1D、ID3D10Texture2D 或 ID3D10Texture3D 类型,或者如果pResource尚未注册以供 CUDA 使用,则返回 cudaErrorInvalidHandle。

有关subResource参数的用法要求,请参阅 cudaD3D10ResourceGetMappedPointer()

注意

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

另请参阅

cudaGraphicsSubResourceGetMappedArray

__host__cudaError_t cudaD3D10ResourceSetMapFlags ( ID3D10Resource* pResource, unsigned int  flags )
为映射 Direct3D 资源设置使用标志。
参数
pResource
- 要设置标志的已注册资源
flags
- 资源映射的参数
已弃用

此函数从 CUDA 3.0 开始已弃用。

描述

为映射 Direct3D 资源设置使用标志pResource.

对标志的更改将在下次映射pResource时生效。参数flags可以是以下任何值

  • cudaD3D10MapFlagsNone:指定不提示如何使用此资源。因此,假定 CUDA 内核将从此资源读取和写入。这是默认值。

  • cudaD3D10MapFlagsReadOnly:指定访问此资源的 CUDA 内核不会写入此资源。

  • cudaD3D10MapFlagsWriteDiscard:指定访问此资源的 CUDA 内核不会从此资源读取,并将覆盖资源的全部内容,因此资源中先前存储的任何数据都不会保留。

如果pResource尚未注册以供 CUDA 使用,则返回 cudaErrorInvalidHandle。如果pResource当前已映射以供 CUDA 访问,则返回 cudaErrorUnknown

注意

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

另请参阅

cudaGraphicsResourceSetMapFlags

__host__cudaError_t cudaD3D10SetDirect3DDevice ( ID3D10Device* pD3D10Device, int  device = -1 )
设置用于与 CUDA 设备互操作的 Direct3D 10 设备。
参数
pD3D10Device
- 用于互操作的 Direct3D 设备
device
- 要使用的 CUDA 设备。此设备必须是查询 cudaD3D10DeviceListAll 时从 cudaD3D10GetDevices 返回的设备之一,可以设置为 -1 以自动选择合适的 CUDA 设备。
已弃用

此函数从 CUDA 5.0 开始已弃用。

描述

此函数已弃用,不应再使用。不再需要将 CUDA 设备与 D3D10 设备关联,即可实现最大的互操作性性能。

如果需要,此函数将立即初始化device上的主上下文。

注意

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

另请参阅

cudaD3D10GetDevice, cudaGraphicsD3D10RegisterResource, cudaDeviceReset

__host__cudaError_t cudaD3D10UnmapResources ( int  count, ID3D10Resource** ppResources )
Unmaps Direct3D resources.
参数
count
- Number of resources to unmap for CUDA
ppResources
- Resources to unmap for CUDA
已弃用

此函数从 CUDA 3.0 开始已弃用。

描述

Unmaps thecountDirect3D resource inppResources.

This function provides the synchronization guarantee that any CUDA kernels issued before cudaD3D10UnmapResources() will complete before any Direct3D calls issued after cudaD3D10UnmapResources() begin.

如果任何ppResources尚未注册以供 CUDA 使用,或者如果ppResourcescontains any duplicate entries, then cudaErrorInvalidResourceHandle is returned. If any ofppResourcesare not presently mapped for access by CUDA then cudaErrorUnknown is returned.

注意

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

另请参阅

cudaGraphicsUnmapResources

__host__cudaError_t cudaD3D10UnregisterResource ( ID3D10Resource* pResource )
Unregisters a Direct3D resource.
参数
pResource
- Resource to unregister
已弃用

此函数从 CUDA 3.0 开始已弃用。

描述

Unregisters the Direct3D resourceresourceso it is not accessible by CUDA unless registered again.

如果pResourceis not registered, then cudaErrorInvalidResourceHandle is returned.

注意

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

另请参阅

cudaGraphicsUnregisterResource