Class INTELVAAPIMediaSharing
The goal of this extension is to provide interoperability between OpenCL and the cross-platform Video Acceleration API (VA API). The extension specifically enables sharing of VA API surfaces for media. It uses similar mechanisms and provides similar surface sharing capabilities for VA API that are provided by the Khronos OpenCL 1.2 Media Surface Sharing extension for DX9.
Requires CL12
and a VA API implementation supporting sharing of surfaces with OpenCL.
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
Accepted as a set of VA API devices in themedia_adapter_set
parameter ofGetDeviceIDsFromVA_APIMediaAdapterINTEL
.static final int
static final int
static final int
static final int
Accepted as the property being queried in theparam_name
parameter ofGetImageInfo
.static final int
Returned byCreateContext
andCreateContextFromType
if the VA API display specified for interoperability is not compatible with the devices against which the context is to be created.static final int
Returned byCreateFromVA_APIMediaSurfaceINTEL
whensurface
is not a VA API surface of the required type, byGetMemObjectInfo
whenparam_name
isMEM_VA_API_MEDIA_SURFACE_INTEL
whenmemobj
was not created from a VA API surface, and fromGetImageInfo
whenparam_name
isIMAGE_VA_API_PLANE_INTEL
andimage
was not created from a VA API surface.static final int
Accepted as the property being queried in theparam_name
parameter ofGetMemObjectInfo
.static final int
Accepted as a set of VA API devices in themedia_adapter_set
parameter ofGetDeviceIDsFromVA_APIMediaAdapterINTEL
.static final int
Accepted as a VA API device source in themedia_adapter_type
parameter ofGetDeviceIDsFromVA_APIMediaAdapterINTEL
.static final int
Returned byEnqueueAcquireVA_APIMediaSurfacesINTEL
when any ofmem_objects
are currently acquired by OpenCL.static final int
Returned byEnqueueReleaseVA_APIMediaSurfacesINTEL
when any ofmem_objects
are not currently acquired by OpenCL. -
Method Summary
Modifier and TypeMethodDescriptionstatic long
clCreateFromVA_APIMediaSurfaceINTEL
(long context, long flags, int[] surface, int plane, int[] errcode_ret) Array version of:CreateFromVA_APIMediaSurfaceINTEL
static long
clCreateFromVA_APIMediaSurfaceINTEL
(long context, long flags, IntBuffer surface, int plane, IntBuffer errcode_ret) Creates an OpenCL 2D image object from a VA API media surface or a plane of a VA API media surface.static int
clEnqueueAcquireVA_APIMediaSurfacesINTEL
(long command_queue, PointerBuffer mem_objects, PointerBuffer event_wait_list, PointerBuffer event) Acquires OpenCL memory objects that have been created from VA API surfaces.static int
clEnqueueReleaseVA_APIMediaSurfacesINTEL
(long command_queue, PointerBuffer mem_objects, PointerBuffer event_wait_list, PointerBuffer event) Releases OpenCL memory objects that have been created from VA API surfaces.static int
clGetDeviceIDsFromVA_APIMediaAdapterINTEL
(long platform, int media_adapter_type, long media_adapter, int media_adapter_set, PointerBuffer devices, int[] num_devices) Array version of:GetDeviceIDsFromVA_APIMediaAdapterINTEL
static int
clGetDeviceIDsFromVA_APIMediaAdapterINTEL
(long platform, int media_adapter_type, long media_adapter, int media_adapter_set, PointerBuffer devices, IntBuffer num_devices) Queries the OpenCL devices corresponding to a VA API display.static long
nclCreateFromVA_APIMediaSurfaceINTEL
(long context, long flags, long surface, int plane, long errcode_ret) Unsafe version of:CreateFromVA_APIMediaSurfaceINTEL
static int
nclEnqueueAcquireVA_APIMediaSurfacesINTEL
(long command_queue, int num_objects, long mem_objects, int num_events_in_wait_list, long event_wait_list, long event) Unsafe version of:EnqueueAcquireVA_APIMediaSurfacesINTEL
static int
nclEnqueueReleaseVA_APIMediaSurfacesINTEL
(long command_queue, int num_objects, long mem_objects, int num_events_in_wait_list, long event_wait_list, long event) Unsafe version of:EnqueueReleaseVA_APIMediaSurfacesINTEL
static int
nclGetDeviceIDsFromVA_APIMediaAdapterINTEL
(long platform, int media_adapter_type, long media_adapter, int media_adapter_set, int num_entries, long devices, long num_devices) Unsafe version of:GetDeviceIDsFromVA_APIMediaAdapterINTEL
-
Field Details
-
CL_VA_API_DISPLAY_INTEL
public static final int CL_VA_API_DISPLAY_INTELAccepted as a VA API device source in themedia_adapter_type
parameter ofGetDeviceIDsFromVA_APIMediaAdapterINTEL
.- See Also:
-
CL_PREFERRED_DEVICES_FOR_VA_API_INTEL
public static final int CL_PREFERRED_DEVICES_FOR_VA_API_INTELAccepted as a set of VA API devices in themedia_adapter_set
parameter ofGetDeviceIDsFromVA_APIMediaAdapterINTEL
.- See Also:
-
CL_ALL_DEVICES_FOR_VA_API_INTEL
public static final int CL_ALL_DEVICES_FOR_VA_API_INTELAccepted as a set of VA API devices in themedia_adapter_set
parameter ofGetDeviceIDsFromVA_APIMediaAdapterINTEL
.- See Also:
-
CL_CONTEXT_VA_API_DISPLAY_INTEL
public static final int CL_CONTEXT_VA_API_DISPLAY_INTEL- See Also:
-
CL_MEM_VA_API_MEDIA_SURFACE_INTEL
public static final int CL_MEM_VA_API_MEDIA_SURFACE_INTELAccepted as the property being queried in theparam_name
parameter ofGetMemObjectInfo
.- See Also:
-
CL_IMAGE_VA_API_PLANE_INTEL
public static final int CL_IMAGE_VA_API_PLANE_INTELAccepted as the property being queried in theparam_name
parameter ofGetImageInfo
.- See Also:
-
CL_COMMAND_ACQUIRE_VA_API_MEDIA_SURFACES_INTEL
public static final int CL_COMMAND_ACQUIRE_VA_API_MEDIA_SURFACES_INTEL- See Also:
-
CL_COMMAND_RELEASE_VA_API_MEDIA_SURFACES_INTEL
public static final int CL_COMMAND_RELEASE_VA_API_MEDIA_SURFACES_INTEL- See Also:
-
CL_INVALID_VA_API_MEDIA_ADAPTER_INTEL
public static final int CL_INVALID_VA_API_MEDIA_ADAPTER_INTELReturned byCreateContext
andCreateContextFromType
if the VA API display specified for interoperability is not compatible with the devices against which the context is to be created.- See Also:
-
CL_INVALID_VA_API_MEDIA_SURFACE_INTEL
public static final int CL_INVALID_VA_API_MEDIA_SURFACE_INTELReturned byCreateFromVA_APIMediaSurfaceINTEL
whensurface
is not a VA API surface of the required type, byGetMemObjectInfo
whenparam_name
isMEM_VA_API_MEDIA_SURFACE_INTEL
whenmemobj
was not created from a VA API surface, and fromGetImageInfo
whenparam_name
isIMAGE_VA_API_PLANE_INTEL
andimage
was not created from a VA API surface.- See Also:
-
CL_VA_API_MEDIA_SURFACE_ALREADY_ACQUIRED_INTEL
public static final int CL_VA_API_MEDIA_SURFACE_ALREADY_ACQUIRED_INTELReturned byEnqueueAcquireVA_APIMediaSurfacesINTEL
when any ofmem_objects
are currently acquired by OpenCL.- See Also:
-
CL_VA_API_MEDIA_SURFACE_NOT_ACQUIRED_INTEL
public static final int CL_VA_API_MEDIA_SURFACE_NOT_ACQUIRED_INTELReturned byEnqueueReleaseVA_APIMediaSurfacesINTEL
when any ofmem_objects
are not currently acquired by OpenCL.- See Also:
-
-
Method Details
-
nclGetDeviceIDsFromVA_APIMediaAdapterINTEL
public static int nclGetDeviceIDsFromVA_APIMediaAdapterINTEL(long platform, int media_adapter_type, long media_adapter, int media_adapter_set, int num_entries, long devices, long num_devices) Unsafe version of:GetDeviceIDsFromVA_APIMediaAdapterINTEL
- Parameters:
num_entries
- the number of cl_device_id entries that can be added todevices
. Ifdevices
is notNULL
thennum_entries
must be greater than zero.
-
clGetDeviceIDsFromVA_APIMediaAdapterINTEL
public static int clGetDeviceIDsFromVA_APIMediaAdapterINTEL(long platform, int media_adapter_type, long media_adapter, int media_adapter_set, @Nullable PointerBuffer devices, @Nullable IntBuffer num_devices) Queries the OpenCL devices corresponding to a VA API display.- Parameters:
platform
- the platform ID returned byGetPlatformIDs
media_adapter_type
- the type ofmedia_adapter
. Must be:VA_API_DISPLAY_INTEL
media_adapter
- the media adapter whose corresponding OpenCL devices are being queriedmedia_adapter_set
- one of:PREFERRED_DEVICES_FOR_VA_API_INTEL
ALL_DEVICES_FOR_VA_API_INTEL
devices
- returns a list of OpenCL devices found. Thecl_device_id
values returned indevices
can be used to identify a specific OpenCL device. Ifdevices
isNULL
, this argument is ignored. The number of OpenCL devices returned is the minimum of the value specified bynum_entries
and the number of OpenCL devices corresponding tomedia_adapter
.num_devices
- returns the number of OpenCL devices available that correspond tomedia_adapter
. Ifnum_devices
isNULL
, this argument is ignored.
-
nclCreateFromVA_APIMediaSurfaceINTEL
public static long nclCreateFromVA_APIMediaSurfaceINTEL(long context, long flags, long surface, int plane, long errcode_ret) Unsafe version of:CreateFromVA_APIMediaSurfaceINTEL
-
clCreateFromVA_APIMediaSurfaceINTEL
public static long clCreateFromVA_APIMediaSurfaceINTEL(long context, long flags, IntBuffer surface, int plane, @Nullable IntBuffer errcode_ret) Creates an OpenCL 2D image object from a VA API media surface or a plane of a VA API media surface.- Parameters:
context
- a valid OpenCL context created from a VA API displayflags
- a bit-field that is used to specify usage information. One of:MEM_READ_ONLY
MEM_WRITE_ONLY
MEM_READ_WRITE
surface
- a pointer to the VA API surface to shareplane
- the plane ofsurface
to share, for planar formats. For non-planar formats,plane
must be 0.errcode_ret
- will return an appropriate error code. Iferrcode_ret
isNULL
, no error code is returned.
-
nclEnqueueAcquireVA_APIMediaSurfacesINTEL
public static int nclEnqueueAcquireVA_APIMediaSurfacesINTEL(long command_queue, int num_objects, long mem_objects, int num_events_in_wait_list, long event_wait_list, long event) Unsafe version of:EnqueueAcquireVA_APIMediaSurfacesINTEL
- Parameters:
num_objects
- the number of memory objects to be acquired inmem_objects
.num_events_in_wait_list
- the number of events inevent_wait_list
-
clEnqueueAcquireVA_APIMediaSurfacesINTEL
public static int clEnqueueAcquireVA_APIMediaSurfacesINTEL(long command_queue, PointerBuffer mem_objects, @Nullable PointerBuffer event_wait_list, @Nullable PointerBuffer event) Acquires OpenCL memory objects that have been created from VA API surfaces. The VA API surfaces are acquired by the OpenCL context associated withcommand_queue
and can therefore be used by all command- queues associated with the OpenCL context.OpenCL memory objects created from VA API surfaces must be acquired before they can be used by any OpenCL commands queued to a command-queue. If an OpenCL memory object created from a VA API surface is used while it is not acquired by OpenCL, the call attempting to use that OpenCL memory object will return
VA_API_MEDIA_SURFACE_NOT_ACQUIRED_INTEL
.If
CONTEXT_INTEROP_USER_SYNC
is not specified asTRUE
during context creation,clEnqueueAcquireVA_APIMediaSurfacesINTEL
provides the synchronization guarantee that any VA API calls made beforeclEnqueueAcquireVA_APIMediaSurfacesINTEL
is called will complete executing beforeevent
reports completion and before the execution of any subsequent OpenCL work issued incommand_queue
begins. If the context was created with properties specifyingCONTEXT_INTEROP_USER_SYNC
asTRUE
, the user is responsible for guaranteeing that any VA API calls involving the interop device(s) used in the OpenCL context made beforeclEnqueueAcquireVA_APIMediaSurfacesINTEL
is called have completed before callingclEnqueueAcquireVA_APIMediaSurfacesINTEL
.- Parameters:
command_queue
- a valid command-queuemem_objects
- a pointer to a list of OpenCL memory objects that were created from VA API surfacesevent_wait_list
- a list of events that need to complete before this particular command can be executed. Ifevent_wait_list
isNULL
, then this particular command does not wait on any event to complete. The events specified inevent_wait_list
act as synchronization points. The context associated with events inevent_wait_list
andcommand_queue
must be the same.event
- Returns an event object that identifies this particular command and can be used to query or queue a wait for this particular command to complete.event
can beNULL
in which case it will not be possible for the application to query the status of this command or queue a wait for this command to complete. If theevent_wait_list
and theevent
arguments are notNULL
, the event argument should not refer to an element of theevent_wait_list
array.
-
nclEnqueueReleaseVA_APIMediaSurfacesINTEL
public static int nclEnqueueReleaseVA_APIMediaSurfacesINTEL(long command_queue, int num_objects, long mem_objects, int num_events_in_wait_list, long event_wait_list, long event) Unsafe version of:EnqueueReleaseVA_APIMediaSurfacesINTEL
- Parameters:
num_objects
- the number of memory objects to be released inmem_objects
num_events_in_wait_list
- the number of events inevent_wait_list
-
clEnqueueReleaseVA_APIMediaSurfacesINTEL
public static int clEnqueueReleaseVA_APIMediaSurfacesINTEL(long command_queue, PointerBuffer mem_objects, @Nullable PointerBuffer event_wait_list, @Nullable PointerBuffer event) Releases OpenCL memory objects that have been created from VA API surfaces. The VA API surfaces are released by the OpenCL context associated withcommand_queue
.OpenCL memory objects created from VA API surfaces which have been acquired by OpenCL must be released by OpenCL before they may be accessed by VA API. Accessing a VA API surface while its corresponding OpenCL memory object is acquired is in error and will result in undefined behavior, including but not limited to possible OpenCL errors, data corruption, and program termination.
If
CONTEXT_INTEROP_USER_SYNC
is not specified asTRUE
during context creation,clEnqueueReleaseVA_APIMediaSurfacesINTEL
provides the synchronization guarantee that any VA API calls made afterclEnqueueReleaseVA_APIMediaSurfacesINTEL
is called will not start executing until after all events inevent_wait_list
are complete and all work already submitted tocommand_queue
completes execution. If the context was created with properties specifyingCONTEXT_INTEROP_USER_SYNC
specified asTRUE
, the user is responsible for guaranteeing that any VA API calls involving the interop device(s) used in the OpenCL context made afterclEnqueueReleaseVA_APIMediaSurfacesINTEL
is called will not start executing until after the event returned byclEnqueueReleaseVA_APIMediaSurfacesINTEL
reports completion.- Parameters:
command_queue
- a valid OpenCL context created from a VA API displaymem_objects
- a pointer to a list of OpenCL memory objects that were created from VA API surfacesevent_wait_list
- a list of events that need to complete before this particular command can be executed. Ifevent_wait_list
isNULL
, then this particular command does not wait on any event to complete. The events specified inevent_wait_list
act as synchronization points. The context associated with events inevent_wait_list
andcommand_queue
must be the same.event
- Returns an event object that identifies this particular command and can be used to query or queue a wait for this particular command to complete.event
can beNULL
in which case it will not be possible for the application to query the status of this command or queue a wait for this command to complete. If theevent_wait_list
and theevent
arguments are notNULL
, the event argument should not refer to an element of theevent_wait_list
array.
-
clGetDeviceIDsFromVA_APIMediaAdapterINTEL
public static int clGetDeviceIDsFromVA_APIMediaAdapterINTEL(long platform, int media_adapter_type, long media_adapter, int media_adapter_set, @Nullable PointerBuffer devices, @Nullable int[] num_devices) Array version of:GetDeviceIDsFromVA_APIMediaAdapterINTEL
-
clCreateFromVA_APIMediaSurfaceINTEL
public static long clCreateFromVA_APIMediaSurfaceINTEL(long context, long flags, int[] surface, int plane, @Nullable int[] errcode_ret) Array version of:CreateFromVA_APIMediaSurfaceINTEL
-