blob: 4525a175e636c783969c56fb90fdb2cb45a16307 [file] [log] [blame]
Sheri Zhang79cb9452021-09-07 14:51:49 +01001/*******************************************************************************
2 * Copyright (c) 2008-2020 The Khronos Group Inc.
Pablo Telloe86a09f2018-01-11 15:44:48 +00003 *
Sheri Zhang79cb9452021-09-07 14:51:49 +01004 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
Pablo Telloe86a09f2018-01-11 15:44:48 +00007 *
Sheri Zhang79cb9452021-09-07 14:51:49 +01008 * http://www.apache.org/licenses/LICENSE-2.0
Pablo Telloe86a09f2018-01-11 15:44:48 +00009 *
Sheri Zhang79cb9452021-09-07 14:51:49 +010010 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 ******************************************************************************/
Pablo Telloe86a09f2018-01-11 15:44:48 +000016/*****************************************************************************\
17
Sheri Zhang67354e02021-06-30 16:08:29 +010018Copyright (c) 2013-2019 Intel Corporation All Rights Reserved.
Pablo Telloe86a09f2018-01-11 15:44:48 +000019
20THESE MATERIALS ARE PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR ITS
24CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
28OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY OR TORT (INCLUDING
29NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THESE
30MATERIALS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
32File Name: cl_dx9_media_sharing_intel.h
33
34Abstract:
35
36Notes:
37
38\*****************************************************************************/
39
40#ifndef __OPENCL_CL_DX9_MEDIA_SHARING_INTEL_H
41#define __OPENCL_CL_DX9_MEDIA_SHARING_INTEL_H
42
43#include <CL/cl.h>
44#include <CL/cl_platform.h>
45#include <d3d9.h>
46#include <dxvahd.h>
47#include <wtypes.h>
48#include <d3d9types.h>
49
50#ifdef __cplusplus
51extern "C" {
52#endif
53
54/***************************************
55* cl_intel_dx9_media_sharing extension *
56****************************************/
57
58#define cl_intel_dx9_media_sharing 1
59
60typedef cl_uint cl_dx9_device_source_intel;
61typedef cl_uint cl_dx9_device_set_intel;
62
63/* error codes */
64#define CL_INVALID_DX9_DEVICE_INTEL -1010
65#define CL_INVALID_DX9_RESOURCE_INTEL -1011
66#define CL_DX9_RESOURCE_ALREADY_ACQUIRED_INTEL -1012
67#define CL_DX9_RESOURCE_NOT_ACQUIRED_INTEL -1013
68
69/* cl_dx9_device_source_intel */
70#define CL_D3D9_DEVICE_INTEL 0x4022
71#define CL_D3D9EX_DEVICE_INTEL 0x4070
72#define CL_DXVA_DEVICE_INTEL 0x4071
73
74/* cl_dx9_device_set_intel */
75#define CL_PREFERRED_DEVICES_FOR_DX9_INTEL 0x4024
76#define CL_ALL_DEVICES_FOR_DX9_INTEL 0x4025
77
78/* cl_context_info */
79#define CL_CONTEXT_D3D9_DEVICE_INTEL 0x4026
80#define CL_CONTEXT_D3D9EX_DEVICE_INTEL 0x4072
81#define CL_CONTEXT_DXVA_DEVICE_INTEL 0x4073
82
83/* cl_mem_info */
84#define CL_MEM_DX9_RESOURCE_INTEL 0x4027
85#define CL_MEM_DX9_SHARED_HANDLE_INTEL 0x4074
86
87/* cl_image_info */
88#define CL_IMAGE_DX9_PLANE_INTEL 0x4075
89
90/* cl_command_type */
91#define CL_COMMAND_ACQUIRE_DX9_OBJECTS_INTEL 0x402A
92#define CL_COMMAND_RELEASE_DX9_OBJECTS_INTEL 0x402B
93/******************************************************************************/
94
95extern CL_API_ENTRY cl_int CL_API_CALL
96clGetDeviceIDsFromDX9INTEL(
Sheri Zhang67354e02021-06-30 16:08:29 +010097 cl_platform_id platform,
98 cl_dx9_device_source_intel dx9_device_source,
99 void* dx9_object,
100 cl_dx9_device_set_intel dx9_device_set,
101 cl_uint num_entries,
102 cl_device_id* devices,
103 cl_uint* num_devices) CL_EXT_SUFFIX__VERSION_1_1;
Pablo Telloe86a09f2018-01-11 15:44:48 +0000104
105typedef CL_API_ENTRY cl_int (CL_API_CALL* clGetDeviceIDsFromDX9INTEL_fn)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100106 cl_platform_id platform,
107 cl_dx9_device_source_intel dx9_device_source,
108 void* dx9_object,
109 cl_dx9_device_set_intel dx9_device_set,
110 cl_uint num_entries,
111 cl_device_id* devices,
112 cl_uint* num_devices) CL_EXT_SUFFIX__VERSION_1_1;
Pablo Telloe86a09f2018-01-11 15:44:48 +0000113
114extern CL_API_ENTRY cl_mem CL_API_CALL
115clCreateFromDX9MediaSurfaceINTEL(
Sheri Zhang67354e02021-06-30 16:08:29 +0100116 cl_context context,
117 cl_mem_flags flags,
118 IDirect3DSurface9* resource,
119 HANDLE sharedHandle,
120 UINT plane,
121 cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_1;
Pablo Telloe86a09f2018-01-11 15:44:48 +0000122
123typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromDX9MediaSurfaceINTEL_fn)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100124 cl_context context,
125 cl_mem_flags flags,
126 IDirect3DSurface9* resource,
127 HANDLE sharedHandle,
128 UINT plane,
129 cl_int* errcode_ret) CL_EXT_SUFFIX__VERSION_1_1;
Pablo Telloe86a09f2018-01-11 15:44:48 +0000130
131extern CL_API_ENTRY cl_int CL_API_CALL
132clEnqueueAcquireDX9ObjectsINTEL(
Sheri Zhang67354e02021-06-30 16:08:29 +0100133 cl_command_queue command_queue,
134 cl_uint num_objects,
135 const cl_mem* mem_objects,
136 cl_uint num_events_in_wait_list,
137 const cl_event* event_wait_list,
138 cl_event* event) CL_EXT_SUFFIX__VERSION_1_1;
Pablo Telloe86a09f2018-01-11 15:44:48 +0000139
140typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireDX9ObjectsINTEL_fn)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100141 cl_command_queue command_queue,
142 cl_uint num_objects,
143 const cl_mem* mem_objects,
144 cl_uint num_events_in_wait_list,
145 const cl_event* event_wait_list,
146 cl_event* event) CL_EXT_SUFFIX__VERSION_1_1;
Pablo Telloe86a09f2018-01-11 15:44:48 +0000147
148extern CL_API_ENTRY cl_int CL_API_CALL
149clEnqueueReleaseDX9ObjectsINTEL(
Sheri Zhang67354e02021-06-30 16:08:29 +0100150 cl_command_queue command_queue,
151 cl_uint num_objects,
152 cl_mem* mem_objects,
153 cl_uint num_events_in_wait_list,
154 const cl_event* event_wait_list,
155 cl_event* event) CL_EXT_SUFFIX__VERSION_1_1;
Pablo Telloe86a09f2018-01-11 15:44:48 +0000156
157typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseDX9ObjectsINTEL_fn)(
Sheri Zhang67354e02021-06-30 16:08:29 +0100158 cl_command_queue command_queue,
159 cl_uint num_objects,
160 cl_mem* mem_objects,
161 cl_uint num_events_in_wait_list,
162 const cl_event* event_wait_list,
163 cl_event* event) CL_EXT_SUFFIX__VERSION_1_1;
Pablo Telloe86a09f2018-01-11 15:44:48 +0000164
165#ifdef __cplusplus
166}
167#endif
168
169#endif /* __OPENCL_CL_DX9_MEDIA_SHARING_INTEL_H */
170