6.19. Direct3D 9 互操作性 [已弃用]
本节介绍已弃用的Direct3D 9互操作性函数。
枚举
- enum cudaD3D9MapFlags
- enum cudaD3D9RegisterFlags
Functions
- __host__ cudaError_t cudaD3D9MapResources ( int count, IDirect3DResource9** ppResources )
- Map Direct3D resources for access by CUDA.
- __host__ cudaError_t cudaD3D9RegisterResource ( IDirect3DResource9* pResource, unsigned int flags )
- Registers a Direct3D resource for access by CUDA.
- __host__ cudaError_t cudaD3D9ResourceGetMappedArray ( cudaArray** ppArray, IDirect3DResource9* pResource, unsigned int face, unsigned int level )
- Get an array through which to access a subresource of a Direct3D resource which has been mapped for access by CUDA.
- __host__ cudaError_t cudaD3D9ResourceGetMappedPitch ( size_t* pPitch, size_t* pPitchSlice, IDirect3DResource9* pResource, unsigned int face, unsigned int level )
- Get the pitch of a subresource of a Direct3D resource which has been mapped for access by CUDA.
- __host__ cudaError_t cudaD3D9ResourceGetMappedPointer ( void** pPointer, IDirect3DResource9* pResource, unsigned int face, unsigned int level )
- Get a pointer through which to access a subresource of a Direct3D resource which has been mapped for access by CUDA.
- __host__ cudaError_t cudaD3D9ResourceGetMappedSize ( size_t* pSize, IDirect3DResource9* pResource, unsigned int face, unsigned int level )
- Get the size of a subresource of a Direct3D resource which has been mapped for access by CUDA.
- __host__ cudaError_t cudaD3D9ResourceGetSurfaceDimensions ( size_t* pWidth, size_t* pHeight, size_t* pDepth, IDirect3DResource9* pResource, unsigned int face, unsigned int level )
- Get the dimensions of a registered Direct3D surface.
- __host__ cudaError_t cudaD3D9ResourceSetMapFlags ( IDirect3DResource9* pResource, unsigned int flags )
- Set usage flags for mapping a Direct3D resource.
- __host__ cudaError_t cudaD3D9UnmapResources ( int count, IDirect3DResource9** ppResources )
- Unmap Direct3D resources for access by CUDA.
- __host__ cudaError_t cudaD3D9UnregisterResource ( IDirect3DResource9* pResource )
- Unregisters a Direct3D resource for access by CUDA.
枚举
- enum cudaD3D9MapFlags
-
CUDA D3D9 映射标志
数值
- cudaD3D9MapFlagsNone = 0
- Default; Assume resource can be read/written
- cudaD3D9MapFlagsReadOnly = 1
- CUDA kernels will not write to this resource
- cudaD3D9MapFlagsWriteDiscard = 2
- CUDA kernels will only write to and will not read from this resource
- enum cudaD3D9RegisterFlags
-
CUDA D3D9 注册标志
数值
- cudaD3D9RegisterFlagsNone = 0
- Default; Resource can be accessed througa void*
- cudaD3D9RegisterFlagsArray = 1
- Resource can be accessed through a CUarray*
Functions
- __host__ cudaError_t cudaD3D9MapResources ( int count, IDirect3DResource9** 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不应访问任何资源。如果应用程序这样做,结果将是未定义的。
该函数提供同步保证,确保在cudaD3D9MapResources()之前发出的所有Direct3D调用都会在cudaD3D9MapResources()之后发出的任何CUDA内核开始执行前完成。
如果ppResources中的任何资源尚未注册用于CUDA,或者ppResources包含任何重复条目,则返回cudaErrorInvalidResourceHandle。如果ppResources中的任何资源当前已映射供CUDA访问,则返回cudaErrorUnknown。
Note:请注意,此函数也可能返回之前异步启动的错误代码。
另请参阅:
- __host__ cudaError_t cudaD3D9RegisterResource ( IDirect3DResource9* pResource, unsigned int flags )
-
注册一个Direct3D资源以便CUDA访问。
参数
- pResource
- - Resource to register
- flags
- - Parameters for resource registration
已弃用
该函数自CUDA 3.0起已弃用。
描述
注册Direct3D资源pResource以便CUDA访问。
如果此调用成功,应用程序将能够映射和取消映射该资源,直到通过cudaD3D9UnregisterResource()取消注册为止。此外,在成功时,此调用将增加pResource的内部引用计数。当通过cudaD3D9UnregisterResource()取消注册该资源时,此引用计数将递减。
此调用可能具有较高的开销,在交互式应用中不应每帧都调用。
pResource的类型必须是以下之一。
-
IDirect3DVertexBuffer9: 无备注。
-
IDirect3DIndexBuffer9: 无备注。
-
IDirect3DSurface9:只有IDirect3DSurface9类型的独立对象可以被显式共享。特别是,单独的mipmap层级和立方体贴图的各个面不能直接注册。要访问与纹理关联的各个表面,必须注册基础纹理对象。
-
IDirect3DBaseTexture9: 当纹理被注册时,与该纹理所有面的所有mipmap级别相关联的所有表面都将可以被CUDA访问。
flags参数指定了CUDA访问Direct3D资源的机制。允许使用以下值:
-
cudaD3D9RegisterFlagsNone: 指定CUDA将通过void*访问此资源。该资源每个子资源的指针、大小和间距可分别通过cudaD3D9ResourceGetMappedPointer()、cudaD3D9ResourceGetMappedSize()和cudaD3D9ResourceGetMappedPitch()查询。此选项对所有资源类型均有效。
并非所有上述类型的Direct3D资源都能用于与CUDA的互操作性。存在以下限制:
-
主渲染目标可能未在CUDA中注册。
-
分配为共享的资源可能无法在CUDA中注册。
-
在D3DPOOL_SYSTEMMEM或D3DPOOL_MANAGED中分配的任何资源可能无法注册到CUDA。
-
无法共享那些格式不是1、2或4通道的8位、16位或32位整数或浮点数据的纹理。
-
深度或模板格式的表面无法共享。
如果当前上下文中未初始化Direct3D互操作性,则返回cudaErrorInvalidDevice。如果pResource类型不正确(例如是非独立的IDirect3DSurface9)或已被注册,则返回cudaErrorInvalidResourceHandle。如果pResource无法注册,则返回cudaErrorUnknown。
Note:请注意,此函数也可能返回之前异步启动的错误代码。
另请参阅:
- __host__ cudaError_t cudaD3D9ResourceGetMappedArray ( cudaArray** ppArray, IDirect3DResource9* pResource, unsigned int face, unsigned int level )
-
获取一个数组,用于访问已被CUDA映射以进行访问的Direct3D资源的子资源。
参数
- ppArray
- - Returned array corresponding to subresource
- pResource
- - Mapped resource to access
- face
- - Face of resource to access
- level
- - Level of resource to access
已弃用
该函数自CUDA 3.0起已弃用。
描述
在*pArray中返回一个数组,通过该数组可以访问映射的Direct3D资源pResource中对应于face和level的子资源。每次映射pResource时,pArray中设置的值可能会发生变化。
如果pResource未注册,则返回cudaErrorInvalidResourceHandle。如果pResource未使用cudaD3D9RegisterFlagsArray标志注册,则返回cudaErrorInvalidResourceHandle。如果pResource未被映射,则返回cudaErrorUnknown。
关于face和level参数的使用要求,请参阅cudaD3D9ResourceGetMappedPointer()。
Note:请注意,此函数也可能返回之前异步启动的错误代码。
另请参阅:
- __host__ cudaError_t cudaD3D9ResourceGetMappedPitch ( size_t* pPitch, size_t* pPitchSlice, IDirect3DResource9* pResource, unsigned int face, unsigned int level )
-
获取已被CUDA映射访问的Direct3D资源子资源的间距。
参数
- pPitch
- - Returned pitch of subresource
- pPitchSlice
- - Returned Z-slice pitch of subresource
- pResource
- - Mapped resource to access
- face
- - Face of resource to access
- level
- - Level of resource to access
已弃用
该函数自CUDA 3.0起已弃用。
描述
返回映射的Direct3D资源pResource的子资源(对应于face和level)在*pPitch和*pPitchSlice中的间距和Z切片间距。每次映射pResource时,pPitch和pPitchSlice中设置的值可能会发生变化。
间距和Z切片间距值可用于计算表面上样本的位置,方法如下。
对于一个二维表面,从表面基指针到位置x、y处样本的字节偏移量为:
y * pitch + (每个像素的字节数) * x
对于一个3D表面,从表面基指针开始,位于位置x、y、z处的样本字节偏移量为:
z*slicePitch + y * pitch + (每像素字节数) * x
参数 pPitch 和 pPitchSlice 都是可选的,可以设置为 NULL。
如果pResource不是IDirect3DBaseTexture9类型或其子类型,或者pResource未注册用于CUDA,则将返回cudaErrorInvalidResourceHandle。如果pResource未使用cudaD3D9RegisterFlagsNone标志进行注册,则将返回cudaErrorInvalidResourceHandle。如果pResource未被映射供CUDA访问,则将返回cudaErrorUnknown。
关于face和level参数的使用要求,请参阅cudaD3D9ResourceGetMappedPointer()。
Note:请注意,此函数也可能返回之前异步启动的错误代码。
另请参阅:
- __host__ cudaError_t cudaD3D9ResourceGetMappedPointer ( void** pPointer, IDirect3DResource9* pResource, unsigned int face, unsigned int level )
-
获取一个指针,用于访问已被CUDA映射以进行访问的Direct3D资源的子资源。
参数
- pPointer
- - Returned pointer corresponding to subresource
- pResource
- - Mapped resource to access
- face
- - Face of resource to access
- level
- - Level of resource to access
已弃用
该函数自CUDA 3.0起已弃用。
描述
在*pPointer中返回映射的Direct3D资源pResource对应于face和level的子资源基指针。pPointer中设置的值可能会在每次映射pResource时发生变化。
如果pResource未注册,则返回cudaErrorInvalidResourceHandle。如果pResource未使用cudaD3D9RegisterFlagsNone标志注册,则返回cudaErrorInvalidResourceHandle。如果pResource未被映射,则返回cudaErrorUnknown。
如果pResource的类型是IDirect3DCubeTexture9,那么face必须是D3DCUBEMAP_FACES类型枚举的值之一。对于其他所有类型,face必须为0。如果face无效,则会返回cudaErrorInvalidValue。
如果pResource是IDirect3DBaseTexture9类型,那么level必须对应有效的mipmap层级。目前仅支持mipmap层级0。对于其他所有类型,level必须为0。如果level无效,则返回cudaErrorInvalidValue。
Note:请注意,此函数也可能返回之前异步启动的错误代码。
另请参阅:
- __host__ cudaError_t cudaD3D9ResourceGetMappedSize ( size_t* pSize, IDirect3DResource9* pResource, unsigned int face, unsigned int level )
-
获取已被CUDA映射访问的Direct3D资源的子资源大小。
参数
- pSize
- - Returned size of subresource
- pResource
- - Mapped resource to access
- face
- - Face of resource to access
- level
- - Level of resource to access
已弃用
该函数自CUDA 3.0起已弃用。
描述
返回映射的Direct3D资源pResource对应于face和level的子资源大小到*pSize中。pSize中设置的值可能会在每次映射pResource时发生变化。
如果pResource尚未注册用于CUDA,则返回cudaErrorInvalidResourceHandle。如果pResource未使用cudaD3D9RegisterFlagsNone标志注册,则返回cudaErrorInvalidResourceHandle。如果pResource未被映射为CUDA可访问,则返回cudaErrorUnknown。
关于face和level参数的使用要求,请参阅cudaD3D9ResourceGetMappedPointer()。
Note:请注意,此函数也可能返回之前异步启动的错误代码。
另请参阅:
- __host__ cudaError_t cudaD3D9ResourceGetSurfaceDimensions ( size_t* pWidth, size_t* pHeight, size_t* pDepth, IDirect3DResource9* pResource, unsigned int face, unsigned int level )
-
获取已注册Direct3D表面的尺寸。
参数
- pWidth
- - Returned width of surface
- pHeight
- - Returned height of surface
- pDepth
- - Returned depth of surface
- pResource
- - Registered resource to access
- face
- - Face of resource to access
- level
- - Level of resource to access
已弃用
该函数自CUDA 3.0起已弃用。
描述
返回映射的Direct3D资源pResource中对应于face和level的子资源维度,分别存储在*pWidth、*pHeight和*pDepth中。
由于抗锯齿表面每个像素可能包含多个样本,资源的尺寸可能会比Direct3D运行时报告的尺寸大一个整数倍。
参数 pWidth、pHeight 和 pDepth 是可选的。对于2D表面,*pDepth 中返回的值将为0。
如果pResource不是IDirect3DBaseTexture9或IDirect3DSurface9类型,或者pResource尚未注册用于CUDA,则将返回cudaErrorInvalidResourceHandle。
关于face和level参数的使用要求,请参阅cudaD3D9ResourceGetMappedPointer。
Note:请注意,此函数也可能返回之前异步启动的错误代码。
另请参阅:
- __host__ cudaError_t cudaD3D9ResourceSetMapFlags ( IDirect3DResource9* pResource, unsigned int flags )
-
设置用于映射Direct3D资源的使用标志。
参数
- pResource
- - Registered resource to set flags for
- flags
- - Parameters for resource mapping
已弃用
该函数自CUDA 3.0起已弃用。
描述
设置用于映射Direct3D资源pResource的标志。
对标志的更改将在下次映射pResource时生效。flags参数可以是以下任意一种:
-
cudaD3D9MapFlagsNone: 表示不提供该资源使用方式的任何提示。因此默认假设该资源将被CUDA内核进行读写操作。此为默认值。
-
cudaD3D9MapFlagsReadOnly: 指定访问此资源的CUDA内核将不会写入该资源。
-
cudaD3D9MapFlagsWriteDiscard: 指定访问此资源的CUDA内核不会读取该资源,而是会覆盖资源的全部内容,因此不会保留先前存储在资源中的任何数据。
如果pResource尚未注册用于CUDA,则返回cudaErrorInvalidResourceHandle。如果pResource当前已映射供CUDA访问,则返回cudaErrorUnknown。
Note:请注意,此函数也可能返回之前异步启动的错误代码。
另请参阅:
cudaInteropResourceSetMapFlags
- __host__ cudaError_t cudaD3D9UnmapResources ( int count, IDirect3DResource9** ppResources )
-
解除Direct3D资源的映射,以便CUDA访问。
参数
- count
- - Number of resources to unmap for CUDA
- ppResources
- - Resources to unmap for CUDA
已弃用
该函数自CUDA 3.0起已弃用。
描述
解除映射ppResources中的count个Direct3D资源。
此函数提供同步保证,确保在cudaD3D9UnmapResources()之前发出的任何CUDA内核都将在cudaD3D9UnmapResources()之后发出的任何Direct3D调用开始前完成。
如果ppResources中的任何资源尚未注册供CUDA使用,或者ppResources包含任何重复条目,则将返回cudaErrorInvalidResourceHandle。如果ppResources中的任何资源当前未被CUDA映射以供访问,则将返回cudaErrorUnknown。
Note:请注意,此函数也可能返回之前异步启动的错误代码。
另请参阅:
- __host__ cudaError_t cudaD3D9UnregisterResource ( IDirect3DResource9* pResource )
-
取消注册一个Direct3D资源,使其无法被CUDA访问。
参数
- pResource
- - Resource to unregister
已弃用
该函数自CUDA 3.0起已弃用。
描述
注销Direct3D资源pResource,使其无法被CUDA访问,除非重新注册。
如果pResource未注册,则返回cudaErrorInvalidResourceHandle。
Note:请注意,此函数也可能返回之前异步启动的错误代码。
另请参阅: