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_d3d10; 11 12 import derelict.opencl.loader; 13 import derelict.opencl.types; 14 15 extern (System) 16 { 17 // OpenCL 1.0 18 alias nothrow cl_int function(cl_platform_id platform, cl_d3d10_device_source_khr d3d_device_source, void* d3d_object, cl_d3d10_device_set_khr d3d_device_set, cl_uint num_entries, cl_device_id* devices, cl_uint* num_devices) da_clGetDeviceIDsFromD3D10KHR; 19 alias nothrow cl_mem function(cl_context context, cl_mem_flags flags, ID3D10Buffer* resource, cl_int* errcode_ret) da_clCreateFromD3D10BufferKHR; 20 alias nothrow cl_mem function(cl_context context, cl_mem_flags flags, ID3D10Texture2D* resource, uint subresource, cl_int* errcode_ret) da_clCreateFromD3D10Texture2DKHR; 21 alias nothrow cl_mem function(cl_context context, cl_mem_flags flags, ID3D10Texture3D* resource, uint subresource, cl_int* errcode_ret) da_clCreateFromD3D10Texture3DKHR; 22 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_clEnqueueAcquireD3D10ObjectsKHR; 23 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_clEnqueueReleaseD3D10ObjectsKHR; 24 } 25 26 __gshared 27 { 28 // OpenCL 1.0 29 da_clGetDeviceIDsFromD3D10KHR clGetDeviceIDsFromD3D10KHR; 30 da_clCreateFromD3D10BufferKHR clCreateFromD3D10BufferKHR; 31 da_clCreateFromD3D10Texture2DKHR clCreateFromD3D10Texture2DKHR; 32 da_clCreateFromD3D10Texture3DKHR clCreateFromD3D10Texture3DKHR; 33 da_clEnqueueAcquireD3D10ObjectsKHR clEnqueueAcquireD3D10ObjectsKHR; 34 da_clEnqueueReleaseD3D10ObjectsKHR clEnqueueReleaseD3D10ObjectsKHR; 35 } 36 37 package 38 { 39 void loadSymbols(void delegate(void**, string, bool doThrow) bindFunc) 40 { 41 42 } 43 44 CLVersion reload(void delegate(void**, string, bool doThrow) bindFunc, CLVersion clVer) 45 { 46 return clVer; 47 } 48 49 private __gshared bool _EXT_cl_khr_d3d10_sharing; 50 public bool EXT_cl_khr_d3d10_sharing() @property { return _EXT_cl_khr_d3d10_sharing; } 51 private void load_cl_khr_d3d10_sharing(CLVersion clVer, cl_platform_id platform) 52 { 53 try 54 { 55 loadExtensionFunction(cast(void**)&clGetDeviceIDsFromD3D10KHR, "clGetDeviceIDsFromD3D10KHR",clVer, platform); 56 loadExtensionFunction(cast(void**)&clCreateFromD3D10BufferKHR, "clCreateFromD3D10BufferKHR", clVer, platform); 57 loadExtensionFunction(cast(void**)&clCreateFromD3D10Texture2DKHR, "clCreateFromD3D10Texture2DKHR", clVer, platform); 58 loadExtensionFunction(cast(void**)&clCreateFromD3D10Texture3DKHR, "clCreateFromD3D10Texture3DKHR", clVer, platform); 59 loadExtensionFunction(cast(void**)&clEnqueueAcquireD3D10ObjectsKHR, "clEnqueueAcquireD3D10ObjectsKHR", clVer, platform); 60 loadExtensionFunction(cast(void**)&clEnqueueReleaseD3D10ObjectsKHR, "clEnqueueReleaseD3D10ObjectsKHR", clVer, platform); 61 62 _EXT_cl_khr_d3d10_sharing = clGetDeviceIDsFromD3D10KHR !is null && 63 clCreateFromD3D10BufferKHR !is null && 64 clCreateFromD3D10Texture2DKHR !is null && 65 clCreateFromD3D10Texture3DKHR !is null && 66 clEnqueueAcquireD3D10ObjectsKHR !is null && 67 clEnqueueReleaseD3D10ObjectsKHR !is null; 68 } 69 catch(Exception e) 70 { 71 _EXT_cl_khr_d3d10_sharing = false; 72 } 73 } 74 75 void loadEXT(CLVersion clVer, cl_platform_id platform) 76 { 77 if(clVer >= CLVersion.CL10) 78 { 79 // OpenCL 1.0 80 load_cl_khr_d3d10_sharing(clVer, platform); 81 } 82 } 83 }