6.19. Direct3D 9 互操作性 [已弃用]
本节介绍已弃用的 Direct3D 9 互操作性函数。
枚举
- enum cudaD3D9MapFlags
- enum cudaD3D9RegisterFlags
函数
- __host__ cudaError_t cudaD3D9MapResources ( int count, IDirect3DResource9** ppResources )
- 映射 Direct3D 资源以供 CUDA 访问。
- __host__ cudaError_t cudaD3D9RegisterResource ( IDirect3DResource9* pResource, unsigned int flags )
- 注册 Direct3D 资源以供 CUDA 访问。
- __host__ cudaError_t cudaD3D9ResourceGetMappedArray ( cudaArray** ppArray, IDirect3DResource9* pResource, unsigned int face, unsigned int level )
- 获取一个数组,通过该数组访问已映射以供 CUDA 访问的 Direct3D 资源的子资源。
- __host__ cudaError_t cudaD3D9ResourceGetMappedPitch ( size_t* pPitch, size_t* pPitchSlice, IDirect3DResource9* pResource, unsigned int face, unsigned int level )
- 获取已映射以供 CUDA 访问的 Direct3D 资源的子资源的间距。
- __host__ cudaError_t cudaD3D9ResourceGetMappedPointer ( void** pPointer, IDirect3DResource9* pResource, unsigned int face, unsigned int level )
- 获取一个指针,通过该指针访问已映射以供 CUDA 访问的 Direct3D 资源的子资源。
- __host__ cudaError_t cudaD3D9ResourceGetMappedSize ( size_t* pSize, IDirect3DResource9* pResource, unsigned int face, unsigned int level )
- 获取已映射以供 CUDA 访问的 Direct3D 资源的子资源的大小。
- __host__ cudaError_t cudaD3D9ResourceGetSurfaceDimensions ( size_t* pWidth, size_t* pHeight, size_t* pDepth, IDirect3DResource9* pResource, unsigned int face, unsigned int level )
- 获取已注册的 Direct3D 表面的尺寸。
- __host__ cudaError_t cudaD3D9ResourceSetMapFlags ( IDirect3DResource9* pResource, unsigned int flags )
- 设置用于映射 Direct3D 资源的使用标志。
- __host__ cudaError_t cudaD3D9UnmapResources ( int count, IDirect3DResource9** ppResources )
- 取消映射 Direct3D 资源以供 CUDA 访问。
- __host__ cudaError_t cudaD3D9UnregisterResource ( IDirect3DResource9* pResource )
- 取消注册 Direct3D 资源以供 CUDA 访问。
枚举
- enum cudaD3D9MapFlags
-
CUDA D3D9 映射标志
值
- cudaD3D9MapFlagsNone = 0
- 默认值;假设资源可以读取/写入
- cudaD3D9MapFlagsReadOnly = 1
- CUDA 内核不会写入此资源
- cudaD3D9MapFlagsWriteDiscard = 2
- CUDA 内核只会写入此资源,而不会从中读取
- enum cudaD3D9RegisterFlags
-
CUDA D3D9 注册标志
值
- cudaD3D9RegisterFlagsNone = 0
- 默认值;资源可以通过 void* 访问
- cudaD3D9RegisterFlagsArray = 1
- 资源可以通过 CUarray* 访问
函数
- __host__ cudaError_t cudaD3D9MapResources ( int count, IDirect3DResource9** ppResources )
-
映射 Direct3D 资源以供 CUDA 访问。
参数
- count
- - 要为 CUDA 映射的资源数量
- ppResources
- - 要为 CUDA 映射的资源
已弃用
此函数自 CUDA 3.0 起已弃用。
描述
映射count中的 Direct3D 资源ppResources以供 CUDA 访问。
中的资源ppResources可以在 CUDA 内核中访问,直到它们被取消映射。 Direct3D 不应在资源被 CUDA 映射时访问任何资源。 如果应用程序这样做,结果是未定义的。
此函数提供的同步保证是,在 cudaD3D9MapResources() 之前发出的任何 Direct3D 调用都将在 cudaD3D9MapResources() 之后发出的任何 CUDA 内核开始之前完成。
如果任何ppResources尚未注册以供 CUDA 使用,或者如果ppResources包含任何重复条目,则返回 cudaErrorInvalidResourceHandle。 如果任何ppResources当前已映射以供 CUDA 访问,则返回 cudaErrorUnknown。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
- __host__ cudaError_t cudaD3D9RegisterResource ( IDirect3DResource9* pResource, unsigned int flags )
-
注册 Direct3D 资源以供 CUDA 访问。
参数
- pResource
- - 要注册的资源
- flags
- - 资源注册的参数
已弃用
此函数自 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。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
- __host__ cudaError_t cudaD3D9ResourceGetMappedArray ( cudaArray** ppArray, IDirect3DResource9* pResource, unsigned int face, unsigned int level )
-
获取一个数组,通过该数组访问已映射以供 CUDA 访问的 Direct3D 资源的子资源。
参数
- ppArray
- - 返回的对应于子资源的数组
- pResource
- - 要访问的映射资源
- face
- - 要访问的资源面
- level
- - 要访问的资源级别
已弃用
此函数自 CUDA 3.0 起已弃用。
描述
在*pArray中返回一个数组,通过该数组可以访问映射的 Direct3D 资源的子资源pResource,它对应于face和level。 中设置的值pArray可能每次pResource映射时都会更改。
如果pResource未注册,则返回 cudaErrorInvalidResourceHandle。 如果pResource未注册使用标志 cudaD3D9RegisterFlagsArray,则返回 cudaErrorInvalidResourceHandle。 如果pResource未映射,则返回 cudaErrorUnknown。
有关face和level参数的使用要求,请参阅 cudaD3D9ResourceGetMappedPointer()。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
- __host__ cudaError_t cudaD3D9ResourceGetMappedPitch ( size_t* pPitch, size_t* pPitchSlice, IDirect3DResource9* pResource, unsigned int face, unsigned int level )
-
获取已映射以供 CUDA 访问的 Direct3D 资源的子资源的间距。
参数
- pPitch
- - 返回的子资源的间距
- pPitchSlice
- - 返回的子资源的 Z 切片间距
- pResource
- - 要访问的映射资源
- face
- - 要访问的资源面
- level
- - 要访问的资源级别
已弃用
此函数自 CUDA 3.0 起已弃用。
描述
在*pPitch和*pPitchSlice映射的 Direct3D 资源的子资源的间距和 Z 切片间距pResource,它对应于face和level。 中设置的值pPitch和pPitchSlice可能每次pResource映射时都会更改。
间距和 Z 切片间距值可用于计算表面上样本的位置,如下所示。
对于 2D 表面,位置 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()。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
- __host__ cudaError_t cudaD3D9ResourceGetMappedPointer ( void** pPointer, IDirect3DResource9* pResource, unsigned int face, unsigned int level )
-
获取一个指针,通过该指针访问已映射以供 CUDA 访问的 Direct3D 资源的子资源。
参数
- pPointer
- - 返回的对应于子资源的指针
- pResource
- - 要访问的映射资源
- face
- - 要访问的资源面
- level
- - 要访问的资源级别
已弃用
此函数自 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。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
- __host__ cudaError_t cudaD3D9ResourceGetMappedSize ( size_t* pSize, IDirect3DResource9* pResource, unsigned int face, unsigned int level )
-
获取已映射以供 CUDA 访问的 Direct3D 资源的子资源的大小。
参数
- pSize
- - 返回的子资源的大小
- pResource
- - 要访问的映射资源
- face
- - 要访问的资源面
- level
- - 要访问的资源级别
已弃用
此函数自 CUDA 3.0 起已弃用。
描述
在*pSize映射的 Direct3D 资源的子资源的大小pResource,它对应于face和level。 中设置的值pSize可能每次pResource映射时都会更改。
如果pResource尚未注册以供 CUDA 使用,则返回 cudaErrorInvalidResourceHandle。 如果pResource未注册使用标志 cudaD3D9RegisterFlagsNone,则返回 cudaErrorInvalidResourceHandle。 如果pResource未映射以供 CUDA 访问,则返回 cudaErrorUnknown。
有关face和level参数的使用要求,请参阅 cudaD3D9ResourceGetMappedPointer()。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
- __host__ cudaError_t cudaD3D9ResourceGetSurfaceDimensions ( size_t* pWidth, size_t* pHeight, size_t* pDepth, IDirect3DResource9* pResource, unsigned int face, unsigned int level )
-
获取已注册的 Direct3D 表面的尺寸。
参数
- pWidth
- - 返回的表面宽度
- pHeight
- - 返回的表面高度
- pDepth
- - 返回的表面深度
- pResource
- - 要访问的已注册资源
- face
- - 要访问的资源面
- level
- - 要访问的资源级别
已弃用
此函数自 CUDA 3.0 起已弃用。
描述
在*pWidth, *pHeight和*pDepth映射的 Direct3D 资源的子资源的尺寸pResource,它对应于face和level.
由于抗锯齿表面可能每个像素有多个样本,因此资源的尺寸可能比 Direct3D 运行时报告的尺寸大一个整数因子。
参数pWidth, pHeight和pDepth是可选的。 对于 2D 表面,在中返回的值*pDepth将为 0。
如果pResource不是 IDirect3DBaseTexture9 或 IDirect3DSurface9 类型,或者如果pResource尚未注册以供 CUDA 使用,则返回 cudaErrorInvalidResourceHandle。
有关face和level参数,请参阅 cudaD3D9ResourceGetMappedPointer。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
- __host__ cudaError_t cudaD3D9ResourceSetMapFlags ( IDirect3DResource9* pResource, unsigned int flags )
-
设置用于映射 Direct3D 资源的使用标志。
参数
- pResource
- - 要设置标志的已注册资源
- flags
- - 资源映射的参数
已弃用
此函数自 CUDA 3.0 起已弃用。
描述
设置用于映射 Direct3D 资源的标志pResource.
对标志的更改将在下次pResource映射时生效。 参数flags可以是以下任何值
-
cudaD3D9MapFlagsNone:指定不提示如何使用此资源。 因此,假定此资源将由 CUDA 内核读取和写入。 这是默认值。
-
cudaD3D9MapFlagsReadOnly:指定访问此资源的 CUDA 内核不会写入此资源。
-
cudaD3D9MapFlagsWriteDiscard:指定访问此资源的 CUDA 内核不会从此资源读取,并将覆盖资源的全部内容,因此不会保留先前存储在资源中的任何数据。
如果pResource尚未注册以供 CUDA 使用,则返回 cudaErrorInvalidResourceHandle。 如果pResource当前已映射以供 CUDA 访问,则返回 cudaErrorUnknown。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
cudaInteropResourceSetMapFlags
- __host__ cudaError_t cudaD3D9UnmapResources ( int count, IDirect3DResource9** ppResources )
-
取消映射 Direct3D 资源以供 CUDA 访问。
参数
- count
- - 要为 CUDA 取消映射的资源数量
- ppResources
- - 要为 CUDA 取消映射的资源
已弃用
此函数自 CUDA 3.0 起已弃用。
描述
取消映射count中的 Direct3D 资源ppResources.
此函数提供的同步保证是,在 cudaD3D9UnmapResources() 之前发出的任何 CUDA 内核都将在 cudaD3D9UnmapResources() 之后发出的任何 Direct3D 调用开始之前完成。
如果任何ppResources尚未注册以供 CUDA 使用,或者如果ppResources包含任何重复条目,则返回 cudaErrorInvalidResourceHandle。 如果任何ppResources当前未映射以供 CUDA 访问,则返回 cudaErrorUnknown。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
- __host__ cudaError_t cudaD3D9UnregisterResource ( IDirect3DResource9* pResource )
-
取消注册 Direct3D 资源以供 CUDA 访问。
参数
- pResource
- - 要注销的资源
已弃用
此函数自 CUDA 3.0 起已弃用。
描述
注销 Direct3D 资源pResource使其无法被 CUDA 访问,除非再次注册。
如果pResource如果未注册,则返回 cudaErrorInvalidResourceHandle。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅