6.40.1. Direct3D 9 互操作性 [已弃用]
[Direct3D 9 互操作性]
本节介绍已弃用的 Direct3D 9 互操作性功能。
枚举
- enum CUd3d9map_flags
- enum CUd3d9register_flags
函数
- CUresult cuD3D9MapResources ( unsigned int count, IDirect3DResource9** ppResource )
- 映射 Direct3D 资源以供 CUDA 访问。
- CUresult cuD3D9RegisterResource ( IDirect3DResource9* pResource, unsigned int Flags )
- 注册 Direct3D 资源以供 CUDA 访问。
- CUresult cuD3D9ResourceGetMappedArray ( CUarray* pArray, IDirect3DResource9* pResource, unsigned int Face, unsigned int Level )
- 获取一个数组,通过该数组访问已映射以供 CUDA 访问的 Direct3D 资源的子资源。
- CUresult cuD3D9ResourceGetMappedPitch ( size_t* pPitch, size_t* pPitchSlice, IDirect3DResource9* pResource, unsigned int Face, unsigned int Level )
- 获取已映射以供 CUDA 访问的 Direct3D 资源的子资源的 pitch。
- CUresult cuD3D9ResourceGetMappedPointer ( CUdeviceptr* pDevPtr, IDirect3DResource9* pResource, unsigned int Face, unsigned int Level )
- 获取一个指针,通过该指针访问已映射以供 CUDA 访问的 Direct3D 资源的子资源。
- CUresult cuD3D9ResourceGetMappedSize ( size_t* pSize, IDirect3DResource9* pResource, unsigned int Face, unsigned int Level )
- 获取已映射以供 CUDA 访问的 Direct3D 资源的子资源的大小。
- CUresult cuD3D9ResourceGetSurfaceDimensions ( size_t* pWidth, size_t* pHeight, size_t* pDepth, IDirect3DResource9* pResource, unsigned int Face, unsigned int Level )
- 获取已注册表面的尺寸。
- CUresult cuD3D9ResourceSetMapFlags ( IDirect3DResource9* pResource, unsigned int Flags )
- 设置用于映射 Direct3D 资源的使用标志。
- CUresult cuD3D9UnmapResources ( unsigned int count, IDirect3DResource9** ppResource )
- 取消映射 Direct3D 资源。
- CUresult cuD3D9UnregisterResource ( IDirect3DResource9* pResource )
- 注销 Direct3D 资源。
枚举
函数
- CUresult cuD3D9MapResources ( unsigned int count, IDirect3DResource9** ppResource )
-
映射 Direct3D 资源以供 CUDA 访问。
参数
- count
- - ppResource 中的资源数量
- ppResource
- - 要映射以供 CUDA 使用的资源
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_ALREADY_MAPPED, CUDA_ERROR_UNKNOWN
已弃用
此函数已从 CUDA 3.0 开始弃用。
描述
映射count中的 Direct3D 资源ppResource以供 CUDA 访问。
中的资源ppResource可以在 CUDA 内核中访问,直到它们被取消映射。Direct3D 在被 CUDA 映射时,不应访问任何资源。如果应用程序这样做,结果将是未定义的。
此函数提供同步保证,即在 cuD3D9MapResources() 之前发出的任何 Direct3D 调用将在 cuD3D9MapResources() 之后发出的任何 CUDA 内核开始之前完成。
如果任何ppResource尚未注册以供 CUDA 使用,或者如果ppResource包含任何重复条目,则返回 CUDA_ERROR_INVALID_HANDLE。如果任何ppResource当前已映射以供 CUDA 访问,则返回 CUDA_ERROR_ALREADY_MAPPED。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
- CUresult cuD3D9RegisterResource ( IDirect3DResource9* pResource, unsigned int Flags )
-
注册 Direct3D 资源以供 CUDA 访问。
参数
- pResource
- - 要注册以供 CUDA 访问的资源
- Flags
- - 资源注册的标志
返回值
CUDA_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
已弃用
此函数已从 CUDA 3.0 开始弃用。
描述
注册 Direct3D 资源pResource以供 CUDA 访问。
如果此调用成功,则应用程序将能够映射和取消映射此资源,直到通过 cuD3D9UnregisterResource() 注销该资源。此外,如果成功,此调用将增加内部引用计数。pResource。当通过 cuD3D9UnregisterResource() 注销此资源时,此引用计数将递减。
此调用可能是高开销的,不应在交互式应用程序中每帧调用。
的类型pResource必须是以下类型之一。
-
IDirect3DVertexBuffer9:不能与设置为 CU_D3D9_REGISTER_FLAGS_ARRAY 的Flags一起使用。
-
IDirect3DIndexBuffer9:不能与Flags一起使用。
-
IDirect3DSurface9:只有 IDirect3DSurface9 类型的独立对象可以显式共享。特别是,mipmap 级别和立方体贴图的面不能直接注册。要访问与纹理关联的各个表面,必须注册基本纹理对象。有关Flags参数的限制,请参阅 IDirect3DBaseTexture9 类型。
-
IDirect3DBaseTexture9:注册纹理后,与纹理所有面的所有 mipmap 级别关联的所有表面都将可供 CUDA 访问。
参数Flags指定 CUDA 将通过何种机制访问 Direct3D 资源。允许以下值。
-
CU_D3D9_REGISTER_FLAGS_NONE:指定 CUDA 将通过 CUdeviceptr 访问此资源。可以通过 cuD3D9ResourceGetMappedPointer()、cuD3D9ResourceGetMappedSize() 和 cuD3D9ResourceGetMappedPitch() 分别查询此分配的每个子资源的指针、大小和(对于纹理)pitch。此选项对所有资源类型都有效。
-
CU_D3D9_REGISTER_FLAGS_ARRAY:指定 CUDA 将通过 CUarray 访问此资源,该数组通过 cuD3D9ResourceGetMappedArray() 在子资源的基础上查询。此选项仅对 IDirect3DSurface9 类型和 IDirect3DBaseTexture9 的子类型的资源有效。
并非上述类型的所有 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。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
- CUresult cuD3D9ResourceGetMappedArray ( CUarray* pArray, IDirect3DResource9* pResource, unsigned int Face, unsigned int Level )
-
获取一个数组,通过该数组访问已映射以供 CUDA 访问的 Direct3D 资源的子资源。
参数
- pArray
- - 返回的与子资源对应的数组
- pResource
- - 要访问的已映射资源
- Face
- - 要访问的资源的面
- Level
- - 要访问的资源的级别
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_NOT_MAPPED
已弃用
此函数已从 CUDA 3.0 开始弃用。
描述
在*pArray中返回一个数组,通过该数组可以访问映射的 Direct3D 资源pResource的子资源,该子资源对应于Face和Level。在pArray中设置的值可能在每次映射pResource时都会更改。
如果pResource未注册,则返回 CUDA_ERROR_INVALID_HANDLE。如果pResource未使用标志 CU_D3D9_REGISTER_FLAGS_ARRAY 注册,则返回 CUDA_ERROR_INVALID_HANDLE。如果pResource未映射,则返回 CUDA_ERROR_NOT_MAPPED。
有关Face和Level参数的使用要求,请参阅 cuD3D9ResourceGetMappedPointer()。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
- CUresult cuD3D9ResourceGetMappedPitch ( size_t* pPitch, size_t* pPitchSlice, IDirect3DResource9* pResource, unsigned int Face, unsigned int Level )
-
获取已映射以供 CUDA 访问的 Direct3D 资源的子资源的 pitch。
参数
- pPitch
- - 返回的子资源的 pitch
- pPitchSlice
- - 返回的子资源的 Z 切片 pitch
- pResource
- - 要访问的已映射资源
- Face
- - 要访问的资源的面
- Level
- - 要访问的资源的级别
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_NOT_MAPPED
已弃用
此函数已从 CUDA 3.0 开始弃用。
描述
在*pPitch和*pPitchSlice已映射的 Direct3D 资源的子资源的 pitch 和 Z 切片 pitchpResource,它对应于Face和Level。在中设置的值pPitch和pPitchSlice中设置的值可能在每次映射pResource时都会更改。
pitch 和 Z 切片 pitch 值可用于计算表面上样本的位置,如下所示。
对于 2D 表面,位置 x、y 处的样本相对于表面的基址指针的字节偏移量为
y * pitch + (每像素字节数)* x
对于 3D 表面,位置 x、y、z 处的样本相对于表面的基址指针的字节偏移量为
z*slicePitch + y * pitch + (每像素字节数)* x
两个参数pPitch和pPitchSlice都是可选的,可以设置为 NULL。
如果pResource不是 IDirect3DBaseTexture9 类型或其子类型之一,或者如果pResource尚未注册以供 CUDA 使用,则返回 cudaErrorInvalidResourceHandle。如果pResource未使用标志 CU_D3D9_REGISTER_FLAGS_NONE 注册,则返回 CUDA_ERROR_INVALID_HANDLE。如果pResource未映射以供 CUDA 访问,则返回 CUDA_ERROR_NOT_MAPPED。
有关Face和Level参数的使用要求,请参阅 cuD3D9ResourceGetMappedPointer()。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
- CUresult cuD3D9ResourceGetMappedPointer ( CUdeviceptr* pDevPtr, IDirect3DResource9* pResource, unsigned int Face, unsigned int Level )
-
获取一个指针,通过该指针访问已映射以供 CUDA 访问的 Direct3D 资源的子资源。
参数
- pDevPtr
- - 返回的与子资源对应的指针
- pResource
- - 要访问的已映射资源
- Face
- - 要访问的资源的面
- Level
- - 要访问的资源的级别
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_NOT_MAPPED
已弃用
此函数已从 CUDA 3.0 开始弃用。
描述
在*pDevPtr映射的 Direct3D 资源的子资源的基址指针pResource,它对应于Face和Level。在中设置的值pDevPtr中设置的值可能在每次映射pResource时都会更改。
如果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。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
- CUresult cuD3D9ResourceGetMappedSize ( size_t* pSize, IDirect3DResource9* pResource, unsigned int Face, unsigned int Level )
-
获取已映射以供 CUDA 访问的 Direct3D 资源的子资源的大小。
参数
- pSize
- - 返回的子资源的大小
- pResource
- - 要访问的已映射资源
- Face
- - 要访问的资源的面
- Level
- - 要访问的资源的级别
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_NOT_MAPPED
已弃用
此函数已从 CUDA 3.0 开始弃用。
描述
在*pSize映射的 Direct3D 资源的子资源的大小pResource,它对应于Face和Level。在中设置的值pSize中设置的值可能在每次映射pResource时都会更改。
如果pResource尚未注册以供 CUDA 使用,则返回 CUDA_ERROR_INVALID_HANDLE。如果pResource未使用标志 CU_D3D9_REGISTER_FLAGS_NONE 注册,则返回 CUDA_ERROR_INVALID_HANDLE。如果pResource未映射以供 CUDA 访问,则返回 CUDA_ERROR_NOT_MAPPED。
有关Face和Level参数,请参阅 cuD3D9ResourceGetMappedPointer。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
- CUresult cuD3D9ResourceGetSurfaceDimensions ( size_t* pWidth, size_t* pHeight, size_t* pDepth, IDirect3DResource9* pResource, unsigned int Face, unsigned int Level )
-
获取已注册表面的尺寸。
参数
- pWidth
- - 返回的表面的宽度
- pHeight
- - 返回的表面的高度
- pDepth
- - 返回的表面的深度
- pResource
- - 要访问的注册资源
- Face
- - 要访问的资源的面
- Level
- - 要访问的资源的级别
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_HANDLE
已弃用
此函数已从 CUDA 3.0 开始弃用。
描述
在*pWidth, *pHeight,和*pDepth已映射 Direct3D 资源的子资源的维度pResource,它对应于Face和Level.
由于抗锯齿表面可能每个像素有多个采样,因此资源的维度可能比 Direct3D 运行时报告的维度大一个整数倍。
这些参数pWidth, pHeight,和pDepth是可选的。对于 2D 表面,在*pDepth中返回的值将为 0。
如果pResource不是 IDirect3DBaseTexture9 或 IDirect3DSurface9 类型,或者如果pResource尚未注册以与 CUDA 一起使用,则返回 CUDA_ERROR_INVALID_HANDLE。
有关Face和Level参数的使用要求,请参阅 cuD3D9ResourceGetMappedPointer()。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
- CUresult cuD3D9ResourceSetMapFlags ( IDirect3DResource9* pResource, unsigned int Flags )
-
设置用于映射 Direct3D 资源的使用标志。
参数
- pResource
- - 要设置标志的已注册资源
- Flags
- - 资源映射的参数
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_VALUE, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_ALREADY_MAPPED
已弃用
此函数已从 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。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
- CUresult cuD3D9UnmapResources ( unsigned int count, IDirect3DResource9** ppResource )
-
取消映射 Direct3D 资源。
参数
- count
- - 要为 CUDA 取消映射的资源数量
- ppResource
- - 要为 CUDA 取消映射的资源
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_NOT_MAPPED, CUDA_ERROR_UNKNOWN
已弃用
此函数已从 CUDA 3.0 开始弃用。
描述
取消映射count中的 Direct3D 资源ppResource.
此函数提供同步保证,即在 cuD3D9UnmapResources() 之前发出的任何 CUDA 内核将在 cuD3D9UnmapResources() 之后发出的任何 Direct3D 调用开始之前完成。
如果任何ppResource尚未注册以供 CUDA 使用,或者如果ppResource包含任何重复条目,则返回 CUDA_ERROR_INVALID_HANDLE。如果任何ppResource当前未映射以供 CUDA 访问,则返回 CUDA_ERROR_NOT_MAPPED。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
- CUresult cuD3D9UnregisterResource ( IDirect3DResource9* pResource )
-
取消注册 Direct3D 资源。
参数
- pResource
- - 要取消注册的资源
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_UNKNOWN
已弃用
此函数已从 CUDA 3.0 开始弃用。
描述
取消注册 Direct3D 资源pResource因此除非再次注册,否则 CUDA 无法访问它。
如果pResource未注册,则返回 CUDA_ERROR_INVALID_HANDLE。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅