6.32. 图形互操作性
本节介绍低级别 CUDA 驱动程序应用程序编程接口的图形互操作性功能。
函数
- CUresult cuGraphicsMapResources ( unsigned int count, CUgraphicsResource* resources, CUstream hStream )
- 映射图形资源以供 CUDA 访问。
- CUresult cuGraphicsResourceGetMappedMipmappedArray ( CUmipmappedArray* pMipmappedArray, CUgraphicsResource resource )
- 获取一个多级渐远纹理数组,通过它可以访问映射的图形资源。
- CUresult cuGraphicsResourceGetMappedPointer ( CUdeviceptr* pDevPtr, size_t* pSize, CUgraphicsResource resource )
- 获取一个设备指针,通过它可以访问映射的图形资源。
- CUresult cuGraphicsResourceSetMapFlags ( CUgraphicsResource resource, unsigned int flags )
- 设置用于映射图形资源的使用标志。
- CUresult cuGraphicsSubResourceGetMappedArray ( CUarray* pArray, CUgraphicsResource resource, unsigned int arrayIndex, unsigned int mipLevel )
- 获取一个数组,通过它可以访问映射的图形资源的子资源。
- CUresult cuGraphicsUnmapResources ( unsigned int count, CUgraphicsResource* resources, CUstream hStream )
- 取消映射图形资源。
- CUresult cuGraphicsUnregisterResource ( CUgraphicsResource resource )
- 取消注册图形资源以供 CUDA 访问。
函数
- CUresult cuGraphicsMapResources ( unsigned int count, CUgraphicsResource* resources, CUstream hStream )
-
映射图形资源以供 CUDA 访问。
参数
- count
- - 要映射的资源数量
- resources
- - 要映射以供 CUDA 使用的资源
- hStream
- - 要与之同步的流
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_ALREADY_MAPPED, CUDA_ERROR_UNKNOWN
描述
映射count中的图形资源resources以供 CUDA 访问。
中的资源resources在取消映射之前可以由 CUDA 访问。从中注册resources的图形 API 在被 CUDA 映射时,不应访问任何资源。如果应用程序这样做,则结果是未定义的。
此函数提供同步保证,即在 cuGraphicsMapResources() 之前发出的任何图形调用将在流中发出的任何后续 CUDA 工作开始之前完成。
如果resources包含任何重复条目,则返回 CUDA_ERROR_INVALID_HANDLE。如果resources中的任何资源当前已映射以供 CUDA 访问,则返回 CUDA_ERROR_ALREADY_MAPPED。
注意-
此函数使用标准 默认流 语义。
-
请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
cuGraphicsResourceGetMappedPointer, cuGraphicsSubResourceGetMappedArray, cuGraphicsUnmapResources, cudaGraphicsMapResources
- CUresult cuGraphicsResourceGetMappedMipmappedArray ( CUmipmappedArray* pMipmappedArray, CUgraphicsResource resource )
-
获取一个多级渐远纹理数组,通过它可以访问映射的图形资源。
参数
- pMipmappedArray
- - 返回的多级渐远纹理数组,通过它可以访问resource可以被访问
- resource
- - 要访问的映射资源
返回值
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_ERROR_NOT_MAPPED_AS_ARRAY
描述
在*pMipmappedArray中返回一个多级渐远纹理数组,通过它可以访问映射的图形资源resource。中设置的值*pMipmappedArray每次resource被映射时都可能更改。
如果resource如果不是纹理,则无法通过多级渐远纹理数组访问它,并且返回 CUDA_ERROR_NOT_MAPPED_AS_ARRAY。如果resource未映射,则返回 CUDA_ERROR_NOT_MAPPED。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
cuGraphicsResourceGetMappedPointer, cudaGraphicsResourceGetMappedMipmappedArray
- CUresult cuGraphicsResourceGetMappedPointer ( CUdeviceptr* pDevPtr, size_t* pSize, CUgraphicsResource resource )
-
获取一个设备指针,通过它可以访问映射的图形资源。
参数
- pDevPtr
- - 返回的指针,通过它可以访问resource可以被访问
- pSize
- - 返回的可从*pPointer
- resource
- - 要访问的映射资源
返回值
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_ERROR_NOT_MAPPED_AS_POINTER
描述
在*pDevPtr一个指针,通过它可以访问映射的图形资源resource。在pSize中返回可以从该指针访问的内存大小(以字节为单位)。中设置的值pPointer每次resource被映射时都可能更改。
如果resource如果不是缓冲区,则无法通过指针访问它,并且返回 CUDA_ERROR_NOT_MAPPED_AS_POINTER。如果resource未映射,则返回 CUDA_ERROR_NOT_MAPPED。 *
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
cuGraphicsMapResources, cuGraphicsSubResourceGetMappedArray, cudaGraphicsResourceGetMappedPointer
- CUresult cuGraphicsResourceSetMapFlags ( CUgraphicsResource resource, unsigned int flags )
-
设置用于映射图形资源的使用标志。
参数
- resource
- - 要设置标志的已注册资源
- 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
描述
设置flags用于映射图形资源resource.
。对flags的更改将在下次resource映射时生效。参数flags可以是以下任何值
-
CU_GRAPHICS_MAP_RESOURCE_FLAGS_NONE:指定不提供有关此资源将如何使用的提示。因此,假定 CUDA 内核将从此资源读取和写入。这是默认值。
-
CU_GRAPHICS_MAP_RESOURCE_FLAGS_READONLY:指定访问此资源的 CUDA 内核不会写入此资源。
-
CU_GRAPHICS_MAP_RESOURCE_FLAGS_WRITEDISCARD:指定访问此资源的 CUDA 内核不会从此资源读取,并将覆盖资源的全部内容,因此不会保留先前存储在资源中的任何数据。
如果resource如果当前已映射以供 CUDA 访问,则返回 CUDA_ERROR_ALREADY_MAPPED。如果flags不是上述值之一,则返回 CUDA_ERROR_INVALID_VALUE。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
- CUresult cuGraphicsSubResourceGetMappedArray ( CUarray* pArray, CUgraphicsResource resource, unsigned int arrayIndex, unsigned int mipLevel )
-
获取一个数组,通过它可以访问映射的图形资源的子资源。
参数
- pArray
- - 返回的数组,通过它可以访问resource可以被访问
- resource
- - 要访问的映射资源
- arrayIndex
- - 数组纹理的数组索引或立方体贴图面索引,如 CUarray_cubemap_face 中为要访问的子资源定义的立方体贴图纹理
- mipLevel
- - 要访问的子资源的多级渐远纹理级别
返回值
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_ERROR_NOT_MAPPED_AS_ARRAY
描述
在*pArray一个数组,通过它可以访问映射的图形资源resource的子资源,该子资源对应于数组索引arrayIndex和多级渐远纹理级别mipLevel。中设置的值*pArray每次resource被映射时都可能更改。
如果resource如果不是纹理,则无法通过数组访问它,并且返回 CUDA_ERROR_NOT_MAPPED_AS_ARRAY。如果arrayIndex不是resource的有效数组索引,则返回 CUDA_ERROR_INVALID_VALUE。如果mipLevel不是resource的有效数组索引,则返回 CUDA_ERROR_INVALID_VALUE。如果resource未映射,则返回 CUDA_ERROR_NOT_MAPPED。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
cuGraphicsResourceGetMappedPointer, cudaGraphicsSubResourceGetMappedArray
- CUresult cuGraphicsUnmapResources ( unsigned int count, CUgraphicsResource* resources, CUstream hStream )
-
取消映射图形资源。
参数
- count
- - 要取消映射的资源数量
- resources
- - 要取消映射的资源
- hStream
- - 要与之同步的流
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_NOT_MAPPED, CUDA_ERROR_UNKNOWN
描述
取消映射count中的图形资源resources.
。一旦取消映射,resources中的资源在再次映射之前无法由 CUDA 访问。
此函数提供同步保证,即在 cuGraphicsUnmapResources() 之前在流中发出的任何 CUDA 工作将在任何后续发出的图形工作开始之前完成。
如果resources包含任何重复条目,则返回 CUDA_ERROR_INVALID_HANDLE。如果resources如果当前未映射以供 CUDA 访问,则返回 CUDA_ERROR_NOT_MAPPED。
注意-
此函数使用标准 默认流 语义。
-
请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
- CUresult cuGraphicsUnregisterResource ( CUgraphicsResource resource )
-
取消注册图形资源以供 CUDA 访问。
参数
- resource
- - 要取消注册的资源
返回值
CUDA_SUCCESS, CUDA_ERROR_DEINITIALIZED, CUDA_ERROR_NOT_INITIALIZED, CUDA_ERROR_INVALID_CONTEXT, CUDA_ERROR_INVALID_HANDLE, CUDA_ERROR_UNKNOWN
描述
取消注册图形资源resource,使其除非再次注册,否则 CUDA 无法访问。
如果resource如果无效,则返回 CUDA_ERROR_INVALID_HANDLE。
注意请注意,此函数也可能返回来自先前异步启动的错误代码。
另请参阅
cuGraphicsD3D9RegisterResource, cuGraphicsD3D10RegisterResource, cuGraphicsD3D11RegisterResource, cuGraphicsGLRegisterBuffer, cuGraphicsGLRegisterImage, cudaGraphicsUnregisterResource