6.40.1. Direct3D 9 互操作性 [已弃用]

[Direct3D 9 互操作性]

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

枚举

enum CUd3d9map_flags
enum CUd3d9register_flags

Functions

CUresult cuD3D9MapResources ( unsigned int  count, IDirect3DResource9** ppResource )
Map Direct3D resources for access by CUDA.
CUresult cuD3D9RegisterResource ( IDirect3DResource9* pResource, unsigned int  Flags )
Register a Direct3D resource for access by CUDA.
CUresult cuD3D9ResourceGetMappedArray ( CUarray* pArray, 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.
CUresult cuD3D9ResourceGetMappedPitch ( 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.
CUresult cuD3D9ResourceGetMappedPointer ( CUdeviceptr* pDevPtr, IDirect3DResource9* pResource, unsigned int  Face, unsigned int  Level )
Get the pointer through which to access a subresource of a Direct3D resource which has been mapped for access by CUDA.
CUresult cuD3D9ResourceGetMappedSize ( 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.
CUresult cuD3D9ResourceGetSurfaceDimensions ( size_t* pWidth, size_t* pHeight, size_t* pDepth, IDirect3DResource9* pResource, unsigned int  Face, unsigned int  Level )
Get the dimensions of a registered surface.
CUresult cuD3D9ResourceSetMapFlags ( IDirect3DResource9* pResource, unsigned int  Flags )
Set usage flags for mapping a Direct3D resource.
CUresult cuD3D9UnmapResources ( unsigned int  count, IDirect3DResource9** ppResource )
Unmaps Direct3D resources.
CUresult cuD3D9UnregisterResource ( IDirect3DResource9* pResource )
Unregister a Direct3D resource.

枚举

enum CUd3d9map_flags

用于映射或取消映射资源的标志

数值
CU_D3D9_MAPRESOURCE_FLAGS_NONE = 0x00
CU_D3D9_MAPRESOURCE_FLAGS_READONLY = 0x01
CU_D3D9_MAPRESOURCE_FLAGS_WRITEDISCARD = 0x02
enum CUd3d9register_flags

注册资源的标志

数值
CU_D3D9_REGISTER_FLAGS_NONE = 0x00
CU_D3D9_REGISTER_FLAGS_ARRAY = 0x01

Functions

CUresult cuD3D9MapResources ( unsigned int  count, IDirect3DResource9** ppResource )
将Direct3D资源映射以供CUDA访问。
参数
count
- Number of resources in ppResource
ppResource
- Resources to map for CUDA usage
已弃用

该函数自CUDA 3.0起已弃用。

描述

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

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

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

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

Note:

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

另请参阅:

cuGraphicsMapResources

CUresult cuD3D9RegisterResource ( IDirect3DResource9* pResource, unsigned int  Flags )
注册一个Direct3D资源以便CUDA访问。
参数
pResource
- Resource to register for CUDA access
Flags
- Flags for resource registration
已弃用

该函数自CUDA 3.0起已弃用。

描述

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

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

此调用可能开销较大,在交互式应用中不应每帧都调用。

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

  • IDirect3DVertexBuffer9: 不能与设置为CU_D3D9_REGISTER_FLAGS_ARRAY的Flags一起使用。

  • IDirect3DIndexBuffer9: 不能与设置了Flags为CU_D3D9_REGISTER_FLAGS_ARRAY的情况一起使用。

  • IDirect3DSurface9:只有IDirect3DSurface9类型的独立对象可以被显式共享。特别需要注意的是,单独的mipmap层级和立方体贴图的各个面不能直接注册。要访问与纹理关联的各个表面,必须注册基础纹理对象。关于Flags参数的限制,请参阅IDirect3DBaseTexture9类型。

  • IDirect3DBaseTexture9: 当纹理被注册时,与该纹理所有面的所有mipmap级别相关联的表面都将可以被CUDA访问。

Flags参数指定了CUDA访问Direct3D资源的机制。允许使用以下值。

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

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

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

  • 在D3DPOOL_SYSTEMMEM或D3DPOOL_MANAGED中分配的任何资源可能无法注册到CUDA。

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

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

如果当前上下文中未初始化Direct3D互操作性,则返回CUDA_ERROR_INVALID_CONTEXT。如果pResource类型不正确(例如是非独立的IDirect3DSurface9)或已被注册,则返回CUDA_ERROR_INVALID_HANDLE。如果pResource无法注册,则返回CUDA_ERROR_UNKNOWN

Note:

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

另请参阅:

cuGraphicsD3D9RegisterResource

CUresult cuD3D9ResourceGetMappedArray ( CUarray* pArray, IDirect3DResource9* pResource, unsigned int  Face, unsigned int  Level )
获取一个数组,用于访问已被CUDA映射以进行访问的Direct3D资源的子资源。
参数
pArray
- 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中返回一个数组,通过该数组可以访问与FaceLevel对应的已映射Direct3D资源pResource的子资源。每次映射pResource时,pArray中设置的值可能会发生变化。

如果pResource未注册,则返回CUDA_ERROR_INVALID_HANDLE。如果pResource未使用CU_D3D9_REGISTER_FLAGS_ARRAY标志注册,则返回CUDA_ERROR_INVALID_HANDLE。如果pResource未被映射,则返回CUDA_ERROR_NOT_MAPPED

关于FaceLevel参数的使用要求,请参阅cuD3D9ResourceGetMappedPointer()

Note:

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

另请参阅:

cuGraphicsSubResourceGetMappedArray

CUresult cuD3D9ResourceGetMappedPitch ( 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起已弃用。

描述

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

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

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

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

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

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

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

如果pResource不是IDirect3DBaseTexture9类型或其子类型,或者pResource未注册用于CUDA,则将返回cudaErrorInvalidResourceHandle。如果pResource未使用CU_D3D9_REGISTER_FLAGS_NONE标志注册,则将返回CUDA_ERROR_INVALID_HANDLE。如果pResource未被映射供CUDA访问,则将返回CUDA_ERROR_NOT_MAPPED

关于FaceLevel参数的使用要求,请参阅cuD3D9ResourceGetMappedPointer()

Note:

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

另请参阅:

cuGraphicsSubResourceGetMappedArray

CUresult cuD3D9ResourceGetMappedPointer ( CUdeviceptr* pDevPtr, IDirect3DResource9* pResource, unsigned int  Face, unsigned int  Level )
获取用于访问已由CUDA映射的Direct3D资源子资源的指针。
参数
pDevPtr
- 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起已弃用。

描述

*pDevPtr中返回映射的Direct3D资源pResource的子资源基指针,该子资源对应于FaceLevel。每次映射pResource时,pDevPtr中设置的值可能会发生变化。

如果pResource未注册,则返回CUDA_ERROR_INVALID_HANDLE。如果pResource注册时未使用CU_D3D9_REGISTER_FLAGS_NONE标志,则返回CUDA_ERROR_INVALID_HANDLE。如果pResource未被映射,则返回CUDA_ERROR_NOT_MAPPED

如果pResource的类型是IDirect3DCubeTexture9,那么Face必须是D3DCUBEMAP_FACES类型枚举的值之一。对于其他所有类型,Face必须为0。如果Face无效,则会返回CUDA_ERROR_INVALID_VALUE

如果pResource的类型是IDirect3DBaseTexture9,那么Level必须对应一个有效的mipmap层级。目前仅支持mipmap层级0。对于所有其他类型,Level必须为0。如果Level无效,则会返回CUDA_ERROR_INVALID_VALUE

Note:

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

另请参阅:

cuGraphicsResourceGetMappedPointer

CUresult cuD3D9ResourceGetMappedSize ( 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中对应于FaceLevel的子资源大小到*pSize。每次映射pResource时,pSize中设置的值可能会发生变化。

如果pResource尚未注册用于CUDA,则返回CUDA_ERROR_INVALID_HANDLE。如果pResource注册时未使用CU_D3D9_REGISTER_FLAGS_NONE标志,则返回CUDA_ERROR_INVALID_HANDLE。如果pResource未被映射供CUDA访问,则返回CUDA_ERROR_NOT_MAPPED

关于FaceLevel参数的使用要求,请参阅cuD3D9ResourceGetMappedPointer

Note:

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

另请参阅:

cuGraphicsResourceGetMappedPointer

CUresult cuD3D9ResourceGetSurfaceDimensions ( size_t* pWidth, size_t* pHeight, size_t* pDepth, IDirect3DResource9* pResource, unsigned int  Face, unsigned int  Level )
获取已注册表面的尺寸。
参数
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的子资源维度到*pWidth*pHeight*pDepth中,该子资源对应于FaceLevel

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

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

如果pResource不是IDirect3DBaseTexture9或IDirect3DSurface9类型,或者pResource尚未注册用于CUDA,则将返回CUDA_ERROR_INVALID_HANDLE

关于FaceLevel参数的使用要求,请参阅cuD3D9ResourceGetMappedPointer()

Note:

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

另请参阅:

cuGraphicsSubResourceGetMappedArray

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

该函数自Cuda 3.0起已弃用。

描述

设置Flags用于映射Direct3D资源pResource

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

  • CU_D3D9_MAPRESOURCE_FLAGS_NONE: 指定不提供关于该资源使用方式的任何提示。因此默认假定该资源将被CUDA内核进行读写操作。这是默认值。

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

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

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

Note:

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

另请参阅:

cuGraphicsResourceSetMapFlags

CUresult cuD3D9UnmapResources ( unsigned int  count, IDirect3DResource9** ppResource )
解除Direct3D资源的映射。
参数
count
- Number of resources to unmap for CUDA
ppResource
- Resources to unmap for CUDA
已弃用

该函数自CUDA 3.0起已弃用。

描述

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

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

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

Note:

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

另请参阅:

cuGraphicsUnmapResources

CUresult cuD3D9UnregisterResource ( IDirect3DResource9* pResource )
注销一个Direct3D资源。
参数
pResource
- Resource to unregister
已弃用

该函数自CUDA 3.0起已弃用。

描述

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

如果pResource未注册,则返回CUDA_ERROR_INVALID_HANDLE

Note:

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

另请参阅:

cuGraphicsUnregisterResource