| Name String |
| |
| cl_intel_va_api_media_sharing |
| |
| Contributors |
| |
| Ben Ashbaugh, Intel |
| Jacek Danecki, Intel |
| Krzysztof Laskowski, Intel |
| |
| Contact |
| |
| Ben Ashbaugh, Intel (ben.ashbaugh 'at' intel.com) |
| |
| Version |
| |
| Version 1, December 8, 2014 |
| |
| Number |
| |
| OpenCL Extension #36 |
| |
| Status |
| |
| Final Draft |
| |
| Dependencies |
| |
| OpenCL 1.2 is required and a VA API implementation supporting |
| sharing of surfaces with OpenCL is required. This extension is written |
| against revision 19 of the OpenCL 1.2 specification and against revision |
| 19 of the OpenCL 1.2 extension specification. |
| |
| Overview |
| |
| 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. |
| |
| New Procedures and Functions |
| |
| cl_int clGetDeviceIDsFromVA_APIMediaAdapterINTEL ( |
| cl_platform_id platform, |
| cl_va_api_device_source_intel media_adapter_type , |
| void *media_adapter, |
| cl_va_api_device_set_intel media_adapter_set, |
| cl_uint num_entries, |
| cl_device_id *devices, |
| cl_uint *num_devices) |
| |
| cl_mem clCreateFromVA_APIMediaSurfaceINTEL( |
| cl_context context, |
| cl_mem_flags flags, |
| VASurfaceID *surface , |
| cl_uint plane, |
| cl_int *errcode_ret) |
| |
| cl_int clEnqueueAcquireVA_APIMediaSurfacesINTEL( |
| cl_command_queue command_queue, |
| cl_uint num_objects, |
| const cl_mem *mem_objects, |
| cl_uint num_events_in_wait_list, |
| const cl_event *event_wait_list, |
| cl_event *event) |
| |
| cl_int clEnqueueReleaseVA_APIMediaSurfacesINTEL( |
| cl_command_queue command_queue, |
| cl_uint num_objects, |
| const cl_mem *mem_objects, |
| cl_uint num_events_in_wait_list, |
| const cl_event *event_wait_list, |
| cl_event *event) |
| |
| New Tokens |
| |
| Accepted as a VA API device source in the <media_adapter_type> |
| parameter of clGetDeviceIDsFromVA_APIMediaAdapterINTEL: |
| |
| CL_VA_API_DISPLAY_INTEL 0x4094 |
| |
| Accepted as a set of VA API devices in the <media_adapter_set> |
| parameter of clGetDeviceIDsFromVA_APIMediaAdapterINTEL: |
| |
| CL_PREFERRED_DEVICES_FOR_VA_API_INTEL 0x4095 |
| CL_ALL_DEVICES_FOR_VA_API_INTEL 0x4096 |
| |
| Accepted as a property name in the <properties> parameter of |
| clCreateContext and clCreateContextFromType: |
| |
| CL_CONTEXT_VA_API_DISPLAY_INTEL 0x4097 |
| |
| Accepted as the property being queried in the <param_name> |
| parameter of clGetMemObjectInfo: |
| |
| CL_MEM_VA_API_MEDIA_SURFACE_INTEL 0x4098 |
| |
| Accepted as the property being queried in the <param_name> |
| parameter of clGetImageInfo: |
| |
| CL_IMAGE_VA_API_PLANE_INTEL 0x4099 |
| |
| Returned in the <param_value> parameter of clGetEventInfo when |
| <param_name> is CL_EVENT_COMMAND_TYPE: |
| |
| CL_COMMAND_ACQUIRE_VA_API_MEDIA_SURFACES_INTEL 0x409A |
| CL_COMMAND_RELEASE_VA_API_MEDIA_SURFACES_INTEL 0x409B |
| |
| Returned by clCreateContext and clCreateContextFromType if the VA API |
| display specified for interoperability is not compatible with the |
| devices against which the context is to be created: |
| |
| CL_INVALID_VA_API_MEDIA_ADAPTER_INTEL -1098 |
| |
| Returned by clCreateFromVA_APIMediaSurfaceINTEL when <surface> is not a |
| VA API surface of the required type, by clGetMemObjectInfo when |
| <param_name> is CL_MEM_VA_API_MEDIA_SURFACE_INTEL when <memobj> was not |
| created from a VA API surface, and from clGetImageInfo when |
| <param_name> is CL_IMAGE_VA_API_PLANE_INTEL and <image> was not created |
| from a VA API surface: |
| |
| CL_INVALID_VA_API_MEDIA_SURFACE_INTEL -1099 |
| |
| Returned by clEnqueueAcquireVA_APIMediaSurfacesINTEL when any of <mem_objects> |
| are currently acquired by OpenCL: |
| |
| CL_VA_API_MEDIA_SURFACE_ALREADY_ACQUIRED_INTEL -1100 |
| |
| Returned by clEnqueueReleaseVA_APIMediaSurfacesINTEL when any of <mem_objects> |
| are not currently acquired by OpenCL: |
| |
| CL_VA_API_MEDIA_SURFACE_NOT_ACQUIRED_INTEL -1101 |
| |
| Additions to Chapter 4 of the OpenCL 1.2 Specification |
| |
| In section 4.4, replace the description of <properties> under |
| clCreateContext with: |
| |
| "<properties> specifies a list of context property names and their |
| corresponding values. Each property is followed immediately by the |
| corresponding desired value. The list is terminated with zero. |
| If a property is not specified in <properties>, then its default |
| value (listed in table 4.4) is used (it is said to be specified |
| implicitly). If <properties> is NULL or empty (points to a list |
| whose first value is zero), all attributes take on their default |
| values." |
| |
| Add the following to table 4.5: |
| |
| "-------------------------------------------------------------------------------------- |
| cl_context_properties Value type Default value Description |
| --------------------- ---------- ------------- ----------- |
| CL_CONTEXT_VA_API_DISPLAY_INTEL VADisplay* NULL Specifies a VA display to |
| use for VA API interop. |
| --------------------------------------------------------------------------------------" |
| |
| Add to the list of errors for clCreateContext: |
| |
| "* CL_INVALID_VA_API_MEDIA_ADAPTER_INTEL if the value of the property |
| CL_CONTEXT_VA_API_DISPLAY_INTEL is non-NULL and does not specify a valid |
| VA API display with which the cl_device_ids against which this context |
| is to be created may interoperate. |
| |
| * CL_INVALID_OPERATION if VA API interoperability is specified by |
| setting CL_CONTEXT_VA_API_DISPLAY_INTEL to a non-NULL value, and |
| interoperability with any other graphics API is also specified. " |
| |
| Add to the list of errors for clCreateContextFromType the same new |
| errors described above for clCreateContext. |
| |
| Additions to Chapter 5 of the OpenCL 1.2 Specification |
| |
| 5.4.5 Memory Object Queries |
| |
| Add to the list of errors for clGetMemObjectInfo: |
| |
| "* CL_INVALID_VA_API_MEDIA_SURFACE_INTEL if <param_name> is |
| CL_MEM_VA_API_MEDIA_SURFACE_INTEL and <memobj> was not created from |
| a VA API surface using clCreateFromVA_APIMediaSurfaceINTEL." |
| |
| Extend table 5.11 to include the following entries: |
| |
| -------------------------------------------------------------------------- |
| cl_mem_info Return type Info. returned in param_value |
| ----------- --------------- ----------------------------- |
| CL_MEM_VA_API_MEDIA_ VASurfaceID* Returns the <surface> argument |
| SURFACE_INTEL value specified when <memobj> |
| was created. |
| --------------------------------------------------------------------------- |
| |
| Add to the list of errors for clGetImageInfo: |
| |
| "* CL_INVALID_VA_API_MEDIA_SURFACE_INTEL if <param_name> is |
| CL_IMAGE_VA_API_PLANE_INTEL and <image> was not created from a VA API |
| surface using clCreateFromVA_APIMediaSurfaceINTEL." |
| |
| Extend table 5.9 to include the following entry: |
| |
| ------------------------------------------------------------------------ |
| cl_image_info Return type Info. returned in param_value |
| ------------- ----------- ----------------------------- |
| CL_IMAGE_VA_API_PLANE_INTEL cl_uint Returns the <plane> argument |
| value specified when <image> |
| was created. |
| ------------------------------------------------------------------------ |
| |
| 5.9 Event Objects |
| |
| Add to Table 5.18 in the "Info returned in <param_value>" column |
| for cl_event_info CL_EVENT_COMMAND_TYPE: |
| |
| CL_COMMAND_ACQUIRE_VA_API_MEDIA_SURFACES_INTEL |
| CL_COMMAND_RELEASE_VA_API_MEDIA_SURFACES_INTEL |
| |
| Add new section 9.X to the OpenCL 1.2 extension specification: |
| |
| 9.X Sharing VA API Media Surfaces with OpenCL |
| |
| This section discusses OpenCL functions that allow applications to use |
| VA API media surfaces as OpenCL memory objects. This allows efficient |
| sharing of data between OpenCL and VA API. The OpenCL API may be |
| used to execute kernels that read and/or write memory objects that are |
| also VA API surfaces. An OpenCL image object may be created from |
| a VA API surface. OpenCL memory objects may be created from VA API |
| surfaces if and only if the OpenCL context has been created from a VA |
| API display. |
| |
| 9.X.1 Querying OpenCL Devices Corresponding to VA API Displays |
| |
| The OpenCL devices corresponding to a VA API display may be queried |
| using the function |
| |
| cl_int clGetDeviceIDsFromVA_APIMediaAdapterINTEL( |
| cl_platform_id platform, |
| cl_va_api_device_source_intel media_adapter_type, |
| void *media_adapter, |
| cl_va_api_device_set_intel media_adapter_set, |
| cl_uint num_entries, |
| cl_device_id *devices, |
| cl_uint *num_devices) |
| |
| <platform> refers to the platform ID returned by clGetPlatformIDs. |
| |
| <media_adapter_type> specifies the type of <media_adapter>, and must be |
| one of the values shown in table 9.X.1.1. |
| |
| <media_adapter> specifies the media adapter whose corresponding OpenCL |
| devices are being queried. The type of <media_adapter> must be as specified |
| in table 9.X.1.1. |
| |
| <media_adapter_set> specifies the set of devices to return and must be |
| one of the values shown in table 9.X.1.2. |
| |
| <num_entries> is the number of cl_device_id entries that can be added to |
| <devices>. If <devices> is not NULL then <num_entries> must be greater than |
| zero. |
| |
| <devices> returns a list of OpenCL devices found. The cl_device_id values |
| returned in <devices> can be used to identify a specific OpenCL device. |
| If <devices> is NULL, this argument is ignored. The number of |
| OpenCL devices returned is the minimum of the value specified by |
| <num_entries> and the number of OpenCL devices corresponding to |
| <media_adapter>. |
| |
| <num_devices> returns the number of OpenCL devices available that |
| correspond to <media_adapter>. If <num_devices> is NULL, this argument |
| is ignored. |
| |
| clGetDeviceIDsFromVA_APIMediaAdapterINTEL returns CL_SUCCESS if the |
| function is executed successfully. Otherwise it may return: |
| |
| * CL_INVALID_PLATFORM if <platform> is not a valid platform, |
| |
| * CL_INVALID_VALUE if <media_adapter_type> is not a valid value, |
| <media_adapter_set> is not a valid value, <num_entries> is equal |
| to zero and <devices> is not NULL, or if both <num_devices> |
| and <devices> are NULL. |
| |
| * CL_DEVICE_NOT_FOUND if no OpenCL devices that correspond to |
| <media_adapter> were found. |
| |
| -------------------------------------------------------------------- |
| cl_va_api_device_source_intel Type of <media_adapter> |
| ----------------------------- ----------------------- |
| CL_VA_API_DISPLAY_INTEL VADisplay* |
| -------------------------------------------------------------------- |
| Table 9.X.1.1: Types used to specify the object whose corresponding |
| OpenCL devices are being queried by |
| clGetDeviceIDsFromVA_APIMediaAdapterINTEL. |
| |
| -------------------------------------------------------------------- |
| cl_va_api_device_set_intel Devices returned in <devices> |
| -------------------------- ----------------------------- |
| CL_PREFERRED_DEVICES_FOR_VA_API_INTEL The OpenCL devices associated with |
| the specified media adapter. |
| |
| CL_ALL_DEVICES_FOR_VA_API_INTEL All OpenCL devices which may |
| interoperate with the specified |
| media adapter. Performance of |
| sharing data on these devices may |
| be considerably less than on the |
| preferred devices. |
| -------------------------------------------------------------------- |
| Table 9.X.1.2: Types used to specify the set of devices returned from |
| clGetDeviceIDsFromVA_APIMediaAdapterINTEL. |
| |
| 9.X.2 Lifetime of Shared Resources |
| |
| An OpenCL memory object created from a VA API surface remains |
| valid as long as the corresponding VA API surface has not been |
| deleted. If the VA API surface is deleted through the VA API, |
| subsequent use of the OpenCL memory object will result in undefined |
| behavior, including but not limited to possible OpenCL errors, data |
| corruption, and program termination. |
| |
| 9.X.4 Sharing VA API Media Surfaces as OpenCL Image Objects |
| |
| The function |
| |
| cl_mem clCreateFromVA_APIMediaSurfaceINTEL( |
| cl_context context, |
| cl_mem_flags flags, |
| VASurfaceID *surface, |
| cl_uint plane, |
| cl_int *errcode_ret) |
| |
| creates an OpenCL 2D image object from a VA API media surface or a |
| plane of a VA API media surface. |
| |
| <context> is a valid OpenCL context created from a VA API display. |
| |
| <flags> is a bit-field that is used to specify usage information. |
| Refer to table 5.3 for a description of <flags>. Only |
| CL_MEM_READ_ONLY, CL_MEM_WRITE_ONLY and CL_MEM_READ_WRITE values |
| specified in table 5.3 can be used. |
| |
| <surface> is a pointer to the VA API surface to share. |
| |
| <plane> is the plane of <surface> to share, for planar formats. |
| For non-planar formats, <plane> must be 0. |
| |
| <errcode_ret> will return an appropriate error code. If |
| <errcode_ret> is NULL, no error code is returned. |
| |
| clCreateFromVA_APIMediaSurfaceINTEL returns a valid non-zero OpenCL 2D |
| image object and <errcode_ret> is set to CL_SUCCESS if the OpenCL 2D |
| image object is created successfully. Otherwise, it returns a NULL value |
| with one of the following error values returned in <errcode_ret>: |
| |
| * CL_INVALID_CONTEXT if <context> is not a valid context. |
| |
| * CL_INVALID_VALUE if values specified in <flags> are not valid |
| or if <plane> is not a valid plane of <resource>. |
| |
| * CL_INVALID_VA_API_MEDIA_SURFACE_INTEL if <surface> is not a VA API |
| surface, if a cl_mem from <surface> and <plane> has already been |
| created, or if <context> was not created against the same VA API |
| display from which <surface> was created. |
| |
| * CL_INVALID_IMAGE_FORMAT_DESCRIPTOR if the format of <surface> is |
| not listed in table 9.X.4.1. |
| |
| * CL_INVALID_OPERATION if there are no devices in <context> that |
| support VA API sharing. |
| |
| * CL_OUT_OF_RESOURCES if there is a failure to allocate resources |
| required by the OpenCL implementation on the device. |
| |
| * CL_OUT_OF_HOST_MEMORY if there is a failure to allocate resources |
| required by the OpenCL implementation on the host. |
| |
| The width and height of the returned OpenCL 2D image object are |
| determined by the width and height of the <plane> of <surface>. The |
| channel type and order of the returned OpenCL 2D image object is |
| determined by the format and <plane> of <surface> in table 9.X.4.1. |
| |
| ------------------------------------------------------------------ |
| VA_FOURCC cl_channel_order cl_channel_type |
| ------------------------------ ---------------- --------------- |
| VA_FOURCC_NV12,Plane0 CL_R CL_UNORM_INT8 |
| VA_FOURCC_NV12,Plane1 CL_RG CL_UNORM_INT8 |
| ------------------------------------------------------------------ |
| Table 9.X.4.1: List of VA API FourCC codes and corresponding OpenCL |
| Image Formats. |
| |
| For the NV12 surface format, plane 0 corresponds to the luminance (Y) |
| channel data and plane 1 corresponds to the chrominance (UV) channel |
| data. |
| |
| 9.X.5 Querying Properties of Memory Objects Created From VA API Surfaces |
| |
| Properties of media objects created from VA API surfaces may be queried |
| using clGetMemObjectInfo and clGetImageInfo with <param_name> |
| CL_MEM_VA_API_MEDIA_SURFACE_INTEL and CL_IMAGE_VA_API_PLANE_INTEL as |
| described in section 5.3.7 and 5.4.5. |
| |
| 9.X.6 Sharing Memory Objects Created From VA API Surfaces Between VA API |
| and OpenCL |
| |
| The function |
| |
| cl_int clEnqueueAcquireVA_APIMediaSurfacesINTEL( |
| cl_command_queue command_queue, |
| cl_uint num_objects, |
| const cl_mem *mem_objects, |
| cl_uint num_events_in_wait_list, |
| const cl_event *event_wait_list, |
| cl_event *event) |
| |
| is used to acquire OpenCL memory objects that have been created from |
| VA API surfaces. The VA API surfaces are acquired by the OpenCL context |
| associated with <command_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 CL_VA_API_MEDIA_SURFACE_NOT_ACQUIRED_INTEL. |
| |
| If CL_CONTEXT_INTEROP_USER_SYNC is not specified as CL_TRUE during context |
| creation, clEnqueueAcquireVA_APIMediaSurfacesINTEL provides the |
| synchronization guarantee that any VA API calls made before |
| clEnqueueAcquireVA_APIMediaSurfacesINTEL is called will complete executing |
| before <event> reports completion and before the execution of any subsequent |
| OpenCL work issued in <command_queue> begins. If the context was created |
| with properties specifying CL_CONTEXT_INTEROP_USER_SYNC as CL_TRUE, the user |
| is responsible for guaranteeing that any VA API calls involving the interop |
| device(s) used in the OpenCL context made before |
| clEnqueueAcquireVA_APIMediaSurfacesINTEL is called have completed before |
| calling clEnqueueAcquireVA_APIMediaSurfacesINTEL. |
| |
| <command_queue> is a valid command-queue. |
| |
| <num_objects> is the number of memory objects to be acquired in |
| <mem_objects>. |
| |
| <mem_objects> is a pointer to a list of OpenCL memory objects that |
| were created from VA API surfaces. |
| |
| <event_wait_list> and <num_events_in_wait_list> specify events that |
| need to complete before this particular command can be executed. If |
| <event_wait_list> is NULL, then this particular command does not |
| wait on any event to complete. If <event_wait_list> is NULL, |
| <num_events_in_wait_list> must be 0. If <event_wait_list> is not |
| NULL, the list of events pointed to by <event_wait_list> must be |
| valid and <num_events_in_wait_list> must be greater than 0. The |
| events specified in <event_wait_list> act as synchronization points. |
| |
| <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 be NULL 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. |
| |
| clEnqueueAcquireVA_APIMediaSurfacesINTEL returns CL_SUCCESS if the |
| function is executed successfully. If <num_objects> is 0 and |
| <mem_objects> is NULL then the function does nothing and returns |
| CL_SUCCESS. Otherwise it returns one of the following errors: |
| |
| * CL_INVALID_VALUE if <num_objects> is zero and <mem_objects> is |
| not a NULL value or if <num_objects> > 0 and <mem_objects> is |
| NULL. |
| |
| * CL_INVALID_MEM_OBJECT if memory objects in <mem_objects> are not |
| valid OpenCL memory objects or if memory objects in <mem_objects> |
| have not been created from VA API surfaces. |
| |
| * CL_INVALID_COMMAND_QUEUE if <command_queue> is not a valid |
| command-queue. |
| |
| * CL_INVALID_CONTEXT if the context associated with <command_queue> |
| was not created from a VA API display. |
| |
| * CL_VA_API_MEDIA_SURFACE_ALREADY_ACQUIRED_INTEL if memory objects |
| in <mem_objects> have previously been acquired using |
| clEnqueueAcquireVA_APIMediaSurfacesINTEL but have not been released |
| using clEnqueueReleaseVA_APIMediaSurfacesINTEL. |
| |
| * CL_INVALID_EVENT_WAIT_LIST if <event_wait_list> is NULL and |
| <num_events_in_wait_list> > 0, or <event_wait_list> is not NULL |
| and <num_events_in_wait_list> is 0, or if event objects in |
| <event_wait_list> are not valid events. |
| |
| * CL_OUT_OF_RESOURCES if there is a failure to allocate resources |
| required by the OpenCL implementation on the device. |
| |
| * CL_OUT_OF_HOST_MEMORY if there is a failure to allocate resources |
| required by the OpenCL implementation on the host. |
| |
| The function |
| |
| cl_int clEnqueueReleaseVA_APIMediaSurfacesINTEL( |
| cl_command_queue command_queue, |
| cl_uint num_objects, |
| const cl_mem *mem_objects, |
| cl_uint num_events_in_wait_list, |
| const cl_event *event_wait_list, |
| cl_event *event) |
| |
| is used to release OpenCL memory objects that have been created from |
| VA API surfaces. The VA API surfaces are released by the OpenCL context |
| associated with <command_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 CL_CONTEXT_INTEROP_USER_SYNC is not specified as CL_TRUE during |
| context creation, clEnqueueReleaseVA_APIMediaSurfacesINTEL provides the |
| synchronization guarantee that any VA API calls made after |
| clEnqueueReleaseVA_APIMediaSurfacesINTEL is called will not start |
| executing until after all events in <event_wait_list> are complete and |
| all work already submitted to <command_queue> completes execution. If |
| the context was created with properties specifying |
| CL_CONTEXT_INTEROP_USER_SYNC specified as CL_TRUE, the user is |
| responsible for guaranteeing that any VA API calls involving the |
| interop device(s) used in the OpenCL context made after |
| clEnqueueReleaseVA_APIMediaSurfacesINTEL is called will not start |
| executing until after the event returned by |
| clEnqueueReleaseVA_APIMediaSurfacesINTEL reports completion. |
| |
| <num_objects> is the number of memory objects to be released in |
| <mem_objects>. |
| |
| <mem_objects> is a pointer to a list of OpenCL memory objects that |
| were created from VA API surfaces. |
| |
| <event_wait_list> and <num_events_in_wait_list> specify events that |
| need to complete before this particular command can be executed. If |
| <event_wait_list> is NULL, then this particular command does not |
| wait on any event to complete. If <event_wait_list> is NULL, |
| <num_events_in_wait_list> must be 0. If <event_wait_list> is not |
| NULL, the list of events pointed to by <event_wait_list> must be |
| valid and <num_events_in_wait_list> must be greater than 0. The |
| events specified in <event_wait_list> act as synchronization points. |
| |
| <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 be NULL 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. |
| |
| clEnqueueReleaseVA_APIMediaSurfacesINTEL returns CL_SUCCESS if the |
| function is executed successfully. If <num_objects> is 0 and |
| <mem_objects> is NULL the function does nothing and returns |
| CL_SUCCESS. Otherwise it returns one of the following errors: |
| |
| * CL_INVALID_VALUE if <num_objects> is zero and <mem_objects> is |
| not a NULL value or if <num_objects> > 0 and <mem_objects> is |
| NULL. |
| |
| * CL_INVALID_MEM_OBJECT if memory objects in <mem_objects> are not |
| valid OpenCL memory objects or if memory objects in <mem_objects> |
| have not been created from VA API surfaces. |
| |
| * CL_INVALID_COMMAND_QUEUE if <command_queue> is not a valid |
| command-queue. |
| |
| * CL_INVALID_CONTEXT if the context associated with <command_queue> |
| was not created from a VA API display. |
| |
| * CL_VA_API_MEDIA_SURFACE_NOT_ACQUIRED_INTEL if memory objects in |
| <mem_objects> have not previously been acquired using |
| clEnqueueAcquireVA_APIMediaSurfacesINTEL, or have already been |
| released using clEnqueueReleaseVA_APIMediaSurfacesINTEL since the |
| last time that they were acquired. |
| |
| * CL_INVALID_EVENT_WAIT_LIST if <event_wait_list> is NULL and |
| <num_events_in_wait_list> > 0, or <event_wait_list> is not NULL |
| and <num_events_in_wait_list> is 0, or if event objects in |
| <event_wait_list> are not valid events. |
| |
| * CL_OUT_OF_RESOURCES if there is a failure to allocate resources |
| required by the OpenCL implementation on the device. |
| |
| * CL_OUT_OF_HOST_MEMORY if there is a failure to allocate resources |
| required by the OpenCL implementation on the host. |
| |
| Issues |
| |
| None |
| |
| Revision History |
| |
| Version 1 (2014/12/08): First public revision. |