1 // DerelictCL - a Derelict based dynamic binding for OpenCL 2 // written in the D programming language 3 // 4 // Copyright: MeinMein 2013-2014. 5 // License: Boost License 1.0 6 // (See accompanying file LICENSE_1_0.txt or copy at 7 // http://www.boost.org/LICENSE_1_0.txt) 8 // Authors: Gerbrand Kamphuis (meinmein.com), 9 // Marvin Meeng (meinmein.com). 10 module derelict.opencl.cl_dx9_media_sharing; 11 12 import derelict.opencl.loader; 13 import derelict.opencl.types; 14 15 extern (System) 16 { 17 // OpenCL 1.2 18 alias nothrow cl_int function(cl_platform_id platform, cl_uint num_media_adapters, cl_dx9_media_adapter_type_khr* media_adapter_type, void* media_adapters, cl_dx9_media_adapter_set_khr media_adapter_set, cl_uint num_entries, cl_device_id* devices, cl_uint* num_devices) da_clGetDeviceIDsFromDX9MediaAdapterKHR; 19 alias nothrow cl_mem function(cl_context context, cl_mem_flags flags, cl_dx9_media_adapter_type_khr adapter_type, void* surface_info, cl_uint plane, cl_int* errcode_ret) da_clCreateFromDX9MediaSurfaceKHR; 20 alias nothrow cl_int function(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) da_clEnqueueAcquireDX9MediaSurfacesKHR; 21 alias nothrow cl_int function(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) da_clEnqueueReleaseDX9MediaSurfacesKHR; 22 } 23 24 __gshared 25 { 26 // OpenCL 1.2 27 da_clGetDeviceIDsFromDX9MediaAdapterKHR clGetDeviceIDsFromDX9MediaAdapterKHR; 28 da_clCreateFromDX9MediaSurfaceKHR clCreateFromDX9MediaSurfaceKHR; 29 da_clEnqueueAcquireDX9MediaSurfacesKHR clEnqueueAcquireDX9MediaSurfacesKHR; 30 da_clEnqueueReleaseDX9MediaSurfacesKHR clEnqueueReleaseDX9MediaSurfacesKHR; 31 } 32 33 package 34 { 35 void loadSymbols(void delegate(void**, string, bool doThrow) bindFunc) 36 { 37 38 } 39 40 CLVersion reload(void delegate(void**, string, bool doThrow) bindFunc, CLVersion clVer) 41 { 42 return clVer; 43 } 44 45 private __gshared bool _EXT_cl_dx9_media_sharing; 46 public bool EXT_cl_dx9_media_sharing() @property { return _EXT_cl_dx9_media_sharing; } 47 private void load_cl_dx9_media_sharing(CLVersion clVer, cl_platform_id platform) 48 { 49 try 50 { 51 loadExtensionFunction(cast(void**)&clGetDeviceIDsFromDX9MediaAdapterKHR, "clGetDeviceIDsFromDX9MediaAdapterKHR", clVer, platform); 52 loadExtensionFunction(cast(void**)&clCreateFromDX9MediaSurfaceKHR, "clCreateFromDX9MediaSurfaceKHR", clVer, platform); 53 loadExtensionFunction(cast(void**)&clEnqueueAcquireDX9MediaSurfacesKHR, "clEnqueueAcquireDX9MediaSurfacesKHR", clVer, platform); 54 loadExtensionFunction(cast(void**)&clEnqueueReleaseDX9MediaSurfacesKHR, "clEnqueueReleaseDX9MediaSurfacesKHR", clVer, platform); 55 56 _EXT_cl_dx9_media_sharing = clGetDeviceIDsFromDX9MediaAdapterKHR !is null && 57 clCreateFromDX9MediaSurfaceKHR !is null && 58 clEnqueueAcquireDX9MediaSurfacesKHR !is null && 59 clEnqueueReleaseDX9MediaSurfacesKHR !is null; 60 } 61 catch(Exception e) 62 { 63 _EXT_cl_dx9_media_sharing = false; 64 } 65 } 66 67 void loadEXT(CLVersion clVer, cl_platform_id platform) 68 { 69 if(clVer >= CLVersion.CL12) 70 { 71 // OpenCL 1.2 72 load_cl_dx9_media_sharing(clVer, platform); 73 } 74 } 75 }