123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344 |
- //
- // The graphics platform GLScene https://github.com/glscene
- //
- unit OpenCL.Platform;
- (*
- Conversion of OpenCL header file: cl_platform.h to CL_Platform.pas,
- from http://www.khronos.org/registry/cl/.
- *)
- (****************************************************************************
- * Copyright (c) 2008-2020 The Khronos Group Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and/or associated documentation files (the
- * "Materials"), to deal in the Materials without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Materials, and to
- * permit persons to whom the Materials are furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Materials.
- *
- * MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
- * KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
- * SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
- * https://www.khronos.org/registry/
- *
- * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
- **************************************************************************)
- interface
- {$IFDEF MSWINDOWS}
- {$DEFINE CL_APT_ENTRY}
- const
- CL_APT_CALL = 'stdcall';
- CL_CALLBACK = 'stdcall';
- {$ENDIF}
- (*
- * Deprecation flags refer to the last version of the header in which the
- * feature was not deprecated.
- *
- * E.g. VERSION_1_1_DEPRECATED means the feature is present in 1.1 without
- * deprecation but is deprecated in versions later than 1.1.
- *)
- {$IFDEF WIN32}
- (* scalar types *)
- type
- Tcl_char = ShortInt;
- Tcl_uchar = Byte;
- Tcl_short = SmallInt;
- Tcl_ushort = Word;
- Tcl_int = LongInt;
- Tcl_uint = LongWord;
- Tcl_long = Int64;
- Tcl_ulong = UInt64;
- Tcl_half = Word;
- Tcl_float = Single;
- Tcl_double = Double;
- Pcl_char = ^Tcl_char;
- Pcl_uchar = ^Tcl_uchar;
- Pcl_short = ^Tcl_short;
- Pcl_ushort = ^Tcl_ushort;
- Pcl_int = ^Tcl_int;
- Pcl_uint = ^Tcl_uint;
- Pcl_long = ^Tcl_long;
- Pcl_ulong = ^Tcl_ulong;
- Pcl_half = ^Tcl_half;
- Pcl_float = ^Tcl_float;
- Pcl_double = ^Tcl_double;
- Tsize_t = NativeUInt;
- Psize_t = ^Tsize_t;
- intptr_t = NativeUInt;
- Pintptr_t = ^intptr_t;
- (* Macro names and corresponding values defined by OpenCL *)
- const
- CL_CHAR_BIT = 8;
- CL_SCHAR_MAX = 127;
- CL_SCHAR_MIN = (-127 - 1);
- CL_CHAR_MAX = CL_SCHAR_MAX;
- CL_CHAR_MIN = CL_SCHAR_MIN;
- CL_UCHAR_MAX = 255;
- CL_SHRT_MAX = 32767;
- CL_SHRT_MIN = (-32767 - 1);
- CL_USHRT_MAX = 65535;
- CL_INT_MAX = 2147483647;
- CL_INT_MIN = (-2147483647 - 1);
- CL_UINT_MAX = $FFFFFFFF;
- CL_LONG_MAX = $7FFFFFFFFFFFFFFF;
- CL_LONG_MIN = -$7FFFFFFFFFFFFFFF - 1;
- CL_ULONG_MAX = $FFFFFFFFFFFFFFFF;
- CL_FLT_DIG = 6;
- CL_FLT_MANT_DIG = 24;
- CL_FLT_MAX_10_EXP = +38;
- CL_FLT_MAX_EXP = +128;
- CL_FLT_MIN_10_EXP = -37;
- CL_FLT_MIN_EXP = -125;
- CL_FLT_RADIX = 2;
- CL_FLT_MAX = 1.7E38; // 0x1.fffffep127f;
- CL_FLT_MIN = 1.17E-38; // 0x1.0p-126f;
- CL_FLT_EPSILON = 1.0E-7; // 0x1.0p-23f;
- CL_DBL_DIG = 15;
- CL_DBL_MANT_DIG = 53;
- CL_DBL_MAX_10_EXP = +308;
- CL_DBL_MAX_EXP = +1024;
- CL_DBL_MIN_10_EXP = -307;
- CL_DBL_MIN_EXP = -1021;
- CL_DBL_RADIX = 2;
- CL_DBL_MAX = 8.98E307; // 0x1.fffffffffffffp1023;
- CL_DBL_MIN = 2.2E-308; // 0x1.0p-1022;
- CL_DBL_EPSILON = 2.2E-16; // 0x1.0p-52;
- CL_M_E = 2.718281828459045090796;
- CL_M_LOG2E = 1.442695040888963387005;
- CL_M_LOG10E = 0.434294481903251816668;
- CL_M_LN2 = 0.693147180559945286227;
- CL_M_LN10 = 2.302585092994045901094;
- CL_M_PI = 3.141592653589793115998;
- CL_M_PI_2 = 1.570796326794896557999;
- CL_M_PI_4 = 0.785398163397448278999;
- CL_M_1_PI = 0.318309886183790691216;
- CL_M_2_PI = 0.636619772367581382433;
- CL_M_2_SQRTPI = 1.128379167095512558561;
- CL_M_SQRT2 = 1.414213562373095145475;
- CL_M_SQRT1_2 = 0.707106781186547572737;
- CL_M_E_F = 2.71828174591064;
- CL_M_LOG2E_F = 1.44269502162933;
- CL_M_LOG10E_F = 0.43429449200630;
- CL_M_LN2_F = 0.69314718246460;
- CL_M_LN10_F = 2.30258512496948;
- CL_M_PI_F = 3.14159274101257;
- CL_M_PI_2_F = 1.57079637050629;
- CL_M_PI_4_F = 0.78539818525314;
- CL_M_1_PI_F = 0.31830987334251;
- CL_M_2_PI_F = 0.63661974668503;
- CL_M_2_SQRTPI_F = 1.12837922573090;
- CL_M_SQRT2_F = 1.41421353816986;
- CL_M_SQRT1_2_F = 0.70710676908493;
- CL_NAN = 0; //(CL_INFINITY - CL_INFINITY);
- CL_HUGE_VALF = 1.0E50;
- CL_HUGE_VAL = 1.0E500;
- CL_MAXFLOAT = CL_FLT_MAX;
- CL_INFINITY = CL_HUGE_VALF;
- {$ELSE}
- type
- (* scalar types *)
- Tcl_char = ShortInt;
- Pcl_char = ^Tcl_char;
- Tcl_uchar = Byte;
- Pcl_uchar = ^Tcl_uchar;
- Tcl_short = SmallInt;
- Pcl_short = ^Tcl_short;
- Tcl_ushort = Word;
- Pcl_ushort = ^Tcl_ushort;
- Tcl_int = LongInt;
- Pcl_int = ^Tcl_int;
- Tcl_uint = LongWord;
- Pcl_uint = ^Tcl_uint;
- Tcl_long = Int64;
- Pcl_long = ^Tcl_long;
- Tcl_ulong = UInt64;
- Pcl_ulong = ^Tcl_ulong;
- Tcl_half = Word;
- Pcl_half = ^Tcl_half;
- Tcl_float = Single;
- Pcl_float = ^Tcl_float;
- Tcl_double = Double;
- Pcl_double = ^Tcl_double;
- Tsize_t = NativeUInt;
- Psize_t = ^Tsize_t;
- intptr_t = NativeUInt;
- Pintptr_t = ^intptr_t;
- (* Macro names and corresponding values defined by OpenCL *)
- const
- CL_CHAR_BIT = 8;
- CL_SCHAR_MAX = 127;
- CL_SCHAR_MIN = (-127 - 1);
- CL_CHAR_MAX = CL_SCHAR_MAX;
- CL_CHAR_MIN = CL_SCHAR_MIN;
- CL_UCHAR_MAX = 255;
- CL_SHRT_MAX = 32767;
- CL_SHRT_MIN = (-32767 - 1);
- CL_USHRT_MAX = 65535;
- CL_INT_MAX = 2147483647;
- CL_INT_MIN = (-2147483647 - 1);
- CL_UINT_MAX = $FFFFFFFF;
- CL_LONG_MAX = $7FFFFFFFFFFFFFFF;
- CL_LONG_MIN = -$7FFFFFFFFFFFFFFF - 1;
- CL_ULONG_MAX = $FFFFFFFFFFFFFFFF;
- CL_FLT_DIG = 6;
- CL_FLT_MANT_DIG = 24;
- CL_FLT_MAX_10_EXP = +38;
- CL_FLT_MAX_EXP = +128;
- CL_FLT_MIN_10_EXP = -37;
- CL_FLT_MIN_EXP = -125;
- CL_FLT_RADIX = 2;
- CL_FLT_MAX = 1.7E38;
- CL_FLT_MIN = 1.17E-38;
- CL_FLT_EPSILON = 1.0E-7;
- CL_DBL_DIG = 15;
- CL_DBL_MANT_DIG = 53;
- CL_DBL_MAX_10_EXP = +308;
- CL_DBL_MAX_EXP = +1024;
- CL_DBL_MIN_10_EXP = -307;
- CL_DBL_MIN_EXP = -1021;
- CL_DBL_RADIX = 2;
- CL_DBL_MAX = 8.98E307; // 0x1.fffffffffffffp1023;
- CL_DBL_MIN = 2.2E-308; // 0x1.0p-1022;
- CL_DBL_EPSILON = 2.2E-16; // 0x1.0p-52;
- CL_M_E = 2.718281828459045090796;
- CL_M_LOG2E = 1.442695040888963387005;
- CL_M_LOG10E = 0.434294481903251816668;
- CL_M_LN2 = 0.693147180559945286227;
- CL_M_LN10 = 2.302585092994045901094;
- CL_M_PI = 3.141592653589793115998;
- CL_M_PI_2 = 1.570796326794896557999;
- CL_M_PI_4 = 0.785398163397448278999;
- CL_M_1_PI = 0.318309886183790691216;
- CL_M_2_PI = 0.636619772367581382433;
- CL_M_2_SQRTPI = 1.128379167095512558561;
- CL_M_SQRT2 = 1.414213562373095145475;
- CL_M_SQRT1_2 = 0.707106781186547572737;
- CL_M_E_F = 2.71828174591064;
- CL_M_LOG2E_F = 1.44269502162933;
- CL_M_LOG10E_F = 0.43429449200630;
- CL_M_LN2_F = 0.69314718246460;
- CL_M_LN10_F = 2.30258512496948;
- CL_M_PI_F = 3.14159274101257;
- CL_M_PI_2_F = 1.57079637050629;
- CL_M_PI_4_F = 0.78539818525314;
- CL_M_1_PI_F = 0.31830987334251;
- CL_M_2_PI_F = 0.63661974668503;
- CL_M_2_SQRTPI_F = 1.12837922573090;
- CL_M_SQRT2_F = 1.41421353816986;
- CL_M_SQRT1_2_F = 0.70710676908493;
- {$ENDIF}
- (*
- * Vector types
- *
- * Note: OpenCL requires that all types be naturally aligned.
- * This means that vector types must be naturally aligned.
- * For example, a vector of four floats must be aligned to
- * a 16 byte boundary (calculated as 4 * the natural 4-byte
- * alignment of the float). The alignment qualifiers here
- * will only function properly if your compiler supports them
- * and if you don't actively work to defeat them. For example,
- * in order for a cl_float4 to be 16 byte aligned in a struct,
- * the start of the struct must itself be 16-byte aligned.
- *
- * Maintaining proper alignment is the user's responsibility.
- *)
- type
- Tcl_char2 = array [0 .. 1] of Tcl_char;
- Tcl_char4 = array [0 .. 3] of Tcl_char;
- Tcl_char8 = array [0 .. 7] of Tcl_char;
- Tcl_char16 = array [0 .. 15] of Tcl_char;
- Tcl_uchar2 = array [0 .. 1] of Tcl_uchar;
- Tcl_uchar4 = array [0 .. 3] of Tcl_uchar;
- Tcl_uchar8 = array [0 .. 7] of Tcl_uchar;
- Tcl_uchar16 = array [0 .. 15] of Tcl_uchar;
- Tcl_short2 = array [0 .. 1] of Tcl_short;
- Tcl_short4 = array [0 .. 3] of Tcl_short;
- Tcl_short8 = array [0 .. 7] of Tcl_short;
- Tcl_short16 = array [0 .. 15] of Tcl_short;
- Tcl_ushort2 = array [0 .. 1] of Tcl_ushort;
- Tcl_ushort4 = array [0 .. 3] of Tcl_ushort;
- Tcl_ushort8 = array [0 .. 7] of Tcl_ushort;
- Tcl_ushort16 = array [0 .. 15] of Tcl_ushort;
- Tcl_int2 = array [0 .. 1] of Tcl_int;
- Tcl_int4 = array [0 .. 3] of Tcl_int;
- Tcl_int8 = array [0 .. 7] of Tcl_int;
- Tcl_int16 = array [0 .. 15] of Tcl_int;
- Tcl_uint2 = array [0 .. 1] of Tcl_uint;
- Tcl_uint4 = array [0 .. 3] of Tcl_uint;
- Tcl_uint8 = array [0 .. 7] of Tcl_uint;
- Tcl_uint16 = array [0 .. 15] of Tcl_uint;
- Tcl_long2 = array [0 .. 1] of Tcl_long;
- Tcl_long4 = array [0 .. 3] of Tcl_long;
- Tcl_long8 = array [0 .. 7] of Tcl_long;
- Tcl_long16 = array [0 .. 15] of Tcl_long;
- Tcl_ulong2 = array [0 .. 1] of Tcl_ulong;
- Tcl_ulong4 = array [0 .. 3] of Tcl_ulong;
- Tcl_ulong8 = array [0 .. 7] of Tcl_ulong;
- Tcl_ulong16 = array [0 .. 15] of Tcl_ulong;
- Tcl_float2 = array [0 .. 1] of Tcl_float;
- Tcl_float4 = array [0 .. 3] of Tcl_float;
- Tcl_float8 = array [0 .. 7] of Tcl_float;
- Tcl_float16 = array [0 .. 15] of Tcl_float;
- Tcl_double2 = array [0 .. 1] of Tcl_double;
- Tcl_double4 = array [0 .. 3] of Tcl_double;
- Tcl_double8 = array [0 .. 7] of Tcl_double;
- Tcl_double16 = array [0 .. 15] of Tcl_double;
- // There are no vector types for half
- implementation
- end.
|