source: trunk/CrypPlugins/Libs/OpenCLNet/Enums.cs @ 2040

Last change on this file since 2040 was 2040, checked in by Sven Rech, 11 years ago
  • added OpenCL.Net project
  • added OpenCL settings in KeySearcher
  • changed rereservation status message behavior
File size: 55.8 KB
Line 
1/*
2 * Copyright (c) 2009 Olav Kalgraf(olav.kalgraf@gmail.com)
3 *
4 * Permission is hereby granted, free of charge, to any person
5 * obtaining a copy of this software and associated documentation
6 * files (the "Software"), to deal in the Software without
7 * restriction, including without limitation the rights to use,
8 * copy, modify, merge, publish, distribute, sublicense, and/or sell
9 * copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following
11 * conditions:
12 *
13 * The above copyright notice and this permission notice shall be
14 * included in all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
18 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
20 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
23 * OTHER DEALINGS IN THE SOFTWARE.
24 */
25
26using System;
27using System.Runtime.InteropServices;
28
29
30namespace OpenCLNet
31{
32    #region Using statements
33
34    using cl_char=SByte;
35    using cl_uchar=Byte;
36    using cl_short=Byte;
37    using cl_ushort=Byte;
38    using cl_int=Int32;
39    using cl_uint=UInt32;
40    using cl_long=Int64;
41    using cl_ulong=UInt64;
42    using cl_half=UInt16;
43    using cl_float=Single;
44    using cl_double=Double;
45
46    using cl_platform_id=IntPtr;
47    using cl_device_id=IntPtr;
48    using cl_context=IntPtr;
49    using cl_command_queue=IntPtr;
50    using cl_mem=IntPtr;
51    using cl_program=IntPtr;
52    using cl_kernel=IntPtr;
53    using cl_event=IntPtr;
54    using cl_sampler=IntPtr;
55
56    using cl_bool=UInt32;
57    using cl_bitfield=UInt64;
58    using cl_device_type=UInt64;
59    using cl_platform_info=UInt32;
60    using cl_device_info=UInt32;
61    using cl_device_address_info=UInt64;
62    using cl_device_fp_config=UInt64;
63    using cl_device_mem_cache_type=UInt32;
64    using cl_device_local_mem_type=UInt32;
65    using cl_device_exec_capabilities=UInt64;
66    using cl_command_queue_properties=UInt64;
67
68    using cl_context_properties=IntPtr;
69    using cl_context_info=UInt32;
70    using cl_command_queue_info=UInt32;
71    using cl_channel_order=UInt32;
72    using cl_channel_type=UInt32;
73    using cl_mem_flags=UInt64;
74    using cl_mem_object_type=UInt32;
75    using cl_mem_info=UInt32;
76    using cl_image_info=UInt32;
77    using cl_addressing_mode=UInt32;
78    using cl_filter_mode=UInt32;
79    using cl_sampler_info=UInt32;
80    using cl_map_flags=UInt64;
81    using cl_program_info=UInt32;
82    using cl_program_build_info=UInt32;
83    using cl_build_status=Int32;
84    using cl_kernel_info=UInt32;
85    using cl_kernel_work_group_info=UInt32;
86    using cl_event_info=UInt32;
87    using cl_command_type=UInt32;
88    using cl_profiling_info=UInt32;
89
90    #endregion
91
92    [StructLayout(LayoutKind.Sequential,Pack=1)]
93    public struct ImageFormat
94    {
95        internal cl_channel_order image_channel_order;
96        internal cl_channel_type image_channel_data_type;
97
98        #region Predefined static Image formats
99
100        public static readonly ImageFormat RGB8U = new ImageFormat(ChannelOrder.RGB, ChannelType.UNSIGNED_INT8);
101        public static readonly ImageFormat RGB8S = new ImageFormat(ChannelOrder.RGB, ChannelType.SIGNED_INT8);
102        public static readonly ImageFormat RGB16U = new ImageFormat(ChannelOrder.RGB, ChannelType.UNSIGNED_INT16);
103        public static readonly ImageFormat RGB16S = new ImageFormat(ChannelOrder.RGB, ChannelType.SIGNED_INT16);
104        public static readonly ImageFormat RGB32U = new ImageFormat(ChannelOrder.RGB, ChannelType.UNSIGNED_INT32);
105        public static readonly ImageFormat RGB32S = new ImageFormat(ChannelOrder.RGB, ChannelType.SIGNED_INT32);
106        public static readonly ImageFormat RGBFloat = new ImageFormat(ChannelOrder.RGB, ChannelType.FLOAT);
107        public static readonly ImageFormat RGBHalf = new ImageFormat(ChannelOrder.RGB, ChannelType.HALF_FLOAT);
108
109        public static readonly ImageFormat RG8U = new ImageFormat(ChannelOrder.RG, ChannelType.UNSIGNED_INT8);
110        public static readonly ImageFormat RG8S = new ImageFormat(ChannelOrder.RG, ChannelType.SIGNED_INT8);
111        public static readonly ImageFormat RG16U = new ImageFormat(ChannelOrder.RG, ChannelType.UNSIGNED_INT16);
112        public static readonly ImageFormat RG16S = new ImageFormat(ChannelOrder.RG, ChannelType.SIGNED_INT16);
113        public static readonly ImageFormat RG32U = new ImageFormat(ChannelOrder.RG, ChannelType.UNSIGNED_INT32);
114        public static readonly ImageFormat RG32S = new ImageFormat(ChannelOrder.RG, ChannelType.SIGNED_INT32);
115        public static readonly ImageFormat RGFloat = new ImageFormat(ChannelOrder.RG, ChannelType.FLOAT);
116        public static readonly ImageFormat RGHalf = new ImageFormat(ChannelOrder.RG, ChannelType.HALF_FLOAT);
117
118        public static readonly ImageFormat R8U = new ImageFormat(ChannelOrder.R, ChannelType.UNSIGNED_INT8);
119        public static readonly ImageFormat R8S = new ImageFormat(ChannelOrder.R, ChannelType.SIGNED_INT8);
120        public static readonly ImageFormat R16U = new ImageFormat(ChannelOrder.R, ChannelType.UNSIGNED_INT16);
121        public static readonly ImageFormat R16S = new ImageFormat(ChannelOrder.R, ChannelType.SIGNED_INT16);
122        public static readonly ImageFormat R32U = new ImageFormat(ChannelOrder.R, ChannelType.UNSIGNED_INT32);
123        public static readonly ImageFormat R32S = new ImageFormat(ChannelOrder.R, ChannelType.SIGNED_INT32);
124        public static readonly ImageFormat RFloat = new ImageFormat(ChannelOrder.R, ChannelType.FLOAT);
125        public static readonly ImageFormat RHalf = new ImageFormat(ChannelOrder.R, ChannelType.HALF_FLOAT);
126
127        public static readonly ImageFormat RA8U = new ImageFormat(ChannelOrder.RA, ChannelType.UNSIGNED_INT8);
128        public static readonly ImageFormat RA8S = new ImageFormat(ChannelOrder.RA, ChannelType.SIGNED_INT8);
129        public static readonly ImageFormat RA16U = new ImageFormat(ChannelOrder.RA, ChannelType.UNSIGNED_INT16);
130        public static readonly ImageFormat RA16S = new ImageFormat(ChannelOrder.RA, ChannelType.SIGNED_INT16);
131        public static readonly ImageFormat RA32U = new ImageFormat(ChannelOrder.RA, ChannelType.UNSIGNED_INT32);
132        public static readonly ImageFormat RA32S = new ImageFormat(ChannelOrder.RA, ChannelType.SIGNED_INT32);
133        public static readonly ImageFormat RAFloat = new ImageFormat(ChannelOrder.RA, ChannelType.FLOAT);
134        public static readonly ImageFormat RAHalf = new ImageFormat(ChannelOrder.RA, ChannelType.HALF_FLOAT);
135
136        public static readonly ImageFormat RGBA8U = new ImageFormat(ChannelOrder.RGBA, ChannelType.UNSIGNED_INT8);
137        public static readonly ImageFormat RGBA8S = new ImageFormat(ChannelOrder.RGBA, ChannelType.SIGNED_INT8);
138        public static readonly ImageFormat RGBA16U = new ImageFormat(ChannelOrder.RGBA, ChannelType.UNSIGNED_INT16);
139        public static readonly ImageFormat RGBA16S = new ImageFormat(ChannelOrder.RGBA, ChannelType.SIGNED_INT16);
140        public static readonly ImageFormat RGBA32U = new ImageFormat(ChannelOrder.RGBA, ChannelType.UNSIGNED_INT32);
141        public static readonly ImageFormat RGBA32S = new ImageFormat(ChannelOrder.RGBA, ChannelType.SIGNED_INT32);
142        public static readonly ImageFormat RGBAFloat = new ImageFormat(ChannelOrder.RGBA, ChannelType.FLOAT);
143        public static readonly ImageFormat RGBAHalf = new ImageFormat(ChannelOrder.RGBA, ChannelType.HALF_FLOAT);
144
145        public static readonly ImageFormat BGRA8U = new ImageFormat(ChannelOrder.BGRA, ChannelType.UNSIGNED_INT8);
146        public static readonly ImageFormat BGRA8S = new ImageFormat(ChannelOrder.BGRA, ChannelType.SIGNED_INT8);
147        public static readonly ImageFormat BGRA16U = new ImageFormat(ChannelOrder.BGRA, ChannelType.UNSIGNED_INT16);
148        public static readonly ImageFormat BGRA16S = new ImageFormat(ChannelOrder.BGRA, ChannelType.SIGNED_INT16);
149        public static readonly ImageFormat BGRA32U = new ImageFormat(ChannelOrder.BGRA, ChannelType.UNSIGNED_INT32);
150        public static readonly ImageFormat BGRA32S = new ImageFormat(ChannelOrder.BGRA, ChannelType.SIGNED_INT32);
151        public static readonly ImageFormat BGRAFloat = new ImageFormat(ChannelOrder.BGRA, ChannelType.FLOAT);
152        public static readonly ImageFormat BGRAHalf = new ImageFormat(ChannelOrder.BGRA, ChannelType.HALF_FLOAT);
153
154        public static readonly ImageFormat ARGB8U = new ImageFormat(ChannelOrder.ARGB, ChannelType.UNSIGNED_INT8);
155        public static readonly ImageFormat ARGB8S = new ImageFormat(ChannelOrder.ARGB, ChannelType.SIGNED_INT8);
156        public static readonly ImageFormat ARGB16U = new ImageFormat(ChannelOrder.ARGB, ChannelType.UNSIGNED_INT16);
157        public static readonly ImageFormat ARGB16S = new ImageFormat(ChannelOrder.ARGB, ChannelType.SIGNED_INT16);
158        public static readonly ImageFormat ARGB32U = new ImageFormat(ChannelOrder.ARGB, ChannelType.UNSIGNED_INT32);
159        public static readonly ImageFormat ARGB32S = new ImageFormat(ChannelOrder.ARGB, ChannelType.SIGNED_INT32);
160        public static readonly ImageFormat ARGBFloat = new ImageFormat(ChannelOrder.ARGB, ChannelType.FLOAT);
161        public static readonly ImageFormat ARGBHalf = new ImageFormat(ChannelOrder.ARGB, ChannelType.HALF_FLOAT);
162
163        public static readonly ImageFormat A8U = new ImageFormat(ChannelOrder.A, ChannelType.UNSIGNED_INT8);
164        public static readonly ImageFormat A8S = new ImageFormat(ChannelOrder.A, ChannelType.SIGNED_INT8);
165        public static readonly ImageFormat A16U = new ImageFormat(ChannelOrder.A, ChannelType.UNSIGNED_INT16);
166        public static readonly ImageFormat A16S = new ImageFormat(ChannelOrder.A, ChannelType.SIGNED_INT16);
167        public static readonly ImageFormat A32U = new ImageFormat(ChannelOrder.A, ChannelType.UNSIGNED_INT32);
168        public static readonly ImageFormat A32S = new ImageFormat(ChannelOrder.A, ChannelType.SIGNED_INT32);
169        public static readonly ImageFormat AFloat = new ImageFormat(ChannelOrder.A, ChannelType.FLOAT);
170        public static readonly ImageFormat AHalf = new ImageFormat(ChannelOrder.A, ChannelType.HALF_FLOAT);
171
172        public static readonly ImageFormat INTENSITY8U = new ImageFormat(ChannelOrder.INTENSITY, ChannelType.UNSIGNED_INT8);
173        public static readonly ImageFormat INTENSITY8S = new ImageFormat(ChannelOrder.INTENSITY, ChannelType.SIGNED_INT8);
174        public static readonly ImageFormat INTENSITY16U = new ImageFormat(ChannelOrder.INTENSITY, ChannelType.UNSIGNED_INT16);
175        public static readonly ImageFormat INTENSITY16S = new ImageFormat(ChannelOrder.INTENSITY, ChannelType.SIGNED_INT16);
176        public static readonly ImageFormat INTENSITY32U = new ImageFormat(ChannelOrder.INTENSITY, ChannelType.UNSIGNED_INT32);
177        public static readonly ImageFormat INTENSITY32S = new ImageFormat(ChannelOrder.INTENSITY, ChannelType.SIGNED_INT32);
178        public static readonly ImageFormat INTENSITYFloat = new ImageFormat(ChannelOrder.INTENSITY, ChannelType.FLOAT);
179        public static readonly ImageFormat INTENSITYHalf = new ImageFormat(ChannelOrder.INTENSITY, ChannelType.HALF_FLOAT);
180
181        public static readonly ImageFormat LUMINANCE8U = new ImageFormat(ChannelOrder.LUMINANCE, ChannelType.UNSIGNED_INT8);
182        public static readonly ImageFormat LUMINANCE8S = new ImageFormat(ChannelOrder.LUMINANCE, ChannelType.SIGNED_INT8);
183        public static readonly ImageFormat LUMINANCE16U = new ImageFormat(ChannelOrder.LUMINANCE, ChannelType.UNSIGNED_INT16);
184        public static readonly ImageFormat LUMINANCE16S = new ImageFormat(ChannelOrder.LUMINANCE, ChannelType.SIGNED_INT16);
185        public static readonly ImageFormat LUMINANCE32U = new ImageFormat(ChannelOrder.LUMINANCE, ChannelType.UNSIGNED_INT32);
186        public static readonly ImageFormat LUMINANCE32S = new ImageFormat(ChannelOrder.LUMINANCE, ChannelType.SIGNED_INT32);
187        public static readonly ImageFormat LUMINANCEFloat = new ImageFormat(ChannelOrder.LUMINANCE, ChannelType.FLOAT);
188        public static readonly ImageFormat LUMINANCEHalf = new ImageFormat(ChannelOrder.LUMINANCE, ChannelType.HALF_FLOAT);
189
190        #endregion
191
192        public ImageFormat(ChannelOrder channelOrder, ChannelType channelType)
193        {
194            image_channel_order = (cl_channel_order)channelOrder;
195            image_channel_data_type = (cl_channel_type)channelType;
196        }
197
198        public ChannelOrder ChannelOrder
199        {
200            get
201            {
202                return (ChannelOrder)image_channel_order;
203            }
204            set
205            {
206                image_channel_order = (cl_channel_order)value;
207            }
208        }
209        public ChannelType ChannelType
210        {
211            get
212            {
213                return (ChannelType)image_channel_data_type;
214            }
215            set
216            {
217                image_channel_data_type = (cl_channel_type)value;
218            }
219        }
220    }
221
222    public enum ErrorCode: int
223    {
224        SUCCESS                            =       0,
225        DEVICE_NOT_FOUND                   =      -1,
226        DEVICE_NOT_AVAILABLE               =      -2,
227        COMPILER_NOT_AVAILABLE             =      -3,
228        MEM_OBJECT_ALLOCATION_FAILURE      =      -4,
229        OUT_OF_RESOURCES                   =      -5,
230        OUT_OF_HOST_MEMORY                 =      -6,
231        PROFILING_INFO_NOT_AVAILABLE       =      -7,
232        MEM_COPY_OVERLAP                   =      -8,
233        IMAGE_FORMAT_MISMATCH              =      -9,
234        IMAGE_FORMAT_NOT_SUPPORTED         =      -10,
235        BUILD_PROGRAM_FAILURE              =      -11,
236        MAP_FAILURE                        =      -12,
237        MISALIGNED_SUB_BUFFER_OFFSET       =      -13,
238        EXEC_STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST=-14,
239
240        INVALID_VALUE                      =      -30,
241        INVALID_DEVICE_TYPE                =      -31,
242        INVALID_PLATFORM                   =      -32,
243        INVALID_DEVICE                     =      -33,
244        INVALID_CONTEXT                    =      -34,
245        INVALID_QUEUE_PROPERTIES           =      -35,
246        INVALID_COMMAND_QUEUE              =      -36,
247        INVALID_HOST_PTR                   =      -37,
248        INVALID_MEM_OBJECT                 =      -38,
249        INVALID_IMAGE_FORMAT_DESCRIPTOR    =      -39,
250        INVALID_IMAGE_SIZE                 =      -40,
251        INVALID_SAMPLER                    =      -41,
252        INVALID_BINARY                     =      -42,
253        INVALID_BUILD_OPTIONS              =      -43,
254        INVALID_PROGRAM                    =      -44,
255        INVALID_PROGRAM_EXECUTABLE         =      -45,
256        INVALID_KERNEL_NAME                =      -46,
257        INVALID_KERNEL_DEFINITION          =      -47,
258        INVALID_KERNEL                     =      -48,
259        INVALID_ARG_INDEX                  =      -49,
260        INVALID_ARG_VALUE                  =      -50,
261        INVALID_ARG_SIZE                   =      -51,
262        INVALID_KERNEL_ARGS                =      -52,
263        INVALID_WORK_DIMENSION             =      -53,
264        INVALID_WORK_GROUP_SIZE            =      -54,
265        INVALID_WORK_ITEM_SIZE             =      -55,
266        INVALID_GLOBAL_OFFSET              =      -56,
267        INVALID_EVENT_WAIT_LIST            =      -57,
268        INVALID_EVENT                      =      -58,
269        INVALID_OPERATION                  =      -59,
270        INVALID_GL_OBJECT                  =      -60,
271        INVALID_BUFFER_SIZE                =      -61,
272        INVALID_MIP_LEVEL                  =      -62,
273        INVALID_GLOBAL_WORK_SIZE           =      -63,
274        INVALID_PROPERTY                   =      -64,
275
276
277        // CL_GL Error Codes
278        INVALID_GL_SHAREGROUP_REFERENCE_KHR=      -1000,
279       
280        // cl_khr_icd extension
281        PLATFORM_NOT_FOUND_KHR             =      -1001,
282
283        // D3D10 extension Error Codes
284        INVALID_D3D10_DEVICE_KHR           =      -1002,
285        INVALID_D3D10_RESOURCE_KHR         =      -1003,
286        D3D10_RESOURCE_ALREADY_ACQUIRED_KHR=      -1004,
287        D3D10_RESOURCE_NOT_ACQUIRED_KHR    =      -1005,
288
289        // cl_ext_device_fission
290        DEVICE_PARTITION_FAILED_EXT        =      -1057,
291        INVALID_PARTITION_COUNT_EXT        =      -1058,
292        INVALID_PARTITION_NAME_EXT         =      -1059,
293
294    }
295
296    public sealed class OpenCLConstants
297    {
298        public static readonly int CHAR_BIT = 8;
299        public static readonly int SCHAR_MAX = 127;
300        public static readonly int SCHAR_MIN = (-127-1);
301        public static readonly int CHAR_MAX  = SCHAR_MAX;
302        public static readonly int CHAR_MIN  = SCHAR_MIN;
303        public static readonly int UCHAR_MAX = 255;
304        public static readonly int SHRT_MAX  = 32767;
305        public static readonly int SHRT_MIN  = (-32767-1);
306        public static readonly int USHRT_MAX = 65535;
307        public static readonly int INT_MAX   = 2147483647;
308        public static readonly int INT_MIN   = (-2147483647-1);
309        public static readonly uint UINT_MAX  = 0xffffffffU;
310        public static readonly long LONG_MAX  = 0x7FFFFFFFFFFFFFFFL;
311        public static readonly long LONG_MIN = -0x7FFFFFFFFFFFFFFFL - 1L;
312        public static readonly ulong ULONG_MAX = 0xFFFFFFFFFFFFFFFFUL;
313
314        public static readonly int FLT_DIG        =  6;
315        public static readonly int FLT_MANT_DIG   =  24;
316        public static readonly int FLT_MAX_10_EXP =  +38;
317        public static readonly int FLT_MAX_EXP    =  +128;
318        public static readonly int FLT_MIN_10_EXP =  -37;
319        public static readonly int FLT_MIN_EXP    =  -125;
320        public static readonly int FLT_RADIX      =  2;
321        public static readonly float FLT_MAX        =  float.MaxValue;
322        public static readonly float FLT_MIN = float.MinValue;
323        public static readonly float FLT_EPSILON = float.Epsilon;
324
325        public static readonly int DBL_DIG        =  15;
326        public static readonly int DBL_MANT_DIG   =  53;
327        public static readonly int DBL_MAX_10_EXP =  +308;
328        public static readonly int DBL_MAX_EXP    =  +1024;
329        public static readonly int DBL_MIN_10_EXP =  -307;
330        public static readonly int DBL_MIN_EXP    =  -1021;
331        public static readonly int DBL_RADIX      =  2;
332        public static readonly double DBL_MAX        =  double.MaxValue;
333        public static readonly double DBL_MIN = double.MinValue;
334        public static readonly double DBL_EPSILON = double.Epsilon;
335
336        public static readonly double M_E            = 2.718281828459045090796;
337        public static readonly double M_LOG2E        = 1.442695040888963387005;
338        public static readonly double M_LOG10E       = 0.434294481903251816668;
339        public static readonly double M_LN2          = 0.693147180559945286227;
340        public static readonly double M_LN10         = 2.302585092994045901094;
341        public static readonly double M_PI           = 3.141592653589793115998;
342        public static readonly double M_PI_2         = 1.570796326794896557999;
343        public static readonly double M_PI_4         = 0.785398163397448278999;
344        public static readonly double M_1_PI         = 0.318309886183790691216;
345        public static readonly double M_2_PI         = 0.636619772367581382433;
346        public static readonly double M_2_SQRTPI     = 1.128379167095512558561;
347        public static readonly double M_SQRT2        = 1.414213562373095145475;
348        public static readonly double M_SQRT1_2      = 0.707106781186547572737;
349
350        public static readonly float M_E_F          = 2.71828174591064f;
351        public static readonly float M_LOG2E_F      = 1.44269502162933f;
352        public static readonly float M_LOG10E_F     = 0.43429449200630f;
353        public static readonly float M_LN2_F        = 0.69314718246460f;
354        public static readonly float M_LN10_F       = 2.30258512496948f;
355        public static readonly float M_PI_F         = 3.14159274101257f;
356        public static readonly float M_PI_2_F       = 1.57079637050629f;
357        public static readonly float M_PI_4_F       = 0.78539818525314f;
358        public static readonly float M_1_PI_F       = 0.31830987334251f;
359        public static readonly float M_2_PI_F       = 0.63661974668503f;
360        public static readonly float M_2_SQRTPI_F   = 1.12837922573090f;
361        public static readonly float M_SQRT2_F      = 1.41421353816986f;
362        public static readonly float M_SQRT1_2_F    = 0.70710676908493f;
363
364        public static readonly float NAN            =  float.NaN;
365        public static readonly float HUGE_VALF      =  float.PositiveInfinity;
366        public static readonly double HUGE_VAL       =  double.PositiveInfinity;
367        public static readonly float MAXFLOAT       =  FLT_MAX;
368        public static readonly float INFINITY       =  HUGE_VALF;
369    }
370
371    public enum Bool
372    {
373        FALSE                               =     0,
374        TRUE                                =     1,
375    }
376
377    public enum PlatformInfo
378    {
379        PROFILE                        = 0x0900,
380        VERSION                        = 0x0901,
381        NAME                           = 0x0902,
382        VENDOR                         = 0x0903,
383        EXTENSIONS                     = 0x0904,
384       
385        // cl_khr_icd extension
386        PLATFORM_ICD_SUFFIX_KHR        = 0x0920,
387    }
388
389    // cl_device_type - bitfield
390    public enum DeviceType : ulong
391    {
392        DEFAULT                      = (1 << 0),
393        CPU                          = (1 << 1),
394        GPU                          = (1 << 2),
395        ACCELERATOR                  = (1 << 3),
396        ALL                          = 0xFFFFFFFF,
397    }
398
399    // cl_device_info
400    public enum DeviceInfo
401    {
402        TYPE                             = 0x1000,
403        VENDOR_ID                        = 0x1001,
404        MAX_COMPUTE_UNITS                = 0x1002,
405        MAX_WORK_ITEM_DIMENSIONS         = 0x1003,
406        MAX_WORK_GROUP_SIZE              = 0x1004,
407        MAX_WORK_ITEM_SIZES              = 0x1005,
408        PREFERRED_VECTOR_WIDTH_CHAR      = 0x1006,
409        PREFERRED_VECTOR_WIDTH_SHORT     = 0x1007,
410        PREFERRED_VECTOR_WIDTH_INT       = 0x1008,
411        PREFERRED_VECTOR_WIDTH_LONG      = 0x1009,
412        PREFERRED_VECTOR_WIDTH_FLOAT     = 0x100A,
413        PREFERRED_VECTOR_WIDTH_DOUBLE    = 0x100B,
414        MAX_CLOCK_FREQUENCY              = 0x100C,
415        ADDRESS_BITS                     = 0x100D,
416        MAX_READ_IMAGE_ARGS              = 0x100E,
417        MAX_WRITE_IMAGE_ARGS             = 0x100F,
418        MAX_MEM_ALLOC_SIZE               = 0x1010,
419        IMAGE2D_MAX_WIDTH                = 0x1011,
420        IMAGE2D_MAX_HEIGHT               = 0x1012,
421        IMAGE3D_MAX_WIDTH                = 0x1013,
422        IMAGE3D_MAX_HEIGHT               = 0x1014,
423        IMAGE3D_MAX_DEPTH                = 0x1015,
424        IMAGE_SUPPORT                    = 0x1016,
425        MAX_PARAMETER_SIZE               = 0x1017,
426        MAX_SAMPLERS                     = 0x1018,
427        MEM_BASE_ADDR_ALIGN              = 0x1019,
428        MIN_DATA_TYPE_ALIGN_SIZE         = 0x101A,
429        SINGLE_FP_CONFIG                 = 0x101B,
430        GLOBAL_MEM_CACHE_TYPE            = 0x101C,
431        GLOBAL_MEM_CACHELINE_SIZE        = 0x101D,
432        GLOBAL_MEM_CACHE_SIZE            = 0x101E,
433        GLOBAL_MEM_SIZE                  = 0x101F,
434        MAX_CONSTANT_BUFFER_SIZE         = 0x1020,
435        MAX_CONSTANT_ARGS                = 0x1021,
436        LOCAL_MEM_TYPE                   = 0x1022,
437        LOCAL_MEM_SIZE                   = 0x1023,
438        ERROR_CORRECTION_SUPPORT         = 0x1024,
439        PROFILING_TIMER_RESOLUTION       = 0x1025,
440        ENDIAN_LITTLE                    = 0x1026,
441        AVAILABLE                        = 0x1027,
442        COMPILER_AVAILABLE               = 0x1028,
443        EXECUTION_CAPABILITIES           = 0x1029,
444        QUEUE_PROPERTIES                 = 0x102A,
445        NAME                             = 0x102B,
446        VENDOR                           = 0x102C,
447        DRIVER_VERSION                   = 0x102D,
448        PROFILE                          = 0x102E,
449        VERSION                          = 0x102F,
450        EXTENSIONS                       = 0x1030,
451        PLATFORM                         = 0x1031,
452        DOUBLE_FP_CONFIG                 = 0x1032,
453        HALF_FP_CONFIG                   = 0x1033,
454        PREFERRED_VECTOR_WIDTH_HALF      = 0x1034,
455        HOST_UNIFIED_MEMORY              = 0x1035,
456        NATIVE_VECTOR_WIDTH_CHAR         = 0x1036,
457        NATIVE_VECTOR_WIDTH_SHORT        = 0x1037,
458        NATIVE_VECTOR_WIDTH_INT          = 0x1038,
459        NATIVE_VECTOR_WIDTH_LONG         = 0x1039,
460        NATIVE_VECTOR_WIDTH_FLOAT        = 0x103A,
461        NATIVE_VECTOR_WIDTH_DOUBLE       = 0x103B,
462        NATIVE_VECTOR_WIDTH_HALF         = 0x103C,
463        OPENCL_C_VERSION                 = 0x103D,
464
465        // cl_nv_device_attribute_query
466        COMPUTE_CAPABILITY_MAJOR_NV      = 0x4000,
467        COMPUTE_CAPABILITY_MINOR_NV      = 0x4001,
468        REGISTERS_PER_BLOCK_NV           = 0x4002,
469        WARP_SIZE_NV                     = 0x4003,
470        GPU_OVERLAP_NV                   = 0x4004,
471        KERNEL_EXEC_TIMEOUT_NV           = 0x4005,
472        INTEGRATED_MEMORY_NV             = 0x4006,
473
474        // cl_amd_device_attribute_query
475        PROFILING_TIMER_OFFSET_AMD       = 0x4036,
476    }   
477
478    // cl_device_fp_config - bitfield
479    public enum FpConfig : ulong
480    {
481        DENORM                               = (1 << 0),
482        INF_NAN                              = (1 << 1),
483        ROUND_TO_NEAREST                     = (1 << 2),
484        ROUND_TO_ZERO                        = (1 << 3),
485        ROUND_TO_INF                         = (1 << 4),
486        FMA                                  = (1 << 5),
487        SOFT_FLOAT                           = (1 << 6),
488    }
489
490    // cl_device_mem_cache_type
491    public enum DeviceMemCacheType
492    {
493        NONE                                    = 0x0,
494        READ_ONLY_CACHE                         = 0x1,
495        READ_WRITE_CACHE                        = 0x2,
496    }
497
498    // cl_device_local_mem_type
499    public enum DeviceLocalMemType
500    {
501        LOCAL                                   = 0x1,
502        GLOBAL                                  = 0x2,
503    }
504
505// cl_device_exec_capabilities - bitfield
506    public enum DeviceExecCapabilities : ulong
507    {
508        KERNEL                             = (1 << 0),
509        NATIVE_KERNEL                      = (1 << 1),
510    }
511
512// cl_command_queue_properties - bitfield
513    public enum CommandQueueProperties : ulong
514    {
515        NONE                              = 0,
516        OUT_OF_ORDER_EXEC_MODE_ENABLE     = (1 << 0),
517        PROFILING_ENABLE                  = (1 << 1),
518    }
519
520    // cl_context_info
521    public enum ContextInfo
522    {
523        REFERENCE_COUNT = 0x1080,
524        DEVICES = 0x1081,
525        PROPERTIES = 0x1082,
526        NUM_DEVICES = 0x1083,
527       
528        // D3D10 extension
529        D3D10_DEVICE_KHR = 0x4014,
530        D3D10_PREFER_SHARED_RESOURCES_KHR = 0x402C,
531    }
532
533    // cl_gl_context_info
534    public enum GLContextInfo
535    {
536        CURRENT_DEVICE_FOR_GL_CONTEXT_KHR  = 0x2006,
537        DEVICES_FOR_GL_CONTEXT_KHR         = 0x2007,
538    }
539
540    // cl_context_properties
541    public enum ContextProperties : ulong
542    {
543        PLATFORM                        = 0x1084,
544
545        // Additional cl_context_properties for GL support
546        GL_CONTEXT_KHR                  = 0x2008,
547        EGL_DISPLAY_KHR                 = 0x2009,
548        GLX_DISPLAY_KHR                 = 0x200A,
549        WGL_HDC_KHR                     = 0x200B,
550        CGL_SHAREGROUP_KHR              = 0x200C,
551    }
552
553    // cl_command_queue_info
554    public enum CommandQueueInfo
555    {
556        CONTEXT                           = 0x1090,
557        DEVICE                            = 0x1091,
558        REFERENCE_COUNT                   = 0x1092,
559        PROPERTIES                        = 0x1093,
560    }
561
562    // cl_mem_flags - bitfield
563    public enum MemFlags : ulong
564    {
565        READ_WRITE                          = (1 << 0),
566        WRITE_ONLY                          = (1 << 1),
567        READ_ONLY                           = (1 << 2),
568        USE_HOST_PTR                        = (1 << 3),
569        ALLOC_HOST_PTR                      = (1 << 4),
570        COPY_HOST_PTR                       = (1 << 5),
571    }
572   
573    // cl_channel_order
574    public enum ChannelOrder
575    {
576        R                                       = 0x10B0,
577        A                                       = 0x10B1,
578        RG                                      = 0x10B2,
579        RA                                      = 0x10B3,
580        RGB                                     = 0x10B4,
581        RGBA                                    = 0x10B5,
582        BGRA                                    = 0x10B6,
583        ARGB                                    = 0x10B7,
584        INTENSITY                               = 0x10B8,
585        LUMINANCE                               = 0x10B9,
586        Rx                                      = 0x10BA,
587        RGx                                     = 0x10BB,
588        RGBx                                    = 0x10BC,
589    }
590
591    // cl_channel_type
592    public enum ChannelType
593    {
594        SNORM_INT8                              = 0x10D0,
595        SNORM_INT16                             = 0x10D1,
596        UNORM_INT8                              = 0x10D2,
597        UNORM_INT16                             = 0x10D3,
598        UNORM_SHORT_565                         = 0x10D4,
599        UNORM_SHORT_555                         = 0x10D5,
600        UNORM_INT_101010                        = 0x10D6,
601        SIGNED_INT8                             = 0x10D7,
602        SIGNED_INT16                            = 0x10D8,
603        SIGNED_INT32                            = 0x10D9,
604        UNSIGNED_INT8                           = 0x10DA,
605        UNSIGNED_INT16                          = 0x10DB,
606        UNSIGNED_INT32                          = 0x10DC,
607        HALF_FLOAT                              = 0x10DD,
608        FLOAT                                   = 0x10DE,
609    }
610
611    // cl_mem_object_type
612    public enum MemObjectType
613    {
614        BUFFER                       = 0x10F0,
615        IMAGE2D                      = 0x10F1,
616        IMAGE3D                      = 0x10F2,
617    }
618
619    // cl_mem_info
620    public enum MemInfo
621    {
622        TYPE                                = 0x1100,
623        FLAGS                               = 0x1101,
624        SIZE                                = 0x1102,
625        HOST_PTR                            = 0x1103,
626        MAP_COUNT                           = 0x1104,
627        REFERENCE_COUNT                     = 0x1105,
628        CONTEXT                             = 0x1106,
629        ASSOCIATED_MEMOBJECT                = 0x1107,
630        OFFSET                              = 0x1108,
631
632        // D3D10 extension
633        D3D10_RESOURCE_KHR                  = 0x4015,
634    }
635
636    // cl_image_info
637    public enum ImageInfo
638    {
639        FORMAT                            = 0x1110,
640        ELEMENT_SIZE                      = 0x1111,
641        ROW_PITCH                         = 0x1112,
642        SLICE_PITCH                       = 0x1113,
643        WIDTH                             = 0x1114,
644        HEIGHT                            = 0x1115,
645        DEPTH                             = 0x1116,
646
647        // D3D10 extension
648        D3D10_SUBRESOURCE_KHR             = 0x4016,
649    }
650
651    // cl_addressing_mode
652    public enum AddressingMode : uint
653    {
654        NONE                            = 0x1130,
655        CLAMP_TO_EDGE                   = 0x1131,
656        CLAMP                           = 0x1132,
657        REPEAT                          = 0x1133,
658        MIRRORED_REPEAT                 = 0x1134
659    }
660
661    // cl_filter_mode
662    public enum FilterMode : uint
663    {
664        NEAREST                          = 0x1140,
665        LINEAR                           = 0x1141,
666    }
667
668    // cl_sampler_info
669    public enum SamplerInfo : uint
670    {
671        REFERENCE_COUNT                 = 0x1150,
672        CONTEXT                         = 0x1151,
673        NORMALIZED_COORDS               = 0x1152,
674        ADDRESSING_MODE                 = 0x1153,
675        FILTER_MODE                     = 0x1154,
676    }
677
678    // cl_map_flags - bitfield
679    public enum MapFlags : ulong
680    {
681        READ                                = (1 << 0),
682        WRITE                               = (1 << 1),
683        READ_WRITE                          = ((ulong)READ+(ulong)WRITE),
684    }
685
686    // cl_program_info
687    public enum ProgramInfo
688    {
689        REFERENCE_COUNT                 = 0x1160,
690        CONTEXT                         = 0x1161,
691        NUM_DEVICES                     = 0x1162,
692        DEVICES                         = 0x1163,
693        SOURCE                          = 0x1164,
694        BINARY_SIZES                    = 0x1165,
695        BINARIES                        = 0x1166,
696    }
697
698    // cl_program_build_info
699    public enum ProgramBuildInfo
700    {
701        STATUS                    = 0x1181,
702        OPTIONS                   = 0x1182,
703        LOG                       = 0x1183,
704    }
705
706    // cl_build_status
707    public enum BuildStatus
708    {
709        SUCCESS                           = 0,
710        NONE                              = -1,
711        ERROR                             = -2,
712        IN_PROGRESS                       = -3,
713    }
714
715    // cl_kernel_info
716    public enum KernelInfo
717    {
718        FUNCTION_NAME                    = 0x1190,
719        NUM_ARGS                         = 0x1191,
720        REFERENCE_COUNT                  = 0x1192,
721        CONTEXT                          = 0x1193,
722        PROGRAM                          = 0x1194,
723    }
724
725    // cl_kernel_work_group_info
726    public enum KernelWorkGroupInfo
727    {
728        WORK_GROUP_SIZE                    = 0x11B0,
729        COMPILE_WORK_GROUP_SIZE            = 0x11B1,
730        LOCAL_MEM_SIZE                     = 0x11B2,
731        PREFERRED_WORK_GROUP_SIZE_MULTIPLE = 0x11B3,
732        PRIVATE_MEM_SIZE                   = 0x11B4,
733    }
734
735    // cl_event_info
736    public enum EventInfo
737    {
738        COMMAND_QUEUE                     = 0x11D0,
739        COMMAND_TYPE                      = 0x11D1,
740        REFERENCE_COUNT                   = 0x11D2,
741        COMMAND_EXECUTION_STATUS          = 0x11D3,
742        CONTEXT                           = 0x11D4,
743    }
744
745    // cl_command_type
746    public enum CommandType
747    {
748        NDRANGE_KERNEL                  = 0x11F0,
749        TASK                            = 0x11F1,
750        NATIVE_KERNEL                   = 0x11F2,
751        READ_BUFFER                     = 0x11F3,
752        WRITE_BUFFER                    = 0x11F4,
753        COPY_BUFFER                     = 0x11F5,
754        READ_IMAGE                      = 0x11F6,
755        WRITE_IMAGE                     = 0x11F7,
756        COPY_IMAGE                      = 0x11F8,
757        COPY_IMAGE_TO_BUFFER            = 0x11F9,
758        COPY_BUFFER_TO_IMAGE            = 0x11FA,
759        MAP_BUFFER                      = 0x11FB,
760        MAP_IMAGE                       = 0x11FC,
761        UNMAP_MEM_OBJECT                = 0x11FD,
762        MARKER                          = 0x11FE,
763        ACQUIRE_GL_OBJECTS              = 0x11FF,
764        RELEASE_GL_OBJECTS              = 0x1200,
765        READ_BUFFER_RECT                = 0x1201,
766        WRITE_BUFFER_RECT               = 0x1202,
767        COPY_BUFFER_RECT                = 0x1203,
768        USER                            = 0x1204,
769
770        // D3D10 extension
771        ACQUIRE_D3D10_OBJECTS_KHR       = 0x4017,
772        RELEASE_D3D10_OBJECTS_KHR       = 0x4018,
773    }
774
775    // command execution status
776    public enum ExecutionStatus
777    {
778        COMPLETE                                = 0x0,
779        RUNNING                                 = 0x1,
780        SUBMITTED                               = 0x2,
781        QUEUED                                  = 0x3,
782    }
783
784    public enum BufferCreateType
785    {
786        REGION = 0x1220,
787    }
788
789    [StructLayout(LayoutKind.Sequential, Pack = 1)]
790    public struct BufferRegion
791    {
792        public IntPtr Origin;
793        public IntPtr Size;
794    }
795
796
797    // cl_profiling_info
798    public enum ProfilingInfo
799    {
800        QUEUED                = 0x1280,
801        SUBMIT                = 0x1281,
802        START                 = 0x1282,
803        END                   = 0x1283,
804    }
805
806
807
808    // ********************************************
809    // * CLGL enums
810    // ********************************************
811    public enum CLGLObjectType
812    {
813        BUFFER            = 0x2000,
814        TEXTURE2D         = 0x2001,
815        TEXTURE3D         = 0x2002,
816        RENDERBUFFER      = 0x2003,
817    }
818
819    public enum CLGLTextureInfo
820    {
821        TEXTURE_TARGET           = 0x2004,
822        MIPMAP_LEVEL             = 0x2005,
823    }
824
825
826    // ********************************************
827    // * D3D10 enums
828    // ********************************************
829    public enum D3D10DeviceSource
830    {
831        D3D10_DEVICE_KHR = 0x4010,
832        D3D10_DXGI_ADAPTER_KHR = 0x4011,
833    }
834
835    public enum D3D10DeviceSet
836    {
837        PREFERRED_DEVICES_FOR_D3D10_KHR = 0x4012,
838        ALL_DEVICES_FOR_D3D10_KHR       = 0x4013,
839    }
840
841
842    // ********************************************
843    // * cl_ext_device_fission enums
844    // ********************************************
845    public enum DevicePartition : ulong
846    {
847        EQUALLY = 0x4050,
848        BY_COUNTS = 0x4051,
849        BY_NAMES = 0x4052,
850        BY_AFFINITY_DOMAIN = 0x4053,
851    }
852
853    public enum AffinityDomain
854    {
855        L1_CACHE = 0x1,
856        L2_CACHE = 0x2,
857        L3_CACHE = 0x3,
858        L4_CACHE = 0x4,
859        NUMA = 0x10,
860        NEXT_FISSIONABLE = 0x100,
861    }
862
863    public enum DeviceInfoPropertyNames
864    {
865        PARENT_DEVICE = 0x4054,
866        PARITION_TYPES = 0x4055,
867        AFFINITY_DOMAINS = 0x4056,
868        REFERENCE_COUNT = 0x4057,
869        PARTITION_STYLE = 0x4058,
870    }
871
872    public enum ListTerminators : int
873    {
874        PROPERTIES_LIST_END = 0x0,
875        PARTITION_BY_COUNTS_LIST_END = 0x0,
876        PARTITION_BY_NAMES_LIST_END = -1,
877    }
878
879    #region Vector2
880
881    [StructLayout(LayoutKind.Sequential, Pack = 1)]
882    public struct Char2
883    {
884        public sbyte S0;
885        public sbyte S1;
886
887        public Char2(sbyte s0, sbyte s1)
888        {
889            S0 = s0;
890            S1 = s1;
891        }
892    }
893
894    [StructLayout(LayoutKind.Sequential, Pack = 1)]
895    public struct UChar2
896    {
897        public byte S0;
898        public byte S1;
899
900        public UChar2(byte s0, byte s1)
901        {
902            S0 = s0;
903            S1 = s1;
904        }
905    }
906
907    [StructLayout(LayoutKind.Sequential, Pack = 1)]
908    public struct Short2
909    {
910        public short S0;
911        public short S1;
912
913        public Short2(short s0, short s1)
914        {
915            S0 = s0;
916            S1 = s1;
917        }
918    }
919
920    [StructLayout(LayoutKind.Sequential, Pack = 1)]
921    public struct UShort2
922    {
923        public ushort S0;
924        public ushort S1;
925
926        public UShort2(ushort s0, ushort s1)
927        {
928            S0 = s0;
929            S1 = s1;
930        }
931    }
932
933    [StructLayout(LayoutKind.Sequential, Pack = 1)]
934    public struct Int2
935    {
936        public int S0;
937        public int S1;
938
939        public Int2(int s0, int s1)
940        {
941            S0 = s0;
942            S1 = s1;
943        }
944    }
945
946    [StructLayout(LayoutKind.Sequential, Pack = 1)]
947    public struct UInt2
948    {
949        public uint S0;
950        public uint S1;
951
952        public UInt2(uint s0, uint s1)
953        {
954            S0 = s0;
955            S1 = s1;
956        }
957    }
958
959    [StructLayout(LayoutKind.Sequential, Pack = 1)]
960    public struct Long2
961    {
962        public long S0;
963        public long S1;
964
965        public Long2(long s0, long s1)
966        {
967            S0 = s0;
968            S1 = s1;
969        }
970    }
971
972    [StructLayout(LayoutKind.Sequential, Pack = 1)]
973    public struct ULong2
974    {
975        public ulong S0;
976        public ulong S1;
977
978        public ULong2(ulong s0, ulong s1)
979        {
980            S0 = s0;
981            S1 = s1;
982        }
983    }
984
985    [StructLayout(LayoutKind.Sequential, Pack = 1)]
986    public struct Float2
987    {
988        public float S0;
989        public float S1;
990
991        public Float2(float s0, float s1)
992        {
993            S0 = s0;
994            S1 = s1;
995        }
996    }
997
998    [StructLayout(LayoutKind.Sequential, Pack = 1)]
999    public struct Double2
1000    {
1001        public double S0;
1002        public double S1;
1003
1004        public Double2(double s0, double s1)
1005        {
1006            S0 = s0;
1007            S1 = s1;
1008        }
1009    }
1010
1011    #endregion
1012
1013    #region Vector3
1014
1015    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1016    public struct Char3
1017    {
1018        public sbyte S0;
1019        public sbyte S1;
1020        public sbyte S2;
1021
1022        public Char3(sbyte s0, sbyte s1, sbyte s2)
1023        {
1024            S0 = s0;
1025            S1 = s1;
1026            S2 = s2;
1027        }
1028    }
1029
1030    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1031    public struct UChar3
1032    {
1033        public byte S0;
1034        public byte S1;
1035        public byte S2;
1036
1037        public UChar3(byte s0, byte s1, byte s2)
1038        {
1039            S0 = s0;
1040            S1 = s1;
1041            S2 = s2;
1042        }
1043    }
1044
1045    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1046    public struct Short3
1047    {
1048        public short S0;
1049        public short S1;
1050        public short S2;
1051
1052        public Short3(short s0, short s1, short s2)
1053        {
1054            S0 = s0;
1055            S1 = s1;
1056            S2 = s2;
1057        }
1058    }
1059
1060    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1061    public struct UShort3
1062    {
1063        public ushort S0;
1064        public ushort S1;
1065        public ushort S2;
1066
1067        public UShort3(ushort s0, ushort s1, ushort s2)
1068        {
1069            S0 = s0;
1070            S1 = s1;
1071            S2 = s2;
1072        }
1073    }
1074
1075    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1076    public struct Int3
1077    {
1078        public int S0;
1079        public int S1;
1080        public int S2;
1081
1082        public Int3(int s0, int s1, int s2)
1083        {
1084            S0 = s0;
1085            S1 = s1;
1086            S2 = s2;
1087        }
1088    }
1089
1090    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1091    public struct UInt3
1092    {
1093        public uint S0;
1094        public uint S1;
1095        public uint S2;
1096
1097        public UInt3(uint s0, uint s1, uint s2)
1098        {
1099            S0 = s0;
1100            S1 = s1;
1101            S2 = s2;
1102        }
1103    }
1104
1105    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1106    public struct Long3
1107    {
1108        public long S0;
1109        public long S1;
1110        public long S2;
1111
1112        public Long3(long s0, long s1, long s2)
1113        {
1114            S0 = s0;
1115            S1 = s1;
1116            S2 = s2;
1117        }
1118    }
1119
1120    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1121    public struct ULong3
1122    {
1123        public ulong S0;
1124        public ulong S1;
1125        public ulong S2;
1126
1127        public ULong3(ulong s0, ulong s1, ulong s2)
1128        {
1129            S0 = s0;
1130            S1 = s1;
1131            S2 = s2;
1132        }
1133    }
1134
1135    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1136    public struct Float3
1137    {
1138        public float S0;
1139        public float S1;
1140        public float S2;
1141
1142        public Float3(float s0, float s1, float s2)
1143        {
1144            S0 = s0;
1145            S1 = s1;
1146            S2 = s2;
1147        }
1148    }
1149
1150    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1151    public struct Double3
1152    {
1153        public double S0;
1154        public double S1;
1155        public double S2;
1156
1157        public Double3(double s0, double s1, double s2)
1158        {
1159            S0 = s0;
1160            S1 = s1;
1161            S2 = s2;
1162        }
1163    }
1164
1165    #endregion
1166
1167    #region Vector4
1168
1169    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1170    public struct Char4
1171    {
1172        public sbyte S0;
1173        public sbyte S1;
1174        public sbyte S2;
1175        public sbyte S3;
1176
1177        public Char4(sbyte s0, sbyte s1, sbyte s2, sbyte s3)
1178        {
1179            S0 = s0;
1180            S1 = s1;
1181            S2 = s2;
1182            S3 = s3;
1183        }
1184    }
1185
1186    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1187    public struct UChar4
1188    {
1189        public byte S0;
1190        public byte S1;
1191        public byte S2;
1192        public byte S3;
1193
1194        public UChar4(byte s0, byte s1, byte s2, byte s3)
1195        {
1196            S0 = s0;
1197            S1 = s1;
1198            S2 = s2;
1199            S3 = s3;
1200        }
1201    }
1202
1203    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1204    public struct Short4
1205    {
1206        public short S0;
1207        public short S1;
1208        public short S2;
1209        public short S3;
1210
1211        public Short4(short s0, short s1, short s2, short s3)
1212        {
1213            S0 = s0;
1214            S1 = s1;
1215            S2 = s2;
1216            S3 = s3;
1217        }
1218    }
1219
1220    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1221    public struct UShort4
1222    {
1223        public ushort S0;
1224        public ushort S1;
1225        public ushort S2;
1226        public ushort S3;
1227
1228        public UShort4(ushort s0, ushort s1, ushort s2, ushort s3)
1229        {
1230            S0 = s0;
1231            S1 = s1;
1232            S2 = s2;
1233            S3 = s3;
1234        }
1235    }
1236
1237    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1238    public struct Int4
1239    {
1240        public int S0;
1241        public int S1;
1242        public int S2;
1243        public int S3;
1244
1245        public Int4(int s0, int s1, int s2, int s3)
1246        {
1247            S0 = s0;
1248            S1 = s1;
1249            S2 = s2;
1250            S3 = s3;
1251        }
1252    }
1253
1254    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1255    public struct UInt4
1256    {
1257        public uint S0;
1258        public uint S1;
1259        public uint S2;
1260        public uint S3;
1261
1262        public UInt4(uint s0, uint s1, uint s2, uint s3)
1263        {
1264            S0 = s0;
1265            S1 = s1;
1266            S2 = s2;
1267            S3 = s3;
1268        }
1269    }
1270
1271    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1272    public struct Long4
1273    {
1274        public long S0;
1275        public long S1;
1276        public long S2;
1277        public long S3;
1278
1279        public Long4(long s0, long s1, long s2, long s3)
1280        {
1281            S0 = s0;
1282            S1 = s1;
1283            S2 = s2;
1284            S3 = s3;
1285        }
1286    }
1287
1288    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1289    public struct ULong4
1290    {
1291        public ulong S0;
1292        public ulong S1;
1293        public ulong S2;
1294        public ulong S3;
1295
1296        public ULong4(ulong s0, ulong s1, ulong s2, ulong s3)
1297        {
1298            S0 = s0;
1299            S1 = s1;
1300            S2 = s2;
1301            S3 = s3;
1302        }
1303    }
1304
1305    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1306    public struct Float4
1307    {
1308        public float S0;
1309        public float S1;
1310        public float S2;
1311        public float S3;
1312
1313        public Float4(float s0, float s1, float s2, float s3)
1314        {
1315            S0 = s0;
1316            S1 = s1;
1317            S2 = s2;
1318            S3 = s3;
1319        }
1320    }
1321
1322    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1323    public struct Double4
1324    {
1325        public double S0;
1326        public double S1;
1327        public double S2;
1328        public double S3;
1329
1330        public Double4(double s0, double s1, double s2, double s3)
1331        {
1332            S0 = s0;
1333            S1 = s1;
1334            S2 = s2;
1335            S3 = s3;
1336        }
1337    }
1338
1339    #endregion
1340
1341    #region Vector8
1342
1343    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1344    public struct Char8
1345    {
1346        public sbyte S0;
1347        public sbyte S1;
1348        public sbyte S2;
1349        public sbyte S3;
1350        public sbyte S4;
1351        public sbyte S5;
1352        public sbyte S6;
1353        public sbyte S7;
1354    }
1355
1356    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1357    public struct UChar8
1358    {
1359        public byte S0;
1360        public byte S1;
1361        public byte S2;
1362        public byte S3;
1363        public byte S4;
1364        public byte S5;
1365        public byte S6;
1366        public byte S7;
1367    }
1368
1369    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1370    public struct Short8
1371    {
1372        public short S0;
1373        public short S1;
1374        public short S2;
1375        public short S3;
1376        public short S4;
1377        public short S5;
1378        public short S6;
1379        public short S7;
1380    }
1381
1382    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1383    public struct UShort8
1384    {
1385        public ushort S0;
1386        public ushort S1;
1387        public ushort S2;
1388        public ushort S3;
1389        public ushort S4;
1390        public ushort S5;
1391        public ushort S6;
1392        public ushort S7;
1393    }
1394
1395    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1396    public struct Int8
1397    {
1398        public int S0;
1399        public int S1;
1400        public int S2;
1401        public int S3;
1402        public int S4;
1403        public int S5;
1404        public int S6;
1405        public int S7;
1406    }
1407
1408    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1409    public struct UInt8
1410    {
1411        public uint S0;
1412        public uint S1;
1413        public uint S2;
1414        public uint S3;
1415        public uint S4;
1416        public uint S5;
1417        public uint S6;
1418        public uint S7;
1419    }
1420
1421    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1422    public struct Long8
1423    {
1424        public long S0;
1425        public long S1;
1426        public long S2;
1427        public long S3;
1428        public long S4;
1429        public long S5;
1430        public long S6;
1431        public long S7;
1432    }
1433
1434    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1435    public struct ULong8
1436    {
1437        public ulong S0;
1438        public ulong S1;
1439        public ulong S2;
1440        public ulong S3;
1441        public ulong S4;
1442        public ulong S5;
1443        public ulong S6;
1444        public ulong S7;
1445    }
1446
1447    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1448    public struct Float8
1449    {
1450        public float S0;
1451        public float S1;
1452        public float S2;
1453        public float S3;
1454        public float S4;
1455        public float S5;
1456        public float S6;
1457        public float S7;
1458    }
1459
1460    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1461    public struct Double8
1462    {
1463        public double S0;
1464        public double S1;
1465        public double S2;
1466        public double S3;
1467        public double S4;
1468        public double S5;
1469        public double S6;
1470        public double S7;
1471    }
1472
1473    #endregion
1474
1475    #region Vector16
1476
1477    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1478    public struct Char16
1479    {
1480        public sbyte S0;
1481        public sbyte S1;
1482        public sbyte S2;
1483        public sbyte S3;
1484        public sbyte S4;
1485        public sbyte S5;
1486        public sbyte S6;
1487        public sbyte S7;
1488        public sbyte S8;
1489        public sbyte S9;
1490        public sbyte S10;
1491        public sbyte S11;
1492        public sbyte S12;
1493        public sbyte S13;
1494        public sbyte S14;
1495        public sbyte S15;
1496    }
1497
1498    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1499    public struct UChar16
1500    {
1501        public byte S0;
1502        public byte S1;
1503        public byte S2;
1504        public byte S3;
1505        public byte S4;
1506        public byte S5;
1507        public byte S6;
1508        public byte S7;
1509        public byte S8;
1510        public byte S9;
1511        public byte S10;
1512        public byte S11;
1513        public byte S12;
1514        public byte S13;
1515        public byte S14;
1516        public byte S15;
1517    }
1518
1519    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1520    public struct Short16
1521    {
1522        public short S0;
1523        public short S1;
1524        public short S2;
1525        public short S3;
1526        public short S4;
1527        public short S5;
1528        public short S6;
1529        public short S7;
1530        public short S8;
1531        public short S9;
1532        public short S10;
1533        public short S11;
1534        public short S12;
1535        public short S13;
1536        public short S14;
1537        public short S15;
1538    }
1539
1540    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1541    public struct UShort16
1542    {
1543        public ushort S0;
1544        public ushort S1;
1545        public ushort S2;
1546        public ushort S3;
1547        public ushort S4;
1548        public ushort S5;
1549        public ushort S6;
1550        public ushort S7;
1551        public ushort S8;
1552        public ushort S9;
1553        public ushort S10;
1554        public ushort S11;
1555        public ushort S12;
1556        public ushort S13;
1557        public ushort S14;
1558        public ushort S15;
1559    }
1560
1561    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1562    public struct Int16
1563    {
1564        public int S0;
1565        public int S1;
1566        public int S2;
1567        public int S3;
1568        public int S4;
1569        public int S5;
1570        public int S6;
1571        public int S7;
1572        public int S8;
1573        public int S9;
1574        public int S10;
1575        public int S11;
1576        public int S12;
1577        public int S13;
1578        public int S14;
1579        public int S15;
1580    }
1581
1582    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1583    public struct UInt16
1584    {
1585        public uint S0;
1586        public uint S1;
1587        public uint S2;
1588        public uint S3;
1589        public uint S4;
1590        public uint S5;
1591        public uint S6;
1592        public uint S7;
1593        public uint S8;
1594        public uint S9;
1595        public uint S10;
1596        public uint S11;
1597        public uint S12;
1598        public uint S13;
1599        public uint S14;
1600        public uint S15;
1601    }
1602
1603    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1604    public struct Long16
1605    {
1606        public long S0;
1607        public long S1;
1608        public long S2;
1609        public long S3;
1610        public long S4;
1611        public long S5;
1612        public long S6;
1613        public long S7;
1614        public long S8;
1615        public long S9;
1616        public long S10;
1617        public long S11;
1618        public long S12;
1619        public long S13;
1620        public long S14;
1621        public long S15;
1622    }
1623
1624    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1625    public struct ULong16
1626    {
1627        public ulong S0;
1628        public ulong S1;
1629        public ulong S2;
1630        public ulong S3;
1631        public ulong S4;
1632        public ulong S5;
1633        public ulong S6;
1634        public ulong S7;
1635        public ulong S8;
1636        public ulong S9;
1637        public ulong S10;
1638        public ulong S11;
1639        public ulong S12;
1640        public ulong S13;
1641        public ulong S14;
1642        public ulong S15;
1643    }
1644
1645    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1646    public struct Float16
1647    {
1648        public float S0;
1649        public float S1;
1650        public float S2;
1651        public float S3;
1652        public float S4;
1653        public float S5;
1654        public float S6;
1655        public float S7;
1656        public float S8;
1657        public float S9;
1658        public float S10;
1659        public float S11;
1660        public float S12;
1661        public float S13;
1662        public float S14;
1663        public float S15;
1664    }
1665
1666    [StructLayout(LayoutKind.Sequential, Pack = 1)]
1667    public struct Double16
1668    {
1669        public double S0;
1670        public double S1;
1671        public double S2;
1672        public double S3;
1673        public double S4;
1674        public double S5;
1675        public double S6;
1676        public double S7;
1677        public double S8;
1678        public double S9;
1679        public double S10;
1680        public double S11;
1681        public double S12;
1682        public double S13;
1683        public double S14;
1684        public double S15;
1685    }
1686
1687    #endregion
1688}
Note: See TracBrowser for help on using the repository browser.