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

本节介绍已弃用的Direct3D 10互操作功能。

枚举

enum cudaD3D10MapFlags
enum cudaD3D10RegisterFlags

Functions

__host__cudaError_t cudaD3D10GetDirect3DDevice ( ID3D10Device** ppD3D10Device )
Gets the Direct3D device against which the current CUDA context was created.
__host__cudaError_t cudaD3D10MapResources ( int  count, ID3D10Resource** ppResources )
Maps Direct3D Resources for access by CUDA.
__host__cudaError_t cudaD3D10RegisterResource ( ID3D10Resource* pResource, unsigned int  flags )
Registers a Direct3D 10 resource for access by CUDA.
__host__cudaError_t cudaD3D10ResourceGetMappedArray ( cudaArray** ppArray, ID3D10Resource* pResource, unsigned int  subResource )
Gets an array through which to access a subresource of a Direct3D resource which has been mapped for access by CUDA.
__host__cudaError_t cudaD3D10ResourceGetMappedPitch ( size_t* pPitch, size_t* pPitchSlice, ID3D10Resource* pResource, unsigned int  subResource )
Gets the pitch of a subresource of a Direct3D resource which has been mapped for access by CUDA.
__host__cudaError_t cudaD3D10ResourceGetMappedPointer ( void** pPointer, ID3D10Resource* pResource, unsigned int  subResource )
Gets a pointer through which to access a subresource of a Direct3D resource which has been mapped for access by CUDA.
__host__cudaError_t cudaD3D10ResourceGetMappedSize ( size_t* pSize, ID3D10Resource* pResource, unsigned int  subResource )
Gets the size of a subresource of a Direct3D resource which has been mapped for access by CUDA.
__host__cudaError_t cudaD3D10ResourceGetSurfaceDimensions ( size_t* pWidth, size_t* pHeight, size_t* pDepth, ID3D10Resource* pResource, unsigned int  subResource )
Gets the dimensions of a registered Direct3D surface.
__host__cudaError_t cudaD3D10ResourceSetMapFlags ( ID3D10Resource* pResource, unsigned int  flags )
Set usage flags for mapping a Direct3D resource.
__host__cudaError_t cudaD3D10SetDirect3DDevice ( ID3D10Device* pD3D10Device, int  device = -1 )
Sets the Direct3D 10 device to use for interoperability with a CUDA device.
__host__cudaError_t cudaD3D10UnmapResources ( int  count, ID3D10Resource** ppResources )
Unmaps Direct3D resources.
__host__cudaError_t cudaD3D10UnregisterResource ( ID3D10Resource* pResource )
Unregisters a Direct3D resource.

枚举

enum cudaD3D10MapFlags

CUDA D3D10 映射标志

数值
cudaD3D10MapFlagsNone = 0
Default; Assume resource can be read/written
cudaD3D10MapFlagsReadOnly = 1
CUDA kernels will not write to this resource
cudaD3D10MapFlagsWriteDiscard = 2
CUDA kernels will only write to and will not read from this resource
enum cudaD3D10RegisterFlags

CUDA D3D10 注册标志

数值
cudaD3D10RegisterFlagsNone = 0
Default; Resource can be accessed through a void*
cudaD3D10RegisterFlagsArray = 1
Resource can be accessed through a CUarray*

Functions

__host__cudaError_t cudaD3D10GetDirect3DDevice ( ID3D10Device** ppD3D10Device )
获取当前CUDA上下文所关联的Direct3D设备。
参数
ppD3D10Device
- Returns the Direct3D device for this thread
已弃用

该函数自CUDA 5.0起已弃用。

描述

此函数已弃用,不应再使用。为了获得最佳的互操作性性能,不再需要将CUDA设备与D3D10设备关联。

Note:

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

另请参阅:

cudaD3D10SetDirect3DDevice

__host__cudaError_t cudaD3D10MapResources ( int  count, ID3D10Resource** ppResources )
将Direct3D资源映射为可由CUDA访问。
参数
count
- Number of resources to map for CUDA
ppResources
- Resources to map for CUDA
已弃用

该函数自CUDA 3.0起已弃用。

描述

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

ppResources中的资源在解除映射之前,可以在CUDA内核中访问。当资源被CUDA映射时,Direct3D不应访问任何资源。如果应用程序这样做,结果将是未定义的。

此函数提供同步保证,确保在cudaD3D10MapResources()之前发出的所有Direct3D调用都会在cudaD3D10MapResources()之后发出的任何CUDA内核开始执行前完成。

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

Note:

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

另请参阅:

cudaGraphicsMapResources

__host__cudaError_t cudaD3D10RegisterResource ( ID3D10Resource* pResource, unsigned int  flags )
注册一个Direct3D 10资源以供CUDA访问。
参数
pResource
- Resource to register
flags
- Parameters for resource registration
已弃用

该函数自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

Note:

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

另请参阅:

cudaGraphicsD3D10RegisterResource

__host__cudaError_t cudaD3D10ResourceGetMappedArray ( cudaArray** ppArray, ID3D10Resource* pResource, unsigned int  subResource )
获取一个数组,用于访问已被CUDA映射以进行访问的Direct3D资源的子资源。
参数
ppArray
- Returned array corresponding to subresource
pResource
- Mapped resource to access
subResource
- Subresource of pResource to access
已弃用

该函数自CUDA 3.0起已弃用。

描述

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

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

关于subResource参数的使用要求,请参阅cudaD3D10ResourceGetMappedPointer()

Note:

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

另请参阅:

cudaGraphicsSubResourceGetMappedArray

__host__cudaError_t cudaD3D10ResourceGetMappedPitch ( size_t* pPitch, size_t* pPitchSlice, ID3D10Resource* pResource, unsigned int  subResource )
获取已被CUDA映射访问的Direct3D资源子资源的间距。
参数
pPitch
- Returned pitch of subresource
pPitchSlice
- Returned Z-slice pitch of subresource
pResource
- Mapped resource to access
subResource
- Subresource of pResource to access
已弃用

该函数自CUDA 3.0起已弃用。

描述

*pPitch*pPitchSlice中返回映射的Direct3D资源pResource的子资源(对应于subResource)的间距和Z切片间距。每次映射pResource时,pPitchpPitchSlice中设置的值可能会发生变化。

间距和Z切片间距值可用于计算表面上样本的位置,方法如下。

对于一个二维表面,从表面基指针到位置xy处样本的字节偏移量为:

y * pitch + (每个像素的字节数) * x

对于一个3D表面,从表面基指针开始,位于位置xyz处的样本字节偏移量为:

z*slicePitch + y * pitch + (每像素字节数) * x

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

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

关于subResource参数的使用要求,请参阅cudaD3D10ResourceGetMappedPointer()

Note:

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

另请参阅:

cudaGraphicsSubResourceGetMappedArray

__host__cudaError_t cudaD3D10ResourceGetMappedPointer ( void** pPointer, ID3D10Resource* pResource, unsigned int  subResource )
获取一个指针,用于访问已被CUDA映射以进行访问的Direct3D资源的子资源。
参数
pPointer
- Returned pointer corresponding to subresource
pResource
- Mapped resource to access
subResource
- Subresource of pResource to access
已弃用

该函数自CUDA 3.0起已弃用。

描述

*pPointer中返回映射的Direct3D资源pResource对应subResource的子资源基指针。pPointer中设置的值可能会在每次映射pResource时发生变化。

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

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

Note:

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

另请参阅:

cudaGraphicsResourceGetMappedPointer

__host__cudaError_t cudaD3D10ResourceGetMappedSize ( size_t* pSize, ID3D10Resource* pResource, unsigned int  subResource )
获取已被CUDA映射访问的Direct3D资源子资源的大小。
参数
pSize
- Returned size of subresource
pResource
- Mapped resource to access
subResource
- Subresource of pResource to access
已弃用

该函数自CUDA 3.0起已弃用。

描述

返回映射的Direct3D资源pResource中对应于subResource的子资源大小到*pSize。每次映射pResource时,pSize中设置的值可能会发生变化。

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

关于subResource参数的使用要求,请参阅cudaD3D10ResourceGetMappedPointer()

Note:

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

另请参阅:

cudaGraphicsResourceGetMappedPointer

__host__cudaError_t cudaD3D10ResourceGetSurfaceDimensions ( size_t* pWidth, size_t* pHeight, size_t* pDepth, ID3D10Resource* pResource, unsigned int  subResource )
获取已注册Direct3D表面的尺寸。
参数
pWidth
- Returned width of surface
pHeight
- Returned height of surface
pDepth
- Returned depth of surface
pResource
- Registered resource to access
subResource
- Subresource of pResource to access
已弃用

该函数自CUDA 3.0起已弃用。

描述

*pWidth*pHeight*pDepth中返回与subResource对应的已映射Direct3D资源pResource子资源的维度。

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

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

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

关于subResource参数的使用要求,请参阅cudaD3D10ResourceGetMappedPointer()

Note:

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

另请参阅:

cudaGraphicsSubResourceGetMappedArray

__host__cudaError_t cudaD3D10ResourceSetMapFlags ( ID3D10Resource* pResource, unsigned int  flags )
设置用于映射Direct3D资源的使用标志。
参数
pResource
- Registered resource to set flags for
flags
- Parameters for resource mapping
已弃用

该函数自CUDA 3.0起已弃用。

描述

设置用于映射Direct3D资源pResource的使用标志。

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

  • cudaD3D10MapFlagsNone: 表示不提供关于该资源使用方式的任何提示。因此,默认假设该资源将被CUDA内核进行读写操作。此为默认值。

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

  • cudaD3D10MapFlagsWriteDiscard: 指定访问此资源的CUDA内核将不会读取该资源,而是会覆盖资源的全部内容,因此之前存储在资源中的所有数据都不会被保留。

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

Note:

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

另请参阅:

cudaGraphicsResourceSetMapFlags

__host__cudaError_t cudaD3D10SetDirect3DDevice ( ID3D10Device* pD3D10Device, int  device = -1 )
设置用于与CUDA设备互操作的Direct3D 10设备。
参数
pD3D10Device
- Direct3D device to use for interoperability
device
- The CUDA device to use. This device must be among the devices returned when querying cudaD3D10DeviceListAll from cudaD3D10GetDevices, may be set to -1 to automatically select an appropriate CUDA device.
已弃用

该函数自CUDA 5.0起已弃用。

描述

此函数已弃用,不应再使用。为了获得最佳的互操作性性能,不再需要将CUDA设备与D3D10设备关联。

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

Note:

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

另请参阅:

cudaD3D10GetDevice, cudaGraphicsD3D10RegisterResource, cudaDeviceReset

__host__cudaError_t cudaD3D10UnmapResources ( int  count, ID3D10Resource** ppResources )
解除Direct3D资源的映射。
参数
count
- Number of resources to unmap for CUDA
ppResources
- Resources to unmap for CUDA
已弃用

该函数自CUDA 3.0起已弃用。

描述

解除映射ppResources中的count个Direct3D资源。

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

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

Note:

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

另请参阅:

cudaGraphicsUnmapResources

__host__cudaError_t cudaD3D10UnregisterResource ( ID3D10Resource* pResource )
注销一个Direct3D资源。
参数
pResource
- Resource to unregister
已弃用

该函数自CUDA 3.0起已弃用。

描述

注销Direct3D资源resource,使其无法被CUDA访问,除非重新注册。

如果pResource未注册,则返回cudaErrorInvalidResourceHandle

Note:

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

另请参阅:

cudaGraphicsUnregisterResource