The OpenD Programming Language

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 }