CUDA Runtime API (PDF) - v6.0 (older) - Last updated February 13, 2014 - Send Feedback -

## 3.18. VDPAU Interoperability

This section describes the VDPAU interoperability functions of the CUDA runtime application programming interface.

### Functions

cudaError_t cudaGraphicsVDPAURegisterOutputSurface ( cudaGraphicsResource** resource, VdpOutputSurface vdpSurface, unsigned int flags )
  Register a VdpOutputSurface object.
cudaError_t cudaGraphicsVDPAURegisterVideoSurface ( cudaGraphicsResource** resource, VdpVideoSurface vdpSurface, unsigned int flags )
  Register a VdpVideoSurface object.
cudaError_t cudaVDPAUGetDevice ( int* device, VdpDevice vdpDevice, VdpGetProcAddress* vdpGetProcAddress )
  Gets the CUDA device associated with a VdpDevice.
cudaError_t cudaVDPAUSetVDPAUDevice ( int device, VdpDevice vdpDevice, VdpGetProcAddress* vdpGetProcAddress )
  Sets a CUDA device to use VDPAU interoperability.

### Functions

cudaError_t cudaGraphicsVDPAURegisterOutputSurface ( cudaGraphicsResource** resource, VdpOutputSurface vdpSurface, unsigned int flags )
  Register a VdpOutputSurface object.

  ###### Parameters

  `resource`
    - Pointer to the returned object handle
  `vdpSurface`
    - VDPAU object to be registered
  `flags`
    - Map flags

  ###### Returns

  cudaSuccess, cudaErrorInvalidDevice, cudaErrorInvalidValue, cudaErrorInvalidResourceHandle, cudaErrorUnknown

  ###### Description

  Registers the VdpOutputSurface specified by `vdpSurface` for access by CUDA. A handle to the registered object is returned as `resource`. The surface's intended usage is specified using `flags`, as follows:

  - cudaGraphicsMapFlagsNone: Specifies no hints about how this resource will be used. It is therefore assumed that this resource will be read from and written to by CUDA. This is the default value.

  - cudaGraphicsMapFlagsReadOnly: Specifies that CUDA will not write to this resource.

  - cudaGraphicsMapFlagsWriteDiscard: Specifies that CUDA will not read from this resource and will write over the entire contents of the resource, so none of the data previously stored in the resource will be preserved.

  Note:

  Note that this function may also return error codes from previous, asynchronous launches.

  See also:

  cudaVDPAUSetVDPAUDevice, cudaGraphicsUnregisterResource, cudaGraphicsSubResourceGetMappedArray

cudaError_t cudaGraphicsVDPAURegisterVideoSurface ( cudaGraphicsResource** resource, VdpVideoSurface vdpSurface, unsigned int flags )
  Register a VdpVideoSurface object.

  ###### Parameters

  `resource`
    - Pointer to the returned object handle
  `vdpSurface`
    - VDPAU object to be registered
  `flags`
    - Map flags

  ###### Returns

  cudaSuccess, cudaErrorInvalidDevice, cudaErrorInvalidValue, cudaErrorInvalidResourceHandle, cudaErrorUnknown

  ###### Description

  Registers the VdpVideoSurface specified by `vdpSurface` for access by CUDA. A handle to the registered object is returned as `resource`. The surface's intended usage is specified using `flags`, as follows:

  - cudaGraphicsMapFlagsNone: Specifies no hints about how this resource will be used. It is therefore assumed that this resource will be read from and written to by CUDA. This is the default value.

  - cudaGraphicsMapFlagsReadOnly: Specifies that CUDA will not write to this resource.

  - cudaGraphicsMapFlagsWriteDiscard: Specifies that CUDA will not read from this resource and will write over the entire contents of the resource, so none of the data previously stored in the resource will be preserved.

  Note:

  Note that this function may also return error codes from previous, asynchronous launches.

  See also:

  cudaVDPAUSetVDPAUDevice, cudaGraphicsUnregisterResource, cudaGraphicsSubResourceGetMappedArray

cudaError_t cudaVDPAUGetDevice ( int* device, VdpDevice vdpDevice, VdpGetProcAddress* vdpGetProcAddress )
  Gets the CUDA device associated with a VdpDevice.

  ###### Parameters

  `device`
    - Returns the device associated with vdpDevice, or -1 if the device associated with vdpDevice is not a compute device.
  `vdpDevice`
    - A VdpDevice handle
  `vdpGetProcAddress`
    - VDPAU's VdpGetProcAddress function pointer

  ###### Returns

  cudaSuccess

  ###### Description

  Returns the CUDA device associated with a VdpDevice, if applicable.

  Note:

  Note that this function may also return error codes from previous, asynchronous launches.

  See also:

  cudaVDPAUSetVDPAUDevice

cudaError_t cudaVDPAUSetVDPAUDevice ( int device, VdpDevice vdpDevice, VdpGetProcAddress* vdpGetProcAddress )
  Sets a CUDA device to use VDPAU interoperability.

  ###### Parameters

  `device`
    - Device to use for VDPAU interoperability
  `vdpDevice`
    - The VdpDevice to interoperate with
  `vdpGetProcAddress`
    - VDPAU's VdpGetProcAddress function pointer

  ###### Returns

  cudaSuccess, cudaErrorInvalidDevice, cudaErrorSetOnActiveProcess

  ###### Description

  Records `vdpDevice` as the VdpDevice for VDPAU interoperability with the CUDA device `device` and sets `device` as the current device for the calling host thread.

  If `device` has already been initialized then this call will fail with the error cudaErrorSetOnActiveProcess. In this case it is necessary to reset `device` using cudaDeviceReset() before VDPAU interoperability on `device` may be enabled.

  Note:

  Note that this function may also return error codes from previous, asynchronous launches.

  See also:

  cudaGraphicsVDPAURegisterVideoSurface, cudaGraphicsVDPAURegisterOutputSurface, cudaDeviceReset