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.types; 11 12 // cl_platform.h 13 alias byte cl_char; 14 alias ubyte cl_uchar; 15 alias short cl_short; 16 alias ushort cl_ushort; 17 alias int cl_int; 18 alias uint cl_uint; 19 alias long cl_long; // cl_long and cl_ulong are really intended as 64-bit integers 20 alias ulong cl_ulong; // so no need to use core.stdc.config.c_long/c_ulong 21 22 alias ushort cl_half; 23 alias float cl_float; 24 alias double cl_double; 25 26 alias uint cl_GLuint; 27 alias int cl_GLint; 28 alias uint cl_GLenum; 29 30 // cl.h 31 alias void* cl_platform_id; 32 alias void* cl_device_id; 33 alias void* cl_context; 34 alias void* cl_command_queue; 35 alias void* cl_mem; 36 alias void* cl_program; 37 alias void* cl_kernel; 38 alias void* cl_event; 39 alias void* cl_sampler; 40 41 alias cl_uint cl_bool; /* WARNING! Unlike cl_ types in cl_platform.h, cl_bool is not guaranteed to be the same size as the bool in kernels. */ 42 alias cl_ulong cl_bitfield; 43 alias cl_bitfield cl_device_type; 44 alias cl_uint cl_platform_info; 45 alias cl_uint cl_device_info; 46 alias cl_bitfield cl_device_fp_config; 47 alias cl_uint cl_device_mem_cache_type; 48 alias cl_uint cl_device_local_mem_type; 49 alias cl_bitfield cl_device_exec_capabilities; 50 alias cl_bitfield cl_device_svm_capabilities; 51 alias cl_bitfield cl_command_queue_properties; 52 alias ptrdiff_t cl_device_partition_property; 53 alias cl_bitfield cl_device_affinity_domain; 54 55 alias ptrdiff_t cl_context_properties; 56 alias cl_uint cl_context_info; 57 alias cl_bitfield cl_queue_properties; 58 alias cl_uint cl_command_queue_info; 59 alias cl_uint cl_channel_order; 60 alias cl_uint cl_channel_type; 61 alias cl_bitfield cl_mem_flags; 62 alias cl_bitfield cl_svm_mem_flags; 63 alias cl_uint cl_mem_object_type; 64 alias cl_uint cl_mem_info; 65 alias cl_bitfield cl_mem_migration_flags; 66 alias cl_uint cl_image_info; 67 alias cl_uint cl_buffer_create_type; 68 alias cl_uint cl_addressing_mode; 69 alias cl_uint cl_filter_mode; 70 alias cl_uint cl_sampler_info; 71 alias cl_bitfield cl_map_flags; 72 alias ptrdiff_t cl_pipe_properties; 73 alias cl_uint cl_pipe_info; 74 alias cl_uint cl_program_info; 75 alias cl_uint cl_program_build_info; 76 alias cl_uint cl_program_binary_type; 77 alias cl_int cl_build_status; 78 alias cl_uint cl_kernel_info; 79 alias cl_uint cl_kernel_arg_info; 80 alias cl_uint cl_kernel_arg_address_qualifier; 81 alias cl_uint cl_kernel_arg_access_qualifier; 82 alias cl_bitfield cl_kernel_arg_type_qualifier; 83 alias cl_uint cl_kernel_work_group_info; 84 alias cl_int cl_kernel_sub_group_info; 85 alias cl_uint cl_event_info; 86 alias cl_uint cl_command_type; 87 alias cl_uint cl_profiling_info; 88 alias cl_bitfield cl_sampler_properties; 89 alias cl_uint cl_kernel_exec_info; 90 91 struct cl_image_format 92 { 93 cl_channel_order image_channel_order; 94 cl_channel_type image_channel_data_type; 95 } 96 97 struct cl_image_desc 98 { 99 cl_mem_object_type image_type; 100 size_t image_width; 101 size_t image_height; 102 size_t image_depth; 103 size_t image_array_size; 104 size_t image_row_pitch; 105 size_t image_slice_pitch; 106 cl_uint num_mip_levels; 107 cl_uint num_samples; 108 cl_mem buffer; 109 //annonymous union 110 alias mem_object = buffer; 111 } 112 113 struct cl_buffer_region 114 { 115 size_t origin; 116 size_t size; 117 } 118 119 // cl_ext.h 120 alias cl_ulong cl_device_partition_property_ext; 121 122 // cl_egl.h 123 alias void* CLeglImageKHR; 124 alias void* CLeglDisplayKHR; 125 alias ptrdiff_t cl_egl_image_properties_khr; 126 127 // cl_gl.h 128 alias cl_uint cl_gl_object_type; 129 alias cl_uint cl_gl_texture_info; 130 alias cl_uint cl_gl_platform_info; 131 132 struct __GLsync; 133 alias __GLsync* cl_GLsync; 134 135 alias cl_uint cl_gl_context_info; 136 137 // cl_d3d10.h 138 alias void ID3D10Buffer; 139 alias void ID3D10Texture2D; 140 alias void ID3D10Texture3D; 141 142 alias cl_uint cl_d3d10_device_source_khr; 143 alias cl_uint cl_d3d10_device_set_khr; 144 145 // cl_d3d11.h 146 alias void ID3D11Buffer; 147 alias void ID3D11Texture2D; 148 alias void ID3D11Texture3D; 149 150 alias cl_uint cl_d3d11_device_source_khr; 151 alias cl_uint cl_d3d11_device_set_khr; 152 153 // cl_dx9_media_sharing.h 154 alias cl_uint cl_dx9_media_adapter_type_khr; 155 alias cl_uint cl_dx9_media_adapter_set_khr; 156 157 version(Windows) 158 { 159 alias void IDirect3DSurface9; 160 alias void* HANDLE; 161 162 struct cl_dx9_surface_info_khr 163 { 164 IDirect3DSurface9* resource; 165 HANDLE shared_handle; 166 } 167 } 168 169 // This is a Derelict type, not from OpenCL 170 enum CLVersion 171 { 172 None, 173 CL10 = 10, 174 CL11 = 11, 175 CL12 = 12, 176 CL20 = 20, 177 CL21 = 21, 178 CL22 = 22, 179 HighestSupported = CL22, 180 }