6.34. Surface Object Management
This section describes the low level texture object management functions of the CUDA runtime application programming interface.
The surface object API is only supported on devices of compute capability 3.0 or higher.
Functions
- __host__ cudaError_t cudaCreateSurfaceObject(cudaSurfaceObject_t *pSurfObject, const struct cudaResourceDesc *pResDesc)
Creates a surface object.
- __host__ cudaError_t cudaDestroySurfaceObject(cudaSurfaceObject_t surfObject)
Destroys a surface object.
- __host__ cudaError_t cudaGetSurfaceObjectResourceDesc(struct cudaResourceDesc *pResDesc, cudaSurfaceObject_t surfObject)
Returns a surface object's resource descriptor Returns the resource descriptor for the surface object specified by
surfObject.
6.34.1. Functions
-
__host__ cudaError_t cudaCreateSurfaceObject(cudaSurfaceObject_t *pSurfObject, const struct cudaResourceDesc *pResDesc)
Creates a surface object.
Creates a surface object and returns it in
pSurfObject.pResDescdescribes the data to perform surface load/stores on. cudaResourceDesc::resType must be cudaResourceTypeArray and ::cudaResourceDesc::res::array::array must be set to a valid CUDA array handle.Surface objects are only supported on devices of compute capability 3.0 or higher. Additionally, a surface object is an opaque value, and, as such, should only be accessed through CUDA API calls.
See also
cudaDestroySurfaceObject, ::cuSurfObjectCreate
Note
Note that this function may also return cudaErrorInitializationError, cudaErrorInsufficientDriver or cudaErrorNoDevice if this call tries to initialize internal CUDA RT state.
Note
Note that as specified by cudaStreamAddCallback no CUDA function may be called from callback. cudaErrorNotPermitted may, but is not guaranteed to, be returned as a diagnostic in such case.
- Parameters
pSurfObject – - Surface object to create
pResDesc – - Resource descriptor
- Returns
cudaSuccess, cudaErrorInvalidValue, cudaErrorInvalidChannelDescriptor, cudaErrorInvalidResourceHandle
-
__host__ cudaError_t cudaDestroySurfaceObject(cudaSurfaceObject_t surfObject)
Destroys a surface object.
Destroys the surface object specified by
surfObject.See also
cudaCreateSurfaceObject, ::cuSurfObjectDestroy
Note
Note that this function may also return cudaErrorInitializationError, cudaErrorInsufficientDriver or cudaErrorNoDevice if this call tries to initialize internal CUDA RT state.
Note
Note that as specified by cudaStreamAddCallback no CUDA function may be called from callback. cudaErrorNotPermitted may, but is not guaranteed to, be returned as a diagnostic in such case.
Note
Use of the handle after this call is undefined behavior.
- Parameters
surfObject – - Surface object to destroy
- Returns
-
__host__ cudaError_t cudaGetSurfaceObjectResourceDesc(struct cudaResourceDesc *pResDesc, cudaSurfaceObject_t surfObject)
Returns a surface object’s resource descriptor Returns the resource descriptor for the surface object specified by
surfObject.See also
cudaCreateSurfaceObject, ::cuSurfObjectGetResourceDesc
Note
Note that this function may also return cudaErrorInitializationError, cudaErrorInsufficientDriver or cudaErrorNoDevice if this call tries to initialize internal CUDA RT state.
Note
Note that as specified by cudaStreamAddCallback no CUDA function may be called from callback. cudaErrorNotPermitted may, but is not guaranteed to, be returned as a diagnostic in such case.
- Parameters
pResDesc – - Resource descriptor
surfObject – - Surface object
- Returns