1*4882a593Smuzhiyun /********************************************************************************** 2*4882a593Smuzhiyun * Copyright (c) 2008-2015 The Khronos Group Inc. 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Permission is hereby granted, free of charge, to any person obtaining a 5*4882a593Smuzhiyun * copy of this software and/or associated documentation files (the 6*4882a593Smuzhiyun * "Materials"), to deal in the Materials without restriction, including 7*4882a593Smuzhiyun * without limitation the rights to use, copy, modify, merge, publish, 8*4882a593Smuzhiyun * distribute, sublicense, and/or sell copies of the Materials, and to 9*4882a593Smuzhiyun * permit persons to whom the Materials are furnished to do so, subject to 10*4882a593Smuzhiyun * the following conditions: 11*4882a593Smuzhiyun * 12*4882a593Smuzhiyun * The above copyright notice and this permission notice shall be included 13*4882a593Smuzhiyun * in all copies or substantial portions of the Materials. 14*4882a593Smuzhiyun * 15*4882a593Smuzhiyun * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS 16*4882a593Smuzhiyun * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS 17*4882a593Smuzhiyun * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT 18*4882a593Smuzhiyun * https://www.khronos.org/registry/ 19*4882a593Smuzhiyun * 20*4882a593Smuzhiyun * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 21*4882a593Smuzhiyun * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 22*4882a593Smuzhiyun * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 23*4882a593Smuzhiyun * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 24*4882a593Smuzhiyun * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 25*4882a593Smuzhiyun * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 26*4882a593Smuzhiyun * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. 27*4882a593Smuzhiyun **********************************************************************************/ 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun /* $Revision: 11708 $ on $Date: 2010-06-13 23:36:24 -0700 (Sun, 13 Jun 2010) $ */ 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun #ifndef __OPENCL_CL_DX9_MEDIA_SHARING_H 32*4882a593Smuzhiyun #define __OPENCL_CL_DX9_MEDIA_SHARING_H 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun #include <CL/cl.h> 35*4882a593Smuzhiyun #include <CL/cl_platform.h> 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun #ifdef __cplusplus 38*4882a593Smuzhiyun extern "C" { 39*4882a593Smuzhiyun #endif 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun /****************************************************************************** 42*4882a593Smuzhiyun /* cl_khr_dx9_media_sharing */ 43*4882a593Smuzhiyun #define cl_khr_dx9_media_sharing 1 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun typedef cl_uint cl_dx9_media_adapter_type_khr; 46*4882a593Smuzhiyun typedef cl_uint cl_dx9_media_adapter_set_khr; 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun #if defined(_WIN32) 49*4882a593Smuzhiyun #include <d3d9.h> 50*4882a593Smuzhiyun typedef struct _cl_dx9_surface_info_khr 51*4882a593Smuzhiyun { 52*4882a593Smuzhiyun IDirect3DSurface9 *resource; 53*4882a593Smuzhiyun HANDLE shared_handle; 54*4882a593Smuzhiyun } cl_dx9_surface_info_khr; 55*4882a593Smuzhiyun #endif 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun /******************************************************************************/ 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun /* Error Codes */ 61*4882a593Smuzhiyun #define CL_INVALID_DX9_MEDIA_ADAPTER_KHR -1010 62*4882a593Smuzhiyun #define CL_INVALID_DX9_MEDIA_SURFACE_KHR -1011 63*4882a593Smuzhiyun #define CL_DX9_MEDIA_SURFACE_ALREADY_ACQUIRED_KHR -1012 64*4882a593Smuzhiyun #define CL_DX9_MEDIA_SURFACE_NOT_ACQUIRED_KHR -1013 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun /* cl_media_adapter_type_khr */ 67*4882a593Smuzhiyun #define CL_ADAPTER_D3D9_KHR 0x2020 68*4882a593Smuzhiyun #define CL_ADAPTER_D3D9EX_KHR 0x2021 69*4882a593Smuzhiyun #define CL_ADAPTER_DXVA_KHR 0x2022 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun /* cl_media_adapter_set_khr */ 72*4882a593Smuzhiyun #define CL_PREFERRED_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2023 73*4882a593Smuzhiyun #define CL_ALL_DEVICES_FOR_DX9_MEDIA_ADAPTER_KHR 0x2024 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun /* cl_context_info */ 76*4882a593Smuzhiyun #define CL_CONTEXT_ADAPTER_D3D9_KHR 0x2025 77*4882a593Smuzhiyun #define CL_CONTEXT_ADAPTER_D3D9EX_KHR 0x2026 78*4882a593Smuzhiyun #define CL_CONTEXT_ADAPTER_DXVA_KHR 0x2027 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun /* cl_mem_info */ 81*4882a593Smuzhiyun #define CL_MEM_DX9_MEDIA_ADAPTER_TYPE_KHR 0x2028 82*4882a593Smuzhiyun #define CL_MEM_DX9_MEDIA_SURFACE_INFO_KHR 0x2029 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun /* cl_image_info */ 85*4882a593Smuzhiyun #define CL_IMAGE_DX9_MEDIA_PLANE_KHR 0x202A 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun /* cl_command_type */ 88*4882a593Smuzhiyun #define CL_COMMAND_ACQUIRE_DX9_MEDIA_SURFACES_KHR 0x202B 89*4882a593Smuzhiyun #define CL_COMMAND_RELEASE_DX9_MEDIA_SURFACES_KHR 0x202C 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun /******************************************************************************/ 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun typedef CL_API_ENTRY cl_int (CL_API_CALL *clGetDeviceIDsFromDX9MediaAdapterKHR_fn)( 94*4882a593Smuzhiyun cl_platform_id platform, 95*4882a593Smuzhiyun cl_uint num_media_adapters, 96*4882a593Smuzhiyun cl_dx9_media_adapter_type_khr * media_adapter_type, 97*4882a593Smuzhiyun void * media_adapters, 98*4882a593Smuzhiyun cl_dx9_media_adapter_set_khr media_adapter_set, 99*4882a593Smuzhiyun cl_uint num_entries, 100*4882a593Smuzhiyun cl_device_id * devices, 101*4882a593Smuzhiyun cl_uint * num_devices) CL_API_SUFFIX__VERSION_1_2; 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun typedef CL_API_ENTRY cl_mem (CL_API_CALL *clCreateFromDX9MediaSurfaceKHR_fn)( 104*4882a593Smuzhiyun cl_context context, 105*4882a593Smuzhiyun cl_mem_flags flags, 106*4882a593Smuzhiyun cl_dx9_media_adapter_type_khr adapter_type, 107*4882a593Smuzhiyun void * surface_info, 108*4882a593Smuzhiyun cl_uint plane, 109*4882a593Smuzhiyun cl_int * errcode_ret) CL_API_SUFFIX__VERSION_1_2; 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueAcquireDX9MediaSurfacesKHR_fn)( 112*4882a593Smuzhiyun cl_command_queue command_queue, 113*4882a593Smuzhiyun cl_uint num_objects, 114*4882a593Smuzhiyun const cl_mem * mem_objects, 115*4882a593Smuzhiyun cl_uint num_events_in_wait_list, 116*4882a593Smuzhiyun const cl_event * event_wait_list, 117*4882a593Smuzhiyun cl_event * event) CL_API_SUFFIX__VERSION_1_2; 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun typedef CL_API_ENTRY cl_int (CL_API_CALL *clEnqueueReleaseDX9MediaSurfacesKHR_fn)( 120*4882a593Smuzhiyun cl_command_queue command_queue, 121*4882a593Smuzhiyun cl_uint num_objects, 122*4882a593Smuzhiyun const cl_mem * mem_objects, 123*4882a593Smuzhiyun cl_uint num_events_in_wait_list, 124*4882a593Smuzhiyun const cl_event * event_wait_list, 125*4882a593Smuzhiyun cl_event * event) CL_API_SUFFIX__VERSION_1_2; 126*4882a593Smuzhiyun 127*4882a593Smuzhiyun #ifdef __cplusplus 128*4882a593Smuzhiyun } 129*4882a593Smuzhiyun #endif 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun #endif /* __OPENCL_CL_DX9_MEDIA_SHARING_H */ 132*4882a593Smuzhiyun 133